Skip to content

Commit b9ffded

Browse files
committed
New option addClass
Close mar10#83
1 parent 0e6524e commit b9ffded

File tree

4 files changed

+33
-17
lines changed

4 files changed

+33
-17
lines changed

CHANGELOG.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# 1.8.1-0 / Unreleased
2-
* [FEATURE] Publish on npm Registry.
3-
* [FEATURE] Publish on cdnjs.
4-
* [FEATURE] Include a source map file.
2+
* [FEATURE] Publish on npm Registry
3+
* [FEATURE] Publish on cdnjs
4+
* [FEATURE] Include a source map file
5+
* [FEATURE] New option `addClass`, defaults to "ui-contextmenu"
56

67
# 1.8.0 / 2014-11-23
78
* [FEATURE] #80 setEntry() supports creating nested menus

README.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,12 @@ $(document).contextmenu({
177177
## API documentation
178178
### Options
179179
<dl>
180+
<dt>addClass</dt>
181+
<dd>
182+
Type: <code>String</code>,
183+
default: <code>"ui-contextmenu"</code><br>
184+
This class is added to the outer ul element.
185+
</dd>
180186
<dt>autoTrigger</dt>
181187
<dd>
182188
Type: <code>Boolean</code>,
@@ -193,7 +199,7 @@ $(document).contextmenu({
193199
<dt>hide</dt>
194200
<dd>
195201
Type: <code> Boolean | Number | String | Object</code>,
196-
default: <code>{ effect: "fadeOut", duration: "fast"}</code><br>
202+
default: <code>{ effect: "fadeOut", duration: "fast" }</code><br>
197203
Effect applied when hiding the popup.<br>
198204
See <a href="http://api.jqueryui.com/jQuery.widget/#option-show">sample</a>
199205
for possible option values.

jquery.ui-contextmenu.js

+15-9
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ var supportSelectstart = "onselectstart" in document.createElement("div"),
2727
$.widget("moogle.contextmenu", {
2828
version: "@VERSION",
2929
options: {
30+
addClass: "ui-contextmenu", // Add this class to the outer <ul>
3031
autoTrigger: true, // open menu on browser's `contextmenu` event
3132
delegate: null, // selector
3233
hide: { effect: "fadeOut", duration: "fast" },
@@ -111,7 +112,9 @@ $.widget("moogle.contextmenu", {
111112
},
112113
/** (Re)Create jQuery UI Menu. */
113114
_createUiMenu: function(menuDef) {
114-
var ct;
115+
var ct,
116+
opts = this.options;
117+
115118
// Remove temporary <ul> if any
116119
if (this.isOpen()) {
117120
// #58: 'replaceMenu' in beforeOpen causing select: to lose ui.target
@@ -120,11 +123,13 @@ $.widget("moogle.contextmenu", {
120123
this._closeMenu(true);
121124
this.currentTarget = ct;
122125
}
123-
124126
if (this.menuIsTemp) {
125127
this.$menu.remove(); // this will also destroy ui.menu
126128
} else if (this.$menu) {
127-
this.$menu.menu("destroy").hide();
129+
this.$menu
130+
.menu("destroy")
131+
.removeClass(this.options.addClass)
132+
.hide();
128133
}
129134
this.$menu = null;
130135
this.menuIsTemp = false;
@@ -143,21 +148,22 @@ $.widget("moogle.contextmenu", {
143148
// Create - but hide - the jQuery UI Menu widget
144149
this.$menu
145150
.hide()
146-
// .addClass("moogle-contextmenu")
151+
.addClass(opts.addClass)
147152
// Create a menu instance that delegates events to our widget
148-
.menu($.extend(true, {}, this.options.uiMenuOptions, {
149-
blur: $.proxy(this.options.blur, this),
150-
create: $.proxy(this.options.createMenu, this),
151-
focus: $.proxy(this.options.focus, this),
153+
.menu($.extend(true, {}, opts.uiMenuOptions, {
154+
blur: $.proxy(opts.blur, this),
155+
create: $.proxy(opts.createMenu, this),
156+
focus: $.proxy(opts.focus, this),
152157
select: $.proxy(function(event, ui) {
153158
// User selected a menu entry
154159
var retval,
155160
isParent = $.moogle.contextmenu.isMenu(ui.item),
156161
actionHandler = ui.item.data("actionHandler");
162+
157163
ui.cmd = ui.item.attr("data-command");
158164
ui.target = $(this.currentTarget);
159165
// ignore clicks, if they only open a sub-menu
160-
if ( !isParent || !this.options.ignoreParentSelect) {
166+
if ( !isParent || !opts.ignoreParentSelect) {
161167
retval = this._trigger.call(this, "select", event, ui);
162168
if ( actionHandler ) {
163169
retval = actionHandler.call(this, event, ui);

test/tests.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -179,14 +179,15 @@ function _createTest(menu) {
179179
log( "afterConstructor");
180180
$ctx = $(":moogle-contextmenu");
181181
equal( $ctx.length, 1, "widget created");
182-
// ok($("#sampleMenu").hasClass( "moogle-contextmenu" ), "Class set to menu definition");
182+
// equal( $("#sampleMenu").hasClass( "ui-contextmenu" ), true,
183+
// "Class set to menu definition");
183184
equal( $("head style.moogle-contextmenu-style").length, 1, "global stylesheet created");
184185

185186
$ctx.contextmenu("destroy");
186187

187188
equal( $(":moogle-contextmenu").length, 0, "widget destroyed");
188-
// ok( !$("#sampleMenu").hasClass("moogle-contextmenu"),
189-
// "Class removed from menu definition");
189+
// equal( $("#sampleMenu").hasClass("ui-contextmenu"), false,
190+
// "Class removed from menu definition");
190191
equal( $("head style.moogle-contextmenu-style").length, 0, "global stylesheet removed");
191192

192193
equal(logOutput(), "constructor,createMenu,create,afterConstructor",
@@ -208,7 +209,7 @@ module("open", lifecycle);
208209
function _openTest(menu) {
209210
var $ctx, $popup;
210211

211-
expect(18);
212+
expect(19);
212213

213214
$("#container").contextmenu({
214215
delegate: ".hasmenu",
@@ -237,6 +238,8 @@ function _openTest(menu) {
237238

238239
ok( $popup.is(":visible"),
239240
"open: Menu is visible" );
241+
ok( $popup.hasClass("ui-contextmenu"),
242+
"Class removed from menu definition");
240243
ok( entry($popup, 2).hasClass("ui-state-disabled"),
241244
"open: Entry is disabled" );
242245

0 commit comments

Comments
 (0)