From d7ee9569e18ac46ad3f0a23e790e48d3ee5a44c4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 14 Nov 2012 14:59:12 -0500 Subject: [PATCH] Tabs: Trigger the select event when collapsing. Fixes #8813 - Tabs: select event not triggering when collapsible:true. --- tests/unit/tabs/tabs_deprecated.js | 10 +++++++--- ui/jquery.ui.tabs.js | 15 ++++++++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/tests/unit/tabs/tabs_deprecated.js b/tests/unit/tabs/tabs_deprecated.js index 297a4546e..36ad98f38 100644 --- a/tests/unit/tabs/tabs_deprecated.js +++ b/tests/unit/tabs/tabs_deprecated.js @@ -359,7 +359,7 @@ test( "show", function() { }); test( "select", function() { - expect( 13 ); + expect( 18 ); var element = $( "#tabs1" ).tabs({ active: false, @@ -391,8 +391,12 @@ test( "select", function() { state( element, 0, 1, 0 ); // collapsing - element.one( "tabsselect", function() { - ok( false, "collapsing" ); + element.one( "tabsselect", function( event, ui ) { + ok( !( "originalEvent" in event ), "originalEvent" ); + strictEqual( ui.tab, anchors[ 1 ], "ui.tab" ); + strictEqual( ui.panel, panels[ 1 ], "ui.panel" ); + equal( ui.index, 1, "ui.index" ); + state( element, 0, 1, 0 ); }); element.tabs( "option", "active", false ); state( element, 0, 0, 0 ); diff --git a/ui/jquery.ui.tabs.js b/ui/jquery.ui.tabs.js index 9b97f9cda..8e09764b7 100644 --- a/ui/jquery.ui.tabs.js +++ b/ui/jquery.ui.tabs.js @@ -1187,15 +1187,20 @@ if ( $.uiBackCompat !== false ) { } }, _trigger: function( type, event, data ) { - var ret = this._superApply( arguments ); + var tab, panel, + ret = this._superApply( arguments ); + if ( !ret ) { return false; } - if ( type === "beforeActivate" && data.newTab.length ) { + + if ( type === "beforeActivate" ) { + tab = data.newTab.length ? data.newTab : data.oldTab; + panel = data.newPanel.length ? data.newPanel : data.oldPanel; ret = this._super( "select", event, { - tab: data.newTab.find( ".ui-tabs-anchor" )[ 0], - panel: data.newPanel[ 0 ], - index: data.newTab.closest( "li" ).index() + tab: tab.find( ".ui-tabs-anchor" )[ 0], + panel: panel[ 0 ], + index: tab.closest( "li" ).index() }); } else if ( type === "activate" && data.newTab.length ) { ret = this._super( "show", event, { -- 2.39.5