vhost-audit/contrib/contextmenu/documentation/demo/async-create.md

64 lines
1.9 KiB
Markdown

---
currentMenu: async-create
---
# Demo: Create Context Menu (asynchronous)
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
- [Example code](#example-code)
- [Example HTML](#example-html)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
<span class="context-menu-one btn btn-neutral">right click me</span>
## Example code
<script type="text/javascript" class="showcase">
$(function(){
// some build handler to call asynchronously
function createSomeMenu() {
return {
callback: function(key, options) {
var m = "clicked: " + key;
window.console && console.log(m) || alert(m);
},
items: {
"edit": {name: "Edit", icon: "edit"},
"cut": {name: "Cut", icon: "cut"},
"copy": {name: "Copy", icon: "copy"}
}
};
}
// some asynchronous click handler
$('.context-menu-one').on('mouseup', function(e){
var $this = $(this);
// store a callback on the trigger
$this.data('runCallbackThingie', createSomeMenu);
var _offset = $this.offset(),
position = {
x: _offset.left + 10,
y: _offset.top + 10
}
// open the contextMenu asynchronously
setTimeout(function(){ $this.contextMenu(position); }, 1000);
});
// setup context menu
$.contextMenu({
selector: '.context-menu-one',
trigger: 'none',
build: function($trigger, e) {
// pull a callback from the trigger
return $trigger.data('runCallbackThingie')();
}
});
});
</script>
## Example HTML
<div style="display:none;" class="showcase" data-showcase-import=".context-menu-one"></div>