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.
- data/.rspec +1 -0
- data/CHANGELOG +42 -0
- data/README.txt +25 -0
- data/VERSION.yml +1 -1
- data/bin/sc-build +1 -1
- data/bin/sc-build-number +1 -1
- data/bin/sc-docs +1 -1
- data/bin/sc-gen +1 -1
- data/bin/sc-init +1 -1
- data/bin/sc-manifest +1 -1
- data/bin/sc-server +1 -1
- data/bin/sproutcore +1 -1
- data/lib/buildtasks/build.rake +5 -0
- data/lib/buildtasks/manifest.rake +20 -1
- data/lib/frameworks/sproutcore/Buildfile +12 -9
- data/lib/frameworks/sproutcore/CHANGELOG.md +48 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/README +2 -9
- data/lib/frameworks/sproutcore/apps/greenhouse/TODO +11 -27
- data/lib/frameworks/sproutcore/apps/greenhouse/controllers/library.js +3 -10
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/main-page.css +4 -31
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/dialogs.js +5 -4
- data/lib/frameworks/sproutcore/apps/greenhouse/models/dir.js +3 -3
- data/lib/frameworks/sproutcore/apps/greenhouse/models/file.js +2 -2
- data/lib/frameworks/sproutcore/apps/greenhouse/states/main.js +31 -14
- data/lib/frameworks/sproutcore/apps/greenhouse/states/modals.js +2 -1
- data/lib/frameworks/sproutcore/apps/greenhouse/states/ready.js +27 -1
- data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/list_item.js +1 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/plist_item.js +20 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/theme.js +25 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/views/plist_item.js +161 -24
- data/lib/frameworks/sproutcore/apps/greenhouse/views/tear_off_picker.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +37 -25
- data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +135 -26
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/array.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/controller.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/object.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/ext/object.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/ext/run_loop.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/delegate_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/responder_context.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/selection_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/string.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +68 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +108 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/panes/main.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/manipulation.js +27 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/panes/pane.js +215 -505
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +24 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +11 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/protocols/observable_protocol.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/protocols/sparse_array_delegate.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/resources/core.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/resources/view.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/application.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/browser.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/builder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/core_query.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/cursor.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +210 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/event.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/json.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/locale.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/page.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/platform.js +31 -5
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/ready.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/render_context.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/responder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/root_responder.js +83 -110
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/selection_set.js +7 -4
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/sparse_array.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/theme.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/timer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/utils/rect.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +151 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/array_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/enum_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/null_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/selection_support.js +26 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/single_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/empty_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/multiple_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/single_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/single_enumerable_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/mixins/responder_context.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/mixins/string.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +14 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/builder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/core_query/within.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/json.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/locale.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/begin.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/element.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/end.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/get.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_attr.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_basic.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_className.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_style.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/init.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/join.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/push_text.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/tag.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/update.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeKeyPane.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeMainPane.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeMenuPane.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/root_responder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/targetForAction.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/add.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/copy.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/indexSetForSource.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/isEqual.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/remove.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/sparse_array.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/theme.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/invalidate.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/invokeLater.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/isPaused.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/performAction.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/schedule.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/utils/normalizeURL.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +268 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/utils/rect.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +43 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/append_remove.js +107 -18
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/firstResponder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/keyPane.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/layout.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/sendEvent.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/checkbox_support.js +32 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/text_field_support.js +73 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/collection.js +65 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/core.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/handlebars.js +295 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/animation.js +19 -18
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/build.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/build_children.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/clippingFrame.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/convertFrames.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/convertLayouts.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/createChildViews.js +18 -15
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/createLayer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/destroyLayer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/didAppendToDocument.js +11 -8
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/findLayerInParentLayer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/init.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/insertBefore.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/isVisible.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/isVisibleInWindow.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +22 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/layer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/layoutChildViews.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +180 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +640 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/parentViewDidChange.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/prepareContext.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/removeChild.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +125 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/render_delegate_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/replaceChild.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/theme.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/updateLayer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/updateLayerLocation.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/view.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/viewDidResize.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/checkbox_support.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +99 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/text_field_support.js +35 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template.js +77 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +187 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/base.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +57 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +223 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +1150 -0
- data/lib/frameworks/sproutcore/frameworks/{amber/views → core_foundation/views/view}/layout_style.js +93 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +489 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +362 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/touch.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/visibility.js +113 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +1280 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +27 -53
- data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +13 -19
- data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +183 -71
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +1 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +26 -46
- data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +25 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +139 -21
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +6 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/cyclical_relationship.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/{parentless.js → data_store.js} +62 -16
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +51 -17
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +36 -10
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/{foundation/english.lproj → datetime/resources}/strings.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/{foundation → datetime}/system/datetime.js +5 -37
- data/lib/frameworks/sproutcore/frameworks/{foundation → datetime}/tests/system/datetime.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/debug/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/designer/controllers/designs.js +1 -2
- data/lib/frameworks/sproutcore/frameworks/designer/designers/object_designer.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/designer/designers/view_designer.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/designer/views/designer_drop_target.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +71 -70
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +10 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -19
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +33 -14
- data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +25 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +25 -103
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +102 -92
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +22 -25
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +38 -25
- data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +42 -22
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +513 -230
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/README.md +23 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/README.md +11 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +215 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +34 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/polymorphic_single_attribute.js +183 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +23 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphic/single.js +124 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +151 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +27 -17
- data/lib/frameworks/sproutcore/frameworks/foundation/system/image_queue.js +6 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/system/logger.js +163 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +6 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/logger.js +44 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +200 -167
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +52 -137
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +7 -11
- data/lib/frameworks/sproutcore/frameworks/handlebars/extensions.js +138 -0
- data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +1338 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +32 -26
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +162 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +10 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +123 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +12 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +50 -13
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +163 -333
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +58 -8
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +9 -6
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +15 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +31 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +31 -143
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/concatenated_properties.js +71 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +177 -0
- data/lib/frameworks/sproutcore/frameworks/table/views/table.js +5 -4
- data/lib/frameworks/sproutcore/frameworks/table/views/table_header.js +5 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/button/button.js +8 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +2 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +2 -2
- data/lib/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +62 -62
- data/lib/gen/html_app/Buildfile +36 -0
- data/lib/gen/html_app/README +1 -0
- data/lib/gen/html_app/USAGE +15 -0
- data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +14 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +1 -0
- data/lib/gen/html_project/Buildfile +45 -0
- data/lib/gen/html_project/INIT +3 -0
- data/lib/gen/html_project/README +1 -0
- data/lib/gen/html_project/USAGE +2 -0
- data/lib/gen/html_project/templates/@filename@/Buildfile +8 -0
- data/lib/gen/html_project/templates/@filename@/README +7 -0
- data/lib/sproutcore/builders/handlebars.rb +30 -0
- data/lib/sproutcore/builders.rb +1 -1
- data/lib/sproutcore/helpers/static_helper.rb +3 -3
- data/lib/sproutcore/tools/init.rb +25 -9
- data/spec/buildtasks/manifest/prepare_build_tasks/handlebars_spec.rb +39 -0
- data/spec/fixtures/builder_tests/apps/handlebars_test/template.handlebars +5 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/templates/demo.handlebars +4 -0
- data/spec/lib/builders/handlebars_spec.rb +29 -0
- data/vendor/chance/lib/chance/imagers/data_url.rb +20 -7
- data/vendor/chance/lib/chance/instance.rb +4 -1
- data/vendor/chance/lib/chance/parser.rb +31 -31
- data/vendor/chance/lib/chance/slicing.rb +38 -8
- metadata +195 -225
- data/lib/frameworks/sproutcore/frameworks/amber/system/device.js +0 -143
- data/lib/frameworks/sproutcore/frameworks/amber/system/utils.js +0 -174
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/main_pane.js +0 -31
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/pane/sendTouchEvent.js +0 -267
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/layoutDidChange.js +0 -149
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/layoutStyle.js +0 -602
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/render.js +0 -115
- data/lib/frameworks/sproutcore/frameworks/amber/views/base.js +0 -1
- data/lib/frameworks/sproutcore/frameworks/amber/views/view.js +0 -4003
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +0 -105
|
@@ -12,14 +12,14 @@ htmlbody('<style> .sc-static-layout { border: 1px red dotted; } </style>');
|
|
|
12
12
|
var pane;
|
|
13
13
|
(function() {
|
|
14
14
|
var iconURL= "http://www.freeiconsweb.com/Icons/16x16_people_icons/People_046.gif";
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
pane = SC.ControlTestPane.design()
|
|
17
|
-
|
|
18
|
-
.add("3_empty", SC.SegmentedView, {
|
|
17
|
+
|
|
18
|
+
.add("3_empty", SC.SegmentedView, {
|
|
19
19
|
items: [ '', '' , ''],
|
|
20
20
|
layout: { height: 25 }
|
|
21
21
|
})
|
|
22
|
-
.add("3_empty,icon", SC.SegmentedView, {
|
|
22
|
+
.add("3_empty,icon", SC.SegmentedView, {
|
|
23
23
|
items: [
|
|
24
24
|
{ value: "", icon: iconURL },
|
|
25
25
|
{ value: "", icon: iconURL },
|
|
@@ -29,12 +29,12 @@ var pane;
|
|
|
29
29
|
itemIconKey: 'icon',
|
|
30
30
|
layout: { height: 25 }
|
|
31
31
|
})
|
|
32
|
-
.add("3_items,1_sel", SC.SegmentedView, {
|
|
32
|
+
.add("3_items,1_sel", SC.SegmentedView, {
|
|
33
33
|
items: "Item1 Item2 Item3".w(),
|
|
34
34
|
value: "Item2",
|
|
35
35
|
layout: { height: 25 }
|
|
36
36
|
})
|
|
37
|
-
.add("2_items,toolTip", SC.SegmentedView, {
|
|
37
|
+
.add("2_items,toolTip", SC.SegmentedView, {
|
|
38
38
|
items: [
|
|
39
39
|
{ value: "title1", toolTip: "this is title1's tip" },
|
|
40
40
|
{ value: "title2", toolTip: "this is title2's tip" }],
|
|
@@ -43,13 +43,13 @@ var pane;
|
|
|
43
43
|
itemToolTipKey: 'toolTip',
|
|
44
44
|
layout: { height: 25 }
|
|
45
45
|
})
|
|
46
|
-
.add("3_items,1_sel,disabled", SC.SegmentedView, {
|
|
46
|
+
.add("3_items,1_sel,disabled", SC.SegmentedView, {
|
|
47
47
|
items: "Item1 Item2 Item3".w(),
|
|
48
48
|
value: "Item2",
|
|
49
49
|
isEnabled: NO,
|
|
50
50
|
layout: { height: 25 }
|
|
51
51
|
})
|
|
52
|
-
.add("3_items,icon,2_sel", SC.SegmentedView, {
|
|
52
|
+
.add("3_items,icon,2_sel", SC.SegmentedView, {
|
|
53
53
|
items: [
|
|
54
54
|
{ value: "Item1", icon: iconURL },
|
|
55
55
|
{ value: "Item2", icon: iconURL },
|
|
@@ -61,7 +61,7 @@ var pane;
|
|
|
61
61
|
allowsEmptySelection: NO,
|
|
62
62
|
layout: { height: 25 }
|
|
63
63
|
})
|
|
64
|
-
.add("3_items,2_sel,disabled", SC.SegmentedView, {
|
|
64
|
+
.add("3_items,2_sel,disabled", SC.SegmentedView, {
|
|
65
65
|
items: [
|
|
66
66
|
{ value: "Item1", icon: iconURL },
|
|
67
67
|
{ value: "Item2", icon: iconURL },
|
|
@@ -72,66 +72,66 @@ var pane;
|
|
|
72
72
|
isEnabled: NO,
|
|
73
73
|
value: "Item1 Item3".w(),
|
|
74
74
|
layout: { height: 25 }
|
|
75
|
-
})
|
|
76
|
-
.add("3_items,1_sel,emptySel", SC.SegmentedView, {
|
|
75
|
+
})
|
|
76
|
+
.add("3_items,1_sel,emptySel", SC.SegmentedView, {
|
|
77
77
|
items: ["Item1", "Very Long Item", "Item 3"],
|
|
78
78
|
value: "Very Long Item",
|
|
79
79
|
allowsEmptySelection: YES,
|
|
80
80
|
layout: { height: 25 }
|
|
81
81
|
})
|
|
82
|
-
.add("3_items,2_sel,emptySel", SC.SegmentedView, {
|
|
82
|
+
.add("3_items,2_sel,emptySel", SC.SegmentedView, {
|
|
83
83
|
items: ["Item1", "Very Long Item", "Item 3"],
|
|
84
84
|
value: "Item1 Item3".w(),
|
|
85
85
|
allowsEmptySelection: YES,
|
|
86
86
|
layout: { height: 25 }
|
|
87
87
|
})
|
|
88
|
-
.add("3_items,1_sel,multipleSel", SC.SegmentedView, {
|
|
88
|
+
.add("3_items,1_sel,multipleSel", SC.SegmentedView, {
|
|
89
89
|
items: "Item1 Item2 Item3".w(),
|
|
90
90
|
value: "Item2",
|
|
91
91
|
allowsMultipleSelection: YES,
|
|
92
92
|
layout: { height: 25 }
|
|
93
93
|
})
|
|
94
|
-
.add("3_items,2_sel,multipleSel", SC.SegmentedView, {
|
|
94
|
+
.add("3_items,2_sel,multipleSel", SC.SegmentedView, {
|
|
95
95
|
items: "Item1 Item2 Item3".w(),
|
|
96
96
|
value: "Item1 Item3".w(),
|
|
97
97
|
allowsMultipleSelection: YES,
|
|
98
98
|
layout: { height: 25 }
|
|
99
99
|
})
|
|
100
|
-
.add("3_items,1_sel,emptySel,multiSel", SC.SegmentedView, {
|
|
100
|
+
.add("3_items,1_sel,emptySel,multiSel", SC.SegmentedView, {
|
|
101
101
|
items: "Item1 Item2 Item3".w(),
|
|
102
102
|
value: "Item2",
|
|
103
103
|
allowsEmptySelection: YES,
|
|
104
104
|
allowsMultipleSelection: YES,
|
|
105
105
|
layout: { height: 25 }
|
|
106
106
|
})
|
|
107
|
-
.add("3_items,2_sel,emptySel,multiSel", SC.SegmentedView, {
|
|
107
|
+
.add("3_items,2_sel,emptySel,multiSel", SC.SegmentedView, {
|
|
108
108
|
items: "Item1 Item2 Item3".w(),
|
|
109
109
|
value: "Item1 Item3".w(),
|
|
110
110
|
allowsEmptySelection: YES,
|
|
111
111
|
allowsMultipleSelection: YES,
|
|
112
112
|
layout: { height: 25 }
|
|
113
113
|
})
|
|
114
|
-
.add("3_items,leftAligned", SC.SegmentedView, {
|
|
114
|
+
.add("3_items,leftAligned", SC.SegmentedView, {
|
|
115
115
|
items: "Item1 Item2 Item3".w(),
|
|
116
116
|
align: SC.ALIGN_LEFT,
|
|
117
117
|
layout: { height: 25 }
|
|
118
118
|
})
|
|
119
|
-
.add("3_items,rightAligned", SC.SegmentedView, {
|
|
119
|
+
.add("3_items,rightAligned", SC.SegmentedView, {
|
|
120
120
|
items: "Item1 Item2 Item3".w(),
|
|
121
121
|
align: SC.ALIGN_RIGHT,
|
|
122
122
|
layout: { height: 25 }
|
|
123
123
|
})
|
|
124
|
-
.add("3_items,widths", SC.SegmentedView, {
|
|
124
|
+
.add("3_items,widths", SC.SegmentedView, {
|
|
125
125
|
items: [
|
|
126
|
-
{ value: "A", width: 70 },
|
|
127
|
-
{ value: "B", width: 70 },
|
|
128
|
-
{ value: "C", width: 70 }],
|
|
126
|
+
SC.Object.create({ value: "A", width: 70 }),
|
|
127
|
+
SC.Object.create({ value: "B", width: 70 }),
|
|
128
|
+
SC.Object.create({ value: "C", width: 70 })],
|
|
129
129
|
itemTitleKey: 'value',
|
|
130
130
|
itemValueKey: 'value',
|
|
131
131
|
itemWidthKey: 'width',
|
|
132
132
|
layout: { height: 25 }
|
|
133
133
|
})
|
|
134
|
-
.add("5_items,widths,overflow", SC.SegmentedView, {
|
|
134
|
+
.add("5_items,widths,overflow", SC.SegmentedView, {
|
|
135
135
|
items: [
|
|
136
136
|
{ value: "A", width: 70 },
|
|
137
137
|
{ value: "B", width: 70 },
|
|
@@ -143,7 +143,7 @@ var pane;
|
|
|
143
143
|
itemWidthKey: 'width',
|
|
144
144
|
layout: { height: 25 }
|
|
145
145
|
})
|
|
146
|
-
.add("5_items,1_sel,widths,overflow", SC.SegmentedView, {
|
|
146
|
+
.add("5_items,1_sel,widths,overflow", SC.SegmentedView, {
|
|
147
147
|
items: [
|
|
148
148
|
{ value: "A", width: 70 },
|
|
149
149
|
{ value: "B", width: 70 },
|
|
@@ -156,14 +156,14 @@ var pane;
|
|
|
156
156
|
value: "D",
|
|
157
157
|
layout: { height: 25 }
|
|
158
158
|
});
|
|
159
|
-
|
|
159
|
+
|
|
160
160
|
pane.show(); // add a test to show the test pane
|
|
161
161
|
|
|
162
162
|
// ..........................................................
|
|
163
163
|
// TEST VIEWS
|
|
164
|
-
//
|
|
164
|
+
//
|
|
165
165
|
module('SC.SegmentedView ui', pane.standardSetup());
|
|
166
|
-
|
|
166
|
+
|
|
167
167
|
test("Check that all segmentedViews are visible", function() {
|
|
168
168
|
ok(pane.view('3_empty').get('isVisibleInWindow'), '3_empty.isVisibleInWindow should be YES');
|
|
169
169
|
ok(pane.view('3_empty,icon').get('isVisibleInWindow'), '3_empty,icon.isVisibleInWindow should be YES');
|
|
@@ -181,78 +181,88 @@ var pane;
|
|
|
181
181
|
ok(pane.view('3_items,leftAligned').get('isVisibleInWindow'), '3_items,leftAligned.isVisibleInWindow should be YES');
|
|
182
182
|
ok(pane.view('3_items,rightAligned').get('isVisibleInWindow'), '3_items,rightAligned.isVisibleInWindow should be YES');
|
|
183
183
|
});
|
|
184
|
-
|
|
185
|
-
|
|
184
|
+
|
|
185
|
+
|
|
186
186
|
test("Check that all segments have the right classes set", function() {
|
|
187
187
|
var viewElem=pane.view('3_empty').$();
|
|
188
|
-
var segments=pane.view('3_empty').$('
|
|
189
|
-
|
|
188
|
+
var segments=pane.view('3_empty').$('.sc-segment-view');
|
|
189
|
+
|
|
190
|
+
equals(segments.length, 4, 'precond - segmented view should have 4 segment elements (including overflow)');
|
|
191
|
+
|
|
190
192
|
ok(viewElem.hasClass('sc-view'), '3_empty.hasClass(sc-view) should be YES');
|
|
191
193
|
ok(viewElem.hasClass('sc-segmented-view'), '3_empty.hasClass(sc-segmented-view) should be YES');
|
|
192
|
-
for (var i=0,
|
|
194
|
+
for (var i=0, seglen=segments.length - 1; i<seglen; i++){
|
|
193
195
|
var seg=segments[i];
|
|
194
196
|
if(i===0){
|
|
195
197
|
ok((seg.className.indexOf('sc-first-segment')>=0), 'first segment has the right classname assigned.');
|
|
196
|
-
}
|
|
197
|
-
if(i
|
|
198
|
+
}
|
|
199
|
+
if(i===seglen-1){
|
|
198
200
|
ok((seg.className.indexOf('sc-last-segment')>=0), 'last segment has the right classname assigned.');
|
|
199
201
|
}
|
|
200
202
|
ok((seg.childNodes[0].className.indexOf('sc-button-inner')>=0), 'segment '+i+' should have an inner-button.');
|
|
201
203
|
ok((seg.childNodes[0].childNodes[0].className.indexOf('sc-button-label')>=0), 'segment '+i+' should have a label.');
|
|
202
|
-
|
|
203
|
-
if(i!==0 && i
|
|
204
|
-
ok((seg.className.indexOf('sc-middle-segment')>=0), 'middle
|
|
204
|
+
|
|
205
|
+
if(i !== 0 && i < seglen-1) {
|
|
206
|
+
ok((seg.className.indexOf('sc-middle-segment')>=0), 'middle segments have the right classname assigned.');
|
|
205
207
|
}
|
|
206
208
|
viewElem=pane.view('3_items,2_sel,disabled').$();
|
|
207
209
|
ok(viewElem.hasClass('disabled'), '3_items,2_sel,disabled should have the disabled class set');
|
|
208
210
|
}
|
|
209
211
|
|
|
210
212
|
});
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
test("Check that all segments have the right classes set", function() {
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
test("Check that all segments have the right classes set (with icons)", function() {
|
|
214
216
|
var viewElem=pane.view('3_empty,icon').$();
|
|
215
|
-
var segments=pane.view('3_empty,icon').$('
|
|
216
|
-
|
|
217
|
+
var segments=pane.view('3_empty,icon').$('.sc-segment-view');
|
|
218
|
+
|
|
219
|
+
equals(segments.length, 4, 'precond - segmented view should have 4 segment elements (including overflow)');
|
|
220
|
+
|
|
217
221
|
ok(viewElem.hasClass('sc-view'), '3_empty.hasClass(sc-view) should be YES');
|
|
218
222
|
ok(viewElem.hasClass('sc-segmented-view'), '3_empty.hasClass(sc-segmented-view) should be YES');
|
|
219
|
-
for (var i=0,
|
|
223
|
+
for (var i=0, seglen=segments.length - 1; i<seglen; i++){
|
|
220
224
|
var seg=segments[i];
|
|
221
225
|
if(i===0){
|
|
222
226
|
ok((seg.className.indexOf('sc-first-segment')>=0), 'first segment has the right classname assigned.');
|
|
223
|
-
}
|
|
224
|
-
if(i==
|
|
227
|
+
}
|
|
228
|
+
if(i==seglen-1){
|
|
225
229
|
ok((seg.className.indexOf('sc-last-segment')>=0), 'last segment has the right classname assigned.');
|
|
226
230
|
}
|
|
227
231
|
ok((seg.childNodes[0].className.indexOf('sc-button-inner')>=0), 'segment '+i+' should have an inner-button.');
|
|
228
232
|
ok((seg.childNodes[0].childNodes[0].className.indexOf('sc-button-label')>=0), 'segment '+i+' should have a label.');
|
|
229
233
|
ok((seg.childNodes[0].childNodes[0].childNodes[0].src.length>0), 'segment '+i+' should have an icon.');
|
|
230
|
-
|
|
231
|
-
if(i!==0 && i!=
|
|
232
|
-
ok((seg.className.indexOf('sc-middle-segment')>=0), 'middle
|
|
234
|
+
|
|
235
|
+
if(i!==0 && i!=seglen-1){
|
|
236
|
+
ok((seg.className.indexOf('sc-middle-segment')>=0), 'middle segments have the right classname assigned.');
|
|
233
237
|
}
|
|
234
238
|
viewElem=pane.view('3_items,2_sel,disabled').$();
|
|
235
239
|
ok(viewElem.hasClass('disabled'), '3_items,2_sel,disabled should have the disabled class set');
|
|
236
240
|
}
|
|
237
241
|
|
|
238
242
|
});
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
test("
|
|
242
|
-
var segments=pane.view('3_empty').$('
|
|
243
|
-
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
test("No value set", function() {
|
|
246
|
+
var segments=pane.view('3_empty').$('.sc-segment-view');
|
|
247
|
+
|
|
248
|
+
// allow for a render to happen
|
|
249
|
+
SC.RunLoop.begin().end();
|
|
250
|
+
|
|
251
|
+
equals(segments.length, 4, 'precond - segmented view should have 4 segment elements (including overflow)');
|
|
244
252
|
for (var i=0, ilen=segments.length; i<ilen; i++){
|
|
245
253
|
var seg=segments[i];
|
|
246
254
|
ok((seg.className.indexOf('sel')==-1), 'this element should not be selected.');
|
|
247
255
|
}
|
|
248
256
|
|
|
249
257
|
});
|
|
250
|
-
|
|
251
|
-
|
|
258
|
+
|
|
259
|
+
|
|
252
260
|
test("Check that two items are selected.", function() {
|
|
253
|
-
var segments=pane.view('3_items,icon,2_sel').$('
|
|
261
|
+
var segments=pane.view('3_items,icon,2_sel').$('.sc-segment-view');
|
|
254
262
|
var count=0;
|
|
255
|
-
|
|
263
|
+
|
|
264
|
+
equals(segments.length, 4, 'precond - segmented view should have 4 segment elements (including overflow)');
|
|
265
|
+
|
|
256
266
|
for (var i=0, ilen=segments.length; i<ilen; i++){
|
|
257
267
|
var seg=segments[i];
|
|
258
268
|
if(seg.className.indexOf('sel')!=-1){
|
|
@@ -262,111 +272,111 @@ var pane;
|
|
|
262
272
|
equals(count, 2, '3_items,2_sel,disabled should have two segments selected.');
|
|
263
273
|
|
|
264
274
|
});
|
|
265
|
-
|
|
266
|
-
|
|
275
|
+
|
|
276
|
+
|
|
267
277
|
test("2_items,toolTip has toolTips assigned.", function() {
|
|
268
|
-
var segments=pane.view('2_items,toolTip').$('
|
|
278
|
+
var segments=pane.view('2_items,toolTip').$('.sc-segment-view');
|
|
269
279
|
ok((segments[0].title=="this is title1's tip"), 'first segment has expected tool tip assigned.');
|
|
270
280
|
ok((segments[1].title=="this is title2's tip"), 'second segment has expected tool tip assigned.');
|
|
271
281
|
});
|
|
272
|
-
|
|
282
|
+
|
|
273
283
|
test("Check the alignment styles for align property.", function() {
|
|
274
284
|
equals(pane.view("3_empty").$().css('text-align'), 'center', 'default align property should text-align the segmented-view to the center');
|
|
275
285
|
equals(pane.view("3_items,leftAligned").$().css('text-align'), 'left', 'setting align: SC.ALIGN_LEFT should text-align the segmented-view to the left');
|
|
276
286
|
equals(pane.view("3_items,rightAligned").$().css('text-align'), 'right', 'setting align: SC.ALIGN_LEFT should text-align the segmented-view to the left');
|
|
277
287
|
});
|
|
278
|
-
|
|
279
|
-
test("Check that changing title re-renders the segments (for
|
|
288
|
+
|
|
289
|
+
test("Check that changing title re-renders the segments (for SC.Object items only).", function() {
|
|
280
290
|
var sv = pane.view("3_items,widths");
|
|
281
|
-
var segments=sv.$('
|
|
291
|
+
var segments=sv.$('.sc-segment-view');
|
|
282
292
|
var defaults = ['A', 'B', 'C'];
|
|
283
|
-
for (var i=0, len=segments.length; i < len; i++){
|
|
293
|
+
for (var i=0, len=segments.length - 1; i < len; i++){
|
|
284
294
|
var segEl=segments[i];
|
|
285
295
|
var label=$(segEl).find('label')[0];
|
|
286
296
|
equals(label.innerHTML, defaults[i], 'there should be "' + defaults[i] + '" in the segment\'s label');
|
|
287
297
|
}
|
|
288
|
-
|
|
298
|
+
|
|
289
299
|
// change the title of the second item
|
|
290
300
|
var items = sv.get('items');
|
|
291
301
|
items[1].set('value', 'Item 2');
|
|
292
|
-
|
|
302
|
+
|
|
293
303
|
// allow for a render to happen
|
|
294
304
|
SC.RunLoop.begin().end();
|
|
295
|
-
|
|
305
|
+
|
|
296
306
|
segEl=segments[1];
|
|
297
307
|
label=$(segEl).find('label')[0];
|
|
298
308
|
equals(label.innerHTML, "Item 2", 'there should be "Item 2" text in the second segment');
|
|
299
309
|
});
|
|
300
|
-
|
|
310
|
+
|
|
301
311
|
test("Check that changing width re-renders the segments (for hash or object items only).", function() {
|
|
302
312
|
var sv = pane.view("3_items,widths");
|
|
303
|
-
var segments=sv.$('
|
|
304
|
-
for (var i=0, len=segments.length; i < len; i++){
|
|
313
|
+
var segments=sv.$('.sc-segment-view');
|
|
314
|
+
for (var i=0, len=segments.length - 1; i < len; i++){
|
|
305
315
|
var segEl=segments[i];
|
|
306
316
|
var width=$(segEl).css('width');
|
|
307
317
|
equals(width, "70px", 'the segment style width should be "70px"');
|
|
308
318
|
}
|
|
309
|
-
|
|
319
|
+
|
|
310
320
|
// change the width of the second item
|
|
311
321
|
var items = sv.get('items');
|
|
312
322
|
items[1].set('width', 100);
|
|
313
|
-
|
|
323
|
+
|
|
314
324
|
// allow for a render to happen
|
|
315
325
|
SC.RunLoop.begin().end();
|
|
316
|
-
|
|
326
|
+
|
|
317
327
|
segEl=segments[1];
|
|
318
328
|
width=$(segEl).css('width');
|
|
319
329
|
equals(width, "100px", 'the second segment style width should be "100px"');
|
|
320
330
|
});
|
|
321
|
-
|
|
331
|
+
|
|
322
332
|
test("Check that overflow adds an overflow segment on view.", function() {
|
|
323
333
|
var sv = pane.view("5_items,widths,overflow");
|
|
324
334
|
var lastIsOverflow = function(sv) {
|
|
325
335
|
SC.RunLoop.begin().end(); // allow for a render to happen
|
|
326
|
-
|
|
327
|
-
var segments=sv.$('
|
|
336
|
+
|
|
337
|
+
var segments=sv.$('.sc-segment-view');
|
|
328
338
|
var overflowEl = segments[segments.length - 1];
|
|
329
339
|
ok($(overflowEl).hasClass('sc-overflow-segment'), 'overflow segment should have .sc-overflow-segment class');
|
|
330
340
|
var overflowLabelEl = $(overflowEl).find('label')[0];
|
|
331
341
|
equals(overflowLabelEl.innerHTML, "»", 'there should be "»" text in the overflow segment');
|
|
332
342
|
};
|
|
333
|
-
|
|
343
|
+
|
|
334
344
|
var lastIsSegment = function(sv, text) {
|
|
335
345
|
SC.RunLoop.begin().end(); // allow for a render to happen
|
|
336
|
-
|
|
337
|
-
var segments=sv.$('
|
|
338
|
-
var lastEl = segments[segments.length -
|
|
346
|
+
|
|
347
|
+
var segments=sv.$('.sc-segment-view');
|
|
348
|
+
var lastEl = segments[segments.length - 2];
|
|
339
349
|
ok(!$(lastEl).hasClass('sc-overflow-segment'), 'last segment should not have .sc-overflow-segment class');
|
|
340
350
|
var lastLabelEl = $(lastEl).find('label')[0];
|
|
341
351
|
equals(lastLabelEl.innerHTML, text, 'there should be "' + text + '" text in the last segment');
|
|
342
352
|
};
|
|
343
|
-
|
|
353
|
+
|
|
344
354
|
// the last item should be an overflow segment (ie. has .sc-overflow-segment class and text "»")
|
|
345
355
|
lastIsOverflow(sv);
|
|
346
|
-
|
|
356
|
+
|
|
347
357
|
// check that the overflowed items are stored
|
|
348
358
|
var overflowItems = sv.overflowItems;
|
|
349
359
|
equals(overflowItems.length, 2, "there should be 2 overflowed items");
|
|
350
|
-
|
|
360
|
+
|
|
351
361
|
// 1. remove the last two items (the last item should no longer be an overflow segment)
|
|
352
362
|
var items = sv.get('items');
|
|
353
363
|
items.removeAt(items.length - 1);
|
|
354
364
|
items.removeAt(items.length - 1);
|
|
355
365
|
lastIsSegment(sv, "C");
|
|
356
|
-
|
|
366
|
+
|
|
357
367
|
// 2. add an item (the last item should be an overflow segment again)
|
|
358
368
|
items.pushObject({value: 'X', width: 100});
|
|
359
369
|
lastIsOverflow(sv);
|
|
360
|
-
|
|
370
|
+
|
|
361
371
|
// 3. shrink the items (the last item should no longer be an overflow segment)
|
|
362
372
|
items.invoke('set', 'width', 50);
|
|
363
373
|
lastIsSegment(sv, "X");
|
|
364
|
-
|
|
374
|
+
|
|
365
375
|
// 4. grow the items (the last item should be an overflow segment again)
|
|
366
376
|
items.invoke('set', 'width', 100);
|
|
367
377
|
lastIsOverflow(sv);
|
|
368
|
-
|
|
369
|
-
// 5. shrink the items, but then shrink the segmented view
|
|
378
|
+
|
|
379
|
+
// 5. shrink the items, but then shrink the segmented view
|
|
370
380
|
items.invoke('set', 'width', 50);
|
|
371
381
|
lastIsSegment(sv, "X");
|
|
372
382
|
sv.set('layout', {left: 75, right: 75, top: 0, height: 25});
|
|
@@ -376,11 +386,11 @@ var pane;
|
|
|
376
386
|
SC.RunLoop.begin().end(); // allow for a render to happen (measure the segments)
|
|
377
387
|
lastIsOverflow(sv);
|
|
378
388
|
});
|
|
379
|
-
|
|
389
|
+
|
|
380
390
|
test("Check that the overflow segment is selected when overflowed items are selected.", function() {
|
|
381
391
|
var sv = pane.view("5_items,1_sel,widths,overflow");
|
|
382
|
-
var segments=sv.$('
|
|
383
|
-
|
|
392
|
+
var segments=sv.$('.sc-segment-view');
|
|
393
|
+
|
|
384
394
|
// the overflow item should be selected (because an overflowed item is selected)
|
|
385
395
|
var overflowEl = segments[segments.length - 1];
|
|
386
396
|
ok($(overflowEl).hasClass('sel'), 'overflow segment should have .sel class');
|
|
@@ -12,10 +12,10 @@ htmlbody('<style> .sc-static-layout { border: 1px red dotted; } </style>');
|
|
|
12
12
|
|
|
13
13
|
(function() {
|
|
14
14
|
var iconURL= "http://www.freeiconsweb.com/Icons/16x16_people_icons/People_046.gif";
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
var pane = SC.ControlTestPane.design()
|
|
17
|
-
|
|
18
|
-
.add("tabView1", SC.TabView, {
|
|
17
|
+
|
|
18
|
+
.add("tabView1", SC.TabView, {
|
|
19
19
|
nowShowing: 'tab2',
|
|
20
20
|
|
|
21
21
|
items: [
|
|
@@ -23,15 +23,15 @@ htmlbody('<style> .sc-static-layout { border: 1px red dotted; } </style>');
|
|
|
23
23
|
{ title: "tab2", value: "tab2" , icon: iconURL},
|
|
24
24
|
{ title: "tab3", value: "tab3" , icon: iconURL}
|
|
25
25
|
],
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
itemTitleKey: 'title',
|
|
28
28
|
itemValueKey: 'value',
|
|
29
29
|
itemIconKey: 'icon',
|
|
30
30
|
layout: { left:12, height: 200, right:12, top:12 }
|
|
31
|
-
|
|
31
|
+
|
|
32
32
|
})
|
|
33
|
-
|
|
34
|
-
.add("tabView2", SC.TabView, {
|
|
33
|
+
|
|
34
|
+
.add("tabView2", SC.TabView, {
|
|
35
35
|
nowShowing: 'tab3',
|
|
36
36
|
|
|
37
37
|
items: [
|
|
@@ -39,50 +39,47 @@ htmlbody('<style> .sc-static-layout { border: 1px red dotted; } </style>');
|
|
|
39
39
|
{ title: "tab2", value: "tab2" },
|
|
40
40
|
{ title: "tab3", value: "tab3" }
|
|
41
41
|
],
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
itemTitleKey: 'title',
|
|
44
44
|
itemValueKey: 'value',
|
|
45
45
|
layout: { left:12, height: 200, right:12, top:12 }
|
|
46
|
-
|
|
46
|
+
|
|
47
47
|
})
|
|
48
|
-
.add("tabView3", SC.TabView, {
|
|
49
|
-
|
|
48
|
+
.add("tabView3", SC.TabView, {
|
|
49
|
+
|
|
50
50
|
items: [
|
|
51
51
|
{ title: "tab1", value: "tab1" },
|
|
52
52
|
{ title: "tab2", value: "tab2" },
|
|
53
53
|
{ title: "tab3", value: "tab3" }
|
|
54
54
|
],
|
|
55
|
-
|
|
55
|
+
|
|
56
56
|
itemTitleKey: 'title',
|
|
57
57
|
itemValueKey: 'value',
|
|
58
58
|
layout: { left:12, height: 200, right:12, top:12}
|
|
59
59
|
});
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
pane.show(); // add a test to show the test pane
|
|
62
62
|
|
|
63
63
|
// ..........................................................
|
|
64
64
|
// TEST VIEWS
|
|
65
|
-
//
|
|
65
|
+
//
|
|
66
66
|
module('SC.TabView ui', pane.standardSetup());
|
|
67
|
-
|
|
67
|
+
|
|
68
68
|
test("Check that all tabViews are visible", function() {
|
|
69
69
|
ok(pane.view('tabView1').get('isVisibleInWindow'), 'tabView1.isVisibleInWindow should be YES');
|
|
70
70
|
ok(pane.view('tabView2').get('isVisibleInWindow'), 'tabView2.isVisibleInWindow should be YES');
|
|
71
71
|
ok(pane.view('tabView3').get('isVisibleInWindow'), 'tabView3.isVisibleInWindow should be YES');
|
|
72
72
|
});
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
|
|
74
|
+
|
|
75
75
|
test("Check that the tabView has the right classes set", function() {
|
|
76
|
-
var
|
|
77
|
-
var
|
|
76
|
+
var view = pane.view('tabView1');
|
|
77
|
+
var viewElem = view.$();
|
|
78
78
|
ok(viewElem.hasClass('sc-view'), 'tabView1.hasClass(sc-view) should be YES');
|
|
79
79
|
ok(viewElem.hasClass('sc-tab-view'), 'tabView1.hasClass(sc-tab-view) should be YES');
|
|
80
|
-
ok(
|
|
81
|
-
ok(
|
|
82
|
-
ok(views[1].childNodes.length==3, 'tabView1 should have 3 options');
|
|
83
|
-
|
|
84
|
-
|
|
80
|
+
ok(view.$('.sc-segmented-view').length, 'tabView1 should contain a segmented view');
|
|
81
|
+
ok(view.$('.sc-container-view').length, 'tabView1 should contain a container view');
|
|
85
82
|
});
|
|
86
|
-
|
|
83
|
+
|
|
87
84
|
|
|
88
85
|
})();
|
|
@@ -2300,26 +2300,22 @@ SC.CollectionView = SC.View.extend(
|
|
|
2300
2300
|
// TOUCH EVENTS
|
|
2301
2301
|
//
|
|
2302
2302
|
touchStart: function(touch, evt) {
|
|
2303
|
-
// When the user presses the mouse down, we don't do much just yet.
|
|
2304
|
-
// Instead, we just need to save a bunch of state about the mouse down
|
|
2305
|
-
// so we can choose the right thing to do later.
|
|
2306
|
-
|
|
2307
|
-
// Toggle selection only triggers on mouse up. Do nothing.
|
|
2308
|
-
if (this.get('useToggleSelection')) return true;
|
|
2309
|
-
|
|
2310
|
-
// find the actual view the mouse was pressed down on. This will call
|
|
2311
|
-
// hitTest() on item views so they can implement non-square detection
|
|
2312
|
-
// modes. -- once we have an item view, get its content object as well.
|
|
2313
|
-
var itemView = this.itemViewForEvent(touch),
|
|
2314
|
-
content = this.get('content'),
|
|
2315
|
-
contentIndex = itemView ? itemView.get('contentIndex') : -1,
|
|
2316
|
-
info, anchor ;
|
|
2317
|
-
|
|
2318
2303
|
// become first responder if possible.
|
|
2319
2304
|
this.becomeFirstResponder() ;
|
|
2320
|
-
|
|
2321
|
-
this.
|
|
2322
|
-
|
|
2305
|
+
|
|
2306
|
+
if (!this.get('useToggleSelection')) {
|
|
2307
|
+
var itemView = this.itemViewForEvent(touch);
|
|
2308
|
+
|
|
2309
|
+
// We're faking the selection visually here
|
|
2310
|
+
// Only track this if we added a selection so we can remove it later
|
|
2311
|
+
if (itemView && !itemView.get('isSelected')) {
|
|
2312
|
+
itemView.set('isSelected', YES);
|
|
2313
|
+
this._touchSelectedView = itemView;
|
|
2314
|
+
} else {
|
|
2315
|
+
this._touchSelectedView = null;
|
|
2316
|
+
}
|
|
2317
|
+
}
|
|
2318
|
+
|
|
2323
2319
|
return YES;
|
|
2324
2320
|
},
|
|
2325
2321
|
|
|
@@ -2329,22 +2325,39 @@ SC.CollectionView = SC.View.extend(
|
|
|
2329
2325
|
Math.abs(touch.pageX - touch.startX) > 5 ||
|
|
2330
2326
|
Math.abs(touch.pageY - touch.startY) > 5
|
|
2331
2327
|
) {
|
|
2332
|
-
|
|
2328
|
+
// This calls touchCancelled
|
|
2333
2329
|
touch.makeTouchResponder(touch.nextTouchResponder);
|
|
2334
2330
|
}
|
|
2335
2331
|
}, this);
|
|
2336
2332
|
|
|
2337
2333
|
},
|
|
2338
|
-
|
|
2334
|
+
|
|
2339
2335
|
touchEnd: function(touch) {
|
|
2340
|
-
var itemView = this.itemViewForEvent(touch)
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2336
|
+
var itemView = this.itemViewForEvent(touch),
|
|
2337
|
+
contentIndex = itemView ? itemView.get('contentIndex') : -1,
|
|
2338
|
+
isSelected = NO;
|
|
2339
|
+
|
|
2340
|
+
// Remove fake selection in case our contentIndex is -1, a select event will add it back
|
|
2341
|
+
if (this._touchSelectedView) { this._touchSelectedView.set('isSelected', NO); }
|
|
2342
|
+
|
|
2343
|
+
if (this.get('useToggleSelection')) {
|
|
2344
|
+
var sel = this.get('selection');
|
|
2345
|
+
isSelected = sel && sel.containsObject(itemView.get('content'));
|
|
2346
|
+
}
|
|
2347
|
+
|
|
2348
|
+
if (isSelected) {
|
|
2349
|
+
this.deselect(contentIndex);
|
|
2350
|
+
} else {
|
|
2351
|
+
this.select(contentIndex, NO);
|
|
2352
|
+
|
|
2353
|
+
// If actOnSelect is implemented, the action will be fired.
|
|
2354
|
+
this._cv_performSelectAction(itemView, touch, 0);
|
|
2355
|
+
}
|
|
2344
2356
|
},
|
|
2345
2357
|
|
|
2346
2358
|
touchCancelled: function(evt) {
|
|
2347
|
-
|
|
2359
|
+
// Remove fake selection
|
|
2360
|
+
if (this._touchSelectedView) { this._touchSelectedView.set('isSelected', NO); }
|
|
2348
2361
|
},
|
|
2349
2362
|
|
|
2350
2363
|
/** @private */
|
|
@@ -85,7 +85,7 @@ SC.DateFieldView = SC.TextFieldView.extend(
|
|
|
85
85
|
FUTURE: DatePickerSupport.
|
|
86
86
|
createChildViews: function() {
|
|
87
87
|
sc_super();
|
|
88
|
-
if (SC.browser.
|
|
88
|
+
if (SC.browser.webkit) {
|
|
89
89
|
// ON MOZILLA DON'T WORK
|
|
90
90
|
var view = Shared.DatePickerView.extend({
|
|
91
91
|
layout: { right: 0, centerY: 0, width: 18, height: 15 }
|
|
@@ -764,7 +764,7 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
|
764
764
|
// save adjustment and then invoke the actual scroll code later. This will
|
|
765
765
|
// keep the view feeling smooth.
|
|
766
766
|
mouseWheel: function(evt) {
|
|
767
|
-
var deltaAdjust = (SC.browser.
|
|
767
|
+
var deltaAdjust = (SC.browser.webkit && SC.browser.version > 533.0) ? 120 : 1;
|
|
768
768
|
|
|
769
769
|
this._scroll_wheelDeltaX += evt.wheelDeltaX / deltaAdjust;
|
|
770
770
|
this._scroll_wheelDeltaY += evt.wheelDeltaY / deltaAdjust;
|