mirror of
https://github.com/jquery/jquery-ui.git
synced 2026-04-20 03:02:41 -04:00
Accordion: Properly handle collapsible: false and active: false by changing active to 0.
This commit is contained in:
@@ -17,17 +17,16 @@ test( "{ active: false }", function() {
|
||||
equals( ac.find( ".ui-accordion-header.ui-state-active" ).size(), 0, "no headers selected" );
|
||||
equals( ac.accordion( "option", "active" ), false );
|
||||
|
||||
// TODO: fix active: false when not collapsible
|
||||
// ac.accordion( "option", "collapsible", false );
|
||||
// state( ac, 1, 0, 0 );
|
||||
// equals( ac.accordion( "option", "active" ), 0 );
|
||||
//
|
||||
// ac.accordion( "destroy" );
|
||||
// ac.accordion({
|
||||
// active: false
|
||||
// });
|
||||
// state( ac, 1, 0, 0 );
|
||||
// strictEqual( ac.accordion( "option", "active" ), 0 );
|
||||
ac.accordion( "option", "collapsible", false );
|
||||
state( ac, 1, 0, 0 );
|
||||
equals( ac.accordion( "option", "active" ), 0 );
|
||||
|
||||
ac.accordion( "destroy" );
|
||||
ac.accordion({
|
||||
active: false
|
||||
});
|
||||
state( ac, 1, 0, 0 );
|
||||
strictEqual( ac.accordion( "option", "active" ), 0 );
|
||||
});
|
||||
|
||||
test( "{ active: Number }", function() {
|
||||
|
||||
10
ui/jquery.ui.accordion.js
vendored
10
ui/jquery.ui.accordion.js
vendored
@@ -44,6 +44,10 @@ $.widget( "ui.accordion", {
|
||||
self.headers.next()
|
||||
.addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" );
|
||||
|
||||
// don't allow collapsible: false and active: false
|
||||
if ( !options.collapsible && options.active === false ) {
|
||||
options.active = 0;
|
||||
}
|
||||
self.active = self._findActive( options.active )
|
||||
.addClass( "ui-state-default ui-state-active" )
|
||||
.toggleClass( "ui-corner-all" )
|
||||
@@ -149,12 +153,18 @@ $.widget( "ui.accordion", {
|
||||
|
||||
this._super( "_setOption", key, value );
|
||||
|
||||
// setting collapsible: false while collapsed; open first panel
|
||||
if ( key === "collapsible" && !value && this.options.active === false ) {
|
||||
this._activate( 0 );
|
||||
}
|
||||
|
||||
if ( key === "icons" ) {
|
||||
this._destroyIcons();
|
||||
if ( value ) {
|
||||
this._createIcons();
|
||||
}
|
||||
}
|
||||
|
||||
// #5332 - opacity doesn't cascade to positioned elements in IE
|
||||
// so we need to add the disabled class to the headers and panels
|
||||
if ( key === "disabled" ) {
|
||||
|
||||
Reference in New Issue
Block a user