sproutcore 1.7.1.beta → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (445) hide show
  1. data/CHANGELOG +44 -0
  2. data/README.rdoc +20 -20
  3. data/VERSION.yml +3 -3
  4. data/lib/Buildfile +1 -1
  5. data/lib/buildtasks/build.rake +5 -0
  6. data/lib/buildtasks/manifest.rake +19 -1
  7. data/lib/frameworks/sproutcore/Buildfile +19 -17
  8. data/lib/frameworks/sproutcore/CHANGELOG.md +163 -29
  9. data/lib/frameworks/sproutcore/README.md +29 -8
  10. data/lib/frameworks/sproutcore/apps/statechart_routing/Buildfile +12 -0
  11. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/login_controller.js +11 -0
  12. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/main_controller.js +7 -0
  13. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/statechart_controller.js +17 -0
  14. data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +25 -0
  15. data/lib/frameworks/sproutcore/apps/statechart_routing/main.js +15 -0
  16. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/_theme.css +18 -0
  17. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/bar_page.js +14 -0
  18. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/foo_page.js +14 -0
  19. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/loading.rhtml +9 -0
  20. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +61 -0
  21. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/main_page.js +46 -0
  22. data/lib/frameworks/sproutcore/apps/statechart_routing/statechart.js +76 -0
  23. data/lib/frameworks/sproutcore/apps/statechart_routing/theme.js +27 -0
  24. data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
  25. data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
  26. data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
  27. data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
  28. data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
  29. data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
  30. data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +1 -1
  31. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +14 -1
  32. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +15 -15
  33. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +1 -1
  34. data/lib/frameworks/sproutcore/frameworks/animation/core.js +8 -5
  35. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +302 -70
  36. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +19 -14
  37. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +471 -149
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +3 -3
  39. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +42 -0
  40. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +3 -2
  41. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
  42. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +1 -1
  43. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +2 -2
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +3 -3
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
  46. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +63 -0
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +1 -1
  48. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +37 -2
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +28 -6
  50. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +10 -3
  51. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +2 -2
  52. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +66 -2
  53. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +1 -1
  54. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +1 -1
  55. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +58 -57
  56. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +1 -1
  57. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js.orig +445 -0
  58. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +51 -31
  59. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +5 -1
  60. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +53 -69
  61. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
  62. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +98 -72
  63. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +37 -3
  64. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +7 -4
  65. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +21 -0
  66. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +7 -7
  67. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +23 -1
  68. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/browser.js +66 -0
  69. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/event.js +22 -0
  70. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +11 -11
  71. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +4 -4
  72. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +41 -0
  73. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +1 -1
  74. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +8 -8
  75. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +17 -16
  76. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +1 -1
  77. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +1 -1
  78. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +15 -0
  79. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +5 -5
  80. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +50 -30
  81. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +46 -0
  82. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +1 -43
  83. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +8 -34
  84. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +3 -2
  85. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +10 -1
  86. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +6 -5
  87. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +22 -2
  88. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +2 -2
  89. data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +1 -1
  90. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +0 -2
  91. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +35 -0
  92. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +46 -19
  93. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -9
  94. data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +2 -3
  95. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
  96. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -2
  97. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +294 -302
  98. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js.orig +1531 -0
  99. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +4 -2
  100. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +14 -11
  101. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/many_array.js +63 -0
  102. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
  103. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +4 -4
  104. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +50 -10
  105. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +4 -4
  106. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +3 -3
  107. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
  108. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +1 -1
  109. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
  110. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +114 -67
  111. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +1 -1
  112. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
  113. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +54 -1
  114. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +29 -9
  115. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +1 -1
  116. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
  117. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +1 -1
  118. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
  119. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +1 -1
  120. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +37 -45
  121. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +127 -127
  122. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +16 -0
  123. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +42 -4
  124. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
  125. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -7
  126. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +8 -0
  127. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +2 -1
  128. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +1 -0
  129. data/lib/frameworks/sproutcore/frameworks/debug/core.js +3 -3
  130. data/lib/frameworks/sproutcore/frameworks/desktop/core.js +1 -1
  131. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
  132. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
  133. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +1 -4
  134. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +19 -6
  135. data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +30 -1
  136. data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
  137. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +24 -1
  138. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +121 -28
  139. data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +15 -15
  140. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +1 -1
  141. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -2
  142. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +2 -2
  143. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +39 -15
  144. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +3 -3
  145. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +2 -2
  146. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +2 -2
  147. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +14 -6
  148. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +3 -3
  149. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +11 -11
  150. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -3
  151. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -51
  152. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +11 -16
  153. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
  154. data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +0 -2
  155. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +3 -3
  156. data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +3 -3
  157. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +9 -9
  158. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/content.js +11 -11
  159. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
  160. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
  161. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +107 -81
  162. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +3 -3
  163. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +68 -60
  164. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +57 -12
  165. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +21 -19
  166. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -0
  167. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +2 -2
  168. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +32 -3
  169. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +12 -0
  170. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +12 -0
  171. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +0 -8
  172. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +77 -132
  173. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +5 -6
  174. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +16 -15
  175. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +52 -52
  176. data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +1 -1
  177. data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +1 -1
  178. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +147 -147
  179. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +11 -2
  180. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +2 -2
  181. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +5 -5
  182. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +22 -12
  183. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +13 -7
  184. data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +2 -2
  185. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +462 -441
  186. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +48 -62
  187. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +22 -2
  188. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +150 -32
  189. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +104 -45
  190. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +42 -20
  191. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +24 -24
  192. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +148 -154
  193. data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +2 -2
  194. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +2 -2
  195. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +8 -7
  196. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -2
  197. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
  198. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/files.js +1 -1
  199. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/library.js +1 -1
  200. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/targets.js +1 -1
  201. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/view_configs.js +1 -1
  202. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/mixins/drop_down.js +1 -1
  203. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/ready.js +1 -1
  204. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/plist_item.js +1 -1
  205. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/web.js +1 -1
  206. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_design.js +2 -2
  207. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +2 -2
  208. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +1 -1
  209. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +2 -2
  210. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +3 -3
  211. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +1 -1
  212. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +21 -21
  213. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/page_item_view.js +1 -1
  214. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +59 -53
  215. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +2 -2
  216. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +1 -1
  217. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +6 -6
  218. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +2 -2
  219. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +2 -2
  220. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -10
  221. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +17 -6
  222. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +38 -14
  223. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +5 -13
  224. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +1 -1
  225. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +5 -3
  226. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +19 -0
  227. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +20 -2
  228. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +1 -1
  229. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +35 -12
  230. data/lib/frameworks/sproutcore/frameworks/formatters/README +6 -0
  231. data/lib/frameworks/sproutcore/frameworks/formatters/english.lproj/strings.js +174 -0
  232. data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +351 -0
  233. data/lib/frameworks/sproutcore/frameworks/formatters/tests/date_formatter.js +517 -0
  234. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +1 -1
  235. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +345 -138
  236. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +5 -3
  237. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +176 -42
  238. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
  239. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +137 -105
  240. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +2 -2
  241. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +2 -2
  242. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +16 -1
  243. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +1 -1
  244. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +47 -47
  245. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +3 -3
  246. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +1 -1
  247. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +28 -6
  248. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +1 -1
  249. data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +0 -5
  250. data/lib/frameworks/sproutcore/frameworks/foundation/resources/bootstrap.rhtml +34 -19
  251. data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +0 -2
  252. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +1 -5
  253. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +8 -9
  254. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -2
  255. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +179 -47
  256. data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +34 -1
  257. data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
  258. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +26 -12
  259. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +7 -7
  260. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +12 -4
  261. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_metric_optimization.js +202 -0
  262. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js +77 -8
  263. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +1 -0
  264. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +2 -2
  265. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +4 -3
  266. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +4 -2
  267. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +2 -2
  268. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +4 -2
  269. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +4 -2
  270. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +2 -2
  271. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +0 -8
  272. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +163 -149
  273. data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +1 -1
  274. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +1 -1
  275. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +1 -1
  276. data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +1 -1
  277. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +3 -3
  278. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +16 -43
  279. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -3
  280. data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +67 -54
  281. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +49 -38
  282. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +285 -242
  283. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +13 -13
  284. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +19 -22
  285. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +9 -3
  286. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +231 -186
  287. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +145 -143
  288. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +156 -154
  289. data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.js +5 -5
  290. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +3 -3
  291. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js.orig +540 -0
  292. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +2 -2
  293. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +15 -8
  294. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +5 -5
  295. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +12 -0
  296. data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +2 -2
  297. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +1 -1
  298. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +1 -1
  299. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +7 -7
  300. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +98 -32
  301. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +7 -2
  302. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +14 -3
  303. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +98 -13
  304. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +8 -14
  305. data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +1 -1
  306. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +2 -2
  307. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +23 -6
  308. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +69 -18
  309. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +57 -31
  310. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +189 -14
  311. data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +82 -22
  312. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +20 -0
  313. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +125 -4
  314. data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +1 -1
  315. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +2 -2
  316. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +37 -0
  317. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +2 -2
  318. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +16 -0
  319. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +75 -4
  320. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +41 -0
  321. data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart_delegate.js +113 -0
  322. data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +312 -0
  323. data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +18 -22
  324. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +508 -131
  325. data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +78 -0
  326. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +265 -44
  327. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +16 -0
  328. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +11 -3
  329. data/lib/frameworks/sproutcore/frameworks/statechart/tests/private/state_path_matcher.js +116 -0
  330. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/add_substate.js +108 -0
  331. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/with_concurrent.js +179 -0
  332. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/without_concurrent.js +74 -0
  333. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_state.js +141 -0
  334. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_substate.js +340 -0
  335. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/route_triggered.js +161 -0
  336. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/try_to_handle_event.js +288 -0
  337. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +5 -33
  338. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +213 -0
  339. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +212 -0
  340. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/core.js +8 -0
  341. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{state/namespacing.js → statechart/methods/get_state.js} +3 -41
  342. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/{invoke_state_method.js → methods/invoke_state_method.js} +1 -1
  343. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{event_handling/advanced → statechart}/respond_to_event.js +1 -1
  344. data/lib/frameworks/sproutcore/frameworks/statechart/tests/system/state_route_handler_context/methods/retry.js +64 -0
  345. data/lib/frameworks/sproutcore/frameworks/table/core.js +2 -0
  346. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/controls/button.js +0 -1
  347. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars.js +29 -5
  348. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/bind.js +4 -3
  349. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/collection.js +0 -0
  350. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/localization.js +0 -0
  351. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/view.js +0 -0
  352. data/lib/frameworks/sproutcore/frameworks/{handlebars → template_view}/handlebars.js +493 -357
  353. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/checkbox_support.js +0 -0
  354. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/text_field_support.js +13 -2
  355. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/panes/template.js +0 -0
  356. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/controls/button.js +0 -0
  357. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/checkbox_support.js +0 -0
  358. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/text_field_support.js +0 -0
  359. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/panes/template.js +0 -0
  360. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/collection.js +39 -14
  361. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/core.js +0 -0
  362. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/handlebars.js +57 -6
  363. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/bindable_span.js +21 -6
  364. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template.js +9 -3
  365. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template_collection.js +55 -26
  366. data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
  367. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +122 -122
  368. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +2 -2
  369. data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +4 -4
  370. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +1 -1
  371. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +0 -1
  372. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +4 -4
  373. data/lib/frameworks/sproutcore/lib/index.rhtml +55 -32
  374. data/lib/frameworks/sproutcore/license.js +2 -4
  375. data/lib/frameworks/sproutcore/themes/ace/resources/body.css +5 -1
  376. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +2 -2
  377. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +21 -13
  378. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +17 -10
  379. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +4 -3
  380. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +20 -12
  381. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +16 -8
  382. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/jumbo/button.css +17 -0
  383. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/small/button.css +17 -0
  384. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +2 -2
  385. data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +2 -2
  386. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +5 -3
  387. data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +1 -1
  388. data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/toolbar.css +1 -1
  389. data/lib/gen/app/USAGE +17 -4
  390. data/lib/gen/language/Buildfile +4 -4
  391. data/lib/gen/language/USAGE +4 -4
  392. data/lib/gen/page/templates/pages/@target_name@/Buildfile +7 -7
  393. data/lib/gen/{html_app → statechart_app}/Buildfile +0 -0
  394. data/lib/gen/{html_app → statechart_app}/README +0 -0
  395. data/lib/gen/statechart_app/USAGE +21 -0
  396. data/lib/gen/statechart_app/templates/apps/@target_name@/Buildfile +9 -0
  397. data/lib/gen/statechart_app/templates/apps/@target_name@/core.js +24 -0
  398. data/lib/gen/statechart_app/templates/apps/@target_name@/main.js +26 -0
  399. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/_theme.css +18 -0
  400. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/loading.rhtml +9 -0
  401. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/main_page.js +21 -0
  402. data/lib/gen/statechart_app/templates/apps/@target_name@/statechart.js +8 -0
  403. data/lib/gen/statechart_app/templates/apps/@target_name@/states/ready_state.js +12 -0
  404. data/lib/gen/statechart_app/templates/apps/@target_name@/theme.js +24 -0
  405. data/lib/sproutcore/builders.rb +1 -0
  406. data/lib/sproutcore/builders/base.rb +19 -1
  407. data/lib/sproutcore/builders/chance_file.rb +6 -1
  408. data/lib/sproutcore/builders/handlebars.rb +1 -9
  409. data/lib/sproutcore/builders/javascript.rb +1 -10
  410. data/lib/sproutcore/builders/json.rb +25 -0
  411. data/lib/sproutcore/builders/less.rb +1 -1
  412. data/lib/sproutcore/builders/sass.rb +1 -1
  413. data/lib/sproutcore/builders/stylesheet.rb +1 -9
  414. data/lib/sproutcore/helpers/html5_manifest.rb +1 -1
  415. data/lib/sproutcore/helpers/static_helper.rb +42 -0
  416. data/lib/sproutcore/rack/proxy.rb +21 -3
  417. data/lib/sproutcore/rack/service.rb +3 -2
  418. data/lib/sproutcore/tools.rb +18 -25
  419. data/lib/sproutcore/tools/gen.rb +10 -3
  420. data/lib/sproutcore/tools/init.rb +11 -10
  421. data/spec/buildtasks/manifest/prepare_build_tasks/json_spec.rb +62 -0
  422. data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -1
  423. data/spec/fixtures/builder_tests/apps/json_test/sc_static.json +2 -0
  424. data/spec/lib/builders/json_spec.rb +53 -0
  425. data/sproutcore.gemspec +2 -2
  426. data/vendor/chance/lib/chance/parser.rb +1 -1
  427. metadata +222 -177
  428. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/datetime.js +0 -0
  429. data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +0 -259
  430. data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
  431. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +0 -69
  432. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +0 -44
  433. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +0 -64
  434. data/lib/frameworks/sproutcore/frameworks/mini/license.js +0 -30
  435. data/lib/gen/html_app/USAGE +0 -15
  436. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +0 -11
  437. data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
  438. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -6
  439. data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +0 -1
  440. data/lib/gen/html_project/Buildfile +0 -45
  441. data/lib/gen/html_project/INIT +0 -3
  442. data/lib/gen/html_project/README +0 -1
  443. data/lib/gen/html_project/USAGE +0 -2
  444. data/lib/gen/html_project/templates/@filename@/Buildfile +0 -5
  445. data/lib/gen/html_project/templates/@filename@/README +0 -4
@@ -12,7 +12,7 @@ sc_require('panes/palette');
12
12
  default: initiated just below the anchor.
13
13
  shift x, y to optimized picker visibility and make sure top-left corner is always visible.
14
14
  menu : same as default rule +
15
- default(1,4,3) or custom offset below the anchor for default location to fine tunned visual alignment +
15
+ default(1,4,3) or custom offset below the anchor for default location to fine tuned visual alignment +
16
16
  enforce min left(7px)/right(8px) padding to the window
17
17
  fixed : default(1,4,3) or custom offset below the anchor for default location to cope with specific anchor and skip fitPositionToScreen
18
18
  pointer :take default [0,1,2,3,2] or custom matrix to choose one of four perfect pointer positions.Ex:
@@ -347,6 +347,19 @@ SC.PickerPane = SC.PalettePane.extend(
347
347
  */
348
348
  removeAction: null,
349
349
 
350
+
351
+ /**
352
+ Disable repositioning as the window or size changes. It stays in the original
353
+ popup position.
354
+
355
+ @type Boolean
356
+ @default NO
357
+ */
358
+ repositionOnWindowResize: YES,
359
+
360
+ _anchorView: null,
361
+ _anchorHTMLElement: null,
362
+
350
363
  /**
351
364
  Displays a new picker pane.
352
365
 
@@ -357,12 +370,15 @@ SC.PickerPane = SC.PalettePane.extend(
357
370
  @returns {SC.PickerPane} receiver
358
371
  */
359
372
  popup: function(anchorViewOrElement, preferType, preferMatrix, pointerOffset) {
360
- var anchor;
361
373
  if(anchorViewOrElement){
362
- anchor = anchorViewOrElement.isView ? anchorViewOrElement.get('layer') : anchorViewOrElement;
374
+ if (anchorViewOrElement.isView) {
375
+ this._anchorView = anchorViewOrElement;
376
+ this._setupScrollObservers(anchorViewOrElement);
377
+ } else {
378
+ this._anchorHTMLElement = anchorViewOrElement;
379
+ }
363
380
  }
364
381
  this.beginPropertyChanges();
365
- this.set('anchorElement',anchor) ;
366
382
  if (preferType) this.set('preferType',preferType) ;
367
383
  if (preferMatrix) this.set('preferMatrix',preferMatrix) ;
368
384
  if (pointerOffset) this.set('pointerOffset',pointerOffset) ;
@@ -435,7 +451,7 @@ SC.PickerPane = SC.PalettePane.extend(
435
451
 
436
452
  /** @private
437
453
  This method will return ret (x, y, width, height) from a rectangular element
438
- Notice: temp hack for calculating visiable anchor height by counting height
454
+ Notice: temp hack for calculating visible anchor height by counting height
439
455
  up to window bottom only. We do have 'clippingFrame' supported from view.
440
456
  But since our anchor can be element, we use this solution for now.
441
457
  */
@@ -455,7 +471,7 @@ SC.PickerPane = SC.PalettePane.extend(
455
471
  height: bounding.height
456
472
  };
457
473
  // If width and height are undefined this means we are in IE or FF<3.5
458
- // if we didnt get the frame dimensions the do the calculations
474
+ // if we did not get the frame dimensions the do the calculations
459
475
  // based on an element
460
476
  if(ret.width===undefined || ret.height===undefined){
461
477
  cq = SC.$(anchor);
@@ -471,10 +487,10 @@ SC.PickerPane = SC.PalettePane.extend(
471
487
  ret.height = cq.outerHeight();
472
488
  }
473
489
  ret.height = (wsize.height-ret.y) < ret.height ? (wsize.height-ret.y) : ret.height;
474
- if(!SC.browser.msie && window.scrollX>0 || window.scrollY>0){
490
+ if(!SC.browser.isIE && window.scrollX>0 || window.scrollY>0){
475
491
  ret.x+=window.scrollX;
476
492
  ret.y+=window.scrollY;
477
- }else if(SC.browser.msie && (document.documentElement.scrollTop>0 || document.documentElement.scrollLeft>0)){
493
+ }else if(SC.browser.isIE && (document.documentElement.scrollTop>0 || document.documentElement.scrollLeft>0)){
478
494
  ret.x+=document.documentElement.scrollLeft;
479
495
  ret.y+=document.documentElement.scrollTop;
480
496
  }
@@ -491,6 +507,19 @@ SC.PickerPane = SC.PalettePane.extend(
491
507
  var wsize = SC.RootResponder.responder.computeWindowSize(),
492
508
  wret = { x: 0, y: 0, width: wsize.width, height: wsize.height } ;
493
509
 
510
+ // if window size is smaller than the minimum size of app, use minimum size.
511
+ var mainPane = SC.RootResponder.responder.mainPane;
512
+ if (mainPane) {
513
+ var minWidth = mainPane.layout.minWidth,
514
+ minHeight = mainPane.layout.minHeight;
515
+ if (minWidth && wret.width < minWidth) {
516
+ wret.width = mainPane.layout.minWidth;
517
+ }
518
+ if (minHeight && wret.height < minHeight) {
519
+ wret.height = mainPane.layout.minHeight;
520
+ }
521
+ }
522
+
494
523
  picker.x = preferredPosition.x ; picker.y = preferredPosition.y ;
495
524
 
496
525
  if(this.preferType) {
@@ -771,9 +800,9 @@ SC.PickerPane = SC.PalettePane.extend(
771
800
  }
772
801
  }
773
802
 
774
- // set up preferMatrix according to type if not provided excplicitly:
803
+ // set up preferMatrix according to type if not provided explicitly:
775
804
  // take default [0,1,2,3,2] for picker, [3,0,1,2,3] for menu picker if
776
- // custom matrix not provided excplicitly
805
+ // custom matrix not provided explicitly
777
806
  if(!this.preferMatrix || this.preferMatrix.length !== 5) {
778
807
  // menu-picker default re-position rule :
779
808
  // perfect bottom (3) > perfect right (0) > perfect left (1) > perfect top (2)
@@ -781,7 +810,7 @@ SC.PickerPane = SC.PalettePane.extend(
781
810
  // picker default re-position rule :
782
811
  // perfect right (0) > perfect left (1) > perfect top (2) > perfect bottom (3)
783
812
  // fallback to perfect top (2)
784
- this.set('preferMatrix', this.get('preferType') == SC.PICKER_MENU_POINTER ? [3,0,1,2,3] : [0,1,2,3,2]) ;
813
+ this.set('preferMatrix', this.get('preferType') === SC.PICKER_MENU_POINTER ? [3,2,1,0,3] : [0,1,2,3,2]) ;
785
814
  }
786
815
  },
787
816
 
@@ -835,17 +864,45 @@ SC.PickerPane = SC.PalettePane.extend(
835
864
  Invoked by the root responder. Re-position picker whenever the window resizes.
836
865
  */
837
866
  windowSizeDidChange: function(oldSize, newSize) {
838
- this.positionPane();
867
+ if (this.repositionOnWindowResize) this.positionPane();
839
868
  },
840
869
 
841
870
  remove: function(){
842
- if(this.get('isVisibleInWindow') && this.get('isPaneAttached')) this._showOverflow();
871
+ if(this.get('isVisibleInWindow') && this.get('isPaneAttached')) this._withdrawOverflowRequest();
872
+ this._removeScrollObservers();
843
873
  return sc_super();
844
874
  },
845
875
 
876
+ /** Figure out what is the anchor element */
877
+ anchorElement: function(key, value) {
878
+ var anchorView;
879
+
880
+ if (value === undefined) {
881
+ // Getting the value.
882
+ anchorView = this._anchorView;
883
+ return anchorView ? anchorView.get('layer') : this._anchorHTMLElement;
884
+ }
885
+ else {
886
+ // Setting the value.
887
+ if (!value) {
888
+ throw "You must set 'anchorElement' to either a view or a DOM element";
889
+ }
890
+ else if (value.isView) {
891
+ this._anchorView = value;
892
+ this._anchorHTMLElement = null;
893
+ }
894
+ else {
895
+ this._anchorView = null;
896
+ this._anchorHTMLElement = value;
897
+ }
898
+ }
899
+ }.property('layer').cacheable(),
900
+
901
+
902
+
846
903
  /** @private
847
904
  Internal method to hide the overflow on the body to make sure we don't
848
- show scrollbars when the picker has shadows, as it's really anoying.
905
+ show scrollbars when the picker has shadows, as it's really annoying.
849
906
  */
850
907
  _hideOverflow: function(){
851
908
  var body = SC.$(document.body),
@@ -854,23 +911,63 @@ SC.PickerPane = SC.PalettePane.extend(
854
911
  minHeight = parseInt(main.css('minHeight'),0),
855
912
  windowSize = SC.RootResponder.responder.get('currentWindowSize');
856
913
  if(windowSize.width>=minWidth && windowSize.height>=minHeight){
857
- SC.PICKERS_OPEN++;
858
- //console.log(this.toString()+" "+SC.PICKERS_OPEN);
859
- if(SC.PICKERS_OPEN > 0) body.css('overflow', 'hidden');
914
+ SC.bodyOverflowArbitrator.requestHidden(this);
860
915
  }
861
916
  },
862
917
 
863
918
  /** @private
864
919
  Internal method to show the overflow on the body to make sure we don't
865
- show scrollbars when the picker has shadows, as it's really anoying.
920
+ show scrollbars when the picker has shadows, as it's really annoying.
921
+ */
922
+ _withdrawOverflowRequest: function(){
923
+ SC.bodyOverflowArbitrator.withdrawRequest(this);
924
+ },
925
+
926
+ /** @private
927
+ Detect if view is inside a scroll view. Do this by traversing parent view
928
+ hierarchy until you hit a scroll view or main pane.
929
+ */
930
+ _getScrollViewOfView: function(view) {
931
+ var curLevel = view;
932
+ while (YES) {
933
+ if (!curLevel) {
934
+ return null;
935
+ }
936
+ if (curLevel.isScrollable) {
937
+ return curLevel;
938
+ }
939
+ curLevel = curLevel.get('parentView');
940
+ }
941
+ },
942
+
943
+ /** @private
944
+ If anchor view is in a scroll view, setup observers on scroll offsets.
866
945
  */
867
- _showOverflow: function(){
868
- var body = SC.$(document.body);
869
- if(SC.PICKERS_OPEN > 0) {
870
- SC.PICKERS_OPEN--;
871
- // console.log(this.toString()+" "+SC.PICKERS_OPEN);
946
+ _setupScrollObservers: function(anchorView) {
947
+ var scrollView = this._getScrollViewOfView(anchorView);
948
+ if (scrollView) {
949
+ scrollView.addObserver('horizontalScrollOffset', this, this._scrollOffsetDidChange);
950
+ scrollView.addObserver('verticalScrollOffset', this, this._scrollOffsetDidChange);
951
+ this._scrollView = scrollView;
872
952
  }
873
- if(SC.PICKERS_OPEN === 0) body.css('overflow', 'visible');
953
+ },
954
+
955
+ /** @private
956
+ Teardown observers setup in _setupScrollObservers.
957
+ */
958
+ _removeScrollObservers: function() {
959
+ var scrollView = this._scrollView;
960
+ if (scrollView) {
961
+ scrollView.removeObserver('horizontalScrollOffset', this, this._scrollOffsetDidChange);
962
+ scrollView.removeObserver('verticalScrollOffset', this, this._scrollOffsetDidChange);
963
+ }
964
+ },
965
+
966
+ /** @private
967
+ Reposition pane whenever scroll offsets change.
968
+ */
969
+ _scrollOffsetDidChange: function() {
970
+ this.positionPane();
874
971
  }
875
972
  });
876
973
 
@@ -878,10 +975,6 @@ SC.PickerPane = SC.PalettePane.extend(
878
975
  Default metrics for the different control sizes.
879
976
  */
880
977
 
881
- // Counter to track how many pickers are open. This help us to now when to
882
- // show/hide the body overflow.
883
- SC.PICKERS_OPEN = 0;
884
-
885
978
  /**
886
979
  @static
887
980
  */
@@ -9,7 +9,7 @@ sc_require('panes/panel');
9
9
 
10
10
  /**
11
11
  @class
12
-
12
+
13
13
  Displays a modal sheet pane that animates from the top of the viewport.
14
14
 
15
15
  The default way to use the sheet pane is to simply add it to your page like this:
@@ -31,7 +31,7 @@ sc_require('panes/panel');
31
31
  */
32
32
  SC.SheetPane = SC.PanelPane.extend(
33
33
  /** @scope SC.SheetPane.prototype */{
34
-
34
+
35
35
  /**
36
36
  @type Array
37
37
  @default ['sc-sheet']
@@ -52,17 +52,17 @@ SC.SheetPane = SC.PanelPane.extend(
52
52
  @default 200
53
53
  */
54
54
  transitionDuration: 200,
55
-
55
+
56
56
  _state: 'NO_VIEW', // no view
57
-
57
+
58
58
  /** @private */
59
59
  init: function() {
60
60
  sc_super();
61
-
61
+
62
62
  if (SC.Animatable) {
63
63
  SC.SheetPane.ANIMATABLE_AVAILABLE = YES;
64
64
  this.mixin(SC.Animatable);
65
-
65
+
66
66
  if (!this.transitions) this.transitions = {};
67
67
  if (!this.transitions.top) {
68
68
  // transitionDuration = 200 seems to be too fast when using Animatable
@@ -94,7 +94,7 @@ SC.SheetPane = SC.PanelPane.extend(
94
94
  this.adjust(layout);
95
95
  this.updateLayout();
96
96
  if (this.enableAnimation) this.enableAnimation();
97
-
97
+
98
98
  return sc_super();
99
99
  },
100
100
 
@@ -168,16 +168,16 @@ SC.SheetPane = SC.PanelPane.extend(
168
168
  centerX: 0,
169
169
  left: null
170
170
  });
171
- if(SC.browser.mozilla) this.parentViewDidChange();
171
+ if(SC.browser.isMozilla) this.parentViewDidChange();
172
172
  } else {
173
173
  var layout = this.get('layout');
174
174
  if (!SC.SheetPane.ANIMATABLE_AVAILABLE) this.adjust('top', -1*layout.height);
175
175
  }
176
-
176
+
177
177
  this._state = SC.SheetPane.READY;
178
178
  this.updateLayout();
179
179
  },
180
-
180
+
181
181
  /** @private
182
182
  Needed because of the runLoop and that it is animated...
183
183
  must lose focus because will break if selection is change
@@ -194,10 +194,10 @@ SC.SheetPane = SC.PanelPane.extend(
194
194
 
195
195
  var now = Date.now();
196
196
  var pct = (now-this._start)/(this._end-this._start),
197
- target = this, dir = this._direction, layout = this.get('layout'),
197
+ target = this, dir = this._direction, layout = this.get('layout'),
198
198
  newLayout, adjust;
199
199
  if (pct<0) pct = 0;
200
-
200
+
201
201
  // If we are done...
202
202
  if (pct>=1) {
203
203
  this._complete();
@@ -223,9 +223,9 @@ SC.SheetPane = SC.PanelPane.extend(
223
223
 
224
224
  SC.SheetPane.mixin(
225
225
  /** @scope SC.SheetPane */ {
226
-
226
+
227
227
  ANIMATABLE_AVAILABLE: NO,
228
-
228
+
229
229
  // states for view animation
230
230
  NO_VIEW: 'NO_VIEW',
231
231
  ANIMATING: 'ANIMATING',
@@ -233,5 +233,5 @@ SC.SheetPane.mixin(
233
233
 
234
234
  SLIDE_DOWN: 'SLIDEDOWN',
235
235
  SLIDE_UP: 'SLIDEUP'
236
-
236
+
237
237
  });
@@ -10,7 +10,7 @@ sc_require('system/drag') ;
10
10
  /**
11
11
  @namespace
12
12
 
13
- This procol implements a dynamic data source for a drag operation. You can
13
+ This protocol implements a dynamic data source for a drag operation. You can
14
14
  return a set of allowed data types and then the method will be used to
15
15
  actually get data in that format when requested.
16
16
  */
@@ -35,7 +35,7 @@ sc_require('system/drag');
35
35
  once during every drag session. computeDragOperations, if called at all, may be
36
36
  called more than once before the dragEntered method is called. Once dragEntered
37
37
  is called, you are at guaranteed that both dragUpdated and dragExited will be
38
- called at some point, followed by either dragEnded or additonal
38
+ called at some point, followed by either dragEnded or additional
39
39
  computeDragOperation calls.
40
40
  */
41
41
  SC.DropTarget = {
@@ -167,7 +167,7 @@ SC.DropTarget = {
167
167
  /**
168
168
  Called to actually perform the drag operation.
169
169
 
170
- Overide this method to actually perform the drag operation. This method
170
+ Override this method to actually perform the drag operation. This method
171
171
  is only called if you returned `YES` in `acceptDragOperation()`.
172
172
 
173
173
  Return the operation that was actually performed or `SC.DRAG_NONE` if the
@@ -26,7 +26,7 @@ SC.ResponderProtocol = {
26
26
  //
27
27
 
28
28
  /**
29
- Called when the mouse is pressed. You must return `YES` to recieve
29
+ Called when the mouse is pressed. You must return `YES` to receive
30
30
  mouseDragged and mouseUp in the future.
31
31
 
32
32
  @param evt {SC.Event} the mousedown event
@@ -118,7 +118,7 @@ SC.ResponderProtocol = {
118
118
 
119
119
  @param charCode {String} the character code
120
120
  @param evt {SC.Event} the keydown event
121
- @returns {Boolean} YES if you handled th emethod; NO otherwise
121
+ @returns {Boolean} YES if you handled the method; NO otherwise
122
122
  */
123
123
  performKeyEquivalent: function(charCode, evt) { return false; },
124
124
 
@@ -17,22 +17,22 @@ SC.BaseTheme.buttonRenderDelegate = SC.RenderDelegate.create({
17
17
  //
18
18
  'sc-small-size': {
19
19
  height: 18,
20
- autoResizePadding: 15
20
+ autoResizePadding: { width: 15, height: 0 }
21
21
  },
22
22
 
23
23
  'sc-regular-size': {
24
24
  height: 24,
25
- autoResizePadding: 20
25
+ autoResizePadding: { width: 20, height: 0 }
26
26
  },
27
27
 
28
28
  'sc-huge-size': {
29
29
  height: 30,
30
- autoResizePadding: 30
30
+ autoResizePadding: { width: 30, height: 0 }
31
31
  },
32
32
 
33
33
  'sc-jumbo-size': {
34
34
  height: 44,
35
- autoResizePadding: 50
35
+ autoResizePadding: { width: 50, height: 0 }
36
36
  },
37
37
 
38
38
 
@@ -48,17 +48,20 @@ SC.BaseTheme.buttonRenderDelegate = SC.RenderDelegate.create({
48
48
  */
49
49
  render: function(dataSource, context) {
50
50
  this.addSizeClassName(dataSource, context);
51
-
51
+
52
52
  var labelContent,
53
53
  toolTip = dataSource.get('toolTip'),
54
54
  isSelected = dataSource.get('isSelected') || NO,
55
55
  isActive = dataSource.get('isActive') || NO,
56
+ isDefault = dataSource.get('isDefault') || NO,
57
+ isCancel = dataSource.get('isCancel') || NO,
58
+ isToggle = (dataSource.get('buttonBehavior') === SC.TOGGLE_BEHAVIOR),
56
59
  labelId = SC.guidFor(dataSource) + '-label';
57
60
 
58
61
  context.setClass({
59
- 'icon': !!dataSource.get('icon') || NO,
60
- 'def': dataSource.get('isDefault'),
61
- 'cancel': dataSource.get('isCancel'),
62
+ 'icon': !!dataSource.get('icon'),
63
+ 'def': isDefault,
64
+ 'cancel': isCancel && !isDefault,
62
65
  'active': isActive,
63
66
  'sel': isSelected
64
67
  });
@@ -67,11 +70,15 @@ SC.BaseTheme.buttonRenderDelegate = SC.RenderDelegate.create({
67
70
  context.attr('title', toolTip);
68
71
  context.attr('alt', toolTip);
69
72
  }
70
-
73
+
71
74
  this.includeSlices(dataSource, context, SC.THREE_SLICE);
72
-
73
75
  // accessibility
74
- context.attr('aria-pressed', isActive.toString());
76
+ if(dataSource.get('isSegment')){
77
+ context.attr('aria-selected', isSelected.toString());
78
+ }else if(isToggle) {
79
+ context.attr('aria-pressed', isActive.toString());
80
+ }
81
+
75
82
  context.attr('aria-labelledby', labelId);
76
83
 
77
84
  // Create the inner label element that contains the text and, optionally,
@@ -95,18 +102,35 @@ SC.BaseTheme.buttonRenderDelegate = SC.RenderDelegate.create({
95
102
  @param {SC.RenderContext} jquery the jQuery object representing the HTML representation of the button
96
103
  */
97
104
  update: function(dataSource, jquery) {
105
+ var isToggle = (dataSource.get('buttonBehavior')===SC.TOGGLE_BEHAVIOR);
106
+
98
107
  this.updateSizeClassName(dataSource, jquery);
99
108
 
100
109
  if (dataSource.get('isActive')) {
101
110
  jquery.addClass('active');
102
111
  }
103
112
 
104
- jquery.attr('aria-pressed', dataSource.get('isActive').toString());
105
113
 
106
- jquery.setClass('icon', !!dataSource.get('icon') || NO);
107
- jquery.setClass('def', dataSource.get('isDefault') || NO);
108
- jquery.setClass('cancel', dataSource.get('isCancel') || NO);
114
+ var isDefault = dataSource.get('isDefault'),
115
+ isCancel = dataSource.get('isCancel');if(dataSource.get('isSegment')){
116
+ jquery.attr('aria-selected', dataSource.get('isSelected').toString());
117
+ }else if(isToggle){
118
+ jquery.attr('aria-pressed', dataSource.get('isActive').toString());
119
+ }
120
+
121
+ jquery.attr('title', dataSource.get('toolTip'));
122
+
123
+ jquery.setClass('icon', !!dataSource.get('icon'));
124
+ jquery.setClass('def', !!isDefault);
125
+ jquery.setClass('cancel', !!isCancel && !isDefault);
109
126
 
110
127
  dataSource.get('theme').labelRenderDelegate.update(dataSource, jquery.find('label'));
128
+ },
129
+
130
+ /**
131
+ Returns the layer to be used for auto resizing.
132
+ */
133
+ getRenderedAutoResizeLayer: function(dataSource, jq) {
134
+ return jq.find('.sc-button-label')[0];
111
135
  }
112
136
  });