Run pre-commit on legacy code
This commit is contained in:
parent
fea11ac752
commit
83b7e4162e
323 changed files with 6126 additions and 6462 deletions
|
@ -13,7 +13,7 @@
|
|||
*/
|
||||
|
||||
(function($, undefined){
|
||||
|
||||
|
||||
// TODO: -
|
||||
// ARIA stuff: menuitem, menuitemcheckbox und menuitemradio
|
||||
// create <menu> structure if $.support[htmlCommand || htmlMenuitem] and !opt.disableNative
|
||||
|
@ -97,21 +97,21 @@ var // currently active contextMenu trigger
|
|||
}
|
||||
offset = {top: y, left: x};
|
||||
}
|
||||
|
||||
|
||||
// correct offset if viewport demands it
|
||||
var bottom = $win.scrollTop() + $win.height(),
|
||||
right = $win.scrollLeft() + $win.width(),
|
||||
height = opt.$menu.height(),
|
||||
width = opt.$menu.width();
|
||||
|
||||
|
||||
if (offset.top + height > bottom) {
|
||||
offset.top -= height;
|
||||
}
|
||||
|
||||
|
||||
if (offset.left + width > right) {
|
||||
offset.left -= width;
|
||||
}
|
||||
|
||||
|
||||
opt.$menu.css(offset);
|
||||
},
|
||||
// position the sub-menu
|
||||
|
@ -169,7 +169,7 @@ var // currently active contextMenu trigger
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return zin;
|
||||
},
|
||||
// event handlers
|
||||
|
@ -179,26 +179,26 @@ var // currently active contextMenu trigger
|
|||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
},
|
||||
|
||||
|
||||
// contextmenu show dispatcher
|
||||
contextmenu: function(e) {
|
||||
var $this = $(this);
|
||||
// disable actual context-menu
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
|
||||
|
||||
// ignore right click trigger
|
||||
if (ignoreThisClick) {
|
||||
ignoreThisClick = false;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (!$this.hasClass('context-menu-disabled')) {
|
||||
// theoretically need to fire a show event at <menu>
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#context-menus
|
||||
// var evt = jQuery.Event("show", { data: data, pageX: e.pageX, pageY: e.pageY, relatedTarget: this });
|
||||
// e.data.$menu.trigger(evt);
|
||||
|
||||
|
||||
$currentTrigger = $this;
|
||||
if (e.data.build) {
|
||||
// dynamically build menu on invocation
|
||||
|
@ -219,12 +219,12 @@ var // currently active contextMenu trigger
|
|||
mousedown: function(e) {
|
||||
// register mouse down
|
||||
var $this = $(this);
|
||||
|
||||
|
||||
// hide any previous menus
|
||||
if ($currentTrigger && $currentTrigger.length && !$currentTrigger.is($this)) {
|
||||
$currentTrigger.data('contextMenu').$menu.trigger('contextmenu:hide');
|
||||
}
|
||||
|
||||
|
||||
// activate on right click
|
||||
if (e.button == 2) {
|
||||
$currentTrigger = $this.data('contextMenuActive', true);
|
||||
|
@ -240,7 +240,7 @@ var // currently active contextMenu trigger
|
|||
$currentTrigger = $this;
|
||||
$this.trigger(jQuery.Event("contextmenu", { data: e.data, pageX: e.pageX, pageY: e.pageY }));
|
||||
}
|
||||
|
||||
|
||||
$this.removeData('contextMenuActive');
|
||||
},
|
||||
// contextMenu hover trigger
|
||||
|
@ -248,17 +248,17 @@ var // currently active contextMenu trigger
|
|||
var $this = $(this),
|
||||
$related = $(e.relatedTarget),
|
||||
$document = $(document);
|
||||
|
||||
|
||||
// abort if we're coming from a menu
|
||||
if ($related.is('.context-menu-list') || $related.closest('.context-menu-list').length) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// abort if a menu is shown
|
||||
if ($currentTrigger && $currentTrigger.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
hoveract.pageX = e.pageX;
|
||||
hoveract.pageY = e.pageY;
|
||||
hoveract.data = e.data;
|
||||
|
@ -282,11 +282,11 @@ var // currently active contextMenu trigger
|
|||
if ($related.is('.context-menu-list') || $related.closest('.context-menu-list').length) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
clearTimeout(hoveract.timer);
|
||||
} catch(e) {}
|
||||
|
||||
|
||||
hoveract.timer = null;
|
||||
},
|
||||
|
||||
|
@ -296,12 +296,12 @@ var // currently active contextMenu trigger
|
|||
ignoreThisClick = true;
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
// click on layer to hide contextMenu
|
||||
layerClick: function(e) {
|
||||
var $this = $(this),
|
||||
root = $this.data('contextMenuRoot');
|
||||
|
||||
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
$this.remove();
|
||||
|
@ -309,7 +309,7 @@ var // currently active contextMenu trigger
|
|||
/* (Airtime) added this to allow user to exit out of menu.
|
||||
* if ignoreThisClick remains false, every right click
|
||||
* thereafter continues to show the menu
|
||||
*/
|
||||
*/
|
||||
if (handle.ignoreRightClick) {
|
||||
if (e.button == 2) {
|
||||
ignoreThisClick = true;
|
||||
|
@ -321,7 +321,7 @@ var // currently active contextMenu trigger
|
|||
if (!opt.isInput) {
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
|
||||
e.stopPropagation();
|
||||
},
|
||||
key: function(e) {
|
||||
|
@ -349,7 +349,7 @@ var // currently active contextMenu trigger
|
|||
opt.$menu.trigger('prevcommand');
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
case 9: // tab
|
||||
case 40: // down
|
||||
handle.keyStop(e, opt);
|
||||
|
@ -369,13 +369,13 @@ var // currently active contextMenu trigger
|
|||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 37: // left
|
||||
handle.keyStop(e, opt);
|
||||
if (opt.isInput || !opt.$selected || !opt.$selected.length) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (!opt.$selected.parent().hasClass('context-menu-root')) {
|
||||
var $parent = opt.$selected.parent().parent();
|
||||
opt.$selected.trigger('contextmenu:blur');
|
||||
|
@ -383,13 +383,13 @@ var // currently active contextMenu trigger
|
|||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 39: // right
|
||||
handle.keyStop(e, opt);
|
||||
if (opt.isInput || !opt.$selected || !opt.$selected.length) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
var itemdata = opt.$selected.data('contextMenu') || {};
|
||||
if (itemdata.$menu && opt.$selected.hasClass('context-menu-submenu')) {
|
||||
opt.$selected = null;
|
||||
|
@ -398,7 +398,7 @@ var // currently active contextMenu trigger
|
|||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 35: // end
|
||||
case 36: // home
|
||||
if (opt.$selected && opt.$selected.find('input, textarea, select').length) {
|
||||
|
@ -411,7 +411,7 @@ var // currently active contextMenu trigger
|
|||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 13: // enter
|
||||
handle.keyStop(e, opt);
|
||||
if (opt.isInput) {
|
||||
|
@ -423,19 +423,19 @@ var // currently active contextMenu trigger
|
|||
}
|
||||
opt.$selected && opt.$selected.trigger('mouseup');
|
||||
return;
|
||||
|
||||
|
||||
case 32: // space
|
||||
case 33: // page up
|
||||
case 34: // page down
|
||||
// prevent browser from scrolling down while menu is visible
|
||||
handle.keyStop(e, opt);
|
||||
return;
|
||||
|
||||
|
||||
case 27: // esc
|
||||
handle.keyStop(e, opt);
|
||||
opt.$menu.trigger('contextmenu:hide');
|
||||
return;
|
||||
|
||||
|
||||
default: // 0-9, a-z
|
||||
var k = (String.fromCharCode(e.keyCode)).toUpperCase();
|
||||
if (opt.accesskeys[k]) {
|
||||
|
@ -448,7 +448,7 @@ var // currently active contextMenu trigger
|
|||
}
|
||||
break;
|
||||
}
|
||||
// pass event to selected item,
|
||||
// pass event to selected item,
|
||||
// stop propagation to avoid endless recursion
|
||||
e.stopPropagation();
|
||||
opt.$selected && opt.$selected.trigger(e);
|
||||
|
@ -465,11 +465,11 @@ var // currently active contextMenu trigger
|
|||
opt = opt.$selected.parent().data('contextMenu') || {};
|
||||
opt.$selected = $s;
|
||||
}
|
||||
|
||||
|
||||
var $children = opt.$menu.children(),
|
||||
$prev = !opt.$selected || !opt.$selected.prev().length ? $children.last() : opt.$selected.prev(),
|
||||
$round = $prev;
|
||||
|
||||
|
||||
// skip disabled
|
||||
while ($prev.hasClass('disabled') || $prev.hasClass('not-selectable')) {
|
||||
if ($prev.prev().length) {
|
||||
|
@ -482,15 +482,15 @@ var // currently active contextMenu trigger
|
|||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// leave current
|
||||
if (opt.$selected) {
|
||||
handle.itemMouseleave.call(opt.$selected.get(0), e);
|
||||
}
|
||||
|
||||
|
||||
// activate next
|
||||
handle.itemMouseenter.call($prev.get(0), e);
|
||||
|
||||
|
||||
// focus input
|
||||
var $input = $prev.find('input, textarea, select');
|
||||
if ($input.length) {
|
||||
|
@ -525,22 +525,22 @@ var // currently active contextMenu trigger
|
|||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// leave current
|
||||
if (opt.$selected) {
|
||||
handle.itemMouseleave.call(opt.$selected.get(0), e);
|
||||
}
|
||||
|
||||
|
||||
// activate next
|
||||
handle.itemMouseenter.call($next.get(0), e);
|
||||
|
||||
|
||||
// focus input
|
||||
var $input = $next.find('input, textarea, select');
|
||||
if ($input.length) {
|
||||
$input.focus();
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
// flag that we're inside an input so the key handler can act accordingly
|
||||
focusInput: function(e) {
|
||||
var $this = $(this).closest('.context-menu-item'),
|
||||
|
@ -560,7 +560,7 @@ var // currently active contextMenu trigger
|
|||
|
||||
root.isInput = opt.isInput = false;
|
||||
},
|
||||
|
||||
|
||||
// :hover on menu
|
||||
menuMouseenter: function(e) {
|
||||
var root = $(this).data().contextMenuRoot;
|
||||
|
@ -573,15 +573,15 @@ var // currently active contextMenu trigger
|
|||
root.hovering = false;
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
// :hover done manually so key handling is possible
|
||||
itemMouseenter: function(e) {
|
||||
var $this = $(this),
|
||||
data = $this.data(),
|
||||
opt = data.contextMenu,
|
||||
root = data.contextMenuRoot;
|
||||
|
||||
|
||||
root.hovering = true;
|
||||
|
||||
// abort if we're re-entering
|
||||
|
@ -598,7 +598,7 @@ var // currently active contextMenu trigger
|
|||
opt.$selected = null;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
$this.trigger('contextmenu:focus');
|
||||
},
|
||||
// :hover done manually so key handling is possible
|
||||
|
@ -615,7 +615,7 @@ var // currently active contextMenu trigger
|
|||
root.$selected = opt.$selected = opt.$node;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
$this.trigger('contextmenu:blur');
|
||||
},
|
||||
// contextMenu item click
|
||||
|
@ -640,7 +640,7 @@ var // currently active contextMenu trigger
|
|||
callback = root.callbacks[key];
|
||||
} else if ($.isFunction(root.callback)) {
|
||||
// default callback
|
||||
callback = root.callback;
|
||||
callback = root.callback;
|
||||
} else {
|
||||
// no callback, no action
|
||||
return;
|
||||
|
@ -657,7 +657,7 @@ var // currently active contextMenu trigger
|
|||
inputClick: function(e) {
|
||||
e.stopImmediatePropagation();
|
||||
},
|
||||
|
||||
|
||||
// hide <menu>
|
||||
hideMenu: function(e) {
|
||||
var root = $(this).data('contextMenuRoot');
|
||||
|
@ -673,10 +673,10 @@ var // currently active contextMenu trigger
|
|||
|
||||
$this.addClass('hover')
|
||||
.siblings('.hover').trigger('contextmenu:blur');
|
||||
|
||||
|
||||
// remember selected
|
||||
opt.$selected = root.$selected = $this;
|
||||
|
||||
|
||||
// position sub-menu - do after show so dumb $.ui.position can keep up
|
||||
if (opt.$node) {
|
||||
root.positionSubmenu.call(opt.$node, opt.$menu);
|
||||
|
@ -689,7 +689,7 @@ var // currently active contextMenu trigger
|
|||
data = $this.data(),
|
||||
opt = data.contextMenu,
|
||||
root = data.contextMenuRoot;
|
||||
|
||||
|
||||
$this.removeClass('hover');
|
||||
opt.$selected = null;
|
||||
}
|
||||
|
@ -709,13 +709,13 @@ var // currently active contextMenu trigger
|
|||
$currentTrigger = null;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// backreference for callbacks
|
||||
opt.$trigger = $this;
|
||||
|
||||
// create or update context menu
|
||||
op.update.call($this, opt);
|
||||
|
||||
|
||||
// position menu
|
||||
opt.position.call($this, opt, x, y);
|
||||
|
||||
|
@ -723,13 +723,13 @@ var // currently active contextMenu trigger
|
|||
if (opt.zIndex) {
|
||||
css.zIndex = zindex($this) + opt.zIndex;
|
||||
}
|
||||
|
||||
|
||||
// add layer
|
||||
op.layer.call(opt.$menu, opt, css.zIndex);
|
||||
|
||||
|
||||
// adjust sub-menu zIndexes
|
||||
opt.$menu.find('ul').css('zIndex', css.zIndex + 1);
|
||||
|
||||
|
||||
// position and show context menu
|
||||
opt.$menu.css( css )[opt.animation.show](opt.animation.duration);
|
||||
// make options available
|
||||
|
@ -756,12 +756,12 @@ var // currently active contextMenu trigger
|
|||
if (!opt) {
|
||||
opt = $this.data('contextMenu') || {};
|
||||
}
|
||||
|
||||
|
||||
// hide event
|
||||
if (opt.events && opt.events.hide.call($this, opt) === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (opt.$layer) {
|
||||
try {
|
||||
opt.$layer.remove();
|
||||
|
@ -770,7 +770,7 @@ var // currently active contextMenu trigger
|
|||
opt.$layer = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// remove handle
|
||||
$currentTrigger = null;
|
||||
// remove selected
|
||||
|
@ -781,7 +781,7 @@ var // currently active contextMenu trigger
|
|||
$(document).off('.contextMenuAutoHide').off('keydown.contextMenu');
|
||||
// hide menu
|
||||
opt.$menu && opt.$menu[opt.animation.hide](opt.animation.duration);
|
||||
|
||||
|
||||
// tear down dynamically built menu
|
||||
if (opt.build) {
|
||||
opt.$menu.remove();
|
||||
|
@ -813,28 +813,28 @@ var // currently active contextMenu trigger
|
|||
'contextMenu': opt,
|
||||
'contextMenuRoot': root
|
||||
});
|
||||
|
||||
|
||||
$.each(['callbacks', 'commands', 'inputs'], function(i,k){
|
||||
opt[k] = {};
|
||||
if (!root[k]) {
|
||||
root[k] = {};
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
root.accesskeys || (root.accesskeys = {});
|
||||
|
||||
|
||||
// create contextMenu items
|
||||
$.each(opt.items, function(key, item){
|
||||
var $t = $('<li class="context-menu-item ' + (item.className || "") +'"></li>'),
|
||||
$label = null,
|
||||
$input = null;
|
||||
|
||||
|
||||
item.$node = $t.data({
|
||||
'contextMenu': opt,
|
||||
'contextMenuRoot': root,
|
||||
'contextMenuKey': key
|
||||
});
|
||||
|
||||
|
||||
// register accesskey
|
||||
// NOTE: the accesskey attribute should be applicable to any element, but Safari5 and Chrome13 still can't do that
|
||||
if (item.accesskey) {
|
||||
|
@ -847,7 +847,7 @@ var // currently active contextMenu trigger
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (typeof item == "string") {
|
||||
$t.addClass('context-menu-separator not-selectable');
|
||||
} else if (item.type && types[item.type]) {
|
||||
|
@ -876,13 +876,13 @@ var // currently active contextMenu trigger
|
|||
} else if (item.items) {
|
||||
item.type = 'sub';
|
||||
}
|
||||
|
||||
|
||||
switch (item.type) {
|
||||
case 'text':
|
||||
$input = $('<input type="text" value="1" name="context-menu-input-'+ key +'" value="">')
|
||||
.val(item.value || "").appendTo($label);
|
||||
break;
|
||||
|
||||
|
||||
case 'textarea':
|
||||
$input = $('<textarea name="context-menu-input-'+ key +'"></textarea>')
|
||||
.val(item.value || "").appendTo($label);
|
||||
|
@ -901,7 +901,7 @@ var // currently active contextMenu trigger
|
|||
$input = $('<input type="radio" value="1" name="context-menu-input-'+ item.radio +'" value="">')
|
||||
.val(item.value || "").prop("checked", !!item.selected).prependTo($label);
|
||||
break;
|
||||
|
||||
|
||||
case 'select':
|
||||
$input = $('<select name="context-menu-input-'+ key +'">').appendTo($label);
|
||||
if (item.options) {
|
||||
|
@ -911,7 +911,7 @@ var // currently active contextMenu trigger
|
|||
$input.val(item.selected);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'sub':
|
||||
$('<span></span>').html(item._name || item.name).appendTo($t);
|
||||
item.appendTo = item.$node;
|
||||
|
@ -919,11 +919,11 @@ var // currently active contextMenu trigger
|
|||
$t.data('contextMenu', item).addClass('context-menu-submenu');
|
||||
item.callback = null;
|
||||
break;
|
||||
|
||||
|
||||
case 'html':
|
||||
$(item.html).appendTo($t);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
$.each([opt, root], function(i,k){
|
||||
k.commands[key] = item;
|
||||
|
@ -931,35 +931,35 @@ var // currently active contextMenu trigger
|
|||
k.callbacks[key] = item.callback;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('<span></span>').html(item._name || item.name || "").appendTo($t);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// disable key listener in <input>
|
||||
if (item.type && item.type != 'sub' && item.type != 'html') {
|
||||
$input
|
||||
.on('focus', handle.focusInput)
|
||||
.on('blur', handle.blurInput);
|
||||
|
||||
|
||||
if (item.events) {
|
||||
$input.on(item.events);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// add icons
|
||||
if (item.icon) {
|
||||
$t.addClass("icon icon-" + item.icon);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// cache contained elements
|
||||
item.$input = $input;
|
||||
item.$label = $label;
|
||||
|
||||
// attach item to menu
|
||||
$t.appendTo(opt.$menu);
|
||||
|
||||
|
||||
// Disable text selection
|
||||
if (!opt.hasTypes) {
|
||||
if($.browser.msie) {
|
||||
|
@ -997,29 +997,29 @@ var // currently active contextMenu trigger
|
|||
|
||||
// dis- / enable item
|
||||
$item[disabled ? 'addClass' : 'removeClass']('disabled');
|
||||
|
||||
|
||||
if (item.type) {
|
||||
// dis- / enable input elements
|
||||
$item.find('input, select, textarea').prop('disabled', disabled);
|
||||
|
||||
|
||||
// update input states
|
||||
switch (item.type) {
|
||||
case 'text':
|
||||
case 'textarea':
|
||||
item.$input.val(item.value || "");
|
||||
break;
|
||||
|
||||
|
||||
case 'checkbox':
|
||||
case 'radio':
|
||||
item.$input.val(item.value || "").prop('checked', !!item.selected);
|
||||
break;
|
||||
|
||||
|
||||
case 'select':
|
||||
item.$input.val(item.selected || "");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (item.$menu) {
|
||||
// update sub-menu
|
||||
op.update.call($this, item, root);
|
||||
|
@ -1041,14 +1041,14 @@ var // currently active contextMenu trigger
|
|||
function splitAccesskey(val) {
|
||||
var t = val.split(/\s+/),
|
||||
keys = [];
|
||||
|
||||
|
||||
for (var i=0, k; k = t[i]; i++) {
|
||||
k = k[0].toUpperCase(); // first character only
|
||||
// theoretically non-accessible characters should be ignored, but different systems, different keyboard layouts, ... screw it.
|
||||
// a map to look up already used access keys would be nice
|
||||
keys.push(k);
|
||||
}
|
||||
|
||||
|
||||
return keys;
|
||||
}
|
||||
|
||||
|
@ -1066,7 +1066,7 @@ $.fn.contextMenu = function(operation) {
|
|||
} else if (!operation) {
|
||||
this.addClass('context-menu-disabled');
|
||||
}
|
||||
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
|
@ -1076,17 +1076,17 @@ $.contextMenu = function(operation, options) {
|
|||
options = operation;
|
||||
operation = 'create';
|
||||
}
|
||||
|
||||
|
||||
if (typeof options == 'string') {
|
||||
options = {selector: options};
|
||||
} else if (options === undefined) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
|
||||
// merge with default options
|
||||
var o = $.extend(true, {}, defaults, options || {}),
|
||||
$body = $body = $(document);
|
||||
|
||||
|
||||
switch (operation) {
|
||||
case 'create':
|
||||
// no selector no joy
|
||||
|
@ -1104,7 +1104,7 @@ $.contextMenu = function(operation, options) {
|
|||
o.ns = '.contextMenu' + counter;
|
||||
namespaces[o.selector] = o.ns;
|
||||
menus[o.ns] = o;
|
||||
|
||||
|
||||
if (!initialized) {
|
||||
// make sure item click is registered first
|
||||
$body
|
||||
|
@ -1128,18 +1128,18 @@ $.contextMenu = function(operation, options) {
|
|||
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
|
||||
// engage native contextmenu event
|
||||
$body
|
||||
.on('contextmenu' + o.ns, o.selector, o, handle.contextmenu);
|
||||
|
||||
|
||||
switch (o.trigger) {
|
||||
case 'hover':
|
||||
$body
|
||||
.on('mouseenter' + o.ns, o.selector, o, handle.mouseenter)
|
||||
.on('mouseleave' + o.ns, o.selector, o, handle.mouseleave);
|
||||
.on('mouseleave' + o.ns, o.selector, o, handle.mouseleave);
|
||||
break;
|
||||
|
||||
|
||||
case 'left':
|
||||
$body.on('click' + o.ns, o.selector, o, handle.click);
|
||||
break;
|
||||
|
@ -1152,7 +1152,7 @@ $.contextMenu = function(operation, options) {
|
|||
break;
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
if (o.trigger != 'hover' && o.ignoreRightClick) {
|
||||
$body.on('mousedown' + o.ns, o.selector, handle.ignoreRightClick);
|
||||
}
|
||||
|
@ -1162,35 +1162,35 @@ $.contextMenu = function(operation, options) {
|
|||
op.create(o);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'destroy':
|
||||
if (!o.selector) {
|
||||
$body.off('.contextMenu .contextMenuAutoHide');
|
||||
$.each(namespaces, function(key, value) {
|
||||
$body.off(value);
|
||||
});
|
||||
|
||||
|
||||
namespaces = {};
|
||||
menus = {};
|
||||
counter = 0;
|
||||
initialized = false;
|
||||
|
||||
|
||||
$('.context-menu-list').remove();
|
||||
} else if (namespaces[o.selector]) {
|
||||
try {
|
||||
if (menus[namespaces[o.selector]].$menu) {
|
||||
menus[namespaces[o.selector]].$menu.remove();
|
||||
}
|
||||
|
||||
|
||||
delete menus[namespaces[o.selector]];
|
||||
} catch(e) {
|
||||
menus[namespaces[o.selector]] = null;
|
||||
}
|
||||
|
||||
|
||||
$body.off(namespaces[o.selector]);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'html5':
|
||||
// if <command> or <menuitem> are not handled by the browser,
|
||||
// or options was a bool true,
|
||||
|
@ -1206,11 +1206,11 @@ $.contextMenu = function(operation, options) {
|
|||
}).css('display', 'none');
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
throw new Error('Unknown operation "' + operation + '"');
|
||||
}
|
||||
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
|
@ -1219,7 +1219,7 @@ $.contextMenu.setInputValues = function(opt, data) {
|
|||
if (data === undefined) {
|
||||
data = {};
|
||||
}
|
||||
|
||||
|
||||
$.each(opt.inputs, function(key, item) {
|
||||
switch (item.type) {
|
||||
case 'text':
|
||||
|
@ -1230,11 +1230,11 @@ $.contextMenu.setInputValues = function(opt, data) {
|
|||
case 'checkbox':
|
||||
item.selected = data[key] ? true : false;
|
||||
break;
|
||||
|
||||
|
||||
case 'radio':
|
||||
item.selected = (data[item.radio] || "") == item.value ? true : false;
|
||||
break;
|
||||
|
||||
|
||||
case 'select':
|
||||
item.selected = data[key] || "";
|
||||
break;
|
||||
|
@ -1247,7 +1247,7 @@ $.contextMenu.getInputValues = function(opt, data) {
|
|||
if (data === undefined) {
|
||||
data = {};
|
||||
}
|
||||
|
||||
|
||||
$.each(opt.inputs, function(key, item) {
|
||||
switch (item.type) {
|
||||
case 'text':
|
||||
|
@ -1259,7 +1259,7 @@ $.contextMenu.getInputValues = function(opt, data) {
|
|||
case 'checkbox':
|
||||
data[key] = item.$input.prop('checked');
|
||||
break;
|
||||
|
||||
|
||||
case 'radio':
|
||||
if (item.$input.prop('checked')) {
|
||||
data[item.radio] = item.value;
|
||||
|
@ -1267,7 +1267,7 @@ $.contextMenu.getInputValues = function(opt, data) {
|
|||
break;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return data;
|
||||
};
|
||||
|
||||
|
@ -1281,14 +1281,14 @@ function menuChildren(items, $children, counter) {
|
|||
if (!counter) {
|
||||
counter = 0;
|
||||
}
|
||||
|
||||
|
||||
$children.each(function() {
|
||||
var $node = $(this),
|
||||
node = this,
|
||||
nodeName = this.nodeName.toLowerCase(),
|
||||
label,
|
||||
item;
|
||||
|
||||
|
||||
// extract <label><input>
|
||||
if (nodeName == 'label' && $node.find('input, textarea, select').length) {
|
||||
label = $node.text();
|
||||
|
@ -1296,14 +1296,14 @@ function menuChildren(items, $children, counter) {
|
|||
node = $node.get(0);
|
||||
nodeName = node.nodeName.toLowerCase();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* <menu> accepts flow-content as children. that means <embed>, <canvas> and such are valid menu items.
|
||||
* Not being the sadistic kind, $.contextMenu only accepts:
|
||||
* <command>, <menuitem>, <hr>, <span>, <p> <input [text, radio, checkbox]>, <textarea>, <select> and of course <menu>.
|
||||
* Everything else will be imported as an html node, which is not interfaced with contextMenu.
|
||||
*/
|
||||
|
||||
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#concept-command
|
||||
switch (nodeName) {
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#the-menu-element
|
||||
|
@ -1311,7 +1311,7 @@ function menuChildren(items, $children, counter) {
|
|||
item = {name: $node.attr('label'), items: {}};
|
||||
menuChildren(item.items, $node.children(), counter);
|
||||
break;
|
||||
|
||||
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#using-the-a-element-to-define-a-command
|
||||
case 'a':
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#using-the-button-element-to-define-a-command
|
||||
|
@ -1322,7 +1322,7 @@ function menuChildren(items, $children, counter) {
|
|||
callback: (function(){ return function(){ $node.click(); }; })()
|
||||
};
|
||||
break;
|
||||
|
||||
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#using-the-command-element-to-define-a-command
|
||||
|
||||
case 'menuitem':
|
||||
|
@ -1337,7 +1337,7 @@ function menuChildren(items, $children, counter) {
|
|||
callback: (function(){ return function(){ $node.click(); }; })()
|
||||
};
|
||||
break;
|
||||
|
||||
|
||||
case 'checkbox':
|
||||
item = {
|
||||
type: 'checkbox',
|
||||
|
@ -1346,7 +1346,7 @@ function menuChildren(items, $children, counter) {
|
|||
selected: !!$node.attr('checked')
|
||||
};
|
||||
break;
|
||||
|
||||
|
||||
case 'radio':
|
||||
item = {
|
||||
type: 'radio',
|
||||
|
@ -1357,16 +1357,16 @@ function menuChildren(items, $children, counter) {
|
|||
selected: !!$node.attr('checked')
|
||||
};
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
item = undefined;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'hr':
|
||||
item = '-------';
|
||||
break;
|
||||
|
||||
|
||||
case 'input':
|
||||
switch ($node.attr('type')) {
|
||||
case 'text':
|
||||
|
@ -1377,7 +1377,7 @@ function menuChildren(items, $children, counter) {
|
|||
value: $node.val()
|
||||
};
|
||||
break;
|
||||
|
||||
|
||||
case 'checkbox':
|
||||
item = {
|
||||
type: 'checkbox',
|
||||
|
@ -1386,7 +1386,7 @@ function menuChildren(items, $children, counter) {
|
|||
selected: !!$node.attr('checked')
|
||||
};
|
||||
break;
|
||||
|
||||
|
||||
case 'radio':
|
||||
item = {
|
||||
type: 'radio',
|
||||
|
@ -1397,13 +1397,13 @@ function menuChildren(items, $children, counter) {
|
|||
selected: !!$node.attr('checked')
|
||||
};
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
item = undefined;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'select':
|
||||
item = {
|
||||
type: 'select',
|
||||
|
@ -1416,7 +1416,7 @@ function menuChildren(items, $children, counter) {
|
|||
item.options[this.value] = $(this).text();
|
||||
});
|
||||
break;
|
||||
|
||||
|
||||
case 'textarea':
|
||||
item = {
|
||||
type: 'textarea',
|
||||
|
@ -1425,15 +1425,15 @@ function menuChildren(items, $children, counter) {
|
|||
value: $node.val()
|
||||
};
|
||||
break;
|
||||
|
||||
|
||||
case 'label':
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
item = {type: 'html', html: $node.clone(true)};
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (item) {
|
||||
counter++;
|
||||
items['key' + counter] = item;
|
||||
|
@ -1445,9 +1445,9 @@ function menuChildren(items, $children, counter) {
|
|||
$.contextMenu.fromMenu = function(element) {
|
||||
var $this = $(element),
|
||||
items = {};
|
||||
|
||||
|
||||
menuChildren(items, $this.children());
|
||||
|
||||
|
||||
return items;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue