diff options
-rw-r--r-- | tests/unit/tabs/tabs_defaults.js | 4 | ||||
-rw-r--r-- | tests/unit/tabs/tabs_defaults_deprecated.js | 1 | ||||
-rw-r--r-- | tests/unit/tabs/tabs_deprecated.js | 20 | ||||
-rw-r--r-- | tests/unit/tabs/tabs_events.js | 4 | ||||
-rwxr-xr-x | ui/jquery.ui.tabs.js | 32 |
5 files changed, 50 insertions, 11 deletions
diff --git a/tests/unit/tabs/tabs_defaults.js b/tests/unit/tabs/tabs_defaults.js index 98cb99fb5..e155a3dac 100644 --- a/tests/unit/tabs/tabs_defaults.js +++ b/tests/unit/tabs/tabs_defaults.js @@ -3,6 +3,7 @@ */ var tabs_defaults = { + activate: null, beforeload: null, collapsible: false, cookie: null, @@ -10,8 +11,7 @@ var tabs_defaults = { event: "click", fx: null, load: null, - select: null, - show: null + select: null }; // FAIL: falsy values break the cookie option diff --git a/tests/unit/tabs/tabs_defaults_deprecated.js b/tests/unit/tabs/tabs_defaults_deprecated.js index 73e9ffede..47fd75d8f 100644 --- a/tests/unit/tabs/tabs_defaults_deprecated.js +++ b/tests/unit/tabs/tabs_defaults_deprecated.js @@ -3,6 +3,7 @@ */ var tabs_defaults = { + activate: null, add: null, ajaxOptions: null, beforeload: null, diff --git a/tests/unit/tabs/tabs_deprecated.js b/tests/unit/tabs/tabs_deprecated.js index 8b6b50d7e..ba1a778b0 100644 --- a/tests/unit/tabs/tabs_deprecated.js +++ b/tests/unit/tabs/tabs_deprecated.js @@ -168,6 +168,26 @@ test('remove', function() { ok(false, "missing test - untested code is broken code."); }); +test('show', function() { + expect(5); + + 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" ); + +}); + module("tabs (deprecated): methods"); test('add', function() { diff --git a/tests/unit/tabs/tabs_events.js b/tests/unit/tabs/tabs_events.js index 04f282157..60affd7ff 100644 --- a/tests/unit/tabs/tabs_events.js +++ b/tests/unit/tabs/tabs_events.js @@ -49,12 +49,12 @@ test('load', function() { ok(false, "missing test - untested code is broken code."); }); -test('show', function() { +test('activate', function() { expect(5); var uiObj, eventObj; el = $('#tabs1').tabs({ - show: function(event, ui) { + activate: function(event, ui) { uiObj = ui; eventObj = event; } diff --git a/ui/jquery.ui.tabs.js b/ui/jquery.ui.tabs.js index d76565a2a..d605b2d48 100755 --- a/ui/jquery.ui.tabs.js +++ b/ui/jquery.ui.tabs.js @@ -26,6 +26,7 @@ function getNextListId() { $.widget( "ui.tabs", { options: { + activate: null, beforeload: null, cookie: null, // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true } collapsible: false, @@ -33,8 +34,7 @@ $.widget( "ui.tabs", { event: "click", fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 } load: null, - select: null, - show: null + select: null }, _create: function() { @@ -103,9 +103,9 @@ $.widget( "ui.tabs", { this.lis.eq( o.active ).addClass( "ui-tabs-selected ui-state-active" ); - // seems to be expected behavior that the show callback is fired + // seems to be expected behavior that the activate callback is fired self.element.queue( "tabs", function() { - self._trigger( "show", null, self._ui( tab, panel[ 0 ] ) ); + self._trigger( "activate", null, self._ui( tab, panel[ 0 ] ) ); }); this.load( o.active ); @@ -304,11 +304,11 @@ $.widget( "ui.tabs", { .animate( showFx, showFx.duration || "normal", function() { self._resetStyle( show, showFx ); self.running = false; - self._trigger( "show", event, self._ui( clicked, show[ 0 ] ) ); + self._trigger( "activate", event, self._ui( clicked, show[ 0 ] ) ); }); } else { show.removeClass( "ui-tabs-hide" ); - self._trigger( "show", event, self._ui( clicked, show[ 0 ] ) ); + self._trigger( "activate", event, self._ui( clicked, show[ 0 ] ) ); } }, @@ -815,7 +815,7 @@ if ( $.uiBackCompat !== false ) { $li.addClass( "ui-tabs-selected ui-state-active" ); $panel.removeClass( "ui-tabs-hide" ); this.element.queue( "tabs", function() { - self._trigger( "show", null, self._ui( self.anchors[ 0 ], self.panels[ 0 ] ) ); + self._trigger( "activate", null, self._ui( self.anchors[ 0 ], self.panels[ 0 ] ) ); }); this.load( 0 ); @@ -926,6 +926,24 @@ if ( $.uiBackCompat !== false ) { this.options.selected = this.options.active ; }; }( jQuery, jQuery.ui.tabs.prototype ) ); + + // show event + (function( $, prototype ) { + $.extend( prototype.options, { + show: null + }); + var _trigger = prototype._trigger; + + prototype._trigger = function( type, event, data ) { + var ret = _trigger.apply( this, arguments ); + if ( !ret ) { + return false; + } + if ( type === "activate" ) { + ret = _trigger.call( this, "show", event, data ); + } + }; + }( jQuery, jQuery.ui.tabs.prototype ) ); } })( jQuery ); |