Skip to content

Commit 1272fca

Browse files
committed
Selectmenu: Don't use active items at all
Menus only use active items for nested menus which selectmenu doesn't support. Selectmenu should only be working with focused items. Ref jquerygh-1224
1 parent 1849655 commit 1272fca

File tree

2 files changed

+13
-23
lines changed

2 files changed

+13
-23
lines changed

tests/unit/selectmenu/selectmenu_core.js

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -185,36 +185,36 @@ $.each([
185185
});
186186

187187
asyncTest( "item focus and active state - " + settings.type, function () {
188-
expect( 8 );
188+
expect( 4 );
189189

190-
var element = $( settings.selector ).selectmenu(),
190+
var items, focusedItem, activeItem,
191+
element = $( settings.selector ).selectmenu(),
191192
button = element.selectmenu( "widget" ),
192-
menu = element.selectmenu( "menuWidget" ),
193-
links, focusedItem, activeItem;
193+
menu = element.selectmenu( "menuWidget" );
194194

195-
// init menu
195+
// Initialize menu
196196
button.simulate( "focus" );
197197

198198
setTimeout(function() {
199-
links = menu.find( "li.ui-menu-item" );
199+
items = menu.find( "li.ui-menu-item" );
200200

201201
button.trigger( "click" );
202202
setTimeout(function() {
203203
checkItemClasses();
204204

205-
links.eq( 3 ).simulate( "mouseover" ).trigger( "click" );
205+
items.eq( 3 ).simulate( "mouseover" ).trigger( "click" );
206206

207207
button.trigger( "click" );
208-
links.eq( 2 ).simulate( "mouseover" );
208+
items.eq( 2 ).simulate( "mouseover" );
209209
$( document ).trigger( "click" );
210210

211211
button.trigger( "click" );
212-
links.eq( 1 ).simulate( "mouseover" );
212+
items.eq( 1 ).simulate( "mouseover" );
213213
$( document ).trigger( "click" );
214214

215215
button.trigger( "click" );
216216
setTimeout(function() {
217-
checkItemClasses();
217+
checkItemClasses();
218218
start();
219219
}, 350 );
220220
}, 350 );
@@ -223,11 +223,7 @@ $.each([
223223
function checkItemClasses() {
224224
focusedItem = menu.find( "li.ui-state-focus" );
225225
equal( focusedItem.length, 1, "only one item has ui-state-focus class" );
226-
equal( focusedItem.attr( "id" ), links.eq( element[ 0 ].selectedIndex ).attr( "id" ), "selected item has ui-state-focus class" );
227-
228-
activeItem = menu.find( "li.ui-state-active" );
229-
equal( activeItem.length, 1, "only one item has ui-state-active class" );
230-
equal( activeItem.attr( "id" ), links.eq( element[ 0 ].selectedIndex ).attr( "id" ), "selected item has ui-state-active class" );
226+
equal( focusedItem.attr( "id" ), items.eq( element[ 0 ].selectedIndex ).attr( "id" ), "selected item has ui-state-focus class" );
231227
}
232228
});
233229

ui/selectmenu.js

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -223,11 +223,10 @@ return $.widget( "ui.selectmenu", {
223223
if ( !this.menuItems ) {
224224
this._refreshMenu();
225225
} else {
226-
// TODO: Why is this necessary?
227-
// Shouldn't the underlying menu always have accurate state?
226+
227+
// Menu clears focus on close, reset focus to selected item
228228
this.menu.find( ".ui-state-focus" ).removeClass( "ui-state-focus" );
229229
this.menuInstance.focus( null, this._getSelectedItem() );
230-
this.menuItems.eq( this.element[ 0 ].selectedIndex ).addClass( "ui-state-active" );
231230
}
232231

233232
this.isOpen = true;
@@ -252,11 +251,6 @@ return $.widget( "ui.selectmenu", {
252251
this.isOpen = false;
253252
this._toggleAttr();
254253

255-
// Check if we have an item to select
256-
if ( this.menuItems ) {
257-
this.menuInstance.active = this._getSelectedItem();
258-
}
259-
260254
this._off( this.document );
261255

262256
this._trigger( "close", event );

0 commit comments

Comments
 (0)