diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bbc9d5..d481972 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,10 @@ -# 1.18.0-0 / Unreleased +# 1.18.2 / Unreleased + +# 1.18.1 / 2017-08-28 + +* [BUGFIX] Fix deprecation warnings when menu with `title` callback is opened + +# 1.18.0 / 2017-08-26 * [CHANGE] Refactored entry update methods - `setEntry(cmd, data)`: diff --git a/README.md b/README.md index 8698d64..17ec882 100644 --- a/README.md +++ b/README.md @@ -48,8 +48,8 @@ First, include dependencies: * One of the ThemeRoller CSS themes or a custom one * jquery.ui-contextmenu.js (also available as CDN on [jsDelivr](https://cdn.jsdelivr.net/gh/mar10/jquery-ui-contextmenu/), - [cdnjs](https://cdnjs.com/libraries/jquery.ui-contextmenu)), or - [UNPKG](https://unpkg.com/ui-contextmenu@latest/jquery.ui-contextmenu.min.js) + [cdnjs](https://cdnjs.com/libraries/jquery.ui-contextmenu), or + [UNPKG](https://unpkg.com/ui-contextmenu@latest/jquery.ui-contextmenu.min.js)) ```html diff --git a/bower.json b/bower.json index 93abd24..630d145 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ui-contextmenu", "description": "Turn a jQuery UI Menu widget into a contextmenu.", - "version": "1.18.0", + "version": "1.18.1", "main": [ "jquery.ui-contextmenu.js" ], diff --git a/demo/index-1-10.html b/demo/index-1-10.html index b5b81c8..6d0c609 100644 --- a/demo/index-1-10.html +++ b/demo/index-1-10.html @@ -116,9 +116,9 @@ $(document) // .contextmenu("replaceMenu", [{title: "aaa"}, {title: "bbb"}]) // .contextmenu("replaceMenu", "#options2") -// .contextmenu("setEntry", "cut", {title: "Cuty", uiIcon: "ui-icon-heart", disabled: true}) - .contextmenu("setEntry", "copy", "Copy '" + $target.text() + "'") - .contextmenu("setEntry", "paste", "Paste" + (CLIPBOARD ? " '" + CLIPBOARD + "'" : "")) +// .contextmenu("updateEntry", "cut", {title: "Cuty", uiIcon: "ui-icon-heart", disabled: true}) + .contextmenu("setTitle", "copy", "Copy '" + $target.text() + "'") + .contextmenu("setTitle", "paste", "Paste" + (CLIPBOARD ? " '" + CLIPBOARD + "'" : "")) .contextmenu("enableEntry", "paste", (CLIPBOARD !== "")); // Optionally return false, to prevent opening the menu now diff --git a/demo/index-1-11.html b/demo/index-1-11.html index 5c36310..3e36569 100644 --- a/demo/index-1-11.html +++ b/demo/index-1-11.html @@ -124,9 +124,9 @@ $(document) // .contextmenu("replaceMenu", [{title: "aaa"}, {title: "bbb"}]) // .contextmenu("replaceMenu", "#options2") -// .contextmenu("setEntry", "cut", {title: "Cuty", uiIcon: "ui-icon-heart", disabled: true}) - .contextmenu("setEntry", "copy", "Copy '" + $target.text() + "'") - .contextmenu("setEntry", "paste", "Paste" + (CLIPBOARD ? " '" + CLIPBOARD + "'" : "")) +// .contextmenu("updateEntry", "cut", {title: "Cuty", uiIcon: "ui-icon-heart", disabled: true}) + .contextmenu("setTitle", "copy", "Copy '" + $target.text() + "'") + .contextmenu("setTitle", "paste", "Paste" + (CLIPBOARD ? " '" + CLIPBOARD + "'" : "")) .contextmenu("enableEntry", "paste", (CLIPBOARD !== "")); // Optionally return false, to prevent opening the menu now diff --git a/demo/index-1-12.html b/demo/index-1-12.html index ad790b2..307d5a0 100644 --- a/demo/index-1-12.html +++ b/demo/index-1-12.html @@ -140,7 +140,7 @@ $(document) // .contextmenu("replaceMenu", [{title: "aaa"}, {title: "bbb"}]) // .contextmenu("replaceMenu", "#options2") -// .contextmenu("setEntry", "cut", {title: "Cuty", uiIcon: "ui-icon-heart", disabled: true}) +// .contextmenu("updateEntry", "cut", {title: "Cuty", uiIcon: "ui-icon-heart", disabled: true}) .contextmenu("setTitle", "copy", "Copy '" + $target.text() + "'") .contextmenu("setTitle", "paste", "Paste" + (CLIPBOARD ? " '" + CLIPBOARD + "'" : "")) .contextmenu("enableEntry", "paste", (CLIPBOARD !== "")); diff --git a/demo/index_local.html b/demo/index_local.html index 3d29d4c..307089a 100644 --- a/demo/index_local.html +++ b/demo/index_local.html @@ -94,9 +94,9 @@ $(document) // .contextmenu("replaceMenu", [{title: "aaa"}, {title: "bbb"}]) // .contextmenu("replaceMenu", "#options2") -// .contextmenu("setEntry", "cut", {title: "Cuty", uiIcon: "ui-icon-heart", disabled: true}) - .contextmenu("setEntry", "copy", "Copy '" + $target.text() + "'") - .contextmenu("setEntry", "paste", "Paste" + (CLIPBOARD ? " '" + CLIPBOARD + "'" : "")) +// .contextmenu("updateEntry", "cut", {title: "Cuty", uiIcon: "ui-icon-heart", disabled: true}) + .contextmenu("setTitle", "copy", "Copy '" + $target.text() + "'") + .contextmenu("setTitle", "paste", "Paste" + (CLIPBOARD ? " '" + CLIPBOARD + "'" : "")) .contextmenu("enableEntry", "paste", (CLIPBOARD !== "")); // Optionally return false, to prevent opening the menu now diff --git a/jquery.ui-contextmenu.js b/jquery.ui-contextmenu.js index 6ce1cd0..8b11028 100644 --- a/jquery.ui-contextmenu.js +++ b/jquery.ui-contextmenu.js @@ -368,7 +368,7 @@ $.widget("moogle.contextmenu", { fn = $entry.data("titleHandler"), res = fn ? fn({ type: "title" }, ui) : null; if ( res != null ) { - self.setEntry(ui.cmd, "" + res); + self.setTitle(ui.cmd, "" + res); } // Evaluate `tooltip()` callback fn = $entry.data("tooltipHandler"), diff --git a/jquery.ui-contextmenu.min.js b/jquery.ui-contextmenu.min.js index b27ef40..6b57464 100644 --- a/jquery.ui-contextmenu.min.js +++ b/jquery.ui-contextmenu.min.js @@ -1,4 +1,4 @@ -/*! jQuery UI context menu plugin - v1.18.0 - 2017-08-26 | https://github.com/mar10/jquery-ui-contextmenu | Copyright (c) 2013 -2017 Martin Wendt; Licensed MIT */ +/*! jQuery UI context menu plugin - v1.18.1 - 2017-08-28 | https://github.com/mar10/jquery-ui-contextmenu | Copyright (c) 2013 -2017 Martin Wendt; Licensed MIT */ -!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery","jquery-ui/ui/widgets/menu"],a):a(jQuery)}(function(a){"use strict";var b="onselectstart"in document.createElement("div"),c=a.ui.menu.version.match(/^(\d)\.(\d+)/),d={major:parseInt(c[1],10),minor:parseInt(c[2],10)},e=d.major<2&&d.minor<=10,f=d.major<2&&d.minor<=11;a.widget("moogle.contextmenu",{version:"1.18.0",options:{addClass:"ui-contextmenu",closeOnWindowBlur:!0,autoFocus:!1,autoTrigger:!0,delegate:null,hide:{effect:"fadeOut",duration:"fast"},ignoreParentSelect:!0,menu:null,position:null,preventContextMenuForPopup:!1,preventSelect:!1,show:{effect:"slideDown",duration:"fast"},taphold:!1,uiMenuOptions:{},beforeOpen:a.noop,blur:a.noop,close:a.noop,create:a.noop,createMenu:a.noop,focus:a.noop,open:a.noop,select:a.noop},_create:function(){var c,d,e,f=this.options;if(this.$headStyle=null,this.$menu=null,this.menuIsTemp=!1,this.currentTarget=null,this.extraData={},this.previousFocus=null,null==f.delegate&&a.error("ui-contextmenu: Missing required option `delegate`."),f.preventSelect){e=(a(this.element).is(document)?a("body"):this.element).uniqueId().attr("id"),c="#"+e+" "+f.delegate+" { -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }",this.$headStyle=a("").prop("type","text/css").appendTo("head");try{this.$headStyle.html(c)}catch(g){this.$headStyle[0].styleSheet.cssText=c}b&&this.element.on("selectstart"+this.eventNamespace,f.delegate,function(a){a.preventDefault()})}this._createUiMenu(f.menu),d="contextmenu"+this.eventNamespace,f.taphold&&(d+=" taphold"+this.eventNamespace),this.element.on(d,f.delegate,a.proxy(this._openMenu,this))},_destroy:function(){this.element.off(this.eventNamespace),this._createUiMenu(null),this.$headStyle&&(this.$headStyle.remove(),this.$headStyle=null)},_createUiMenu:function(b){var c,d,e=this.options;this.isOpen()&&(c=this.currentTarget,d=this.extraData,this._closeMenu(!0),this.currentTarget=c,this.extraData=d),this.menuIsTemp?this.$menu.remove():this.$menu&&this.$menu.menu("destroy").removeClass(this.options.addClass).hide(),this.$menu=null,this.menuIsTemp=!1,b&&(a.isArray(b)?(this.$menu=a.moogle.contextmenu.createMenuMarkup(b),this.menuIsTemp=!0):"string"==typeof b?this.$menu=a(b):this.$menu=b,this.$menu.hide().addClass(e.addClass).menu(a.extend(!0,{},e.uiMenuOptions,{items:"> :not(.ui-widget-header)",blur:a.proxy(e.blur,this),create:a.proxy(e.createMenu,this),focus:a.proxy(e.focus,this),select:a.proxy(function(b,c){var d,f=a.moogle.contextmenu.isMenu(c.item),g=c.item.data("actionHandler");c.cmd=c.item.attr("data-command"),c.target=a(this.currentTarget),c.extraData=this.extraData,f&&e.ignoreParentSelect||(d=this._trigger.call(this,"select",b,c),g&&(d=g.call(this,b,c)),d!==!1&&this._closeMenu.call(this),b.preventDefault())},this)})))},_openMenu:function(b,c){var d,e,f,g=this.options,h=g.position,i=this,j=!!b.isTrigger;if(g.autoTrigger||j){if(b.preventDefault(),this.currentTarget=b.target,this.extraData=b._extraData||{},f={menu:this.$menu,target:a(this.currentTarget),extraData:this.extraData,originalEvent:b,result:null},!c){if(d=this._trigger("beforeOpen",b,f),e=f.result&&a.isFunction(f.result.promise)?f.result:null,f.result=null,d===!1)return this.currentTarget=null,!1;if(e)return e.done(function(){i._openMenu(b,!0)}),this.currentTarget=null,!1;f.menu=this.$menu}a(document).on("keydown"+this.eventNamespace,function(b){b.which===a.ui.keyCode.ESCAPE&&i._closeMenu()}).on("mousedown"+this.eventNamespace+" touchstart"+this.eventNamespace,function(b){a(b.target).closest(".ui-menu-item").length||i._closeMenu()}),a(window).on("blur"+this.eventNamespace,function(a){g.closeOnWindowBlur&&i._closeMenu()}),a.isFunction(h)&&(h=h(b,f)),h=a.extend({my:"left top",at:"left bottom",of:void 0===b.pageX?b.target:b,collision:"fit"},h),this._updateEntries(this.$menu),this.$menu.show().css({position:"absolute",left:0,top:0}).position(h).hide(),g.preventContextMenuForPopup&&this.$menu.on("contextmenu"+this.eventNamespace,function(a){a.preventDefault()}),this._show(this.$menu,g.show,function(){var c;g.autoFocus&&(i.previousFocus=a(b.target),c=i.$menu.children("li.ui-menu-item").not(".ui-state-disabled").first(),i.$menu.menu("focus",null,c).focus()),i._trigger.call(i,"open",b,f)})}},_closeMenu:function(b){var c=this,d=!b&&this.options.hide,e={menu:this.$menu,target:a(this.currentTarget),extraData:this.extraData};a(document).off("mousedown"+this.eventNamespace).off("touchstart"+this.eventNamespace).off("keydown"+this.eventNamespace),a(window).off("blur"+this.eventNamespace),c.currentTarget=null,c.extraData={},this.$menu?(this.$menu.off("contextmenu"+this.eventNamespace),this._hide(this.$menu,d,function(){c.previousFocus&&(c.previousFocus.focus(),c.previousFocus=null),c._trigger("close",null,e)})):c._trigger("close",null,e)},_setOption:function(b,c){switch(b){case"menu":this.replaceMenu(c)}a.Widget.prototype._setOption.apply(this,arguments)},_getMenuEntry:function(a){return this.$menu.find("li[data-command="+a+"]")},close:function(){this.isOpen()&&this._closeMenu()},_updateEntries:function(){var b=this,c={menu:this.$menu,target:a(this.currentTarget),extraData:this.extraData};a.each(this.$menu.find(".ui-menu-item"),function(d,e){var f=a(e),g=f.data("disabledHandler"),h=g?g({type:"disabled"},c):null;c.item=f,c.cmd=f.attr("data-command"),null!=h&&(b.enableEntry(c.cmd,!h),b.showEntry(c.cmd,"hide"!==h)),g=f.data("titleHandler"),h=g?g({type:"title"},c):null,null!=h&&b.setEntry(c.cmd,""+h),g=f.data("tooltipHandler"),h=g?g({type:"tooltip"},c):null,null!=h&&f.attr("title",""+h)})},enableEntry:function(a,b){this._getMenuEntry(a).toggleClass("ui-state-disabled",b===!1)},getEntry:function(a){return this._getMenuEntry(a)},getEntryWrapper:function(a){return this._getMenuEntry(a).find(">[role=menuitem]").addBack("[role=menuitem]")},getMenu:function(){return this.$menu},isOpen:function(){return!!this.$menu&&!!this.currentTarget},open:function(b,c){c=c||{};var d=b&&b.type&&b.target,e=d?b:{},f=d?b.target:b,g=jQuery.Event("contextmenu",{target:a(f).get(0),pageX:e.pageX,pageY:e.pageY,originalEvent:d?b:void 0,_extraData:c});return this.element.trigger(g)},replaceMenu:function(a){this._createUiMenu(a)},setEntry:function(b,c){var d,e=this._getMenuEntry(b);return"string"==typeof c?(window.console&&window.console.warn("setEntry(cmd, t) with a plain string title is deprecated since v1.18.Use setTitle(cmd, '"+c+"') instead."),this.setTitle(b,c)):(e.empty(),c.cmd=c.cmd||b,a.moogle.contextmenu.createEntryMarkup(c,e),a.isArray(c.children)&&(d=a("