@@ -29,6 +29,11 @@ return $.widget( "ui.accordion", {
29
29
options : {
30
30
active : 0 ,
31
31
animate : { } ,
32
+ classes : {
33
+ "ui-accordion-header" : "ui-corner-top" ,
34
+ "ui-accordion-header-collapsed" : "ui-corner-all" ,
35
+ "ui-accordion-content" : "ui-corner-bottom"
36
+ } ,
32
37
collapsible : false ,
33
38
event : "click" ,
34
39
header : "> li > :first-child,> :not(li):even" ,
@@ -62,9 +67,10 @@ return $.widget( "ui.accordion", {
62
67
_create : function ( ) {
63
68
var options = this . options ;
64
69
this . prevShow = this . prevHide = $ ( ) ;
65
- this . element . addClass ( "ui-accordion ui-widget ui-helper-reset" )
66
- // ARIA
67
- . attr ( "role" , "tablist" ) ;
70
+ this . _addClass ( "ui-accordion" , "ui-widget ui-helper-reset" ) ;
71
+
72
+ // ARIA
73
+ this . element . attr ( "role" , "tablist" ) ;
68
74
69
75
// don't allow collapsible: false and active: false / null
70
76
if ( ! options . collapsible && ( options . active === false || options . active == null ) ) {
@@ -87,37 +93,32 @@ return $.widget( "ui.accordion", {
87
93
} ,
88
94
89
95
_createIcons : function ( ) {
90
- var icons = this . options . icons ;
96
+ var icon , children ,
97
+ icons = this . options . icons ;
91
98
if ( icons ) {
92
- $ ( "<span>" )
93
- . addClass ( "ui-accordion-header-icon ui-icon " + icons . header )
94
- . prependTo ( this . headers ) ;
95
- this . active . children ( ".ui-accordion-header-icon" )
96
- . removeClass ( icons . header )
97
- . addClass ( icons . activeHeader ) ;
98
- this . headers . addClass ( "ui-accordion-icons" ) ;
99
+ icon = $ ( "<span>" ) ;
100
+ this . _addClass ( icon , "ui-accordion-header-icon" , " ui-icon " + icons . header ) ;
101
+ icon . prependTo ( this . headers ) ;
102
+ children = this . active . children ( ".ui-accordion-header-icon" ) ;
103
+ this . _removeClass ( children , icons . header )
104
+ . _addClass ( children , null , icons . activeHeader )
105
+ . _addClass ( this . headers , "ui-accordion-icons" ) ;
99
106
}
100
107
} ,
101
108
102
109
_destroyIcons : function ( ) {
103
- this . headers
104
- . removeClass ( "ui-accordion-icons" )
105
- . children ( ".ui-accordion-header-icon" )
106
- . remove ( ) ;
110
+ this . _removeClass ( this . headers , "ui-accordion-icons" ) ;
111
+ this . headers . children ( ".ui-accordion-header-icon" ) . remove ( ) ;
107
112
} ,
108
113
109
114
_destroy : function ( ) {
110
115
var contents ;
111
116
112
117
// clean up main element
113
- this . element
114
- . removeClass ( "ui-accordion ui-widget ui-helper-reset" )
115
- . removeAttr ( "role" ) ;
118
+ this . element . removeAttr ( "role" ) ;
116
119
117
120
// clean up headers
118
121
this . headers
119
- . removeClass ( "ui-accordion-header ui-accordion-header-active ui-state-default " +
120
- "ui-corner-all ui-state-active ui-state-disabled ui-corner-top" )
121
122
. removeAttr ( "role" )
122
123
. removeAttr ( "aria-expanded" )
123
124
. removeAttr ( "aria-selected" )
@@ -129,8 +130,6 @@ return $.widget( "ui.accordion", {
129
130
130
131
// clean up content panels
131
132
contents = this . headers . next ( )
132
- . removeClass ( "ui-helper-reset ui-widget-content ui-corner-bottom " +
133
- "ui-accordion-content ui-accordion-content-active ui-state-disabled" )
134
133
. css ( "display" , "" )
135
134
. removeAttr ( "role" )
136
135
. removeAttr ( "aria-hidden" )
@@ -173,11 +172,11 @@ return $.widget( "ui.accordion", {
173
172
// #5332 - opacity doesn't cascade to positioned elements in IE
174
173
// so we need to add the disabled class to the headers and panels
175
174
if ( key === "disabled" ) {
176
- this . element
177
- . toggleClass ( "ui-state-disabled" , ! ! value )
178
- . attr ( "aria- disabled", value ) ;
179
- this . headers . add ( this . headers . next ( ) )
180
- . toggleClass ( "ui-state-disabled" , ! ! value ) ;
175
+ this . element . attr ( "aria-disabled" , value ) ;
176
+
177
+ this . _toggleClass ( null , "ui-state- disabled", ! ! value ) ;
178
+ this . _toggleClass ( this . headers . add ( this . headers . next ( ) ) , null , "ui-state-disabled" ,
179
+ ! ! value ) ;
181
180
}
182
181
} ,
183
182
@@ -262,13 +261,12 @@ return $.widget( "ui.accordion", {
262
261
var prevHeaders = this . headers ,
263
262
prevPanels = this . panels ;
264
263
265
- this . headers = this . element . find ( this . options . header )
266
- . addClass ( "ui-accordion-header ui-state-default ui-corner-all" ) ;
264
+ this . headers = this . element . find ( this . options . header ) ;
265
+ this . _addClass ( this . headers , "ui-accordion-header ui-accordion-header-collapsed" ,
266
+ "ui-state-default" ) ;
267
267
268
- this . panels = this . headers . next ( )
269
- . addClass ( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" )
270
- . filter ( ":not(.ui-accordion-content-active)" )
271
- . hide ( ) ;
268
+ this . panels = this . headers . next ( ) . filter ( ":not(.ui-accordion-content-active)" ) . hide ( ) ;
269
+ this . _addClass ( this . panels , "ui-accordion-content" , "ui-helper-reset ui-widget-content" ) ;
272
270
273
271
// Avoid memory leaks (#10056)
274
272
if ( prevPanels ) {
@@ -283,12 +281,11 @@ return $.widget( "ui.accordion", {
283
281
heightStyle = options . heightStyle ,
284
282
parent = this . element . parent ( ) ;
285
283
286
- this . active = this . _findActive ( options . active )
287
- . addClass ( "ui-accordion-header-active ui-state-active ui-corner-top" )
288
- . removeClass ( "ui-corner-all" ) ;
289
- this . active . next ( )
290
- . addClass ( "ui-accordion-content-active" )
291
- . show ( ) ;
284
+ this . active = this . _findActive ( options . active ) ;
285
+ this . _addClass ( this . active , "ui-accordion-header-active" , "ui-state-active" )
286
+ . _removeClass ( this . active , "ui-accordion-header-collapsed" )
287
+ . _addClass ( this . active . next ( ) , "ui-accordion-content-active" )
288
+ . active . next ( ) . show ( ) ;
292
289
293
290
this . headers
294
291
. attr ( "role" , "tab" )
@@ -409,6 +406,8 @@ return $.widget( "ui.accordion", {
409
406
_eventHandler : function ( event ) {
410
407
var options = this . options ,
411
408
active = this . active ,
409
+ activeChildren = null ,
410
+ clickedChildren = null ,
412
411
clicked = $ ( event . currentTarget ) ,
413
412
clickedIsActive = clicked [ 0 ] === active [ 0 ] ,
414
413
collapsing = clickedIsActive && options . collapsible ,
@@ -440,26 +439,23 @@ return $.widget( "ui.accordion", {
440
439
441
440
// switch classes
442
441
// corner classes on the previously active header stay after the animation
443
- active . removeClass ( "ui-accordion-header-active ui-state-active" ) ;
442
+ this . _removeClass ( active , "ui-accordion-header-active" , " ui-state-active" ) ;
444
443
if ( options . icons ) {
445
- active . children ( ".ui-accordion-header-icon" )
446
- . removeClass ( options . icons . activeHeader )
447
- . addClass ( options . icons . header ) ;
444
+ activeChildren = active . children ( ".ui-accordion-header-icon" ) ;
445
+ this . _removeClass ( activeChildren , null , options . icons . activeHeader )
446
+ . _addClass ( activeChildren , null , options . icons . header ) ;
448
447
}
449
448
450
449
if ( ! clickedIsActive ) {
451
- clicked
452
- . removeClass ( "ui-corner-all" )
453
- . addClass ( "ui-accordion-header-active ui-state-active ui-corner-top" ) ;
450
+ this . _removeClass ( clicked , "ui-accordion-header-collapsed" )
451
+ . _addClass ( clicked , "ui-accordion-header-active" , "ui-state-active" ) ;
454
452
if ( options . icons ) {
455
- clicked . children ( ".ui-accordion-header-icon" )
456
- . removeClass ( options . icons . header )
457
- . addClass ( options . icons . activeHeader ) ;
453
+ clickedChildren = clicked . children ( ".ui-accordion-header-icon" ) ;
454
+ this . _removeClass ( clickedChildren , null , options . icons . header )
455
+ . _addClass ( clickedChildren , null , options . icons . activeHeader ) ;
458
456
}
459
457
460
- clicked
461
- . next ( )
462
- . addClass ( "ui-accordion-content-active" ) ;
458
+ this . _addClass ( clicked . next ( ) , "ui-accordion-content-active" ) ;
463
459
}
464
460
} ,
465
461
@@ -565,13 +561,12 @@ return $.widget( "ui.accordion", {
565
561
} ,
566
562
567
563
_toggleComplete : function ( data ) {
568
- var toHide = data . oldPanel ;
564
+ var toHide = data . oldPanel ,
565
+ prev = toHide . prev ( ) ;
569
566
570
- toHide
571
- . removeClass ( "ui-accordion-content-active" )
572
- . prev ( )
573
- . removeClass ( "ui-corner-top" )
574
- . addClass ( "ui-corner-all" ) ;
567
+ this . _removeClass ( toHide , "ui-accordion-content-active" )
568
+ . _removeClass ( prev , "ui-accordion-header-active" )
569
+ . _addClass ( prev , "ui-accordion-header-collapsed" ) ;
575
570
576
571
// Work around for rendering bug in IE (#5421)
577
572
if ( toHide . length ) {
0 commit comments