]> git.proxmox.com Git - extjs.git/blame - extjs/classic/classic/src/layout/container/Form.js
add extjs 6.0.1 sources
[extjs.git] / extjs / classic / classic / src / layout / container / Form.js
CommitLineData
6527f429
DM
1/**\r
2 * This is a layout that will render form Fields, one under the other all stretched to the Container width.\r
3 *\r
4 * @example\r
5 * Ext.create('Ext.Panel', {\r
6 * width: 500,\r
7 * height: 300,\r
8 * title: "FormLayout Panel",\r
9 * layout: 'form',\r
10 * renderTo: Ext.getBody(),\r
11 * bodyPadding: 5,\r
12 * defaultType: 'textfield',\r
13 * items: [{\r
14 * fieldLabel: 'First Name',\r
15 * name: 'first',\r
16 * allowBlank:false\r
17 * },{\r
18 * fieldLabel: 'Last Name',\r
19 * name: 'last'\r
20 * },{\r
21 * fieldLabel: 'Company',\r
22 * name: 'company'\r
23 * }, {\r
24 * fieldLabel: 'Email',\r
25 * name: 'email',\r
26 * vtype:'email'\r
27 * }, {\r
28 * fieldLabel: 'DOB',\r
29 * name: 'dob',\r
30 * xtype: 'datefield'\r
31 * }, {\r
32 * fieldLabel: 'Age',\r
33 * name: 'age',\r
34 * xtype: 'numberfield',\r
35 * minValue: 0,\r
36 * maxValue: 100\r
37 * }, {\r
38 * xtype: 'timefield',\r
39 * fieldLabel: 'Time',\r
40 * name: 'time',\r
41 * minValue: '8:00am',\r
42 * maxValue: '6:00pm'\r
43 * }]\r
44 * });\r
45 */\r
46Ext.define('Ext.layout.container.Form', {\r
47 extend: 'Ext.layout.container.Auto',\r
48 alternateClassName: 'Ext.layout.FormLayout',\r
49 alias: 'layout.form',\r
50 type: 'form',\r
51\r
52 formWrapCls: Ext.baseCSSPrefix + 'form-layout-wrap',\r
53 formWrapAutoLabelCls: Ext.baseCSSPrefix + 'form-layout-auto-label',\r
54 formWrapSizedLabelCls: Ext.baseCSSPrefix + 'form-layout-sized-label',\r
55 formColGroupCls: Ext.baseCSSPrefix + 'form-layout-colgroup',\r
56 formColumnCls: Ext.baseCSSPrefix + 'form-layout-column',\r
57 formLabelColumnCls: Ext.baseCSSPrefix + 'form-layout-label-column',\r
58\r
59 /**\r
60 * @cfg {Number} itemSpacing\r
61 * The amount of space, in pixels, to use between the items. Defaults to the value\r
62 * inherited from the theme's stylesheet as configured by\r
63 * {@link Ext.form.Labelable#$form-item-margin-bottom $form-item-margin-bottom}.\r
64 */\r
65\r
66 /**\r
67 * @cfg {Number/String} labelWidth\r
68 * The width of the labels. This can be either a number in pixels, or a valid CSS\r
69 * "width" style, e.g. `'100px'`, or `'30%'`. When configured, all labels will assume\r
70 * this width, and any {@link Ext.form.Labelable#labelWidth labelWidth} specified\r
71 * on the items will be ignored.\r
72 *\r
73 * The default behavior of this layout when no no labelWidth is specified is to size\r
74 * the labels to the text-width of the label with the longest text.\r
75 */\r
76\r
77 childEls: ['formWrap', 'labelColumn'],\r
78\r
79 beforeBodyTpl:\r
80 '<div id="{ownerId}-formWrap" data-ref="formWrap" class="{formWrapCls}"' +\r
81 '<tpl if="itemSpacing"> style="border-spacing:{itemSpacing}px"</tpl>>' +\r
82 '<div class="{formColGroupCls}">' +\r
83 '<div id="{ownerId}-labelColumn" data-ref="labelColumn" class="{formColumnCls} {formLabelColumnCls}"' +\r
84 '<tpl if="labelWidth"> style="width:{labelWidth}"</tpl>>' +\r
85 '</div>' +\r
86 '<div class="{formColumnCls}"></div>' +\r
87 '</div>',\r
88\r
89 afterBodyTpl: '</div>',\r
90\r
91 getRenderData: function() {\r
92 var me = this,\r
93 labelWidth = me.labelWidth,\r
94 formWrapCls = me.formWrapCls,\r
95 data = me.callParent();\r
96\r
97 if (labelWidth) {\r
98 if (typeof labelWidth === 'number') {\r
99 labelWidth += 'px';\r
100 }\r
101 data.labelWidth = labelWidth;\r
102 formWrapCls += ' ' + me.formWrapSizedLabelCls;\r
103 } else {\r
104 formWrapCls += ' ' + me.formWrapAutoLabelCls;\r
105 }\r
106\r
107 data.formWrapCls = formWrapCls;\r
108 data.formColGroupCls = me.formColGroupCls;\r
109 data.formColumnCls = me.formColumnCls;\r
110 data.formLabelColumnCls = me.formLabelColumnCls;\r
111\r
112 return data;\r
113 },\r
114\r
115 getRenderTarget: function() {\r
116 return this.formWrap;\r
117 }\r
118});\r