@@ -36,11 +36,7 @@ $.widget( "ui.controlgroup", {
36
36
} ,
37
37
direction : "horizontal" ,
38
38
excludeInvisible : true ,
39
- classes : {
40
- "ui-controlgroup" : "" ,
41
- "ui-controlgroup-horizontal" : "" ,
42
- "ui-controlgroup-vertical" : ""
43
- }
39
+ classes : { }
44
40
} ,
45
41
46
42
_create : function ( ) {
@@ -54,59 +50,87 @@ $.widget( "ui.controlgroup", {
54
50
} ,
55
51
56
52
_destroy : function ( ) {
53
+ var that = this ;
54
+ $ . each ( this . options . items , function ( widget , selector ) {
55
+ that . element . children ( selector ) . map ( function ( ) {
56
+ return $ ( this ) [ widget ] ( "widget" ) [ 0 ] ;
57
+ } ) . removeData ( "ui-controlgroup-data" ) ;
58
+ } ) ;
57
59
this . _callChildMethod ( "destroy" ) ;
58
60
this . element . removeAttr ( "role" ) ;
59
- this . element . removeClass (
60
- this . _classes ( "ui-controlgroup ui-controlgroup-vertical ui-controlgroup-horizontal" )
61
- ) . children ( ) . removeClass ( "ui-corner-all ui-corner-top" +
62
- " ui-corner-bottom ui-corner-left ui-corner-tl ui-corner-tr" ) ;
63
61
} ,
64
62
65
63
_callChildMethod : function ( method ) {
66
64
var that = this ;
67
65
$ . each ( this . options . items , function ( widget , selector ) {
68
66
var options = { } ;
69
67
if ( that [ "_" + widget + "_options" ] ) {
70
- options = that [ "_" + widget + "_options" ] ( ) ;
68
+ options = that [ "_" + widget + "_options" ] ( "middle" ) ;
71
69
}
72
70
if ( $ . fn [ widget ] && selector ) {
73
- that . element . children ( selector ) [ widget ] ( method ?
74
- method : options ) ;
71
+ that . element
72
+ . children ( selector ) [ widget ] ( method ? method : options )
73
+ . each ( function ( ) {
74
+ if ( method !== "destroy" ) {
75
+ $ ( this ) [ widget ] ( "widget" ) . data ( "ui-controlgroup-data" , {
76
+ "type" : widget ,
77
+ "element" : $ ( this )
78
+ } ) ;
79
+ }
80
+ } ) ;
75
81
}
76
82
} ) ;
77
83
} ,
78
84
79
- _button_options : function ( ) {
80
- return {
81
- classes : {
82
- "ui-button" : ""
83
- }
84
- } ;
85
- } ,
85
+ _button_options : function ( position ) {
86
+ var cornerClasses = {
87
+ "middle" : null ,
88
+ "first" : "ui-corner-" + ( ( this . options . direction === "vertical" ) ? "top" : "left" ) ,
89
+ "last" : "ui-corner-" + ( ( this . options . direction === "vertical" ) ? "bottom" : "right" )
90
+ } ;
86
91
87
- _checkboxradio_options : function ( ) {
88
92
return {
89
93
classes : {
90
- "ui-checkbox-label" : "" ,
91
- "ui-radio-label" : ""
94
+ "ui-button" : cornerClasses [ position ]
92
95
}
93
96
} ;
94
97
} ,
95
98
96
- _selectmenu_options : function ( ) {
99
+ _checkboxradio_options : function ( position ) {
100
+ var cornerClasses = {
101
+ "middle" : null ,
102
+ "first" : "ui-corner-" + ( ( this . options . direction === "vertical" ) ? "top" : "left" ) ,
103
+ "last" : "ui-corner-" + ( ( this . options . direction === "vertical" ) ? "bottom" : "right" )
104
+ } ;
105
+
97
106
return {
98
107
classes : {
99
- "ui-selectmenu-button-open" : "" ,
100
- "ui-selectmenu-button-closed" : ""
108
+ "ui-checkboxradio-label" : cornerClasses [ position ]
101
109
}
102
110
} ;
103
111
} ,
104
112
105
- _elementsFromClassKey : function ( classKey ) {
106
- if ( this . options . direction !== classKey . split ( "-" ) [ 2 ] ) {
107
- return $ ( ) ;
108
- }
109
- return this . _superApply ( arguments ) ;
113
+ _selectmenu_options : function ( position ) {
114
+ var classes = {
115
+ middle : {
116
+ "ui-selectmenu-button-open" : null ,
117
+ "ui-selectmenu-button-closed" : null
118
+ } ,
119
+ first : {
120
+ "ui-selectmenu-button-open" :
121
+ "ui-corner-" + ( ( this . options . direction === "vertical" ) ? "top" : "tl" ) ,
122
+ "ui-selectmenu-button-closed" :
123
+ "ui-corner-" + ( ( this . options . direction === "vertical" ) ? "top" : "left" )
124
+ } ,
125
+ last : {
126
+ "ui-selectmenu-button-open" :
127
+ ( this . options . direction === "vertical" ) ? null : "ui-corner-tr" ,
128
+ "ui-selectmenu-button-closed" :
129
+ "ui-corner-" + ( ( this . options . direction === "vertical" ) ? "bottom" : "right" )
130
+ }
131
+
132
+ } ;
133
+ return { classes : classes [ position ] } ;
110
134
} ,
111
135
112
136
_setOption : function ( key , value ) {
@@ -124,55 +148,24 @@ $.widget( "ui.controlgroup", {
124
148
125
149
} ,
126
150
127
- _refresh_selectmenu : function ( ) {
128
- var firstClasses = { } ,
129
- lastClasses = { } ,
130
- vertical = ( this . options . direction === "vertical" ) ;
131
-
132
- if ( $ . ui . selectmenu ) {
133
- if ( this . first . is ( ".ui-selectmenu-button" ) && ! vertical ) {
134
- firstClasses [ "ui-selectmenu-button-open" ] = "ui-corner-tl" ;
135
- firstClasses [ "ui-selectmenu-button-closed" ] = "ui-corner-left" ;
136
- $ ( "#" + this . first . attr ( "id" ) . replace ( / - b u t t o n / , "" ) )
137
- . selectmenu ( "option" , "classes" , firstClasses ) ;
138
- }
139
- if ( this . last . is ( ".ui-selectmenu-button" ) ) {
140
- if ( vertical ) {
141
- lastClasses [ "ui-selectmenu-button-open" ] = null ;
142
- lastClasses [ "ui-selectmenu-button-closed" ] = "ui-corner-bottom" ;
143
- } else {
144
- lastClasses [ "ui-selectmenu-button-open" ] = "ui-corner-tr" ;
145
- lastClasses [ "ui-selectmenu-button-closed" ] = "ui-corner-right" ;
146
- }
147
- $ ( "#" + this . last . attr ( "id" ) . replace ( / - b u t t o n / , "" ) )
148
- . selectmenu ( "option" , "classes" , lastClasses ) ;
149
- }
150
- this . element . find ( this . options . items . selectmenu ) . selectmenu ( "refresh" ) ;
151
- }
152
- } ,
153
-
154
151
refresh : function ( ) {
155
- var that = this ,
156
- vertical = ( this . options . direction === "vertical" ) ;
157
- this . element . addClass ( this . _classes ( "ui-controlgroup ui-controlgroup-" +
158
- this . options . direction ) ) ;
159
- this . _callChildMethod ( undefined ) ;
160
- this . visible = this . element . children ( ".ui-button" ) . removeClass ( function ( index , css ) {
161
- return ( css . match ( / u i - c o r n e r - [ a - z ] * / g ) || [ ] ) . join ( " " ) ;
162
- } ) . filter ( this . options . excludeInvisible ? ":visible" : "*" ) ;
163
-
164
- this . first = this . visible . eq ( 0 )
165
- . addClass ( "ui-corner-" + ( vertical ? "top" : "left" ) ) ;
166
- this . last = this . visible . last ( )
167
- . addClass ( "ui-corner-" + ( vertical ? "bottom" : "right" ) ) ;
168
-
169
- $ . each ( this . options . items , function ( widget ) {
170
- if ( that [ "_refresh_" + widget ] ) {
171
- that [ "_refresh_" + widget ] ( ) ;
172
- }
173
- } ) ;
174
- this . _callChildMethod ( "refresh" ) ;
152
+ var children ,
153
+ that = this ;
154
+
155
+ this . _addClass ( "ui-controlgroup ui-controlgroup-" + this . options . direction ) ;
156
+ this . _callChildMethod ( ) ;
157
+ children = this . element . children ( ".ui-button" ) ;
175
158
159
+ if ( this . options . excludeInvisible ) {
160
+ children = children . filter ( ":visible" ) ;
161
+ }
162
+ if ( children . length ) {
163
+ [ "first" , "last" ] . forEach ( function ( value ) {
164
+ var data = children [ value ] ( ) . data ( "ui-controlgroup-data" ) ;
165
+ data . element [ data . type ] ( that [ "_" + data . type + "_options" ] ( value ) ) ;
166
+ } ) ;
167
+ this . _callChildMethod ( "refresh" ) ;
168
+ }
176
169
}
177
170
178
171
} ) ;
0 commit comments