Skip to content

Commit

Permalink
Tabs: Deprecate enable and disable events. Fixes #7142 Tabs: Deprecat…
Browse files Browse the repository at this point in the history
…e enable and disable events
  • Loading branch information
petersendidit committed Mar 27, 2011
1 parent e7971c9 commit e5f081b
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 39 deletions.
2 changes: 0 additions & 2 deletions tests/unit/tabs/tabs_defaults.js
Expand Up @@ -7,9 +7,7 @@ var tabs_defaults = {
beforeload: null,
collapsible: false,
cookie: null,
disable: null,
disabled: false,
enable: null,
event: "click",
fx: null,
idPrefix: "ui-tabs-",
Expand Down
35 changes: 35 additions & 0 deletions tests/unit/tabs/tabs_deprecated.js
Expand Up @@ -41,4 +41,39 @@ test('spinner', function() {
});
});

module("tabs (deprecated): enable/disable events");

test('enable', function() {
expect(4);

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

test('disable', function() {
expect(4);

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

}( jQuery ) );
33 changes: 0 additions & 33 deletions tests/unit/tabs/tabs_events.js
Expand Up @@ -88,37 +88,4 @@ test('remove', function() {
ok(false, "missing test - untested code is broken code.");
});

test('enable', function() {
expect(4);

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

test('disable', function() {
expect(4);

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

})(jQuery);
45 changes: 41 additions & 4 deletions ui/jquery.ui.tabs.js
Expand Up @@ -30,9 +30,7 @@ $.widget( "ui.tabs", {
beforeload: null,
cookie: null, // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }
collapsible: false,
disable: null,
disabled: false,
enable: null,
event: "click",
fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 }
idPrefix: "ui-tabs-",
Expand Down Expand Up @@ -545,7 +543,6 @@ $.widget( "ui.tabs", {
o.disabled = false;
}

this._trigger( "enable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );
return this;
},

Expand All @@ -569,7 +566,6 @@ $.widget( "ui.tabs", {
o.disabled = true;
}

this._trigger( "disable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );
}

return this;
Expand Down Expand Up @@ -768,6 +764,47 @@ if ( $.uiBackCompat !== false ) {
});
};
}( jQuery, jQuery.ui.tabs.prototype ) );

// enable/disable events
(function( $, prototype ) {
$.extend( prototype.options, {
enable: null,
disable: null
});

var enable = prototype.enable,
disable = prototype.disable;

prototype.enable = function( index ) {
var o = this.options,
trigger;

if ( index && o.disabled || ($.isArray( o.disabled ) && $.inArray( index, o.disabled ) !== -1 ) ) {
trigger = true;
}

enable.apply( this, arguments );

if ( trigger ) {
this._trigger( "enable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );
}
};

prototype.disable = function( index ) {
var o = this.options,
trigger;

if ( index && !o.disabled || ($.isArray( o.disabled ) && $.inArray( index, o.disabled ) == -1 ) ) {
trigger = true;
}

disable.apply( this, arguments );

if ( trigger ) {
this._trigger( "disable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );
}
};
}( jQuery, jQuery.ui.tabs.prototype ) );
}

})( jQuery );

0 comments on commit e5f081b

Please sign in to comment.