|
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