Skip to content

Commit ad53b55

Browse files
committed
Tabs: Fixed load event with back compat enabled.
1 parent 1bd139a commit ad53b55

File tree

4 files changed

+135
-57
lines changed

4 files changed

+135
-57
lines changed

tests/unit/tabs/tabs_deprecated.js

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ asyncTest( "ajaxOptions", function() {
3535
}
3636
});
3737
element.one( "tabsload", function( event, ui ) {
38-
equals( ui.panel.html(), "test" );
38+
equals( $( ui.panel ).html(), "test" );
3939
start();
4040
});
4141
element.tabs( "option", "active", 2 );
@@ -220,6 +220,62 @@ test( "selected", function() {
220220

221221
module( "tabs (deprecated): events" );
222222

223+
asyncTest( "load", function() {
224+
expect( 15 );
225+
226+
var tab, panelId, panel,
227+
element = $( "#tabs2" );
228+
229+
// init
230+
element.one( "tabsload", function( event, ui ) {
231+
tab = element.find( ".ui-tabs-nav a" ).eq( 2 );
232+
panelId = tab.attr( "aria-controls" );
233+
panel = $( "#" + panelId );
234+
235+
ok( !( "originalEvent" in event ), "originalEvent" );
236+
strictEqual( ui.tab, tab[ 0 ], "tab" );
237+
strictEqual( ui.panel, panel[ 0 ], "panel" );
238+
equals( $( ui.panel ).find( "p" ).length, 1, "panel html" );
239+
tabs_state( element, 0, 0, 1, 0, 0 );
240+
tabsload1();
241+
});
242+
element.tabs({ active: 2 });
243+
244+
function tabsload1() {
245+
// .option()
246+
element.one( "tabsload", function( event, ui ) {
247+
tab = element.find( ".ui-tabs-nav a" ).eq( 3 );
248+
panelId = tab.attr( "aria-controls" );
249+
panel = $( "#" + panelId );
250+
251+
ok( !( "originalEvent" in event ), "originalEvent" );
252+
strictEqual( ui.tab, tab[ 0 ], "tab" );
253+
strictEqual( ui.panel, panel[ 0 ], "panel" );
254+
equals( $( ui.panel ).find( "p" ).length, 1, "panel html" );
255+
tabs_state( element, 0, 0, 0, 1, 0 );
256+
tabsload2();
257+
});
258+
element.tabs( "option", "active", 3 );
259+
}
260+
261+
function tabsload2() {
262+
// click, change panel content
263+
element.one( "tabsload", function( event, ui ) {
264+
tab = element.find( ".ui-tabs-nav a" ).eq( 4 );
265+
panelId = tab.attr( "aria-controls" );
266+
panel = $( "#" + panelId );
267+
268+
equals( event.originalEvent.type, "click", "originalEvent" );
269+
strictEqual( ui.tab, tab[ 0 ], "tab" );
270+
strictEqual( ui.panel, panel[ 0 ], "panel" );
271+
equals( $( ui.panel ).find( "p" ).length, 1, "panel html" );
272+
tabs_state( element, 0, 0, 0, 0, 1 );
273+
start();
274+
});
275+
element.find( ".ui-tabs-nav a" ).eq( 4 ).click();
276+
}
277+
});
278+
223279
test( "enable", function() {
224280
expect( 3 );
225281

tests/unit/tabs/tabs_events.js

Lines changed: 49 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -209,66 +209,68 @@ test( "beforeLoad", function() {
209209
equals( panel.html(), "<p>testing</p>", "panel html after" );
210210
});
211211

212-
asyncTest( "load", function() {
213-
expect( 21 );
212+
if ( $.uiBackCompat === false ) {
213+
asyncTest( "load", function() {
214+
expect( 21 );
214215

215-
var tab, panelId, panel,
216-
element = $( "#tabs2" );
217-
218-
// init
219-
element.one( "tabsload", function( event, ui ) {
220-
tab = element.find( ".ui-tabs-nav a" ).eq( 2 );
221-
panelId = tab.attr( "aria-controls" );
222-
panel = $( "#" + panelId );
223-
224-
ok( !( "originalEvent" in event ), "originalEvent" );
225-
equals( ui.tab.size(), 1, "tab size" );
226-
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
227-
equals( ui.panel.size(), 1, "panel size" );
228-
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
229-
equals( ui.panel.find( "p" ).length, 1, "panel html" );
230-
tabs_state( element, 0, 0, 1, 0, 0 );
231-
tabsload1();
232-
});
233-
element.tabs({ active: 2 });
216+
var tab, panelId, panel,
217+
element = $( "#tabs2" );
234218

235-
function tabsload1() {
236-
// .option()
219+
// init
237220
element.one( "tabsload", function( event, ui ) {
238-
tab = element.find( ".ui-tabs-nav a" ).eq( 3 );
221+
tab = element.find( ".ui-tabs-nav a" ).eq( 2 );
239222
panelId = tab.attr( "aria-controls" );
240223
panel = $( "#" + panelId );
241-
224+
242225
ok( !( "originalEvent" in event ), "originalEvent" );
243226
equals( ui.tab.size(), 1, "tab size" );
244227
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
245228
equals( ui.panel.size(), 1, "panel size" );
246229
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
247230
equals( ui.panel.find( "p" ).length, 1, "panel html" );
248-
tabs_state( element, 0, 0, 0, 1, 0 );
249-
tabsload2();
231+
tabs_state( element, 0, 0, 1, 0, 0 );
232+
tabsload1();
250233
});
251-
element.tabs( "option", "active", 3 );
252-
}
234+
element.tabs({ active: 2 });
253235

254-
function tabsload2() {
255-
// click, change panel content
256-
element.one( "tabsload", function( event, ui ) {
257-
tab = element.find( ".ui-tabs-nav a" ).eq( 4 );
258-
panelId = tab.attr( "aria-controls" );
259-
panel = $( "#" + panelId );
236+
function tabsload1() {
237+
// .option()
238+
element.one( "tabsload", function( event, ui ) {
239+
tab = element.find( ".ui-tabs-nav a" ).eq( 3 );
240+
panelId = tab.attr( "aria-controls" );
241+
panel = $( "#" + panelId );
260242

261-
equals( event.originalEvent.type, "click", "originalEvent" );
262-
equals( ui.tab.size(), 1, "tab size" );
263-
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
264-
equals( ui.panel.size(), 1, "panel size" );
265-
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
266-
equals( ui.panel.find( "p" ).length, 1, "panel html" );
267-
tabs_state( element, 0, 0, 0, 0, 1 );
268-
start();
269-
});
270-
element.find( ".ui-tabs-nav a" ).eq( 4 ).click();
271-
}
272-
});
243+
ok( !( "originalEvent" in event ), "originalEvent" );
244+
equals( ui.tab.size(), 1, "tab size" );
245+
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
246+
equals( ui.panel.size(), 1, "panel size" );
247+
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
248+
equals( ui.panel.find( "p" ).length, 1, "panel html" );
249+
tabs_state( element, 0, 0, 0, 1, 0 );
250+
tabsload2();
251+
});
252+
element.tabs( "option", "active", 3 );
253+
}
254+
255+
function tabsload2() {
256+
// click, change panel content
257+
element.one( "tabsload", function( event, ui ) {
258+
tab = element.find( ".ui-tabs-nav a" ).eq( 4 );
259+
panelId = tab.attr( "aria-controls" );
260+
panel = $( "#" + panelId );
261+
262+
equals( event.originalEvent.type, "click", "originalEvent" );
263+
equals( ui.tab.size(), 1, "tab size" );
264+
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
265+
equals( ui.panel.size(), 1, "panel size" );
266+
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
267+
equals( ui.panel.find( "p" ).length, 1, "panel html" );
268+
tabs_state( element, 0, 0, 0, 0, 1 );
269+
start();
270+
});
271+
element.find( ".ui-tabs-nav a" ).eq( 4 ).click();
272+
}
273+
});
274+
}
273275

274276
}( jQuery ) );

tests/unit/tabs/tabs_methods.js

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -165,16 +165,20 @@ asyncTest( "load", function() {
165165
tabs_state( element, 1, 0, 0, 0, 0 );
166166
});
167167
element.one( "tabsload", function( event, ui ) {
168+
// TODO: remove wrapping in 2.0
169+
var uiTab = $( ui.tab ),
170+
uiPanel = $( ui.panel );
171+
168172
var tab = element.find( ".ui-tabs-nav a" ).eq( 3 ),
169173
panelId = tab.attr( "aria-controls" ),
170174
panel = $( "#" + panelId );
171175

172176
ok( !( "originalEvent" in event ), "originalEvent" );
173-
equals( ui.tab.size(), 1, "tab size" );
174-
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
175-
equals( ui.panel.size(), 1, "panel size" );
176-
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
177-
equals( ui.panel.find( "p" ).length, 1, "panel html" );
177+
equals( uiTab.size(), 1, "tab size" );
178+
strictEqual( uiTab[ 0 ], tab[ 0 ], "tab" );
179+
equals( uiPanel.size(), 1, "panel size" );
180+
strictEqual( uiPanel[ 0 ], panel[ 0 ], "panel" );
181+
equals( uiPanel.find( "p" ).length, 1, "panel html" );
178182
tabs_state( element, 1, 0, 0, 0, 0 );
179183
setTimeout( tabsload1, 1 );
180184
});
@@ -209,15 +213,19 @@ asyncTest( "load", function() {
209213
tabs_state( element, 0, 0, 0, 1, 0 );
210214
});
211215
element.one( "tabsload", function( event, ui ) {
216+
// TODO: remove wrapping in 2.0
217+
var uiTab = $( ui.tab ),
218+
uiPanel = $( ui.panel );
219+
212220
var tab = element.find( ".ui-tabs-nav a" ).eq( 3 ),
213221
panelId = tab.attr( "aria-controls" ),
214222
panel = $( "#" + panelId );
215223

216224
ok( !( "originalEvent" in event ), "originalEvent" );
217-
equals( ui.tab.size(), 1, "tab size" );
218-
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
219-
equals( ui.panel.size(), 1, "panel size" );
220-
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
225+
equals( uiTab.size(), 1, "tab size" );
226+
strictEqual( uiTab[ 0 ], tab[ 0 ], "tab" );
227+
equals( uiPanel.size(), 1, "panel size" );
228+
strictEqual( uiPanel[ 0 ], panel[ 0 ], "panel" );
221229
tabs_state( element, 0, 0, 0, 1, 0 );
222230
start();
223231
});

ui/jquery.ui.tabs.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,6 +1009,18 @@ if ( $.uiBackCompat !== false ) {
10091009
}
10101010
}
10111011
});
1012+
1013+
// load event
1014+
$.widget( "ui.tabs", $.ui.tabs, {
1015+
_trigger: function( type, event, data ) {
1016+
var _data = $.extend( {}, data );
1017+
if ( type === "load" ) {
1018+
_data.panel = _data.panel[ 0 ];
1019+
_data.tab = _data.tab[ 0 ];
1020+
}
1021+
return this._super( "_trigger", type, event, _data );
1022+
}
1023+
});
10121024
}
10131025

10141026
})( jQuery );

0 commit comments

Comments
 (0)