disabled( element, false );
});
+test( "refresh - looping", function() {
+ expect( 6 );
+
+ var element = $( "#tabs1" ).tabs({
+ disabled: [ 0 ],
+ active: 1
+ });
+ state( element, 0, 1, 0 );
+ disabled( element, [ 0 ] );
+
+ // remove active, jump to previous
+ // previous is disabled, just back one more
+ // reached first tab, move to end
+ // activate last tab
+ element.find( ".ui-tabs-nav li" ).eq( 2 ).remove();
+ element.tabs( "refresh" );
+ state( element, 0, 1 );
+ disabled( element, [ 0 ] );
+});
+
asyncTest( "load", function() {
expect( 30 );
}
},
- _focusNextTab: function( index, goingForward ) {
+ _findNextTab: function( index, goingForward ) {
var lastTabIndex = this.tabs.length - 1;
function constrain() {
index = goingForward ? index + 1 : index - 1;
}
+ return index;
+ },
+
+ _focusNextTab: function( index, goingForward ) {
+ index = this._findNextTab( index, goingForward );
this.tabs.eq( index ).focus();
return index;
},
this.active = $();
// was active, but active tab is gone
} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
+ // all remaining tabs are disabled
+ if ( this.tabs.length === options.disabled.length ) {
+ options.active = false;
+ this.active = $();
// activate previous tab
- next = options.active - 1;
- this._activate( next >= 0 ? next : 0 );
+ } else {
+ this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
+ }
// was active, active tab still exists
} else {
// make sure active index is correct