Skip to content

Commit dc93b3f

Browse files
petersendiditarschmitz
authored andcommitted
Selectmenu: use the _classes method.
Fixes #7053
1 parent 3d89401 commit dc93b3f

File tree

3 files changed

+47
-12
lines changed

3 files changed

+47
-12
lines changed

tests/unit/selectmenu/selectmenu_common.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
TestHelpers.commonWidgetTests( "selectmenu", {
22
defaults: {
33
appendTo: null,
4+
classes: {
5+
"ui-selectmenu-button": "",
6+
"ui-selectmenu-button-open": "ui-corner-top",
7+
"ui-selectmenu-button-closed": "ui-corner-all",
8+
"ui-selectmenu-text": null,
9+
"ui-selectmenu-menu": null,
10+
"ui-selectmenu-optgroup": null,
11+
"ui-selectmenu-open": null
12+
},
413
disabled: null,
514
icons: {
615
button: "ui-icon-triangle-1-s"

tests/unit/selectmenu/selectmenu_core.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,24 @@
22

33
module( "selectmenu: core" );
44

5+
test( "markup structure", function() {
6+
var element = $( "#files" ).selectmenu(),
7+
button = element.selectmenu( "widget" ),
8+
menu = element.selectmenu( "menuWidget" ),
9+
menuWrap = menu.parent();
10+
11+
expect( 7 );
12+
13+
ok( button.hasClass( "ui-selectmenu-button" ), "button is .ui-selectmenu-button" );
14+
ok( button.hasClass( "ui-selectmenu-button-closed" ), "button is .ui-selectmenu-button-closed" );
15+
ok( !button.hasClass( "ui-selectmenu-button-open" ), "button is not .ui-selectmenu-button-open" );
16+
ok( button.hasClass( "ui-widget" ), "button is .ui-widget" );
17+
ok( button.hasClass( "ui-state-default" ), "button is .ui-state-default" );
18+
19+
ok( menuWrap.hasClass( "ui-selectmenu-menu" ), "menu is .ui-selectmenu-menu" );
20+
ok( !menuWrap.hasClass( "ui-selectmenu-menu-open" ), "menu is not .ui-selectmenu-menu-open" );
21+
});
22+
523
asyncTest( "accessibility", function() {
624
var wrappers, button, menu,
725
element = $( "#speed" ).attr( "title", "A demo title" );

ui/selectmenu.js

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,15 @@ return $.widget( "ui.selectmenu", {
3131
defaultElement: "<select>",
3232
options: {
3333
appendTo: null,
34+
classes: {
35+
"ui-selectmenu-button": "",
36+
"ui-selectmenu-button-open": "ui-corner-top",
37+
"ui-selectmenu-button-closed": "ui-corner-all",
38+
"ui-selectmenu-text": null,
39+
"ui-selectmenu-menu": null,
40+
"ui-selectmenu-optgroup": null,
41+
"ui-selectmenu-open": null
42+
},
3443
disabled: null,
3544
icons: {
3645
button: "ui-icon-triangle-1-s"
@@ -87,7 +96,7 @@ return $.widget( "ui.selectmenu", {
8796

8897
// Create button
8998
this.button = $( "<span>", {
90-
"class": "ui-selectmenu-button ui-widget ui-state-default ui-corner-all",
99+
"class": this._classes( "ui-selectmenu-button ui-selectmenu-button-closed" ) + " ui-widget ui-state-default",
91100
tabindex: this.options.disabled ? -1 : 0,
92101
id: this.ids.button,
93102
role: "combobox",
@@ -134,14 +143,18 @@ return $.widget( "ui.selectmenu", {
134143

135144
// Wrap menu
136145
this.menuWrap = $( "<div>", {
137-
"class": "ui-selectmenu-menu ui-front"
146+
"class": this._classes( "ui-selectmenu-menu" ) + " ui-front"
138147
})
139148
.append( this.menu )
140149
.appendTo( this._appendTo() );
141150

142151
// Initialize menu widget
143152
this.menuInstance = this.menu
144153
.menu({
154+
// Adjust menu styles to dropdown
155+
classes: {
156+
"ui-menu": "ui-corner-bottom"
157+
},
145158
role: "listbox",
146159
select: function( event, ui ) {
147160
event.preventDefault();
@@ -171,11 +184,6 @@ return $.widget( "ui.selectmenu", {
171184
})
172185
.menu( "instance" );
173186

174-
// Adjust menu styles to dropdown
175-
this.menu
176-
.addClass( "ui-corner-bottom" )
177-
.removeClass( "ui-corner-all" );
178-
179187
// Don't close the menu on mouseleave
180188
this.menuInstance._off( this.menu, "mouseleave" );
181189

@@ -283,7 +291,7 @@ return $.widget( "ui.selectmenu", {
283291

284292
_renderButtonItem: function( item ) {
285293
var buttonItem = $( "<span>", {
286-
"class": "ui-selectmenu-text"
294+
"class": this._classes( "ui-selectmenu-text" )
287295
});
288296
this._setText( buttonItem, item.label );
289297

@@ -297,7 +305,7 @@ return $.widget( "ui.selectmenu", {
297305
$.each( items, function( index, item ) {
298306
if ( item.optgroup !== currentOptgroup ) {
299307
$( "<li>", {
300-
"class": "ui-selectmenu-optgroup ui-menu-divider" +
308+
"class": that._classes( "ui-selectmenu-optgroup" ) + " ui-menu-divider" +
301309
( item.element.parent( "optgroup" ).prop( "disabled" ) ?
302310
" ui-state-disabled" :
303311
"" ),
@@ -573,10 +581,10 @@ return $.widget( "ui.selectmenu", {
573581

574582
_toggleAttr: function() {
575583
this.button
576-
.toggleClass( "ui-corner-top", this.isOpen )
577-
.toggleClass( "ui-corner-all", !this.isOpen )
584+
.toggleClass( this._classes( "ui-selectmenu-button-open" ), this.isOpen )
585+
.toggleClass( this._classes( "ui-selectmenu-button-closed" ), !this.isOpen )
578586
.attr( "aria-expanded", this.isOpen );
579-
this.menuWrap.toggleClass( "ui-selectmenu-open", this.isOpen );
587+
this.menuWrap.toggleClass( this._classes( "ui-selectmenu-open" ), this.isOpen );
580588
this.menu.attr( "aria-hidden", !this.isOpen );
581589
},
582590

0 commit comments

Comments
 (0)