Skip to content

Commit

Permalink
Tabs: Pass original event for show and select events. Fixes #5043 - T…
Browse files Browse the repository at this point in the history
…abs: pass original event.
  • Loading branch information
petersendidit authored and scottgonzalez committed Feb 15, 2011
1 parent a3cba34 commit 8ef8d2d
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 12 deletions.
16 changes: 13 additions & 3 deletions tests/unit/tabs/tabs_events.js
Expand Up @@ -6,7 +6,9 @@
module("tabs: events");

test('select', function() {
expect(6);
expect(7);

var eventObj;
el = $('#tabs1').tabs({
select: function(event, ui) {
ok(true, 'select triggered after initialization');
Expand All @@ -15,29 +17,37 @@ test('select', function() {
equals(ui.tab, el.find('a')[1], 'contain tab as DOM anchor element');
equals(ui.panel, el.find('div')[1], 'contain panel as DOM div element');
equals(ui.index, 1, 'contain index');
evenObj = event;
}
});
el.tabs('select', 1);

el.find( "li:eq(1) a" ).simulate( "click" );
equals( evenObj.originalEvent.type, "click", "select triggered by click" );
});

test('load', function() {
ok(false, "missing test - untested code is broken code.");
});

test('show', function() {
expect(4);
expect(5);

var uiObj;
var uiObj, eventObj;
el = $('#tabs1').tabs({
show: function(event, ui) {
uiObj = ui;
eventObj = event;
}
});
ok(uiObj !== undefined, 'trigger callback after initialization');
equals(uiObj.tab, $('a', el)[0], 'contain tab as DOM anchor element');
equals(uiObj.panel, $('div', el)[0], 'contain panel as DOM div element');
equals(uiObj.index, 0, 'contain index');

el.find( "li:eq(1) a" ).simulate( "click" );
equals( eventObj.originalEvent.type, "click", "show triggered by click" );

});

test('add', function() {
Expand Down
18 changes: 9 additions & 9 deletions ui/jquery.ui.tabs.js
Expand Up @@ -279,18 +279,18 @@ $.widget( "ui.tabs", {

// Show a tab...
var showTab = showFx
? function( clicked, $show ) {
? function( clicked, $show, event ) {
$( clicked ).closest( "li" ).addClass( "ui-tabs-selected ui-state-active" );
$show.hide().removeClass( "ui-tabs-hide" ) // avoid flicker that way
.animate( showFx, showFx.duration || "normal", function() {
resetStyle( $show, showFx );
self._trigger( "show", null, self._ui( clicked, $show[ 0 ] ) );
self._trigger( "show", event, self._ui( clicked, $show[ 0 ] ) );
});
}
: function( clicked, $show ) {
: function( clicked, $show, event ) {
$( clicked ).closest( "li" ).addClass( "ui-tabs-selected ui-state-active" );
$show.removeClass( "ui-tabs-hide" );
self._trigger( "show", null, self._ui( clicked, $show[ 0 ] ) );
self._trigger( "show", event, self._ui( clicked, $show[ 0 ] ) );
};

// Hide a tab, $show is optional...
Expand All @@ -311,7 +311,7 @@ $.widget( "ui.tabs", {

// attach tab event handler, unbind to avoid duplicates from former tabifying...
this.anchors.bind( o.event + ".tabs", function( event ) {
event.preventDefault();
event.preventDefault();
var el = this,
$li = $(el).closest( "li" ),
$hide = self.panels.filter( ":not(.ui-tabs-hide)" ),
Expand All @@ -325,9 +325,9 @@ $.widget( "ui.tabs", {
$li.hasClass( "ui-state-disabled" ) ||
$li.hasClass( "ui-state-processing" ) ||
self.panels.filter( ":animated" ).length ||
self._trigger( "select", null, self._ui( this, $show[ 0 ] ) ) === false ) {
self._trigger( "select", event, self._ui( this, $show[ 0 ] ) ) === false ) {
this.blur();
return;
return;
}

o.selected = self.anchors.index( this );
Expand Down Expand Up @@ -355,7 +355,7 @@ $.widget( "ui.tabs", {
}

self.element.queue( "tabs", function() {
showTab( el, $show );
showTab( el, $show, event );
});

// TODO make passing in node possible, see also http://dev.jqueryui.com/ticket/3171
Expand All @@ -378,7 +378,7 @@ $.widget( "ui.tabs", {
});
}
self.element.queue( "tabs", function() {
showTab( el, $show );
showTab( el, $show, event );
});

self.load( self.anchors.index( this ) );
Expand Down

0 comments on commit 8ef8d2d

Please sign in to comment.