Skip to content

Commit 04d9900

Browse files
committed
Selectmenu: minor improvements and cleanup
1 parent 08de75c commit 04d9900

File tree

1 file changed

+19
-23
lines changed

1 file changed

+19
-23
lines changed

ui/jquery.ui.selectmenu.js

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ $.widget( "ui.selectmenu", {
105105
if ( this.options.dropdown ) {
106106
var setWidth = this.button.outerWidth();
107107
} else {
108-
var text = this.button.find( "span.ui-button-text");
109-
var setWidth = text.width() + parseFloat( text.css( "padding-left" ) ) || 0 + parseFloat( text.css( "margin-left" ) || 0 );
108+
var text = this.button.find( "span.ui-button-text"),
109+
setWidth = text.width() + parseFloat( text.css( "padding-left" ) ) || 0 + parseFloat( text.css( "margin-left" ) || 0 );
110110
}
111111

112112
// wrap menu
@@ -119,8 +119,7 @@ $.widget( "ui.selectmenu", {
119119
// init menu widget
120120
this.menu.menu({
121121
select: function( event, ui ) {
122-
var flag = false,
123-
item = ui.item.data( "item.selectmenu" ),
122+
var item = ui.item.data( "item.selectmenu" ),
124123
oldIndex = that.element[0].selectedIndex;
125124

126125
that._setIndex( item.index );
@@ -147,6 +146,9 @@ $.widget( "ui.selectmenu", {
147146
})
148147
// change ARIA role
149148
.attr( 'role', 'menubox' );
149+
150+
// change menu styles?
151+
this._setOption( "dropdown", this.options.dropdown );
150152

151153
// document click closes menu
152154
this._bind( document, {
@@ -172,9 +174,6 @@ $.widget( "ui.selectmenu", {
172174
this.menu.find( "li" ).not( '.ui-selectmenu-optgroup' ).find( 'a' ).attr( 'role', 'option' );
173175
this.menu.attr( "aria-activedescendant" , this.menu.find( "li.ui-menu-item a" ).eq( this.element[0].selectedIndex ).attr( "id" ) );
174176

175-
// change styles?
176-
this._setOption( "dropdown", this.options.dropdown );
177-
178177
// transfer disabled state
179178
if ( this.element.attr( 'disabled' ) ) {
180179
this.disable();
@@ -184,14 +183,10 @@ $.widget( "ui.selectmenu", {
184183
},
185184

186185
open: function( event ) {
187-
var currentItem = this._getSelectedItem();
188-
189186
if ( !this.options.disabled ) {
190-
if ( this.options.dropdown ) {
191-
this.button
192-
.addClass( 'ui-corner-top' )
193-
.removeClass( 'ui-corner-all' );
194-
}
187+
var currentItem = this._getSelectedItem();
188+
189+
this._toggleButtonStyle();
195190

196191
this.menuWrap.addClass( 'ui-selectmenu-open' );
197192
this.menu.attr("aria-hidden", false);
@@ -203,12 +198,11 @@ $.widget( "ui.selectmenu", {
203198
}, 1);
204199

205200
if ( !this.options.dropdown ) {
206-
// calculate offset
207-
var _offset = ( this.menu.offset().top - currentItem.offset().top + ( this.button.outerHeight() - currentItem.outerHeight() ) / 2);
208201
$.extend( this.options.position, {
209202
my: "left top",
210203
at: "left top",
211-
offset: "0 " + _offset
204+
// calculate offset
205+
offset: "0 " + ( this.menu.offset().top - currentItem.offset().top + ( this.button.outerHeight() - currentItem.outerHeight() ) / 2 )
212206
});
213207
}
214208

@@ -225,11 +219,7 @@ $.widget( "ui.selectmenu", {
225219

226220
close: function( event, focus ) {
227221
if ( this.isOpen ) {
228-
if ( this.options.dropdown ) {
229-
this.button
230-
.addClass( 'ui-corner-all' )
231-
.removeClass( 'ui-corner-top' );
232-
}
222+
this._toggleButtonStyle();
233223

234224
this.menuWrap.removeClass( 'ui-selectmenu-open' );
235225
this.menu.attr("aria-hidden", true);
@@ -309,8 +299,8 @@ $.widget( "ui.selectmenu", {
309299
},
310300

311301
_buttonEvents: {
312-
// init Menu on first focus
313302
focus: function( event ) {
303+
// init Menu on first focus
314304
this.refresh();
315305
this.button.unbind( "focus." + this.widgetName )
316306
},
@@ -399,6 +389,12 @@ $.widget( "ui.selectmenu", {
399389
}
400390
}
401391
},
392+
393+
_toggleButtonStyle: function() {
394+
if ( this.options.dropdown ) {
395+
this.button.toggleClass( 'ui-corner-top', !this.isOpen ).toggleClass( 'ui-corner-all', this.isOpen );
396+
}
397+
},
402398

403399
_readOptions: function() {
404400
var data = [];

0 commit comments

Comments
 (0)