sproutcore 1.8.2.1 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (274) hide show
  1. data/VERSION.yml +2 -2
  2. data/lib/buildtasks/helpers/file_rule_list.rb +3 -3
  3. data/lib/frameworks/sproutcore/Buildfile +1 -1
  4. data/lib/frameworks/sproutcore/CHANGELOG.md +235 -16
  5. data/lib/frameworks/sproutcore/apps/media_examples/Buildfile +13 -0
  6. data/lib/frameworks/sproutcore/apps/media_examples/core.js +35 -0
  7. data/lib/frameworks/sproutcore/apps/media_examples/resources/loading.rhtml +3 -0
  8. data/lib/frameworks/sproutcore/apps/media_examples/resources/main_page.js +53 -0
  9. data/lib/frameworks/sproutcore/apps/media_examples/views/audio_view.js +100 -0
  10. data/lib/frameworks/sproutcore/apps/media_examples/views/camera_view.js +39 -0
  11. data/lib/frameworks/sproutcore/apps/media_examples/views/capabilities_view.js +116 -0
  12. data/lib/frameworks/sproutcore/apps/media_examples/views/microphone_view.js +40 -0
  13. data/lib/frameworks/sproutcore/apps/media_examples/views/video_view.js +107 -0
  14. data/lib/frameworks/sproutcore/apps/showcase/Buildfile +11 -0
  15. data/lib/frameworks/sproutcore/apps/showcase/README +15 -0
  16. data/lib/frameworks/sproutcore/apps/showcase/controllers/source_controller.js +15 -0
  17. data/lib/frameworks/sproutcore/apps/showcase/controllers/source_tree_controller.js +212 -0
  18. data/lib/frameworks/sproutcore/apps/showcase/core.js +170 -0
  19. data/lib/frameworks/sproutcore/apps/showcase/main.js +27 -0
  20. data/lib/frameworks/sproutcore/apps/showcase/resources/_theme.css +18 -0
  21. data/lib/frameworks/sproutcore/apps/showcase/resources/api.css +80 -0
  22. data/lib/frameworks/sproutcore/apps/showcase/resources/favicon.ico +0 -0
  23. data/lib/frameworks/sproutcore/apps/showcase/resources/images/alarm-clock.png +0 -0
  24. data/lib/frameworks/sproutcore/apps/showcase/resources/images/balloon-facebook.png +0 -0
  25. data/lib/frameworks/sproutcore/apps/showcase/resources/images/balloon-twitter.png +0 -0
  26. data/lib/frameworks/sproutcore/apps/showcase/resources/images/balloon.png +0 -0
  27. data/lib/frameworks/sproutcore/apps/showcase/resources/images/bullet.png +0 -0
  28. data/lib/frameworks/sproutcore/apps/showcase/resources/images/calendar-insert.png +0 -0
  29. data/lib/frameworks/sproutcore/apps/showcase/resources/images/cross.png +0 -0
  30. data/lib/frameworks/sproutcore/apps/showcase/resources/images/example-box-bg.png +0 -0
  31. data/lib/frameworks/sproutcore/apps/showcase/resources/images/fruit-grape.png +0 -0
  32. data/lib/frameworks/sproutcore/apps/showcase/resources/images/fruit-lime.png +0 -0
  33. data/lib/frameworks/sproutcore/apps/showcase/resources/images/fruit-orange.png +0 -0
  34. data/lib/frameworks/sproutcore/apps/showcase/resources/images/fruit.png +0 -0
  35. data/lib/frameworks/sproutcore/apps/showcase/resources/images/glow.png +0 -0
  36. data/lib/frameworks/sproutcore/apps/showcase/resources/images/green-dot.png +0 -0
  37. data/lib/frameworks/sproutcore/apps/showcase/resources/images/grey-dot.png +0 -0
  38. data/lib/frameworks/sproutcore/apps/showcase/resources/images/logo.png +0 -0
  39. data/lib/frameworks/sproutcore/apps/showcase/resources/images/pixels.png +0 -0
  40. data/lib/frameworks/sproutcore/apps/showcase/resources/images/red-dot.png +0 -0
  41. data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-logo.png +0 -0
  42. data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-startup-landscape.jpg +0 -0
  43. data/lib/frameworks/sproutcore/apps/{test_controls → showcase}/resources/loading.rhtml +1 -1
  44. data/lib/frameworks/sproutcore/apps/showcase/resources/main_page.js +61 -0
  45. data/lib/frameworks/sproutcore/apps/showcase/resources/stylesheet.css +365 -0
  46. data/lib/frameworks/sproutcore/apps/showcase/resources/views_page.js +64 -0
  47. data/lib/frameworks/sproutcore/apps/showcase/system/views_item_content.js +59 -0
  48. data/lib/frameworks/sproutcore/apps/showcase/theme.js +27 -0
  49. data/lib/frameworks/sproutcore/apps/showcase/views/button_views.js +55 -0
  50. data/lib/frameworks/sproutcore/apps/showcase/views/checkbox_views.js +34 -0
  51. data/lib/frameworks/sproutcore/apps/showcase/views/container_views.js +29 -0
  52. data/lib/frameworks/sproutcore/apps/showcase/views/date_field_views.js +30 -0
  53. data/lib/frameworks/sproutcore/apps/showcase/views/disclosure_views.js +22 -0
  54. data/lib/frameworks/sproutcore/apps/showcase/views/grid_views.js +28 -0
  55. data/lib/frameworks/sproutcore/apps/showcase/views/image_button_views.js +22 -0
  56. data/lib/frameworks/sproutcore/apps/showcase/views/image_views.js +51 -0
  57. data/lib/frameworks/sproutcore/apps/showcase/views/label_views.js +53 -0
  58. data/lib/frameworks/sproutcore/apps/showcase/views/list_views.js +31 -0
  59. data/lib/frameworks/sproutcore/apps/showcase/views/popup_button_views.js +24 -0
  60. data/lib/frameworks/sproutcore/apps/showcase/views/progress_views.js +26 -0
  61. data/lib/frameworks/sproutcore/apps/showcase/views/radio_views.js +30 -0
  62. data/lib/frameworks/sproutcore/apps/showcase/views/scroll_views.js +40 -0
  63. data/lib/frameworks/sproutcore/apps/showcase/views/segmented_views.js +90 -0
  64. data/lib/frameworks/sproutcore/apps/showcase/views/select_views.js +64 -0
  65. data/lib/frameworks/sproutcore/apps/showcase/views/slider_views.js +46 -0
  66. data/lib/frameworks/sproutcore/apps/showcase/views/source_list_views.js +23 -0
  67. data/lib/frameworks/sproutcore/apps/showcase/views/split_views.js +22 -0
  68. data/lib/frameworks/sproutcore/apps/showcase/views/stacked_views.js +23 -0
  69. data/lib/frameworks/sproutcore/apps/showcase/views/static_content_views.js +23 -0
  70. data/lib/frameworks/sproutcore/apps/showcase/views/tab_views.js +51 -0
  71. data/lib/frameworks/sproutcore/apps/showcase/views/text_field_views.js +52 -0
  72. data/lib/frameworks/sproutcore/apps/showcase/views/toolbar_views.js +23 -0
  73. data/lib/frameworks/sproutcore/apps/showcase/views/views_item_view.js +91 -0
  74. data/lib/frameworks/sproutcore/apps/showcase/views/views_list_view.js +67 -0
  75. data/lib/frameworks/sproutcore/apps/showcase/views/web_views.js +32 -0
  76. data/lib/frameworks/sproutcore/apps/showcase/views/well_views.js +29 -0
  77. data/lib/frameworks/sproutcore/apps/showcase/views/workspace_views.js +23 -0
  78. data/lib/frameworks/sproutcore/apps/tests/english.lproj/strings.js +2 -1
  79. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +91 -51
  80. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +93 -27
  81. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +196 -15
  82. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +1 -1
  83. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +26 -10
  84. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +90 -92
  85. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +69 -39
  86. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
  87. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/color.js +769 -0
  88. data/lib/frameworks/sproutcore/frameworks/{desktop → core_foundation}/system/key_bindings.js +0 -0
  89. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +4 -4
  90. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/req_anim_frame.js +31 -0
  91. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +7 -1
  92. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +8 -6
  93. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +49 -0
  94. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/selection_support.js +1 -1
  95. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/ext/object_test.js +106 -0
  96. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/color.js +448 -0
  97. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +8 -1
  98. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/invokeLater.js +24 -24
  99. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +5 -5
  100. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/animation.js +90 -30
  101. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +14 -6
  102. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/touch.js +113 -0
  103. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +64 -8
  104. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +20 -4
  105. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +58 -38
  106. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/touch.js +32 -39
  107. data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +20 -15
  108. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +19 -15
  109. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +1 -1
  110. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +16 -16
  111. data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +32 -32
  112. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +53 -38
  113. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +9 -8
  114. data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +26 -26
  115. data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +1 -3
  116. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +4 -3
  117. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +0 -4
  118. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +96 -8
  119. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/datetime_recordattribute.js +22 -4
  120. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/data_store.js +24 -24
  121. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +376 -37
  122. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +51 -53
  123. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +108 -66
  124. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +33 -35
  125. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +6 -4
  126. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +33 -3
  127. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +181 -15
  128. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +6 -0
  129. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +3 -1
  130. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +2 -1
  131. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +153 -6
  132. data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +39 -18
  133. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -1
  134. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +6 -7
  135. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +139 -50
  136. data/lib/frameworks/sproutcore/frameworks/{foundation → desktop}/resources/button_view.css +3 -3
  137. data/lib/frameworks/sproutcore/frameworks/{foundation → desktop}/resources/checkbox_view.css +4 -0
  138. data/lib/frameworks/sproutcore/frameworks/desktop/resources/disclosure.css +2 -2
  139. data/lib/frameworks/sproutcore/frameworks/{foundation → desktop}/resources/radio_view.css +0 -0
  140. data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +23 -17
  141. data/lib/frameworks/sproutcore/frameworks/desktop/resources/web.css +5 -0
  142. data/lib/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +4 -5
  143. data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/border.js +3 -12
  144. data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/collection_fast_path.js +58 -0
  145. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +2 -2
  146. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +79 -12
  147. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +13 -0
  148. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +2 -2
  149. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/drag_and_drop.js +147 -0
  150. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +123 -2
  151. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/drag_and_drop.js +150 -0
  152. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +58 -44
  153. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/methods.js +9 -80
  154. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +54 -130
  155. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/observers.js +78 -0
  156. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +64 -9
  157. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/methods.js +11 -11
  158. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +28 -2
  159. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/methods.js +74 -0
  160. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/ui.js +141 -0
  161. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +4 -1
  162. data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +69 -36
  163. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +27 -11
  164. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +41 -25
  165. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +51 -89
  166. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +59 -34
  167. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +59 -49
  168. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroll.js +1 -1
  169. data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +4 -1
  170. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +14 -14
  171. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +8 -8
  172. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +13 -1
  173. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +4 -1
  174. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/colors.js +21 -22
  175. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/selection_support.js +26 -0
  176. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +4 -5
  177. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/image_queue.js +68 -44
  178. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/user_defaults.js +10 -0
  179. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +0 -10
  180. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +24 -59
  181. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +47 -34
  182. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +96 -12
  183. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +38 -0
  184. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +38 -50
  185. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +6 -2
  186. data/lib/frameworks/sproutcore/frameworks/media/media_capabilities.js +211 -0
  187. data/lib/frameworks/sproutcore/frameworks/media/render_delegates/media_slider.js +77 -0
  188. data/lib/frameworks/sproutcore/frameworks/media/resources/playeras3.fla +0 -0
  189. data/lib/frameworks/sproutcore/frameworks/media/resources/video.css +129 -115
  190. data/lib/frameworks/sproutcore/frameworks/media/resources/videoCanvas.swf +0 -0
  191. data/lib/frameworks/sproutcore/frameworks/media/tests/media_capabilities.js +194 -0
  192. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +56 -173
  193. data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +15 -18
  194. data/lib/frameworks/sproutcore/frameworks/media/views/media_slider.js +63 -219
  195. data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +4 -2
  196. data/lib/frameworks/sproutcore/frameworks/media/views/simple_controls.js +4 -8
  197. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +51 -160
  198. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +138 -102
  199. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +8 -0
  200. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +2 -2
  201. data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +8 -2
  202. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +32 -12
  203. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +28 -24
  204. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +0 -2
  205. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +111 -12
  206. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +9 -7
  207. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +8 -2
  208. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable/enumerable.js +160 -115
  209. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +64 -19
  210. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/mixin.js +83 -0
  211. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/bind.js +3 -0
  212. data/lib/frameworks/sproutcore/frameworks/template_view/tests/views/template/collection.js +13 -0
  213. data/lib/frameworks/sproutcore/frameworks/template_view/tests/views/template/handlebars.js +4 -2
  214. data/lib/frameworks/sproutcore/frameworks/template_view/views/template_collection.js +5 -5
  215. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +5 -1
  216. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +13 -12
  217. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +9 -2
  218. data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress.css +105 -5
  219. data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress_view_indeterminate_content.png +0 -0
  220. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +19 -15
  221. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +93 -21
  222. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_vertical_active.png +0 -0
  223. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_vertical_normal.png +0 -0
  224. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_vertical_selected.png +0 -0
  225. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_vertical_selected_active.png +0 -0
  226. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +91 -15
  227. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_vertical_active.png +0 -0
  228. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_vertical_normal.png +0 -0
  229. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_vertical_selected.png +0 -0
  230. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_vertical_selected_active.png +0 -0
  231. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +21 -17
  232. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +26 -25
  233. data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/menu_item_view.css +2 -4
  234. data/lib/sproutcore/helpers/minifier.rb +5 -5
  235. data/lib/sproutcore/tools/build.rb +1 -1
  236. data/sproutcore.gemspec +6 -1
  237. data/vendor/chance/lib/chance/instance/slicing.rb +2 -2
  238. metadata +143 -60
  239. data/lib/frameworks/sproutcore/apps/test_controls/Buildfile +0 -0
  240. data/lib/frameworks/sproutcore/apps/test_controls/controllers/alert.js +0 -39
  241. data/lib/frameworks/sproutcore/apps/test_controls/controllers/buttons.js +0 -21
  242. data/lib/frameworks/sproutcore/apps/test_controls/controllers/categories.js +0 -125
  243. data/lib/frameworks/sproutcore/apps/test_controls/controllers/category.js +0 -36
  244. data/lib/frameworks/sproutcore/apps/test_controls/controllers/select.js +0 -12
  245. data/lib/frameworks/sproutcore/apps/test_controls/controllers/split.js +0 -74
  246. data/lib/frameworks/sproutcore/apps/test_controls/core.js +0 -29
  247. data/lib/frameworks/sproutcore/apps/test_controls/main.js +0 -14
  248. data/lib/frameworks/sproutcore/apps/test_controls/resources/buttons_page.js +0 -158
  249. data/lib/frameworks/sproutcore/apps/test_controls/resources/checkboxes_page.js +0 -53
  250. data/lib/frameworks/sproutcore/apps/test_controls/resources/flow_layout_page.js +0 -85
  251. data/lib/frameworks/sproutcore/apps/test_controls/resources/list_page.js +0 -40
  252. data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.css +0 -60
  253. data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +0 -151
  254. data/lib/frameworks/sproutcore/apps/test_controls/resources/panels_page.js +0 -62
  255. data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +0 -33
  256. data/lib/frameworks/sproutcore/apps/test_controls/resources/radio_page.js +0 -55
  257. data/lib/frameworks/sproutcore/apps/test_controls/resources/scroll_page.js +0 -77
  258. data/lib/frameworks/sproutcore/apps/test_controls/resources/segmented_page.js +0 -99
  259. data/lib/frameworks/sproutcore/apps/test_controls/resources/select_page.js +0 -75
  260. data/lib/frameworks/sproutcore/apps/test_controls/resources/sliders_page.js +0 -54
  261. data/lib/frameworks/sproutcore/apps/test_controls/resources/split_page.js +0 -141
  262. data/lib/frameworks/sproutcore/apps/test_controls/resources/strings.js +0 -50
  263. data/lib/frameworks/sproutcore/apps/test_controls/resources/tab_page.js +0 -53
  264. data/lib/frameworks/sproutcore/apps/test_controls/resources/text_field_page.js +0 -65
  265. data/lib/frameworks/sproutcore/apps/test_controls/theme.js +0 -34
  266. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/detail.js +0 -15
  267. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/source.js +0 -15
  268. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/target.js +0 -15
  269. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +0 -15
  270. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/tests.js +0 -15
  271. data/lib/frameworks/sproutcore/apps/tests/tests/models/target.js +0 -15
  272. data/lib/frameworks/sproutcore/apps/tests/tests/models/test.js +0 -15
  273. data/lib/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +0 -15
  274. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +0 -21
@@ -48,6 +48,17 @@ var pane;
48
48
  isEnabled: NO,
49
49
  layout: { height: 25 }
50
50
  })
51
+ .add("3_items,2_sel,1_disabled", SC.SegmentedView, {
52
+ items: [
53
+ { value: "Item1" },
54
+ { value: "Item2", isEnabled: false },
55
+ { value: "Item3" }],
56
+ itemTitleKey: 'value',
57
+ itemValueKey: 'value',
58
+ itemIsEnabledKey: 'isEnabled',
59
+ value: ["Item1","Item2"],
60
+ layout: { height: 25 }
61
+ })
51
62
  .add("3_items,icon,2_sel", SC.SegmentedView, {
52
63
  items: [
53
64
  { value: "Item1", icon: iconURL },
@@ -196,8 +207,9 @@ var pane;
196
207
  ok(pane.view('3_items,1_sel').get('isVisibleInWindow'), '3_items,1_sel.isVisibleInWindow should be YES');
197
208
  ok(pane.view('2_items,toolTip').get('isVisibleInWindow'), '2_items,toolTip.isVisibleInWindow should be YES');
198
209
  ok(pane.view('3_items,1_sel,disabled').get('isVisibleInWindow'), '3_items,1_sel,disabled.isVisibleInWindow should be YES');
199
- ok(pane.view('3_items,icon,2_sel').get('isVisibleInWindow'), '3_items,icon,2_sel.isVisibleInWindow should be YES');
200
210
  ok(pane.view('3_items,2_sel,disabled').get('isVisibleInWindow'), '3_items,2_sel,disabled.isVisibleInWindow should be YES');
211
+ ok(pane.view('3_items,2_sel,1_disabled').get('isVisibleInWindow'), '3_items,2_sel,1_disabled.isVisibleInWindow should be YES');
212
+ ok(pane.view('3_items,icon,2_sel').get('isVisibleInWindow'), '3_items,icon,2_sel.isVisibleInWindow should be YES');
201
213
  ok(pane.view('3_items,1_sel,emptySel').get('isVisibleInWindow'), '3_items,1 sel,emptySel.isVisibleInWindow should be YES');
202
214
  ok(pane.view('3_items,2_sel,emptySel').get('isVisibleInWindow'), '3_items,2 sel,emptySel.isVisibleInWindow should be YES');
203
215
  ok(pane.view('3_items,1_sel,multipleSel').get('isVisibleInWindow'), '3_items,1_sel,multipleSel.isVisibleInWindow should be YES');
@@ -208,7 +220,6 @@ var pane;
208
220
  ok(pane.view('3_items,rightAligned').get('isVisibleInWindow'), '3_items,rightAligned.isVisibleInWindow should be YES');
209
221
  ok(pane.view('aria-role_tab,tablist').get('isVisibleInWindow'), 'aria-role_tab,tablist.isVisibleInWindow should be YES');
210
222
  ok(pane.view('aria-labelledby').get('isVisibleInWindow'), 'aria-labelledby.isVisibleInWindow should be YES');
211
-
212
223
  });
213
224
 
214
225
 
@@ -234,10 +245,16 @@ var pane;
234
245
  if(i !== 0 && i < seglen-1) {
235
246
  ok((seg.className.indexOf('sc-middle-segment')>=0), 'middle segments have the right classname assigned.');
236
247
  }
237
- viewElem=pane.view('3_items,2_sel,disabled').$();
238
- ok(viewElem.hasClass('disabled'), '3_items,2_sel,disabled should have the disabled class set');
239
248
  }
240
249
 
250
+ viewElem=pane.view('3_items,1_sel,disabled').$();
251
+ ok(viewElem.hasClass('disabled'), '3_items,1_sel,disabled should have the disabled class set');
252
+
253
+ viewElem=pane.view('3_items,2_sel,disabled').$();
254
+ ok(viewElem.hasClass('disabled'), '3_items,2_sel,disabled should have the disabled class set');
255
+
256
+ seg=pane.view('3_items,2_sel,1_disabled').$('.sc-segment-view')[1];
257
+ ok($(seg).hasClass('disabled'), '3_items,2_sel,1_disabled should have the disabled class set on the middle segment');
241
258
  });
242
259
 
243
260
 
@@ -263,13 +280,12 @@ var pane;
263
280
  if(i!==0 && i!=seglen-1){
264
281
  ok((seg.className.indexOf('sc-middle-segment')>=0), 'middle segments have the right classname assigned.');
265
282
  }
266
- viewElem=pane.view('3_items,2_sel,disabled').$();
267
- ok(viewElem.hasClass('disabled'), '3_items,2_sel,disabled should have the disabled class set');
268
283
  }
269
284
 
285
+ viewElem=pane.view('3_items,2_sel,disabled').$();
286
+ ok(viewElem.hasClass('disabled'), '3_items,2_sel,disabled should have the disabled class set');
270
287
  });
271
288
 
272
-
273
289
  test("No value set", function() {
274
290
  var segments=pane.view('3_empty').$('.sc-segment-view');
275
291
 
@@ -284,7 +300,6 @@ var pane;
284
300
 
285
301
  });
286
302
 
287
-
288
303
  test("Check that two items are selected.", function() {
289
304
  var segments=pane.view('3_items,icon,2_sel').$('.sc-segment-view');
290
305
  var count=0;
@@ -301,7 +316,6 @@ var pane;
301
316
 
302
317
  });
303
318
 
304
-
305
319
  test("2_items,toolTip has toolTips assigned.", function() {
306
320
  var segments=pane.view('2_items,toolTip').$('.sc-segment-view');
307
321
  ok((segments[0].title=="this is title1's tip"), 'first segment has expected tool tip assigned.');
@@ -454,4 +468,45 @@ var pane;
454
468
  }
455
469
  });
456
470
 
471
+ test("Check that mouse events change the active classes.", function() {
472
+ var view1, view2, view3, layer1, layer2, layer3, point, ev;
473
+
474
+ view1 = pane.view('3_items,2_sel,1_disabled').get('childViews').objectAt(0); // $('.sc-segment-view')[0];
475
+ layer1 = view1.get('layer');
476
+ point = SC.offset(layer1);
477
+
478
+ ev = SC.Event.simulateEvent(layer1, 'mousedown', { clientX: point.x, clientY: point.y });
479
+ SC.Event.trigger(layer1, 'mousedown', [ev]);
480
+
481
+ ok(view1.$().hasClass('active'), 'The first segment should have an active class on mousedown');
482
+
483
+ ev = SC.Event.simulateEvent(layer1, 'mousemove', { clientX: point.x + 1, clientY: point.y });
484
+ SC.Event.trigger(layer1, 'mousemove', [ev]);
485
+
486
+ view2 = pane.view('3_items,2_sel,1_disabled').get('childViews').objectAt(1);
487
+ layer2 = view2.get('layer');
488
+ point = SC.offset(layer2);
489
+
490
+ ev = SC.Event.simulateEvent(layer2, 'mousemove', { clientX: point.x + 1, clientY: point.y + 1 });
491
+ SC.Event.trigger(layer2, 'mousemove', [ev]);
492
+
493
+ ok(!view1.$().hasClass('active'), 'The first segment should no longer have an active class on mouseExited (via mousemove)');
494
+ ok(!view2.$().hasClass('active'), 'The disabled second segment should not have an active class on mouseEntered (via mousemove)');
495
+
496
+ view3 = pane.view('3_items,2_sel,1_disabled').get('childViews').objectAt(2);
497
+ layer3 = view3.get('layer');
498
+ point = SC.offset(layer3);
499
+
500
+ ev = SC.Event.simulateEvent(layer3, 'mousemove', { clientX: point.x + 1, clientY: point.y + 1 });
501
+ SC.Event.trigger(layer3, 'mousemove', [ev]);
502
+
503
+ ok(view3.$().hasClass('active'), 'The third segment should have an active class on mouseMoved');
504
+
505
+ ev = SC.Event.simulateEvent(layer3, 'mouseup', { clientX: point.x + 1, clientY: point.y + 1 });
506
+ SC.Event.trigger(layer3, 'mouseup', [ev]);
507
+
508
+ ok(!view1.$().hasClass('sel'), 'The first segment should lose its sel class on mouseUp');
509
+ ok(view3.$().hasClass('sel'), 'The third segment should have a sel class on mouseUp');
510
+ });
511
+
457
512
  })();
@@ -53,12 +53,12 @@ module("SC.SelectView",{
53
53
  itemTitleKey: 'title',
54
54
  itemSortKey: 'pos'
55
55
  }),
56
-
56
+
57
57
  //view5
58
58
  SC.SelectView.extend({
59
59
  items: ["My","New", "List"]
60
60
  }),
61
-
61
+
62
62
  //view6
63
63
  SC.SelectView.extend({
64
64
  items: ["My","New", "List"],
@@ -74,7 +74,7 @@ module("SC.SelectView",{
74
74
  view4 = pane.childViews[3] ;
75
75
  view5 = pane.childViews[4] ;
76
76
  view6 = pane.childViews[5] ;
77
-
77
+
78
78
  pane.append(); // make sure there is a layer...
79
79
  SC.RunLoop.end();
80
80
  },
@@ -91,8 +91,6 @@ test("Check if valueBinding works", function() {
91
91
  equals('World',view4.get('value'),'Value should be') ;
92
92
  });
93
93
 
94
- // the test that was here pretty much tested nothing.
95
-
96
94
  //test5
97
95
  test("sortObjects() sorts the items of the Drop Down component", function() {
98
96
  var obj = view1.get("items");
@@ -103,8 +101,6 @@ test("sortObjects() sorts the items of the Drop Down component", function() {
103
101
  equals("You",obj.get(2),'Third item should be') ;
104
102
  });
105
103
 
106
- // There was an awful test here. I can't even tell what it was supposed to do.
107
-
108
104
  //test7
109
105
  test("isEnabled=NO should add disabled class", function() {
110
106
  SC.RunLoop.begin() ;
@@ -113,9 +109,7 @@ test("isEnabled=NO should add disabled class", function() {
113
109
  ok(view1.$().hasClass('disabled'), 'should have disabled class') ;
114
110
  });
115
111
 
116
- // there is NO need to test binding.
117
-
118
- // I think this one is probably somewhat pointless as well, but perhaps some
112
+ // I think this test is probably somewhat pointless, but perhaps some
119
113
  // buggy observers being called could break it or something...
120
114
  test("Check if setting a value actually changes the selection value", function() {
121
115
  SC.RunLoop.begin() ;
@@ -125,7 +119,13 @@ test("Check if setting a value actually changes the selection value", function()
125
119
  equals(view2.get('value'), 'Menu', 'value of Drop down should change to') ;
126
120
  }) ;
127
121
 
128
- // No need to test binding (was test10)
122
+ //test10
123
+ test('Setting the view\'s items should not result in an error.', function() {
124
+ try { view1.set('items', null); }
125
+ catch (e) {
126
+ ok(false, 'Nulling out items should not throw an error.');
127
+ }
128
+ });
129
129
 
130
130
  //test11
131
131
  test("The properties for select button should take default values unless specified", function() {
@@ -96,6 +96,14 @@ var pane = SC.ControlTestPane.design()
96
96
  emptyName: '&lt;empty&gt;',
97
97
  escapeHTML: NO,
98
98
  showCheckbox: YES
99
+ })
100
+
101
+ .add("SelectWithSeparator", SC.SelectView, {
102
+ items: [{ title: "None", separator: YES },
103
+ { title: "Low", isEnabled: NO },
104
+ { separator: YES },
105
+ { title: "High" }],
106
+ itemTitleKey: 'title'
99
107
  });
100
108
 
101
109
  pane.show();
@@ -115,7 +123,7 @@ module('SC.SelectView ui', {
115
123
  }
116
124
  });
117
125
 
118
- //test1
126
+ // test1
119
127
  test("Check the visiblity of the selectButtons", function() {
120
128
  ok(pane.view('Basic').get('isVisibleInWindow'), 'Basic.isVisibleInWindow should be YES') ;
121
129
  ok(pane.view('Disabled').get('isVisibleInWindow'), 'Disabled.isVisibleInWindow should be YES') ;
@@ -126,6 +134,7 @@ test("Check the visiblity of the selectButtons", function() {
126
134
  ok(pane.view('SelectButtonWithIcon').get('isVisibleInWindow'), 'SelectButtonWithIcon.isVisibleInWindow should be YES') ;
127
135
  ok(pane.view('StaticLayout').get('isVisibleInWindow'), 'StaticLayout.isVisibleInWindow should be YES') ;
128
136
  ok(pane.view('SelectButtonWithEmptyName').get('isVisibleInWindow'), 'SelectButtonWithEmptyName.isVisibleInWindow should be YES') ;
137
+ ok(pane.view('SelectWithSeparator').get('isVisibleInWindow'), 'SelectButtonWithEmptyName.isVisibleInWindow should be YES') ;
129
138
  }) ;
130
139
 
131
140
  //test2
@@ -241,7 +250,6 @@ test("StaticLayout", function() {
241
250
  test("SelectButtonWithEmptyName", function() {
242
251
  var view=pane.view('SelectButtonWithEmptyName').$(),
243
252
  label = pane.view('SelectButtonWithEmptyName').$('label');
244
- console.log('label = ' + label);
245
253
  ok(!view.hasClass('icon'), 'hasClass(Icon) should be NO') ;
246
254
  ok(view.hasClass('sc-view'), 'hasClass(sc-view) should be YES') ;
247
255
  ok(view.hasClass('sc-button-view'), 'hasClass(sc-button-view) should be YES') ;
@@ -251,3 +259,21 @@ test("SelectButtonWithEmptyName", function() {
251
259
  ok(!view.hasClass('def'), 'hasClass(def) should be NO') ;
252
260
  equals(label[0].innerHTML, '&lt;empty&gt;', 'The label should be "&lt;empty&gt;"');
253
261
  });
262
+
263
+ /**
264
+ This is just a simple test that shows that when the first item provided to
265
+ SC.SelectView is a separator or is not enabled, it ignores it as the default
266
+ in favor of the first item with a value that is selectable.
267
+ */
268
+ test("SelectWithSeparator", function() {
269
+ var view=pane.view('SelectWithSeparator').$(),
270
+ label = pane.view('SelectWithSeparator').$('label');
271
+ ok(!view.hasClass('icon'), 'hasClass(Icon) should be NO') ;
272
+ ok(view.hasClass('sc-view'), 'hasClass(sc-view) should be YES') ;
273
+ ok(view.hasClass('sc-button-view'), 'hasClass(sc-button-view) should be YES') ;
274
+ ok(view.hasClass('sc-regular-size'), 'hasClass(sc-regular-size) should be YES') ;
275
+ ok(!view.hasClass('sel'), 'hasClass(sel) should be NO') ;
276
+ ok(!view.hasClass('disabled'), 'hasClass(disabled) should be NO') ;
277
+ ok(!view.hasClass('def'), 'hasClass(def) should be NO') ;
278
+ equals(label[0].innerHTML, 'High', 'The label should be "High"');
279
+ });
@@ -0,0 +1,74 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
+ // portions copyright @2011 Apple Inc.
5
+ // License: Licensed under MIT license (see license.js)
6
+ // ==========================================================================
7
+ /*global module test htmlbody ok equals same stop start */
8
+
9
+
10
+ module("SC.SliderView Methods", {
11
+ setup: function() {
12
+ // SC.RunLoop.begin();
13
+ pane = SC.MainPane.create({
14
+ childViews: [
15
+ SC.SliderView.extend({
16
+ value: 50,
17
+ minimum: 0,
18
+ maximum: 100
19
+ })]
20
+ });
21
+ pane.append(); // make sure there is a layer...
22
+ // SC.RunLoop.end();
23
+
24
+ view = pane.childViews[0];
25
+ },
26
+
27
+ teardown: function() {
28
+ pane.remove();
29
+ pane = view = null ;
30
+ }
31
+ });
32
+
33
+ test("changing value of the slider will change its left position", function() {
34
+ equals(view.get('value'), 50, 'precond - value should be 50');
35
+ equals(view.$('.sc-handle').css('left'), '50%', 'left of sc-handle should be 50%');
36
+
37
+ var elem = view.get('layer');
38
+
39
+ SC.RunLoop.begin();
40
+ view.set('value', 100);
41
+ SC.RunLoop.end();
42
+
43
+ equals(view.get('value'), 100, 'value should now be 100');
44
+ equals(view.$('.sc-handle').css('left'), '100%', 'left of sc-handle should be 100%');
45
+
46
+ });
47
+
48
+ test("going over maximum slider limit", function() {
49
+ equals(view.get('value'), 50, 'precond - value should be 50');
50
+
51
+ var elem = view.get('layer');
52
+
53
+ SC.RunLoop.begin();
54
+ view.set('value', 150);
55
+ SC.RunLoop.end();
56
+
57
+ // TODO: should we allow setting value higher then maximum?
58
+ equals(view.get('value'), 150, 'value should now be 150');
59
+ equals(view.$('.sc-handle').css('left'), '100%', 'left of sc-handle should be 100%');
60
+ });
61
+
62
+ test("going below minimum slider limit", function() {
63
+ equals(view.get('value'), 50, 'precond - value should be 50');
64
+
65
+ var elem = view.get('layer');
66
+
67
+ SC.RunLoop.begin();
68
+ view.set('value', -10);
69
+ SC.RunLoop.end();
70
+
71
+ // TODO: should we allow setting value lower then minimum?
72
+ equals(view.get('value'), -10, 'value should now be -10');
73
+ equals(view.$('.sc-handle').css('left'), '0%', 'left of sc-handle should be 0%');
74
+ });
@@ -0,0 +1,141 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
+ // portions copyright @2011 Apple Inc.
5
+ // License: Licensed under MIT license (see license.js)
6
+ // ==========================================================================
7
+
8
+ /*global module test htmlbody ok equals same stop start */
9
+
10
+ (function() {
11
+ var pane = SC.ControlTestPane.design()
12
+ .add("slider basic", SC.SliderView, {
13
+ layout: {top:0, bottom:0, left:0, width: 250},
14
+ value: 50,
15
+ minimum: 0,
16
+ maximum: 100
17
+ })
18
+ .add("slider disabled", SC.SliderView, {
19
+ layout: {top:0, bottom:0, left:0, width: 250},
20
+ value: 50,
21
+ minimum: 0,
22
+ maximum: 100,
23
+ isEnabled: NO
24
+ })
25
+ .add("slider value 100", SC.SliderView, {
26
+ layout: {top:0, bottom:0, left:0, width: 250},
27
+ value: 100,
28
+ minimum: 0,
29
+ maximum: 100
30
+ })
31
+ .add("slider basic step 20", SC.SliderView, {
32
+ layout: {top:0, bottom:0, left:0, width: 250},
33
+ value: 50,
34
+ minimum: 0,
35
+ maximum: 100,
36
+ step: 20
37
+ })
38
+ .add("slider aria-role", SC.SliderView, {
39
+ layout: {top:0, bottom:0, left:0, width: 250},
40
+ value: 10,
41
+ minimum: 0,
42
+ maximum: 50
43
+ })
44
+ .add("slider aria-valuemax", SC.SliderView, {
45
+ layout: {top:0, bottom:0, left:0, width: 250},
46
+ value: 40,
47
+ minimum: 0,
48
+ maximum: 100
49
+ })
50
+ .add("slider aria-valuemin", SC.SliderView, {
51
+ layout: {top:0, bottom:0, left:0, width: 250},
52
+ value: 20,
53
+ minimum: 0,
54
+ maximum: 100
55
+ })
56
+ .add("slider aria-valuenow", SC.SliderView, {
57
+ layout: {top:0, bottom:0, left:0, width: 250},
58
+ value: 40,
59
+ minimum: 0,
60
+ maximum: 100
61
+ })
62
+ .add("slider aria-valuetext", SC.SliderView, {
63
+ layout: {top:0, bottom:0, left:0, width: 250},
64
+ value: 20,
65
+ minimum: 0,
66
+ maximum: 100
67
+ })
68
+ .add("slider aria-orientation", SC.SliderView, {
69
+ layout: {top:0, bottom:0, left:0, width: 250},
70
+ value: 50,
71
+ minimum: 0,
72
+ maximum: 100
73
+ });
74
+
75
+ // ..........................................................
76
+ // TEST VIEWS
77
+ //
78
+
79
+ module("SC.SliderView UI", pane.standardSetup());
80
+
81
+ test("basic", function() {
82
+ var view = pane.view('slider basic');
83
+
84
+ ok(!view.$().hasClass('disabled'), 'should NOT have disabled class');
85
+ ok(view.$('.track').length > 0, 'should have track classed element');
86
+ ok(view.$('.sc-handle').length > 0, 'should have sc-handle classed element');
87
+ equals(view.$('.sc-handle')[0].style.left, '50%', 'left of sc-handle should be 50%');
88
+ });
89
+
90
+ test("disabled", function() {
91
+ var view = pane.view('slider disabled');
92
+
93
+ ok(view.$().hasClass('disabled'), 'should have disabled class');
94
+ ok(view.$('.track').length > 0, 'should have track classed element');
95
+ ok(view.$('.sc-handle').length > 0, 'should have sc-handle classed element');
96
+ equals(view.$('.sc-handle')[0].style.left, '50%', 'left of sc-handle should be 50%');
97
+ });
98
+
99
+ test("basic value 100", function() {
100
+ var view = pane.view('slider value 100');
101
+
102
+ ok(!view.$().hasClass('disabled'), 'should have disabled class');
103
+ ok(view.$('.track').length > 0, 'should have track classed element');
104
+ ok(view.$('.sc-handle').length > 0, 'should have sc-handle classed element');
105
+ equals(view.$('.sc-handle')[0].style.left, '100%', 'left of sc-handle should be 100%');
106
+ });
107
+
108
+ test("basic step 20", function() {
109
+ var view = pane.view('slider basic step 20');
110
+
111
+ ok(!view.$().hasClass('disabled'), 'should have disabled class');
112
+ ok(view.$('.track').length > 0, 'should have track classed element');
113
+ ok(view.$('.sc-handle').length > 0, 'should have sc-handle classed element');
114
+ equals(view.$('.sc-handle')[0].style.left, '60%', 'left of sc-handle should be 60%');
115
+ });
116
+
117
+ test("Check if aria role is set to slider view", function() {
118
+ var viewElem = pane.view('slider aria-role').$();
119
+ ok(viewElem.attr('role') === 'slider', 'aria-role is set to the slider view');
120
+ });
121
+
122
+ test("Check if attribute aria-valuemax is set correctly", function() {
123
+ var viewElem = pane.view('slider aria-valuemax').$();
124
+ equals(viewElem.attr('aria-valuemax'), 100, 'aria-valuemax should be 100');
125
+ });
126
+
127
+ test("Check if attribute aria-valuemin is set correctly", function() {
128
+ var viewElem = pane.view('slider aria-valuemin').$();
129
+ equals(viewElem.attr('aria-valuemin'), 0, 'aria-valuemin should be 0');
130
+ });
131
+
132
+ test("Check if attribute aria-valuenow is set correctly", function() {
133
+ var viewElem = pane.view('slider aria-valuenow').$();
134
+ equals(viewElem.attr('aria-valuenow'), 40, 'aria-valuenow should be 40');
135
+ });
136
+
137
+ test("Check if attribute aria-orientation is set correctly", function() {
138
+ var viewElem = pane.view('slider aria-orientation').$();
139
+ equals(viewElem.attr('aria-orientation'), "horizontal", 'aria-orientation should be horizontal');
140
+ });
141
+ })();