From b5b8cefcb0f9e253a96c8aa97125b6353ebf2dcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 13 Jan 2011 08:51:09 -0500 Subject: [PATCH] Accordion: Reduced valid active options to numbers and falsey. Added compatibility layer for previously allowed values. --- ui/jquery.ui.accordion.js | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js index e0acd76a8d9..bcc798bf88a 100644 --- a/ui/jquery.ui.accordion.js +++ b/ui/jquery.ui.accordion.js @@ -73,7 +73,7 @@ $.widget( "ui.accordion", { .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ); self.headers.find( ":first-child" ).addClass( "ui-accordion-heading" ); - self.active = self._findActive( self.active || options.active ) + self.active = self._findActive( options.active ) .addClass( "ui-state-default ui-state-active" ) .toggleClass( "ui-corner-all" ) .toggleClass( "ui-corner-top" ); @@ -287,17 +287,9 @@ $.widget( "ui.accordion", { this._eventHandler( { target: active, currentTarget: active } ); }, + // TODO: add tests for negative values in 2.0 _findActive: function( selector ) { - // handle -1 separately, we should drop support for this - // so that we can allow selecting via negative index, like .eq() - if ( selector === -1 ) { - selector = undefined; - } - return typeof selector === "number" ? - this.headers.eq( selector ) : - selector ? - this.headers.filter( selector ) : - $( [] ); + return typeof selector === "number" ? this.headers.eq( selector ) : $( [] ); }, _eventHandler: function( event ) { @@ -690,7 +682,23 @@ $.extend( $.ui.accordion, { }; }( jQuery, jQuery.ui.accordion.prototype ) ); -// activate method -jQuery.ui.accordion.prototype.activate = jQuery.ui.accordion.prototype._activate; +// expanded active option, activate method +(function( $, prototype ) { + prototype.activate = prototype._activate; + + var _findActive = prototype._findActive; + prototype._findActive = function( index ) { + if ( index === -1 ) { + index = false; + } + if ( index && typeof index !== "number" ) { + index = this.headers.index( this.headers.filter( index ) ); + if ( index === -1 ) { + index = false; + } + } + return _findActive.call( this, index ); + }; +}( jQuery, jQuery.ui.accordion.prototype ) ); })( jQuery );