From 0e9117623e0105fc0b991d97d9e9ef9f71c4e9db Mon Sep 17 00:00:00 2001 From: Klaus Hartl Date: Wed, 8 Oct 2008 10:09:55 +0000 Subject: [PATCH] UI Tabs: renamed confusing "unselect" option to "deselectable" --- tests/tabs.js | 22 +++++++-------- ui/ui.tabs.js | 78 ++++++++++++++++++++++++--------------------------- 2 files changed, 48 insertions(+), 52 deletions(-) diff --git a/tests/tabs.js b/tests/tabs.js index 685d5ab4f..e27bd7def 100644 --- a/tests/tabs.js +++ b/tests/tabs.js @@ -37,7 +37,7 @@ module('tabs'); test("defaults", function() { var expected = { - unselect: false, + deselectable: false, event: 'click', disabled: [], cookie: null, @@ -50,7 +50,7 @@ module('tabs'); panelTemplate: '
', navClass: 'ui-tabs-nav', selectedClass: 'ui-tabs-selected', - unselectClass: 'ui-tabs-unselect', + deselectableClass: 'ui-tabs-deselectable', disabledClass: 'ui-tabs-disabled', panelClass: 'ui-tabs-panel', hideClass: 'ui-tabs-hide', @@ -116,7 +116,7 @@ module('tabs: Options'); el.tabs({ selected: null }); equals( el.data('selected.tabs'), null, 'option set' ); - equals( $('li.ui-tabs-selected', el).length, 0, 'all tabs should be unselected' ); + equals( $('li.ui-tabs-selected', el).length, 0, 'all tabs should be deselected' ); equals( $('div.ui-tabs-hide', '#tabs1').length, 3, 'all panels should be hidden' ); // TODO select == null with cookie @@ -124,22 +124,22 @@ module('tabs: Options'); }); - test('unselect: true', function() { + test('deselectable: true', function() { expect(7); var el = $('#tabs1 > ul'); - el.tabs({ unselect: true }); - equals( el.data('unselect.tabs'), true, 'option set' ); - equals( $('li.ui-tabs-unselect', el).length, 1, 'class "ui-tabs-unselect" attached once'); - equals( $('li', el).index( $('li.ui-tabs-unselect', el) ), 0, 'class "ui-tabs-unselect" attached to first tab'); + el.tabs({ deselectable: true }); + equals( el.data('deselectable.tabs'), true, 'option set' ); + equals( $('li.ui-tabs-deselectable', el).length, 1, 'class "ui-tabs-deselectable" attached once'); + equals( $('li', el).index( $('li.ui-tabs-deselectable', el) ), 0, 'class "ui-tabs-deselectable" attached to first tab'); el.tabs('select', 1); - equals( $('li.ui-tabs-unselect', el).length, 1, 'class "ui-tabs-unselect" attached once'); - equals( $('li', el).index( $('li.ui-tabs-unselect', el) ), 1, 'class "ui-tabs-unselect" attached to second tab'); + equals( $('li.ui-tabs-deselectable', el).length, 1, 'class "ui-tabs-deselectable" attached once'); + equals( $('li', el).index( $('li.ui-tabs-deselectable', el) ), 1, 'class "ui-tabs-deselectable" attached to second tab'); el.tabs('select', 1); - equals( $('li.ui-tabs-unselect', el).length, 0, 'class "ui-tabs-unselect" not attached'); + equals( $('li.ui-tabs-deselectable', el).length, 0, 'class "ui-tabs-deselectable" not attached'); defer(function() { equals( $('div.ui-tabs-hide', '#tabs1').length, 3, 'all panels should be hidden' ); }); diff --git a/ui/ui.tabs.js b/ui/ui.tabs.js index 1052b51d5..00452974d 100644 --- a/ui/ui.tabs.js +++ b/ui/ui.tabs.js @@ -134,7 +134,7 @@ $.widget("ui.tabs", { if (o.selected !== null) { this.$panels.eq(o.selected).show().removeClass(o.hideClass); // use show and remove class to show in any case no matter how it has been hidden before var classes = [o.selectedClass]; - if (o.unselect) classes.push(o.unselectClass); + if (o.deselectable) classes.push(o.deselectableClass); this.$lis.eq(o.selected).addClass(classes.join(' ')); // seems to be expected behavior that the show callback is fired @@ -217,7 +217,7 @@ $.widget("ui.tabs", { $.ajaxHistory.update(clicked.hash); }*/ var classes = [o.selectedClass]; - if (o.unselect) classes.push(o.unselectClass); + if (o.deselectable) classes.push(o.deselectableClass); $li.addClass(classes.join(' ')).siblings().removeClass(classes.join(' ')); hideTab(clicked, $hide, $show); } @@ -230,11 +230,11 @@ $.widget("ui.tabs", { $hide = self.$panels.filter(':visible'), $show = $(self._sanitizeSelector(this.hash)); - // If tab is already selected and not unselectable or tab disabled or + // If tab is already selected and not deselectable or tab disabled or // or is already loading or click callback returns false stop here. // Check if click handler returns false last so that it is not executed // for a disabled or loading tab! - if (($li.hasClass(o.selectedClass) && !o.unselect) + if (($li.hasClass(o.selectedClass) && !o.deselectable) || $li.hasClass(o.disabledClass) || $(this).hasClass(o.loadingClass) || self._trigger('select', null, self.ui(this, $show[0])) === false @@ -246,10 +246,10 @@ $.widget("ui.tabs", { o.selected = self.$tabs.index(this); // if tab may be closed - if (o.unselect) { + if (o.deselectable) { if ($li.hasClass(o.selectedClass)) { self.options.selected = null; - $li.removeClass([o.selectedClass, o.unselectClass].join(' ')); + $li.removeClass([o.selectedClass, o.deselectableClass].join(' ')); self.$panels.stop(); hideTab(this, $hide); this.blur(); @@ -258,7 +258,7 @@ $.widget("ui.tabs", { self.$panels.stop(); var a = this; self.load(self.$tabs.index(this), function() { - $li.addClass([o.selectedClass, o.unselectClass].join(' ')); + $li.addClass([o.selectedClass, o.deselectableClass].join(' ')); showTab(a, $show); }); this.blur(); @@ -504,7 +504,7 @@ $.widget("ui.tabs", { if ($.data(this, 'destroy.tabs')) $(this).remove(); else - $(this).removeClass([o.selectedClass, o.unselectClass, + $(this).removeClass([o.selectedClass, o.deselectableClass, o.disabledClass, o.panelClass, o.hideClass].join(' ')); }); if (o.cookie) @@ -512,39 +512,35 @@ $.widget("ui.tabs", { } }); -$.ui.tabs.version = "@VERSION"; -$.ui.tabs.defaults = { - // basic setup - unselect: false, - event: 'click', - disabled: [], - cookie: null, // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true } - // TODO history: false, - - // Ajax - spinner: 'Loading…', - cache: false, - idPrefix: 'ui-tabs-', - ajaxOptions: null, - - // animations - fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 } - - // templates - tabTemplate: '
  • #{label}
  • ', - panelTemplate: '
    ', - - // CSS classes - navClass: 'ui-tabs-nav', - selectedClass: 'ui-tabs-selected', - unselectClass: 'ui-tabs-unselect', - disabledClass: 'ui-tabs-disabled', - panelClass: 'ui-tabs-panel', - hideClass: 'ui-tabs-hide', - loadingClass: 'ui-tabs-loading' -}; - -$.ui.tabs.getter = "length"; +$.extend($.ui.tabs, { + version: '@VERSION', + getter: 'length', + defaults: { + // basic setup + deselectable: false, + event: 'click', + disabled: [], + cookie: null, // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true } + // Ajax + spinner: 'Loading…', + cache: false, + idPrefix: 'ui-tabs-', + ajaxOptions: null, + // animations + fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 } + // templates + tabTemplate: '
  • #{label}
  • ', + panelTemplate: '
    ', + // CSS class names + navClass: 'ui-tabs-nav', + selectedClass: 'ui-tabs-selected', + deselectableClass: 'ui-tabs-deselectable', + disabledClass: 'ui-tabs-disabled', + panelClass: 'ui-tabs-panel', + hideClass: 'ui-tabs-hide', + loadingClass: 'ui-tabs-loading' + } +}); /* * Tabs Extensions -- 2.39.5