Skip to content

Commit 8a79fc8

Browse files
committed
Controlgroup: Add "only" position to class generator functions
Fixes #14972 Closes jquerygh-1711
1 parent 3c860f9 commit 8a79fc8

File tree

3 files changed

+80
-3
lines changed

3 files changed

+80
-3
lines changed

tests/unit/controlgroup/controlgroup.html

+10
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,16 @@
5858
<label class="ui-controlgroup-label">Label</label>
5959
<button>Button with icon on the bottom</button>
6060
</div>
61+
<div class="controlgroup-single-select">
62+
<select id="select-single">
63+
<option>Fast</option>
64+
<option>Medium</option>
65+
<option>Slow</option>
66+
</select>
67+
</div>
68+
<div class="controlgroup-single-button">
69+
<button class="single-button">button</button>
70+
</div>
6171
</div>
6272
</body>
6373
</html>

tests/unit/controlgroup/core.js

+60
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,64 @@ QUnit.test( "_resolveClassesValues", function( assert ) {
100100
assertSanatized( assert, "bar", "bar", "No corner classes" );
101101
} );
102102

103+
QUnit.test( "Single controlgroup select - horizontal", function( assert ) {
104+
assert.expect( 4 );
105+
var group = $( ".controlgroup-single-select" ).controlgroup();
106+
var select = group.find( ".ui-selectmenu-button" );
107+
108+
assert.hasClasses( select, "ui-corner-all" );
109+
assert.lacksClasses( select,
110+
"ui-corner-left ui-corner-right ui-corner-top ui-corner-left" +
111+
" ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" );
112+
113+
group.find( "select" ).selectmenu( "open" );
114+
assert.hasClasses( select, "ui-corner-top" );
115+
assert.lacksClasses( select,
116+
"ui-corner-left ui-corner-right ui-corner-all ui-corner-left" +
117+
" ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" );
118+
} );
119+
120+
QUnit.test( "Single controlgroup select - vertical", function( assert ) {
121+
assert.expect( 4 );
122+
var group = $( ".controlgroup-single-select" ).controlgroup( {
123+
direction: "verticle"
124+
} );
125+
var select = group.find( ".ui-selectmenu-button" );
126+
127+
assert.hasClasses( select, "ui-corner-all" );
128+
assert.lacksClasses( select,
129+
"ui-corner-left ui-corner-right ui-corner-top ui-corner-left" +
130+
" ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" );
131+
132+
group.find( "select" ).selectmenu( "open" );
133+
assert.hasClasses( select, "ui-corner-top" );
134+
assert.lacksClasses( select,
135+
"ui-corner-left ui-corner-right ui-corner-all ui-corner-left" +
136+
" ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" );
137+
} );
138+
139+
QUnit.test( "Single controlgroup button - horizontal", function( assert ) {
140+
assert.expect( 2 );
141+
var group = $( ".controlgroup-single-button" ).controlgroup();
142+
var button = group.find( "button" );
143+
144+
assert.hasClasses( button, "ui-corner-all" );
145+
assert.lacksClasses( button,
146+
"ui-corner-left ui-corner-right ui-corner-top ui-corner-left" +
147+
" ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" );
148+
} );
149+
150+
QUnit.test( "Single controlgroup button - vertical", function( assert ) {
151+
assert.expect( 2 );
152+
var group = $( ".controlgroup-single-button" ).controlgroup( {
153+
direction: "verticle"
154+
} );
155+
var button = group.find( "button" );
156+
157+
assert.hasClasses( button, "ui-corner-all" );
158+
assert.lacksClasses( button,
159+
"ui-corner-left ui-corner-right ui-corner-top ui-corner-left" +
160+
" ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" );
161+
} );
162+
103163
} );

ui/widgets/controlgroup.js

+10-3
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ return $.widget( "ui.controlgroup", {
152152
},
153153

154154
_updateCornerClass: function( element, position ) {
155-
var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right";
155+
var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all";
156156
var add = this._buildSimpleOptions( position, "label" ).classes.label;
157157

158158
this._removeClass( element, null, remove );
@@ -167,7 +167,8 @@ return $.widget( "ui.controlgroup", {
167167
result.classes[ key ] = {
168168
"middle": "",
169169
"first": "ui-corner-" + ( direction ? "top" : "left" ),
170-
"last": "ui-corner-" + ( direction ? "bottom" : "right" )
170+
"last": "ui-corner-" + ( direction ? "bottom" : "right" ),
171+
"only": "ui-corner-all"
171172
}[ position ];
172173

173174
return result;
@@ -206,6 +207,10 @@ return $.widget( "ui.controlgroup", {
206207
last: {
207208
"ui-selectmenu-button-open": direction ? "" : "ui-corner-tr",
208209
"ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "bottom" : "right" )
210+
},
211+
only: {
212+
"ui-selectmenu-button-open": "ui-corner-top",
213+
"ui-selectmenu-button-closed": "ui-corner-all"
209214
}
210215

211216
}[ position ]
@@ -261,7 +266,9 @@ return $.widget( "ui.controlgroup", {
261266
var instance = children[ value ]().data( "ui-controlgroup-data" );
262267

263268
if ( instance && that[ "_" + instance.widgetName + "Options" ] ) {
264-
var options = that[ "_" + instance.widgetName + "Options" ]( value );
269+
var options = that[ "_" + instance.widgetName + "Options" ](
270+
children.length === 1 ? "only" : value
271+
);
265272
options.classes = that._resolveClassesValues( options.classes, instance );
266273
instance.element[ instance.widgetName ]( options );
267274
} else {

0 commit comments

Comments
 (0)