sortable: don't call the base widget _setOption for disabled to avoid the ui-state-disabled class being added. Fixes #5501 - sortable: disabled should not have the ui-state-disabled class

This commit is contained in:
Richard D. Worth 2010-04-09 14:43:44 -04:00
parent ffc29bba05
commit 3291d3951a
2 changed files with 14 additions and 1 deletions

View File

@ -84,7 +84,7 @@ test("enable", function() {
}); });
test("disable", function() { test("disable", function() {
expect(6); expect(7);
el = $("#sortable").sortable({ disabled: false }); el = $("#sortable").sortable({ disabled: false });
sort($("li", el)[0], 0, 40, 2, '.sortable({ disabled: false })'); sort($("li", el)[0], 0, 40, 2, '.sortable({ disabled: false })');
@ -97,6 +97,7 @@ test("disable", function() {
sort($("li", el)[0], 0, 40, 2, '.sortable({ disabled: false })'); sort($("li", el)[0], 0, 40, 2, '.sortable({ disabled: false })');
el.sortable("option", "disabled", true); el.sortable("option", "disabled", true);
equals(el.sortable("option", "disabled"), true, "disabled option setter"); equals(el.sortable("option", "disabled"), true, "disabled option setter");
ok(el.sortable("widget").is(":not(.ui-state-disabled)"), "sortable element does not get ui-state-disabled since it's an interaction");
sort($("li", el)[0], 0, 40, 0, '.sortable("option", "disabled", true)'); sort($("li", el)[0], 0, 40, 0, '.sortable("option", "disabled", true)');
var expected = $('<div></div>').sortable(), var expected = $('<div></div>').sortable(),

View File

@ -73,6 +73,18 @@ $.widget("ui.sortable", $.ui.mouse, {
return this; return this;
}, },
_setOption: function(key, value){
if ( key === "disabled" ) {
this.options[ key ] = value;
this.widget()
[ value ? "addClass" : "removeClass"]( "ui-sortable-disabled" );
} else {
// Don't call widget base _setOption for disable as it adds ui-state-disabled class
$.Widget.prototype._setOption.apply(self, arguments);
}
},
_mouseCapture: function(event, overrideHandle) { _mouseCapture: function(event, overrideHandle) {
if (this.reverting) { if (this.reverting) {