diff --git a/README.md b/README.md index 4b1310fe..20b8a33d 100644 --- a/README.md +++ b/README.md @@ -114,15 +114,15 @@ $.contextMenu is published under the [MIT license](http://www.opensource.org/lic ### Unreleased -* Nothing +* Item icon can now be a callback to dynamically decide on icon class. - ([Issue #158](https://github.com/swisnl/jQuery-contextMenu/issues/158), [Issue #129](https://github.com/swisnl/jQuery-contextMenu/issues/129), [Issue #151](https://github.com/swisnl/jQuery-contextMenu/issues/151), [Issue #249](https://github.com/swisnl/jQuery-contextMenu/issues/249)) #### 1.7.0 (August 29th 2015) ### * Touch support optimisations (by kccarter76) -* changed .text to .html so there are no extra span's fixed #252 +* changed .text to .html so there are no extra span's fixed - ([Issue #252](https://github.com/swisnl/jQuery-contextMenu/issues/252)) * added visibility callback to item definition * copy the HTML5 icon attribute when creating from HTML5 elements -* growing menu when opening multiple times fixed #197 +* growing menu when opening multiple times fixed - ([Issue #197](https://github.com/swisnl/jQuery-contextMenu/issues/197)) * fixed failure to run tests ### 1.6.8 (August 18th 2015) ### diff --git a/demo.html b/demo.html index bedea2da..43e2d759 100755 --- a/demo.html +++ b/demo.html @@ -65,7 +65,9 @@

Example code: Simple Context Menu

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ + return 'icon icon-quit'; + }} } }); diff --git a/demo/accesskeys.html b/demo/accesskeys.html index e8f3b9de..6906dc83 100755 --- a/demo/accesskeys.html +++ b/demo/accesskeys.html @@ -67,7 +67,7 @@

Example code: Accesskeys

"paste": {name: "Paste", icon: "paste", accesskey: "cool paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); }); diff --git a/demo/accesskeys_test.html b/demo/accesskeys_test.html index 99c55812..0156fd48 100755 --- a/demo/accesskeys_test.html +++ b/demo/accesskeys_test.html @@ -67,7 +67,7 @@

Example code: Accesskeys

"paste": {name: "Paste", icon: "paste", accesskey: "cool paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); }); diff --git a/demo/callback.html b/demo/callback.html index 0b822bdc..80b94210 100755 --- a/demo/callback.html +++ b/demo/callback.html @@ -73,7 +73,7 @@

Example code: Command's action (callbacks)

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); }); diff --git a/demo/callback_test.html b/demo/callback_test.html index e1742e60..24d76c6d 100755 --- a/demo/callback_test.html +++ b/demo/callback_test.html @@ -72,7 +72,7 @@

Example code: Command's action (callbacks)

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); }); diff --git a/demo/disabled-menu.html b/demo/disabled-menu.html index bc6462ad..13e782de 100755 --- a/demo/disabled-menu.html +++ b/demo/disabled-menu.html @@ -66,7 +66,7 @@

Example code: Disabled Context Menu

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); diff --git a/demo/dynamic-create.html b/demo/dynamic-create.html index 3b4e3808..5232f659 100755 --- a/demo/dynamic-create.html +++ b/demo/dynamic-create.html @@ -70,7 +70,7 @@

Example code: Dynamic on-demand Menu

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }; } diff --git a/demo/dynamic.html b/demo/dynamic.html index f775d50c..8d261cf0 100755 --- a/demo/dynamic.html +++ b/demo/dynamic.html @@ -76,7 +76,7 @@

Example code: Adding new Context Menu Triggers

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); }); diff --git a/demo/menu-title.html b/demo/menu-title.html index f180c8f2..6a070571 100755 --- a/demo/menu-title.html +++ b/demo/menu-title.html @@ -113,7 +113,7 @@

Example code: Menu Title

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); @@ -132,7 +132,7 @@

Example code: Menu Title

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); @@ -151,7 +151,7 @@

Example code: Menu Title

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); diff --git a/demo/on-dom-element.html b/demo/on-dom-element.html index 4f33ae63..784758f4 100755 --- a/demo/on-dom-element.html +++ b/demo/on-dom-element.html @@ -89,7 +89,7 @@

Example code: Context Menu on DOM Element

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); }); diff --git a/demo/trigger-custom.html b/demo/trigger-custom.html index 9344df44..8f0f53fa 100755 --- a/demo/trigger-custom.html +++ b/demo/trigger-custom.html @@ -75,7 +75,7 @@

Example code: Custom Activated Context Menu

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); }); diff --git a/demo/trigger-hover-autohide.html b/demo/trigger-hover-autohide.html index 8d05e38a..5f45156b 100755 --- a/demo/trigger-hover-autohide.html +++ b/demo/trigger-hover-autohide.html @@ -68,7 +68,7 @@

Example code: Hover Activated Context Menu With Autohide

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); }); diff --git a/demo/trigger-hover.html b/demo/trigger-hover.html index 34e07ca9..20599587 100755 --- a/demo/trigger-hover.html +++ b/demo/trigger-hover.html @@ -67,7 +67,7 @@

Example code: Hover Activated Context Menu

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); }); diff --git a/demo/trigger-left-click.html b/demo/trigger-left-click.html index ecb73d7c..db716b3b 100755 --- a/demo/trigger-left-click.html +++ b/demo/trigger-left-click.html @@ -67,7 +67,7 @@

Example code: Left-Click Trigger

"paste": {name: "Paste", icon: "paste"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", - "quit": {name: "Quit", icon: "quit"} + "quit": {name: "Quit", icon: function(){ return 'icon icon-quit'; }} } }); }); diff --git a/src/jquery.contextMenu.js b/src/jquery.contextMenu.js index 1070c222..5c316aba 100755 --- a/src/jquery.contextMenu.js +++ b/src/jquery.contextMenu.js @@ -1105,7 +1105,12 @@ var // currently active contextMenu trigger // add icons if (item.icon) { - $t.addClass("icon icon-" + item.icon); + if($.isFunction(item.icon)){ + item._icon = item.icon.call(this, $t, key, item) + } else { + item._icon = "icon icon-" + item.icon; + } + $t.addClass(item._icon); } } @@ -1186,6 +1191,12 @@ var // currently active contextMenu trigger // dis- / enable item $item[disabled ? 'addClass' : 'removeClass']('disabled'); + + if ($.isFunction(item.icon)) { + $item.removeClass(item._icon); + item._icon = item.icon.call(this, $trigger, key, item); + $item.addClass(item._icon); + } if (item.type) { // dis- / enable input elements