Skip to content

Commit 52307eb

Browse files
committed
Menu: More precise removal of ui-state-active class for easier CSS overrides. Fixes #9532 - Need a way in Menu to keep ui-state-active class on selected item
1 parent 14065dc commit 52307eb

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

tests/unit/menu/menu_core.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,17 @@ asyncTest( "#9044: Autofocus issue with dialog opened from menu widget", functio
4545
});
4646
});
4747

48+
asyncTest( "#9532: Need a way in Menu to keep ui-state-active class on selected item for Selectmenu", function() {
49+
expect( 1 );
50+
var element = $( "#menu1" ).menu(),
51+
firstChild = element.children().eq( 0 );
52+
53+
element.menu( "focus", null, firstChild );
54+
firstChild.addClass( "ui-state-active" );
55+
setTimeout( function() {
56+
ok( firstChild.is( ".ui-state-active" ), "ui-state-active improperly removed" );
57+
start();
58+
}, 500 );
59+
});
60+
4861
})( jQuery );

ui/jquery.ui.menu.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ $.widget( "ui.menu", {
371371
this._scrollIntoView( item );
372372

373373
this.active = item.first();
374-
focused = this.active.addClass( "ui-state-focus" );
374+
focused = this.active.addClass( "ui-state-focus" ).removeClass( "ui-state-active" );
375375
// Only update aria-activedescendant if there's a role
376376
// otherwise we assume focus is managed elsewhere
377377
if ( this.options.role ) {
@@ -498,7 +498,7 @@ $.widget( "ui.menu", {
498498
.attr( "aria-hidden", "true" )
499499
.attr( "aria-expanded", "false" )
500500
.end()
501-
.find( ".ui-state-active" )
501+
.find( ".ui-state-active" ).not( ".ui-state-focus" )
502502
.removeClass( "ui-state-active" );
503503
},
504504

0 commit comments

Comments
 (0)