Skip to content

Commit 8f54ec0

Browse files
committed
Accordion: Implement new _addClass api
1 parent 32dbee6 commit 8f54ec0

File tree

1 file changed

+23
-29
lines changed

1 file changed

+23
-29
lines changed

ui/accordion.js

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ return $.widget( "ui.accordion", {
7272
_create: function() {
7373
var options = this.options;
7474
this.prevShow = this.prevHide = $();
75-
this._addClass( "ui-accordion", "ui-widget ui-helper-reset" );
75+
this._addClass( "ui-accordion ui-widget ui-helper-reset" );
7676

7777
// ARIA
7878
this.element.attr( "role", "tablist" );
@@ -98,15 +98,15 @@ return $.widget( "ui.accordion", {
9898
},
9999

100100
_createIcons: function() {
101-
var icon,
101+
var icon, children,
102102
icons = this.options.icons;
103103
if ( icons ) {
104104
icon = $( "<span>" );
105-
this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header );
105+
this._addClass( icon, "ui-accordion-header-icon ui-icon " + icons.header );
106106
icon.prependTo( this.headers );
107-
this.active.children( ".ui-accordion-header-icon" )
108-
.removeClass( icons.header )
109-
.addClass( icons.activeHeader );
107+
children = this.active.children( ".ui-accordion-header-icon" )
108+
this._removeClass( children, icons.header );
109+
this._addClass( children, icons.activeHeader );
110110
this._addClass( this.headers, "ui-accordion-icons" );
111111
}
112112
},
@@ -121,12 +121,9 @@ return $.widget( "ui.accordion", {
121121
var contents;
122122

123123
// clean up main element
124-
this._removeClass( "ui-accordion", "ui-widget ui-helper-reset" );
125124
this.element.removeAttr( "role" );
126125

127126
// clean up headers
128-
this._removeClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed ui-accordion-header-active",
129-
"ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" );
130127
this.headers
131128
.removeAttr( "role" )
132129
.removeAttr( "aria-expanded" )
@@ -144,8 +141,6 @@ return $.widget( "ui.accordion", {
144141
.removeAttr( "aria-hidden" )
145142
.removeAttr( "aria-labelledby" )
146143
.removeUniqueId();
147-
this._removeClass( contents, "ui-accordion-content ui-accordion-content-active",
148-
"ui-helper-reset ui-widget-content ui-state-disabled" );
149144

150145
if ( this.options.heightStyle !== "content" ) {
151146
contents.css( "height", "" );
@@ -183,11 +178,10 @@ return $.widget( "ui.accordion", {
183178
// #5332 - opacity doesn't cascade to positioned elements in IE
184179
// so we need to add the disabled class to the headers and panels
185180
if ( key === "disabled" ) {
186-
this.element
187-
.toggleClass( "ui-state-disabled", !!value )
188-
.attr( "aria-disabled", value );
189-
this.headers.add( this.headers.next() )
190-
.toggleClass( "ui-state-disabled", !!value );
181+
this.element.attr( "aria-disabled", value );
182+
183+
this[ ( !!value ? "_add": "_remove" ) + "Class" ]( "ui-state-disabled" );
184+
this[ ( !!value ? "_add": "_remove" ) + "Class" ]( this.headers.add( this.headers.next() ), "ui-state-disabled" );
191185
}
192186
},
193187

@@ -273,12 +267,10 @@ return $.widget( "ui.accordion", {
273267
prevPanels = this.panels;
274268

275269
this.headers = this.element.find( this.options.header );
276-
this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed",
277-
"ui-state-default" );
270+
this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed ui-state-default" );
278271

279272
this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide();
280-
this._addClass( this.panels, "ui-accordion-content",
281-
"ui-helper-reset ui-widget-content" );
273+
this._addClass( this.panels, "ui-accordion-content ui-helper-reset ui-widget-content" );
282274

283275
// Avoid memory leaks (#10056)
284276
if ( prevPanels ) {
@@ -294,7 +286,7 @@ return $.widget( "ui.accordion", {
294286
parent = this.element.parent();
295287

296288
this.active = this._findActive( options.active );
297-
this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" );
289+
this._addClass( this.active, "ui-accordion-header-active ui-state-active" );
298290
this._removeClass( this.active, "ui-accordion-header-collapsed" );
299291
this._addClass( this.active.next(), "ui-accordion-content-active" );
300292
this.active.next().show();
@@ -418,6 +410,8 @@ return $.widget( "ui.accordion", {
418410
_eventHandler: function( event ) {
419411
var options = this.options,
420412
active = this.active,
413+
activeChildren = null,
414+
clickedChildren = null,
421415
clicked = $( event.currentTarget ),
422416
clickedIsActive = clicked[ 0 ] === active[ 0 ],
423417
collapsing = clickedIsActive && options.collapsible,
@@ -449,20 +443,20 @@ return $.widget( "ui.accordion", {
449443

450444
// switch classes
451445
// corner classes on the previously active header stay after the animation
452-
this._removeClass( active, "ui-accordion-header-active", "ui-state-active" );
446+
this._removeClass( active, "ui-accordion-header-active ui-state-active" );
453447
if ( options.icons ) {
454-
active.children( ".ui-accordion-header-icon" )
455-
.removeClass( options.icons.activeHeader )
456-
.addClass( options.icons.header );
448+
activeChildren = active.children( ".ui-accordion-header-icon" );
449+
this._removeClass( activeChildren, options.icons.activeHeader );
450+
this._addClass( activeChildren, options.icons.header );
457451
}
458452

459453
if ( !clickedIsActive ) {
460454
this._removeClass( clicked, "ui-accordion-header-collapsed" );
461-
this._addClass( clicked, "ui-accordion-header-active", "ui-state-active" );
455+
this._addClass( clicked, "ui-accordion-header-active ui-state-active" );
462456
if ( options.icons ) {
463-
clicked.children( ".ui-accordion-header-icon" )
464-
.removeClass( options.icons.header )
465-
.addClass( options.icons.activeHeader );
457+
clickedChildren = clicked.children( ".ui-accordion-header-icon" );
458+
this._removeClass( clickedChildren, options.icons.header );
459+
this._addClass( clickedChildren, options.icons.activeHeader );
466460
}
467461

468462
this._addClass( clicked.next(), "ui-accordion-content-active" );

0 commit comments

Comments
 (0)