Skip to content

Commit 8224c67

Browse files
kborchersgnarf
authored andcommitted
Menu: Passed the original event that causes a blur through collapseAll to blur, then trigger a blur on the menu. Fixes failing unit test provided by @rwaldron which has been included in this commit
1 parent c8a11ce commit 8224c67

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

tests/unit/menu/menu_events.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,25 @@ test("handle click on menu", function() {
2121
equals( $("#log").html(), "1,3,2,afterclick,1,click,", "Click order not valid.");
2222
});
2323

24+
test( "handle blur: click", function() {
25+
expect( 4 );
26+
var $menu = $( "#menu1" ).menu({
27+
focus: function( event, ui ) {
28+
equal( event.originalEvent.type, "click", "focus triggered 'click'" );
29+
equal( event.type, "menufocus", "focus event.type is 'menufocus'" );
30+
31+
},
32+
blur: function( event, ui ) {
33+
console.log( event, ui );
34+
equal( event.originalEvent.type, "click", "blur triggered 'click'" );
35+
equal( event.type, "menublur", "blur event.type is 'menublur'" );
36+
}
37+
});
38+
39+
$menu.find( "li a:first" ).trigger( "click" );
40+
$( "<a/>", { id: "remove"} ).appendTo("body").trigger( "click" );
41+
42+
$("#remove").remove();
43+
});
44+
2445
})(jQuery);

ui/jquery.ui.menu.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ $.widget( "ui.menu", {
176176
this._bind( document, {
177177
click: function( event ) {
178178
if ( !$( event.target ).closest( ".ui-menu" ).length ) {
179-
this.collapseAll();
179+
this.collapseAll( event );
180180
}
181181
}
182182
});
@@ -249,7 +249,7 @@ $.widget( "ui.menu", {
249249
var nested,
250250
self = this;
251251

252-
this.blur();
252+
this.blur( event );
253253

254254
if ( this._hasScroll() ) {
255255
var borderTop = parseFloat( $.curCSS( this.element[0], "borderTopWidth", true ) ) || 0,
@@ -297,6 +297,8 @@ $.widget( "ui.menu", {
297297

298298
this.active.children( "a" ).removeClass( "ui-state-focus" );
299299
this.active = null;
300+
301+
this._trigger( "blur", event, { item: this.active } );
300302
},
301303

302304
_startOpening: function( submenu ) {
@@ -336,7 +338,7 @@ $.widget( "ui.menu", {
336338
.position( position );
337339
},
338340

339-
collapseAll: function() {
341+
collapseAll: function( event ) {
340342
this.element
341343
.find( "ul" )
342344
.hide()
@@ -346,7 +348,7 @@ $.widget( "ui.menu", {
346348
.find( "a.ui-state-active" )
347349
.removeClass( "ui-state-active" );
348350

349-
this.blur();
351+
this.blur( event );
350352
this.activeMenu = this.element;
351353
},
352354

@@ -470,7 +472,7 @@ $.widget( "ui.menu", {
470472
var ui = {
471473
item: this.active
472474
};
473-
this.collapseAll();
475+
this.collapseAll( event );
474476
this._trigger( "select", event, ui );
475477
}
476478
});

0 commit comments

Comments
 (0)