sproutcore 1.7.1.beta → 1.8.0
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/CHANGELOG +44 -0
- data/README.rdoc +20 -20
- data/VERSION.yml +3 -3
- data/lib/Buildfile +1 -1
- data/lib/buildtasks/build.rake +5 -0
- data/lib/buildtasks/manifest.rake +19 -1
- data/lib/frameworks/sproutcore/Buildfile +19 -17
- data/lib/frameworks/sproutcore/CHANGELOG.md +163 -29
- data/lib/frameworks/sproutcore/README.md +29 -8
- data/lib/frameworks/sproutcore/apps/statechart_routing/Buildfile +12 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/login_controller.js +11 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/main_controller.js +7 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/statechart_controller.js +17 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +25 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/main.js +15 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/_theme.css +18 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/bar_page.js +14 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/foo_page.js +14 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/loading.rhtml +9 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +61 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/main_page.js +46 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/statechart.js +76 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/theme.js +27 -0
- data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
- data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +14 -1
- data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +15 -15
- data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/animation/core.js +8 -5
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +302 -70
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +19 -14
- data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +471 -149
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +42 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +63 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +37 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +28 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +10 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +66 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +58 -57
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js.orig +445 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +51 -31
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +53 -69
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +98 -72
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +37 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +7 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +23 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/browser.js +66 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/event.js +22 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +17 -16
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +15 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +50 -30
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +46 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +1 -43
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +8 -34
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +10 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +6 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +22 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +35 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +46 -19
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -9
- data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +2 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +294 -302
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js.orig +1531 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +14 -11
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/many_array.js +63 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +50 -10
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +114 -67
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +54 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +29 -9
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +37 -45
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +127 -127
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +42 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -7
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/debug/core.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +1 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +19 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +30 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +24 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +121 -28
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +15 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +39 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +14 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -51
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +11 -16
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +0 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +9 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/content.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +107 -81
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +68 -60
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +57 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +21 -19
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +32 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +0 -8
- data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +77 -132
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +5 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +16 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +52 -52
- data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +147 -147
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +11 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +22 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +13 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +462 -441
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +48 -62
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +22 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +150 -32
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +104 -45
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +42 -20
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +148 -154
- data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +8 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/files.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/library.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/view_configs.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/mixins/drop_down.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/ready.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/plist_item.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/web.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_design.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +21 -21
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/page_item_view.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +59 -53
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +6 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -10
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +17 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +38 -14
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +5 -13
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +19 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +20 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +35 -12
- data/lib/frameworks/sproutcore/frameworks/formatters/README +6 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/english.lproj/strings.js +174 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +351 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/tests/date_formatter.js +517 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +345 -138
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +176 -42
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +137 -105
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +16 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +47 -47
- data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +28 -6
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +0 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/bootstrap.rhtml +34 -19
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +0 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +1 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +8 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +179 -47
- data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +34 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +26 -12
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +12 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_metric_optimization.js +202 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js +77 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +0 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +163 -149
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +16 -43
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +67 -54
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +49 -38
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +285 -242
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +13 -13
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +19 -22
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +231 -186
- data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +145 -143
- data/lib/frameworks/sproutcore/frameworks/media/views/video.js +156 -154
- data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js.orig +540 -0
- data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +15 -8
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +98 -32
- data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +7 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +14 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +98 -13
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +8 -14
- data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +23 -6
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +69 -18
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +57 -31
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +189 -14
- data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +82 -22
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +125 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +37 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +75 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart_delegate.js +113 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +312 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +18 -22
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +508 -131
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +265 -44
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +11 -3
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/private/state_path_matcher.js +116 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/add_substate.js +108 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/with_concurrent.js +179 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/without_concurrent.js +74 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_state.js +141 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_substate.js +340 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/route_triggered.js +161 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/try_to_handle_event.js +288 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +5 -33
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +213 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +212 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/core.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/{state/namespacing.js → statechart/methods/get_state.js} +3 -41
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/{invoke_state_method.js → methods/invoke_state_method.js} +1 -1
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/{event_handling/advanced → statechart}/respond_to_event.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/system/state_route_handler_context/methods/retry.js +64 -0
- data/lib/frameworks/sproutcore/frameworks/table/core.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/controls/button.js +0 -1
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars.js +29 -5
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/bind.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/collection.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/localization.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/view.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{handlebars → template_view}/handlebars.js +493 -357
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/checkbox_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/text_field_support.js +13 -2
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/panes/template.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/controls/button.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/checkbox_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/text_field_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/panes/template.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/collection.js +39 -14
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/handlebars.js +57 -6
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/bindable_span.js +21 -6
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template_collection.js +55 -26
- data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +122 -122
- data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +1 -1
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +0 -1
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +4 -4
- data/lib/frameworks/sproutcore/lib/index.rhtml +55 -32
- data/lib/frameworks/sproutcore/license.js +2 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/body.css +5 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +21 -13
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +17 -10
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +4 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +20 -12
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +16 -8
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/jumbo/button.css +17 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/small/button.css +17 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +5 -3
- data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/toolbar.css +1 -1
- data/lib/gen/app/USAGE +17 -4
- data/lib/gen/language/Buildfile +4 -4
- data/lib/gen/language/USAGE +4 -4
- data/lib/gen/page/templates/pages/@target_name@/Buildfile +7 -7
- data/lib/gen/{html_app → statechart_app}/Buildfile +0 -0
- data/lib/gen/{html_app → statechart_app}/README +0 -0
- data/lib/gen/statechart_app/USAGE +21 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/Buildfile +9 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/core.js +24 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/main.js +26 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/_theme.css +18 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/loading.rhtml +9 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/main_page.js +21 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/statechart.js +8 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/states/ready_state.js +12 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/theme.js +24 -0
- data/lib/sproutcore/builders.rb +1 -0
- data/lib/sproutcore/builders/base.rb +19 -1
- data/lib/sproutcore/builders/chance_file.rb +6 -1
- data/lib/sproutcore/builders/handlebars.rb +1 -9
- data/lib/sproutcore/builders/javascript.rb +1 -10
- data/lib/sproutcore/builders/json.rb +25 -0
- data/lib/sproutcore/builders/less.rb +1 -1
- data/lib/sproutcore/builders/sass.rb +1 -1
- data/lib/sproutcore/builders/stylesheet.rb +1 -9
- data/lib/sproutcore/helpers/html5_manifest.rb +1 -1
- data/lib/sproutcore/helpers/static_helper.rb +42 -0
- data/lib/sproutcore/rack/proxy.rb +21 -3
- data/lib/sproutcore/rack/service.rb +3 -2
- data/lib/sproutcore/tools.rb +18 -25
- data/lib/sproutcore/tools/gen.rb +10 -3
- data/lib/sproutcore/tools/init.rb +11 -10
- data/spec/buildtasks/manifest/prepare_build_tasks/json_spec.rb +62 -0
- data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -1
- data/spec/fixtures/builder_tests/apps/json_test/sc_static.json +2 -0
- data/spec/lib/builders/json_spec.rb +53 -0
- data/sproutcore.gemspec +2 -2
- data/vendor/chance/lib/chance/parser.rb +1 -1
- metadata +222 -177
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/datetime.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +0 -259
- data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +0 -69
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +0 -44
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +0 -64
- data/lib/frameworks/sproutcore/frameworks/mini/license.js +0 -30
- data/lib/gen/html_app/USAGE +0 -15
- data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +0 -11
- 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 -6
- data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +0 -1
- data/lib/gen/html_project/Buildfile +0 -45
- data/lib/gen/html_project/INIT +0 -3
- data/lib/gen/html_project/README +0 -1
- data/lib/gen/html_project/USAGE +0 -2
- data/lib/gen/html_project/templates/@filename@/Buildfile +0 -5
- data/lib/gen/html_project/templates/@filename@/README +0 -4
data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js
CHANGED
|
@@ -30,22 +30,21 @@ test("invoked with key = * whenever content changes", function() {
|
|
|
30
30
|
view.set('content', content);
|
|
31
31
|
});
|
|
32
32
|
|
|
33
|
-
test("
|
|
34
|
-
var isTesting = NO,
|
|
33
|
+
test("should not be invoked when arbitrary keys are changed", function() {
|
|
34
|
+
var isTesting = NO, count = 0;
|
|
35
35
|
view.contentPropertyDidChange = function(target, key) {
|
|
36
36
|
if (!isTesting) return ; //wait until testing should begin...
|
|
37
|
-
|
|
38
|
-
equals(key, curKey, 'should pass * as key');
|
|
37
|
+
count++;
|
|
39
38
|
};
|
|
39
|
+
|
|
40
40
|
view.set('content', content);
|
|
41
41
|
|
|
42
42
|
isTesting = YES ;
|
|
43
43
|
|
|
44
|
-
curKey= 'foo';
|
|
45
44
|
content.set('foo', 'foo');
|
|
46
|
-
|
|
47
|
-
curKey = 'bar';
|
|
48
45
|
content.set('bar', 'bar');
|
|
46
|
+
|
|
47
|
+
equals(count, 0, "method was not invoked");
|
|
49
48
|
});
|
|
50
49
|
|
|
51
50
|
test("should no longer be invoked when a key is changed on a former content object", function() {
|
|
@@ -73,7 +72,7 @@ test("should fire even on a content object set when the object is created", func
|
|
|
73
72
|
equals(callCount, 1, 'should call contentPropertyDidChange on init to do initial setup');
|
|
74
73
|
|
|
75
74
|
content.set('foo', 'foo');
|
|
76
|
-
equals(callCount,
|
|
75
|
+
equals(callCount, 1, 'should not call contentPropertyDidChange when changing content.foo');
|
|
77
76
|
});
|
|
78
77
|
|
|
79
78
|
// ..........................................................
|
|
@@ -166,3 +165,73 @@ test("if contentValueKey is not set & displayDelegate not set, does nothing", fu
|
|
|
166
165
|
equals(content.get('bar'), 'bar', 'should not change');
|
|
167
166
|
equals(content.get('foo'), 'foo', 'should not change');
|
|
168
167
|
});
|
|
168
|
+
|
|
169
|
+
// ..........................................................
|
|
170
|
+
// updateContentWithValueObserver()
|
|
171
|
+
//
|
|
172
|
+
module("SC.ContentValueSupport#contentKeys", {
|
|
173
|
+
setup: function() {
|
|
174
|
+
this.count = 0;
|
|
175
|
+
var self = this;
|
|
176
|
+
|
|
177
|
+
this.obj = SC.Object.create(SC.ContentValueSupport, SC.DelegateSupport, {
|
|
178
|
+
contentKeys: {'contentFooKey': 'foo'},
|
|
179
|
+
contentFooKey: 'foo',
|
|
180
|
+
content: SC.Object.create({foo: 'BAR'}),
|
|
181
|
+
contentPropertyDidChange: function(orig, target, key) {
|
|
182
|
+
equals(target, this.content, "content is target");
|
|
183
|
+
self.count++;
|
|
184
|
+
|
|
185
|
+
return orig(target, key);
|
|
186
|
+
}.enhance()
|
|
187
|
+
});
|
|
188
|
+
},
|
|
189
|
+
|
|
190
|
+
teardown: function() {
|
|
191
|
+
this.obj.destroy();
|
|
192
|
+
|
|
193
|
+
this.obj = null;
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
test("different contentKeys on creation are observed correctly", function() {
|
|
198
|
+
equals(this.count, 1, "observer was called once on init");
|
|
199
|
+
|
|
200
|
+
this.obj.content.set('foo', 'BAR2');
|
|
201
|
+
|
|
202
|
+
equals(this.count, 2, "observer was called again on set");
|
|
203
|
+
|
|
204
|
+
equals(this.obj.get('foo'), 'BAR2', "value is updated correctly");
|
|
205
|
+
|
|
206
|
+
this.obj.content.set('bar', 'ASDF');
|
|
207
|
+
|
|
208
|
+
equals(this.count, 2, "observer was not called again on setting other keys");
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
test("different contentKeys after creation are observed correctly", function() {
|
|
212
|
+
equals(this.count, 1, "observer was called once on init");
|
|
213
|
+
|
|
214
|
+
this.obj.beginPropertyChanges();
|
|
215
|
+
this.obj.set({
|
|
216
|
+
contentKeys: {'contentBarKey': 'bar'},
|
|
217
|
+
contentBarKey: 'bar'
|
|
218
|
+
});
|
|
219
|
+
this.obj.endPropertyChanges();
|
|
220
|
+
|
|
221
|
+
equals(this.count, 2, "observer was called when changing contentKeys");
|
|
222
|
+
|
|
223
|
+
this.obj.content.set('bar', 'BAR2');
|
|
224
|
+
|
|
225
|
+
equals(this.count, 3, "observer was called when changing bar");
|
|
226
|
+
|
|
227
|
+
equals(this.obj.get('bar'), 'BAR2', "value is updated correctly");
|
|
228
|
+
|
|
229
|
+
this.obj.content.set('asdfasf', 'asdfasd');
|
|
230
|
+
|
|
231
|
+
equals(this.count, 3, "observer was not called again on setting other keys");
|
|
232
|
+
|
|
233
|
+
this.obj.content.set('foo', 'asdfasd');
|
|
234
|
+
|
|
235
|
+
equals(this.count, 3, "observer was not called again on setting old observed keys");
|
|
236
|
+
});
|
|
237
|
+
|
data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js
CHANGED
|
@@ -62,13 +62,13 @@ view = SC.View.create(SC.InlineEditable, {
|
|
|
62
62
|
});
|
|
63
63
|
|
|
64
64
|
function reset() {
|
|
65
|
+
if(fakeEditor.isEditing) fakeEditor.discardEditing();
|
|
66
|
+
|
|
65
67
|
fakeDelegate.shouldBeginCalled = NO;
|
|
66
68
|
fakeDelegate.acquireEditorCalled = NO;
|
|
67
69
|
fakeEditor.beginEditingCalled = NO;
|
|
68
70
|
fakeDelegate.willBeginCalled = NO;
|
|
69
71
|
fakeDelegate.didBeginCalled = NO;
|
|
70
|
-
|
|
71
|
-
if(fakeEditor.isEditing) fakeEditor.discardEditing();
|
|
72
72
|
};
|
|
73
73
|
|
|
74
74
|
module('SC.InlineEditable.beginEditing');
|
data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js
CHANGED
|
@@ -32,6 +32,7 @@ fakeDelegate = {
|
|
|
32
32
|
inlineEditorDidCommitEditing: function() {
|
|
33
33
|
this.didCommitCalled = YES;
|
|
34
34
|
ok(this.willCommitCalled, "willCommit called before didCommit");
|
|
35
|
+
view._endEditing();
|
|
35
36
|
}
|
|
36
37
|
};
|
|
37
38
|
|
|
@@ -58,13 +59,13 @@ view = SC.View.create(SC.InlineEditable, {
|
|
|
58
59
|
});
|
|
59
60
|
|
|
60
61
|
function reset() {
|
|
62
|
+
if(fakeEditor.isEditing) fakeEditor.discardEditing();
|
|
63
|
+
|
|
61
64
|
fakeDelegate.shouldCommitCalled = NO;
|
|
62
65
|
fakeEditor.commitEditingCalled = NO;
|
|
63
66
|
|
|
64
67
|
fakeDelegate.willCommitCalled = NO;
|
|
65
68
|
fakeDelegate.didCommitCalled = NO;
|
|
66
|
-
|
|
67
|
-
if(fakeEditor.isEditing) fakeEditor.discardEditing();
|
|
68
69
|
}
|
|
69
70
|
|
|
70
71
|
module('SC.InlineEditable.commitEditing');
|
|
@@ -84,7 +85,7 @@ test("commitEditing should ask shouldCommit and then call commitEditing", functi
|
|
|
84
85
|
ok(fakeDelegate.shouldCommitCalled, "shouldCommit called");
|
|
85
86
|
});
|
|
86
87
|
|
|
87
|
-
test("commitEditing should fail if shouldCommit returns
|
|
88
|
+
test("commitEditing should fail if shouldCommit returns NO", function() {
|
|
88
89
|
reset();
|
|
89
90
|
|
|
90
91
|
fakeDelegate.shouldCommitAllowed = NO;
|
data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js
CHANGED
|
@@ -32,6 +32,8 @@ fakeDelegate = {
|
|
|
32
32
|
inlineEditorDidDiscardEditing: function() {
|
|
33
33
|
this.didDiscardCalled = YES;
|
|
34
34
|
ok(this.willDiscardCalled, "willDiscard called before didDiscard");
|
|
35
|
+
|
|
36
|
+
view._endEditing();
|
|
35
37
|
}
|
|
36
38
|
};
|
|
37
39
|
|
|
@@ -58,13 +60,13 @@ view = SC.View.create(SC.InlineEditable, {
|
|
|
58
60
|
});
|
|
59
61
|
|
|
60
62
|
function reset() {
|
|
63
|
+
if(fakeEditor.isEditing) fakeEditor.commitEditing();
|
|
64
|
+
|
|
61
65
|
fakeDelegate.shouldDiscardCalled = NO;
|
|
62
66
|
fakeEditor.discardEditingCalled = NO;
|
|
63
67
|
|
|
64
68
|
fakeDelegate.willDiscardCalled = NO;
|
|
65
69
|
fakeDelegate.didDiscardCalled = NO;
|
|
66
|
-
|
|
67
|
-
if(fakeEditor.isEditing) fakeEditor.commitEditing();
|
|
68
70
|
}
|
|
69
71
|
|
|
70
72
|
module('SC.InlineEditable.discardEditing');
|
data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js
CHANGED
|
@@ -62,13 +62,13 @@ view = SC.View.create(SC.InlineEditable, {
|
|
|
62
62
|
});
|
|
63
63
|
|
|
64
64
|
function reset() {
|
|
65
|
+
if(fakeEditor.isEditing) fakeEditor.discardEditing();
|
|
66
|
+
|
|
65
67
|
fakeDelegate.shouldBeginCalled = NO;
|
|
66
68
|
fakeDelegate.acquireEditorCalled = NO;
|
|
67
69
|
fakeEditor.beginEditingCalled = NO;
|
|
68
70
|
fakeDelegate.willBeginCalled = NO;
|
|
69
71
|
fakeDelegate.didBeginCalled = NO;
|
|
70
|
-
|
|
71
|
-
if(fakeEditor.isEditing) fakeEditor.discardEditing();
|
|
72
72
|
};
|
|
73
73
|
|
|
74
74
|
module("SC.InlineEditor.beginEditing");
|
data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js
CHANGED
|
@@ -32,6 +32,8 @@ fakeDelegate = {
|
|
|
32
32
|
inlineEditorDidCommitEditing: function() {
|
|
33
33
|
this.didCommitCalled = YES;
|
|
34
34
|
ok(this.willCommitCalled, "willCommit called before didCommit");
|
|
35
|
+
|
|
36
|
+
view._endEditing();
|
|
35
37
|
}
|
|
36
38
|
};
|
|
37
39
|
|
|
@@ -58,13 +60,13 @@ view = SC.View.create(SC.InlineEditable, {
|
|
|
58
60
|
});
|
|
59
61
|
|
|
60
62
|
function reset() {
|
|
63
|
+
if(fakeEditor.isEditing) fakeEditor.discardEditing();
|
|
64
|
+
|
|
61
65
|
fakeDelegate.shouldCommitCalled = NO;
|
|
62
66
|
fakeEditor.commitEditingCalled = NO;
|
|
63
67
|
|
|
64
68
|
fakeDelegate.willCommitCalled = NO;
|
|
65
69
|
fakeDelegate.didCommitCalled = NO;
|
|
66
|
-
|
|
67
|
-
if(fakeEditor.isEditing) fakeEditor.discardEditing();
|
|
68
70
|
}
|
|
69
71
|
|
|
70
72
|
module('SC.InlineEditable.commitEditing');
|
data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js
CHANGED
|
@@ -32,6 +32,8 @@ fakeDelegate = {
|
|
|
32
32
|
inlineEditorDidDiscardEditing: function() {
|
|
33
33
|
this.didDiscardCalled = YES;
|
|
34
34
|
ok(this.willDiscardCalled, "willDiscard called before didDiscard");
|
|
35
|
+
|
|
36
|
+
view._endEditing();
|
|
35
37
|
}
|
|
36
38
|
};
|
|
37
39
|
|
|
@@ -58,13 +60,13 @@ view = SC.View.create(SC.InlineEditable, {
|
|
|
58
60
|
});
|
|
59
61
|
|
|
60
62
|
function reset() {
|
|
63
|
+
if(fakeEditor.isEditing) fakeEditor.commitEditing();
|
|
64
|
+
|
|
61
65
|
fakeDelegate.shouldDiscardCalled = NO;
|
|
62
66
|
fakeEditor.discardEditingCalled = NO;
|
|
63
67
|
|
|
64
68
|
fakeDelegate.willDiscardCalled = NO;
|
|
65
69
|
fakeDelegate.didDiscardCalled = NO;
|
|
66
|
-
|
|
67
|
-
if(fakeEditor.isEditing) fakeEditor.commitEditing();
|
|
68
70
|
}
|
|
69
71
|
|
|
70
72
|
module('SC.InlineEditable.discardEditing');
|
|
@@ -99,8 +99,8 @@ function runChecks(element, offsetAdjust, values) {
|
|
|
99
99
|
top = jqOffset.top;
|
|
100
100
|
|
|
101
101
|
equals(SC.pointInElement({x: left + offsetAdjust, y: top + offsetAdjust}, element, 'padding'), values[0], 'point {left: %@, top: %@} within the element\'s padding'.fmt(offsetAdjust, offsetAdjust));
|
|
102
|
-
equals(SC.pointInElement({x: left + offsetAdjust, y: top + offsetAdjust}, element, 'border'), values[1], 'point {left: %@, top: %@} within the element\'s
|
|
103
|
-
equals(SC.pointInElement({x: left + offsetAdjust, y: top + offsetAdjust}, element, 'margin'), values[2], 'point {left: %@, top: %@} within the element\'s
|
|
102
|
+
equals(SC.pointInElement({x: left + offsetAdjust, y: top + offsetAdjust}, element, 'border'), values[1], 'point {left: %@, top: %@} within the element\'s border'.fmt(offsetAdjust, offsetAdjust));
|
|
103
|
+
equals(SC.pointInElement({x: left + offsetAdjust, y: top + offsetAdjust}, element, 'margin'), values[2], 'point {left: %@, top: %@} within the element\'s margin'.fmt(offsetAdjust, offsetAdjust));
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
test("A plain child element", function() {
|
|
@@ -152,14 +152,6 @@ test("Check that all labels have the right classes and styles set", function() {
|
|
|
152
152
|
|
|
153
153
|
});
|
|
154
154
|
|
|
155
|
-
test("Default styles are set correctly in CSS"
|
|
156
|
-
//, function() {
|
|
157
|
-
// document.defaultView.getComputedStyle fails when we're running framework-level tests
|
|
158
|
-
// var viewElem=pane.view('basic').$();
|
|
159
|
-
// ok(viewElem.css('textAlign') === 'left', 'centered should have center textAlign');
|
|
160
|
-
// ok(viewElem.css('fontWeight') === 'normal', 'bold view should have bold fontWeight');
|
|
161
|
-
//}
|
|
162
|
-
);
|
|
163
155
|
|
|
164
156
|
test("Check that the title is set or not and if it is in the appropriate element", function() {
|
|
165
157
|
var viewElem=pane.view('basic').$();
|
|
@@ -8,122 +8,99 @@
|
|
|
8
8
|
/*global module test htmlbody ok equals same stop start */
|
|
9
9
|
(function() {
|
|
10
10
|
var pane = SC.ControlTestPane.design()
|
|
11
|
-
.add("empty", SC.TextFieldView, {
|
|
12
|
-
hint: "Full Name",
|
|
11
|
+
.add("empty", SC.TextFieldView, {
|
|
12
|
+
hint: "Full Name",
|
|
13
13
|
value: ''
|
|
14
14
|
})
|
|
15
|
-
|
|
16
|
-
.add("with value", SC.TextFieldView, {
|
|
17
|
-
hint: "Full Name",
|
|
15
|
+
|
|
16
|
+
.add("with value", SC.TextFieldView, {
|
|
17
|
+
hint: "Full Name",
|
|
18
18
|
value: 'John Doe'
|
|
19
19
|
})
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
.add("password", SC.TextFieldView, {
|
|
22
22
|
isPassword: YES,
|
|
23
23
|
value: "I'm so secret"
|
|
24
24
|
})
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
.add("password-hint", SC.TextFieldView, {
|
|
27
27
|
hint: "Passwerd",
|
|
28
28
|
isPassword: YES,
|
|
29
29
|
value: "I'm so secret"
|
|
30
30
|
})
|
|
31
|
-
|
|
32
|
-
.add("disabled - empty", SC.TextFieldView, {
|
|
33
|
-
hint: "Full Name",
|
|
31
|
+
|
|
32
|
+
.add("disabled - empty", SC.TextFieldView, {
|
|
33
|
+
hint: "Full Name",
|
|
34
34
|
value: null,
|
|
35
35
|
isEnabled: NO,
|
|
36
36
|
isEditable: NO
|
|
37
37
|
})
|
|
38
|
-
|
|
39
|
-
.add("disabled - with value", SC.TextFieldView, {
|
|
40
|
-
hint: "Full Name",
|
|
38
|
+
|
|
39
|
+
.add("disabled - with value", SC.TextFieldView, {
|
|
40
|
+
hint: "Full Name",
|
|
41
41
|
value: 'John Doe',
|
|
42
42
|
isEnabled: NO,
|
|
43
43
|
isEditable: NO
|
|
44
44
|
})
|
|
45
45
|
|
|
46
|
-
.add("enabled - not editable - with value", SC.TextFieldView, {
|
|
47
|
-
hint: "Full Name",
|
|
46
|
+
.add("enabled - not editable - with value", SC.TextFieldView, {
|
|
47
|
+
hint: "Full Name",
|
|
48
48
|
value: 'John Doe',
|
|
49
49
|
isEnabled: YES,
|
|
50
50
|
isEditable: NO
|
|
51
51
|
})
|
|
52
|
-
|
|
53
|
-
.add("textarea - empty", SC.TextFieldView, {
|
|
54
|
-
hint: "Full Name",
|
|
52
|
+
|
|
53
|
+
.add("textarea - empty", SC.TextFieldView, {
|
|
54
|
+
hint: "Full Name",
|
|
55
55
|
value: '',
|
|
56
56
|
isTextArea: YES
|
|
57
57
|
})
|
|
58
|
-
|
|
59
|
-
.add("textarea - with value", SC.TextFieldView, {
|
|
60
|
-
hint: "Full Name",
|
|
58
|
+
|
|
59
|
+
.add("textarea - with value", SC.TextFieldView, {
|
|
60
|
+
hint: "Full Name",
|
|
61
61
|
value: 'John Doe',
|
|
62
62
|
isTextArea: YES
|
|
63
63
|
})
|
|
64
|
-
|
|
65
|
-
.add("textarea - disabled - empty", SC.TextFieldView, {
|
|
66
|
-
hint: "Full Name",
|
|
64
|
+
|
|
65
|
+
.add("textarea - disabled - empty", SC.TextFieldView, {
|
|
66
|
+
hint: "Full Name",
|
|
67
67
|
value: '',
|
|
68
68
|
isTextArea: YES,
|
|
69
69
|
isEnabled: NO
|
|
70
70
|
})
|
|
71
|
-
|
|
72
|
-
.add("textarea - disabled - with value", SC.TextFieldView, {
|
|
73
|
-
hint: "Full Name",
|
|
74
|
-
value: 'John Doe',
|
|
75
|
-
isTextArea: YES,
|
|
76
|
-
isEnabled: NO
|
|
77
|
-
})
|
|
78
|
-
|
|
79
|
-
.add("aria-role", SC.TextFieldView, {
|
|
80
|
-
hint: "Full Name",
|
|
81
|
-
value: 'John Doe',
|
|
82
|
-
isTextArea: YES,
|
|
83
|
-
isEnabled: YES
|
|
84
|
-
})
|
|
85
71
|
|
|
86
|
-
.add("
|
|
87
|
-
hint: "Full Name",
|
|
88
|
-
value: 'John Doe',
|
|
89
|
-
isTextArea: YES,
|
|
90
|
-
isEnabled: YES
|
|
91
|
-
})
|
|
92
|
-
|
|
93
|
-
.add("aria-disabled", SC.TextFieldView, {
|
|
94
|
-
hint: "Full Name",
|
|
72
|
+
.add("textarea - disabled - with value", SC.TextFieldView, {
|
|
73
|
+
hint: "Full Name",
|
|
95
74
|
value: 'John Doe',
|
|
96
75
|
isTextArea: YES,
|
|
97
76
|
isEnabled: NO
|
|
98
77
|
})
|
|
99
78
|
|
|
79
|
+
|
|
100
80
|
.add("aria-readonly", SC.TextFieldView, {
|
|
101
|
-
hint: "Full Name",
|
|
81
|
+
hint: "Full Name",
|
|
102
82
|
value: 'John Doe',
|
|
103
83
|
isTextArea: YES,
|
|
104
84
|
isEnabled: YES,
|
|
105
85
|
isEditable: NO
|
|
106
|
-
})
|
|
107
|
-
|
|
108
|
-
.add("aria-invalid", SC.TextFieldView, {
|
|
109
|
-
value: SC.Error.create({errorValue:'Error Message'}),
|
|
110
|
-
isEnabled: YES
|
|
111
86
|
});
|
|
112
|
-
|
|
87
|
+
|
|
88
|
+
|
|
113
89
|
pane.show(); // add a test to show the test pane
|
|
114
90
|
|
|
115
91
|
// ..........................................................
|
|
116
92
|
// VERIFY STANDARD STATES
|
|
117
|
-
//
|
|
93
|
+
//
|
|
118
94
|
pane.verifyEmpty = function verifyEmpty(view, expectedHint) {
|
|
119
95
|
var input = view.$('input');
|
|
120
96
|
var layer = view.$();
|
|
121
|
-
|
|
97
|
+
|
|
122
98
|
ok(!layer.hasClass('not-empty'), 'layer should not have not-empty class');
|
|
123
|
-
if(SC.browser.
|
|
99
|
+
if(SC.browser.isWebkit || (SC.browser.isMozilla &&
|
|
100
|
+
SC.browser.compare(SC.browser.engineVersion, '2.0') >= 0)) equals(input.val(), '', 'input should have empty value');
|
|
124
101
|
else equals(input.val(), expectedHint, 'input should have expected hint as value');
|
|
125
102
|
if (expectedHint) {
|
|
126
|
-
var hint = view.$('.
|
|
103
|
+
var hint = view.$('.hint');
|
|
127
104
|
if (hint.length===1) {
|
|
128
105
|
hint = hint.text();
|
|
129
106
|
} else {
|
|
@@ -137,12 +114,12 @@ pane.verifyEmpty = function verifyEmpty(view, expectedHint) {
|
|
|
137
114
|
pane.verifyNotEmpty = function verifyNotEmpty(view, expectedValue, expectedHint) {
|
|
138
115
|
var input = view.$('input');
|
|
139
116
|
var layer = view.$();
|
|
140
|
-
|
|
117
|
+
|
|
141
118
|
ok(layer.hasClass('not-empty'), 'layer should have not-empty class');
|
|
142
119
|
equals(input.val(), expectedValue, 'input should have value');
|
|
143
|
-
|
|
120
|
+
|
|
144
121
|
if (expectedHint) {
|
|
145
|
-
var hint = view.$('.
|
|
122
|
+
var hint = view.$('.hint');
|
|
146
123
|
if (hint.length===1) {
|
|
147
124
|
hint = hint.text();
|
|
148
125
|
} else {
|
|
@@ -156,7 +133,7 @@ pane.verifyNotEmpty = function verifyNotEmpty(view, expectedValue, expectedHint)
|
|
|
156
133
|
pane.verifyDisabled = function verifyDisabled(view, isDisabled) {
|
|
157
134
|
var layer = view.$();
|
|
158
135
|
var input = view.$('input');
|
|
159
|
-
|
|
136
|
+
|
|
160
137
|
if (isDisabled) {
|
|
161
138
|
ok(layer.hasClass('disabled'), 'layer should have disabled class');
|
|
162
139
|
ok(input.attr('disabled'), 'input should have disabled attr');
|
|
@@ -168,7 +145,7 @@ pane.verifyDisabled = function verifyDisabled(view, isDisabled) {
|
|
|
168
145
|
|
|
169
146
|
pane.verifyReadOnly = function verifyReadonly(view, isReadOnly) {
|
|
170
147
|
var input = view.$('input');
|
|
171
|
-
|
|
148
|
+
|
|
172
149
|
if(isReadOnly) {
|
|
173
150
|
ok(input.attr('readOnly'), 'input should have readOnly attr');
|
|
174
151
|
} else {
|
|
@@ -178,7 +155,7 @@ pane.verifyReadOnly = function verifyReadonly(view, isReadOnly) {
|
|
|
178
155
|
|
|
179
156
|
// ..........................................................
|
|
180
157
|
// TEST INITIAL STATES
|
|
181
|
-
//
|
|
158
|
+
//
|
|
182
159
|
|
|
183
160
|
module('SC.TextFieldView ui', pane.standardSetup());
|
|
184
161
|
|
|
@@ -250,11 +227,11 @@ test("textarea - disabled - with value", function() {
|
|
|
250
227
|
|
|
251
228
|
// ..........................................................
|
|
252
229
|
// TEST CHANGING VIEWS
|
|
253
|
-
//
|
|
230
|
+
//
|
|
254
231
|
|
|
255
232
|
test("changing value from empty -> value", function() {
|
|
256
233
|
var view = pane.view('empty');
|
|
257
|
-
|
|
234
|
+
|
|
258
235
|
// test changing value updates like it should
|
|
259
236
|
SC.RunLoop.begin();
|
|
260
237
|
view.set('value', 'John Doe');
|
|
@@ -262,9 +239,9 @@ test("changing value from empty -> value", function() {
|
|
|
262
239
|
pane.verifyNotEmpty(view, 'John Doe', 'Full Name');
|
|
263
240
|
});
|
|
264
241
|
|
|
265
|
-
test("disabling view", function() {
|
|
242
|
+
test("disabling view", function() {
|
|
266
243
|
var view = pane.view('empty');
|
|
267
|
-
|
|
244
|
+
|
|
268
245
|
// test changing enabled state updates like it should
|
|
269
246
|
SC.RunLoop.begin();
|
|
270
247
|
view.set('isEnabled', NO);
|
|
@@ -309,6 +286,38 @@ test("changing isEditable", function() {
|
|
|
309
286
|
pane.verifyReadOnly(view, YES);
|
|
310
287
|
});
|
|
311
288
|
|
|
289
|
+
test("changing value from not a textarea to a textarea", function() {
|
|
290
|
+
// test the the SC.Event for 'change' gets wired up properly to the DOM element when it changes from input to textarea
|
|
291
|
+
var view = pane.view('empty');
|
|
292
|
+
SC.RunLoop.begin();
|
|
293
|
+
view.set('value', 'Original');
|
|
294
|
+
view.set('isTextArea', YES);
|
|
295
|
+
SC.RunLoop.end();
|
|
296
|
+
|
|
297
|
+
var $textarea = view.$('textarea');
|
|
298
|
+
|
|
299
|
+
SC.Event.trigger($textarea, 'focus');
|
|
300
|
+
|
|
301
|
+
// simulate typing a letter
|
|
302
|
+
SC.Event.trigger($textarea, 'keydown');
|
|
303
|
+
$textarea.val("My New Value");
|
|
304
|
+
SC.Event.trigger($textarea, 'keyup');
|
|
305
|
+
SC.Event.trigger($textarea, 'change');
|
|
306
|
+
view.fieldValueDidChange();
|
|
307
|
+
|
|
308
|
+
// wait a little bit to let text field propogate changes
|
|
309
|
+
stop();
|
|
310
|
+
|
|
311
|
+
setTimeout(function() {
|
|
312
|
+
start();
|
|
313
|
+
equals(view.get("value"), "My New Value", "SC.Event for change should get wired up properly");
|
|
314
|
+
}, 100);
|
|
315
|
+
|
|
316
|
+
SC.RunLoop.begin();
|
|
317
|
+
SC.RunLoop.end();
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
|
|
312
321
|
if (!SC.browser.isIE && !SC.platform.input.placeholder) {
|
|
313
322
|
test("Changing value to null -- password field", function() {
|
|
314
323
|
var view = pane.view('password-hint'),
|
|
@@ -325,13 +334,13 @@ if (!SC.browser.isIE && !SC.platform.input.placeholder) {
|
|
|
325
334
|
|
|
326
335
|
// ..........................................................
|
|
327
336
|
// TEST SELECTION SUPPORT
|
|
328
|
-
//
|
|
337
|
+
//
|
|
329
338
|
|
|
330
|
-
test("Setting the selection to a null value should fail", function() {
|
|
339
|
+
test("Setting the selection to a null value should fail", function() {
|
|
331
340
|
var view = pane.view('with value');
|
|
332
341
|
var fieldElement = view.$input()[0];
|
|
333
342
|
fieldElement.size = 10; // Avoid Firefox 3.5 issue
|
|
334
|
-
|
|
343
|
+
|
|
335
344
|
var thrownException = null;
|
|
336
345
|
try {
|
|
337
346
|
view.set('selection', null);
|
|
@@ -345,11 +354,11 @@ test("Setting the selection to a null value should fail", function() {
|
|
|
345
354
|
}
|
|
346
355
|
});
|
|
347
356
|
|
|
348
|
-
test("Setting the selection to a non-SC.TextSelection value should fail", function() {
|
|
357
|
+
test("Setting the selection to a non-SC.TextSelection value should fail", function() {
|
|
349
358
|
var view = pane.view('with value');
|
|
350
359
|
var fieldElement = view.$input()[0];
|
|
351
360
|
fieldElement.size = 10; // Avoid Firefox 3.5 issue
|
|
352
|
-
|
|
361
|
+
|
|
353
362
|
var thrownException = null;
|
|
354
363
|
try {
|
|
355
364
|
view.set('selection', {start: 0, end: 0});
|
|
@@ -363,15 +372,15 @@ test("Setting the selection to a non-SC.TextSelection value should fail", functi
|
|
|
363
372
|
}
|
|
364
373
|
});
|
|
365
374
|
|
|
366
|
-
test("Setting and then getting back the selection", function() {
|
|
375
|
+
test("Setting and then getting back the selection", function() {
|
|
367
376
|
var view = pane.view('with value');
|
|
368
377
|
var fieldElement = view.$input()[0];
|
|
369
378
|
fieldElement.focus();
|
|
370
379
|
fieldElement.size = 10; // Avoid Firefox 3.5 issue
|
|
371
|
-
|
|
380
|
+
|
|
372
381
|
var newSelection = SC.TextSelection.create({start:2, end:5});
|
|
373
382
|
view.set('selection', newSelection);
|
|
374
|
-
|
|
383
|
+
|
|
375
384
|
var fetchedSelection = view.get('selection');
|
|
376
385
|
ok(fetchedSelection.get('start') === 2, 'the selection should start at index 2');
|
|
377
386
|
ok(fetchedSelection.get('end') === 5, 'the selection should end at index 4');
|
|
@@ -380,11 +389,11 @@ test("Setting and then getting back the selection", function() {
|
|
|
380
389
|
|
|
381
390
|
// ..........................................................
|
|
382
391
|
// TEST ACCESSORY VIEWS
|
|
383
|
-
//
|
|
392
|
+
//
|
|
384
393
|
|
|
385
|
-
test("Adding left accessory view", function() {
|
|
394
|
+
test("Adding left accessory view", function() {
|
|
386
395
|
var view = pane.view('with value');
|
|
387
|
-
|
|
396
|
+
|
|
388
397
|
// test adding accessory view adds the view like it should
|
|
389
398
|
SC.RunLoop.begin();
|
|
390
399
|
var accessoryView = SC.View.create({
|
|
@@ -396,14 +405,14 @@ test("Adding left accessory view", function() {
|
|
|
396
405
|
ok(view.get('leftAccessoryView') === accessoryView, 'left accessory view should be set to ' + accessoryView.toString());
|
|
397
406
|
ok(view.get('childViews').length === 1, 'there should only be one child view');
|
|
398
407
|
ok(view.get('childViews')[0] === accessoryView, 'first child view should be set to ' + accessoryView.toString());
|
|
399
|
-
|
|
400
|
-
|
|
408
|
+
|
|
409
|
+
|
|
401
410
|
// The hint and padding elements should automatically have their 'left'
|
|
402
411
|
// values set to the accessory view's offset + width
|
|
403
412
|
// (18 = 2 left offset + 16 width)
|
|
404
413
|
var paddingElement = view.$('.padding')[0];
|
|
405
414
|
ok(paddingElement.style.left === '18px', 'padding element should get 18px left');
|
|
406
|
-
|
|
415
|
+
|
|
407
416
|
// Test removing the accessory view.
|
|
408
417
|
SC.RunLoop.begin();
|
|
409
418
|
view.set('leftAccessoryView', null);
|
|
@@ -412,9 +421,9 @@ test("Adding left accessory view", function() {
|
|
|
412
421
|
ok(!paddingElement.style.left, 'after removing the left accessory view the padding element should have no left style');
|
|
413
422
|
});
|
|
414
423
|
|
|
415
|
-
test("Adding left accessory view changes style -- using design()", function() {
|
|
424
|
+
test("Adding left accessory view changes style -- using design()", function() {
|
|
416
425
|
var view = pane.view('with value');
|
|
417
|
-
|
|
426
|
+
|
|
418
427
|
// test adding accessory view adds the view like it should
|
|
419
428
|
SC.RunLoop.begin();
|
|
420
429
|
var accessoryView = SC.View.design({
|
|
@@ -428,7 +437,7 @@ test("Adding left accessory view changes style -- using design()", function() {
|
|
|
428
437
|
// (18 = 2 left offset + 16 width)
|
|
429
438
|
var paddingElement = view.$('.padding')[0];
|
|
430
439
|
ok(paddingElement.style.left === '18px', 'padding element should get 18px left');
|
|
431
|
-
|
|
440
|
+
|
|
432
441
|
// Test removing the accessory view.
|
|
433
442
|
SC.RunLoop.begin();
|
|
434
443
|
view.set('leftAccessoryView', null);
|
|
@@ -436,9 +445,9 @@ test("Adding left accessory view changes style -- using design()", function() {
|
|
|
436
445
|
ok(!paddingElement.style.left, 'after removing the left accessory view the padding element should have no left style');
|
|
437
446
|
});
|
|
438
447
|
|
|
439
|
-
test("Adding right accessory view", function() {
|
|
448
|
+
test("Adding right accessory view", function() {
|
|
440
449
|
var view = pane.view('with value');
|
|
441
|
-
|
|
450
|
+
|
|
442
451
|
// test adding accessory view adds the view like it should
|
|
443
452
|
SC.RunLoop.begin();
|
|
444
453
|
var accessoryView = SC.View.create({
|
|
@@ -450,15 +459,15 @@ test("Adding right accessory view", function() {
|
|
|
450
459
|
ok(view.get('rightAccessoryView') === accessoryView, 'right accessory view should be set to ' + accessoryView.toString());
|
|
451
460
|
ok(view.get('childViews').length === 1, 'there should only be one child view');
|
|
452
461
|
ok(view.get('childViews')[0] === accessoryView, 'first child view should be set to ' + accessoryView.toString());
|
|
453
|
-
|
|
454
|
-
|
|
462
|
+
|
|
463
|
+
|
|
455
464
|
// The hint and padding elements should automatically have their 'right'
|
|
456
465
|
// values set to the accessory view's offset + width
|
|
457
466
|
// (20 = 3 right offset + 17 width)
|
|
458
467
|
var paddingElement = view.$('.padding')[0];
|
|
459
468
|
ok(paddingElement.style.right === '20px', 'padding element should get 20px right');
|
|
460
|
-
|
|
461
|
-
|
|
469
|
+
|
|
470
|
+
|
|
462
471
|
// If a right accessory view is set with only 'left' (and not 'right')
|
|
463
472
|
// defined in its layout, 'left' should be cleared out and 'right' should
|
|
464
473
|
// be set to 0.
|
|
@@ -468,11 +477,11 @@ test("Adding right accessory view", function() {
|
|
|
468
477
|
});
|
|
469
478
|
view.set('rightAccessoryView', accessoryView);
|
|
470
479
|
SC.RunLoop.end();
|
|
471
|
-
|
|
480
|
+
|
|
472
481
|
ok(view.get('rightAccessoryView').get('layout').left === null, "right accessory view created with 'left' rather than 'right' in layout should have layout.left set to null");
|
|
473
482
|
ok(view.get('rightAccessoryView').get('layout').right === 0, "right accessory view created with 'left' rather than 'right' in layout should have layout.right set to 0");
|
|
474
|
-
|
|
475
|
-
|
|
483
|
+
|
|
484
|
+
|
|
476
485
|
// Test removing the accessory view.
|
|
477
486
|
SC.RunLoop.begin();
|
|
478
487
|
view.set('rightAccessoryView', null);
|
|
@@ -481,9 +490,9 @@ test("Adding right accessory view", function() {
|
|
|
481
490
|
ok(!paddingElement.style.right, 'after removing the right accessory view the padding element should have no right style');
|
|
482
491
|
});
|
|
483
492
|
|
|
484
|
-
test("Adding right accessory view changes style -- using design()", function() {
|
|
493
|
+
test("Adding right accessory view changes style -- using design()", function() {
|
|
485
494
|
var view = pane.view('with value');
|
|
486
|
-
|
|
495
|
+
|
|
487
496
|
// test adding accessory view adds the view like it should
|
|
488
497
|
SC.RunLoop.begin();
|
|
489
498
|
var accessoryView = SC.View.design({
|
|
@@ -496,8 +505,8 @@ test("Adding right accessory view changes style -- using design()", function() {
|
|
|
496
505
|
// values set to the accessory view's offset + width
|
|
497
506
|
// (20 = 3 right offset + 17 width)
|
|
498
507
|
var paddingElement = view.$('.padding')[0];
|
|
499
|
-
ok(paddingElement.style.right === '20px', 'padding element should get 20px right');
|
|
500
|
-
|
|
508
|
+
ok(paddingElement.style.right === '20px', 'padding element should get 20px right');
|
|
509
|
+
|
|
501
510
|
// Test removing the accessory view.
|
|
502
511
|
SC.RunLoop.begin();
|
|
503
512
|
view.set('rightAccessoryView', null);
|
|
@@ -506,9 +515,9 @@ test("Adding right accessory view changes style -- using design()", function() {
|
|
|
506
515
|
});
|
|
507
516
|
|
|
508
517
|
|
|
509
|
-
test("Adding both left and right accessory views", function() {
|
|
518
|
+
test("Adding both left and right accessory views", function() {
|
|
510
519
|
var view = pane.view('with value');
|
|
511
|
-
|
|
520
|
+
|
|
512
521
|
// test adding accessory view adds the view like it should
|
|
513
522
|
SC.RunLoop.begin();
|
|
514
523
|
var leftAccessoryView = SC.View.create({
|
|
@@ -522,8 +531,8 @@ test("Adding both left and right accessory views", function() {
|
|
|
522
531
|
SC.RunLoop.end();
|
|
523
532
|
|
|
524
533
|
ok(view.get('childViews').length === 2, 'we should have two child views since we added both a left and a right accessory view');
|
|
525
|
-
|
|
526
|
-
|
|
534
|
+
|
|
535
|
+
|
|
527
536
|
// The hint and padding elements should automatically have their 'left' and
|
|
528
537
|
// 'right' values set to the accessory views' offset + width
|
|
529
538
|
// * left: 18 = 2 left offset + 16 width)
|
|
@@ -531,8 +540,8 @@ test("Adding both left and right accessory views", function() {
|
|
|
531
540
|
var paddingElement = view.$('.padding')[0];
|
|
532
541
|
ok(paddingElement.style.left === '18px', 'padding element should get 18px left');
|
|
533
542
|
ok(paddingElement.style.right === '20px', 'padding element should get 20px right');
|
|
534
|
-
|
|
535
|
-
|
|
543
|
+
|
|
544
|
+
|
|
536
545
|
// Test removing the accessory views.
|
|
537
546
|
SC.RunLoop.begin();
|
|
538
547
|
view.set('rightAccessoryView', null);
|
|
@@ -546,9 +555,9 @@ test("Adding both left and right accessory views", function() {
|
|
|
546
555
|
ok(!paddingElement.style.left, 'after removing the left accessory view the padding element should have no left style');
|
|
547
556
|
});
|
|
548
557
|
|
|
549
|
-
test("Adding both left and right accessory views changes style -- using design()", function() {
|
|
558
|
+
test("Adding both left and right accessory views changes style -- using design()", function() {
|
|
550
559
|
var view = pane.view('with value');
|
|
551
|
-
|
|
560
|
+
|
|
552
561
|
// test adding accessory view adds the view like it should
|
|
553
562
|
SC.RunLoop.begin();
|
|
554
563
|
var leftAccessoryView = SC.View.design({
|
|
@@ -559,8 +568,8 @@ test("Adding both left and right accessory views changes style -- using design()
|
|
|
559
568
|
layout: { top:1, right:3, width:17, height:16 }
|
|
560
569
|
});
|
|
561
570
|
view.set('rightAccessoryView', rightAccessoryView);
|
|
562
|
-
SC.RunLoop.end();
|
|
563
|
-
|
|
571
|
+
SC.RunLoop.end();
|
|
572
|
+
|
|
564
573
|
// The hint and padding elements should automatically have their 'left' and
|
|
565
574
|
// 'right' values set to the accessory views' offset + width
|
|
566
575
|
// * left: 18 = 2 left offset + 16 width)
|
|
@@ -568,8 +577,8 @@ test("Adding both left and right accessory views changes style -- using design()
|
|
|
568
577
|
var paddingElement = view.$('.padding')[0];
|
|
569
578
|
ok(paddingElement.style.left === '18px', 'padding element should get 18px left');
|
|
570
579
|
ok(paddingElement.style.right === '20px', 'padding element should get 20px right');
|
|
571
|
-
|
|
572
|
-
|
|
580
|
+
|
|
581
|
+
|
|
573
582
|
// Test removing the accessory views.
|
|
574
583
|
SC.RunLoop.begin();
|
|
575
584
|
view.set('rightAccessoryView', null);
|
|
@@ -585,31 +594,31 @@ test("Adding both left and right accessory views changes style -- using design()
|
|
|
585
594
|
|
|
586
595
|
// ..........................................................
|
|
587
596
|
// TEST EVENTS
|
|
588
|
-
//
|
|
597
|
+
//
|
|
589
598
|
|
|
590
599
|
test("focus and blurring text field", function() {
|
|
591
600
|
var view = pane.view('empty');
|
|
592
601
|
var input = view.$('input');
|
|
593
|
-
|
|
602
|
+
|
|
594
603
|
// attempt to focus...
|
|
595
604
|
SC.Event.trigger(input, 'focus');
|
|
596
|
-
|
|
605
|
+
|
|
597
606
|
// verify editing state changed...
|
|
598
607
|
ok(view.get('isEditing'), 'view.isEditing should be YES');
|
|
599
608
|
ok(view.$().hasClass('focus'), 'view layer should have focus class');
|
|
600
|
-
|
|
609
|
+
|
|
601
610
|
// simulate typing a letter
|
|
602
611
|
SC.Event.trigger(input, 'keydown');
|
|
603
612
|
SC.Event.trigger(input, 'keyup');
|
|
604
613
|
input.val('f');
|
|
605
614
|
SC.Event.trigger(input, 'change');
|
|
606
|
-
|
|
607
|
-
// wait a little bit to let text field
|
|
615
|
+
|
|
616
|
+
// wait a little bit to let text field propagate changes
|
|
608
617
|
stop();
|
|
609
|
-
|
|
618
|
+
|
|
610
619
|
setTimeout(function() {
|
|
611
620
|
start();
|
|
612
|
-
|
|
621
|
+
|
|
613
622
|
equals(view.get('value'), 'f', 'view should have new value');
|
|
614
623
|
ok(view.$().hasClass('not-empty'), 'should have not-empty class');
|
|
615
624
|
|
|
@@ -619,8 +628,42 @@ test("focus and blurring text field", function() {
|
|
|
619
628
|
// verify editing state changed...
|
|
620
629
|
ok(!view.get('isEditing'), 'view.isEditing should be NO');
|
|
621
630
|
ok(!view.$().hasClass('focus'), 'view layer should NOT have focus class');
|
|
622
|
-
}, 100);
|
|
623
|
-
|
|
631
|
+
}, 100);
|
|
632
|
+
|
|
633
|
+
});
|
|
634
|
+
|
|
635
|
+
test("focus and blur an empty text field", function() {
|
|
636
|
+
var view = pane.view('empty');
|
|
637
|
+
var input = view.$('input');
|
|
638
|
+
|
|
639
|
+
// verify the field is empty and the hint is properly set
|
|
640
|
+
pane.verifyEmpty(view, 'Full Name');
|
|
641
|
+
|
|
642
|
+
// focus and blur the text field
|
|
643
|
+
SC.Event.trigger(input, 'focus');
|
|
644
|
+
SC.Event.trigger(input, 'blur');
|
|
645
|
+
|
|
646
|
+
// field should still be still be empty with hint properly set
|
|
647
|
+
pane.verifyEmpty(view, 'Full Name');
|
|
648
|
+
});
|
|
649
|
+
|
|
650
|
+
test("loosing first responder should blur", function() {
|
|
651
|
+
var view = pane.view('empty');
|
|
652
|
+
var input = view.$('input');
|
|
653
|
+
var testResponder = SC.Responder.create(SC.ResponderContext, {});
|
|
654
|
+
|
|
655
|
+
// preliminary setup
|
|
656
|
+
view.get('pane').becomeKeyPane();
|
|
657
|
+
SC.Event.trigger(input, 'focus');
|
|
658
|
+
|
|
659
|
+
// verify it did receive focus
|
|
660
|
+
ok(view.get('focused'), 'view should have focus');
|
|
661
|
+
|
|
662
|
+
// tell the pane to make our test responder the first responder
|
|
663
|
+
view.get('pane').makeFirstResponder(testResponder);
|
|
664
|
+
|
|
665
|
+
// verify it no longer has focus
|
|
666
|
+
ok(!view.get('focused'), 'view should no longer have focus');
|
|
624
667
|
});
|
|
625
668
|
|
|
626
669
|
test("editing a field should not change the cursor position", function() {
|
|
@@ -636,33 +679,4 @@ test("editing a field should not change the cursor position", function() {
|
|
|
636
679
|
ok(selection.get('start') == 2 && selection.get('end') == 3, 'cursor position should be unchanged');
|
|
637
680
|
});
|
|
638
681
|
|
|
639
|
-
test("should have role as textbox", function() {
|
|
640
|
-
var view = pane.view('aria-role');
|
|
641
|
-
var label = view.$();
|
|
642
|
-
equals(label.attr('role'), 'textbox', 'role should be textbox');
|
|
643
|
-
});
|
|
644
|
-
|
|
645
|
-
test("should have aria-multiline as YES", function() {
|
|
646
|
-
var view = pane.view('aria-multiline');
|
|
647
|
-
var label = view.$();
|
|
648
|
-
equals(label.attr('aria-multiline'), 'true', 'aria-multiline should be true');
|
|
649
|
-
});
|
|
650
|
-
|
|
651
|
-
test("should have aria-disabled as YES", function() {
|
|
652
|
-
var view = pane.view('aria-disabled');
|
|
653
|
-
var label = view.$();
|
|
654
|
-
equals(label.attr('aria-disabled'), 'true', 'aria-disabled should be true');
|
|
655
|
-
});
|
|
656
|
-
|
|
657
|
-
test("should have aria-readonly as YES", function() {
|
|
658
|
-
var view = pane.view('aria-readonly');
|
|
659
|
-
var label = view.$();
|
|
660
|
-
equals(label.attr('aria-readonly'), 'true', 'aria-readonly should be true');
|
|
661
|
-
});
|
|
662
|
-
|
|
663
|
-
test("should have aria-invalid as YES", function() {
|
|
664
|
-
var view = pane.view('aria-invalid');
|
|
665
|
-
var label = view.$();
|
|
666
|
-
equals(label.attr('aria-invalid'), 'true', 'aria-invalid should be true');
|
|
667
|
-
});
|
|
668
682
|
})();
|