Skip to content

Commit 5ae44f8

Browse files
committed
Tabs: Refactored spinner implementation. Fixes #7134 - Tabs: Deprecate spinner option.
1 parent 0546cd5 commit 5ae44f8

File tree

2 files changed

+29
-50
lines changed

2 files changed

+29
-50
lines changed

tests/unit/tabs/tabs_deprecated.js

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -106,34 +106,19 @@ test('cookie', function() {
106106

107107
});
108108

109+
asyncTest( "spinner", function() {
110+
expect( 2 );
109111

110-
test('spinner', function() {
111-
expect(4);
112-
stop();
113-
114-
el = $('#tabs2');
115-
116-
el.tabs({
117-
selected: 2,
118-
load: function() {
119-
// spinner: default spinner
120-
setTimeout(function() {
121-
equals($('li:eq(2) > a > span', el).length, 1, "should restore tab markup after spinner is removed");
122-
equals($('li:eq(2) > a > span', el).html(), '3', "should restore tab label after spinner is removed");
123-
el.tabs('destroy');
124-
el.tabs({
125-
selected: 2,
126-
spinner: '<img src="spinner.gif" alt="">',
127-
load: function() {
128-
// spinner: image
129-
equals($('li:eq(2) > a > span', el).length, 1, "should restore tab markup after spinner is removed");
130-
equals($('li:eq(2) > a > span', el).html(), '3', "should restore tab label after spinner is removed");
131-
start();
132-
}
133-
});
134-
}, 1);
135-
}
112+
var element = $( "#tabs2" ).tabs();
113+
114+
element.one( "tabsbeforeload", function( event, ui ) {
115+
equals( element.find( ".ui-tabs-nav li:eq(2) em" ).length, 1, "beforeload" );
116+
});
117+
element.one( "tabsload", function( event, ui ) {
118+
equals( element.find( ".ui-tabs-nav li:eq(2) em" ).length, 0, "load" );
119+
start();
136120
});
121+
element.tabs( "option", "active", 2 );
137122
});
138123

139124
test( "selected", function() {

ui/jquery.ui.tabs.js

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -743,34 +743,28 @@ if ( $.uiBackCompat !== false ) {
743743
}( jQuery, jQuery.ui.tabs.prototype ) );
744744

745745
// spinner
746-
(function( $, prototype ) {
747-
$.extend( prototype.options, {
746+
$.widget( "ui.tabs", $.ui.tabs, {
747+
options: {
748748
spinner: "<em>Loading&#8230;</em>"
749-
});
750-
751-
var _create = prototype._create;
752-
prototype._create = function() {
753-
_create.call( this );
754-
var self = this;
755-
756-
this.element.bind( "tabsbeforeload", function( event, ui ) {
757-
if ( self.options.spinner ) {
758-
var span = $( "span", ui.tab );
759-
if ( span.length ) {
760-
span.data( "label.tabs", span.html() ).html( self.options.spinner );
749+
},
750+
_create: function() {
751+
this._super( "_create" );
752+
this._bind({
753+
tabsbeforeload: function( event, ui ) {
754+
if ( !this.options.spinner ) {
755+
return;
761756
}
757+
758+
var span = ui.tab.find( "span" ),
759+
html = span.html();
760+
span.html( this.options.spinner );
761+
ui.jqXHR.complete(function() {
762+
span.html( html );
763+
});
762764
}
763-
ui.jqXHR.complete( function() {
764-
if ( self.options.spinner ) {
765-
var span = $( "span", ui.tab );
766-
if ( span.length ) {
767-
span.html( span.data( "label.tabs" ) ).removeData( "label.tabs" );
768-
}
769-
}
770-
});
771765
});
772-
};
773-
}( jQuery, jQuery.ui.tabs.prototype ) );
766+
}
767+
});
774768

775769
// enable/disable events
776770
(function( $, prototype ) {

0 commit comments

Comments
 (0)