Skip to content
Permalink
Browse files

Tabs: Walk previous tabs (and loop) in refresh() in case the tab we'r…

…e trying to activate is disabled.
  • Loading branch information
scottgonzalez committed Jun 12, 2012
1 parent 9e805c0 commit 9ebeb0616a5ca556e507aecbe360f5dcec238737
Showing with 33 additions and 3 deletions.
  1. +20 −0 tests/unit/tabs/tabs_methods.js
  2. +13 −3 ui/jquery.ui.tabs.js
@@ -148,6 +148,26 @@ test( "refresh", function() {
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 );

@@ -229,7 +229,7 @@ $.widget( "ui.tabs", {
}
},

_focusNextTab: function( index, goingForward ) {
_findNextTab: function( index, goingForward ) {
var lastTabIndex = this.tabs.length - 1;

function constrain() {
@@ -246,6 +246,11 @@ $.widget( "ui.tabs", {
index = goingForward ? index + 1 : index - 1;
}

return index;
},

_focusNextTab: function( index, goingForward ) {
index = this._findNextTab( index, goingForward );
this.tabs.eq( index ).focus();
return index;
},
@@ -309,9 +314,14 @@ $.widget( "ui.tabs", {
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

0 comments on commit 9ebeb06

Please sign in to comment.
You can’t perform that action at this time.