From 52307ebadbca3f403549140e1d34f08bc07bf8ce Mon Sep 17 00:00:00 2001 From: Kris Borchers Date: Thu, 17 Oct 2013 23:07:39 -0500 Subject: [PATCH] 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 --- tests/unit/menu/menu_core.js | 13 +++++++++++++ ui/jquery.ui.menu.js | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/tests/unit/menu/menu_core.js b/tests/unit/menu/menu_core.js index 923d2961e..df039c9e4 100644 --- a/tests/unit/menu/menu_core.js +++ b/tests/unit/menu/menu_core.js @@ -45,4 +45,17 @@ asyncTest( "#9044: Autofocus issue with dialog opened from menu widget", functio }); }); +asyncTest( "#9532: Need a way in Menu to keep ui-state-active class on selected item for Selectmenu", function() { + expect( 1 ); + var element = $( "#menu1" ).menu(), + firstChild = element.children().eq( 0 ); + + element.menu( "focus", null, firstChild ); + firstChild.addClass( "ui-state-active" ); + setTimeout( function() { + ok( firstChild.is( ".ui-state-active" ), "ui-state-active improperly removed" ); + start(); + }, 500 ); +}); + })( jQuery ); diff --git a/ui/jquery.ui.menu.js b/ui/jquery.ui.menu.js index 059f80b30..b0ff38894 100644 --- a/ui/jquery.ui.menu.js +++ b/ui/jquery.ui.menu.js @@ -371,7 +371,7 @@ $.widget( "ui.menu", { this._scrollIntoView( item ); this.active = item.first(); - focused = this.active.addClass( "ui-state-focus" ); + focused = this.active.addClass( "ui-state-focus" ).removeClass( "ui-state-active" ); // Only update aria-activedescendant if there's a role // otherwise we assume focus is managed elsewhere if ( this.options.role ) { @@ -498,7 +498,7 @@ $.widget( "ui.menu", { .attr( "aria-hidden", "true" ) .attr( "aria-expanded", "false" ) .end() - .find( ".ui-state-active" ) + .find( ".ui-state-active" ).not( ".ui-state-focus" ) .removeClass( "ui-state-active" ); }, -- 2.39.5