Skip to content

Commit b376fa8

Browse files
committed
Menu: Implemented destroy method and disabled option, modified test to pass html-compare-destroy test and extended default visual test for testing destroy and disabled features
1 parent 921e40f commit b376fa8

File tree

3 files changed

+56
-15
lines changed

3 files changed

+56
-15
lines changed

tests/unit/menu/menu.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ <h2 id="qunit-userAgent"></h2>
5959

6060
<div id="main" class="mainOnMoon">
6161

62-
<ul id="menu1">
63-
<li><a href="#">Aberdeen</a></li>
64-
<li><a href="#">Ada</a></li>
65-
<li><a href="#">Adamsville</a></li>
66-
<li><a href="#">Addyston</a></li>
67-
<li><a href="#">Adelphi</a></li>
62+
<ul class="foo" id="menu1">
63+
<li class="foo"><a class="foo" href="#">Aberdeen</a></li>
64+
<li class="foo"><a class="foo" href="#">Ada</a></li>
65+
<li class="foo"><a class="foo" href="#">Adamsville</a></li>
66+
<li class="foo"><a class="foo" href="#">Addyston</a></li>
67+
<li class="foo"><a class="foo" href="#">Adelphi</a></li>
6868
</ul>
6969
<div id="log"></div>
7070

tests/visual/menu/menu.html

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,25 @@
1717
top: 10
1818
}).appendTo(document.body).themeswitcher();
1919

20-
$("#menu1, #menu2").menu({
21-
select: function(event, ui) {
22-
$("<div/>").text("Selected: " + ui.item.text()).appendTo("#log");
23-
}
24-
});
20+
function create() {
21+
menus.menu({
22+
select: function(event, ui) {
23+
$("<div/>").text("Selected: " + ui.item.text()).appendTo("#log");
24+
}
25+
});
26+
}
27+
28+
var menus = $("#menu1, #menu2");
29+
create();
2530

31+
$("#toggle-destroy").toggle(function() {
32+
menus.menu("destroy");
33+
}, create);
34+
$("#toggle-disable").toggle(function() {
35+
menus.menu("disable");
36+
}, function() {
37+
menus.menu("enable");
38+
});
2639
});
2740
</script>
2841
<style>
@@ -87,5 +100,8 @@
87100
<div id="log" style="height: 400px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
88101
</div>
89102

103+
<button id="toggle-disable">Disable / Enable</button>
104+
<button id="toggle-destroy">Destroy / Create</button>
105+
90106
</body>
91107
</html>

ui/jquery.ui.menu.js

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ $.widget("ui.menu", {
2323
"aria-activedescendant": "ui-active-menuitem"
2424
})
2525
.click(function( event ) {
26+
if (self.options.disabled) {
27+
return false;
28+
}
2629
if ( !$( event.target ).closest( ".ui-menu-item a" ).length ) {
2730
return;
2831
}
@@ -36,6 +39,9 @@ $.widget("ui.menu", {
3639
this.options.input = this.element.attr("tabindex", 0);
3740
}
3841
this.options.input.bind("keydown.menu", function(event) {
42+
if (self.options.disabled) {
43+
return;
44+
}
3945
switch (event.keyCode) {
4046
case $.ui.keyCode.PAGE_UP:
4147
self.previousPage();
@@ -67,8 +73,21 @@ $.widget("ui.menu", {
6773
},
6874

6975
destroy: function() {
70-
// TODO implement destroy
71-
$.Widget.prototype.apply(this, arguments);
76+
$.Widget.prototype.destroy.apply(this, arguments);
77+
78+
this.element
79+
.removeClass("ui-menu ui-widget ui-widget-content ui-corner-all")
80+
.removeAttr("tabindex")
81+
.removeAttr("role")
82+
.removeAttr("aria-activedescendant");
83+
84+
this.element.children(".ui-menu-item")
85+
.removeClass("ui-menu-item")
86+
.removeAttr("role")
87+
.children("a")
88+
.removeClass("ui-corner-all")
89+
.removeAttr("tabindex")
90+
.unbind(".menu");
7291
},
7392

7493
refresh: function() {
@@ -83,10 +102,16 @@ $.widget("ui.menu", {
83102
.addClass("ui-corner-all")
84103
.attr("tabindex", -1)
85104
// mouseenter doesn't work with event delegation
86-
.mouseenter(function( event ) {
105+
.bind("mouseenter.menu", function( event ) {
106+
if (self.options.disabled) {
107+
return;
108+
}
87109
self.activate( event, $(this).parent() );
88110
})
89-
.mouseleave(function() {
111+
.bind("mouseleave.menu", function() {
112+
if (self.options.disabled) {
113+
return;
114+
}
90115
self.deactivate();
91116
});
92117
},

0 commit comments

Comments
 (0)