Skip to content

Commit

Permalink
Tabs: Fixed load event with back compat enabled.
Browse files Browse the repository at this point in the history
  • Loading branch information
scottgonzalez committed May 17, 2011
1 parent 1bd139a commit ad53b55
Show file tree
Hide file tree
Showing 4 changed files with 135 additions and 57 deletions.
58 changes: 57 additions & 1 deletion tests/unit/tabs/tabs_deprecated.js
Expand Up @@ -35,7 +35,7 @@ asyncTest( "ajaxOptions", function() {
}
});
element.one( "tabsload", function( event, ui ) {
equals( ui.panel.html(), "test" );
equals( $( ui.panel ).html(), "test" );
start();
});
element.tabs( "option", "active", 2 );
Expand Down Expand Up @@ -220,6 +220,62 @@ test( "selected", function() {

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

asyncTest( "load", function() {
expect( 15 );

var tab, panelId, panel,
element = $( "#tabs2" );

// init
element.one( "tabsload", function( event, ui ) {
tab = element.find( ".ui-tabs-nav a" ).eq( 2 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );

ok( !( "originalEvent" in event ), "originalEvent" );
strictEqual( ui.tab, tab[ 0 ], "tab" );
strictEqual( ui.panel, panel[ 0 ], "panel" );
equals( $( ui.panel ).find( "p" ).length, 1, "panel html" );
tabs_state( element, 0, 0, 1, 0, 0 );
tabsload1();
});
element.tabs({ active: 2 });

function tabsload1() {
// .option()
element.one( "tabsload", function( event, ui ) {
tab = element.find( ".ui-tabs-nav a" ).eq( 3 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );

ok( !( "originalEvent" in event ), "originalEvent" );
strictEqual( ui.tab, tab[ 0 ], "tab" );
strictEqual( ui.panel, panel[ 0 ], "panel" );
equals( $( ui.panel ).find( "p" ).length, 1, "panel html" );
tabs_state( element, 0, 0, 0, 1, 0 );
tabsload2();
});
element.tabs( "option", "active", 3 );
}

function tabsload2() {
// click, change panel content
element.one( "tabsload", function( event, ui ) {
tab = element.find( ".ui-tabs-nav a" ).eq( 4 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );

equals( event.originalEvent.type, "click", "originalEvent" );
strictEqual( ui.tab, tab[ 0 ], "tab" );
strictEqual( ui.panel, panel[ 0 ], "panel" );
equals( $( ui.panel ).find( "p" ).length, 1, "panel html" );
tabs_state( element, 0, 0, 0, 0, 1 );
start();
});
element.find( ".ui-tabs-nav a" ).eq( 4 ).click();
}
});

test( "enable", function() {
expect( 3 );

Expand Down
96 changes: 49 additions & 47 deletions tests/unit/tabs/tabs_events.js
Expand Up @@ -209,66 +209,68 @@ test( "beforeLoad", function() {
equals( panel.html(), "<p>testing</p>", "panel html after" );
});

asyncTest( "load", function() {
expect( 21 );
if ( $.uiBackCompat === false ) {
asyncTest( "load", function() {
expect( 21 );

var tab, panelId, panel,
element = $( "#tabs2" );

// init
element.one( "tabsload", function( event, ui ) {
tab = element.find( ".ui-tabs-nav a" ).eq( 2 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );

ok( !( "originalEvent" in event ), "originalEvent" );
equals( ui.tab.size(), 1, "tab size" );
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
equals( ui.panel.size(), 1, "panel size" );
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
equals( ui.panel.find( "p" ).length, 1, "panel html" );
tabs_state( element, 0, 0, 1, 0, 0 );
tabsload1();
});
element.tabs({ active: 2 });
var tab, panelId, panel,
element = $( "#tabs2" );

function tabsload1() {
// .option()
// init
element.one( "tabsload", function( event, ui ) {
tab = element.find( ".ui-tabs-nav a" ).eq( 3 );
tab = element.find( ".ui-tabs-nav a" ).eq( 2 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );

ok( !( "originalEvent" in event ), "originalEvent" );
equals( ui.tab.size(), 1, "tab size" );
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
equals( ui.panel.size(), 1, "panel size" );
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
equals( ui.panel.find( "p" ).length, 1, "panel html" );
tabs_state( element, 0, 0, 0, 1, 0 );
tabsload2();
tabs_state( element, 0, 0, 1, 0, 0 );
tabsload1();
});
element.tabs( "option", "active", 3 );
}
element.tabs({ active: 2 });

function tabsload2() {
// click, change panel content
element.one( "tabsload", function( event, ui ) {
tab = element.find( ".ui-tabs-nav a" ).eq( 4 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );
function tabsload1() {
// .option()
element.one( "tabsload", function( event, ui ) {
tab = element.find( ".ui-tabs-nav a" ).eq( 3 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );

equals( event.originalEvent.type, "click", "originalEvent" );
equals( ui.tab.size(), 1, "tab size" );
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
equals( ui.panel.size(), 1, "panel size" );
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
equals( ui.panel.find( "p" ).length, 1, "panel html" );
tabs_state( element, 0, 0, 0, 0, 1 );
start();
});
element.find( ".ui-tabs-nav a" ).eq( 4 ).click();
}
});
ok( !( "originalEvent" in event ), "originalEvent" );
equals( ui.tab.size(), 1, "tab size" );
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
equals( ui.panel.size(), 1, "panel size" );
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
equals( ui.panel.find( "p" ).length, 1, "panel html" );
tabs_state( element, 0, 0, 0, 1, 0 );
tabsload2();
});
element.tabs( "option", "active", 3 );
}

function tabsload2() {
// click, change panel content
element.one( "tabsload", function( event, ui ) {
tab = element.find( ".ui-tabs-nav a" ).eq( 4 );
panelId = tab.attr( "aria-controls" );
panel = $( "#" + panelId );

equals( event.originalEvent.type, "click", "originalEvent" );
equals( ui.tab.size(), 1, "tab size" );
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
equals( ui.panel.size(), 1, "panel size" );
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
equals( ui.panel.find( "p" ).length, 1, "panel html" );
tabs_state( element, 0, 0, 0, 0, 1 );
start();
});
element.find( ".ui-tabs-nav a" ).eq( 4 ).click();
}
});
}

}( jQuery ) );
26 changes: 17 additions & 9 deletions tests/unit/tabs/tabs_methods.js
Expand Up @@ -165,16 +165,20 @@ asyncTest( "load", function() {
tabs_state( element, 1, 0, 0, 0, 0 );
});
element.one( "tabsload", function( event, ui ) {
// TODO: remove wrapping in 2.0
var uiTab = $( ui.tab ),
uiPanel = $( ui.panel );

var tab = element.find( ".ui-tabs-nav a" ).eq( 3 ),
panelId = tab.attr( "aria-controls" ),
panel = $( "#" + panelId );

ok( !( "originalEvent" in event ), "originalEvent" );
equals( ui.tab.size(), 1, "tab size" );
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
equals( ui.panel.size(), 1, "panel size" );
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
equals( ui.panel.find( "p" ).length, 1, "panel html" );
equals( uiTab.size(), 1, "tab size" );
strictEqual( uiTab[ 0 ], tab[ 0 ], "tab" );
equals( uiPanel.size(), 1, "panel size" );
strictEqual( uiPanel[ 0 ], panel[ 0 ], "panel" );
equals( uiPanel.find( "p" ).length, 1, "panel html" );
tabs_state( element, 1, 0, 0, 0, 0 );
setTimeout( tabsload1, 1 );
});
Expand Down Expand Up @@ -209,15 +213,19 @@ asyncTest( "load", function() {
tabs_state( element, 0, 0, 0, 1, 0 );
});
element.one( "tabsload", function( event, ui ) {
// TODO: remove wrapping in 2.0
var uiTab = $( ui.tab ),
uiPanel = $( ui.panel );

var tab = element.find( ".ui-tabs-nav a" ).eq( 3 ),
panelId = tab.attr( "aria-controls" ),
panel = $( "#" + panelId );

ok( !( "originalEvent" in event ), "originalEvent" );
equals( ui.tab.size(), 1, "tab size" );
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
equals( ui.panel.size(), 1, "panel size" );
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
equals( uiTab.size(), 1, "tab size" );
strictEqual( uiTab[ 0 ], tab[ 0 ], "tab" );
equals( uiPanel.size(), 1, "panel size" );
strictEqual( uiPanel[ 0 ], panel[ 0 ], "panel" );
tabs_state( element, 0, 0, 0, 1, 0 );
start();
});
Expand Down
12 changes: 12 additions & 0 deletions ui/jquery.ui.tabs.js
Expand Up @@ -1009,6 +1009,18 @@ if ( $.uiBackCompat !== false ) {
}
}
});

// load event
$.widget( "ui.tabs", $.ui.tabs, {
_trigger: function( type, event, data ) {
var _data = $.extend( {}, data );
if ( type === "load" ) {
_data.panel = _data.panel[ 0 ];
_data.tab = _data.tab[ 0 ];
}
return this._super( "_trigger", type, event, _data );
}
});
}

})( jQuery );

0 comments on commit ad53b55

Please sign in to comment.