@@ -37,6 +37,11 @@ return $.widget( "ui.accordion", {
37
37
options : {
38
38
active : 0 ,
39
39
animate : { } ,
40
+ classes : {
41
+ "ui-accordion-header" : "ui-corner-top" ,
42
+ "ui-accordion-header-collapsed" : "ui-corner-all" ,
43
+ "ui-accordion-content" : "ui-corner-bottom"
44
+ } ,
40
45
collapsible : false ,
41
46
event : "click" ,
42
47
header : "> li > :first-child,> :not(li):even" ,
@@ -69,10 +74,10 @@ return $.widget( "ui.accordion", {
69
74
70
75
_create : function ( ) {
71
76
var options = this . options ;
77
+
72
78
this . prevShow = this . prevHide = $ ( ) ;
73
- this . element . addClass ( "ui-accordion ui-widget ui-helper-reset" )
74
- // ARIA
75
- . attr ( "role" , "tablist" ) ;
79
+ this . _addClass ( "ui-accordion" , "ui-widget ui-helper-reset" ) ;
80
+ this . element . attr ( "role" , "tablist" ) ;
76
81
77
82
// don't allow collapsible: false and active: false / null
78
83
if ( ! options . collapsible && ( options . active === false || options . active == null ) ) {
@@ -95,37 +100,33 @@ return $.widget( "ui.accordion", {
95
100
} ,
96
101
97
102
_createIcons : function ( ) {
98
- var icons = this . options . icons ;
103
+ var icon , children ,
104
+ icons = this . options . icons ;
105
+
99
106
if ( icons ) {
100
- $ ( "<span>" )
101
- . addClass ( "ui-accordion-header-icon ui-icon " + icons . header )
102
- . prependTo ( this . headers ) ;
103
- this . active . children ( ".ui-accordion-header-icon" )
104
- . removeClass ( icons . header )
105
- . addClass ( icons . activeHeader ) ;
106
- this . headers . addClass ( "ui-accordion-icons" ) ;
107
+ icon = $ ( "<span>" ) ;
108
+ this . _addClass ( icon , "ui-accordion-header-icon" , " ui-icon " + icons . header ) ;
109
+ icon . prependTo ( this . headers ) ;
110
+ children = this . active . children ( ".ui-accordion-header-icon" ) ;
111
+ this . _removeClass ( children , icons . header )
112
+ . _addClass ( children , null , icons . activeHeader )
113
+ . _addClass ( this . headers , "ui-accordion-icons" ) ;
107
114
}
108
115
} ,
109
116
110
117
_destroyIcons : function ( ) {
111
- this . headers
112
- . removeClass ( "ui-accordion-icons" )
113
- . children ( ".ui-accordion-header-icon" )
114
- . remove ( ) ;
118
+ this . _removeClass ( this . headers , "ui-accordion-icons" ) ;
119
+ this . headers . children ( ".ui-accordion-header-icon" ) . remove ( ) ;
115
120
} ,
116
121
117
122
_destroy : function ( ) {
118
123
var contents ;
119
124
120
125
// clean up main element
121
- this . element
122
- . removeClass ( "ui-accordion ui-widget ui-helper-reset" )
123
- . removeAttr ( "role" ) ;
126
+ this . element . removeAttr ( "role" ) ;
124
127
125
128
// clean up headers
126
129
this . headers
127
- . removeClass ( "ui-accordion-header ui-accordion-header-active ui-state-default " +
128
- "ui-corner-all ui-state-active ui-state-disabled ui-corner-top" )
129
130
. removeAttr ( "role" )
130
131
. removeAttr ( "aria-expanded" )
131
132
. removeAttr ( "aria-selected" )
@@ -137,8 +138,6 @@ return $.widget( "ui.accordion", {
137
138
138
139
// clean up content panels
139
140
contents = this . headers . next ( )
140
- . removeClass ( "ui-helper-reset ui-widget-content ui-corner-bottom " +
141
- "ui-accordion-content ui-accordion-content-active ui-state-disabled" )
142
141
. css ( "display" , "" )
143
142
. removeAttr ( "role" )
144
143
. removeAttr ( "aria-hidden" )
@@ -178,14 +177,15 @@ return $.widget( "ui.accordion", {
178
177
}
179
178
}
180
179
181
- // #5332 - opacity doesn't cascade to positioned elements in IE
180
+ // Support: IE8 Only
181
+ // #5332 / #6059 - opacity doesn't cascade to positioned elements in IE
182
182
// so we need to add the disabled class to the headers and panels
183
183
if ( key === "disabled" ) {
184
- this . element
185
- . toggleClass ( "ui-state-disabled" , ! ! value )
186
- . attr ( "aria- disabled", value ) ;
187
- this . headers . add ( this . headers . next ( ) )
188
- . toggleClass ( "ui-state-disabled" , ! ! value ) ;
184
+ this . element . attr ( "aria-disabled" , value ) ;
185
+
186
+ this . _toggleClass ( null , "ui-state- disabled", ! ! value ) ;
187
+ this . _toggleClass ( this . headers . add ( this . headers . next ( ) ) , null , "ui-state-disabled" ,
188
+ ! ! value ) ;
189
189
}
190
190
} ,
191
191
@@ -270,13 +270,12 @@ return $.widget( "ui.accordion", {
270
270
var prevHeaders = this . headers ,
271
271
prevPanels = this . panels ;
272
272
273
- this . headers = this . element . find ( this . options . header )
274
- . addClass ( "ui-accordion-header ui-state-default ui-corner-all" ) ;
273
+ this . headers = this . element . find ( this . options . header ) ;
274
+ this . _addClass ( this . headers , "ui-accordion-header ui-accordion-header-collapsed" ,
275
+ "ui-state-default" ) ;
275
276
276
- this . panels = this . headers . next ( )
277
- . addClass ( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" )
278
- . filter ( ":not(.ui-accordion-content-active)" )
279
- . hide ( ) ;
277
+ this . panels = this . headers . next ( ) . filter ( ":not(.ui-accordion-content-active)" ) . hide ( ) ;
278
+ this . _addClass ( this . panels , "ui-accordion-content" , "ui-helper-reset ui-widget-content" ) ;
280
279
281
280
// Avoid memory leaks (#10056)
282
281
if ( prevPanels ) {
@@ -291,12 +290,11 @@ return $.widget( "ui.accordion", {
291
290
heightStyle = options . heightStyle ,
292
291
parent = this . element . parent ( ) ;
293
292
294
- this . active = this . _findActive ( options . active )
295
- . addClass ( "ui-accordion-header-active ui-state-active ui-corner-top" )
296
- . removeClass ( "ui-corner-all" ) ;
297
- this . active . next ( )
298
- . addClass ( "ui-accordion-content-active" )
299
- . show ( ) ;
293
+ this . active = this . _findActive ( options . active ) ;
294
+ this . _addClass ( this . active , "ui-accordion-header-active" , "ui-state-active" )
295
+ . _removeClass ( this . active , "ui-accordion-header-collapsed" ) ;
296
+ this . _addClass ( this . active . next ( ) , "ui-accordion-content-active" ) ;
297
+ this . active . next ( ) . show ( ) ;
300
298
301
299
this . headers
302
300
. attr ( "role" , "tab" )
@@ -415,7 +413,8 @@ return $.widget( "ui.accordion", {
415
413
} ,
416
414
417
415
_eventHandler : function ( event ) {
418
- var options = this . options ,
416
+ var activeChildren , clickedChildren ,
417
+ options = this . options ,
419
418
active = this . active ,
420
419
clicked = $ ( event . currentTarget ) ,
421
420
clickedIsActive = clicked [ 0 ] === active [ 0 ] ,
@@ -448,26 +447,23 @@ return $.widget( "ui.accordion", {
448
447
449
448
// switch classes
450
449
// corner classes on the previously active header stay after the animation
451
- active . removeClass ( "ui-accordion-header-active ui-state-active" ) ;
450
+ this . _removeClass ( active , "ui-accordion-header-active" , " ui-state-active" ) ;
452
451
if ( options . icons ) {
453
- active . children ( ".ui-accordion-header-icon" )
454
- . removeClass ( options . icons . activeHeader )
455
- . addClass ( options . icons . header ) ;
452
+ activeChildren = active . children ( ".ui-accordion-header-icon" ) ;
453
+ this . _removeClass ( activeChildren , null , options . icons . activeHeader )
454
+ . _addClass ( activeChildren , null , options . icons . header ) ;
456
455
}
457
456
458
457
if ( ! clickedIsActive ) {
459
- clicked
460
- . removeClass ( "ui-corner-all" )
461
- . addClass ( "ui-accordion-header-active ui-state-active ui-corner-top" ) ;
458
+ this . _removeClass ( clicked , "ui-accordion-header-collapsed" )
459
+ . _addClass ( clicked , "ui-accordion-header-active" , "ui-state-active" ) ;
462
460
if ( options . icons ) {
463
- clicked . children ( ".ui-accordion-header-icon" )
464
- . removeClass ( options . icons . header )
465
- . addClass ( options . icons . activeHeader ) ;
461
+ clickedChildren = clicked . children ( ".ui-accordion-header-icon" ) ;
462
+ this . _removeClass ( clickedChildren , null , options . icons . header )
463
+ . _addClass ( clickedChildren , null , options . icons . activeHeader ) ;
466
464
}
467
465
468
- clicked
469
- . next ( )
470
- . addClass ( "ui-accordion-content-active" ) ;
466
+ this . _addClass ( clicked . next ( ) , "ui-accordion-content-active" ) ;
471
467
}
472
468
} ,
473
469
@@ -579,13 +575,12 @@ return $.widget( "ui.accordion", {
579
575
} ,
580
576
581
577
_toggleComplete : function ( data ) {
582
- var toHide = data . oldPanel ;
578
+ var toHide = data . oldPanel ,
579
+ prev = toHide . prev ( ) ;
583
580
584
- toHide
585
- . removeClass ( "ui-accordion-content-active" )
586
- . prev ( )
587
- . removeClass ( "ui-corner-top" )
588
- . addClass ( "ui-corner-all" ) ;
581
+ this . _removeClass ( toHide , "ui-accordion-content-active" ) ;
582
+ this . _removeClass ( prev , "ui-accordion-header-active" )
583
+ . _addClass ( prev , "ui-accordion-header-collapsed" ) ;
589
584
590
585
// Work around for rendering bug in IE (#5421)
591
586
if ( toHide . length ) {
0 commit comments