sproutcore 1.5.0.pre.3 → 1.5.0.pre.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. data/.rspec +1 -0
  2. data/CHANGELOG +42 -0
  3. data/README.txt +25 -0
  4. data/VERSION.yml +1 -1
  5. data/bin/sc-build +1 -1
  6. data/bin/sc-build-number +1 -1
  7. data/bin/sc-docs +1 -1
  8. data/bin/sc-gen +1 -1
  9. data/bin/sc-init +1 -1
  10. data/bin/sc-manifest +1 -1
  11. data/bin/sc-server +1 -1
  12. data/bin/sproutcore +1 -1
  13. data/lib/buildtasks/build.rake +5 -0
  14. data/lib/buildtasks/manifest.rake +20 -1
  15. data/lib/frameworks/sproutcore/Buildfile +12 -9
  16. data/lib/frameworks/sproutcore/CHANGELOG.md +48 -0
  17. data/lib/frameworks/sproutcore/apps/greenhouse/README +2 -9
  18. data/lib/frameworks/sproutcore/apps/greenhouse/TODO +11 -27
  19. data/lib/frameworks/sproutcore/apps/greenhouse/controllers/library.js +3 -10
  20. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/main-page.css +4 -31
  21. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/dialogs.js +5 -4
  22. data/lib/frameworks/sproutcore/apps/greenhouse/models/dir.js +3 -3
  23. data/lib/frameworks/sproutcore/apps/greenhouse/models/file.js +2 -2
  24. data/lib/frameworks/sproutcore/apps/greenhouse/states/main.js +31 -14
  25. data/lib/frameworks/sproutcore/apps/greenhouse/states/modals.js +2 -1
  26. data/lib/frameworks/sproutcore/apps/greenhouse/states/ready.js +27 -1
  27. data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/list_item.js +1 -0
  28. data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/plist_item.js +20 -0
  29. data/lib/frameworks/sproutcore/apps/greenhouse/theme.js +25 -0
  30. data/lib/frameworks/sproutcore/apps/greenhouse/views/plist_item.js +161 -24
  31. data/lib/frameworks/sproutcore/apps/greenhouse/views/tear_off_picker.js +1 -1
  32. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +37 -25
  33. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +135 -26
  34. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/array.js +0 -0
  35. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/controller.js +0 -0
  36. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/object.js +1 -1
  37. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/core.js +0 -0
  38. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/ext/object.js +0 -0
  39. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/ext/run_loop.js +1 -0
  40. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/delegate_support.js +0 -0
  41. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/responder_context.js +0 -0
  42. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/selection_support.js +0 -0
  43. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/string.js +0 -0
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +68 -0
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +108 -0
  46. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/panes/main.js +2 -2
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/manipulation.js +27 -0
  48. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/panes/pane.js +215 -505
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +24 -0
  50. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +11 -0
  51. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/protocols/observable_protocol.js +0 -0
  52. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/protocols/sparse_array_delegate.js +0 -0
  53. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/resources/core.css +0 -0
  54. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/resources/view.css +0 -0
  55. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/application.js +0 -0
  56. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/browser.js +1 -0
  57. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/builder.js +0 -0
  58. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/core_query.js +1 -1
  59. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/cursor.js +0 -0
  60. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +210 -0
  61. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/event.js +5 -5
  62. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/json.js +0 -0
  63. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/locale.js +0 -0
  64. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/page.js +0 -0
  65. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/platform.js +31 -5
  66. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/ready.js +1 -1
  67. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/render_context.js +0 -0
  68. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/responder.js +0 -0
  69. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/root_responder.js +83 -110
  70. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/selection_set.js +7 -4
  71. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/sparse_array.js +0 -0
  72. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/theme.js +0 -0
  73. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/timer.js +0 -0
  74. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/utils/rect.js +0 -0
  75. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +151 -0
  76. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/array_case.js +0 -0
  77. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/enum_case.js +0 -0
  78. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/null_case.js +0 -0
  79. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/selection_support.js +26 -0
  80. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/single_case.js +0 -0
  81. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/empty_case.js +0 -0
  82. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/multiple_case.js +0 -0
  83. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/single_case.js +0 -0
  84. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/single_enumerable_case.js +0 -0
  85. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/mixins/responder_context.js +0 -0
  86. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/mixins/string.js +0 -0
  87. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +14 -0
  88. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/builder.js +0 -0
  89. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/core_query/within.js +0 -0
  90. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/json.js +0 -0
  91. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/locale.js +0 -0
  92. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/begin.js +0 -0
  93. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/element.js +0 -0
  94. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/end.js +0 -0
  95. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/get.js +0 -0
  96. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_attr.js +0 -0
  97. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_basic.js +0 -0
  98. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_className.js +0 -0
  99. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_style.js +0 -0
  100. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/init.js +0 -0
  101. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/join.js +0 -0
  102. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/push_text.js +0 -0
  103. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/tag.js +0 -0
  104. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/update.js +0 -0
  105. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeKeyPane.js +0 -0
  106. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeMainPane.js +0 -0
  107. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeMenuPane.js +0 -0
  108. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/root_responder.js +0 -0
  109. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/targetForAction.js +0 -0
  110. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/add.js +0 -0
  111. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/copy.js +0 -0
  112. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/indexSetForSource.js +0 -0
  113. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/isEqual.js +0 -0
  114. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/remove.js +0 -0
  115. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/sparse_array.js +0 -0
  116. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/theme.js +0 -0
  117. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/invalidate.js +0 -0
  118. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/invokeLater.js +0 -0
  119. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/isPaused.js +0 -0
  120. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/performAction.js +0 -0
  121. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/schedule.js +0 -0
  122. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/utils/normalizeURL.js +0 -0
  123. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +268 -0
  124. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/utils/rect.js +0 -0
  125. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +43 -0
  126. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/append_remove.js +107 -18
  127. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +20 -0
  128. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/firstResponder.js +0 -0
  129. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/keyPane.js +0 -0
  130. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/layout.js +0 -0
  131. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/sendEvent.js +0 -0
  132. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/checkbox_support.js +32 -0
  133. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/text_field_support.js +73 -0
  134. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/collection.js +65 -0
  135. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/core.js +67 -0
  136. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/handlebars.js +295 -0
  137. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/animation.js +19 -18
  138. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/build.js +0 -0
  139. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/build_children.js +0 -0
  140. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/clippingFrame.js +0 -0
  141. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/convertFrames.js +0 -0
  142. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/convertLayouts.js +0 -0
  143. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/createChildViews.js +18 -15
  144. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/createLayer.js +0 -0
  145. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/destroyLayer.js +0 -0
  146. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/didAppendToDocument.js +11 -8
  147. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/findLayerInParentLayer.js +0 -0
  148. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/init.js +0 -0
  149. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/insertBefore.js +0 -0
  150. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/isVisible.js +28 -0
  151. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/isVisibleInWindow.js +0 -0
  152. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +22 -0
  153. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/layer.js +0 -0
  154. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/layoutChildViews.js +0 -0
  155. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +180 -0
  156. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +640 -0
  157. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/parentViewDidChange.js +0 -0
  158. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/prepareContext.js +0 -0
  159. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/removeChild.js +0 -0
  160. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +125 -0
  161. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/render_delegate_support.js +0 -0
  162. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/replaceChild.js +0 -0
  163. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +21 -0
  164. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/theme.js +0 -0
  165. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/updateLayer.js +0 -0
  166. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/updateLayerLocation.js +0 -0
  167. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/view.js +0 -0
  168. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/viewDidResize.js +0 -0
  169. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/checkbox_support.js +20 -0
  170. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +99 -0
  171. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/text_field_support.js +35 -0
  172. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template.js +77 -0
  173. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +187 -0
  174. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/base.js +1 -0
  175. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +41 -0
  176. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +57 -0
  177. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +223 -0
  178. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +1150 -0
  179. data/lib/frameworks/sproutcore/frameworks/{amber/views → core_foundation/views/view}/layout_style.js +93 -1
  180. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +489 -0
  181. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +362 -0
  182. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/touch.js +67 -0
  183. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/visibility.js +113 -0
  184. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +1280 -0
  185. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +27 -53
  186. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +13 -19
  187. data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +1 -0
  188. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +183 -71
  189. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +1 -2
  190. data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +26 -46
  191. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +25 -4
  192. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +139 -21
  193. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +6 -1
  194. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/cyclical_relationship.js +1 -1
  195. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/{parentless.js → data_store.js} +62 -16
  196. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +51 -17
  197. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +36 -10
  198. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +11 -11
  199. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +8 -8
  200. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +2 -2
  201. data/lib/frameworks/sproutcore/frameworks/{foundation/english.lproj → datetime/resources}/strings.js +1 -0
  202. data/lib/frameworks/sproutcore/frameworks/{foundation → datetime}/system/datetime.js +5 -37
  203. data/lib/frameworks/sproutcore/frameworks/{foundation → datetime}/tests/system/datetime.js +1 -0
  204. data/lib/frameworks/sproutcore/frameworks/debug/core.js +1 -1
  205. data/lib/frameworks/sproutcore/frameworks/designer/controllers/designs.js +1 -2
  206. data/lib/frameworks/sproutcore/frameworks/designer/designers/object_designer.js +3 -3
  207. data/lib/frameworks/sproutcore/frameworks/designer/designers/view_designer.js +3 -3
  208. data/lib/frameworks/sproutcore/frameworks/designer/views/designer_drop_target.js +9 -3
  209. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +71 -70
  210. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +10 -2
  211. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -19
  212. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +33 -14
  213. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +25 -0
  214. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +1 -1
  215. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +25 -103
  216. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +102 -92
  217. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +22 -25
  218. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +38 -25
  219. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +1 -1
  220. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +1 -1
  221. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +42 -22
  222. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +513 -230
  223. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +0 -2
  224. data/lib/frameworks/sproutcore/frameworks/experimental/README.md +23 -0
  225. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/README.md +11 -0
  226. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +215 -0
  227. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +67 -0
  228. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +34 -0
  229. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/polymorphic_single_attribute.js +183 -0
  230. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +23 -0
  231. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphic/single.js +124 -0
  232. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -2
  233. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +151 -0
  234. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +27 -17
  235. data/lib/frameworks/sproutcore/frameworks/foundation/system/image_queue.js +6 -3
  236. data/lib/frameworks/sproutcore/frameworks/foundation/system/logger.js +163 -0
  237. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +6 -3
  238. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +1 -0
  239. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/logger.js +44 -0
  240. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +200 -167
  241. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +1 -1
  242. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +52 -137
  243. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +7 -11
  244. data/lib/frameworks/sproutcore/frameworks/handlebars/extensions.js +138 -0
  245. data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +1338 -0
  246. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +32 -26
  247. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +162 -3
  248. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +10 -5
  249. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +123 -3
  250. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +12 -5
  251. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +50 -13
  252. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +163 -333
  253. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +58 -8
  254. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +2 -0
  255. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +9 -6
  256. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +15 -1
  257. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +2 -0
  258. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +31 -0
  259. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +18 -0
  260. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +31 -143
  261. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/concatenated_properties.js +71 -0
  262. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +177 -0
  263. data/lib/frameworks/sproutcore/frameworks/table/views/table.js +5 -4
  264. data/lib/frameworks/sproutcore/frameworks/table/views/table_header.js +5 -3
  265. data/lib/frameworks/sproutcore/themes/ace/resources/button/button.js +8 -2
  266. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +2 -3
  267. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +1 -1
  268. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +1 -1
  269. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +1 -1
  270. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +1 -1
  271. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +2 -2
  272. data/lib/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +62 -62
  273. data/lib/gen/html_app/Buildfile +36 -0
  274. data/lib/gen/html_app/README +1 -0
  275. data/lib/gen/html_app/USAGE +15 -0
  276. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +14 -0
  277. data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
  278. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -0
  279. data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +1 -0
  280. data/lib/gen/html_project/Buildfile +45 -0
  281. data/lib/gen/html_project/INIT +3 -0
  282. data/lib/gen/html_project/README +1 -0
  283. data/lib/gen/html_project/USAGE +2 -0
  284. data/lib/gen/html_project/templates/@filename@/Buildfile +8 -0
  285. data/lib/gen/html_project/templates/@filename@/README +7 -0
  286. data/lib/sproutcore/builders/handlebars.rb +30 -0
  287. data/lib/sproutcore/builders.rb +1 -1
  288. data/lib/sproutcore/helpers/static_helper.rb +3 -3
  289. data/lib/sproutcore/tools/init.rb +25 -9
  290. data/spec/buildtasks/manifest/prepare_build_tasks/handlebars_spec.rb +39 -0
  291. data/spec/fixtures/builder_tests/apps/handlebars_test/template.handlebars +5 -0
  292. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/templates/demo.handlebars +4 -0
  293. data/spec/lib/builders/handlebars_spec.rb +29 -0
  294. data/vendor/chance/lib/chance/imagers/data_url.rb +20 -7
  295. data/vendor/chance/lib/chance/instance.rb +4 -1
  296. data/vendor/chance/lib/chance/parser.rb +31 -31
  297. data/vendor/chance/lib/chance/slicing.rb +38 -8
  298. metadata +195 -225
  299. data/lib/frameworks/sproutcore/frameworks/amber/system/device.js +0 -143
  300. data/lib/frameworks/sproutcore/frameworks/amber/system/utils.js +0 -174
  301. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/main_pane.js +0 -31
  302. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/pane/sendTouchEvent.js +0 -267
  303. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/layoutDidChange.js +0 -149
  304. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/layoutStyle.js +0 -602
  305. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/render.js +0 -115
  306. data/lib/frameworks/sproutcore/frameworks/amber/views/base.js +0 -1
  307. data/lib/frameworks/sproutcore/frameworks/amber/views/view.js +0 -4003
  308. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +0 -105
@@ -10,17 +10,17 @@ htmlbody('<div id="appendtest"></div>');
10
10
 
11
11
  // ..........................................................
12
12
  // appendTo()
13
- //
13
+ //
14
14
  module("SC.Pane#appendTo");
15
15
 
16
- test("adding to document for first time", function() {
16
+ test("adding to document for first time - appendTo(elem)", function() {
17
17
  var pane = SC.Pane.create();
18
18
  ok(!pane.get('layer'), 'precond - does not yet have layer');
19
19
  ok(!pane.get('isVisibleInWindow'), 'precond - isVisibleInWindow = NO');
20
-
20
+
21
21
  var elem = Q$('body').get(0);
22
22
  ok(elem, 'precond - found element to add to');
23
-
23
+
24
24
  // now add
25
25
  pane.appendTo(elem);
26
26
  var layer = pane.get('layer');
@@ -28,9 +28,82 @@ test("adding to document for first time", function() {
28
28
  equals(layer.parentNode, elem, 'layer should belong to parent');
29
29
  ok(pane.get('isVisibleInWindow'), 'isVisibleInWindow should = YES');
30
30
  ok(pane.rootResponder, 'should have rootResponder');
31
-
32
31
  });
33
32
 
33
+ test("adding to document for first time - appendTo(string)", function() {
34
+ var pane = SC.Pane.create();
35
+ ok(!pane.get('layer'), 'precond - does not yet have layer');
36
+ ok(!pane.get('isVisibleInWindow'), 'precond - isVisibleInWindow = NO');
37
+
38
+ // now add
39
+ pane.appendTo("#appendtest");
40
+ var layer = pane.get('layer');
41
+ ok(layer, 'should create layer');
42
+ equals(layer.parentNode, jQuery("#appendtest")[0], 'layer should belong to parent');
43
+ ok(pane.get('isVisibleInWindow'), 'isVisibleInWindow should = YES');
44
+ ok(pane.rootResponder, 'should have rootResponder');
45
+ });
46
+
47
+ test("adding to document for first time - appendTo(jquery)", function() {
48
+ var pane = SC.Pane.create();
49
+ ok(!pane.get('layer'), 'precond - does not yet have layer');
50
+ ok(!pane.get('isVisibleInWindow'), 'precond - isVisibleInWindow = NO');
51
+
52
+ // now add
53
+ pane.appendTo(jQuery("#appendtest"));
54
+ var layer = pane.get('layer');
55
+ ok(layer, 'should create layer');
56
+ equals(layer.parentNode, jQuery("#appendtest")[0], 'layer should belong to parent');
57
+ ok(pane.get('isVisibleInWindow'), 'isVisibleInWindow should = YES');
58
+ ok(pane.rootResponder, 'should have rootResponder');
59
+ });
60
+
61
+ test("adding to document for first time - prependTo(elem)", function() {
62
+ var pane = SC.Pane.create();
63
+ ok(!pane.get('layer'), 'precond - does not yet have layer');
64
+ ok(!pane.get('isVisibleInWindow'), 'precond - isVisibleInWindow = NO');
65
+
66
+ var elem = Q$('body').get(0);
67
+ ok(elem, 'precond - found element to add to');
68
+
69
+ // now add
70
+ pane.prependTo(elem);
71
+ var layer = pane.get('layer');
72
+ ok(layer, 'should create layer');
73
+ equals(layer.parentNode, elem, 'layer should belong to parent');
74
+ ok(pane.get('isVisibleInWindow'), 'isVisibleInWindow should = YES');
75
+ ok(pane.rootResponder, 'should have rootResponder');
76
+ });
77
+
78
+ test("adding to document for first time - prependTo(string)", function() {
79
+ var pane = SC.Pane.create();
80
+ ok(!pane.get('layer'), 'precond - does not yet have layer');
81
+ ok(!pane.get('isVisibleInWindow'), 'precond - isVisibleInWindow = NO');
82
+
83
+ // now add
84
+ pane.prependTo("#appendtest");
85
+ var layer = pane.get('layer');
86
+ ok(layer, 'should create layer');
87
+ equals(layer.parentNode, jQuery("#appendtest")[0], 'layer should belong to parent');
88
+ ok(pane.get('isVisibleInWindow'), 'isVisibleInWindow should = YES');
89
+ ok(pane.rootResponder, 'should have rootResponder');
90
+ });
91
+
92
+ test("adding to document for first time - prependTo(jquery)", function() {
93
+ var pane = SC.Pane.create();
94
+ ok(!pane.get('layer'), 'precond - does not yet have layer');
95
+ ok(!pane.get('isVisibleInWindow'), 'precond - isVisibleInWindow = NO');
96
+
97
+ // now add
98
+ pane.prependTo(jQuery("#appendtest"));
99
+ var layer = pane.get('layer');
100
+ ok(layer, 'should create layer');
101
+ equals(layer.parentNode, jQuery("#appendtest")[0], 'layer should belong to parent');
102
+ ok(pane.get('isVisibleInWindow'), 'isVisibleInWindow should = YES');
103
+ ok(pane.rootResponder, 'should have rootResponder');
104
+ });
105
+
106
+
34
107
  test("adding a pane twice should have no effect", function() {
35
108
  var cnt = 0;
36
109
  var pane = SC.Pane.create();
@@ -39,7 +112,7 @@ test("adding a pane twice should have no effect", function() {
39
112
  cnt++;
40
113
  return this._tmp_paneDidAttach.apply(this, arguments);
41
114
  };
42
-
115
+
43
116
  pane.append();
44
117
  pane.append();
45
118
  equals(cnt, 1, 'should only append once');
@@ -49,12 +122,12 @@ test("readding pane", function() {
49
122
  var pane = SC.Pane.create();
50
123
  var elem1 = Q$('body').get(0), elem2 = Q$('#appendtest').get(0);
51
124
  ok(elem1 && elem2, 'precond - has elem1 && elem2: elem1=%@ elem2=%@'.fmt(elem1, elem2));
52
-
125
+
53
126
  pane.appendTo(elem1);
54
127
  var layer = pane.get('layer');
55
128
  ok(layer, 'has layer');
56
129
  equals(layer.parentNode, elem1, 'layer belongs to parent');
57
-
130
+
58
131
  pane.appendTo(elem2);
59
132
  equals(layer.parentNode, elem2, 'layer moved to new parent');
60
133
  ok(pane.get('isVisibleInWindow'), 'isVisibleInWindow should = YES');
@@ -65,7 +138,7 @@ test("adding/remove/adding pane", function() {
65
138
  var pane = SC.Pane.create();
66
139
  var elem1 = Q$('body').get(0), elem2 = Q$('#appendtest').get(0);
67
140
  ok(elem1 && elem2, 'precond - has elem1 && elem2');
68
-
141
+
69
142
  pane.appendTo(elem1);
70
143
  var layer = pane.get('layer');
71
144
  ok(layer, 'has layer');
@@ -73,17 +146,33 @@ test("adding/remove/adding pane", function() {
73
146
  ok(pane.get('isVisibleInWindow'), 'isVisibleInWindow is YES before remove');
74
147
  pane.remove();
75
148
  ok(!pane.get('isVisibleInWindow'), 'isVisibleInWindow is NO');
76
-
149
+
77
150
  pane.appendTo(elem2);
78
151
  layer = pane.get('layer');
79
152
  equals(layer.parentNode, elem2, 'layer moved to new parent');
80
153
  ok(pane.get('isVisibleInWindow'), 'isVisibleInWindow should = YES');
81
154
  ok(pane.rootResponder, 'should have rootResponder');
82
155
  });
83
-
156
+
157
+ test("removeFromParent throws an exception", function() {
158
+ var pane, exceptionCaught = false;
159
+
160
+ try {
161
+ pane = SC.Pane.create();
162
+ pane.append();
163
+ pane.removeFromParent();
164
+ } catch(e) {
165
+ exceptionCaught = (e instanceof SC.Error);
166
+ } finally {
167
+ pane.remove();
168
+ }
169
+
170
+ ok(exceptionCaught, "trying to call removeFromParent on a pane throws an exception");
171
+ });
172
+
84
173
  // ..........................................................
85
174
  // remove()
86
- //
175
+ //
87
176
  module("SC.Pane#remove");
88
177
 
89
178
  test("removes pane from DOM", function() {
@@ -94,7 +183,7 @@ test("removes pane from DOM", function() {
94
183
  pane.appendTo(elem);
95
184
  layer = pane.get('layer');
96
185
  ok(elem, 'precond - found element to add to');
97
-
186
+
98
187
  pane.remove();
99
188
  ok(layer.parentNode !== elem, 'layer no longer belongs to parent');
100
189
  ok(!pane.get('isVisibleInWindow'), 'isVisibleInWindow is NO');
@@ -103,14 +192,14 @@ test("removes pane from DOM", function() {
103
192
 
104
193
  // ..........................................................
105
194
  // SPECIAL CASES
106
- //
195
+ //
107
196
 
108
197
  test("updates frame and clippingFrame when loading MainPane", function() {
109
-
198
+
110
199
  // needs a fixed layout size to make sure the sizes stay constant
111
- var pane = SC.MainPane.create();
200
+ var pane = SC.MainPane.create();
112
201
  var w = SC.RootResponder.responder.computeWindowSize().width;
113
-
202
+
114
203
  // add the pane to the main window. should resize the frames
115
204
  SC.run(function() {
116
205
  pane.append();
@@ -119,6 +208,6 @@ test("updates frame and clippingFrame when loading MainPane", function() {
119
208
  // should equal window size
120
209
  equals(pane.get('frame').width, w, 'frame width should have changed');
121
210
  equals(pane.get('clippingFrame').width, w, 'clippingFrame width should have changed');
122
-
211
+
123
212
  });
124
213
 
@@ -0,0 +1,20 @@
1
+ module("SC.Pane - childViews");
2
+
3
+ test("SC.Pane should not attempt to recompute visibility on child views that do not have visibility support", function() {
4
+ var pane = SC.Pane.create({
5
+ childViews: ['noVisibility'],
6
+
7
+ noVisibility: SC.CoreView
8
+ });
9
+
10
+ // tomdale insists on slowing down the tests with extra scope chain traversals
11
+ var errored = NO;
12
+
13
+ try {
14
+ pane.append();
15
+ } catch(e) {
16
+ errored = YES;
17
+ }
18
+
19
+ ok(!errored, "appending a pane with child views without visibility does not result in an error");
20
+ });
@@ -0,0 +1,32 @@
1
+ (function() {
2
+ var checkboxView, pane;
3
+
4
+ module("Checkbox Support", {
5
+ setup: function() {
6
+ checkboxView = SC.TemplateView.create(SC.CheckboxSupport, {
7
+ template: SC.Handlebars.compile('<input type="checkbox">')
8
+ });
9
+
10
+ pane = SC.MainPane.create({
11
+ childViews: [checkboxView]
12
+ });
13
+ pane.append();
14
+ },
15
+
16
+ teardown: function() {
17
+ pane.remove();
18
+ }
19
+ });
20
+
21
+ test("value property mirrors input value", function() {
22
+ checkboxView.$('input').attr('checked', true);
23
+
24
+ equals(checkboxView.get('value'), true, "gets value property from DOM");
25
+
26
+ checkboxView.$('input').attr('checked', false);
27
+
28
+ checkboxView.set('value', true);
29
+ ok(checkboxView.$('input').attr("checked"), "sets value of DOM to value property");
30
+ });
31
+ })();
32
+
@@ -0,0 +1,73 @@
1
+ (function() {
2
+ var textFieldView, pane;
3
+
4
+ module("Text Field Support", {
5
+ setup: function() {
6
+ textFieldView = SC.TemplateView.create(SC.TextFieldSupport, {
7
+ template: SC.Handlebars.compile('<input type="text">')
8
+ });
9
+
10
+ pane = SC.MainPane.create({
11
+ childViews: [textFieldView]
12
+ });
13
+ pane.append();
14
+ },
15
+
16
+ teardown: function() {
17
+ pane.remove();
18
+ }
19
+ });
20
+
21
+ test("value property mirrors input value", function() {
22
+ textFieldView.$('input').val('foo bar');
23
+
24
+ equals(textFieldView.get('value'), 'foo bar', "gets value property from DOM");
25
+
26
+ textFieldView.set('value', "afterlife");
27
+ equals(textFieldView.$('input').val(), "afterlife", "sets value of DOM to value property");
28
+ });
29
+
30
+ test("listens for focus and blur events", function() {
31
+ var focusCalled = 0;
32
+ var blurCalled = 0;
33
+
34
+ textFieldView.focus = function() {
35
+ focusCalled++;
36
+ };
37
+ textFieldView.blur = function() {
38
+ blurCalled++;
39
+ };
40
+
41
+ equals(focusCalled+blurCalled, 0, "precond - no callbacks called yet");
42
+
43
+ textFieldView.$('input').focus();
44
+ equals(focusCalled, 1, "focus called after field receives focus");
45
+
46
+ textFieldView.$('input').blur();
47
+ equals(blurCalled, 1, "blur alled after field blurs");
48
+ });
49
+
50
+ test("calls correct method for key events", function() {
51
+ var insertNewlineCalled = 0;
52
+ var cancelCalled = 0;
53
+
54
+ textFieldView.insertNewline = function() {
55
+ insertNewlineCalled++;
56
+ return YES;
57
+ };
58
+ textFieldView.cancel = function() {
59
+ cancelCalled++;
60
+ return YES;
61
+ };
62
+
63
+ textFieldView.$('input').focus();
64
+ equals(insertNewlineCalled+cancelCalled, 0, "precond - no callbacks called yet");
65
+
66
+ SC.RootResponder.responder.keyup(new SC.Event({ type: 'keyup', keyCode: 13 }));
67
+ equals(insertNewlineCalled, 1, "calls insertNewline after hitting return");
68
+
69
+ SC.RootResponder.responder.keyup(new SC.Event({ type: 'keyup', keyCode: 27 }));
70
+ equals(cancelCalled, 1, "calls cancel after pressing escape key");
71
+
72
+ });
73
+ })();
@@ -0,0 +1,65 @@
1
+ module("SC.TemplateCollectionView");
2
+
3
+ test("creating a collection view works", function() {
4
+ var ExampleView = SC.TemplateView.extend({
5
+ tagName: 'li',
6
+ template: SC.Handlebars.compile('{{content/title}}')
7
+ });
8
+
9
+ var CollectionView = SC.TemplateCollectionView.extend({
10
+ content: [{title: 'Hello'}],
11
+ itemView: ExampleView
12
+ });
13
+
14
+ var collectionView = CollectionView.create();
15
+ collectionView.createLayer();
16
+
17
+ ok(collectionView.$('li').length === 1, "The child example view was rendered");
18
+ });
19
+
20
+ test("passing a block to the collection helper sets it as the template for example views", function() {
21
+ TemplateTests.CollectionTestView = SC.TemplateCollectionView.create({
22
+ content: ['foo', 'bar', 'baz']
23
+ });
24
+
25
+ var view = SC.TemplateView.create({
26
+ template: SC.Handlebars.compile('{{#collection "TemplateTests.CollectionTestView"}} <aside></aside> {{/collection}}')
27
+ });
28
+
29
+ view.createLayer();
30
+ equals(view.$('aside').length, 3, 'one aside element is created for each content item');
31
+ });
32
+
33
+ test("a block passed to a collection helper defaults to the content property of the context", function() {
34
+ TemplateTests.CollectionTestView = SC.TemplateCollectionView.create({
35
+ content: ['foo', 'bar', 'baz']
36
+ });
37
+
38
+ var view = SC.TemplateView.create({
39
+ template: SC.Handlebars.compile('{{#collection "TemplateTests.CollectionTestView"}} <aside>{{this}}</aside> {{/collection}}')
40
+ });
41
+
42
+ view.createLayer();
43
+ equals(view.$('li:has(aside:contains("foo")) + li:has(aside:contains("bar")) + li:has(aside:contains("baz"))').length, 1, 'one aside element is created for each content item');
44
+ });
45
+
46
+ test("a block passed to a collection helper defaults to the content property of the context", function() {
47
+ TemplateTests.CollectionTestView = SC.TemplateCollectionView.create({
48
+ content: ['foo', 'bar', 'baz']
49
+ });
50
+
51
+ var view = SC.TemplateView.create({
52
+ template: SC.Handlebars.compile('{{#collection "TemplateTests.CollectionTestView"}} <aside>{{this}}</aside> {{/collection}}')
53
+ });
54
+
55
+ view.createLayer();
56
+ equals(view.$('li:has(aside:contains("foo")) + li:has(aside:contains("bar")) + li:has(aside:contains("baz"))').length, 1, 'precond - one aside element is created for each content item');
57
+
58
+ window.billy = true;
59
+
60
+ SC.run(function() {
61
+ TemplateTests.CollectionTestView.set('content', []);
62
+ });
63
+ equals(view.$('aside').length, 0, "all list item views should be removed from DOM");
64
+ });
65
+
@@ -0,0 +1,67 @@
1
+ module("SC.TemplateView", {
2
+ setup: function() {
3
+ // var view = SC.TemplateView.create();
4
+ },
5
+
6
+ teardown: function() {
7
+
8
+ }
9
+ });
10
+
11
+ test("template view should call the function of the associated template", function() {
12
+ var view;
13
+
14
+ view = SC.TemplateView.create({
15
+ templateName: 'test_template',
16
+
17
+ templates: SC.Object.create({
18
+ test_template: function(dataSource) {
19
+ return "<h1 id='twas-called'>template was called</h1>";
20
+ }
21
+ })
22
+ });
23
+
24
+ view.createLayer();
25
+
26
+ ok(view.$('#twas-called').length, "the named template was called");
27
+ });
28
+
29
+ test("template view should call the function of the associated template with itself as the context", function() {
30
+ var view;
31
+
32
+ view = SC.TemplateView.create({
33
+ templateName: 'test_template',
34
+
35
+ personName: "Tom DAAAALE",
36
+
37
+ templates: SC.Object.create({
38
+ test_template: function(dataSource) {
39
+ return "<h1 id='twas-called'>template was called for " + dataSource.get('personName') + "</h1>";
40
+ }
41
+ })
42
+ });
43
+
44
+ view.createLayer();
45
+
46
+ equals("template was called for Tom DAAAALE", view.$('#twas-called').text(), "the named template was called with the view as the data source");
47
+ });
48
+
49
+ test("template view defaults to a noop template", function() {
50
+ var view;
51
+ view = SC.TemplateView.create({});
52
+ view.createLayer();
53
+
54
+ equals(view.$().html(), '', "view div should be empty");
55
+ });
56
+
57
+ test("template views return YES to mouseDown if there is a mouseUp method", function() {
58
+ var view = SC.TemplateView.create();
59
+
60
+ ok(!view.tryToPerform('mouseDown'), "view returns NO if there is no mouseUp method");
61
+
62
+ view = SC.TemplateView.create({
63
+ mouseUp: function() { }
64
+ });
65
+
66
+ ok(view.tryToPerform('mouseDown'), "view returns YES if we add a mouseUp method");
67
+ });