Skip to content

Commit 4d67f4f

Browse files
committed
Widget: Stop setting ui-state-disabled and aria by default on setting disabled option.
Fixes #5973 - Resizable: disabled should not have the ui-state-disabled class or aria attribute aria-disabled Fixes #5974 - Draggable: disabled should not have the ui-state-disabled class or aria attribute aria-disabled Fixes #6039 - Droppable : disabled should not have ui-state-disabled
1 parent 4f95a0f commit 4d67f4f

23 files changed

+174
-106
lines changed

tests/unit/accordion/accordion_methods.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,15 @@ test( "destroy", function() {
1414
});
1515

1616
test( "enable/disable", function() {
17-
expect( 4 );
17+
expect( 7 );
1818
var element = $( "#list1" ).accordion();
1919
state( element, 1, 0, 0 );
2020
element.accordion( "disable" );
21+
22+
ok( element.hasClass( "ui-state-disabled" ), "element gets ui-state-disabled" );
23+
equal( element.attr( "aria-disabled" ), "true", "element gets aria-disabled" );
24+
ok( element.hasClass( "ui-accordion-disabled" ), "element gets ui-accordion-disabled" );
25+
2126
// event does nothing
2227
element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "click" );
2328
state( element, 1, 0, 0 );

tests/unit/autocomplete/autocomplete_options.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,17 +88,20 @@ asyncTest( "delay", function() {
8888
});
8989

9090
asyncTest( "disabled", function() {
91-
expect( 2 );
91+
expect( 5 );
9292
var element = $( "#autocomplete" ).autocomplete({
9393
source: data,
94-
delay: 0,
95-
disabled: true
94+
delay: 0
9695
}),
97-
menu = element.autocomplete( "widget" );
96+
menu = element.autocomplete( "disable" ).autocomplete( "widget" );
9897
element.val( "ja" ).keydown();
9998

10099
ok( menu.is( ":hidden" ) );
101100

101+
ok( !element.is( ".ui-state-disabled" ), "element doesn't get ui-state-disabled" );
102+
ok( !element.attr( "aria-disabled" ), "element doesn't get aria-disabled" );
103+
ok( menu.is( ".ui-autocomplete-disabled" ), "element gets ui-autocomplete-disabled" );
104+
102105
setTimeout(function() {
103106
ok( menu.is( ":hidden" ) );
104107
start();

tests/unit/button/button_options.js

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,26 @@
33
*/
44
(function($) {
55

6-
module("button: options");
6+
module( "button: options" );
77

8-
test("disabled, explicit value", function() {
9-
expect( 4 );
10-
$("#radio01").button({ disabled: false });
11-
deepEqual(false, $("#radio01").button("option", "disabled"),
12-
"disabled option set to false");
13-
deepEqual(false, $("#radio01").prop("disabled"), "element is disabled");
8+
test( "disabled, explicit value", function() {
9+
expect( 9 );
1410

15-
$("#radio02").button({ disabled: true });
16-
deepEqual(true, $("#radio02").button("option", "disabled"),
17-
"disabled option set to true");
18-
deepEqual(true, $("#radio02").prop("disabled"), "element is not disabled");
11+
var element = $( "#radio01" ).button({ disabled: false });
12+
deepEqual( element.button( "option", "disabled" ), false, "disabled option set to false" );
13+
deepEqual( element.prop( "disabled" ), false, "element is disabled" );
14+
15+
ok( !element.button( "widget" ).hasClass( "ui-state-disabled" ), "element gets ui-state-disabled" );
16+
ok( !element.button( "widget" ).hasClass( "ui-button-disabled" ), "element gets ui-button-disabled" );
17+
18+
element = $( "#radio02" ).button({ disabled: true });
19+
20+
ok( element.button( "widget" ).hasClass( "ui-state-disabled" ), "element gets ui-state-disabled" );
21+
ok( !element.button( "widget" ).attr( "aria-disabled" ), "element does not get aria-disabled" );
22+
ok( element.button( "widget" ).hasClass( "ui-button-disabled" ), "element gets ui-button-disabled" );
23+
24+
deepEqual( element.button( "option", "disabled" ), true, "disabled option set to true" );
25+
deepEqual( element.prop( "disabled" ), true, "element is not disabled" );
1926
});
2027

2128
test("disabled, null", function() {

tests/unit/dialog/dialog_methods.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,13 @@ test("#4980: Destroy should place element back in original DOM position", functi
101101
});
102102

103103
test( "enable/disable disabled", function() {
104-
expect( 2 );
104+
expect( 4 );
105105
var element = $( "<div></div>" ).dialog();
106106
element.dialog( "disable" );
107107
equal(element.dialog( "option", "disabled" ), false, "disable method doesn't do anything" );
108108
ok( !element.dialog( "widget" ).hasClass( "ui-dialog-disabled" ), "disable method doesn't add ui-dialog-disabled class" );
109+
ok( !element.dialog( "widget" ).hasClass( "ui-state-disabled" ), "disable method doesn't add ui-state-disabled class" );
110+
ok( !element.dialog( "widget" ).attr( "aria-disabled" ), "disable method doesn't add aria-disabled" );
109111
});
110112

111113
test("close", function() {

tests/unit/draggable/draggable_methods.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,25 +74,29 @@ test( "enable", function() {
7474
});
7575

7676
test( "disable", function() {
77-
expect( 7 );
77+
expect( 10 );
7878

79-
element = $("#draggable2").draggable({ disabled: false });
79+
element = $( "#draggable2" ).draggable({ disabled: false });
8080
TestHelpers.draggable.shouldMove( element, ".draggable({ disabled: false })" );
8181

82-
element.draggable("disable");
82+
element.draggable( "disable" );
8383
TestHelpers.draggable.shouldNotMove( element, ".draggable('disable')" );
8484
equal( element.draggable( "option", "disabled" ), true, "disabled option getter" );
8585

86-
element.draggable("destroy");
86+
element.draggable( "destroy" );
8787
element.draggable({ disabled: false });
8888
TestHelpers.draggable.shouldMove( element, ".draggable({ disabled: false })" );
8989

9090
element.draggable( "option", "disabled", true );
9191
equal( element.draggable( "option", "disabled" ), true, "disabled option setter" );
9292
TestHelpers.draggable.shouldNotMove( element, ".draggable('option', 'disabled', true)" );
9393

94+
ok( !element.draggable( "widget" ).hasClass( "ui-state-disabled" ), "element does not get ui-state-disabled" );
95+
ok( !element.draggable( "widget" ).attr( "aria-disabled" ), "element does not get aria-disabled" );
96+
ok( element.draggable( "widget" ).hasClass( "ui-draggable-disabled" ), "element gets ui-draggable-disabled" );
97+
9498
var expected = element.draggable(),
95-
actual = expected.draggable("disable");
99+
actual = expected.draggable( "disable" );
96100
equal( actual, expected, "disable is chainable" );
97101
});
98102

tests/unit/droppable/droppable_methods.js

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -63,26 +63,29 @@ test("enable", function() {
6363
equal(actual, expected, "enable is chainable");
6464
});
6565

66-
test("disable", function() {
67-
expect(7);
66+
test( "disable", function() {
67+
expect( 10 );
6868

69-
var el, actual, expected;
69+
var actual, expected,
70+
element = $( "#droppable1" ).droppable({ disabled: false });
7071

71-
el = $("#droppable1").droppable({ disabled: false });
7272
TestHelpers.droppable.shouldDrop();
73-
el.droppable("disable");
73+
element.droppable( "disable" );
7474
TestHelpers.droppable.shouldNotDrop();
75-
equal(el.droppable("option", "disabled"), true, "disabled option getter");
76-
el.droppable("destroy");
77-
el.droppable({ disabled: false });
75+
equal( element.droppable( "option", "disabled" ), true, "disabled option getter" );
76+
element.droppable( "destroy" );
77+
element.droppable({ disabled: false });
7878
TestHelpers.droppable.shouldDrop();
79-
el.droppable("option", "disabled", true);
80-
equal(el.droppable("option", "disabled"), true, "disabled option setter");
79+
element.droppable( "option", "disabled", true );
80+
ok( !element.droppable( "widget" ).hasClass( "ui-state-disabled" ), "element does not get ui-state-disabled" );
81+
ok( !element.droppable( "widget" ).attr( "aria-disabled" ), "element does not get aria-disabled" );
82+
ok( element.droppable( "widget" ).hasClass( "ui-droppable-disabled" ), "element gets ui-droppable-disabled" );
83+
equal( element.droppable( "option", "disabled" ), true, "disabled option setter" );
8184
TestHelpers.droppable.shouldNotDrop();
8285

83-
expected = $("<div></div>").droppable(),
84-
actual = expected.droppable("disable");
85-
equal(actual, expected, "disable is chainable");
86+
expected = $( "<div></div>" ).droppable();
87+
actual = expected.droppable( "disable" );
88+
equal( actual, expected, "disable is chainable" );
8689
});
8790

8891
})(jQuery);

tests/unit/progressbar/progressbar_methods.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@ test( "destroy", function() {
77
});
88
});
99

10+
test( "disable", function() {
11+
expect( 3 );
12+
13+
var element = $( "#progressbar" ).progressbar().progressbar( "disable" );
14+
15+
ok( element.progressbar( "widget" ).hasClass( "ui-state-disabled" ), "element gets ui-state-disabled" );
16+
ok( element.progressbar( "widget" ).attr( "aria-disabled" ), "element gets aria-disabled" );
17+
ok( element.progressbar( "widget" ).hasClass( "ui-progressbar-disabled" ), "element gets ui-progressbar-disabled" );
18+
});
19+
1020
test( "value", function() {
1121
expect( 3 );
1222

tests/unit/resizable/resizable_methods.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,19 @@
33
*/
44
(function($) {
55

6-
module("resizable: methods");
6+
module( "resizable: methods" );
77

8-
// this is here to make JSHint pass "unused", and we don't want to
9-
// remove the parameter for when we finally implement
10-
$.noop();
8+
test( "disable", function() {
9+
expect( 5 );
10+
11+
var element = $( "#resizable1" ).resizable({ disabled: false }),
12+
chainable = element.resizable( "disable" );
13+
14+
ok( !element.resizable( "widget" ).hasClass( "ui-state-disabled" ), "element does not get ui-state-disabled" );
15+
ok( !element.resizable( "widget" ).attr( "aria-disabled" ), "element does not get aria-disabled" );
16+
ok( element.resizable( "widget" ).hasClass( "ui-resizable-disabled" ), "element gets ui-resizable-disabled" );
17+
equal( element.resizable( "option", "disabled" ), true, "disabled option setter" );
18+
equal( chainable, element, "disable is chainable" );
19+
});
1120

1221
})(jQuery);

tests/unit/selectable/selectable_methods.js

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -71,34 +71,40 @@ test("enable", function() {
7171
equal(actual, expected, "enable is chainable");
7272
});
7373

74-
test("disable", function() {
75-
expect(3);
76-
var expected, actual,
74+
test( "disable", function() {
75+
expect( 6 );
76+
var chainable,
7777
fired = false,
78-
el = $("#selectable1");
78+
element = $( "#selectable1" );
7979

80-
el.selectable({
80+
element.selectable({
8181
disabled: false,
82-
start: function() { fired = true; }
82+
start: function() {
83+
fired = true;
84+
}
8385
});
84-
el.simulate( "drag", {
86+
element.simulate( "drag", {
8587
dx: 20,
8688
dy: 20
8789
});
88-
equal(fired, true, "start fired");
89-
el.selectable("disable");
90+
equal( fired, true, "start fired" );
91+
92+
chainable = element.selectable( "disable" );
9093
fired = false;
9194

92-
el.simulate( "drag", {
95+
element.simulate( "drag", {
9396
dx: 20,
9497
dy: 20
9598
});
96-
equal(fired, false, "start fired");
97-
el.selectable("destroy");
99+
equal( fired, false, "start fired" );
98100

99-
expected = $("<div></div>").selectable();
100-
actual = expected.selectable("disable");
101-
equal(actual, expected, "disable is chainable");
101+
ok( !element.selectable( "widget" ).hasClass( "ui-state-disabled" ), "element does not get ui-state-disabled" );
102+
ok( !element.selectable( "widget" ).attr( "aria-disabled" ), "element does not get aria-disabled" );
103+
ok( element.selectable( "widget" ).hasClass( "ui-selectable-disabled" ), "element gets ui-selectable-disabled" );
104+
105+
element.selectable( "destroy" );
106+
107+
equal( chainable, element, "disable is chainable" );
102108
});
103109

104110
})(jQuery);

tests/unit/slider/slider_methods.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ test( "enable", function() {
4949
});
5050

5151
test( "disable", function() {
52-
expect( 5 );
52+
expect( 6 );
5353
var element,
5454
expected = $( "<div></div>" ).slider(),
5555
actual = expected.slider( "disable" );
@@ -61,6 +61,7 @@ test( "disable", function() {
6161
element.slider( "disable" );
6262
ok( element.hasClass( "ui-state-disabled" ), "slider has ui-state-disabled class after disable method call" );
6363
ok( element.hasClass( "ui-slider-disabled" ), "slider has ui-slider-disabled class after disable method call" );
64+
ok( !element.attr( "aria-disabled" ), "slider does not have aria-disabled attr after disable method call" );
6465
});
6566

6667
test( "value", function() {

tests/unit/sortable/sortable_methods.js

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -64,29 +64,30 @@ test("enable", function() {
6464
equal(actual, expected, "enable is chainable");
6565
});
6666

67-
test("disable", function() {
68-
expect(7);
67+
test( "disable", function() {
68+
expect( 9 );
6969

70-
var el, actual, expected;
70+
var chainable,
71+
element = $( "#sortable" ).sortable({ disabled: false });
7172

72-
el = $("#sortable").sortable({ disabled: false });
73-
TestHelpers.sortable.sort($("li", el)[0], 0, 44, 2, ".sortable({ disabled: false })");
73+
TestHelpers.sortable.sort( $( "li", element )[ 0 ], 0, 44, 2, ".sortable({ disabled: false })" );
7474

75-
el.sortable("disable");
76-
TestHelpers.sortable.sort($("li", el)[0], 0, 44, 0, "disabled.sortable getter");
75+
chainable = element.sortable( "disable" );
76+
TestHelpers.sortable.sort( $( "li", element )[ 0 ], 0, 44, 0, "disabled.sortable getter" );
7777

78-
el.sortable("destroy");
78+
element.sortable( "destroy" );
7979

80-
el.sortable({ disabled: false });
81-
TestHelpers.sortable.sort($("li", el)[0], 0, 44, 2, ".sortable({ disabled: false })");
82-
el.sortable("option", "disabled", true);
83-
equal(el.sortable("option", "disabled"), true, "disabled option setter");
84-
ok(el.sortable("widget").is(":not(.ui-state-disabled)"), "sortable element does not get ui-state-disabled since it's an interaction");
85-
TestHelpers.sortable.sort($("li", el)[0], 0, 44, 0, ".sortable('option', 'disabled', true)");
80+
element.sortable({ disabled: false });
81+
TestHelpers.sortable.sort( $( "li", element )[ 0 ], 0, 44, 2, ".sortable({ disabled: false })" );
82+
element.sortable( "option", "disabled", true);
83+
equal( element.sortable( "option", "disabled" ), true, "disabled option setter" );
8684

87-
expected = $("<div></div>").sortable(),
88-
actual = expected.sortable("disable");
89-
equal(actual, expected, "disable is chainable");
85+
ok( !element.sortable( "widget" ).hasClass( "ui-state-disabled" ), "element does not get ui-state-disabled" );
86+
ok( !element.sortable( "widget" ).attr( "aria-disabled" ), "element does not get aria-disabled" );
87+
ok( element.sortable( "widget" ).hasClass( "ui-sortable-disabled" ), "element gets ui-sortable-disabled" );
88+
89+
TestHelpers.sortable.sort($( "li", element )[ 0 ], 0, 44, 0, ".sortable('option', 'disabled', true)" );
90+
equal( chainable, element, "disable is chainable" );
9091
});
9192

9293
})(jQuery);

tests/unit/spinner/spinner_methods.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ test( "destroy", function() {
1212
});
1313

1414
test( "disable", function() {
15-
expect( 14 );
15+
expect( 16 );
1616
var element = $( "#spin" ).val( 2 ).spinner(),
1717
wrapper = $( "#spin" ).spinner( "widget" );
1818

@@ -21,6 +21,8 @@ test( "disable", function() {
2121

2222
element.spinner( "disable" );
2323
ok( wrapper.hasClass( "ui-spinner-disabled" ), "after: wrapper has ui-spinner-disabled class" );
24+
ok( wrapper.hasClass( "ui-state-disabled" ), "after: wrapper has ui-state-disabled class" );
25+
ok( !wrapper.attr( "aria-disabled" ), "after: wrapper does not have aria-disabled attr" );
2426
ok( element.is( ":disabled"), "after: input has disabled attribute" );
2527

2628
simulateKeyDownUp( element, $.ui.keyCode.UP );

tests/unit/tabs/tabs_options.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,24 +144,40 @@ test( "{ collapsible: true }", function() {
144144
});
145145

146146
test( "disabled", function() {
147-
expect( 10 );
147+
expect( 22 );
148148

149149
// fully enabled by default
150150
var element = $( "#tabs1" ).tabs();
151151
disabled( element, false );
152152

153+
ok( !element.tabs( "widget" ).hasClass( "ui-state-disabled" ), "after: wrapper doesn't have ui-state-disabled class" );
154+
ok( !element.tabs( "widget" ).hasClass( "ui-tabs-disabled" ), "after: wrapper doesn't have ui-tabs-disabled class" );
155+
ok( !element.tabs( "widget" ).attr( "aria-disabled" ), "after: wrapper doesn't have aria-disabled attr" );
156+
153157
// disable single tab
154158
element.tabs( "option", "disabled", [ 1 ] );
155159
disabled( element, [ 1 ] );
156160

161+
ok( !element.tabs( "widget" ).hasClass( "ui-state-disabled" ), "after: wrapper doesn't have ui-state-disabled class" );
162+
ok( !element.tabs( "widget" ).hasClass( "ui-tabs-disabled" ), "after: wrapper doesn't have ui-tabs-disabled class" );
163+
ok( !element.tabs( "widget" ).attr( "aria-disabled" ), "after: wrapper doesn't have aria-disabled attr" );
164+
157165
// disabled active tab
158166
element.tabs( "option", "disabled", [ 0, 1 ] );
159167
disabled( element, [ 0, 1 ] );
160168

169+
ok( !element.tabs( "widget" ).hasClass( "ui-state-disabled" ), "after: wrapper doesn't have ui-state-disabled class" );
170+
ok( !element.tabs( "widget" ).hasClass( "ui-tabs-disabled" ), "after: wrapper doesn't have ui-tabs-disabled class" );
171+
ok( !element.tabs( "widget" ).attr( "aria-disabled" ), "after: wrapper doesn't have aria-disabled attr" );
172+
161173
// disable all tabs
162174
element.tabs( "option", "disabled", [ 0, 1, 2 ] );
163175
disabled( element, true );
164176

177+
ok( !element.tabs( "widget" ).hasClass( "ui-state-disabled" ), "after: wrapper doesn't have ui-state-disabled class" );
178+
ok( !element.tabs( "widget" ).hasClass( "ui-tabs-disabled" ), "after: wrapper doesn't have ui-tabs-disabled class" );
179+
ok( !element.tabs( "widget" ).attr( "aria-disabled" ), "after: wrapper doesn't have aria-disabled attr" );
180+
165181
// enable all tabs
166182
element.tabs( "option", "disabled", [] );
167183
disabled( element, false );

0 commit comments

Comments
 (0)