Skip to main content

Search and Top Navigation

Ticket #3691: tabs-class-options.patch


File tabs-class-options.patch, 12.7 KB (added by scottgonzalez, January 17, 2009 02:55AM UTC)
Index: /Users/sgonzale/Documents/workspace/jQuery UI/tests/unit/tabs/tabs.js
===================================================================
--- /Users/sgonzale/Documents/workspace/jQuery UI/tests/unit/tabs/tabs.js	(revision 1653)
+++ /Users/sgonzale/Documents/workspace/jQuery UI/tests/unit/tabs/tabs.js	(working copy)
@@ -11,18 +11,11 @@
 	cache: false,
 	cookie: null,
 	deselectable: false,
-	deselectableClass: 'ui-tabs-deselectable',
 	disabled: [],
-	disabledClass: 'ui-state-disabled',
 	event: 'click',
 	fx: null,
-	hideClass: 'ui-tabs-hide',
 	idPrefix: 'ui-tabs-',
-	loadingClass: 'ui-tabs-loading',
-	navClass: 'ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all',
-	panelClass: 'ui-tabs-panel ui-widget-content ui-corner-bottom',
 	panelTemplate: '
', - selectedClass: 'ui-tabs-selected ui-state-active', spinner: 'Loading…', tabTemplate: '
  • #{label}
  • ' }; Index: /Users/sgonzale/Documents/workspace/jQuery UI/ui/ui.tabs.js =================================================================== --- /Users/sgonzale/Documents/workspace/jQuery UI/ui/ui.tabs.js (revision 1653) +++ /Users/sgonzale/Documents/workspace/jQuery UI/ui/ui.tabs.js (working copy) @@ -22,7 +22,7 @@ destroy: function() { var o = this.options; this.list.unbind('.tabs') - .removeClass(o.navClass).removeData('tabs'); + .removeClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all').removeData('tabs'); this.$tabs.each(function() { var href = $.data(this, 'href.tabs'); if (href) @@ -36,8 +36,17 @@ if ($.data(this, 'destroy.tabs')) $(this).remove(); else - $(this).removeClass([o.tabClass, o.selectedClass, o.deselectableClass, - o.disabledClass, o.panelClass, o.hideClass].join(' ')); + $(this).removeClass( + 'ui-state-default ' + + 'ui-corner-top ' + + 'ui-tabs-selected ' + + 'ui-state-active ' + + 'ui-tabs-deselectable ' + + 'ui-state-disabled ' + + 'ui-tabs-panel ' + + 'ui-widget-content ' + + 'ui-corner-bottom ' + + 'ui-tabs-hide'); }); if (o.cookie) this._cookie(null, o.cookie); @@ -91,7 +100,7 @@ a.href = '#' + id; var $panel = $('#' + id); if (!$panel.length) { - $panel = $(o.panelTemplate).attr('id', id).addClass(o.panelClass) + $panel = $(o.panelTemplate).attr('id', id).addClass('ui-tabs-panel ui-widget-content ui-corner-bottom') .insertAfter(self.$panels[i - 1] || self.list); $panel.data('destroy.tabs', true); } @@ -110,9 +119,9 @@ // TODO replace hardcoded class names this.element.addClass('ui-tabs ui-widget ui-widget-content ui-corner-all'); } - this.list.addClass(o.navClass); - this.$lis.addClass(o.tabClass); - this.$panels.addClass(o.panelClass); + this.list.addClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all'); + this.$lis.addClass('ui-state-default ui-corner-top'); + this.$panels.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom'); // Selected tab // use "selected" option or try to retrieve: @@ -132,8 +141,8 @@ var index = parseInt(self._cookie(), 10); if (index && self.$tabs[index]) o.selected = index; } - else if (self.$lis.filter('.' + o.selectedClass).length) - o.selected = self.$lis.index( self.$lis.filter('.' + o.selectedClass)[0] ); + else if (self.$lis.filter('.ui-tabs-selected').length) + o.selected = self.$lis.index( self.$lis.filter('.ui-tabs-selected')[0] ); } o.selected = o.selected === null || o.selected !== undefined ? o.selected : 0; // first tab selected by default @@ -141,7 +150,7 @@ // into account and update option properly. // A selected tab cannot become disabled. o.disabled = $.unique(o.disabled.concat( - $.map(this.$lis.filter('.' + o.disabledClass), + $.map(this.$lis.filter('.ui-state-disabled'), function(n, i) { return self.$lis.index(n); } ) )).sort(); if ($.inArray(o.selected, o.disabled) != -1) @@ -148,12 +157,12 @@ o.disabled.splice($.inArray(o.selected, o.disabled), 1); // highlight selected tab - this.$panels.addClass(o.hideClass); - this.$lis.removeClass(o.selectedClass); + this.$panels.addClass('ui-tabs-hide'); + this.$lis.removeClass('ui-tabs-selected ui-state-active'); if (o.selected !== null && this.$tabs.length) { // check for length avoids error when initializing empty list - this.$panels.eq(o.selected).removeClass(o.hideClass); - var classes = [o.selectedClass]; - if (o.deselectable) classes.push(o.deselectableClass); + this.$panels.eq(o.selected).removeClass('ui-tabs-hide'); + var classes = ['ui-tabs-selected ui-state-active']; + if (o.deselectable) classes.push('ui-tabs-deselectable'); this.$lis.eq(o.selected).addClass(classes.join(' ')); // seems to be expected behavior that the show callback is fired @@ -171,7 +180,7 @@ // states var handleState = function(state, el) { - if (el.is(':not(.' + o.disabledClass + ')')) el.toggleClass('ui-state-' + state); + if (el.is(':not(.ui-state-disabled)')) el.toggleClass('ui-state-' + state); }; this.$lis.bind('mouseover.tabs mouseout.tabs', function() { handleState('hover', $(this)); @@ -189,7 +198,7 @@ } // update selected after add/remove else - o.selected = this.$lis.index( this.$lis.filter('.' + o.selectedClass)[0] ); + o.selected = this.$lis.index( this.$lis.filter('.ui-tabs-selected')[0] ); // set or update cookie after init and add/remove respectively if (o.cookie) this._cookie(o.selected, o.cookie); @@ -196,7 +205,7 @@ // disable tabs for (var i = 0, li; li = this.$lis[i]; i++) - $(li)[$.inArray(i, o.disabled) != -1 && !$(li).hasClass(o.selectedClass) ? 'addClass' : 'removeClass'](o.disabledClass); + $(li)[$.inArray(i, o.disabled) != -1 && !$(li).hasClass('ui-tabs-selected') ? 'addClass' : 'removeClass']('ui-state-disabled'); // reset cache if switching from cached to not cached if (o.cache === false) this.$tabs.removeData('cache.tabs'); @@ -222,7 +231,7 @@ var showTab = showFx ? function(clicked, $show) { $show.animate(showFx, showFx.duration || 'normal', function() { - $show.removeClass(o.hideClass); + $show.removeClass('ui-tabs-hide'); resetStyle($show, showFx); self._trigger('show', null, self.ui(clicked, $show[0])); }); @@ -228,7 +237,7 @@ }); } : function(clicked, $show) { - $show.removeClass(o.hideClass); + $show.removeClass('ui-tabs-hide'); self._trigger('show', null, self.ui(clicked, $show[0])); }; @@ -236,7 +245,7 @@ var hideTab = hideFx ? function(clicked, $hide, $show) { $hide.animate(hideFx, hideFx.duration || 'normal', function() { - $hide.addClass(o.hideClass); + $hide.addClass('ui-tabs-hide'); resetStyle($hide, hideFx); if ($show) showTab(clicked, $show, $hide); }); @@ -242,7 +251,7 @@ }); } : function(clicked, $hide, $show) { - $hide.addClass(o.hideClass); + $hide.addClass('ui-tabs-hide'); if ($show) showTab(clicked, $show); }; @@ -248,8 +257,8 @@ // Switch a tab... function switchTab(clicked, $li, $hide, $show) { - var classes = [o.selectedClass]; - if (o.deselectable) classes.push(o.deselectableClass); + var classes = ['ui-tabs-selected ui-state-active']; + if (o.deselectable) classes.push('ui-tabs-deselectable'); // TODO replace hardcoded class names $li.removeClass('ui-state-default').addClass(classes.join(' ')) .siblings().removeClass(classes.join(' ')).addClass('ui-state-default'); @@ -270,8 +279,8 @@ // for a disabled or loading tab! // TODO replace hardcoded class names if (($li.hasClass('ui-state-active') && !o.deselectable) - || $li.hasClass(o.disabledClass) - || $(this).hasClass(o.loadingClass) + || $li.hasClass('ui-state-disabled') + || $(this).hasClass('ui-tabs-loading') || self._trigger('select', null, self.ui(this, $show[0])) === false ) { this.blur(); @@ -285,8 +294,8 @@ if (o.deselectable) { if ($li.hasClass('ui-state-active')) { self.options.selected = null; - $li.removeClass([o.selectedClass, o.deselectableClass].join(' ')). - addClass('ui-state-default'); + $li.removeClass('ui-tabs-selected ui-state-active ui-tabs-deselectable') + .addClass('ui-state-default'); self.$panels.stop(); hideTab(this, $hide); this.blur(); @@ -295,7 +304,7 @@ self.$panels.stop(); var a = this; self.load(self.$tabs.index(this), function() { - $li.addClass([o.selectedClass, o.deselectableClass].join(' ')) + $li.addClass('ui-tabs-selected ui-state-active ui-tabs-deselectable') .removeClass('ui-state-default'); showTab(a, $show); }); @@ -317,7 +326,7 @@ switchTab(a, $li, $hide, $show); } : function() { - $li.addClass(o.selectedClass).removeClass('ui-state-default'); + $li.addClass('ui-tabs-selected ui-state-active').removeClass('ui-state-default'); showTab(a, $show); } ); @@ -345,7 +354,7 @@ var self = this, o = this.options; var $li = $(o.tabTemplate.replace(/#\{href\}/g, url).replace(/#\{label\}/g, label)); - $li.addClass(o.tabClass).data('destroy.tabs', true); + $li.addClass('ui-state-default ui-corner-top').data('destroy.tabs', true); var id = url.indexOf('#') == 0 ? url.replace('#', '') : this._tabId( $('a:first-child', $li)[0] ); @@ -353,10 +362,10 @@ var $panel = $('#' + id); if (!$panel.length) { $panel = $(o.panelTemplate).attr('id', id) - .addClass(o.hideClass) + .addClass('ui-tabs-hide') .data('destroy.tabs', true); } - $panel.addClass(o.panelClass); + $panel.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom'); if (index >= this.$lis.length) { $li.appendTo(this.list); $panel.appendTo(this.list[0].parentNode); @@ -372,8 +381,8 @@ this._tabify(); if (this.$tabs.length == 1) { // after tabify - $li.addClass(o.selectedClass); - $panel.removeClass(o.hideClass); + $li.addClass('ui-tabs-selected ui-state-active'); + $panel.removeClass('ui-tabs-hide'); var href = $.data(this.$tabs[0], 'load.tabs'); if (href) this.load(0, function() { self._trigger('show', null, @@ -391,7 +400,7 @@ // If selected tab was removed focus tab to the right or // in case the last tab was removed the tab to the left. - if ($li.hasClass(o.selectedClass) && this.$tabs.length > 1) + if ($li.hasClass('ui-tabs-selected') && this.$tabs.length > 1) this.select(index + (index + 1 < this.$tabs.length ? 1 : -1)); o.disabled = $.map($.grep(o.disabled, function(n, i) { return n != index; }), @@ -408,7 +417,7 @@ if ($.inArray(index, o.disabled) == -1) return; - var $li = this.$lis.eq(index).removeClass(o.disabledClass); + var $li = this.$lis.eq(index).removeClass('ui-state-disabled'); if ($.browser.safari) { // fix disappearing tab (that used opacity indicating disabling) after enabling in Safari 2... $li.css('display', 'inline-block'); setTimeout(function() { @@ -425,7 +434,7 @@ disable: function(index) { var self = this, o = this.options; if (index != o.selected) { // cannot disable already selected tab - this.$lis.eq(index).addClass(o.disabledClass); + this.$lis.eq(index).addClass('ui-state-disabled'); o.disabled.push(index); o.disabled.sort(); @@ -462,7 +471,7 @@ return $inner.length && $inner.is(':not(img)') && $inner || $parent; }; var cleanup = function() { - self.$tabs.filter('.' + o.loadingClass).removeClass(o.loadingClass) + self.$tabs.filter('.ui-tabs-loading').removeClass('ui-tabs-loading') .each(function() { if (o.spinner) inner(this).parent().html(inner(this).data('label.tabs')); @@ -503,7 +512,7 @@ this.xhr.abort(); cleanup(); } - $a.addClass(o.loadingClass); + $a.addClass('ui-tabs-loading'); self.xhr = $.ajax(ajaxOptions); }, @@ -530,19 +539,11 @@ cache: false, cookie: null, // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true } deselectable: false, - deselectableClass: 'ui-tabs-deselectable', disabled: [], - disabledClass: 'ui-state-disabled', event: 'click', fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 } - hideClass: 'ui-tabs-hide', idPrefix: 'ui-tabs-', - loadingClass: 'ui-tabs-loading', - navClass: 'ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all', - tabClass: 'ui-state-default ui-corner-top', - panelClass: 'ui-tabs-panel ui-widget-content ui-corner-bottom', panelTemplate: '
    ', - selectedClass: 'ui-tabs-selected ui-state-active', spinner: 'Loading…', tabTemplate: '
  • #{label}
  • ' }

    Download in other formats:

    Original Format