Skip to content

Commit 2e7a1e1

Browse files
committed
Controlgroup: add classes option
1 parent 66ced30 commit 2e7a1e1

File tree

4 files changed

+59
-50
lines changed

4 files changed

+59
-50
lines changed

demos/checkboxradio/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<ul>
1111
<li><a href="default.html">Default functionality</a></li>
1212
<li><a href="icons.html">Icons</a></li>
13+
<li><a href="product-selector.html">Product Selector</a></li>
1314
</ul>
1415

1516
</body>

themes/base/button.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
/* to make room for the icon, a width needs to be set here */
3131
.ui-button-icon-only {
3232
padding: 0;
33-
height: 2.1em;
33+
height: 2.16em;
3434
text-indent: -9999px;
3535
white-space: nowrap;
3636
}

themes/base/controlgroup.css

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@
1111

1212

1313
.ui-controlgroup > .ui-button {
14-
margin-left: -2px;
15-
margin-right: -1px;
14+
margin-left: -.14em;
15+
margin-right: -.14em;
1616
}
1717
.ui-controlgroup.ui-controlgroup-vertical > .ui-button {
1818
display: block;
1919
width: 100%;
20-
margin-top: -1px;
21-
margin-bottom: -1px;
20+
margin-top: 0em;
21+
margin-bottom: 0em;
2222
text-align: left;
2323
}
2424
.ui-controlgroup-vertical label.ui-button {

ui/controlgroup.js

Lines changed: 53 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -35,50 +35,16 @@ $.widget( "ui.controlgroup", {
3535
"selectmenu": "select"
3636
},
3737
direction: "horizontal",
38-
excludeInvisible: true
39-
},
40-
41-
_create: function() {
42-
this._enhance();
43-
this._on( this.element, {
44-
"selectmenuopen": "_handleSelectmenuOpen",
45-
"selectmenuclose": "_handleSelectmenuClose"
46-
});
47-
},
48-
49-
_handleSelectmenuOpen: function( event ) {
50-
var target = $( event.target ),
51-
widget = target.selectmenu ( "widget" ),
52-
vertical = this.options.direction === "vertical";
53-
if ( widget[ 0 ] !== this.first[ 0 ] || !vertical ) {
54-
widget.removeClass( "ui-corner-top" );
55-
}
56-
if ( vertical && widget[ 0 ] === this.last[ 0 ] ) {
57-
widget.removeClass( "ui-corner-bottom" );
58-
}
59-
if ( widget[ 0 ] === this.first[ 0 ] ) {
60-
widget.removeClass( "ui-corner-left" )
61-
.addClass( "ui-corner-" + ( vertical ? "top" : "tl" ) );
62-
}
63-
if ( widget[ 0 ] === this.last[ 0 ] ) {
64-
widget.removeClass( "ui-corner-right" )
65-
.addClass( vertical ? "" : "ui-corner-tr" );
38+
excludeInvisible: true,
39+
classes: {
40+
"ui-controlgroup": null,
41+
"ui-controlgroup-horizontal": null,
42+
"ui-controlgroup-vertical": null
6643
}
6744
},
6845

69-
_handleSelectmenuClose: function( event ) {
70-
var target = $( event.target ),
71-
widget = target.selectmenu ( "widget" ),
72-
vertical = this.options.direction === "vertical";
73-
widget.removeClass( "ui-corner-all" );
74-
if ( widget[ 0 ] === this.first[ 0 ] ) {
75-
widget.removeClass( "ui-corner-left" )
76-
.addClass( "ui-corner-" + ( vertical ? "top" : "left" ) );
77-
}
78-
if ( widget[ 0 ] === this.last[ 0 ] ) {
79-
widget.removeClass( "ui-corner-right" )
80-
.addClass( vertical ? "ui-corner-bottom" : "ui-corner-right" );
81-
}
46+
_create: function() {
47+
this._enhance();;
8248
},
8349

8450
_enhance: function() {
@@ -89,16 +55,37 @@ $.widget( "ui.controlgroup", {
8955
_destroy: function() {
9056
this._callChildMethod( "destroy" );
9157
this.element.removeAttr( "role" );
92-
this.element.removeClass( "ui-controlgroup ui-selectmenu-vertical ui-controlgroup-horizontal" )
58+
this.element.removeClass( "ui-controlgroup ui-controlgroup-vertical ui-controlgroup-horizontal" )
9359
.children().removeClass( "ui-corner-all ui-corner-top" +
9460
" ui-corner-bottom ui-corner-left ui-corner-tl ui-corner-tr" );
9561
},
9662

9763
_callChildMethod: function( method, filter ) {
9864
var that = this;
9965
$.each( this.options.items, function( widget, selector ) {
66+
var options = {};
67+
switch ( widget ) {
68+
case "button":
69+
options.classes = {
70+
"ui-button": null
71+
};
72+
break;
73+
case "checkboxradio":
74+
options.classes = {
75+
"ui-checkbox-label": null,
76+
"ui-radio-label": null
77+
};
78+
break;
79+
case "selectmenu":
80+
options.classes = {
81+
"ui-selectmenu-button-open": null,
82+
"ui-selectmenu-button-closed": null
83+
};
84+
break;
85+
}
10086
if ( $.fn[ widget ] && selector ) {
101-
that.element.children( selector ).not( filter )[ widget ]( method );
87+
that.element.children( selector ).not( filter )[ widget ]( method ?
88+
method: options );
10289
}
10390
});
10491
},
@@ -120,7 +107,9 @@ $.widget( "ui.controlgroup", {
120107
},
121108

122109
refresh: function() {
123-
var vertical = ( this.options.direction === "vertical" );
110+
var firstClasses = {},
111+
lastClasses = {},
112+
vertical = ( this.options.direction === "vertical" );
124113
this.element.addClass( "ui-controlgroup ui-controlgroup-" + this.options.direction );
125114
this._callChildMethod( undefined );
126115
this.visible = this.element.children( ".ui-button" ).removeClass( function(index, css) {
@@ -131,7 +120,26 @@ $.widget( "ui.controlgroup", {
131120
.addClass( "ui-corner-" + ( vertical ? "top" : "left" ) );
132121
this.last = this.visible.filter( ":last" )
133122
.addClass( "ui-corner-" + ( vertical ? "bottom" : "right" ) );
134-
this.element.find( this.options.items.selectmenu ).selectmenu( "refresh" );
123+
if( $.ui.selectmenu ) {
124+
if ( this.first.is( ".ui-selectmenu-button" ) && !vertical ) {
125+
firstClasses[ "ui-selectmenu-button-open" ] = "ui-corner-tl";
126+
firstClasses[ "ui-selectmenu-button-closed" ] = "ui-corner-left";
127+
$( "#" + this.first.attr( "id" ).replace( /-button/, "" ) )
128+
.selectmenu( "option", "classes", firstClasses );
129+
}
130+
if ( this.last.is( ".ui-selectmenu-button" ) ) {
131+
if ( vertical ) {
132+
lastClasses[ "ui-selectmenu-button-open" ] = null;
133+
lastClasses[ "ui-selectmenu-button-closed" ] = "ui-corner-bottom"
134+
} else {
135+
lastClasses[ "ui-selectmenu-button-open" ] = "ui-corner-tr";
136+
lastClasses[ "ui-selectmenu-button-closed" ] = "ui-corner-right";
137+
}
138+
$( "#" + this.last.attr( "id" ).replace( /-button/, "" ) )
139+
.selectmenu( "option", "classes", lastClasses );
140+
}
141+
this.element.find( this.options.items.selectmenu ).selectmenu( "refresh" );
142+
}
135143
this._callChildMethod( "refresh" );
136144

137145
}

0 commit comments

Comments
 (0)