sproutcore 1.6.0.rc.2-x86-mingw32 → 1.6.0.1-x86-mingw32
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 +12 -0
- data/VERSION.yml +1 -1
- data/bin/sc-docs +6 -1
- data/lib/buildtasks/target.rake +1 -1
- data/lib/frameworks/sproutcore/Buildfile +5 -1
- data/lib/frameworks/sproutcore/CHANGELOG.md +175 -1
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/select.js +12 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/select_page.js +19 -5
- data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +28 -31
- data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +9 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +21 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/checkbox_support.js +6 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/text_field_support.js +26 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +12 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +25 -9
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +157 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +7 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +104 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/theme.js +3 -56
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +59 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +41 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/template_helpers/text_field_support.js +10 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +16 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +11 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +18 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +10 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +18 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template_collection.js +9 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +9 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +15 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +14 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +8 -18
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +12 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +296 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +330 -326
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +22 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +614 -614
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/data_source.js +14 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +3 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +20 -13
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +61 -46
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +30 -30
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/connectDataSource.js +31 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +1177 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +4 -63
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +7 -8
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +18 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +9 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/master_detail.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/menu.js +12 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/picker.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/toolbar.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/workspace.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +1 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +33 -22
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +20 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +10 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +34 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +14 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +40 -14
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +699 -700
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +11 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +16 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +0 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +49 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +9 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +6 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +4 -26
- data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +20 -19
- data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +249 -249
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/mixins/edit_mode.js +13 -5
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/mixins/emptiness.js +53 -37
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/render_delegates/form.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/render_delegates/form_row.js +3 -11
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/mixins/edit_mode.js +53 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/mixins/emptiness.js +114 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form.js +174 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_row.js +86 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +80 -110
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form_row.js +96 -97
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +2 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +20 -36
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +121 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +90 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/mixins/select_view_menu.js +139 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/render_delegates/select_button.js +14 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/ext/menu_resizing.js +25 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/bindings.js +43 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/check_selected.js +32 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/popup_button/menu_setup.js +40 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/popup_button/show_menu.js +45 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/select/menu_width.js +49 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/select/selected_item.js +191 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +264 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +450 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +14 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split_divider.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +9 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/thumb.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +7 -17
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +35 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/image.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +6 -6
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/favicon.ico +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +0 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/system/exception_handler.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/system/math.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +13 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +6 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +912 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +36 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +58 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +1 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +0 -15
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +25 -14
- data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +15 -9
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/flatten.js +24 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +19 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +14 -14
- data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +3 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +15 -16
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +6 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +30 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +9 -2
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +3 -1
- data/lib/frameworks/sproutcore/frameworks/testing/resources/runner.css +0 -1
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +80 -0
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/core.css +0 -4
- data/lib/frameworks/sproutcore/lib/index.rhtml +2 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +3 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list_item.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/form/form.css +9 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +3 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/picker.js +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/workspace.js +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/button.js +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/panel.js +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/progress.js +2 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/slider.js +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/well.js +1 -1
- data/lib/sproutcore/builders/base.rb +5 -1
- data/lib/sproutcore/builders/handlebars.rb +12 -1
- data/lib/sproutcore/models/target.rb +1 -9
- data/lib/sproutcore/rack/proxy.rb +238 -92
- data/lib/sproutcore/tools/docs.rb +1 -7
- data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -0
- data/spec/fixtures/builder_tests/apps/handlebars_test/{template.handlebars → templates/template.handlebars} +2 -0
- data/spec/lib/builders/handlebars_spec.rb +10 -4
- data/sproutcore.gemspec +3 -1
- metadata +73 -44
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/english.lproj/default_styles.css +0 -5
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/english.lproj/strings.js +0 -15
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_checkbox_field.js +0 -17
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_field.js +0 -17
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_label.js +0 -17
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_radio_field.js +0 -17
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_text_field.js +0 -17
data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_row.js
CHANGED
@@ -5,13 +5,93 @@
|
|
5
5
|
// ==========================================================================
|
6
6
|
|
7
7
|
/*globals Forms module test ok equals same stop start */
|
8
|
+
var pane = SC.Pane.create();
|
9
|
+
module("Forms - Form Row", {
|
10
|
+
setup: function() {
|
11
|
+
pane.append();
|
12
|
+
},
|
8
13
|
|
9
|
-
|
14
|
+
teardown: function() {
|
15
|
+
pane.remove();
|
16
|
+
}
|
17
|
+
});
|
18
|
+
|
19
|
+
// - binds content
|
20
|
+
// - sets contentValueKey, respecting _singleField
|
21
|
+
|
22
|
+
test("Binds content to child views", function() {
|
23
|
+
SC.RunLoop.begin();
|
24
|
+
var test = SC.FormRowView.create({
|
25
|
+
childViews: 'a b'.w(),
|
26
|
+
a: SC.View.create(),
|
27
|
+
b: SC.View.create({ content: "HI" })
|
28
|
+
});
|
29
|
+
var content = SC.Object.create();
|
30
|
+
test.set('content', content);
|
31
|
+
SC.RunLoop.end();
|
32
|
+
|
33
|
+
equals(test.a.get('content'), content, "Content was set on view without content");
|
34
|
+
equals(test.b.get('content'), "HI", "Content stayed the same on view with content");
|
35
|
+
});
|
36
|
+
|
37
|
+
test("Sets contentValueKey on children", function() {
|
38
|
+
SC.RunLoop.begin();
|
39
|
+
var test = SC.FormRowView.create({
|
40
|
+
childViews: 'a b'.w(),
|
41
|
+
a: SC.View.create(),
|
42
|
+
b: SC.View.create({ contentValueKey: "HI" })
|
43
|
+
});
|
44
|
+
SC.RunLoop.end();
|
45
|
+
|
46
|
+
equals(test.a.get('contentValueKey'), 'a', "contentValueKey was set on the view without one");
|
47
|
+
equals(test.b.get('contentValueKey'), "HI", "contentValueKey was not set on view with one");
|
48
|
+
});
|
49
|
+
|
50
|
+
test("Sets contentValueKey to own key for _singleField", function() {
|
51
|
+
SC.RunLoop.begin();
|
52
|
+
var test = SC.FormRowView.create({
|
53
|
+
formKey: "theFormKey",
|
54
|
+
childViews: '_singleField'.w(),
|
55
|
+
_singleField: SC.View.create()
|
56
|
+
});
|
57
|
+
SC.RunLoop.end();
|
10
58
|
|
11
|
-
|
12
|
-
test("test description", function() {
|
13
|
-
var expected = "test";
|
14
|
-
var result = "test";
|
15
|
-
equals(result, expected, "test should equal test");
|
59
|
+
equals(test._singleField.get('contentValueKey'), 'theFormKey', "contentValueKey is set to row's formKey if the view is a _singleField");
|
16
60
|
});
|
17
61
|
|
62
|
+
test("Measuring label width", function() {
|
63
|
+
SC.RunLoop.begin();
|
64
|
+
var row = SC.FormRowView.create({
|
65
|
+
label: "Hi"
|
66
|
+
});
|
67
|
+
pane.appendChild(row);
|
68
|
+
SC.RunLoop.end();
|
69
|
+
|
70
|
+
var size = row.get('rowLabelMeasuredSize');
|
71
|
+
ok(size > 0, "Size should not be 0");
|
72
|
+
|
73
|
+
SC.RunLoop.begin();
|
74
|
+
row.set('label', "Hiyo!");
|
75
|
+
SC.RunLoop.end();
|
76
|
+
|
77
|
+
var newSize = row.get('rowLabelMeasuredSize');
|
78
|
+
ok(newSize > size, "Size grew when label text did");
|
79
|
+
});
|
80
|
+
|
81
|
+
test("Creating Form Rows", function() {
|
82
|
+
var ret = SC.FormRowView.row("the label", SC.View.extend({
|
83
|
+
aProperty: YES
|
84
|
+
}), { extendedRow: YES });
|
85
|
+
|
86
|
+
ret = SC.FormRowView.create(ret);
|
87
|
+
|
88
|
+
equals(ret.extendedRow, YES, "Row was extended");
|
89
|
+
equals(ret._singleField.get('aProperty'), YES, "Property was defined on field");
|
90
|
+
equals(ret.get('label'), "the label");
|
91
|
+
|
92
|
+
ret = SC.FormRowView.row(SC.View.extend({ aProperty: YES }), { extendedRow: YES });
|
93
|
+
ret = SC.FormRowView.create(ret);
|
94
|
+
|
95
|
+
equals(ret.extendedRow, YES, "Row was extended");
|
96
|
+
equals(ret._singleField.get('aProperty'), YES, "Property was defined on field");
|
97
|
+
});
|
@@ -12,11 +12,8 @@ sc_require("views/form_row");
|
|
12
12
|
|
13
13
|
/**
|
14
14
|
@class
|
15
|
-
|
16
|
-
|
17
|
-
collection, it has a fields collection. The items referenced here are NOT
|
18
|
-
just children; they are explicity stated in the array fields, which works
|
19
|
-
just like childViews, but marks fields to be laid out automatically.
|
15
|
+
FormView lays out rows, manages their label widths, binds their
|
16
|
+
content properties, and sets up their contentValueKeys as needed.
|
20
17
|
|
21
18
|
Usually, you will place rows into the FormView:
|
22
19
|
|
@@ -32,96 +29,74 @@ sc_require("views/form_row");
|
|
32
29
|
items: ["male", "female"]
|
33
30
|
}))
|
34
31
|
|
35
|
-
The name of the row (ie. 'fullName'), is passed down to the
|
32
|
+
The name of the row (ie. 'fullName'), is passed down to the fields, and used as the key
|
36
33
|
to bind the value property to the content. In this case it will bind content.fullName to the
|
37
|
-
value property of the textFieldView.
|
38
|
-
|
39
|
-
One important thing about the field collection: It can contain any type of
|
40
|
-
view, including other FormViews or subclasses of FormView.
|
41
|
-
|
42
|
-
This is important, because this is how you make nice rows that have a
|
43
|
-
label and a field: these rows are actually subclasses of FormView itself.
|
44
|
-
|
45
|
-
Editing
|
46
|
-
-------
|
47
|
-
|
48
|
-
The form does not allow editing by default; editing must be started by calling
|
49
|
-
beginEditing.
|
34
|
+
value property of the textFieldView.
|
50
35
|
|
51
36
|
|
52
37
|
@extends SC.View
|
53
|
-
@implements SC.
|
38
|
+
@implements SC.FlowedLayout, SC.CalculatesEmptiness, SC.FormsEditMode
|
54
39
|
*/
|
55
40
|
|
56
41
|
SC.FormView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.FormsEditMode, /** @scope SC.FormView.prototype */ {
|
42
|
+
// We lay out forms vertically. Each item gets its own "row". Wrapping makes
|
43
|
+
// no sense, as the FormView should grow with each row.
|
57
44
|
layoutDirection: SC.LAYOUT_VERTICAL,
|
58
45
|
canWrap: NO,
|
59
|
-
|
60
|
-
renderDelegateName: 'formRenderDelegate',
|
61
|
-
|
62
|
-
formFlowSpacing: undefined,
|
63
|
-
formFlowSpacingDefault: { left: 5, top: 5, bottom: 5, right: 5 },
|
64
|
-
|
65
|
-
defaultFlowSpacing: function() {
|
66
|
-
return this.getThemedProperty('formFlowSpacing', 'FORM_FLOW_SPACING');
|
67
|
-
}.property('formFlowSpacing', 'theme'),
|
68
|
-
|
69
|
-
classNames: ["sc-form-view"],
|
70
46
|
|
71
|
-
|
72
|
-
Whether to automatically start editing.
|
73
|
-
*/
|
74
|
-
editsByDefault: YES,
|
47
|
+
renderDelegateName: 'formRenderDelegate',
|
75
48
|
|
76
49
|
/**
|
77
|
-
|
50
|
+
The default padding around items in the form. By default, this comes from the theme.
|
51
|
+
You can supply your own directly, or override the formRenderDelegate:
|
78
52
|
|
79
|
-
|
53
|
+
// base it on the existing render delegate
|
54
|
+
MyTheme.formRenderDelegate = SC.AceTheme.formRenderDelegate.create({
|
55
|
+
flowSpacing: { left: 5, top: 5, right: 5, bottom: 5 }
|
56
|
+
});
|
80
57
|
*/
|
81
|
-
|
58
|
+
defaultFlowSpacing: SC.propertyFromRenderDelegate('flowSpacing', {}),
|
59
|
+
|
60
|
+
classNames: ["sc-form-view"],
|
82
61
|
|
83
62
|
/**
|
84
|
-
|
63
|
+
Whether to automatically start editing.
|
85
64
|
*/
|
86
|
-
|
65
|
+
editsByDefault: YES,
|
87
66
|
|
88
67
|
/**
|
89
|
-
|
68
|
+
The content to bind the form to. This content object is passed to all children.
|
90
69
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
own content object.
|
70
|
+
All child views, if added at design time via string-based childViews array, will get their
|
71
|
+
contentValueKey set to their own key. Note that SC.RowView passes on its contentValueKey to its
|
72
|
+
child field, and if its isNested property is YES, uses it to find its own content object.
|
95
73
|
*/
|
96
74
|
content: null,
|
97
75
|
|
98
76
|
/**
|
99
|
-
Rows in the form do not have to be full
|
100
|
-
|
77
|
+
Rows in the form do not have to be full SC.FormRowView at design time. They can also be hashes
|
78
|
+
that get loaded into rows.
|
101
79
|
*/
|
102
80
|
exampleRow: SC.FormRowView.extend({
|
103
81
|
labelView: SC.FormRowView.LabelView.extend({ textAlign: SC.ALIGN_RIGHT })
|
104
82
|
}),
|
105
83
|
|
106
84
|
/**
|
107
|
-
|
85
|
+
@private
|
108
86
|
*/
|
109
|
-
init: function()
|
110
|
-
{
|
87
|
+
init: function() {
|
111
88
|
if (this.get("editsByDefault")) this.set("isEditing", YES);
|
112
89
|
sc_super();
|
113
90
|
},
|
114
91
|
|
115
92
|
/**
|
116
|
-
Calls _updateFields to load the fields.
|
117
93
|
*/
|
118
|
-
createChildViews: function()
|
119
|
-
{
|
120
|
-
// keep array of keys so we can pass on key to child.
|
94
|
+
createChildViews: function() {
|
121
95
|
var cv = SC.clone(this.get("childViews"));
|
122
96
|
var idx, len = cv.length, key, v, exampleRow = this.get("exampleRow");
|
123
|
-
|
124
|
-
//
|
97
|
+
|
98
|
+
// rows that are provided as plain hashes need to be created by passing them into
|
99
|
+
// exampleRow.extend.
|
125
100
|
for (idx = 0; idx < len; idx++) {
|
126
101
|
key = cv[idx];
|
127
102
|
if (SC.typeOf(key) === SC.T_STRING) {
|
@@ -131,56 +106,54 @@ SC.FormView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.FormsEd
|
|
131
106
|
}
|
132
107
|
}
|
133
108
|
}
|
134
|
-
|
135
|
-
//
|
136
|
-
for (idx = 0; idx < len; idx++) {
|
137
|
-
key = cv[idx];
|
138
|
-
if (SC.typeOf(key) === SC.T_STRING) {
|
139
|
-
v = this.get(key);
|
140
|
-
if (v.isClass && v.prototype.hasContentValueSupport && !v.prototype.contentValueKey && v.prototype.isFormRow) {
|
141
|
-
v.prototype.contentValueKey = key ;
|
142
|
-
} else {
|
143
|
-
v.prototype.formKey = key;
|
144
|
-
}
|
145
|
-
}
|
146
|
-
}
|
147
|
-
|
148
|
-
// get content for further ops
|
109
|
+
|
110
|
+
// we will be initializing the 'content' property for all child views
|
149
111
|
var content = this.get("content");
|
150
112
|
sc_super();
|
151
|
-
|
152
|
-
// now, do the actual passing it
|
113
|
+
|
153
114
|
for (idx = 0; idx < len; idx++) {
|
154
115
|
key = cv[idx];
|
155
|
-
|
116
|
+
|
156
117
|
// if the view was originally declared as a string, then we have something to give it
|
157
118
|
if (SC.typeOf(key) === SC.T_STRING) {
|
158
119
|
// try to get the actual view
|
159
120
|
v = this.get(key);
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
//
|
121
|
+
|
122
|
+
if (v && !v.isClass) {
|
123
|
+
// we used to set contentValueKey on applicable children, but given that was too
|
124
|
+
// implicit: any LabelView child of the form view would get the contentValueKey.
|
125
|
+
//
|
126
|
+
// instead, we give ALL views a formKey for their convenience; if they want to
|
127
|
+
// use contentValue support they should do so directly.
|
128
|
+
v.set('formKey', key);
|
129
|
+
|
130
|
+
// We used to try to be clever and bind child views' 'content' to
|
131
|
+
// individual properties if the views didn't have content value support.
|
132
|
+
// For instance, a plain view named 'myView' would get bound to content.myView.
|
133
|
+
//
|
134
|
+
// Cleverness is evil, so, we have dropped this. Instead, we always bind content,
|
135
|
+
// and always do so directly.
|
164
136
|
if (!v.get("content")) {
|
165
|
-
|
166
|
-
// controls can calculate their own value based on the contentValueKey we set earlier
|
167
|
-
if (v.get('hasContentValueSupport')) v.bind('content', '.owner.content');
|
168
|
-
// if it isn't a control then we can't use contentValueKey, so bind the content manually
|
169
|
-
else v.bind('content', '.owner.content.' + key);
|
137
|
+
v.bind('content', this, 'content');
|
170
138
|
}
|
171
|
-
|
172
|
-
// set
|
173
|
-
if (
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
139
|
+
|
140
|
+
// for form rows, set up label measuring and the label itself.
|
141
|
+
if (v.isFormRow) {
|
142
|
+
// set label (if possible).
|
143
|
+
if (SC.none(v.get('label'))) {
|
144
|
+
v.set("label", key.humanize().titleize());
|
145
|
+
}
|
146
|
+
|
147
|
+
// set the label size measuring stuff
|
148
|
+
if (this.get('labelWidth') !== null) {
|
149
|
+
v.set("shouldMeasureLabel", NO);
|
150
|
+
}
|
178
151
|
}
|
152
|
+
|
179
153
|
}
|
180
154
|
}
|
181
155
|
}
|
182
|
-
|
183
|
-
// our internal bookeeping to prevent .
|
156
|
+
|
184
157
|
this._hasCreatedRows = YES;
|
185
158
|
this.recalculateLabelWidth();
|
186
159
|
},
|
@@ -192,10 +165,18 @@ SC.FormView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.FormsEd
|
|
192
165
|
isRowDelegate: YES,
|
193
166
|
|
194
167
|
/**
|
195
|
-
|
168
|
+
Supply a label width to avoid automatically calculating the widths of the labels
|
169
|
+
in the form. Leave null to let SproutCore automatically determine the proper width
|
170
|
+
for the label.
|
171
|
+
|
172
|
+
@type Number
|
173
|
+
@default null
|
196
174
|
*/
|
197
175
|
labelWidth: null,
|
198
176
|
|
177
|
+
/**
|
178
|
+
Tells the child rows whether they should measure their labels or not.
|
179
|
+
*/
|
199
180
|
labelWidthDidChange: function() {
|
200
181
|
var childViews = this.get('childViews'), i, len = childViews.length,
|
201
182
|
shouldMeasure = SC.none(this.get('labelWidth'));
|
@@ -208,14 +189,17 @@ SC.FormView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.FormsEd
|
|
208
189
|
}.observes('labelWidth'),
|
209
190
|
|
210
191
|
/**
|
211
|
-
|
192
|
+
Propagates the label width to the child rows, finding the measured size if necessary.
|
212
193
|
*/
|
213
194
|
recalculateLabelWidth: function() {
|
214
|
-
if (!this._hasCreatedRows)
|
195
|
+
if (!this._hasCreatedRows) {
|
196
|
+
return;
|
197
|
+
}
|
215
198
|
|
216
199
|
var ret = this.get("labelWidth"), children = this.get("childViews"), idx, len = children.length, child;
|
217
200
|
|
218
|
-
// calculate by looping through child views and getting size (if possible
|
201
|
+
// calculate by looping through child views and getting size (if possible and if
|
202
|
+
// no label width is explicitly set)
|
219
203
|
if (ret === null) {
|
220
204
|
ret = 0;
|
221
205
|
for (idx = 0; idx < len; idx++) {
|
@@ -269,19 +253,5 @@ SC.mixin(SC.FormView, {
|
|
269
253
|
row: function(optionalClass, properties, rowExt)
|
270
254
|
{
|
271
255
|
return SC.FormRowView.row(optionalClass, properties, rowExt);
|
272
|
-
},
|
273
|
-
|
274
|
-
/**
|
275
|
-
Creates a field.
|
276
|
-
|
277
|
-
Behind the scenes, this wraps the fieldClass in a FormFieldView—usually a
|
278
|
-
specialized variant of FormFieldView meant specifically to wrap that class.
|
279
|
-
|
280
|
-
You can add your own special variants of FormFieldView if you want to expose
|
281
|
-
special features of your own view by calling FormFieldView.registerWrapper.
|
282
|
-
*/
|
283
|
-
field: function(fieldClass, properties)
|
284
|
-
{
|
285
|
-
return SC.FormFieldView.field(fieldClass, properties);
|
286
256
|
}
|
287
257
|
});
|
@@ -8,95 +8,93 @@
|
|
8
8
|
/*globals Forms */
|
9
9
|
|
10
10
|
/** @class
|
11
|
-
|
11
|
+
Represents a single row in a form. Rows have label and any number of other child views.
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
|
14
|
+
@extends SC.FormView
|
15
|
+
@author Alex Iskander
|
16
16
|
*/
|
17
17
|
sc_require("mixins/emptiness");
|
18
18
|
sc_require("mixins/edit_mode");
|
19
19
|
|
20
20
|
SC.FormRowView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.FormsEditMode,
|
21
21
|
/** @scope Forms.FormRowView.prototype */ {
|
22
|
+
classNames: ["sc-form-row-view"],
|
22
23
|
renderDelegateName: 'formRowRenderDelegate',
|
23
|
-
|
24
|
-
layout: {left: 0, width: 0, height: 0},
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
flowPadding: SC.propertyFromRenderDelegate('flowPadding'),
|
26
|
+
defaultFlowSpacing: SC.propertyFromRenderDelegate('flowSpacing'),
|
27
|
+
|
29
28
|
fillWidth: YES,
|
29
|
+
layoutDirection: SC.LAYOUT_HORIZONTAL,
|
30
|
+
|
31
|
+
layout: {left: 0, width: 0, height: 0},
|
32
|
+
|
33
|
+
/**
|
34
|
+
Walks like a duck.
|
35
|
+
*/
|
36
|
+
isFormRow: YES,
|
37
|
+
|
38
|
+
/**
|
39
|
+
A value set so that FormView knows to tell us about the row label size change.
|
40
|
+
*/
|
41
|
+
hasRowLabel: YES,
|
42
|
+
|
30
43
|
|
31
|
-
|
32
|
-
|
33
|
-
|
44
|
+
/**
|
45
|
+
The text to display next to the row. If undefined, SproutCore will try
|
46
|
+
to set it automatically to the key corresponding to this row in the FormView.
|
47
|
+
*/
|
48
|
+
label: undefined,
|
34
49
|
|
35
|
-
|
36
|
-
|
37
|
-
|
50
|
+
/**
|
51
|
+
The actual size for the label, as assigned by the parent FormView.
|
52
|
+
*/
|
53
|
+
rowLabelSize: 0,
|
38
54
|
|
39
|
-
|
55
|
+
/**
|
56
|
+
The measured size of the label. The parent FormView may use this to
|
57
|
+
determine the proper rowLabelSize.
|
58
|
+
*/
|
59
|
+
rowLabelMeasuredSize: 0,
|
40
60
|
|
41
61
|
/**
|
42
|
-
|
62
|
+
If NO, the label will not automatically measure itself. The parent
|
63
|
+
FormView normally manages this property for FormRowView.
|
64
|
+
|
65
|
+
Note that FormRowView never changes its own rowLabelSize: it only
|
66
|
+
measures it. The measurement is placed into rowLabelMeasuredSize.
|
67
|
+
|
68
|
+
The FormView then sets the rowLabelSize, which is used to set the
|
69
|
+
width of the LabelView.
|
43
70
|
*/
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
The current size of the labels.
|
53
|
-
*/
|
54
|
-
rowLabelSize: 0,
|
55
|
-
|
56
|
-
/**
|
57
|
-
The current measured size of the label.
|
58
|
-
*/
|
59
|
-
rowLabelMeasuredSize: 0,
|
60
|
-
|
61
|
-
/**
|
62
|
-
If NO, the label will not automatically measure itself.
|
63
|
-
*/
|
64
|
-
shouldMeasureLabel: YES,
|
65
|
-
|
66
|
-
/**
|
67
|
-
A value set so that FormView knows to tell us about the row label size change.
|
68
|
-
*/
|
69
|
-
hasRowLabel: YES,
|
70
|
-
|
71
|
-
/**
|
72
|
-
The label view.
|
73
|
-
*/
|
74
|
-
labelView: null,
|
75
|
-
|
76
|
-
/**
|
77
|
-
Direction of the flow.
|
78
|
-
*/
|
79
|
-
layoutDirection: SC.LAYOUT_HORIZONTAL,
|
80
|
-
|
71
|
+
shouldMeasureLabel: YES,
|
72
|
+
|
73
|
+
/**
|
74
|
+
The label view. The default is an SC.FormRowView.LabelView, which is
|
75
|
+
configured to handle resizing.
|
76
|
+
*/
|
77
|
+
labelView: null, // NOTE: gets set at end of file.
|
78
|
+
|
81
79
|
/**
|
82
|
-
|
80
|
+
Updates keys, content, etc. on fields. Also, handles our "special" field (only-one case)
|
83
81
|
*/
|
84
|
-
createChildViews: function()
|
85
|
-
{
|
82
|
+
createChildViews: function() {
|
86
83
|
// keep array of keys so we can pass on key to child.
|
87
|
-
var cv = SC.clone(this.get(
|
84
|
+
var cv = SC.clone(this.get('childViews'));
|
88
85
|
|
89
86
|
// add label
|
90
87
|
if (this.labelView.isClass) {
|
91
88
|
this.labelView = this.createChildView(this.labelView, {
|
92
|
-
value: this.get(
|
89
|
+
value: this.get('label')
|
93
90
|
});
|
94
|
-
|
95
|
-
this.labelView.
|
96
|
-
this.
|
91
|
+
|
92
|
+
this.labelView.addObserver('measuredSize', this, 'labelSizeDidChange');
|
93
|
+
this.labelView.bind('shouldMeasureSize', this, 'shouldMeasureLabel');
|
94
|
+
this.get('childViews').unshift(this.labelView);
|
97
95
|
}
|
98
96
|
|
99
|
-
var content = this.get(
|
97
|
+
var content = this.get('content');
|
100
98
|
|
101
99
|
sc_super();
|
102
100
|
|
@@ -110,27 +108,29 @@ SC.FormRowView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.Form
|
|
110
108
|
if (SC.typeOf(key) === SC.T_STRING) {
|
111
109
|
// try to get the actual view
|
112
110
|
v = this.get(key);
|
113
|
-
|
111
|
+
|
114
112
|
// see if it does indeed exist, and if it doesn't have a value already
|
115
113
|
if (v && !v.isClass) {
|
116
|
-
if (!v.get(
|
114
|
+
if (!v.get('contentValueKey')) {
|
117
115
|
//
|
118
116
|
// NOTE: WE HAVE A SPECIAL CASE
|
119
|
-
// If this is the single field, pass through our
|
117
|
+
// If this is the single field, pass through our formKey
|
118
|
+
// Single-field rows are created by the SC.FormView.row helper.
|
120
119
|
if (key === "_singleField") {
|
121
|
-
v.set(
|
120
|
+
v.set('contentValueKey', this.get('formKey'));
|
122
121
|
} else {
|
123
|
-
v.set(
|
122
|
+
v.set('contentValueKey', key);
|
124
123
|
}
|
125
124
|
}
|
126
|
-
|
127
|
-
|
125
|
+
|
126
|
+
if (!v.get('content')) {
|
127
|
+
v.bind('content', this, 'content') ;
|
128
128
|
}
|
129
129
|
}
|
130
|
-
|
130
|
+
|
131
131
|
}
|
132
132
|
}
|
133
|
-
|
133
|
+
|
134
134
|
this.rowLabelSizeDidChange();
|
135
135
|
},
|
136
136
|
|
@@ -156,32 +156,31 @@ SC.FormRowView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.Form
|
|
156
156
|
});
|
157
157
|
|
158
158
|
SC.FormRowView.mixin({
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
classNames: ["sc-form-label"],
|
159
|
+
row: function(label, fieldType, ext) {
|
160
|
+
if (label.isClass) {
|
161
|
+
ext = fieldType;
|
162
|
+
fieldType = label;
|
163
|
+
label = null;
|
164
|
+
}
|
165
|
+
// now, create a hash (will be used by the parent form's exampleRow)
|
166
|
+
if (!ext) {
|
167
|
+
ext = {};
|
168
|
+
} else {
|
169
|
+
ext = SC.clone(ext);
|
170
|
+
}
|
171
|
+
ext.label = label;
|
172
|
+
ext.childViews = ["_singleField"];
|
173
|
+
ext._singleField = fieldType;
|
174
|
+
return ext;
|
175
|
+
},
|
176
|
+
|
177
|
+
LabelView: SC.LabelView.extend(SC.AutoResize, SC.CalculatesEmptiness, {
|
178
|
+
shouldAutoResize: NO, // only change the measuredSize so we can update.
|
179
|
+
layout: { left:0, top:0, width: 0, height: 18 },
|
180
|
+
fillHeight: YES,
|
181
|
+
classNames: ["sc-form-label"],
|
183
182
|
isValue: NO
|
184
|
-
|
183
|
+
})
|
185
184
|
});
|
186
185
|
|
187
186
|
SC.FormRowView.prototype.labelView = SC.FormRowView.LabelView.design();
|