Skip to content

Commit a57413d

Browse files
committed
Selectmenu: Use button markup removing the text span
Fixes #14938
1 parent 7a0eff4 commit a57413d

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

themes/base/selectmenu.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@
3939
text-overflow: ellipsis;
4040
white-space: nowrap;
4141
width: 14em;
42+
padding-right: 2em;
4243
}
4344
.ui-selectmenu-icon.ui-icon {
4445
float: right;
4546
margin-top: 0;
47+
margin-right: -1em;
4648
}

ui/widgets/selectmenu.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,10 @@ return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
119119
this._addClass( this.button, "ui-selectmenu-button ui-selectmenu-button-closed",
120120
"ui-button ui-widget" );
121121

122-
this.buttonItem = this._renderButtonItem( item )
123-
.appendTo( this.button );
122+
this.setButtonText( item );
124123

125-
icon = $( "<span>" ).appendTo( this.button );
126-
this._addClass( icon, "ui-selectmenu-icon", "ui-icon " + this.options.icons.button );
124+
this.icon = $( "<span>" ).prependTo( this.button );
125+
this._addClass( this.icon, "ui-selectmenu-icon", "ui-icon " + this.options.icons.button );
127126

128127
if ( this.options.width !== false ) {
129128
this._resizeButton();
@@ -206,13 +205,8 @@ return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
206205

207206
refresh: function() {
208207
this._refreshMenu();
209-
this.buttonItem.replaceWith(
210-
this.buttonItem = this._renderButtonItem(
208+
this.setButtonText( this._getSelectedItem().data( "ui-selectmenu-item" ) || {} );
211209

212-
// Fall back to an empty object in case there are no options
213-
this._getSelectedItem().data( "ui-selectmenu-item" ) || {}
214-
)
215-
);
216210
if ( this.options.width === null ) {
217211
this._resizeButton();
218212
}
@@ -308,7 +302,6 @@ return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
308302
var buttonItem = $( "<span>" );
309303

310304
this._setText( buttonItem, item.label );
311-
this._addClass( buttonItem, "ui-selectmenu-text" );
312305

313306
return buttonItem;
314307
},
@@ -519,12 +512,19 @@ return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
519512
}
520513
},
521514

515+
setButtonText: function( item ) {
516+
this._setText( this.button, item.label );
517+
if ( this.icon ) {
518+
this.button.prepend( this.icon );
519+
}
520+
},
521+
522522
_select: function( item, event ) {
523523
var oldIndex = this.element[ 0 ].selectedIndex;
524524

525525
// Change native select element
526526
this.element[ 0 ].selectedIndex = item.index;
527-
this.buttonItem.replaceWith( this.buttonItem = this._renderButtonItem( item ) );
527+
this.setButtonText( item );
528528
this._setAria( item );
529529
this._trigger( "select", event, { item: item } );
530530

0 commit comments

Comments
 (0)