sproutcore 1.5.0.pre.4 → 1.5.0.pre.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +6 -0
- data/VERSION.yml +1 -1
- data/lib/Buildfile +1 -1
- data/lib/buildtasks/build.rake +14 -6
- data/lib/buildtasks/manifest.rake +171 -72
- data/lib/frameworks/sproutcore/Buildfile +3 -5
- data/lib/frameworks/sproutcore/CHANGELOG.md +9 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +2 -1
- data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +7 -17
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +7 -1
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +14 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +14 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +49 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +46 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +32 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +32 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +31 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +15 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +28 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +20 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +2 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +40 -34
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +35 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +43 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +47 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +6 -16
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +41 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +128 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +93 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +13 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +47 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +51 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/method.js +33 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +29 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +9 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +148 -134
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +30 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +9 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +52 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +36 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +9 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +15 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +1 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +7 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/well.js +1 -2
- data/lib/frameworks/sproutcore/frameworks/forms/views/form.js +3 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +25 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +64 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +34 -27
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +42 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +62 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +0 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +48 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +19 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +11 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +152 -74
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +12 -9
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +1476 -176
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +227 -32
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +10 -0
- data/lib/frameworks/sproutcore/lib/index.rhtml +30 -8
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +4 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +4 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +4 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +4 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +4 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.css +5 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.js +11 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/well/well.css +7 -8
- data/lib/frameworks/sproutcore/themes/ace/resources/well/well.js +2 -4
- data/lib/gen/app/templates/apps/@target_name@/Buildfile +14 -0
- data/lib/gen/app/templates/apps/@target_name@/theme.js +27 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +4 -0
- data/lib/gen/project/templates/@filename@/Buildfile +7 -2
- data/lib/gen/theme/templates/themes/@target_name@/Buildfile +3 -0
- data/lib/gen/theme/templates/themes/@target_name@/theme.js +23 -0
- data/lib/sproutcore/builders.rb +2 -0
- data/lib/sproutcore/builders/chance.rb +64 -0
- data/lib/sproutcore/builders/chance_file.rb +59 -0
- data/lib/sproutcore/builders/combine.rb +0 -45
- data/lib/sproutcore/builders/html.rb +1 -1
- data/lib/sproutcore/builders/minify.rb +5 -17
- data/lib/sproutcore/builders/module.rb +2 -2
- data/lib/sproutcore/builders/string_wrapper.rb +13 -15
- data/lib/sproutcore/helpers.rb +1 -1
- data/lib/sproutcore/helpers/minifier.rb +56 -0
- data/lib/sproutcore/helpers/static_helper.rb +86 -40
- data/lib/sproutcore/models/generator.rb +16 -0
- data/lib/sproutcore/models/manifest_entry.rb +8 -1
- data/lib/sproutcore/models/target.rb +101 -33
- data/lib/sproutcore/tools.rb +0 -7
- data/lib/sproutcore/tools/build.rb +2 -37
- data/spec/buildtasks/manifest/prepare_build_tasks/chance_spec.rb +100 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +86 -9
- data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +1 -1
- data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +1 -1
- data/spec/buildtasks/manifest/prepare_build_tasks/module_info_spec.rb +96 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/module_spec.rb +83 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +37 -4
- data/spec/buildtasks/manifest/spec_helper.rb +4 -0
- data/spec/fixtures/builder_tests/Buildfile +11 -9
- data/spec/fixtures/builder_tests/apps/chance_test/Buildfile +14 -0
- data/spec/fixtures/builder_tests/apps/chance_test/core.js +27 -0
- data/spec/fixtures/builder_tests/apps/chance_test/main.js +30 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/demo.css +6 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/last_file.css +7 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/loading.rhtml +9 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/main_page.js +24 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/z_first_file.css +6 -0
- data/spec/fixtures/builder_tests/apps/chance_test/theme.js +27 -0
- data/spec/fixtures/builder_tests/apps/module_test/module.js +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/req_style_2.css +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/test.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/javascript.js +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/lib/alt_layout.rhtml +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/req_js_2.js +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/dynamic_req_js_1.js +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/english.lproj/dynamic_req_style_1.css +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/inlined_module/README +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/req_style_1.css +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/strings.js +4 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/test.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/req_js_1.js +0 -0
- data/spec/fixtures/helper_tests/apps/minifier_test/core.js +8 -0
- data/spec/fixtures/real_world/Buildfile +11 -1
- data/spec/fixtures/real_world/apps/account/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/calendar/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/contacts/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/contacts/modules/printing/README +0 -0
- data/spec/fixtures/real_world/apps/mail/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/mail/modules/printing/README +0 -0
- data/spec/fixtures/real_world/apps/photos/modules/email/README +0 -0
- data/spec/fixtures/real_world/apps/photos/modules/preferences/README +0 -0
- data/spec/lib/builders/chance_file_spec.rb +63 -0
- data/spec/lib/builders/chance_spec.rb +81 -0
- data/spec/lib/builders/module_spec.rb +133 -0
- data/spec/lib/helpers/minifier.rb +31 -0
- data/spec/lib/models/project/find_targets_for_spec.rb +1 -1
- data/vendor/chance/lib/chance/imagers/data_url.rb +68 -17
- data/vendor/chance/lib/chance/instance.rb +55 -30
- data/vendor/chance/lib/chance/parser.rb +1 -1
- data/vendor/chance/lib/chance/slicing.rb +39 -3
- metadata +52 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/system/logger.js +0 -163
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/logger.js +0 -44
- data/spec/buildtasks/manifest/prepare_build_tasks/bundle_spec.rb +0 -254
- data/spec/fixtures/builder_tests/apps/bundle_test/bundle.js +0 -1
- data/spec/lib/builders/bundle_spec.rb +0 -295
@@ -42,6 +42,22 @@ var pane = SC.ControlTestPane.design({height:24})
|
|
42
42
|
.add("title,toolTip", SC.ButtonView, {
|
43
43
|
title: "Hello World", toolTip: 'Hello World is my tool tip'
|
44
44
|
})
|
45
|
+
|
46
|
+
.add("aria-role", SC.ButtonView, {
|
47
|
+
title: 'aria-role',
|
48
|
+
ariaRole: 'button'
|
49
|
+
})
|
50
|
+
|
51
|
+
.add("aria-pressed", SC.ButtonView, {
|
52
|
+
title: 'aria-pressed',
|
53
|
+
ariaRole: 'button'
|
54
|
+
})
|
55
|
+
|
56
|
+
.add("aria-haspopup",SC.PopupButtonView, {
|
57
|
+
title: 'aria-haspopup',
|
58
|
+
ariaRole: 'button',
|
59
|
+
menu: ['a','b']
|
60
|
+
});
|
45
61
|
//
|
46
62
|
// .add("autocontrolsize", SC.ButtonView, {
|
47
63
|
// controlSize: SC.AUTO_CONTROL_SIZE,
|
@@ -67,6 +83,9 @@ test("Check that all button are visible", function() {
|
|
67
83
|
ok(pane.view('title,icon,default').get('isVisibleInWindow'), 'title,icon,default.isVisibleInWindow should be YES');
|
68
84
|
ok(pane.view('title,icon,selected').get('isVisibleInWindow'), 'title.icon,selected.isVisibleInWindow should be YES');
|
69
85
|
ok(pane.view('title,toolTip').get('isVisibleInWindow'), 'title,toolTip.isVisibleInWindow should be YES');
|
86
|
+
ok(pane.view('aria-role').get('isVisibleInWindow'), 'aria-role.isVisibleInWindow should be YES');
|
87
|
+
ok(pane.view('aria-pressed').get('isVisibleInWindow'), 'aria-pressed.isVisibleInWindow should be YES');
|
88
|
+
ok(pane.view('aria-haspopup').get('isVisibleInWindow'), 'aria-haspopup.isVisibleInWindow should be YES');
|
70
89
|
});
|
71
90
|
|
72
91
|
|
@@ -170,6 +189,34 @@ test("Check if title,toolTip has the tool tip set", function() {
|
|
170
189
|
ok(viewElem.attr("title") == 'Hello World is my tool tip', 'title,toolTip has the expected tool tip set.');
|
171
190
|
});
|
172
191
|
|
192
|
+
test("Check if aria role is set to button", function() {
|
193
|
+
var viewElem=pane.view('aria-role').$();
|
194
|
+
ok(viewElem.attr("role") == 'button', 'aria-role is set to button.');
|
195
|
+
});
|
196
|
+
|
197
|
+
test("Check if aria haspopup is set to button", function() {
|
198
|
+
var viewElem=pane.view('aria-haspopup').$();
|
199
|
+
ok(viewElem.attr("aria-haspopup") == 'true', 'aria-haspopup should be true.');
|
200
|
+
});
|
201
|
+
|
202
|
+
test("aria-pressed attribute to be false by default", function(){
|
203
|
+
var b = pane.view('aria-pressed').$();
|
204
|
+
equals(b.attr("aria-pressed") , "false", "should have false by default");
|
205
|
+
});
|
206
|
+
|
207
|
+
test("mouseDown and then mouseUp anywhere in the button should toggle the aria-pressed", function() {
|
208
|
+
var b = pane.view('aria-pressed');
|
209
|
+
var elem = b.get('layer');
|
210
|
+
|
211
|
+
SC.Event.trigger(elem, 'mousedown');
|
212
|
+
equals(b.$().attr('aria-pressed'), 'true', 'aria-pressed should be true when mousedown');
|
213
|
+
|
214
|
+
SC.Event.trigger(elem,'mouseup');
|
215
|
+
equals(b.$().attr('aria-pressed'), 'false', 'aria-pressed should be false when mouseup');
|
216
|
+
|
217
|
+
elem = null ;
|
218
|
+
});
|
219
|
+
|
173
220
|
// test("Check if AUTO_CONTROL_SIZE button automatically calculated the correct controlSize", function() {
|
174
221
|
// var viewElem=pane.view('autocontrolsize').$();
|
175
222
|
// ok(viewElem.hasClass('sc-huge-size'), 'HUGE button has sc-huge-size class.');
|
@@ -98,17 +98,19 @@ test("isSelected should alter sel classname and sync with value property", funct
|
|
98
98
|
test("mouseDown and then mouseUp anywhere in the checkbox should toggle the selection", function() {
|
99
99
|
|
100
100
|
var elem = view.get('layer');
|
101
|
-
|
101
|
+
|
102
102
|
SC.Event.trigger(elem, 'mousedown');
|
103
103
|
ok(view.get('isActive'), 'view should be active');
|
104
104
|
ok(view.get('value'), 'value should not change yet');
|
105
|
-
|
105
|
+
equals(view.$().attr('aria-checked'), 'true', 'aria-checked should be true');
|
106
|
+
|
106
107
|
// simulate mouseUp and browser-native change to control
|
107
108
|
SC.Event.trigger(elem,'mouseup');
|
108
|
-
|
109
|
+
|
109
110
|
ok(!view.get('isActive'), 'view should no longer be active');
|
110
111
|
ok(!view.get('value'), 'value should change to NO');
|
111
|
-
|
112
|
+
equals(view.$().attr('aria-checked'), 'false', 'aria-checked should be false');
|
113
|
+
|
112
114
|
elem = null ;
|
113
115
|
});
|
114
116
|
|
@@ -122,15 +124,3 @@ test("isEnabled=NO should add disabled attr to input", function() {
|
|
122
124
|
view.mouseUp();
|
123
125
|
ok(view.get('value'), 'value should not change when clicked');
|
124
126
|
});
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
@@ -36,6 +36,16 @@ var pane = SC.ControlTestPane.design()
|
|
36
36
|
useStaticLayout: YES,
|
37
37
|
layout: { width: 'auto', right: 'auto' },
|
38
38
|
title: 'Different Length Title'
|
39
|
+
})
|
40
|
+
|
41
|
+
.add("role", SC.CheckboxView, {
|
42
|
+
value: YES, title: "role-checkbox"
|
43
|
+
})
|
44
|
+
|
45
|
+
.add("aria-label", SC.CheckboxView, {
|
46
|
+
value: NO, title: "aria-label",
|
47
|
+
ariaLabel:'TEXT BOX',
|
48
|
+
ariaLabeledBy: 'TEXT BOX1'
|
39
49
|
});
|
40
50
|
|
41
51
|
pane.show(); // add a test to show the test pane
|
@@ -92,4 +102,15 @@ test("disabled - selected", function() {
|
|
92
102
|
var label = view.$('span.label');
|
93
103
|
equals(label.text(), 'Hello World', 'should have label');
|
94
104
|
});
|
105
|
+
|
106
|
+
test("role", function() {
|
107
|
+
var view = pane.view('role');
|
108
|
+
equals(view.$().attr('role'),'checkbox', 'should have role as checkbox');
|
109
|
+
});
|
110
|
+
|
111
|
+
test("aria-label", function() {
|
112
|
+
var view = pane.view('aria-label');
|
113
|
+
equals(view.$().attr('aria-label'),'TEXT BOX', 'should have ariaLabel as TEXT-BOX');
|
114
|
+
equals(view.$().attr('aria-labelledby'),'TEXT BOX1', 'should have ariaLabeledby as TEXT-BOX1');
|
115
|
+
});
|
95
116
|
})();
|
@@ -20,7 +20,26 @@
|
|
20
20
|
})
|
21
21
|
.add("selected - disabled", SC.DisclosureView, {
|
22
22
|
value: YES, isEnabled: NO
|
23
|
-
})
|
23
|
+
})
|
24
|
+
|
25
|
+
.add("aria-role", SC.DisclosureView, {
|
26
|
+
value: NO, isEnabled: YES,
|
27
|
+
ariaLabel:'Disclosure'
|
28
|
+
})
|
29
|
+
|
30
|
+
.add("aria-label", SC.DisclosureView, {
|
31
|
+
value: YES, isEnabled: YES,
|
32
|
+
ariaLabel:'Disclosure'
|
33
|
+
})
|
34
|
+
.add("aria-expanded", SC.DisclosureView, {
|
35
|
+
value: YES, isEnabled: YES,
|
36
|
+
ariaLabel:'Disclosure'
|
37
|
+
})
|
38
|
+
.add("aria-expanded-disabled", SC.DisclosureView, {
|
39
|
+
value: NO, isEnabled: NO,
|
40
|
+
ariaLabel:'Disclosure'
|
41
|
+
});
|
42
|
+
|
24
43
|
pane.show();
|
25
44
|
|
26
45
|
module("TODO: Test SC.DisclosureView UI", pane.standardSetup());
|
@@ -61,4 +80,25 @@
|
|
61
80
|
// ok(input.attr('disabled'), 'input should be disabled');
|
62
81
|
});
|
63
82
|
|
83
|
+
test("aria role should be button for disclosure", function() {
|
84
|
+
var view = pane.view('aria-role');
|
85
|
+
equals(view.$().attr('role'), 'button', 'aria-role should be button');
|
86
|
+
});
|
87
|
+
|
88
|
+
test("aria label should be present", function() {
|
89
|
+
var view = pane.view('aria-label');
|
90
|
+
equals(view.$().attr('aria-label'), 'Disclosure', 'aria-label should be Disclosure');
|
91
|
+
});
|
92
|
+
|
93
|
+
test("aria pressed should be true if value is yes", function() {
|
94
|
+
var view = pane.view('aria-expanded');
|
95
|
+
equals(view.$().attr('aria-expanded'), 'true', 'aria-expanded should be true');
|
96
|
+
});
|
97
|
+
|
98
|
+
test("aria pressed should be false if value is no while the disclosure is disabled", function() {
|
99
|
+
var view = pane.view('aria-expanded-disabled');
|
100
|
+
equals(view.get('ariaLabel'), 'Disclosure', 'aria-label should be Disclosure even if it is disabled');
|
101
|
+
equals(view.$().attr('aria-expanded'), 'false', 'aria-expanded should be false');
|
102
|
+
});
|
103
|
+
|
64
104
|
})();
|
@@ -42,6 +42,43 @@ var pane = SC.ControlTestPane.design()
|
|
42
42
|
minimum: 0,
|
43
43
|
maximum: 50
|
44
44
|
})
|
45
|
+
.add("progress aria-role", SC.ProgressView, {
|
46
|
+
layout: {top:0, bottom:0, left:0, width: 250},
|
47
|
+
value: 10,
|
48
|
+
minimum: 0,
|
49
|
+
maximum: 50
|
50
|
+
})
|
51
|
+
.add("progress aria-valuemax", SC.ProgressView, {
|
52
|
+
layout: {top:0, bottom:0, left:0, width: 250},
|
53
|
+
value: 40,
|
54
|
+
minimum: 0,
|
55
|
+
maximum: 100
|
56
|
+
})
|
57
|
+
.add("progress aria-valuemin", SC.ProgressView, {
|
58
|
+
layout: {top:0, bottom:0, left:0, width: 250},
|
59
|
+
value: 20,
|
60
|
+
minimum: 0,
|
61
|
+
maximum: 100
|
62
|
+
})
|
63
|
+
.add("progress aria-valuenow", SC.ProgressView, {
|
64
|
+
layout: {top:0, bottom:0, left:0, width: 250},
|
65
|
+
value: 40,
|
66
|
+
minimum: 0,
|
67
|
+
maximum: 100
|
68
|
+
})
|
69
|
+
.add("progress aria-valuetext", SC.ProgressView, {
|
70
|
+
layout: {top:0, bottom:0, left:0, width: 250},
|
71
|
+
value: 20,
|
72
|
+
minimum: 0,
|
73
|
+
maximum: 100
|
74
|
+
})
|
75
|
+
.add("progress aria-disabled", SC.ProgressView, {
|
76
|
+
layout: {top:0, bottom:0, left:0, width: 250},
|
77
|
+
value: 50,
|
78
|
+
minimum: 0,
|
79
|
+
maximum: 100,
|
80
|
+
isEnabled: NO
|
81
|
+
})
|
45
82
|
|
46
83
|
// Slider View UI
|
47
84
|
.add("slider basic", SC.SliderView, {
|
@@ -69,6 +106,42 @@ var pane = SC.ControlTestPane.design()
|
|
69
106
|
minimum: 0,
|
70
107
|
maximum: 100,
|
71
108
|
step: 20
|
109
|
+
})
|
110
|
+
.add("slider aria-role", SC.SliderView, {
|
111
|
+
layout: {top:0, bottom:0, left:0, width: 250},
|
112
|
+
value: 10,
|
113
|
+
minimum: 0,
|
114
|
+
maximum: 50
|
115
|
+
})
|
116
|
+
.add("slider aria-valuemax", SC.SliderView, {
|
117
|
+
layout: {top:0, bottom:0, left:0, width: 250},
|
118
|
+
value: 40,
|
119
|
+
minimum: 0,
|
120
|
+
maximum: 100
|
121
|
+
})
|
122
|
+
.add("slider aria-valuemin", SC.SliderView, {
|
123
|
+
layout: {top:0, bottom:0, left:0, width: 250},
|
124
|
+
value: 20,
|
125
|
+
minimum: 0,
|
126
|
+
maximum: 100
|
127
|
+
})
|
128
|
+
.add("slider aria-valuenow", SC.SliderView, {
|
129
|
+
layout: {top:0, bottom:0, left:0, width: 250},
|
130
|
+
value: 40,
|
131
|
+
minimum: 0,
|
132
|
+
maximum: 100
|
133
|
+
})
|
134
|
+
.add("slider aria-valuetext", SC.SliderView, {
|
135
|
+
layout: {top:0, bottom:0, left:0, width: 250},
|
136
|
+
value: 20,
|
137
|
+
minimum: 0,
|
138
|
+
maximum: 100
|
139
|
+
})
|
140
|
+
.add("slider aria-orientation", SC.SliderView, {
|
141
|
+
layout: {top:0, bottom:0, left:0, width: 250},
|
142
|
+
value: 50,
|
143
|
+
minimum: 0,
|
144
|
+
maximum: 100
|
72
145
|
});
|
73
146
|
|
74
147
|
pane.show(); // add a test to show the test pane
|
@@ -242,6 +315,31 @@ test("changing value to a string", function() {
|
|
242
315
|
setTimeout(assertions, 200);
|
243
316
|
});
|
244
317
|
|
318
|
+
test("Check if aria role is set to progress view", function() {
|
319
|
+
var viewElem = pane.view('progress aria-role').$();
|
320
|
+
ok(viewElem.attr('role') === 'progressbar', 'aria-role is set to the progress view');
|
321
|
+
});
|
322
|
+
|
323
|
+
test("Check if attribute aria-valuemax is set correctly", function() {
|
324
|
+
var viewElem = pane.view('progress aria-valuemax').$();
|
325
|
+
equals(viewElem.attr('aria-valuemax'), 100, 'aria-valuemax should be 100');
|
326
|
+
});
|
327
|
+
|
328
|
+
test("Check if attribute aria-valuemin is set correctly", function() {
|
329
|
+
var viewElem = pane.view('progress aria-valuemin').$();
|
330
|
+
equals(viewElem.attr('aria-valuemin'), 0, 'aria-valuemin should be 0');
|
331
|
+
});
|
332
|
+
|
333
|
+
test("Check if attribute aria-valuenow is set correctly", function() {
|
334
|
+
var viewElem = pane.view('progress aria-valuenow').$();
|
335
|
+
equals(viewElem.attr('aria-valuenow'), 0.4, 'aria-valuenow should be 0.4');
|
336
|
+
});
|
337
|
+
|
338
|
+
test("Check if attribute aria-valuetext is set correctly", function() {
|
339
|
+
var viewElem = pane.view('progress aria-valuetext').$();
|
340
|
+
equals(viewElem.attr('aria-valuetext'), 0.2, 'aria-valuetext should be 0.2');
|
341
|
+
});
|
342
|
+
|
245
343
|
|
246
344
|
// ..........................................................
|
247
345
|
// SC.SliderView
|
@@ -284,4 +382,34 @@ test("basic step 20", function() {
|
|
284
382
|
ok(view.$('.sc-handle'), 'should have sc-handle class');
|
285
383
|
equals(view.$('.sc-handle').css('left'), '60%', 'left of sc-handle should be 60%');
|
286
384
|
});
|
385
|
+
|
386
|
+
test("Check if aria role is set to slider view", function() {
|
387
|
+
var viewElem = pane.view('slider aria-role').$();
|
388
|
+
ok(viewElem.attr('role') === 'slider', 'aria-role is set to the slider view');
|
389
|
+
});
|
390
|
+
|
391
|
+
test("Check if attribute aria-valuemax is set correctly", function() {
|
392
|
+
var viewElem = pane.view('slider aria-valuemax').$();
|
393
|
+
equals(viewElem.attr('aria-valuemax'), 100, 'aria-valuemax should be 100');
|
394
|
+
});
|
395
|
+
|
396
|
+
test("Check if attribute aria-valuemin is set correctly", function() {
|
397
|
+
var viewElem = pane.view('slider aria-valuemin').$();
|
398
|
+
equals(viewElem.attr('aria-valuemin'), 0, 'aria-valuemin should be 0');
|
399
|
+
});
|
400
|
+
|
401
|
+
test("Check if attribute aria-valuenow is set correctly", function() {
|
402
|
+
var viewElem = pane.view('slider aria-valuenow').$();
|
403
|
+
equals(viewElem.attr('aria-valuenow'), 40, 'aria-valuenow should be 40');
|
404
|
+
});
|
405
|
+
|
406
|
+
test("Check if attribute aria-valuetext is set correctly", function() {
|
407
|
+
var viewElem = pane.view('slider aria-valuetext').$();
|
408
|
+
equals(viewElem.attr('aria-valuetext'), 20, 'aria-valuetext should be 20');
|
409
|
+
});
|
410
|
+
|
411
|
+
test("Check if attribute aria-orientation is set correctly", function() {
|
412
|
+
var viewElem = pane.view('slider aria-orientation').$();
|
413
|
+
equals(viewElem.attr('aria-orientation'), "horizontal", 'aria-orientation should be horizontal');
|
414
|
+
});
|
287
415
|
})();
|
@@ -9,8 +9,8 @@
|
|
9
9
|
|
10
10
|
htmlbody('<style> .sc-static-layout { border: 1px red dotted; } </style>');
|
11
11
|
|
12
|
-
var itemList = [{ title: "Red", value: "red", enabled: YES }, { title: "Green", value: "green" }, { title: "Blue", value: "blue" }],
|
13
|
-
itemList2 = [{ title: "Cyan", value: "cyan", enabled: YES }, { title: "Magenta", value: "magenta" }, { title: "Yellow", value: "yellow" },{ title: "blacK", value: "black"}],
|
12
|
+
var itemList = [{ title: "Red", value: "red", enabled: YES,ariaLabeledBy: "color" }, { title: "Green", value: "green",ariaLabeledBy: "color" }, { title: "Blue", value: "blue",ariaLabeledBy: "color" }],
|
13
|
+
itemList2 = [{ title: "Cyan", value: "cyan", enabled: YES,ariaLabel: "itemList1" }, { title: "Magenta", value: "magenta",ariaLabel: "itemList1" }, { title: "Yellow", value: "yellow",ariaLabel: "itemList1" },{ title: "blacK", value: "black",ariaLabel: "itemList1" }],
|
14
14
|
itemList3 = [{ title: "Red", value: "red", enabled: YES, width: 30 }, { title: "Green", value: "green", width: 50 }, { title: "Blue", value: "blue", width: 40 }];
|
15
15
|
|
16
16
|
var pane = SC.ControlTestPane.design()
|
@@ -67,8 +67,45 @@ var pane = SC.ControlTestPane.design()
|
|
67
67
|
itemTitleKey: 'title',
|
68
68
|
itemValueKey: 'value',
|
69
69
|
itemWidthKey: 'width'
|
70
|
-
})
|
70
|
+
})
|
71
|
+
|
72
|
+
.add("aria-role-group", SC.RadioView, {
|
73
|
+
value: "",
|
74
|
+
isEnabled: YES,
|
75
|
+
items: itemList,
|
76
|
+
itemTitleKey: 'title',
|
77
|
+
itemValueKey: 'value',
|
78
|
+
layoutDirection: SC.LAYOUT_HORIZONTAL
|
79
|
+
})
|
80
|
+
|
81
|
+
.add("aria-role-radio", SC.RadioView, {
|
82
|
+
value: "",
|
83
|
+
isEnabled: YES,
|
84
|
+
items: itemList,
|
85
|
+
itemTitleKey: 'title',
|
86
|
+
itemValueKey: 'value',
|
87
|
+
layoutDirection: SC.LAYOUT_HORIZONTAL
|
88
|
+
})
|
71
89
|
|
90
|
+
.add("aria-label", SC.RadioView, {
|
91
|
+
value: "",
|
92
|
+
isEnabled: YES,
|
93
|
+
items: itemList2,
|
94
|
+
itemAriaLabelKey: 'ariaLabel',
|
95
|
+
itemTitleKey: 'title',
|
96
|
+
itemValueKey: 'value',
|
97
|
+
layoutDirection: SC.LAYOUT_HORIZONTAL
|
98
|
+
})
|
99
|
+
|
100
|
+
.add("aria-labeledBy", SC.RadioView, {
|
101
|
+
value: "",
|
102
|
+
isEnabled: YES,
|
103
|
+
items: itemList,
|
104
|
+
itemAriaLabeledByKey: 'ariaLabeledBy',
|
105
|
+
itemTitleKey: 'title',
|
106
|
+
itemValueKey: 'value',
|
107
|
+
layoutDirection: SC.LAYOUT_HORIZONTAL
|
108
|
+
});
|
72
109
|
pane.show(); // add a test to show the test pane
|
73
110
|
|
74
111
|
pane.verifyButtons = function verifyButtons(view, items) {
|
@@ -250,4 +287,57 @@ test("item widths", function() {
|
|
250
287
|
equals(SC.$(elem).width(), widths[idx], 'radio button %@ should width specified by itemWidthKey'.fmt(idx, widths[idx]));
|
251
288
|
idx++;
|
252
289
|
});
|
290
|
+
});
|
291
|
+
|
292
|
+
test("aria-role-group", function() {
|
293
|
+
var radioButton = pane.view('aria-role-group');
|
294
|
+
equals(radioButton.$().attr('role'),'radiogroup', 'role should be radiogroup');
|
295
|
+
});
|
296
|
+
|
297
|
+
test("aria-role-radio", function() {
|
298
|
+
var radioButtons = pane.view('aria-role-radio').$('.sc-radio-button');
|
299
|
+
|
300
|
+
var i = 0;
|
301
|
+
radioButtons.forEach(function(radioInput) {
|
302
|
+
var theInput = SC.$(radioInput),
|
303
|
+
idx = parseInt(theInput.attr('index'),0),
|
304
|
+
buttonValue = theInput.attr('value');
|
305
|
+
|
306
|
+
equals(idx, i, 'radio button #%@ should have field value %@'.fmt(idx, i));
|
307
|
+
equals(theInput.attr('role'), 'radio', 'radio button #%@ should have role as radio'.fmt(idx));
|
308
|
+
|
309
|
+
i++;
|
310
|
+
});
|
311
|
+
});
|
312
|
+
|
313
|
+
test("aria-label", function() {
|
314
|
+
var radioButtons = pane.view('aria-label').$('.sc-radio-button');
|
315
|
+
|
316
|
+
var i = 0;
|
317
|
+
radioButtons.forEach(function(radioInput) {
|
318
|
+
var theInput = SC.$(radioInput),
|
319
|
+
idx = parseInt(theInput.attr('index'),0),
|
320
|
+
buttonValue = theInput.attr('value');
|
321
|
+
|
322
|
+
equals(idx, i, 'radio button #%@ should have field value %@'.fmt(idx, i));
|
323
|
+
equals(theInput.attr('aria-label'), 'itemList1', 'radio button #%@ should have aria-label as itemList1'.fmt(idx));
|
324
|
+
|
325
|
+
i++;
|
326
|
+
});
|
327
|
+
});
|
328
|
+
|
329
|
+
test("aria-labeledBy", function() {
|
330
|
+
var radioButtons = pane.view('aria-labeledBy').$('.sc-radio-button');
|
331
|
+
|
332
|
+
var i = 0;
|
333
|
+
radioButtons.forEach(function(radioInput) {
|
334
|
+
var theInput = SC.$(radioInput),
|
335
|
+
idx = parseInt(theInput.attr('index'),0),
|
336
|
+
buttonValue = theInput.attr('value');
|
337
|
+
|
338
|
+
equals(idx, i, 'radio button #%@ should have field value %@'.fmt(idx, i));
|
339
|
+
equals(theInput.attr('aria-labelledby'), 'color', 'radio button #%@ should have aria-labelledby as color'.fmt(idx));
|
340
|
+
|
341
|
+
i++;
|
342
|
+
});
|
253
343
|
});
|