mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-10-05 01:44:18 +00:00
Tabs: Walk previous tabs (and loop) in refresh() in case the tab we're trying to activate is disabled.
This commit is contained in:
parent
9e805c0384
commit
9ebeb0616a
@ -148,6 +148,26 @@ test( "refresh", function() {
|
|||||||
disabled( element, false );
|
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() {
|
asyncTest( "load", function() {
|
||||||
expect( 30 );
|
expect( 30 );
|
||||||
|
|
||||||
|
16
ui/jquery.ui.tabs.js
vendored
16
ui/jquery.ui.tabs.js
vendored
@ -229,7 +229,7 @@ $.widget( "ui.tabs", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_focusNextTab: function( index, goingForward ) {
|
_findNextTab: function( index, goingForward ) {
|
||||||
var lastTabIndex = this.tabs.length - 1;
|
var lastTabIndex = this.tabs.length - 1;
|
||||||
|
|
||||||
function constrain() {
|
function constrain() {
|
||||||
@ -246,6 +246,11 @@ $.widget( "ui.tabs", {
|
|||||||
index = goingForward ? index + 1 : index - 1;
|
index = goingForward ? index + 1 : index - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return index;
|
||||||
|
},
|
||||||
|
|
||||||
|
_focusNextTab: function( index, goingForward ) {
|
||||||
|
index = this._findNextTab( index, goingForward );
|
||||||
this.tabs.eq( index ).focus();
|
this.tabs.eq( index ).focus();
|
||||||
return index;
|
return index;
|
||||||
},
|
},
|
||||||
@ -309,9 +314,14 @@ $.widget( "ui.tabs", {
|
|||||||
this.active = $();
|
this.active = $();
|
||||||
// was active, but active tab is gone
|
// was active, but active tab is gone
|
||||||
} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
|
} 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
|
// activate previous tab
|
||||||
next = options.active - 1;
|
} else {
|
||||||
this._activate( next >= 0 ? next : 0 );
|
this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
|
||||||
|
}
|
||||||
// was active, active tab still exists
|
// was active, active tab still exists
|
||||||
} else {
|
} else {
|
||||||
// make sure active index is correct
|
// make sure active index is correct
|
||||||
|
Loading…
Reference in New Issue
Block a user