UNPKG

jquery.fancytree

Version:

jQuery tree view / tree grid plugin with support for keyboard, inline editing, filtering, checkboxes, drag'n'drop, and lazy loading

81 lines (73 loc) 2.04 kB
/**! * jquery.fancytree.contextmenu.js * * Integrate the 'jQuery contextMenu' plugin as Fancytree extension: * https://github.com/swisnl/jQuery-contextMenu * * Copyright (c) 2008-2017, Martin Wendt (http://wwWendt.de) * Released under the MIT license * https://github.com/mar10/fancytree/wiki/LicenseInfo */ (function($, document) { "use strict"; var initContextMenu = function(tree, selector, menu, actions) { tree.$container.on("mousedown.contextMenu", function(event) { var node = $.ui.fancytree.getNode(event); if(node) { $.contextMenu("destroy", "." + selector); node.setFocus(true); node.setActive(true); $.contextMenu({ selector: "." + selector, events: { show: function(options) { options.prevKeyboard = tree.options.keyboard; tree.options.keyboard = false; }, hide: function(options) { tree.options.keyboard = options.prevKeyboard; node.setFocus(true); } }, build: function($trigger, e) { node = $.ui.fancytree.getNode($trigger); var menuItems = { }; if($.isFunction(menu)) { menuItems = menu(node); } else if($.isPlainObject(menu)) { menuItems = menu; } return { callback: function(action, options) { if($.isFunction(actions)) { actions(node, action, options); } else if($.isPlainObject(actions)) { if(actions.hasOwnProperty(action) && $.isFunction(actions[action])) { actions[action](node, options); } } }, items: menuItems }; } }); } }); }; $.ui.fancytree.registerExtension({ name: "contextMenu", version: "@VERSION", contextMenu: { selector: "fancytree-title", menu: {}, actions: {} }, treeInit: function(ctx) { this._superApply(arguments); initContextMenu(ctx.tree, ctx.options.contextMenu.selector || "fancytree-title", ctx.options.contextMenu.menu, ctx.options.contextMenu.actions); } }); }(jQuery, document));