@@ -35,50 +35,16 @@ $.widget( "ui.controlgroup", {
35
35
"selectmenu" : "select"
36
36
} ,
37
37
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
66
43
}
67
44
} ,
68
45
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 ( ) ; ;
82
48
} ,
83
49
84
50
_enhance : function ( ) {
@@ -89,16 +55,37 @@ $.widget( "ui.controlgroup", {
89
55
_destroy : function ( ) {
90
56
this . _callChildMethod ( "destroy" ) ;
91
57
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" )
93
59
. children ( ) . removeClass ( "ui-corner-all ui-corner-top" +
94
60
" ui-corner-bottom ui-corner-left ui-corner-tl ui-corner-tr" ) ;
95
61
} ,
96
62
97
63
_callChildMethod : function ( method , filter ) {
98
64
var that = this ;
99
65
$ . 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
+ }
100
86
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 ) ;
102
89
}
103
90
} ) ;
104
91
} ,
@@ -120,7 +107,9 @@ $.widget( "ui.controlgroup", {
120
107
} ,
121
108
122
109
refresh : function ( ) {
123
- var vertical = ( this . options . direction === "vertical" ) ;
110
+ var firstClasses = { } ,
111
+ lastClasses = { } ,
112
+ vertical = ( this . options . direction === "vertical" ) ;
124
113
this . element . addClass ( "ui-controlgroup ui-controlgroup-" + this . options . direction ) ;
125
114
this . _callChildMethod ( undefined ) ;
126
115
this . visible = this . element . children ( ".ui-button" ) . removeClass ( function ( index , css ) {
@@ -131,7 +120,26 @@ $.widget( "ui.controlgroup", {
131
120
. addClass ( "ui-corner-" + ( vertical ? "top" : "left" ) ) ;
132
121
this . last = this . visible . filter ( ":last" )
133
122
. 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 ( / - b u t t o n / , "" ) )
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 ( / - b u t t o n / , "" ) )
139
+ . selectmenu ( "option" , "classes" , lastClasses ) ;
140
+ }
141
+ this . element . find ( this . options . items . selectmenu ) . selectmenu ( "refresh" ) ;
142
+ }
135
143
this . _callChildMethod ( "refresh" ) ;
136
144
137
145
}
0 commit comments