|
30 | 30 | factory( jQuery );
|
31 | 31 | }
|
32 | 32 | }( function( $ ) {
|
| 33 | +var removeClassRegex = /ui-corner-([a-z]){2,6}/g; |
33 | 34 |
|
34 | 35 | return $.widget( "ui.controlgroup", {
|
35 | 36 | version: "@VERSION",
|
@@ -107,15 +108,20 @@ return $.widget( "ui.controlgroup", {
|
107 | 108 |
|
108 | 109 | // Find instances of this widget inside controlgroup and init them
|
109 | 110 | that.element
|
110 |
| - .find( selector )[ widget ]( options ) |
| 111 | + .find( selector ) |
111 | 112 | .each( function() {
|
112 | 113 | var element = $( this );
|
| 114 | + var instance = element[ widget ]( "instance" ); |
| 115 | + if ( instance ) { |
| 116 | + options.classes = that._resolveClassesValues( options.classes, instance ); |
| 117 | + } |
| 118 | + element[ widget ]( options ); |
113 | 119 |
|
114 | 120 | // Store an instance of the controlgroup to be able to reference
|
115 | 121 | // from the outermost element for changing options and refresh
|
116 | 122 | var widgetElement = element[ widget ]( "widget" );
|
117 | 123 | $.data( widgetElement[ 0 ], "ui-controlgroup-data",
|
118 |
| - element[ widget ]( "instance" ) ); |
| 124 | + instance ? instance : element[ widget ]( "instance" ) ); |
119 | 125 |
|
120 | 126 | childWidgets.push( widgetElement[ 0 ] );
|
121 | 127 | } );
|
@@ -149,7 +155,7 @@ return $.widget( "ui.controlgroup", {
|
149 | 155 | classes: {}
|
150 | 156 | };
|
151 | 157 | result.classes[ key ] = {
|
152 |
| - "middle": null, |
| 158 | + "middle": "", |
153 | 159 | "first": "ui-corner-" + ( direction ? "top" : "left" ),
|
154 | 160 | "last": "ui-corner-" + ( direction ? "bottom" : "right" )
|
155 | 161 | }[ position ];
|
@@ -180,22 +186,31 @@ return $.widget( "ui.controlgroup", {
|
180 | 186 | width: direction ? "auto" : false,
|
181 | 187 | classes: {
|
182 | 188 | middle: {
|
183 |
| - "ui-selectmenu-button-open": null, |
184 |
| - "ui-selectmenu-button-closed": null |
| 189 | + "ui-selectmenu-button-open": "", |
| 190 | + "ui-selectmenu-button-closed": "" |
185 | 191 | },
|
186 | 192 | first: {
|
187 | 193 | "ui-selectmenu-button-open": "ui-corner-" + ( direction ? "top" : "tl" ),
|
188 | 194 | "ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "top" : "left" )
|
189 | 195 | },
|
190 | 196 | last: {
|
191 |
| - "ui-selectmenu-button-open": direction ? null : "ui-corner-tr", |
| 197 | + "ui-selectmenu-button-open": direction ? "" : "ui-corner-tr", |
192 | 198 | "ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "bottom" : "right" )
|
193 | 199 | }
|
194 | 200 |
|
195 | 201 | }[ position ]
|
196 | 202 | };
|
197 | 203 | },
|
198 | 204 |
|
| 205 | + _resolveClassesValues: function( classes, instance ) { |
| 206 | + $.each( classes, function( key ) { |
| 207 | + var current = instance.options.classes[ key ] || ""; |
| 208 | + current = current.replace( removeClassRegex, "" ).trim(); |
| 209 | + classes[ key ] = ( current + " " + classes[ key ] ).replace( / +/g, " " ); |
| 210 | + } ); |
| 211 | + return classes; |
| 212 | + }, |
| 213 | + |
199 | 214 | _setOption: function( key, value ) {
|
200 | 215 | if ( key === "direction" ) {
|
201 | 216 | this._removeClass( "ui-controlgroup-" + this.options.direction );
|
@@ -236,9 +251,10 @@ return $.widget( "ui.controlgroup", {
|
236 | 251 | var instance = children[ value ]().data( "ui-controlgroup-data" );
|
237 | 252 |
|
238 | 253 | if ( instance && that[ "_" + instance.widgetName + "Options" ] ) {
|
239 |
| - instance.element[ instance.widgetName ]( |
240 |
| - that[ "_" + instance.widgetName + "Options" ]( value ) |
241 |
| - ); |
| 254 | + var options = that[ "_" + instance.widgetName + "Options" ]( value ); |
| 255 | + |
| 256 | + options.classes = that._resolveClassesValues( options.classes, instance ); |
| 257 | + instance.element[ instance.widgetName ]( options ); |
242 | 258 | } else {
|
243 | 259 | that._updateCornerClass( children[ value ](), value );
|
244 | 260 | }
|
|
0 commit comments