sproutcore 1.10.3.1 → 1.11.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (380) hide show
  1. checksums.yaml +8 -8
  2. data/CHANGELOG +4 -8
  3. data/VERSION.yml +2 -2
  4. data/lib/frameworks/sproutcore/Buildfile +5 -4
  5. data/lib/frameworks/sproutcore/CHANGELOG.md +274 -40
  6. data/lib/frameworks/sproutcore/CONTRIBUTORS.md +133 -0
  7. data/lib/frameworks/sproutcore/README.md +31 -144
  8. data/lib/frameworks/sproutcore/apps/showcase/controllers/source_tree_controller.js +9 -4
  9. data/lib/frameworks/sproutcore/apps/showcase/resources/stylesheet.css +5 -0
  10. data/lib/frameworks/sproutcore/apps/showcase/system/views_item_content.js +1 -1
  11. data/lib/frameworks/sproutcore/apps/showcase/views/split_views.js +15 -2
  12. data/lib/frameworks/sproutcore/apps/showcase/views/stacked_views.js +1 -1
  13. data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +11 -1
  14. data/lib/frameworks/sproutcore/frameworks/ajax/mixins/websocket_delegate.js +90 -0
  15. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +81 -5
  16. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +23 -4
  17. data/lib/frameworks/sproutcore/frameworks/ajax/system/websocket.js +475 -0
  18. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +149 -26
  19. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/websocket.js +197 -0
  20. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/xhr_response_test.js +65 -0
  21. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +4 -0
  22. data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/horizontal_stack_layout.js +232 -52
  23. data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/vertical_stack_layout.js +235 -49
  24. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +23 -13
  25. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +3 -1
  26. data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +81 -1
  27. data/lib/frameworks/sproutcore/frameworks/core_foundation/english.lproj/ordinal.js +17 -0
  28. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
  29. data/lib/frameworks/sproutcore/frameworks/{desktop/tests/views/disclosure/methods.js → core_foundation/french.lproj/ordinal.js} +7 -4
  30. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +2 -6
  31. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +1 -1
  32. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +104 -69
  33. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane_statechart.js +6 -1
  34. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/child_view_layout_protocol.js +59 -0
  35. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/view_transition_protocol.js +18 -1
  36. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/application.js +192 -0
  37. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/bezier_curves.js +52 -0
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/color.js +384 -64
  39. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/core_query.js +6 -14
  40. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +21 -35
  41. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +72 -36
  42. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +90 -34
  43. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +55 -7
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +20 -15
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/req_anim_frame.js +9 -10
  46. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +763 -542
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/selection_set.js +4 -3
  48. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +1 -7
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +14 -0
  50. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/touch.js +538 -0
  51. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils/rect.js +56 -1
  52. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +99 -4
  53. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/single_case.js +25 -19
  54. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/core_tests.js +75 -0
  55. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/ext/number_test.js +81 -0
  56. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/action_support.js +4 -4
  57. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/responder_context.js +4 -4
  58. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +19 -1
  59. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/color.js +36 -20
  60. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/design_modes_test.js +83 -0
  61. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeMainPane.js +7 -3
  62. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/mouse_events.js +338 -0
  63. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/root_responder.js +14 -89
  64. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/touch.js +106 -0
  65. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +2 -2
  66. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/touch.js +136 -0
  67. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/rect.js +42 -1
  68. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/append_remove.js +11 -0
  69. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +5 -5
  70. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/design_mode_test.js +457 -0
  71. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/sendEvent.js +36 -10
  72. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/background_color.js +44 -0
  73. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/border_frame_test.js +51 -24
  74. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/childViewLayout_test.js +176 -1
  75. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +46 -16
  76. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertFrames.js +69 -15
  77. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +2 -2
  78. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layout.js +7 -1
  79. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +30 -10
  80. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +376 -71
  81. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +0 -10
  82. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/viewDidResize.js +117 -34
  83. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view_states_test.js +52 -2
  84. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +656 -42
  85. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +159 -38
  86. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +0 -7
  87. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/design_mode.js +206 -0
  88. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +0 -28
  89. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +21 -6
  90. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +372 -450
  91. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +28 -13
  92. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +22 -51
  93. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/statechart.js +59 -30
  94. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +0 -29
  95. data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +22 -10
  96. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +42 -36
  97. data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +54 -3
  98. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +178 -59
  99. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +2 -2
  100. data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +206 -132
  101. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +214 -118
  102. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +96 -13
  103. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +14 -4
  104. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +82 -42
  105. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +272 -177
  106. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/store_interaction_test.js +54 -0
  107. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/datetime_recordattribute.js +24 -16
  108. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +6 -3
  109. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/data_store.js +267 -35
  110. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +57 -46
  111. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +150 -53
  112. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +57 -17
  113. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +13 -9
  114. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/polymorphism → datastore}/tests/models/polymorphism/many.js +2 -2
  115. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/polymorphism → datastore}/tests/models/polymorphism/simple.js +0 -0
  116. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/polymorphism → datastore}/tests/models/polymorphism/single.js +12 -2
  117. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +20 -15
  118. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +9 -2
  119. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +80 -14
  120. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/autonomous_dataSourceCallbacks.js +280 -0
  121. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/autonomous_pushChanges.js +232 -0
  122. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +31 -5
  123. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +16 -2
  124. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +60 -40
  125. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/materializeRecord.js +78 -0
  126. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -1
  127. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +20 -0
  128. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/{resources → english.lproj}/strings.js +0 -0
  129. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/french.lproj/strings.js +45 -0
  130. data/lib/frameworks/sproutcore/frameworks/designer/designers/object_designer.js +7 -3
  131. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +125 -44
  132. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +139 -48
  133. data/lib/frameworks/sproutcore/frameworks/desktop/panes/draggable.js +202 -0
  134. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +59 -56
  135. data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +13 -49
  136. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +466 -305
  137. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +49 -12
  138. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +79 -21
  139. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/split.js +12 -2
  140. data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu_item_view.css +8 -0
  141. data/lib/frameworks/sproutcore/frameworks/desktop/resources/overlay-scroller.css +187 -0
  142. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +94 -30
  143. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +163 -3
  144. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +97 -78
  145. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +61 -1
  146. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +7 -3
  147. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +47 -22
  148. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +66 -9
  149. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +21 -11
  150. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +12 -18
  151. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +17 -14
  152. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
  153. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +9 -6
  154. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/collection_fast_path.js +54 -21
  155. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +52 -20
  156. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +94 -4
  157. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/keyboard.js +177 -0
  158. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +13 -1
  159. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +9 -9
  160. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +18 -0
  161. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +104 -0
  162. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +48 -49
  163. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/drag_and_drop.js +22 -18
  164. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +17 -5
  165. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/link_view_test.js +136 -0
  166. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/contentIndexesInRect.js +77 -0
  167. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/drag_and_drop.js +53 -16
  168. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/layoutForContentIndex.js +41 -0
  169. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +25 -25
  170. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +102 -27
  171. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/{rowHeightForContentIndex.js → rowSizeForContentIndex.js} +7 -6
  172. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +2 -0
  173. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +70 -75
  174. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +29 -30
  175. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +57 -0
  176. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/menu_scroll_view/menu_scroll_view_test.js +206 -0
  177. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +15 -0
  178. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +15 -7
  179. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +16 -11
  180. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +164 -12
  181. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/scale.js +387 -0
  182. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/touch.js +549 -0
  183. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +214 -45
  184. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -5
  185. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +73 -22
  186. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +88 -3
  187. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/methods.js +8 -0
  188. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/methods.js +16 -1
  189. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/ui.js +54 -0
  190. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/dividers.js +21 -2
  191. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/static_content.js +31 -25
  192. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +109 -29
  193. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +10 -1
  194. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +3 -0
  195. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +779 -603
  196. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +106 -7
  197. data/lib/frameworks/sproutcore/frameworks/desktop/views/link_view.js +406 -0
  198. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +437 -245
  199. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +13 -0
  200. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +124 -62
  201. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +176 -597
  202. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroller_view.js +206 -0
  203. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +3 -0
  204. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +5 -4
  205. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +3 -0
  206. data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +56 -158
  207. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll_view.js +2560 -0
  208. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +458 -242
  209. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +117 -54
  210. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +18 -12
  211. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +162 -34
  212. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +30 -15
  213. data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +33 -7
  214. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +22 -2
  215. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +47 -22
  216. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +0 -6
  217. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +2 -1
  218. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form_row.js +21 -21
  219. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -3
  220. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/mixins/select_view_menu.js +24 -10
  221. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/ext/menu_resizing.js +1 -1
  222. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/bindings.js +7 -4
  223. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/check_selected.js +7 -9
  224. data/lib/frameworks/sproutcore/frameworks/{desktop/tests/panes/select_button/methods.js → experimental/frameworks/select_view/tests/views/select/method.js} +54 -76
  225. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/select/selected_item.js +35 -0
  226. data/lib/frameworks/sproutcore/frameworks/{desktop/tests/panes/select_button → experimental/frameworks/select_view/tests/views/select}/ui.js +107 -36
  227. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +225 -66
  228. data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +39 -38
  229. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +5 -18
  230. data/lib/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +12 -0
  231. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/inflections.js +84 -0
  232. data/lib/frameworks/sproutcore/frameworks/foundation/french.lproj/inflections.js +41 -0
  233. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_mixin.js +1 -0
  234. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +7 -0
  235. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +3 -4
  236. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +6 -2
  237. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +408 -239
  238. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +1 -1
  239. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +2 -1
  240. data/lib/frameworks/sproutcore/frameworks/foundation/spanish.lproj/inflections.js +38 -0
  241. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +104 -76
  242. data/lib/frameworks/sproutcore/frameworks/foundation/system/string.js +20 -94
  243. data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +33 -22
  244. data/lib/frameworks/sproutcore/frameworks/foundation/system/undo_manager.js +475 -0
  245. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/auto_resize_test.js +163 -1
  246. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +41 -0
  247. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +2 -5
  248. data/lib/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/methods.js +268 -0
  249. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/undo_manager.js +231 -0
  250. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +16 -0
  251. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +27 -0
  252. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +24 -0
  253. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +135 -6
  254. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/fade_transition.js +6 -0
  255. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/pop_transition.js +7 -0
  256. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/scale_transition.js +6 -0
  257. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/slide_transition.js +4 -0
  258. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_dissolve_transition.js +3 -1
  259. data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +21 -21
  260. data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +65 -15
  261. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -1
  262. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +1 -1
  263. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +193 -213
  264. data/lib/frameworks/sproutcore/frameworks/jquery/{jquery-1.8.3-patched.js → jquery-1.11.1.js} +7507 -6684
  265. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +28 -11
  266. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +26 -0
  267. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +54 -25
  268. data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +0 -6
  269. data/lib/frameworks/sproutcore/frameworks/runtime/ext/number.js +36 -0
  270. data/lib/frameworks/sproutcore/frameworks/runtime/ext/window.js +25 -0
  271. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +3 -3
  272. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +1 -1
  273. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +156 -66
  274. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +2 -2
  275. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +150 -65
  276. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +57 -11
  277. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +68 -49
  278. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +14 -6
  279. data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +23 -23
  280. data/lib/frameworks/sproutcore/frameworks/runtime/tests/ext/number_test.js +44 -0
  281. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +0 -10
  282. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable/enumerable.js +340 -285
  283. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +104 -3
  284. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/observer_set.js +14 -1
  285. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +15 -2
  286. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +21 -18
  287. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +52 -19
  288. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/pane.js +27 -24
  289. data/lib/frameworks/sproutcore/frameworks/template_view/controls/button.js +30 -0
  290. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/bind.js +1 -1
  291. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/collection.js +2 -0
  292. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/view.js +1 -0
  293. data/lib/frameworks/sproutcore/frameworks/template_view/tests/mixins/template_helpers/checkbox_support.js +2 -2
  294. data/lib/frameworks/sproutcore/frameworks/template_view/tests/views/template/handlebars.js +4 -2
  295. data/lib/frameworks/sproutcore/frameworks/template_view/views/bindable_span.js +1 -1
  296. data/lib/frameworks/sproutcore/frameworks/template_view/views/template_collection.js +16 -14
  297. data/lib/frameworks/sproutcore/frameworks/testing/core.js +5 -3
  298. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +13 -0
  299. data/lib/frameworks/sproutcore/lib/index.rhtml +2 -2
  300. data/lib/frameworks/sproutcore/phantomjs/test_runner.js +28 -7
  301. data/lib/frameworks/sproutcore/scripts/run_sc_server_master.sh +1 -1
  302. data/lib/frameworks/sproutcore/themes/ace/resources/_variables.css +2 -0
  303. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +1 -0
  304. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +3 -4
  305. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal.css +15 -15
  306. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal_overlay.css +74 -0
  307. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical.css +11 -13
  308. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical_overlay.css +74 -0
  309. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/knob-active.png +0 -0
  310. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/knob-active@2x.png +0 -0
  311. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/knob.png +0 -0
  312. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/knob@2x.png +0 -0
  313. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/{22px → jumbo}/slider.css +9 -4
  314. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/track.png +0 -0
  315. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/track@2x.png +0 -0
  316. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/knob-active.png +0 -0
  317. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/knob-active@2x.png +0 -0
  318. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/knob.png +0 -0
  319. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/knob@2x.png +0 -0
  320. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/slider.css +32 -0
  321. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/track.png +0 -0
  322. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/track@2x.png +0 -0
  323. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.css +13 -0
  324. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/knob-active.png +0 -0
  325. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/knob-active@2x.png +0 -0
  326. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/knob.png +0 -0
  327. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/knob@2x.png +0 -0
  328. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/slider.css +32 -0
  329. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/track.png +0 -0
  330. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/track@2x.png +0 -0
  331. data/lib/frameworks/sproutcore/themes/ace/resources/split/split.css +2 -3
  332. data/lib/sproutcore/builders/chance_file.rb +3 -3
  333. data/lib/sproutcore/helpers/minifier.rb +1 -0
  334. data/vendor/chance/lib/chance/instance.rb +34 -34
  335. data/vendor/chance/lib/chance/instance/spriting.rb +21 -16
  336. metadata +81 -58
  337. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +0 -17
  338. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +0 -710
  339. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +0 -267
  340. data/lib/frameworks/sproutcore/frameworks/desktop/resources/touch-scroller.css +0 -196
  341. data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +0 -224
  342. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +0 -163
  343. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +0 -177
  344. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +0 -2053
  345. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +0 -1024
  346. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +0 -404
  347. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/render_delegates/menu_scroller.js +0 -28
  348. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/tests/menu/scroll.js +0 -235
  349. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +0 -363
  350. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroller.js +0 -250
  351. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +0 -47
  352. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +0 -134
  353. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/desktop_scroller.js +0 -92
  354. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/native_scroll.js +0 -25
  355. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/scroll.js +0 -33
  356. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/touch_scroller.js +0 -76
  357. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/integration.js +0 -25
  358. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/methods.js +0 -143
  359. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/ui.js +0 -256
  360. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +0 -1164
  361. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroller.js +0 -332
  362. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +0 -236
  363. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroller.js +0 -347
  364. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroll.js +0 -15
  365. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroller.js +0 -10
  366. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +0 -804
  367. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroller.js +0 -133
  368. data/lib/frameworks/sproutcore/frameworks/foundation/tasks/preload_bundle.js +0 -41
  369. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal_touch.css +0 -91
  370. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical_touch.css +0 -92
  371. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/knob.png +0 -0
  372. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/knob_active.png +0 -0
  373. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/slider.css +0 -27
  374. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/knob.png +0 -0
  375. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/knob_active.png +0 -0
  376. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/slider.css +0 -27
  377. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/knob.png +0 -0
  378. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/knob_active.png +0 -0
  379. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/track.png +0 -0
  380. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/track.png +0 -0
@@ -4,13 +4,13 @@
4
4
  // portions copyright @2011 Apple Inc.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
+ /*globals module, test, ok, same, equals */
7
8
 
8
9
  /*
9
- This test evaluates a plain list with no custom row heights, outlines,
10
- group views or any other non-standard behavior.
10
+ This test evaluates progressive rendering to the clippingFrame in a plain list with no
11
+ custom row heights, outlines, group views or other non-standard behavior.
11
12
  */
12
13
 
13
-
14
14
  // create a fake content array. Generates a list with whatever length you
15
15
  // want of objects with a title based on the index. Cannot mutate.
16
16
  var ContentArray = SC.Object.extend(SC.Array, {
@@ -36,20 +36,21 @@ var ContentArray = SC.Object.extend(SC.Array, {
36
36
  }
37
37
  });
38
38
 
39
- var pane = SC.ControlTestPane.design()
40
- .add("basic", SC.ScrollView.design({
41
- borderStyle: SC.BORDER_NONE,
42
- layout: { left: 0, right: 0, top: 0, height: 300 },
43
- hasHorizontalScroller: NO,
44
- contentView: SC.ListView.design({
45
- content: ContentArray.create({ length: 20001 }),
46
- contentValueKey: "title",
47
- contentCheckboxKey: "isDone",
48
- contentUnreadCountKey: "unread",
49
- rowHeight: 20
50
-
51
- })
52
- }));
39
+ var pane = SC.ControlTestPane.design();
40
+ pane.add("basic", SC.ListView.design({
41
+ // To avoid turning this into a SC.ScrollView integration test, our strategy is to override clippingFrame to allow
42
+ // us to control it directly, focusing our tests on the "progressive rendering within a given clipping frame" unit.
43
+ clippingFrame: function(key, value) {
44
+ return value || { x: 0, y: 0, width: 100, height: 300 };
45
+ }.property('frame', 'parentView').cacheable(),
46
+
47
+ content: ContentArray.create({ length: 20001 }),
48
+ contentValueKey: "title",
49
+ contentCheckboxKey: "isDone",
50
+ contentUnreadCountKey: "unread",
51
+ rowHeight: 20
52
+
53
+ }));
53
54
 
54
55
  function verifyChildViewsMatch(views, set) {
55
56
  var indexes = set.clone();
@@ -77,14 +78,13 @@ module("SC.ListView - simple list", pane.standardSetup());
77
78
  //
78
79
 
79
80
  test("rendering only incremental portion", function() {
80
- var listView = pane.view("basic").contentView;
81
+ var listView = pane.view("basic");
81
82
  ok(listView.getPath("nowShowing.length") < listView.get('length'), 'nowShowing should be a subset of content items');
82
83
  equals(listView.get('childViews').length, listView.get('nowShowing').get('length'), 'should have same number of childViews as nowShowing length');
83
84
  });
84
85
 
85
86
  test("scrolling by small amount should update incremental rendering", function() {
86
- var scrollView = pane.view('basic'),
87
- listView = scrollView.contentView,
87
+ var listView = pane.view('basic'),
88
88
  exp;
89
89
 
90
90
  ok(listView.getPath('nowShowing.length') < listView.get('length'), 'precond - nowShowing has incremental range');
@@ -92,35 +92,34 @@ test("scrolling by small amount should update incremental rendering", function()
92
92
  exp = SC.IndexSet.create(0, 15);
93
93
  same(listView.get('nowShowing'), exp, 'nowShowing should start at just the first 20 items');
94
94
 
95
- // SCROLL DOWN ONE LINE
95
+ // CLIP DOWN ONE LINE
96
96
  SC.run(function() {
97
- scrollView.scrollTo(0,20);
97
+ listView.set('clippingFrame', { x: 0, y: 20, width: 100, height: 300 });
98
98
  });
99
99
 
100
- // top line should have scrolled out of view
100
+ // top line should be clipped out of view
101
101
  exp = SC.IndexSet.create(1,15);
102
102
  same(listView.get('nowShowing'), exp, 'nowShowing should change to reflect new clippingFrame');
103
103
 
104
104
  verifyChildViewsMatch(listView.childViews, exp);
105
105
 
106
- // SCROLL DOWN ANOTHER LINE
106
+ // CLIP DOWN ANOTHER LINE
107
107
  SC.run(function() {
108
- scrollView.scrollTo(0,42);
108
+ listView.set('clippingFrame', { x: 0, y: 42, width: 100, height: 300 });
109
109
  });
110
110
 
111
- // top line should have scrolled out of view
111
+ // top line should be clipped out of view
112
112
  exp = SC.IndexSet.create(2,16);
113
113
  same(listView.get('nowShowing'), exp, 'nowShowing should change to reflect new clippingFrame');
114
114
 
115
115
  verifyChildViewsMatch(listView.childViews, exp);
116
116
 
117
-
118
- // SCROLL UP ONE LINE
117
+ // CLIP BACK UP ONE LINE
119
118
  SC.run(function() {
120
- scrollView.scrollTo(0,21);
119
+ listView.set('clippingFrame', { x: 0, y: 21, width: 100, height: 300 });
121
120
  });
122
121
 
123
- // top line should have scrolled out of view
122
+ // top line should be clipped out of view
124
123
  exp = SC.IndexSet.create(1,16);
125
124
  same(listView.get('nowShowing'), exp, 'nowShowing should change to reflect new clippingFrame');
126
125
 
@@ -211,6 +211,18 @@ var pane = SC.ControlTestPane.design({ height: 32 })
211
211
  contentValueKey: "title",
212
212
  contentUnreadCountKey: "count",
213
213
  outlineLevel: 2
214
+ }))
215
+
216
+ .add("right icon", SC.ListItemView.design(SC.ActionSupport,{
217
+ content: SC.Object.create({
218
+ title: "List Item",
219
+ icon: "sc-icon-folder-16"
220
+ }),
221
+ contentValueKey: "title",
222
+ hasContentRightIcon: YES,
223
+ contentRightIconKey: "icon",
224
+ rightIconAction: "doOnRightIconAction",
225
+ rightIconTarget: "onRightIconTarget"
214
226
  }));
215
227
 
216
228
  // ..........................................................
@@ -314,6 +326,18 @@ function branch(view, visible) {
314
326
  }
315
327
  }
316
328
 
329
+ function rightIcon(view, hasIt) {
330
+ var cq = view.$(), rightIconCQ = cq.find('.right-icon');
331
+ if (hasIt) {
332
+ ok(cq.hasClass('has-right-icon'), "should have has-right-icon class");
333
+ equals(rightIconCQ.size(), 1, 'should have right icon');
334
+ } else {
335
+ ok(!cq.hasClass('has-right-icon'), "should not have has-right-icon class");
336
+ equals(rightIconCQ.size(), 0, 'should not have branch') ;
337
+ }
338
+ }
339
+
340
+
317
341
  // ..........................................................
318
342
  // Test Basic Setup
319
343
  //
@@ -495,3 +519,36 @@ test("changing count value should update display", function () {
495
519
  count(view, null); // verify change
496
520
  });
497
521
 
522
+ test("right icon action dom", function() {
523
+ // basic does not have right icon and action
524
+ var view = pane.view('basic');
525
+ rightIcon(view, false);
526
+
527
+ // has right icon and action
528
+ view = pane.view('right icon');
529
+ rightIcon(view, true);
530
+ });
531
+
532
+ test("right icon action event", function() {
533
+ var spiedRootResponder = { sendAction: function(){} };
534
+ var sendActionSpy = CoreTest.spyOn(spiedRootResponder, 'sendAction');
535
+
536
+ var view = pane.view('right icon'),
537
+ spyPane = SC.Object.create({
538
+ rootResponder: spiedRootResponder
539
+ });
540
+
541
+ view.pane=spyPane;
542
+
543
+ var expectedAction = view.get("rightIconAction");
544
+ var expectedTarget = view.get("rightIconTarget");
545
+ var target = view.$('.right-icon').get(0);
546
+ var evt = { target: target, which: 1 };
547
+ view.mouseDown(evt);
548
+ view.mouseUp(evt);
549
+
550
+ ok(expectedAction === "doOnRightIconAction", 'expectedAction should have been doOnRightIconAction');
551
+ ok(sendActionSpy.wasCalled, 'action should have been called');
552
+ ok(sendActionSpy.wasCalledWith(expectedAction,expectedTarget,view,spyPane), 'should have triggered the action with these arguments');
553
+ });
554
+
@@ -0,0 +1,206 @@
1
+ // ==========================================================================
2
+ // Project: SC.MenuScrollView Unit Test
3
+ // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
+ // License: Licensed under MIT license (see license.js)
5
+ // ==========================================================================
6
+ /*globals SC, module, test, ok, equals */
7
+
8
+ var view, pane;
9
+ module("Menu Scroll View", {
10
+ setup: function () {
11
+ SC.RunLoop.begin();
12
+
13
+ var content = ['Dogfish Head',
14
+ 'Delerium',
15
+ 'Smuttynose',
16
+ 'Harpoon',
17
+ 'Bitburger',
18
+ 'Goose Island',
19
+ 'Old Speckled Hen',
20
+ 'Fuller\'s',
21
+ 'Anchor',
22
+ 'Brooklyn',
23
+ 'Lagunitas',
24
+ 'Coney Island'];
25
+
26
+ view = SC.MenuScrollView.create({
27
+ layout: { top: 100, left: 20, height: 100, width: 100 },
28
+ contentView: SC.SourceListView.design({
29
+ content: content
30
+ })
31
+ });
32
+
33
+ pane = SC.MainPane.create();
34
+ pane.appendChild(view);
35
+ pane.append();
36
+
37
+ SC.RunLoop.end();
38
+ },
39
+
40
+ teardown: function () {
41
+ SC.RunLoop.begin();
42
+ pane.remove();
43
+ pane.destroy();
44
+ SC.RunLoop.end();
45
+ }
46
+ });
47
+
48
+ test("menu scroll views cannot scroll horizontally", function () {
49
+ ok(!view.get('hasHorizontalScroller'),
50
+ "the horizontal scroller doesn't exist");
51
+ ok(!view.get('canScrollHorizontal'), "The view cannot scroll horizontally.");
52
+ });
53
+
54
+ test("menu scrollers not visible when content doesn't fill the container", function () {
55
+ SC.RunLoop.begin();
56
+ view.setPath('contentView.content', []);
57
+ SC.RunLoop.end();
58
+
59
+ ok(view.get('hasVerticalScroller'), "the vertical scrollers should exist");
60
+ equals(view.getPath('topScrollerView.isVisible'), NO,
61
+ "the top vertical scroller shouldn't be visible");
62
+ equals(view.getPath('bottomScrollerView.isVisible'), NO,
63
+ "the bottom vertical scroller shouldn't be visible");
64
+ });
65
+
66
+ test("initially, only the bottom menu scroller should be visible", function () {
67
+ equals(view.getPath('topScrollerView.isVisible'), NO,
68
+ "the top scroller shouldn't be visible");
69
+ equals(view.getPath('bottomScrollerView.isVisible'), YES,
70
+ "the bottom scroller should be visible");
71
+ });
72
+
73
+ // ..........................................................
74
+ // autohidesVerticalScrollers => YES
75
+ //
76
+
77
+ // Top scroller visibility
78
+ test("when setting `verticalScrollOffset` to anywhere before the scroller thickness, the top scroller will become invisible", function () {
79
+ SC.run(function () {
80
+ view.scrollTo(0, 50);
81
+ });
82
+
83
+ ok(view.getPath('topScrollerView.isVisible'),
84
+ "top scroller should be visible 1");
85
+
86
+ SC.run(function () {
87
+ view.scrollTo(0, view.getPath('topScrollerView.scrollerThickness'));
88
+ });
89
+ equals(view.get('verticalScrollOffset'), 0,
90
+ "view should be at 0px scroll offset");
91
+ ok(!view.getPath('topScrollerView.isVisible'),
92
+ "top scroller should NOT be visible");
93
+
94
+ SC.run(function () {
95
+ view.scrollTo(0, 50);
96
+ });
97
+ ok(view.getPath('topScrollerView.isVisible'),
98
+ "top scroller should be visible 2");
99
+
100
+ SC.run(function () {
101
+ view.scrollTo(0, view.getPath('topScrollerView.scrollerThickness') + 1);
102
+ });
103
+ ok(view.getPath('topScrollerView.isVisible'),
104
+ "top scroller should be visible 3");
105
+
106
+ SC.run(function () {
107
+ view.scrollTo(0, 50);
108
+ });
109
+ ok(view.getPath('topScrollerView.isVisible'),
110
+ "top scroller should be visible 4");
111
+
112
+ SC.run(function () {
113
+ view.scrollTo(0, view.getPath('topScrollerView.scrollerThickness') - 1);
114
+ });
115
+ ok(!view.getPath('topScrollerView.isVisible'),
116
+ "top scroller should NOT be visible");
117
+ });
118
+
119
+ // Bottom scroller visibility
120
+ test("when setting `verticalScrollOffset` to anywhere before the scroller thickness, the bottom scroller will become invisible", function () {
121
+ var max = view.get('maximumVerticalScrollOffset');
122
+ ok(view.getPath('bottomScrollerView.isVisible'),
123
+ "bottom scroller should be visible 1");
124
+
125
+ // @ bottom
126
+ SC.run(function () {
127
+ view.scrollTo(0, max);
128
+ });
129
+ ok(!view.getPath('bottomScrollerView.isVisible'),
130
+ "bottom scroller should NOT be visible");
131
+
132
+ SC.run(function () {
133
+ view.scrollTo(0, 0);
134
+ });
135
+ ok(view.getPath('bottomScrollerView.isVisible'),
136
+ "bottom scroller should be visible 2");
137
+
138
+ // just enough so bottom is invisible
139
+ SC.run(function () {
140
+ view.scrollTo(0, max - view.getPath('bottomScrollerView.scrollerThickness') - 1);
141
+ });
142
+ ok(view.getPath('bottomScrollerView.isVisible'),
143
+ "bottom scroller should be visible 3");
144
+
145
+ SC.run(function () {
146
+ view.scrollTo(0, 0);
147
+ });
148
+ ok(view.getPath('bottomScrollerView.isVisible'),
149
+ "bottom scroller should be visible 4");
150
+
151
+ // exactly enough for bottom to be invisible
152
+ SC.run(function () {
153
+ view.scrollTo(0, max - view.getPath('bottomScrollerView.scrollerThickness'));
154
+ });
155
+ ok(!view.getPath('bottomScrollerView.isVisible'),
156
+ "bottom scroller should NOT be visible");
157
+
158
+ SC.run(function () {
159
+ view.scrollTo(0, 0);
160
+ });
161
+ ok(view.getPath('bottomScrollerView.isVisible'),
162
+ "bottom scroller should be visible 5");
163
+
164
+ // more than enough for bottom to be invisible
165
+ SC.run(function () {
166
+ view.scrollTo(0, max - view.getPath('bottomScrollerView.scrollerThickness') + 1);
167
+ });
168
+ ok(!view.getPath('bottomScrollerView.isVisible'),
169
+ "bottom scroller should NOT be visible");
170
+ });
171
+
172
+ test("when the top scroller becomes visible, the vertical scroll offset is adjusted by the scroller thickness", function () {
173
+ SC.run(function () {
174
+ view.scrollBy(0, 1);
175
+ });
176
+
177
+ var thickness = view.getPath('topScrollerView.scrollerThickness');
178
+
179
+ // check for adjustment
180
+ equals(view.get('verticalScrollOffset'),
181
+ 1 + thickness,
182
+ "the offset should be the scroller thickness + 1");
183
+
184
+ // shouldn't adjust this time
185
+ SC.run(function () {
186
+ view.scrollBy(0, 1);
187
+ });
188
+ equals(view.get('verticalScrollOffset'),
189
+ 2 + thickness,
190
+ "the offset should be the scroller thickness + 2");
191
+
192
+ // shouldn't adjust this time
193
+ SC.run(function () {
194
+ view.scrollBy(0, -1);
195
+ });
196
+ equals(view.get('verticalScrollOffset'),
197
+ 1 + thickness,
198
+ "the offset should be the scroller thickness + 1");
199
+
200
+ // check for adjustment
201
+ SC.run(function () {
202
+ view.scrollBy(0, -1);
203
+ });
204
+ equals(view.get('verticalScrollOffset'), 0,
205
+ "the offset should be 0px");
206
+ });
@@ -40,6 +40,12 @@ var pane = SC.ControlTestPane.design()
40
40
  minimum: 0,
41
41
  maximum: 50
42
42
  })
43
+ .add("progress basic min max", SC.ProgressView, {
44
+ layout: {top:0, bottom:0, left:0, width: 250},
45
+ value: 75,
46
+ minimum: 50,
47
+ maximum: 100
48
+ })
43
49
  .add("progress aria-role", SC.ProgressView, {
44
50
  layout: {top:0, bottom:0, left:0, width: 250},
45
51
  value: 10,
@@ -168,6 +174,15 @@ test("basic max 50", function() {
168
174
 
169
175
  });
170
176
 
177
+ test("basic min max", function () {
178
+ var view = pane.view('progress basic min max');
179
+
180
+ ok(!view.$().hasClass('disabled'), 'should NOT have disabled class');
181
+ ok(view.$('.content').length > 0, 'should have content class');
182
+ equals(view.$('.content')[0].style.width, "50%", 'width should be 50%');
183
+ equals(view.$('.content').width(), 125, 'pixel width ');
184
+ })
185
+
171
186
  // ..........................................................
172
187
  // TEST CHANGING PROGRESS BARS
173
188
  //
@@ -94,7 +94,9 @@ test("isEnabled should alter group classname and sync with isEnabled property",
94
94
  test("clicking on a radio button will change toggle the value", function() {
95
95
  equals(view.get('value'), 'Red', 'precond - value should be Red');
96
96
  var r = view.$('.sc-radio-button');
97
- SC.Event.trigger(r[1], 'mousedown');
97
+
98
+ var evt = SC.Event.simulateEvent(r[1], 'mousedown', { which: 1 });
99
+ SC.Event.trigger(r[1], 'mousedown', [evt]);
98
100
  SC.Event.trigger(r[1], 'mouseup');
99
101
  equals(view.get('value'), 'Green', 'value should have changed');
100
102
  });
@@ -103,7 +105,8 @@ test("pressing mouseDown and then mouseUp anywhere in a radio button should togg
103
105
  var elem = view.get('layer'),
104
106
  r = view.$('.sc-radio-button');
105
107
 
106
- SC.Event.trigger(r[0], 'mousedown');
108
+ var evt = SC.Event.simulateEvent(r[0], 'mousedown', { which: 1 });
109
+ SC.Event.trigger(r[0], 'mousedown', [evt]);
107
110
  equals(view.get('value'), 'Red', 'value should not change yet');
108
111
  ok(r.first().hasClass('active'), 'radio button should be active');
109
112
 
@@ -111,7 +114,8 @@ test("pressing mouseDown and then mouseUp anywhere in a radio button should togg
111
114
  SC.Event.trigger(r[0],'mouseup');
112
115
  //input.attr('checked', NO);
113
116
  // loose focus of the element since it was changed
114
- SC.Event.trigger(r[1],'mousedown');
117
+ evt = SC.Event.simulateEvent(r[1], 'mousedown', { which: 1 });
118
+ SC.Event.trigger(r[1], 'mousedown', [evt]);
115
119
  SC.Event.trigger(r[1],'mouseup');
116
120
 
117
121
  ok(!r.first().hasClass('active'), 'radio button should no longer be active');
@@ -128,7 +132,8 @@ test("isEnabled=NO should add disabled attr to input", function() {
128
132
  ok(view.$().hasClass('disabled'), 'should have disabled attr');
129
133
 
130
134
  ok(view.get('value'), 'precond - value should be true');
131
- view.mouseDown();
135
+ var evt = SC.Event.simulateEvent(view.get('layer'), 'mousedown', { which: 1 });
136
+ view.mouseDown(evt);
132
137
  view.mouseUp();
133
138
  ok(view.get('value'), 'value should not change when clicked');
134
139
  });
@@ -139,7 +144,8 @@ test("disabled radio buttons do not become selected on click", function () {
139
144
  var elem = view.get('layer'),
140
145
  r = view.$('.sc-radio-button');
141
146
 
142
- SC.Event.trigger(r[0], 'mousedown');
147
+ var evt = SC.Event.simulateEvent(r[0], 'mousedown', { which: 1 });
148
+ SC.Event.trigger(r[0], 'mousedown', [evt]);
143
149
  ok(!r.first().hasClass('active'), 'radio button should not be active');
144
150
 
145
151
  // simulate mouseUp and browser-native change to control
@@ -149,13 +155,15 @@ test("disabled radio buttons do not become selected on click", function () {
149
155
  equals(view.get('value'), undefined, "value should be undefined (nothing is checked)");
150
156
 
151
157
  // lose focus of the element since it was changed
152
- SC.Event.trigger(r[1],'mousedown');
158
+ evt = SC.Event.simulateEvent(r[1], 'mousedown', { which: 1 });
159
+ SC.Event.trigger(r[1], 'mousedown', [evt]);
153
160
  SC.Event.trigger(r[1],'mouseup');
154
161
 
155
162
  equals(view.get('value'), undefined, "value should be undefined (nothing is checked)");
156
163
 
157
164
  // last one is selectable
158
- SC.Event.trigger(r[2],'mousedown');
165
+ evt = SC.Event.simulateEvent(r[2], 'mousedown', { which: 1 });
166
+ SC.Event.trigger(r[2], 'mousedown', [evt]);
159
167
  SC.Event.trigger(r[2],'mouseup');
160
168
 
161
169
  equals(view.get('value'), view.items[2], "value should be 'Salgar'");