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.
Files changed (174) hide show
  1. data/CHANGELOG +6 -0
  2. data/VERSION.yml +1 -1
  3. data/lib/Buildfile +1 -1
  4. data/lib/buildtasks/build.rake +14 -6
  5. data/lib/buildtasks/manifest.rake +171 -72
  6. data/lib/frameworks/sproutcore/Buildfile +3 -5
  7. data/lib/frameworks/sproutcore/CHANGELOG.md +9 -0
  8. data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +2 -1
  9. data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +7 -17
  10. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +7 -1
  11. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +14 -1
  12. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +0 -2
  13. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +1 -1
  14. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +14 -3
  15. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +1 -1
  16. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +2 -2
  17. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +6 -0
  18. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +1 -1
  19. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +1 -1
  20. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +49 -4
  21. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +8 -0
  22. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +46 -1
  23. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +32 -5
  24. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +32 -6
  25. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +31 -3
  26. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +15 -3
  27. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +28 -7
  28. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -1
  29. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +20 -1
  30. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +2 -4
  31. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +40 -34
  32. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +35 -0
  33. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +43 -0
  34. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +47 -0
  35. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +6 -16
  36. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +21 -0
  37. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +41 -1
  38. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +128 -0
  39. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +93 -3
  40. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +13 -1
  41. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +28 -0
  42. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +47 -0
  43. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +51 -0
  44. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/method.js +33 -0
  45. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +29 -0
  46. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +28 -0
  47. data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +9 -1
  48. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +148 -134
  49. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +18 -0
  50. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +30 -3
  51. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +9 -0
  52. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +52 -4
  53. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +2 -1
  54. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +36 -3
  55. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +1 -1
  56. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +9 -1
  57. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +15 -4
  58. data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +1 -6
  59. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +4 -2
  60. data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +7 -0
  61. data/lib/frameworks/sproutcore/frameworks/desktop/views/well.js +1 -2
  62. data/lib/frameworks/sproutcore/frameworks/forms/views/form.js +3 -1
  63. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +1 -1
  64. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -9
  65. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
  66. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +2 -0
  67. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +1 -1
  68. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +25 -1
  69. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +64 -0
  70. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +34 -27
  71. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +42 -0
  72. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +62 -0
  73. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +0 -8
  74. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +12 -0
  75. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +48 -1
  76. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +19 -0
  77. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +2 -0
  78. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +11 -5
  79. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +152 -74
  80. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +12 -9
  81. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +1476 -176
  82. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +0 -2
  83. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +227 -32
  84. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +11 -11
  85. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +1 -1
  86. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +10 -0
  87. data/lib/frameworks/sproutcore/lib/index.rhtml +30 -8
  88. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +4 -4
  89. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +4 -4
  90. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +4 -4
  91. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +4 -4
  92. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +4 -0
  93. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.css +5 -1
  94. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.js +11 -3
  95. data/lib/frameworks/sproutcore/themes/ace/resources/well/well.css +7 -8
  96. data/lib/frameworks/sproutcore/themes/ace/resources/well/well.js +2 -4
  97. data/lib/gen/app/templates/apps/@target_name@/Buildfile +14 -0
  98. data/lib/gen/app/templates/apps/@target_name@/theme.js +27 -0
  99. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +4 -0
  100. data/lib/gen/project/templates/@filename@/Buildfile +7 -2
  101. data/lib/gen/theme/templates/themes/@target_name@/Buildfile +3 -0
  102. data/lib/gen/theme/templates/themes/@target_name@/theme.js +23 -0
  103. data/lib/sproutcore/builders.rb +2 -0
  104. data/lib/sproutcore/builders/chance.rb +64 -0
  105. data/lib/sproutcore/builders/chance_file.rb +59 -0
  106. data/lib/sproutcore/builders/combine.rb +0 -45
  107. data/lib/sproutcore/builders/html.rb +1 -1
  108. data/lib/sproutcore/builders/minify.rb +5 -17
  109. data/lib/sproutcore/builders/module.rb +2 -2
  110. data/lib/sproutcore/builders/string_wrapper.rb +13 -15
  111. data/lib/sproutcore/helpers.rb +1 -1
  112. data/lib/sproutcore/helpers/minifier.rb +56 -0
  113. data/lib/sproutcore/helpers/static_helper.rb +86 -40
  114. data/lib/sproutcore/models/generator.rb +16 -0
  115. data/lib/sproutcore/models/manifest_entry.rb +8 -1
  116. data/lib/sproutcore/models/target.rb +101 -33
  117. data/lib/sproutcore/tools.rb +0 -7
  118. data/lib/sproutcore/tools/build.rb +2 -37
  119. data/spec/buildtasks/manifest/prepare_build_tasks/chance_spec.rb +100 -0
  120. data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +86 -9
  121. data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +1 -1
  122. data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +1 -1
  123. data/spec/buildtasks/manifest/prepare_build_tasks/module_info_spec.rb +96 -0
  124. data/spec/buildtasks/manifest/prepare_build_tasks/module_spec.rb +83 -0
  125. data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +37 -4
  126. data/spec/buildtasks/manifest/spec_helper.rb +4 -0
  127. data/spec/fixtures/builder_tests/Buildfile +11 -9
  128. data/spec/fixtures/builder_tests/apps/chance_test/Buildfile +14 -0
  129. data/spec/fixtures/builder_tests/apps/chance_test/core.js +27 -0
  130. data/spec/fixtures/builder_tests/apps/chance_test/main.js +30 -0
  131. data/spec/fixtures/builder_tests/apps/chance_test/resources/demo.css +6 -0
  132. data/spec/fixtures/builder_tests/apps/chance_test/resources/last_file.css +7 -0
  133. data/spec/fixtures/builder_tests/apps/chance_test/resources/loading.rhtml +9 -0
  134. data/spec/fixtures/builder_tests/apps/chance_test/resources/main_page.js +24 -0
  135. data/spec/fixtures/builder_tests/apps/chance_test/resources/z_first_file.css +6 -0
  136. data/spec/fixtures/builder_tests/apps/chance_test/theme.js +27 -0
  137. data/spec/fixtures/builder_tests/apps/module_test/module.js +1 -0
  138. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/req_style_2.css +0 -0
  139. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/test.rhtml +1 -0
  140. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/javascript.js +1 -0
  141. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/lib/alt_layout.rhtml +0 -0
  142. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/req_js_2.js +0 -0
  143. data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/dynamic_req_js_1.js +0 -0
  144. data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/english.lproj/dynamic_req_style_1.css +0 -0
  145. data/spec/fixtures/builder_tests/apps/module_test/modules/inlined_module/README +0 -0
  146. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/req_style_1.css +0 -0
  147. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/strings.js +4 -0
  148. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/test.rhtml +1 -0
  149. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/req_js_1.js +0 -0
  150. data/spec/fixtures/helper_tests/apps/minifier_test/core.js +8 -0
  151. data/spec/fixtures/real_world/Buildfile +11 -1
  152. data/spec/fixtures/real_world/apps/account/modules/preferences/README +0 -0
  153. data/spec/fixtures/real_world/apps/calendar/modules/preferences/README +0 -0
  154. data/spec/fixtures/real_world/apps/contacts/modules/preferences/README +0 -0
  155. data/spec/fixtures/real_world/apps/contacts/modules/printing/README +0 -0
  156. data/spec/fixtures/real_world/apps/mail/modules/preferences/README +0 -0
  157. data/spec/fixtures/real_world/apps/mail/modules/printing/README +0 -0
  158. data/spec/fixtures/real_world/apps/photos/modules/email/README +0 -0
  159. data/spec/fixtures/real_world/apps/photos/modules/preferences/README +0 -0
  160. data/spec/lib/builders/chance_file_spec.rb +63 -0
  161. data/spec/lib/builders/chance_spec.rb +81 -0
  162. data/spec/lib/builders/module_spec.rb +133 -0
  163. data/spec/lib/helpers/minifier.rb +31 -0
  164. data/spec/lib/models/project/find_targets_for_spec.rb +1 -1
  165. data/vendor/chance/lib/chance/imagers/data_url.rb +68 -17
  166. data/vendor/chance/lib/chance/instance.rb +55 -30
  167. data/vendor/chance/lib/chance/parser.rb +1 -1
  168. data/vendor/chance/lib/chance/slicing.rb +39 -3
  169. metadata +52 -7
  170. data/lib/frameworks/sproutcore/frameworks/foundation/system/logger.js +0 -163
  171. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/logger.js +0 -44
  172. data/spec/buildtasks/manifest/prepare_build_tasks/bundle_spec.rb +0 -254
  173. data/spec/fixtures/builder_tests/apps/bundle_test/bundle.js +0 -1
  174. data/spec/lib/builders/bundle_spec.rb +0 -295
@@ -160,15 +160,6 @@ SC.AutoResize = {
160
160
  this.measureSizeLater();
161
161
  },
162
162
 
163
- /**
164
- @private
165
- When the view is appended to the document, various factors (such as class names)
166
- could have changed, so it will need to be remeasured.
167
- */
168
- didAppendToDocument: function(){
169
- this.measureSizeLater();
170
- },
171
-
172
163
  /**
173
164
  @private
174
165
  When the layer is first created, measurement will need to take place.
@@ -41,7 +41,7 @@
41
41
  */
42
42
  SC.Editable = {
43
43
  editorDelegate: null,
44
-
44
+
45
45
  /**
46
46
  Indicates whether a view is editable or not. You can optionally
47
47
  implement the methods in this mixin to disallow editing is isEditable is
@@ -157,6 +157,7 @@ SC.FlowedLayout = {
157
157
  c.addObserver('useAbsoluteLayout', this, '_scfl_layoutPropertyDidChange');
158
158
  c.addObserver('calculatedWidth', this, '_scfl_layoutPropertyDidChange');
159
159
  c.addObserver('calculatedHeight', this, '_scfl_layoutPropertyDidChange');
160
+ c.addObserver('startsNewRow', this, '_scfl_layoutPropertyDidChange');
160
161
  },
161
162
 
162
163
  /**
@@ -168,6 +169,7 @@ SC.FlowedLayout = {
168
169
  c.removeObserver('useAbsoluteLayout', this, '_scfl_layoutPropertyDidChange');
169
170
  c.removeObserver('calculatedWidth', this, '_scfl_layoutPropertyDidChange');
170
171
  c.removeObserver('calculatedHeight', this, '_scfl_layoutPropertyDidChange');
172
+ c.removeObserver('startsNewRow', this, '_scfl_layoutPropertyDidChange');
171
173
  },
172
174
 
173
175
  /**
@@ -68,7 +68,7 @@ SC.BaseTheme.canvasImageRenderDelegate = SC.RenderDelegate.create({
68
68
  update: function(dataSource, jquery) {
69
69
  var elem = jquery[0],
70
70
  image = dataSource.get('image'),
71
- frame = dataSource.get('frame'),
71
+ frame = dataSource.view.get('frame'),
72
72
  frameWidth = frame.width,
73
73
  frameHeight = frame.height,
74
74
  innerFrame = dataSource.get('innerFrame'),
@@ -38,6 +38,13 @@ SC.BaseTheme.labelRenderDelegate = SC.RenderDelegate.create({
38
38
  name: 'label',
39
39
 
40
40
  render: function(dataSource, context) {
41
+ var view = dataSource.get('view'),
42
+ ariaLabeledBy;
43
+
44
+ if(view) {
45
+ ariaLabeledBy = view.get('ariaLabeledBy');
46
+ }
47
+
41
48
  // CONSIDER DEPRECATING THESE PROPERTIES BECAUSE THEY ARE
42
49
  // ANNOYING PAINS IN THE BUTT THAT EVERYONE HATES
43
50
  context.addStyle({
@@ -47,6 +54,11 @@ SC.BaseTheme.labelRenderDelegate = SC.RenderDelegate.create({
47
54
 
48
55
  context.setClass('ellipsis', dataSource.get('needsEllipsis') || NO);
49
56
  context.setClass('icon', dataSource.get('icon') || NO);
57
+
58
+ //addressing accessibility
59
+ if(ariaLabeledBy && ariaLabeledBy !== "") {
60
+ context.attr('aria-labelledby', ariaLabeledBy);
61
+ }
50
62
 
51
63
  var html = this._htmlForTitleAndIcon(dataSource);
52
64
  context.push(html);
@@ -58,6 +70,13 @@ SC.BaseTheme.labelRenderDelegate = SC.RenderDelegate.create({
58
70
  },
59
71
 
60
72
  update: function(dataSource, jquery) {
73
+ var view = dataSource.get('view'),
74
+ ariaLabeledBy;
75
+
76
+ if(view) {
77
+ ariaLabeledBy = view.get('ariaLabeledBy');
78
+ }
79
+
61
80
  // CONSIDER DEPRECATING THESE PROPERTIES BECAUSE THEY ARE
62
81
  // ANNOYING PAINS IN THE BUTT THAT EVERYONE HATES
63
82
  jquery.css({
@@ -66,7 +85,12 @@ SC.BaseTheme.labelRenderDelegate = SC.RenderDelegate.create({
66
85
  });
67
86
 
68
87
  jquery.setClass('ellipsis', dataSource.get('needsEllipsis') || NO);
69
-
88
+
89
+ //addressing accessibility
90
+ if(ariaLabeledBy && ariaLabeledBy !== "") {
91
+ jquery.attr('aria-labelledby', ariaLabeledBy);
92
+ }
93
+
70
94
  var html = this._htmlForTitleAndIcon(dataSource);
71
95
  if (dataSource.get('renderState')._lastHTMLForTitleAndIcon !== html) {
72
96
  jquery.html(html);
@@ -0,0 +1,64 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2010 Sprout Systems, Inc. and contributors.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
+ // License: Licensed under MIT license (see license.js)
6
+ // ==========================================================================
7
+
8
+ sc_require("system/task_queue");
9
+
10
+ SC.chance = {
11
+
12
+ preload_task: SC.Task.create({
13
+ run: function(queue) {
14
+ var bank = SC.chance.bank, idx, len = bank.length, images = SC.chance.images;
15
+ for (idx = 0; idx < len; idx++) {
16
+ if (images.length < 1) {
17
+ return SC.chance.didPreloadImages();
18
+ }
19
+
20
+ var img = images.pop();
21
+ bank[idx].className = img;
22
+ }
23
+
24
+ // to force a break:
25
+ setTimeout(function(){
26
+ SC.run(function() {
27
+ SC.backgroundTaskQueue.push(SC.chance.preload_task);
28
+ });
29
+ }, 0);
30
+ }
31
+ }),
32
+
33
+
34
+ images: [],
35
+ bank: [],
36
+ PRELOAD_CONCURRENCY: 50,
37
+
38
+ preloadImages: function() {
39
+ if (window.CHANCE_SLICES) {
40
+ this.images = window.CHANCE_SLICES;
41
+ }
42
+
43
+ var bank = this.bank, idx, con = this.PRELOAD_CONCURRENCY;
44
+ for (idx = 0; idx < con; idx++) {
45
+ var img = document.createElement('div');
46
+ document.body.appendChild(img);
47
+ bank.push(img);
48
+ }
49
+
50
+ SC.run(function(){
51
+ SC.backgroundTaskQueue.push(SC.chance.preload_task);
52
+ });
53
+ },
54
+
55
+ didPreloadImages: function() {
56
+ var bank = this.bank, idx, len = bank.length;
57
+ for (idx = 0; idx < len; idx++) {
58
+ document.body.removeChild(bank[idx]);
59
+ bank[idx] = undefined;
60
+ }
61
+ }
62
+ };
63
+
64
+ SC.ready(SC.chance, 'preloadImages');
@@ -279,9 +279,17 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
279
279
  el.setAttribute('type', "text/javascript") ;
280
280
  el.setAttribute('src', url) ;
281
281
 
282
- el.onload = function() {
283
- SC.Module._moduleDidLoad(moduleName);
284
- };
282
+ if (SC.browser.isIE) {
283
+ el.onreadystatechange = function() {
284
+ if (this.readyState == 'complete' || this.readyState == 'loaded') {
285
+ SC.Module._moduleDidLoad(moduleName);
286
+ }
287
+ };
288
+ } else {
289
+ el.onload = function() {
290
+ SC.Module._moduleDidLoad(moduleName);
291
+ };
292
+ }
285
293
 
286
294
  document.body.appendChild(el) ;
287
295
  }
@@ -479,7 +487,6 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
479
487
  var dependenciesMet;
480
488
  var callbacks, targets;
481
489
 
482
-
483
490
  if (log) console.log("SC.Module: Module '%@' finished loading.".fmt(moduleName));
484
491
 
485
492
  if (!module) {
@@ -510,38 +517,38 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
510
517
  }
511
518
  },
512
519
 
513
- /**
514
- @private
520
+ /**
521
+ @private
515
522
 
516
- If necessary, converts a property path into a target object.
523
+ If necessary, converts a property path into a target object.
517
524
 
518
- @param {String|Object} targetName the string or object representing the target
519
- @returns Object
525
+ @param {String|Object} targetName the string or object representing the target
526
+ @returns Object
520
527
  */
521
- _targetForTargetName: function(targetName){
522
- if (SC.typeOf(targetName) === SC.T_STRING) {
523
- return SC.objectForPropertyPath(targetName);
524
- }
528
+ _targetForTargetName: function(targetName){
529
+ if (SC.typeOf(targetName) === SC.T_STRING) {
530
+ return SC.objectForPropertyPath(targetName);
531
+ }
525
532
 
526
- return targetName;
527
- },
533
+ return targetName;
534
+ },
528
535
 
529
- /**
530
- @private
536
+ /**
537
+ @private
531
538
 
532
- If necessary, converts a property path into a method object.
539
+ If necessary, converts a property path into a method object.
533
540
 
534
- @param {String|Object} methodName the string or object representing the method
535
- @param {Object} target the target from which to retrieve the method
536
- @returns Object
541
+ @param {String|Object} methodName the string or object representing the method
542
+ @param {Object} target the target from which to retrieve the method
543
+ @returns Object
537
544
  */
538
- _methodForMethodNameInTarget: function(methodName, target){
539
- if (SC.typeOf(methodName) === SC.T_STRING) {
540
- return SC.objectForPropertyPath(methodName, target);
541
- }
545
+ _methodForMethodNameInTarget: function(methodName, target){
546
+ if (SC.typeOf(methodName) === SC.T_STRING) {
547
+ return SC.objectForPropertyPath(methodName, target);
548
+ }
542
549
 
543
- return methodName;
544
- }
550
+ return methodName;
551
+ }
545
552
  });
546
553
 
547
554
  /**
@@ -0,0 +1,42 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2011 Apple Inc. and contributors.
4
+ // License: Licensed under MIT license (see license.js)
5
+ // ==========================================================================
6
+
7
+ /*global module test equals context ok same */
8
+
9
+ htmlbody('<style> .sc-static-layout { border: 1px red dotted; } </style>');
10
+
11
+
12
+ var pane = SC.ControlTestPane.design()
13
+ .add("aria-role", SC.FieldView.extend(SC.StaticLayout, SC.Editable,
14
+ {
15
+ localize: YES
16
+ })
17
+ )
18
+
19
+ .add("aria-multiline", SC.FieldView.extend(SC.StaticLayout, SC.Editable,
20
+ {
21
+ isTextArea: YES
22
+ })
23
+ );
24
+
25
+ pane.show();
26
+ module('SC.Editable ui', {
27
+ setup: function() {
28
+ var view = pane.view('aria-role');
29
+ }
30
+ });
31
+
32
+ test("should have role as textbox", function() {
33
+ var view = pane.view('aria-role');
34
+ var label = view.$();
35
+ equals(label.attr('role'), 'textbox', 'role should be textbox');
36
+ });
37
+
38
+ test("should have aria-multiline as YES", function() {
39
+ var view = pane.view('aria-multiline');
40
+ var label = view.$();
41
+ equals(label.attr('aria-multiline'), 'true', 'aria-multiline should be true');
42
+ });
@@ -0,0 +1,62 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2011 Apple Inc. and contributors.
4
+ // License: Licensed under MIT license (see license.js)
5
+ // ==========================================================================
6
+
7
+ /*global module test equals context ok same */
8
+
9
+ htmlbody('<style> .sc-static-layout { border: 1px red dotted; } </style>');
10
+
11
+
12
+ var pane = SC.ControlTestPane.design()
13
+ .add("aria-role", SC.InlineTextFieldView.extend({
14
+ localize: YES
15
+ })
16
+ )
17
+
18
+ .add("aria-multiline", SC.InlineTextFieldView.extend({
19
+ isTextArea: YES
20
+ })
21
+ )
22
+
23
+ .add("aria-disabled", SC.InlineTextFieldView.extend({
24
+ isEnabled: NO
25
+ })
26
+ )
27
+
28
+ .add("aria-invalid", SC.InlineTextFieldView.extend({
29
+ value: SC.Error.create({errorValue:'Error Message'})
30
+ })
31
+ );
32
+ pane.show();
33
+
34
+ module('SC.InlineTextFieldView ui', {
35
+ setup: function() {
36
+ var view = pane.view('aria-role');
37
+ }
38
+ });
39
+
40
+ test("should have role as textbox", function() {
41
+ var view = pane.view('aria-role');
42
+ var label = view.$();
43
+ equals(label.attr('role'), 'textbox', 'role should be textbox');
44
+ });
45
+
46
+ test("should have aria-multiline as YES", function() {
47
+ var view = pane.view('aria-multiline');
48
+ var label = view.$();
49
+ equals(label.attr('aria-multiline'), 'true', 'aria-multiline should be true');
50
+ });
51
+
52
+ test("should have aria-disabled as YES", function() {
53
+ var view = pane.view('aria-disabled');
54
+ var label = view.$();
55
+ equals(label.attr('aria-disabled'), 'true', 'aria-disabled should be true');
56
+ });
57
+
58
+ test("should have aria-invalid as YES", function() {
59
+ var view = pane.view('aria-invalid');
60
+ var label = view.$();
61
+ equals(label.attr('aria-invalid'), 'true', 'aria-invalid should be true');
62
+ });
@@ -99,14 +99,6 @@ htmlbody('<style></style>');
99
99
  stop();
100
100
  });
101
101
 
102
- test("Verify sprite image class", function() {
103
- var imageView = pane.view('sprite_image'),
104
- imgEl;
105
-
106
- imgEl = imageView.$('img');
107
-
108
- ok(imgEl.hasClass('sprite-class'), "The class value should be on the img element");
109
- });
110
102
 
111
103
  test("Verify canvas rendering and properties", function() {
112
104
  var view = pane.view('image_canvas'),
@@ -71,6 +71,13 @@ var pane = SC.ControlTestPane.design()
71
71
  .add("editable", SC.LabelView, {
72
72
  value: "double click me",
73
73
  isEditable: YES
74
+ })
75
+
76
+ .add("aria-labelledby", SC.LabelView, {
77
+ value: "aria-labelledby",
78
+ fontWeight: SC.BOLD_WEIGHT,
79
+ height: 16,
80
+ ariaLabeledBy: 'Label View'
74
81
  });
75
82
 
76
83
  pane.show(); // add a test to show the test pane
@@ -90,6 +97,7 @@ test("Check that all Label are visible", function() {
90
97
  ok(pane.view('bold').get('isVisibleInWindow'), 'title,toolTip.isVisibleInWindow should be YES');
91
98
  ok(pane.view('bold height').get('isVisibleInWindow'), 'title,toolTip.isVisibleInWindow should be YES');
92
99
  ok(pane.view('editable').get('isVisibleInWindow'), 'title,toolTip.isVisibleInWindow should be YES');
100
+ ok(pane.view('aria-labelledby').get('isVisibleInWindow'), 'aria-labelledby isVisibleInWindow should be YES');
93
101
  });
94
102
 
95
103
 
@@ -154,4 +162,8 @@ test("Check that the title is set or not and if it is in the appropriate element
154
162
 
155
163
  });
156
164
 
165
+ test("Check that the aria-labelledby is set to Label View", function() {
166
+ var viewElem=pane.view('aria-labelledby').$();
167
+ equals(viewElem.attr('aria-labelledby'), 'Label View', 'should have value set to Label view');
168
+ });
157
169
  })();
@@ -54,9 +54,33 @@
54
54
  value: 'John Doe',
55
55
  isTextArea: YES,
56
56
  isEnabled: NO
57
- });
57
+ })
58
58
 
59
+ .add("aria-role", SC.TextFieldView, {
60
+ hint: "Full Name",
61
+ value: 'John Doe',
62
+ isTextArea: YES,
63
+ isEnabled: YES
64
+ })
65
+
66
+ .add("aria-multiline", SC.TextFieldView, {
67
+ hint: "Full Name",
68
+ value: 'John Doe',
69
+ isTextArea: YES,
70
+ isEnabled: YES
71
+ })
59
72
 
73
+ .add("aria-disabled",SC.TextFieldView, {
74
+ hint: "Full Name",
75
+ value: 'John Doe',
76
+ isTextArea: YES,
77
+ isEnabled: NO
78
+ })
79
+
80
+ .add("aria-invalid", SC.TextFieldView, {
81
+ value: SC.Error.create({errorValue:'Error Message'}),
82
+ isEnabled: YES
83
+ });
60
84
 
61
85
  pane.show(); // add a test to show the test pane
62
86
 
@@ -527,4 +551,27 @@ test("editing a field should not change the cursor position", function() {
527
551
  ok(selection.get('start') == 2 && selection.get('end') == 3, 'cursor position should be unchanged');
528
552
  });
529
553
 
554
+ test("should have role as textbox", function() {
555
+ var view = pane.view('aria-role');
556
+ var label = view.$();
557
+ equals(label.attr('role'), 'textbox', 'role should be textbox');
558
+ });
559
+
560
+ test("should have aria-multiline as YES", function() {
561
+ var view = pane.view('aria-multiline');
562
+ var label = view.$();
563
+ equals(label.attr('aria-multiline'), 'true', 'aria-multiline should be true');
564
+ });
565
+
566
+ test("should have aria-disabled as YES", function() {
567
+ var view = pane.view('aria-disabled');
568
+ var label = view.$();
569
+ equals(label.attr('aria-disabled'), 'true', 'aria-disabled should be true');
570
+ });
571
+
572
+ test("should have aria-invalid as YES", function() {
573
+ var view = pane.view('aria-invalid');
574
+ var label = view.$();
575
+ equals(label.attr('aria-invalid'), 'true', 'aria-invalid should be true');
576
+ });
530
577
  })();