@componyx/ui 0.0.0-stage → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AppSkin/AppSkin.css +1268 -0
- package/AppSkin/AppSkin.js +2748 -0
- package/AppSkin/Themes/Default.css +241 -0
- package/Base/Base.js +3407 -0
- package/Base/ComponentIcons.css +66 -0
- package/Base/Font/ComponentIcons.woff +0 -0
- package/Base/Font/UI.woff +0 -0
- package/Base/Library.js +8432 -0
- package/Base/NavigationManager.js +462 -0
- package/Base/ResponsiveTemplates.js +371 -0
- package/Base/Sanitizer.js +288 -0
- package/Base/Themes/Default.css +255 -0
- package/Base/UI.css +618 -0
- package/Base/UIResourcePath.js +6 -0
- package/Bindary/Bindary.js +2011 -0
- package/Bindary/Modules/Connection.js +216 -0
- package/Bindary/Modules/Core.js +854 -0
- package/Bindary/Modules/DataUpdater.js +351 -0
- package/Bindary/Modules/ExpressionEngine.js +347 -0
- package/Bindary/Modules/ProxyManager.js +482 -0
- package/Bindary/Modules/Renderer.js +605 -0
- package/Bindary/Modules/Router.js +291 -0
- package/Bindary/Modules/Scroller.js +89 -0
- package/Bindary/Modules/Template.js +1273 -0
- package/BookmarkSpy/BookmarkSpy.js +430 -0
- package/Box/Box.css +36 -0
- package/Box/Box.js +1685 -0
- package/Button/Button.css +470 -0
- package/Button/Button.js +1398 -0
- package/Button/Themes/Default.css +200 -0
- package/Carousel/Carousel.css +273 -0
- package/Carousel/Carousel.js +607 -0
- package/ColorButton/ColorButton.css +39 -0
- package/ColorButton/ColorButton.js +336 -0
- package/ColorPicker/ColorPicker.css +359 -0
- package/ColorPicker/ColorPicker.js +972 -0
- package/ComboBox/ComboBox.css +357 -0
- package/ComboBox/ComboBox.js +2342 -0
- package/ComboBox/Themes/Default.css +23 -0
- package/DataPager/DataPager.css +72 -0
- package/DataPager/DataPager.js +674 -0
- package/DatePicker/DatePicker.css +227 -0
- package/DatePicker/DatePicker.js +1531 -0
- package/DatePicker/Themes/Default.css +26 -0
- package/Dialog/Dialog.css +106 -0
- package/Dialog/Dialog.js +572 -0
- package/Dialog/Themes/Default.css +10 -0
- package/Editor/Data/Emoji.json +8285 -0
- package/Editor/Data/Special.json +1042 -0
- package/Editor/Editor.css +1562 -0
- package/Editor/Editor.js +4058 -0
- package/Editor/Font/Editor.woff +0 -0
- package/Editor/Modules/ComponentFactory.js +565 -0
- package/Editor/Modules/ContentManager.js +748 -0
- package/Editor/Modules/DialogManager.js +1234 -0
- package/Editor/Modules/EventManager.js +458 -0
- package/Editor/Modules/Format.js +950 -0
- package/Editor/Modules/History.js +191 -0
- package/Editor/Modules/LayoutState.js +379 -0
- package/Editor/Modules/ListManager.js +296 -0
- package/Editor/Modules/MenuManager.js +388 -0
- package/Editor/Modules/NodeManager.js +681 -0
- package/Editor/Modules/ParagraphButtons.js +122 -0
- package/Editor/Modules/Resizer.js +176 -0
- package/Editor/Modules/SelectionRange.js +564 -0
- package/Editor/Modules/SourceViewBuilder.js +212 -0
- package/Editor/Modules/SymbolPicker.js +208 -0
- package/Editor/Modules/Table.js +2327 -0
- package/Editor/Modules/TableDialog.js +757 -0
- package/Editor/Modules/Toolbar.js +375 -0
- package/Editor/Modules/TooltipMenu.js +125 -0
- package/Editor/Modules/Utility.js +131 -0
- package/Editor/Themes/Default.css +204 -0
- package/FileUpload/FileUpload.css +156 -0
- package/FileUpload/FileUpload.js +898 -0
- package/FileUpload/Themes/Default.css +17 -0
- package/Form/Form.css +1934 -0
- package/Form/Form.js +4943 -0
- package/Form/Modules/ActionManager.js +368 -0
- package/Form/Modules/BuildPanelManager.js +319 -0
- package/Form/Modules/ComponentFactory.js +468 -0
- package/Form/Modules/ComponentPanel.js +265 -0
- package/Form/Modules/ConfigPanelManager.js +685 -0
- package/Form/Modules/DataBinder.js +602 -0
- package/Form/Modules/DataObserver.js +717 -0
- package/Form/Modules/Draggable.js +756 -0
- package/Form/Modules/OptionsPanel.js +342 -0
- package/Form/Modules/Renderer.js +1889 -0
- package/Form/Modules/RuleEngine.js +585 -0
- package/Form/Modules/RulesPanel.js +1158 -0
- package/Form/Modules/Types.js +1709 -0
- package/Form/Modules/ValidationManager.js +194 -0
- package/Form/Themes/Default.css +216 -0
- package/FormField/FormField.css +468 -0
- package/FormField/FormField.js +576 -0
- package/FormField/Themes/Default.css +99 -0
- package/Grid/Grid.css +544 -0
- package/Grid/Grid.js +3761 -0
- package/Grid/Themes/Default.css +43 -0
- package/LICENSE +126 -0
- package/MaskedTextBox/MaskedTextBox.css +28 -0
- package/MaskedTextBox/MaskedTextBox.js +642 -0
- package/MaskedTextBox/Themes/Default.css +6 -0
- package/Menu/Menu.css +328 -0
- package/Menu/Menu.js +2386 -0
- package/Menu/Themes/Default.css +24 -0
- package/NumericBox/NumericBox.css +120 -0
- package/NumericBox/NumericBox.js +984 -0
- package/PanelBar/PanelBar.css +123 -0
- package/PanelBar/PanelBar.js +505 -0
- package/PanelBar/Themes/Default.css +51 -0
- package/PieChart/PieChart.css +95 -0
- package/PieChart/PieChart.js +820 -0
- package/PieChart/Themes/Default.css +9 -0
- package/README.md +178 -3
- package/Slider/Slider.css +348 -0
- package/Slider/Slider.js +1306 -0
- package/Slider/Themes/Default.css +44 -0
- package/TabStrip/TabStrip.css +52 -0
- package/TabStrip/TabStrip.js +362 -0
- package/TabStrip/Themes/Default.css +35 -0
- package/TimePicker/Themes/Default.css +30 -0
- package/TimePicker/TimePicker.css +253 -0
- package/TimePicker/TimePicker.js +1485 -0
- package/TooltipManager/Themes/Default.css +21 -0
- package/TooltipManager/TooltipManager.css +227 -0
- package/TooltipManager/TooltipManager.js +791 -0
- package/Validator/Validator.css +54 -0
- package/Validator/Validator.js +2508 -0
- package/componyx.html-data.json +619 -0
- package/index.js +27 -0
- package/package.json +43 -4
- package/types/AppSkin.d.ts +842 -0
- package/types/Base.d.ts +1034 -0
- package/types/Bindary.d.ts +1196 -0
- package/types/BookmarkSpy.d.ts +112 -0
- package/types/Box.d.ts +374 -0
- package/types/Button.d.ts +455 -0
- package/types/Carousel.d.ts +136 -0
- package/types/ColorButton.d.ts +120 -0
- package/types/ColorPicker.d.ts +225 -0
- package/types/ComboBox.d.ts +507 -0
- package/types/DataPager.d.ts +152 -0
- package/types/DatePicker.d.ts +354 -0
- package/types/Dialog.d.ts +160 -0
- package/types/Editor.d.ts +1289 -0
- package/types/FileUpload.d.ts +206 -0
- package/types/Form.d.ts +3078 -0
- package/types/FormField.d.ts +204 -0
- package/types/Grid.d.ts +911 -0
- package/types/Library.d.ts +1899 -0
- package/types/MaskedTextBox.d.ts +91 -0
- package/types/Menu.d.ts +577 -0
- package/types/NumericBox.d.ts +310 -0
- package/types/PanelBar.d.ts +223 -0
- package/types/PieChart.d.ts +224 -0
- package/types/ResponsiveTemplates.d.ts +108 -0
- package/types/Slider.d.ts +227 -0
- package/types/TabStrip.d.ts +185 -0
- package/types/TimePicker.d.ts +265 -0
- package/types/TooltipManager.d.ts +178 -0
- package/types/UI.d.ts +29 -0
- package/types/Validator.d.ts +653 -0
- package/types/index.d.ts +59 -0
- package/ui.css +11783 -0
- package/ui.js +79477 -0
- package/ui.min.css +138 -0
- package/ui.min.js +264 -0
- package/ui.min.js.map +1 -0
|
@@ -0,0 +1,1709 @@
|
|
|
1
|
+
/*! Componyx.UI | (c) E.H. Daanen / Componyx | BUSL-1.1 | componyx.com/license */
|
|
2
|
+
const _omit = new Set(['type', 'id', 'name', 'element', 'viewElement', 'editElement', 'lineBreakElement']),
|
|
3
|
+
_renderedEditComponentSymbol = Symbol('renderedComponent'),
|
|
4
|
+
_parentSymbol = Symbol('parent'),
|
|
5
|
+
_elementSymbol = Symbol('element'),
|
|
6
|
+
_lineBreakElementSymbol = Symbol('lineBreakElement'),
|
|
7
|
+
_viewElementSymbol = Symbol('viewElement'),
|
|
8
|
+
_editElementSymbol = Symbol('editElement'),
|
|
9
|
+
_cloneableTypes = () =>
|
|
10
|
+
{
|
|
11
|
+
const Types = componyx.UI.form_modules.Types;
|
|
12
|
+
return Object.fromEntries(Object.entries(Types));
|
|
13
|
+
},
|
|
14
|
+
_clone = (target, source) =>
|
|
15
|
+
{
|
|
16
|
+
let omit = _omit;
|
|
17
|
+
|
|
18
|
+
if (source && source._keepOriginal !== false)
|
|
19
|
+
{
|
|
20
|
+
omit = new Set(_omit);
|
|
21
|
+
omit.delete('id');
|
|
22
|
+
omit.delete('name');
|
|
23
|
+
delete source._keepOriginal;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//(target, source, deep, overwrite, extend, excludeEmpty, excludeFunctions, exclude, omit, types, typeCheck, converter)
|
|
27
|
+
if (source)
|
|
28
|
+
$lib.clone({ target, source, deep: true, overwrite: true, excludeEmpty: true, omit, types: _cloneableTypes(), typeCheck: 'type' });
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
componyx.UI.form_modules = componyx.UI.form_modules || {};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @typedef {MaskedTextBoxSettings|NumericBoxSettings|ComboBoxSettings|DatePickerSettings|TimePickerSettings|SliderSettings|FileUploadSettings|EditorSettings} ComponentSettingsType
|
|
35
|
+
* @memberof componyx.UI.Form
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @typedef {Object} ComboBoxSettings
|
|
40
|
+
* @memberof componyx.UI.Form
|
|
41
|
+
* @property {Boolean} [multiSelect] - Gets or sets a value indicating whether multiple items can be selected through checkboxes.
|
|
42
|
+
* @property {Boolean} [multiSelectTagging] - Gets or sets a value indicating whether selected items are displayed as tags.
|
|
43
|
+
* @property {Boolean} [allowInput] - Gets or sets a value indicating whether textual input is allowed.
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @typedef {Object} DatePickerSettings
|
|
48
|
+
* @memberof componyx.UI.Form
|
|
49
|
+
* @property {Boolean} [today] - Gets or sets a value indicating whether today should be used as initial selected date.
|
|
50
|
+
* @property {String|Date} [minValue] - Gets or sets the minimum allowed date value.
|
|
51
|
+
* @property {String|Date} [maxValue] - Gets or sets the maximum allowed date value.
|
|
52
|
+
* @property {String[]|Date[]} [allowedDates] - Gets or sets a list of allowed calendar dates. Separate two date strings with a space to specify allowed range. When allowed dates are set, date input fields are rendered in readonly mode.
|
|
53
|
+
* @property {Boolean} [disallowDates] - Gets or sets a value indicating if the dates specified in the dates property are disallowed instead of the default allowed.
|
|
54
|
+
*/
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @typedef {Object} MaskedTextBoxSettings
|
|
58
|
+
* @memberof componyx.UI.Form
|
|
59
|
+
* @property {string} [mask] - Gets or sets the text box mask pattern.
|
|
60
|
+
* @property {MaskedTextBox.CharacterAllowOption} [allowedCharacters] - Gets or sets a value indicating which characters are allowed.
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @typedef {Object} NumericBoxSettings
|
|
65
|
+
* @memberof componyx.UI.Form
|
|
66
|
+
* @property {Number} [minValue] - Gets or sets the minimium allowed value.
|
|
67
|
+
* @property {Number} [maxValue] - Gets or sets the maximum allowed value.
|
|
68
|
+
* @property {Number} [precision] - Gets or sets the amount of decimal places.
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @typedef {Object} SliderSettings
|
|
73
|
+
* @memberof componyx.UI.Form
|
|
74
|
+
* @property {Boolean} [range=false] - Gets or sets a value indicating if the slider has a start- and end-handle to set a range.
|
|
75
|
+
* @property {Number} [startValue=0] - Gets or sets the start value of the range slider.
|
|
76
|
+
* @property {Number} [minValue=0] - Gets or sets the minimum value.
|
|
77
|
+
* @property {Number} [maxValue=100] - Gets or sets the maximum value.
|
|
78
|
+
* @property {Number} [tickMarks] - Gets or sets the amount of rendered tickmarks.
|
|
79
|
+
* @property {Number} [trackSize] - Gets or sets the size of the slider track.
|
|
80
|
+
*/
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @typedef {Object} TimePickerSettings
|
|
84
|
+
* @memberof componyx.UI.Form
|
|
85
|
+
* @property {String} [minValue] - Gets or sets the minimum allowed time in format 'HH:MM'. Minutes must be divisible by 5.
|
|
86
|
+
* @property {String} [maxValue] - Gets or sets the maximum allowed time in format 'HH:MM'. Minutes must be divisible by 5.
|
|
87
|
+
* @property {String} [incrementalValue] - Gets or sets the incremental value in minutes. Minutes must be divisible by 5.
|
|
88
|
+
* @property {String[]} [allowedTimes] - Gets or sets a list of allowed clock times (format 'HH:MM'). Separate two date strings with a space to specify allowed range. When allowed times are set, date input fields are rendered in readonly mode.Gets or sets a list of allowed calendar dates.
|
|
89
|
+
* @property {Boolean} [disallowTimes] - Gets or sets a value indicating if the times specified in the times property are disallowed instead of the default allowed.
|
|
90
|
+
*/
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @typedef {Object} FileUploadSettings
|
|
94
|
+
* @memberof componyx.UI.Form
|
|
95
|
+
* @property {String} [accept] - Gets or sets the comma-separated list of allowed file extensions (.png, .jpg, .jpeg) or MIME types (image/png or image/*).
|
|
96
|
+
* @property {Number} [maxFileSize] - Gets or sets the max allowed file size in KB.
|
|
97
|
+
* @property {Number} [maxFiles] - Gets or sets the max allowed file count.
|
|
98
|
+
*/
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @typedef {Object} EditorSettings
|
|
102
|
+
* @memberof componyx.UI.Form
|
|
103
|
+
* @property {componyx.UI.Form.EditorVisibleCommands} [visibleCommands] - Gets or sets the editor visible commands settings.
|
|
104
|
+
*/
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @typedef {Object} EditorVisibleCommands
|
|
108
|
+
* @memberof componyx.UI.Form
|
|
109
|
+
* @property {Boolean} [all] - Enables all visible commands.
|
|
110
|
+
* @property {Boolean} [block] - Enables changing block styles.
|
|
111
|
+
* @property {Boolean} [link] - Enables editing links.
|
|
112
|
+
* @property {Boolean} [list] - Enables editing UL/OL lists.
|
|
113
|
+
* @property {Boolean} [special] - Enables special commands (if applicable).
|
|
114
|
+
*/
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Command Location options
|
|
118
|
+
* @readonly
|
|
119
|
+
* @enum {number}
|
|
120
|
+
* @memberof componyx.UI.Form
|
|
121
|
+
*/
|
|
122
|
+
const CommandLocationOption =
|
|
123
|
+
{
|
|
124
|
+
/** Commands shown in the top header bar. */
|
|
125
|
+
HEADER: 0,
|
|
126
|
+
/** Commands shown in the top-left corner of the form. */
|
|
127
|
+
BUILD_PANE_TOP: 1,
|
|
128
|
+
/** Commands shown in the bottom-left corner of the form. */
|
|
129
|
+
BUILD_PANE_BOTTOM: 2,
|
|
130
|
+
/** Commands shown in the top-right corner of the form. */
|
|
131
|
+
CONFIG_PANE_TOP: 3,
|
|
132
|
+
/** Commands shown in the bottom-right corner of the form. */
|
|
133
|
+
CONFIG_PANE_BOTTOM: 4,
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Block Type options
|
|
138
|
+
* @readonly
|
|
139
|
+
* @enum {number}
|
|
140
|
+
* @memberof componyx.UI.Form
|
|
141
|
+
*/
|
|
142
|
+
const BlockTypeOption =
|
|
143
|
+
{
|
|
144
|
+
/** A container for grouping related fields. */
|
|
145
|
+
FIELD_SET: 0,
|
|
146
|
+
/** A standard input field. */
|
|
147
|
+
FIELD: 1,
|
|
148
|
+
/** A content block for displaying rich text. */
|
|
149
|
+
CONTENT_FIELD: 2,
|
|
150
|
+
/** A spacer field. */
|
|
151
|
+
SPACER_FIELD: 3,
|
|
152
|
+
|
|
153
|
+
getName(value)
|
|
154
|
+
{
|
|
155
|
+
const key = $base.static.getKeyByValue(this, value);
|
|
156
|
+
return key.split('_').map(part => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase()).join('');
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Input Type options
|
|
162
|
+
* @readonly
|
|
163
|
+
* @enum {number}
|
|
164
|
+
* @memberof componyx.UI.Form
|
|
165
|
+
*/
|
|
166
|
+
const InputTypeOption =
|
|
167
|
+
{
|
|
168
|
+
// === Native HTML inputs ===
|
|
169
|
+
/** Simple single-line text input. */
|
|
170
|
+
TEXTBOX: 0,
|
|
171
|
+
/** Multi-line text input. */
|
|
172
|
+
TEXTAREA: 1,
|
|
173
|
+
/** Checkbox input, for binary options. */
|
|
174
|
+
CHECKBOX: 2,
|
|
175
|
+
/** Radio button input, for selecting one option from a group. */
|
|
176
|
+
RADIO: 3,
|
|
177
|
+
/** Checkbox as switch input, for selecting one option from a group. */
|
|
178
|
+
SWITCH: 4,
|
|
179
|
+
// === Componyx UI components ===
|
|
180
|
+
/** Textbox input with masking (componyx.UI.MaskedTextBox). */
|
|
181
|
+
MASKEDTEXTBOX: 5,
|
|
182
|
+
/** Input for numeric values (componyx.UI.NumericBox). */
|
|
183
|
+
NUMERICBOX: 6,
|
|
184
|
+
/** Dropdown input (componyx.UI.ComboBox). */
|
|
185
|
+
COMBOBOX: 7,
|
|
186
|
+
/** Date selector (componyx.UI.DatePicker). */
|
|
187
|
+
DATEPICKER: 8,
|
|
188
|
+
/** Time selector (componyx.UI.TimePicker). */
|
|
189
|
+
TIMEPICKER: 9,
|
|
190
|
+
/** Range slider (componyx.UI.Slider). */
|
|
191
|
+
SLIDER: 10,
|
|
192
|
+
/** File upload control (componyx.UI.FileUpload). */
|
|
193
|
+
FILEUPLOAD: 11,
|
|
194
|
+
/** Rich text editor (componyx.UI.Editor). */
|
|
195
|
+
EDITOR: 12,
|
|
196
|
+
|
|
197
|
+
getName(value)
|
|
198
|
+
{
|
|
199
|
+
let names = { 5: 'MaskedTextBox', 6: 'NumericBox', 7: 'ComboBox', 8: 'DatePicker', 9: 'TimePicker', 10: 'Slider', 11: 'FileUpload', 12: 'Editor' };
|
|
200
|
+
|
|
201
|
+
if (names[value])
|
|
202
|
+
return names[value];
|
|
203
|
+
|
|
204
|
+
const key = $base.static.getKeyByValue(this, value);
|
|
205
|
+
return key.charAt(0).toUpperCase() + key.slice(1).toLowerCase();
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Display Type options
|
|
211
|
+
* @readonly
|
|
212
|
+
* @enum {number}
|
|
213
|
+
* @memberof componyx.UI.Form
|
|
214
|
+
*/
|
|
215
|
+
const DisplayModeOption =
|
|
216
|
+
{
|
|
217
|
+
/** Editable mode for user input. */
|
|
218
|
+
EDIT: 0,
|
|
219
|
+
/** View-only mode, for displaying data. */
|
|
220
|
+
VIEW: 1,
|
|
221
|
+
/** Build mode, for constructing and designing the form. */
|
|
222
|
+
BUILD: 2,
|
|
223
|
+
/** Preview mode. Similar to editable mode but with header. */
|
|
224
|
+
PREVIEW: 3
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* FieldSet Layout options
|
|
229
|
+
* @readonly
|
|
230
|
+
* @enum {number}
|
|
231
|
+
* @memberof componyx.UI.Form
|
|
232
|
+
*/
|
|
233
|
+
const FieldSetLayoutOption =
|
|
234
|
+
{
|
|
235
|
+
/** No visible layout applied. Fields appear directly in the form. */
|
|
236
|
+
NONE: 0,
|
|
237
|
+
/** Default fieldset appearance with a thin border and a legend at the top. */
|
|
238
|
+
DEFAULT: 1,
|
|
239
|
+
/** Section with a full-width banner header above the fields, giving it a modern look. */
|
|
240
|
+
BANNERED: 2
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Rule Case triggers.
|
|
245
|
+
* @readonly
|
|
246
|
+
* @enum {string}
|
|
247
|
+
* @memberof componyx.UI.Form
|
|
248
|
+
*/
|
|
249
|
+
const RuleCaseTriggerOption =
|
|
250
|
+
{
|
|
251
|
+
/** The RuleCase runs both on form initialization and when dependent fields change. */
|
|
252
|
+
ALWAYS: 'always',
|
|
253
|
+
/** The RuleCase runs once when the form initializes. */
|
|
254
|
+
INIT: 'init',
|
|
255
|
+
/** The RuleCase runs whenever dependent fields change. */
|
|
256
|
+
CHANGE: 'change',
|
|
257
|
+
/** The RuleCase runs when the corresponding section becomes visible. */
|
|
258
|
+
SHOW_SECTION: 'show_section',
|
|
259
|
+
/** The RuleCase runs before the form is being submitted. */
|
|
260
|
+
BEFORE_SUBMIT: 'before_submit',
|
|
261
|
+
/** The RuleCase runs when the form submit was successful. */
|
|
262
|
+
SUBMIT_SUCCEEDED: 'submit_succeeded',
|
|
263
|
+
/** The RuleCase runs when the form submit was unsuccessful */
|
|
264
|
+
SUBMIT_FAILED: 'submit_failed'
|
|
265
|
+
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Rule Case run options.
|
|
270
|
+
* @readonly
|
|
271
|
+
* @enum {string}
|
|
272
|
+
* @memberof componyx.UI.Form
|
|
273
|
+
*/
|
|
274
|
+
const RuleCaseRunVisibilityOption =
|
|
275
|
+
{
|
|
276
|
+
/** The RuleCase runs only when field is visible. */
|
|
277
|
+
VISIBLE: 'visible',
|
|
278
|
+
/** The RuleCase runs when field is hidden. */
|
|
279
|
+
HIDDEN: 'hidden',
|
|
280
|
+
/** The RuleCase runs even when the field's section is hidden. */
|
|
281
|
+
SECTION_HIDDEN: 'section_hidden'
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Comparison operators options
|
|
286
|
+
* @readonly
|
|
287
|
+
* @enum {string}
|
|
288
|
+
* @memberof componyx.UI.Form
|
|
289
|
+
*/
|
|
290
|
+
const RuleComparisonOperatorOption =
|
|
291
|
+
{
|
|
292
|
+
EQUAL: 'equal',
|
|
293
|
+
NOT_EQUAL: 'not_equal',
|
|
294
|
+
GREATER_THAN: 'greater_than',
|
|
295
|
+
GREATER_THAN_OR_EQUAL: 'greater_than_or_equal',
|
|
296
|
+
LESS_THAN: 'less_than',
|
|
297
|
+
LESS_THAN_OR_EQUAL: 'less_than_or_equal',
|
|
298
|
+
CONTAINS: 'contains',
|
|
299
|
+
NOT_CONTAINS: 'not_contains',
|
|
300
|
+
STARTS_WITH: 'starts_with',
|
|
301
|
+
ENDS_WITH: 'ends_with',
|
|
302
|
+
EMPTY: 'empty',
|
|
303
|
+
NOT_EMPTY: 'not_empty',
|
|
304
|
+
VISIBLE: 'visible',
|
|
305
|
+
HIDDEN: 'hidden',
|
|
306
|
+
ENABLED: 'enabled',
|
|
307
|
+
DISABLED: 'disabled',
|
|
308
|
+
REQUIRED: 'required',
|
|
309
|
+
OPTIONAL: 'optional'
|
|
310
|
+
};
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* @typedef {Object} BaseSetProperties
|
|
314
|
+
* @memberof componyx.UI.Form
|
|
315
|
+
* @property {HTMLElement|HTMLElement[]|DocumentFragment|string|null} [headerTemplate] Gets or sets the header template.
|
|
316
|
+
* @property {HTMLElement|HTMLElement[]|DocumentFragment|string|null} [footerTemplate] Gets or sets the footer template.
|
|
317
|
+
* @property {componyx.UI.Form.BaseSet[]} [fieldSets] Gets or sets an array of field sets (nested field groupings).
|
|
318
|
+
*/
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* @typedef {Object} FieldSetProperties
|
|
322
|
+
* @memberof componyx.UI.Form
|
|
323
|
+
* @property {boolean} [allowAsRoot] Gets or sets a value indicating if this field set can be used as a root element in the form.
|
|
324
|
+
* @property {componyx.UI.Form.FieldSetLayoutOption} [layout] Gets or sets the layout of the field set.
|
|
325
|
+
* @property {boolean} [repeatable] Gets or sets a value indicating if this field set is repeatable.
|
|
326
|
+
* @property {number|null} [maxRepeats] Gets or sets a value indicating how many repeats are allowed for this field set. No value or zero means unlimited.
|
|
327
|
+
* @property {string} [repeatLabel] Gets or sets the field set repeat label.
|
|
328
|
+
* @property {componyx.UI.Form.BaseField[]} [fields] Gets or sets the form fields that belong to the field set.
|
|
329
|
+
*/
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* @typedef {Object} BaseFieldProperties
|
|
333
|
+
* @memberof componyx.UI.Form
|
|
334
|
+
* @property {Object.<string,string>|null} [panelTemplates] Gets or sets the templates to render in each configuration panel. Maps configuration panel ids to template ids.
|
|
335
|
+
* @property {componyx.UI.Form.BaseField|null} [parent] The parent field if this set is part of another set.
|
|
336
|
+
* @property {string} id Gets or sets the id of the field. The id is generated if it's not set.
|
|
337
|
+
* @property {string} [name] Gets or sets the name of the field.
|
|
338
|
+
* @property {string} [width] Gets or sets the width of the field.
|
|
339
|
+
* @property {string} [cssClass] Gets or sets the CSS class of the field.
|
|
340
|
+
* @property {string} [cssClassIcon] Gets or sets the CSS class of the field icon.
|
|
341
|
+
* @property {string} [style] Gets or sets the CSS style of the field.
|
|
342
|
+
* @property {string} [tooltip] Gets or sets the tooltip of the field.
|
|
343
|
+
* @property {boolean} [visible] Gets a value indicating if the field is visible.
|
|
344
|
+
* @property {boolean} [disabled] Gets a value indicating if the field is disabled.
|
|
345
|
+
* @property {string} [label] Gets or sets the label of the field.
|
|
346
|
+
* @property {string} [value] Gets or sets the value of the option.
|
|
347
|
+
* @property {boolean} [lineBreak] Gets or sets a value indicating if the field moves to a new line.
|
|
348
|
+
* @property {HTMLElement|HTMLElement[]|DocumentFragment|string|null} [viewTemplate] Gets or sets a custom template to display the field in view mode.
|
|
349
|
+
* @property {HTMLElement|HTMLElement[]|DocumentFragment|string|null} [editTemplate] Gets or sets a custom template to display the field in edit mode.
|
|
350
|
+
* @property {HTMLElement|null} [element] Gets the rendered root element.
|
|
351
|
+
* @property {HTMLElement} [lineBreakElement] Gets the rendered line break element.
|
|
352
|
+
* @property {componyx.UI.Form.ComponentSettings|null} [componentSettings] Gets or sets the specific settings configured for the input type component.
|
|
353
|
+
*/
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* @typedef {Object} FieldProperties
|
|
357
|
+
* @memberof componyx.UI.Form
|
|
358
|
+
* @property {string} [placeholder] Gets or sets the placeholder of the field for when it has no value.
|
|
359
|
+
* @property {componyx.UI.FormField.LabelDisplayOption} [labelDisplay=3] Gets or sets the label display option of the field (above, before, floating, inside).
|
|
360
|
+
* @property {string} [bindingKey] Gets or sets the data binding key of the field. Defaults to the field name if not set. Supports dot notation (e.g. "user.address.street"). Only applies when form.bindToCustomModel is true.
|
|
361
|
+
* @property {string} [role] Gets or sets the role identifier for the field, defining its purpose or behavior.
|
|
362
|
+
* @property {boolean} [autoDataBind] Gets or sets a value indicating if the data binding (via Bindary) is automatically activated on this form field.
|
|
363
|
+
* @property {boolean} [hideLabel] Gets or sets a value indicating if the label should be hidden. Ignored in build mode.
|
|
364
|
+
* @property {boolean} [viewAsLabel] Gets or sets a value indicating if the field value is displayed as a label when in view mode.
|
|
365
|
+
* @property {boolean} [inlineOptions=true] Gets or sets a value indicating whether options are displayed horizontally or stacked vertically.
|
|
366
|
+
* @property {string} [optionWidth=auto] Gets or sets the width of a field option (auto, 50%, 33%, 25%, 20%). Only applies when inlineOptions is true.
|
|
367
|
+
* @property {componyx.UI.Form.FieldOption} [options] Gets or sets the field options for input types CHECKBOX or RADIO.
|
|
368
|
+
* @property {componyx.UI.Form.InputTypeOption} [inputType] Gets or sets the input type to render the editable field.
|
|
369
|
+
* @property {string} [customType] Gets or sets the custom type of the form field.
|
|
370
|
+
* @property {string} [dataSourceId] Gets or sets the id of the data source used for the field.
|
|
371
|
+
* @property {boolean} [dataSourcePreview] Gets or sets a value indicating if the data source can be previewed in Form Build mode.
|
|
372
|
+
* @property {boolean} [readOnly] Gets or sets a value indicating if the field is readonly.
|
|
373
|
+
* @property {boolean} [required] Gets or sets a value indicating if the field is required.
|
|
374
|
+
* @property {ValidationSettings} [validationSettings] Gets or sets the validation settings of the field.
|
|
375
|
+
* @property {Array<RuleCase>} [ruleCases] Gets or sets a list of rule cases.
|
|
376
|
+
* @property {string} [inputId] Gets or sets the id of the edit HTML Element or UI component from which attributes/settings are cloned.
|
|
377
|
+
* @property {string} [viewElementId] Gets or sets the id of the view HTML Element from which attributes are cloned.
|
|
378
|
+
* @property {string} [formFieldId] Gets or sets the id of the FormField component from which settings are cloned.
|
|
379
|
+
* @property {HTMLElement} [viewElement] Gets the rendered view element.
|
|
380
|
+
* @property {HTMLElement} [editElement] Gets the rendered edit element.
|
|
381
|
+
*/
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* @typedef {Object} FieldOptionProperties
|
|
385
|
+
* @memberof componyx.UI.Form
|
|
386
|
+
* @property {string} [value] Gets or sets the value of the option.
|
|
387
|
+
* @property {boolean} [selected] Gets or sets a value indicating if the option is selected/checked.
|
|
388
|
+
* @property {string} [inputId] Gets or sets the id of the HTML Element from which attributes are cloned.
|
|
389
|
+
* @property {string} [formFieldId] Gets or sets the id of the FormField component from which settings are cloned.
|
|
390
|
+
*/
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* @typedef {Object} ContentFieldProperties
|
|
394
|
+
* @memberof componyx.UI.Form
|
|
395
|
+
* @property {string} [trustHTML] Gets or sets a value indicating whether the HTML content of this field is trusted.
|
|
396
|
+
* @property {string} [margin] Gets or sets the margin of the content field.
|
|
397
|
+
* @property {string} [padding] Gets or sets the padding of the content field.
|
|
398
|
+
* @property {number|null} [borderWidth] Gets or sets the border width of the content field.
|
|
399
|
+
* @property {string} [borderRadius] Gets or sets the border radius of the content field.
|
|
400
|
+
* @property {string} [borderColor] Gets or sets the border color of the content field.
|
|
401
|
+
* @property {string} [backgroundColor] Gets or sets the background color of the content field.
|
|
402
|
+
*/
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* @typedef {Object} SpacerFieldProperties
|
|
406
|
+
* @memberof componyx.UI.Form
|
|
407
|
+
* @property {string} [showDivider] Gets or sets a value indicating whether the divider line is rendered in the middle of the spacer.
|
|
408
|
+
* @property {string} [height] Gets or sets the height of the spacer field.
|
|
409
|
+
*/
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* @typedef {Object} BuildBlockProperties
|
|
413
|
+
* @memberof componyx.UI.Form
|
|
414
|
+
* @property {string} [panelId] Gets or sets the identifier of the panel in which the build block is placed. Item is placed in first Panel if not set.
|
|
415
|
+
* @property {componyx.UI.Form.BlockTypeOption|null} [blockType=0] Gets or sets the type of the build block or null if it's a custom field. Defaults to an input field type.
|
|
416
|
+
* @property {componyx.UI.Form.InputTypeOption|null} [inputType] Gets or sets the input type of the form field or null if it's a custom field.
|
|
417
|
+
* @property {string} [customType] Gets or sets the custom type of the form field.
|
|
418
|
+
* @property {string} [inputId] Gets or sets the id of the edit HTML Element or UI component from which attributes/settings are cloned.
|
|
419
|
+
* @property {componyx.UI.Form.FieldSet} [fieldSet] Gets or sets the field set of the build block when type is set to FIELDSET.
|
|
420
|
+
*/
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* Represents a field role.
|
|
424
|
+
* @class
|
|
425
|
+
* @memberof componyx.UI.Form
|
|
426
|
+
*/
|
|
427
|
+
class FieldRole
|
|
428
|
+
{
|
|
429
|
+
/**
|
|
430
|
+
* @param {Object} [properties] The properties used to initialize the object.
|
|
431
|
+
* @param {string} [properties.id] - Gets or sets the id of the role.
|
|
432
|
+
* @param {string} [properties.label] - Gets or sets the label of the role.
|
|
433
|
+
* @param {string} [properties.defaultValue] - Gets or sets the default value of the role if desired.
|
|
434
|
+
* @param {componyx.UI.Form.InputTypeOption|componyx.UI.Form.InputTypeOption[]|null} [properties.inputType] - Gets or sets the field input type(s) for which this field role will be selectable.
|
|
435
|
+
*/
|
|
436
|
+
constructor(properties)
|
|
437
|
+
{
|
|
438
|
+
/**
|
|
439
|
+
* Gets or sets the id of the role.
|
|
440
|
+
* @type {String}
|
|
441
|
+
*/
|
|
442
|
+
this.id = null;
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* Gets or sets the label of the role.
|
|
446
|
+
* @type {String}
|
|
447
|
+
*/
|
|
448
|
+
this.label = null;
|
|
449
|
+
|
|
450
|
+
/**
|
|
451
|
+
* Gets or sets the default value of the role if desired.
|
|
452
|
+
* @type {*}
|
|
453
|
+
*/
|
|
454
|
+
this.defaultValue = null;
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* Gets or sets the field input type(s) for which this field role will be selectable.
|
|
458
|
+
* @type {componyx.UI.Form.InputTypeOption|componyx.UI.Form.InputTypeOption[]|null}
|
|
459
|
+
*/
|
|
460
|
+
this.inputType = null;
|
|
461
|
+
|
|
462
|
+
_clone(this, properties);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
/**
|
|
467
|
+
* The Form ServerEndpoint class.
|
|
468
|
+
* @class
|
|
469
|
+
* @memberof componyx.UI.Form
|
|
470
|
+
*/
|
|
471
|
+
class ServerEndpoint
|
|
472
|
+
{
|
|
473
|
+
/**
|
|
474
|
+
* @param {Object} [properties] The properties used to initialize the object.
|
|
475
|
+
* @param {String} properties.id Gets or sets the identifier of the item.
|
|
476
|
+
* @param {String} properties.label Gets or sets the label of the item.
|
|
477
|
+
* @param {Boolean} properties.absoluteURL Gets or sets a value indicating whether the URL is absolute or relative.
|
|
478
|
+
* @param {String} properties.url Gets or sets the API endpoint for file uploads or data requests.
|
|
479
|
+
* @param {String} properties.method Gets or sets the HTTP method used for requests (e.g., "POST", "GET").
|
|
480
|
+
* @param {Object} properties.headers Gets or sets the request headers for the API call.
|
|
481
|
+
* @param {Object} properties.params Gets or sets additional parameters sent with the request.
|
|
482
|
+
* @param {Number|null} properties.timeout Gets or sets the timeout in milliseconds for the request.
|
|
483
|
+
* @param {String} properties.credentials Gets or sets the credentials mode for the fetch request.
|
|
484
|
+
* @param {String} properties.responseType Gets or sets the expected response type ('json', 'text', 'blob').
|
|
485
|
+
* @param {Function|null} properties.preFetch Gets or sets the hook executed before the fetch request.
|
|
486
|
+
* @param {Function|null} properties.postFetch Gets or sets the hook executed after the fetch request completes.
|
|
487
|
+
*/
|
|
488
|
+
constructor(properties)
|
|
489
|
+
{
|
|
490
|
+
/**
|
|
491
|
+
* Gets or sets the id of the item.
|
|
492
|
+
* @type {string}
|
|
493
|
+
*/
|
|
494
|
+
this.id = '';
|
|
495
|
+
|
|
496
|
+
/**
|
|
497
|
+
* Gets or sets the label of the item.
|
|
498
|
+
* @type {string}
|
|
499
|
+
*/
|
|
500
|
+
this.label = '';
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* Gets or sets a value indicating whether the URL is absolute or relative.
|
|
504
|
+
* @type {boolean}
|
|
505
|
+
*/
|
|
506
|
+
this.absoluteURL = false;
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* Gets or sets the API endpoint for file uploads or data requests.
|
|
510
|
+
* @type {string}
|
|
511
|
+
*/
|
|
512
|
+
this.url = '';
|
|
513
|
+
|
|
514
|
+
/**
|
|
515
|
+
* Gets or sets the HTTP method used for requests (e.g., "POST", "GET").
|
|
516
|
+
* @type {string}
|
|
517
|
+
*/
|
|
518
|
+
this.method = 'GET';
|
|
519
|
+
|
|
520
|
+
/**
|
|
521
|
+
* Gets or sets the request headers for the API call.
|
|
522
|
+
* @type {Object}
|
|
523
|
+
*/
|
|
524
|
+
this.headers = {};
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* Gets or sets additional parameters sent with the request.
|
|
528
|
+
* @type {Object}
|
|
529
|
+
*/
|
|
530
|
+
this.params = {};
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* Gets or sets the timeout in milliseconds for the request. If null, no timeout is applied.
|
|
534
|
+
* @type {number|null}
|
|
535
|
+
*/
|
|
536
|
+
this.timeout = null;
|
|
537
|
+
|
|
538
|
+
/**
|
|
539
|
+
* Gets or sets the credentials mode for the fetch request. E.g., 'same-origin', 'include', or 'omit'.
|
|
540
|
+
* @type {string}
|
|
541
|
+
*/
|
|
542
|
+
this.credentials = 'same-origin';
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* Gets or sets the expected response type. Determines how the fetch response is parsed.
|
|
546
|
+
* Supported values: 'json', 'text', 'blob'.
|
|
547
|
+
* @type {string}
|
|
548
|
+
*/
|
|
549
|
+
this.responseType = 'json';
|
|
550
|
+
|
|
551
|
+
/** Gets or sets the optional hook executed before the fetch request. Can be used to modify the request parameters or context.
|
|
552
|
+
* @type {function(Object, Object): (Object|Promise<Object>)|null}
|
|
553
|
+
* @param {Object} params - The current request parameters.
|
|
554
|
+
* @param {Object} context - Generic context passed by the caller. The context includes the current form and field instance (possible action instance).
|
|
555
|
+
* @returns {Object|Promise<Object>} Optionally return modified params.
|
|
556
|
+
*/
|
|
557
|
+
this.preFetch = null;
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* Gets or sets the optional hook executed after the fetch request completes. Can be used to handle the result or update the context.
|
|
561
|
+
* @type {function(Object, Object): void|Promise<void>|null}
|
|
562
|
+
* @param {Object} result - The JSON-parsed response from the server.
|
|
563
|
+
* @param {Object} context - Generic context passed by the caller. The context includes the current form and field instance (possible action instance).
|
|
564
|
+
*/
|
|
565
|
+
this.postFetch = null;
|
|
566
|
+
|
|
567
|
+
_clone(this, properties);
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
/**
|
|
572
|
+
* The Form DataSource class.
|
|
573
|
+
* @class
|
|
574
|
+
* @memberof componyx.UI.Form
|
|
575
|
+
* @extends ServerEndpoint
|
|
576
|
+
*/
|
|
577
|
+
class DataSource extends ServerEndpoint
|
|
578
|
+
{
|
|
579
|
+
/**
|
|
580
|
+
* @param {Object} [properties] The properties used to initialize the object.
|
|
581
|
+
* @param {componyx.UI.Form.InputTypeOption|componyx.UI.Form.InputTypeOption[]} properties.inputType Gets or sets the supported input type(s) of the data source; matched by strict equality or inclusion if array.
|
|
582
|
+
*/
|
|
583
|
+
constructor(properties)
|
|
584
|
+
{
|
|
585
|
+
super(properties);
|
|
586
|
+
|
|
587
|
+
/**
|
|
588
|
+
* Gets or sets the supported input type(s) of the data source; matched by strict equality or inclusion if array.
|
|
589
|
+
* @type {componyx.UI.Form.InputTypeOption|componyx.UI.Form.InputTypeOption[]|null}
|
|
590
|
+
*/
|
|
591
|
+
this.inputType = properties?.inputType || null;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
* The base class that holds the type property so the type can be converted back to class instance after JSON serialization.
|
|
597
|
+
* @class
|
|
598
|
+
* @memberof componyx.UI.Form
|
|
599
|
+
*/
|
|
600
|
+
class BaseType
|
|
601
|
+
{
|
|
602
|
+
#type;
|
|
603
|
+
constructor()
|
|
604
|
+
{
|
|
605
|
+
/**
|
|
606
|
+
* The name of the class, required for identifying the object type when stored as JSON data.
|
|
607
|
+
* @type {string}
|
|
608
|
+
* @ignore
|
|
609
|
+
*/
|
|
610
|
+
this.#type = this.constructor.name;
|
|
611
|
+
|
|
612
|
+
Object.defineProperty(this, 'type', {
|
|
613
|
+
value: this.#type,
|
|
614
|
+
writable: false,
|
|
615
|
+
enumerable: true,
|
|
616
|
+
configurable: false
|
|
617
|
+
});
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
/**
|
|
621
|
+
* Gets the parent fieldSet or Section.
|
|
622
|
+
* @type {BaseType|null}
|
|
623
|
+
*/
|
|
624
|
+
get parent()
|
|
625
|
+
{
|
|
626
|
+
return this[_parentSymbol];
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
/**
|
|
630
|
+
* Sets the parent.
|
|
631
|
+
* @param {BaseType} value
|
|
632
|
+
* @ignore
|
|
633
|
+
*/
|
|
634
|
+
set parent(value)
|
|
635
|
+
{
|
|
636
|
+
this[_parentSymbol] = value;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
/**
|
|
640
|
+
* Gets the name of the class, required for identifying the object type when stored as JSON data.
|
|
641
|
+
* @type {string}
|
|
642
|
+
*/
|
|
643
|
+
get type()
|
|
644
|
+
{
|
|
645
|
+
return this.#type;
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
/**
|
|
650
|
+
* The base class for all form field and fieldSet types.
|
|
651
|
+
* @class
|
|
652
|
+
* @memberof componyx.UI.Form
|
|
653
|
+
* @extends BaseType
|
|
654
|
+
*/
|
|
655
|
+
class BaseField extends BaseType
|
|
656
|
+
{
|
|
657
|
+
constructor()
|
|
658
|
+
{
|
|
659
|
+
super();
|
|
660
|
+
|
|
661
|
+
/**
|
|
662
|
+
* Gets or sets the templates to render in each configuration panel. Maps configuration panel ids to template ids.
|
|
663
|
+
* @type {Object.<string,string>|null}
|
|
664
|
+
*/
|
|
665
|
+
this.panelTemplates = null;
|
|
666
|
+
|
|
667
|
+
/**
|
|
668
|
+
* Gets or sets the id of the field. The id is generated if it's not set.
|
|
669
|
+
* @type {string}
|
|
670
|
+
*/
|
|
671
|
+
this.id = '';
|
|
672
|
+
|
|
673
|
+
/**
|
|
674
|
+
* Gets or sets the name of the field.
|
|
675
|
+
* @type {string}
|
|
676
|
+
*/
|
|
677
|
+
this.name = '';
|
|
678
|
+
|
|
679
|
+
/**
|
|
680
|
+
* Gets or sets the width of the field.
|
|
681
|
+
* @type {string}
|
|
682
|
+
*/
|
|
683
|
+
this.width = '100%';
|
|
684
|
+
|
|
685
|
+
/**
|
|
686
|
+
* Gets or sets the CSS class of the field.
|
|
687
|
+
* @type {string}
|
|
688
|
+
*/
|
|
689
|
+
this.cssClass = '';
|
|
690
|
+
|
|
691
|
+
/**
|
|
692
|
+
* Gets or sets the CSS class of the field icon.
|
|
693
|
+
* @type {string}
|
|
694
|
+
*/
|
|
695
|
+
this.cssClassIcon = '';
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* Gets or sets the CSS style of the field.
|
|
699
|
+
* @type {string}
|
|
700
|
+
*/
|
|
701
|
+
this.style = '';
|
|
702
|
+
|
|
703
|
+
/**
|
|
704
|
+
* Gets or sets the tooltip of the field.
|
|
705
|
+
* @type {string}
|
|
706
|
+
*/
|
|
707
|
+
this.tooltip = '';
|
|
708
|
+
|
|
709
|
+
/**
|
|
710
|
+
* Gets a value indicating if the field is visible.
|
|
711
|
+
* @type {boolean}
|
|
712
|
+
*/
|
|
713
|
+
this.visible = true;
|
|
714
|
+
|
|
715
|
+
/**
|
|
716
|
+
* Gets a value indicating if the field is disabled.
|
|
717
|
+
* @type {boolean}
|
|
718
|
+
*/
|
|
719
|
+
this.disabled = false;
|
|
720
|
+
|
|
721
|
+
/**
|
|
722
|
+
* Gets or sets the label of the field.
|
|
723
|
+
* @type {string}
|
|
724
|
+
*/
|
|
725
|
+
this.label = '';
|
|
726
|
+
|
|
727
|
+
/**
|
|
728
|
+
* Gets or sets the value of the option.
|
|
729
|
+
* @type {string}
|
|
730
|
+
*/
|
|
731
|
+
this.value = '';
|
|
732
|
+
|
|
733
|
+
/**
|
|
734
|
+
* Gets or sets a value indicating if the field moves to a new line.
|
|
735
|
+
* @type {boolean}
|
|
736
|
+
*/
|
|
737
|
+
this.lineBreak = false;
|
|
738
|
+
|
|
739
|
+
/**
|
|
740
|
+
* Gets or sets a custom template to display the field in view mode.
|
|
741
|
+
* @type {HTMLElement|HTMLElement[]|DocumentFragment|string|null}
|
|
742
|
+
*/
|
|
743
|
+
this.viewTemplate = null;
|
|
744
|
+
|
|
745
|
+
/**
|
|
746
|
+
* Gets or sets the id of the custom template to display the field in view mode.
|
|
747
|
+
* @type {string}
|
|
748
|
+
*/
|
|
749
|
+
this.viewTemplateId = null;
|
|
750
|
+
|
|
751
|
+
/**
|
|
752
|
+
* Gets or sets a custom template to display the field in edit mode.
|
|
753
|
+
* @type {HTMLElement|HTMLElement[]|DocumentFragment|string|null}
|
|
754
|
+
*/
|
|
755
|
+
this.editTemplate = null;
|
|
756
|
+
|
|
757
|
+
/**
|
|
758
|
+
* Gets or sets the id of the custom template to display the field in edit mode.
|
|
759
|
+
* @type {string}
|
|
760
|
+
*/
|
|
761
|
+
this.editTemplateId = null;
|
|
762
|
+
|
|
763
|
+
/**
|
|
764
|
+
* Gets or sets the specific settings configured for the input type component.
|
|
765
|
+
* @type {ComponentSettings|null}
|
|
766
|
+
*/
|
|
767
|
+
this.componentSettings = new ComponentSettings();
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
/**
|
|
771
|
+
* Gets the rendered root element.
|
|
772
|
+
* @type {HTMLElement|null}
|
|
773
|
+
*/
|
|
774
|
+
get element()
|
|
775
|
+
{
|
|
776
|
+
return this[_elementSymbol];
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
/**
|
|
780
|
+
* Sets the rendered root element.
|
|
781
|
+
* @param {HTMLElement} value
|
|
782
|
+
* @ignore
|
|
783
|
+
*/
|
|
784
|
+
set element(value)
|
|
785
|
+
{
|
|
786
|
+
this[_elementSymbol] = value;
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
/**
|
|
790
|
+
* Gets the rendered line break element.
|
|
791
|
+
* @type {HTMLElement|null}
|
|
792
|
+
*/
|
|
793
|
+
get lineBreakElement()
|
|
794
|
+
{
|
|
795
|
+
return this[_lineBreakElementSymbol];
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
/**
|
|
799
|
+
* Sets the rendered line break element.
|
|
800
|
+
* @param {HTMLElement} value
|
|
801
|
+
* @ignore
|
|
802
|
+
*/
|
|
803
|
+
set lineBreakElement(value)
|
|
804
|
+
{
|
|
805
|
+
this[_lineBreakElementSymbol] = value;
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
/**
|
|
810
|
+
* The base class for form field sets (Section, FieldSet).
|
|
811
|
+
* @class
|
|
812
|
+
* @extends BaseField
|
|
813
|
+
* @memberof componyx.UI.Form
|
|
814
|
+
*/
|
|
815
|
+
class BaseSet extends BaseField
|
|
816
|
+
{
|
|
817
|
+
constructor()
|
|
818
|
+
{
|
|
819
|
+
super();
|
|
820
|
+
|
|
821
|
+
/**
|
|
822
|
+
* Gets or sets the header template.
|
|
823
|
+
* @type {HTMLElement|HTMLElement[]|DocumentFragment|string|null}
|
|
824
|
+
*/
|
|
825
|
+
this.headerTemplate = null;
|
|
826
|
+
|
|
827
|
+
/**
|
|
828
|
+
* Gets or sets the footer template.
|
|
829
|
+
* @type {HTMLElement|HTMLElement[]|DocumentFragment|string|null}
|
|
830
|
+
*/
|
|
831
|
+
this.footerTemplate = null;
|
|
832
|
+
|
|
833
|
+
/**
|
|
834
|
+
* Gets or sets an array of field sets (nested field groupings).
|
|
835
|
+
* @type {componyx.UI.Form.BaseSet[]}
|
|
836
|
+
*/
|
|
837
|
+
this.fieldSets = [];
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
/**
|
|
842
|
+
* The Form BuildItem class.
|
|
843
|
+
* @class
|
|
844
|
+
* @extends BaseField
|
|
845
|
+
* @memberof componyx.UI.Form
|
|
846
|
+
*/
|
|
847
|
+
class BuildBlock extends BaseField
|
|
848
|
+
{
|
|
849
|
+
/**
|
|
850
|
+
* @param {BaseFieldProperties | BuildBlockProperties} [properties] The properties used to initialize the object.
|
|
851
|
+
*/
|
|
852
|
+
constructor(properties)
|
|
853
|
+
{
|
|
854
|
+
super();
|
|
855
|
+
|
|
856
|
+
/**
|
|
857
|
+
* Gets or sets the type of the build block or null if it's a custom field. Defaults to input field type.
|
|
858
|
+
* @type {componyx.UI.Form.BlockTypeOption|null}
|
|
859
|
+
*/
|
|
860
|
+
this.blockType = BlockTypeOption.FIELD;
|
|
861
|
+
|
|
862
|
+
/**
|
|
863
|
+
* Gets or sets the input type of the form field or null if it's a custom field.
|
|
864
|
+
* @type {componyx.UI.Form.InputTypeOption|null}
|
|
865
|
+
*/
|
|
866
|
+
this.inputType = null;
|
|
867
|
+
|
|
868
|
+
/**
|
|
869
|
+
* Gets or sets the custom type of the form field.
|
|
870
|
+
* @type {string|null}
|
|
871
|
+
*/
|
|
872
|
+
this.customType = null;
|
|
873
|
+
|
|
874
|
+
/**
|
|
875
|
+
* Gets or sets the identifier of the panel in which the build block is placed.
|
|
876
|
+
* @type {string}
|
|
877
|
+
*/
|
|
878
|
+
this.panelId = '';
|
|
879
|
+
|
|
880
|
+
/**
|
|
881
|
+
* Gets or sets the id of the edit HTML Element or UI component from which the attributes/settings are cloned.
|
|
882
|
+
* @type {string|null}
|
|
883
|
+
*/
|
|
884
|
+
this.inputId = null;
|
|
885
|
+
|
|
886
|
+
/**
|
|
887
|
+
* Gets or sets the field set of the build block when type is set to FIELDSET.
|
|
888
|
+
* @type {componyx.UI.Form.FieldSet|null}
|
|
889
|
+
*/
|
|
890
|
+
this.fieldSet = null;
|
|
891
|
+
|
|
892
|
+
_clone(this, properties);
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
/**
|
|
897
|
+
* The Form Section class.
|
|
898
|
+
* @class
|
|
899
|
+
* @memberof componyx.UI.Form
|
|
900
|
+
* @extends BaseSet
|
|
901
|
+
*/
|
|
902
|
+
class Section extends BaseSet
|
|
903
|
+
{
|
|
904
|
+
/**
|
|
905
|
+
* @param {BaseSetProperties} [properties] The properties used to initialize the object.
|
|
906
|
+
*/
|
|
907
|
+
constructor(properties)
|
|
908
|
+
{
|
|
909
|
+
super();
|
|
910
|
+
_clone(this, properties);
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
/**
|
|
915
|
+
* The Form FieldSet class.
|
|
916
|
+
* @class
|
|
917
|
+
* @memberof componyx.UI.Form
|
|
918
|
+
* @extends BaseField
|
|
919
|
+
*/
|
|
920
|
+
class FieldSet extends BaseSet
|
|
921
|
+
{
|
|
922
|
+
/**
|
|
923
|
+
* @param {BaseSetProperties | FieldSetProperties} [properties] The properties used to initialize the object.
|
|
924
|
+
*/
|
|
925
|
+
constructor(properties)
|
|
926
|
+
{
|
|
927
|
+
super();
|
|
928
|
+
|
|
929
|
+
/**
|
|
930
|
+
* Gets or sets a value indicating if this field set can be used as a root element in the form.
|
|
931
|
+
* @type {boolean}
|
|
932
|
+
*/
|
|
933
|
+
this.allowAsRoot = true;
|
|
934
|
+
|
|
935
|
+
/**
|
|
936
|
+
* Gets or sets the layout of the field set.
|
|
937
|
+
* @type {Form.FieldSetLayoutOption}
|
|
938
|
+
*/
|
|
939
|
+
this.layout = FieldSetLayoutOption.DEFAULT;
|
|
940
|
+
|
|
941
|
+
/**
|
|
942
|
+
* Gets or sets a value indicating if this field set is repeatable.
|
|
943
|
+
* @type {boolean}
|
|
944
|
+
*/
|
|
945
|
+
this.repeatable = false;
|
|
946
|
+
|
|
947
|
+
/**
|
|
948
|
+
* Gets the field set repeat label.
|
|
949
|
+
* @type {string}
|
|
950
|
+
*/
|
|
951
|
+
this.repeatLabel = '';
|
|
952
|
+
|
|
953
|
+
/**
|
|
954
|
+
* Gets or sets how many repeats are allowed for this field set. No value or zero means unlimited repeats.
|
|
955
|
+
* @type {number|null}
|
|
956
|
+
*/
|
|
957
|
+
this.maxRepeats = 0;
|
|
958
|
+
|
|
959
|
+
/**
|
|
960
|
+
* Gets or sets the form fields that belong to the field set.
|
|
961
|
+
* @type {componyx.UI.Form.BaseField[]}
|
|
962
|
+
*/
|
|
963
|
+
this.fields = [];
|
|
964
|
+
|
|
965
|
+
_clone(this, properties);
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
/**
|
|
970
|
+
* The Form Field class.
|
|
971
|
+
* @class
|
|
972
|
+
* @memberof componyx.UI.Form
|
|
973
|
+
* @extends BaseField
|
|
974
|
+
*/
|
|
975
|
+
class Field extends BaseField
|
|
976
|
+
{
|
|
977
|
+
/**
|
|
978
|
+
* @param {BaseFieldProperties | FieldProperties} [properties] The properties used to initialize the object.
|
|
979
|
+
*/
|
|
980
|
+
constructor(properties)
|
|
981
|
+
{
|
|
982
|
+
super();
|
|
983
|
+
|
|
984
|
+
/**
|
|
985
|
+
* Gets or sets the placeholder of the field for when it has no value.
|
|
986
|
+
* @type {string}
|
|
987
|
+
*/
|
|
988
|
+
this.placeholder = '';
|
|
989
|
+
|
|
990
|
+
/**
|
|
991
|
+
* Gets or sets the label display option of the field (above, before, floating, inside).
|
|
992
|
+
* @type {componyx.UI.FormField.LabelDisplayOption}
|
|
993
|
+
*/
|
|
994
|
+
this.labelDisplay = 3;
|
|
995
|
+
|
|
996
|
+
/**
|
|
997
|
+
* Gets or sets the data binding key of the field. If not provided, the field name is used as the key.
|
|
998
|
+
* @type {string}
|
|
999
|
+
*/
|
|
1000
|
+
this.bindingKey = '';
|
|
1001
|
+
|
|
1002
|
+
/**
|
|
1003
|
+
* Gets or sets the role identifier for the field, defining its purpose or behavior.
|
|
1004
|
+
* @type {string}
|
|
1005
|
+
*/
|
|
1006
|
+
this.role = '';
|
|
1007
|
+
|
|
1008
|
+
/**
|
|
1009
|
+
* Gets or sets a value indicating if the data binding (via Bindary) is automatically activated on this form field.
|
|
1010
|
+
* @type {boolean|null}
|
|
1011
|
+
*/
|
|
1012
|
+
this.autoDataBind = null;
|
|
1013
|
+
|
|
1014
|
+
/**
|
|
1015
|
+
* Gets or sets a value indicating if the label should be hidden. Setting is ignored in build mode.
|
|
1016
|
+
* @type {boolean|null}
|
|
1017
|
+
*/
|
|
1018
|
+
this.hideLabel = null;
|
|
1019
|
+
|
|
1020
|
+
/**
|
|
1021
|
+
* Gets or sets a value indicating if the field value is displayed as a label when in view mode.
|
|
1022
|
+
* @type {boolean}
|
|
1023
|
+
*/
|
|
1024
|
+
this.viewAsLabel = false;
|
|
1025
|
+
|
|
1026
|
+
/**
|
|
1027
|
+
* Gets or sets a value indicating whether options are displayed horizontally or stacked vertically.
|
|
1028
|
+
* @type {boolean}
|
|
1029
|
+
*/
|
|
1030
|
+
this.inlineOptions = true;
|
|
1031
|
+
|
|
1032
|
+
/**
|
|
1033
|
+
* Gets or sets the width of a field option (auto - sized by content; 50% - 2 per row; 33% - 3 per row; 25% - 4 per row; 20% - 5 per row).
|
|
1034
|
+
* @type {string}
|
|
1035
|
+
*/
|
|
1036
|
+
this.optionWidth = 'auto';
|
|
1037
|
+
|
|
1038
|
+
/**
|
|
1039
|
+
* Gets or sets the field options for when the input type is set to CHECKBOX or RADIO.
|
|
1040
|
+
* @type {componyx.UI.Form.FieldOption[]}
|
|
1041
|
+
*/
|
|
1042
|
+
this.options = [];
|
|
1043
|
+
|
|
1044
|
+
/**
|
|
1045
|
+
* Gets or sets the input type to render the editable field.
|
|
1046
|
+
* @type {componyx.UI.Form.InputTypeOption|null}
|
|
1047
|
+
*/
|
|
1048
|
+
this.inputType = InputTypeOption.TEXTBOX;
|
|
1049
|
+
|
|
1050
|
+
/**
|
|
1051
|
+
* Gets or sets the custom type of the form field.
|
|
1052
|
+
* @type {string|null}
|
|
1053
|
+
*/
|
|
1054
|
+
this.customType = null;
|
|
1055
|
+
|
|
1056
|
+
/**
|
|
1057
|
+
* Gets or sets the id of the data source used for the field.
|
|
1058
|
+
* @type {string|null}
|
|
1059
|
+
*/
|
|
1060
|
+
this.dataSourceId = null;
|
|
1061
|
+
|
|
1062
|
+
/**
|
|
1063
|
+
* Gets or sets a value indicating if the data source can be previewed in the Form Build mode.
|
|
1064
|
+
* @type {boolean}
|
|
1065
|
+
*/
|
|
1066
|
+
this.dataSourcePreview = true;
|
|
1067
|
+
|
|
1068
|
+
/**
|
|
1069
|
+
* Gets a value indicating if the field is readonly.
|
|
1070
|
+
* @type {boolean}
|
|
1071
|
+
*/
|
|
1072
|
+
this.readOnly = false;
|
|
1073
|
+
|
|
1074
|
+
/**
|
|
1075
|
+
* Gets or sets a value indicating if the field is required.
|
|
1076
|
+
* @type {boolean}
|
|
1077
|
+
*/
|
|
1078
|
+
this.required = false;
|
|
1079
|
+
|
|
1080
|
+
/**
|
|
1081
|
+
* Gets or sets the validation settings of the field.
|
|
1082
|
+
* @type {ValidationSettings}
|
|
1083
|
+
*/
|
|
1084
|
+
this.validationSettings = new ValidationSettings();
|
|
1085
|
+
|
|
1086
|
+
/**
|
|
1087
|
+
* Gets or sets a list of rule cases.
|
|
1088
|
+
* @type {Array<RuleCase>}
|
|
1089
|
+
*/
|
|
1090
|
+
this.ruleCases = [];
|
|
1091
|
+
|
|
1092
|
+
/**
|
|
1093
|
+
* Gets or sets the id of the edit HTML Element (TextBox, TextArea) or UI component from which the attributes/settings are cloned.
|
|
1094
|
+
* @type {string|null}
|
|
1095
|
+
*/
|
|
1096
|
+
this.inputId = null;
|
|
1097
|
+
|
|
1098
|
+
/**
|
|
1099
|
+
* Gets or sets the id of the view HTML Element from which the attributes are cloned.
|
|
1100
|
+
* @type {string|null}
|
|
1101
|
+
*/
|
|
1102
|
+
this.viewElementId = null;
|
|
1103
|
+
|
|
1104
|
+
/**
|
|
1105
|
+
* Gets or sets the id of the FormField component from which the settings are cloned.
|
|
1106
|
+
* @type {string|null}
|
|
1107
|
+
*/
|
|
1108
|
+
this.formFieldId = null;
|
|
1109
|
+
|
|
1110
|
+
_clone(this, properties);
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
/**
|
|
1114
|
+
* Gets the rendered view element.
|
|
1115
|
+
* @type {HTMLElement|null}
|
|
1116
|
+
*/
|
|
1117
|
+
get viewElement()
|
|
1118
|
+
{
|
|
1119
|
+
return this[_viewElementSymbol];
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1122
|
+
/**
|
|
1123
|
+
* Sets the rendered view element.
|
|
1124
|
+
* @param {HTMLElement} value
|
|
1125
|
+
* @ignore
|
|
1126
|
+
*/
|
|
1127
|
+
set viewElement(value)
|
|
1128
|
+
{
|
|
1129
|
+
this[_viewElementSymbol] = value;
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
/**
|
|
1133
|
+
* Gets the rendered edit element.
|
|
1134
|
+
* @type {HTMLElement|null}
|
|
1135
|
+
*/
|
|
1136
|
+
get editElement()
|
|
1137
|
+
{
|
|
1138
|
+
return this[_editElementSymbol];
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1141
|
+
/**
|
|
1142
|
+
* Sets the rendered edit element.
|
|
1143
|
+
* @param {HTMLElement} value
|
|
1144
|
+
* @ignore
|
|
1145
|
+
*/
|
|
1146
|
+
set editElement(value)
|
|
1147
|
+
{
|
|
1148
|
+
this[_editElementSymbol] = value;
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
/**
|
|
1152
|
+
* Gets the rendered edit component.
|
|
1153
|
+
* @type {componyx.UI.Base.Component | componyx.UI.Base.WebComponent | HTMLElement}
|
|
1154
|
+
*/
|
|
1155
|
+
get renderedEditComponent()
|
|
1156
|
+
{
|
|
1157
|
+
return this[_renderedEditComponentSymbol];
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
set renderedEditComponent(value)
|
|
1161
|
+
{
|
|
1162
|
+
this[_renderedEditComponentSymbol] = value;
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
|
|
1167
|
+
|
|
1168
|
+
/**
|
|
1169
|
+
* The Form FieldOption class.
|
|
1170
|
+
* @class
|
|
1171
|
+
* @memberof componyx.UI.Form
|
|
1172
|
+
* @extends BaseField
|
|
1173
|
+
*/
|
|
1174
|
+
class FieldOption extends BaseField
|
|
1175
|
+
{
|
|
1176
|
+
/**
|
|
1177
|
+
* @param {BaseFieldProperties | FieldOptionProperties} [properties] The properties used to initialize the object.
|
|
1178
|
+
*/
|
|
1179
|
+
constructor(properties)
|
|
1180
|
+
{
|
|
1181
|
+
super();
|
|
1182
|
+
|
|
1183
|
+
/**
|
|
1184
|
+
* Gets or sets a value indicating if the option is selected/checked.
|
|
1185
|
+
* @type {boolean}
|
|
1186
|
+
*/
|
|
1187
|
+
this.selected = false;
|
|
1188
|
+
|
|
1189
|
+
/**
|
|
1190
|
+
* Gets or sets the id of the HTML Element from which the attributes are cloned.
|
|
1191
|
+
* @type {string|null}
|
|
1192
|
+
*/
|
|
1193
|
+
this.inputId = null;
|
|
1194
|
+
|
|
1195
|
+
/**
|
|
1196
|
+
* Gets or sets the id of the FormField component from which the settings are cloned.
|
|
1197
|
+
* @type {string|null}
|
|
1198
|
+
*/
|
|
1199
|
+
this.formFieldId = null;
|
|
1200
|
+
|
|
1201
|
+
_clone(this, properties);
|
|
1202
|
+
}
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1205
|
+
/**
|
|
1206
|
+
* The Form ContentField class.
|
|
1207
|
+
* @class
|
|
1208
|
+
* @memberof componyx.UI.Form
|
|
1209
|
+
* @extends BaseField
|
|
1210
|
+
*/
|
|
1211
|
+
class ContentField extends BaseField
|
|
1212
|
+
{
|
|
1213
|
+
/**
|
|
1214
|
+
* @param {BaseFieldProperties | ContentFieldProperties} [properties] The properties used to initialize the object.
|
|
1215
|
+
*/
|
|
1216
|
+
constructor(properties)
|
|
1217
|
+
{
|
|
1218
|
+
super();
|
|
1219
|
+
|
|
1220
|
+
/**
|
|
1221
|
+
* Gets or sets a value indicating whether the HTML content of this field is trusted.
|
|
1222
|
+
* @type {boolean}
|
|
1223
|
+
*/
|
|
1224
|
+
this.trustHTML = false;
|
|
1225
|
+
|
|
1226
|
+
/**
|
|
1227
|
+
* Gets or sets the margin of the content field.
|
|
1228
|
+
* @type {string|null}
|
|
1229
|
+
*/
|
|
1230
|
+
this.margin = null;
|
|
1231
|
+
|
|
1232
|
+
/**
|
|
1233
|
+
* Gets or sets the padding of the content field.
|
|
1234
|
+
* @type {string|null}
|
|
1235
|
+
*/
|
|
1236
|
+
this.padding = null;
|
|
1237
|
+
|
|
1238
|
+
/**
|
|
1239
|
+
* Gets or sets the border width of the content field.
|
|
1240
|
+
* @type {number|null}
|
|
1241
|
+
*/
|
|
1242
|
+
this.borderWidth = null;
|
|
1243
|
+
|
|
1244
|
+
/**
|
|
1245
|
+
* Gets or sets the border radius of the content field.
|
|
1246
|
+
* @type {string|null}
|
|
1247
|
+
*/
|
|
1248
|
+
this.borderRadius = null;
|
|
1249
|
+
|
|
1250
|
+
/**
|
|
1251
|
+
* Gets or sets the border color of the content field.
|
|
1252
|
+
* @type {string|null}
|
|
1253
|
+
*/
|
|
1254
|
+
this.borderColor = null;
|
|
1255
|
+
|
|
1256
|
+
/**
|
|
1257
|
+
* Gets or sets the background color of the content field.
|
|
1258
|
+
* @type {string|null}
|
|
1259
|
+
*/
|
|
1260
|
+
this.backgroundColor = null;
|
|
1261
|
+
|
|
1262
|
+
_clone(this, properties);
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
|
|
1266
|
+
/**
|
|
1267
|
+
* The Form SpacerField class.
|
|
1268
|
+
* @class
|
|
1269
|
+
* @memberof componyx.UI.Form
|
|
1270
|
+
* @extends BaseField
|
|
1271
|
+
*/
|
|
1272
|
+
class SpacerField extends BaseField
|
|
1273
|
+
{
|
|
1274
|
+
/**
|
|
1275
|
+
* @param {BaseFieldProperties | SpacerFieldProperties} [properties] The properties used to initialize the object.
|
|
1276
|
+
*/
|
|
1277
|
+
constructor(properties)
|
|
1278
|
+
{
|
|
1279
|
+
super();
|
|
1280
|
+
|
|
1281
|
+
this.width = '100%';
|
|
1282
|
+
|
|
1283
|
+
/**
|
|
1284
|
+
* Gets or sets a value indicating whether the divider line is rendered in the middle of the spacer.
|
|
1285
|
+
* @type {boolean}
|
|
1286
|
+
*/
|
|
1287
|
+
this.showDivider = false;
|
|
1288
|
+
|
|
1289
|
+
/**
|
|
1290
|
+
* Gets or sets the height of the spacer field.
|
|
1291
|
+
* @type {string|null}
|
|
1292
|
+
*/
|
|
1293
|
+
this.height = null;
|
|
1294
|
+
|
|
1295
|
+
_clone(this, properties);
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
|
|
1299
|
+
/**
|
|
1300
|
+
* The Form ComponentSettings class.
|
|
1301
|
+
* @class
|
|
1302
|
+
* @memberof componyx.UI.Form
|
|
1303
|
+
* @extends BaseType
|
|
1304
|
+
* @implements {ComponentSettingsType}
|
|
1305
|
+
*/
|
|
1306
|
+
class ComponentSettings extends BaseType
|
|
1307
|
+
{
|
|
1308
|
+
constructor()
|
|
1309
|
+
{
|
|
1310
|
+
super();
|
|
1311
|
+
}
|
|
1312
|
+
}
|
|
1313
|
+
|
|
1314
|
+
/**
|
|
1315
|
+
* The Form ValidationSettings class.
|
|
1316
|
+
* @class
|
|
1317
|
+
* @memberof componyx.UI.Form
|
|
1318
|
+
* @extends BaseType
|
|
1319
|
+
*/
|
|
1320
|
+
class ValidationSettings extends BaseType
|
|
1321
|
+
{
|
|
1322
|
+
/**
|
|
1323
|
+
* @param {Object} [properties] The properties used to initialize the object.
|
|
1324
|
+
* @param {Number} [properties.dataType] Gets or sets the expected data type of the field. INTEGER: 0, FLOAT: 1, DATETIME: 2, EMAIL: 3, URL: 4, SOURCE: 5
|
|
1325
|
+
* @param {String} [properties.compareFieldId] Gets or sets the comparison field identifier for the field.
|
|
1326
|
+
* @param {String} [properties.compareOperator] Gets or sets the comparison operator for the field.
|
|
1327
|
+
* @param {Number} [properties.minLength] Gets or sets the minimum length allowed for the field value.
|
|
1328
|
+
* @param {Number} [properties.maxLength] Gets or sets the maximum length allowed for the field value.
|
|
1329
|
+
* @param {Number} [properties.minRange] Gets or sets the minimum range allowed for the field value.
|
|
1330
|
+
* @param {Number} [properties.maxRange] Gets or sets the maximum range allowed for the field value.
|
|
1331
|
+
* @param {String} [properties.pattern] Gets or sets the regex pattern that the field value must match.
|
|
1332
|
+
*/
|
|
1333
|
+
constructor(properties)
|
|
1334
|
+
{
|
|
1335
|
+
super();
|
|
1336
|
+
|
|
1337
|
+
/**
|
|
1338
|
+
* Gets or sets the expected data type of the field. INTEGER: 0, FLOAT: 1, DATETIME: 2, EMAIL: 3, URL: 4, SOURCE: 5
|
|
1339
|
+
* @type {number|null}
|
|
1340
|
+
*/
|
|
1341
|
+
this.dataType = null;
|
|
1342
|
+
|
|
1343
|
+
/**
|
|
1344
|
+
* Gets or sets the comparison field identifier for the field.
|
|
1345
|
+
* @type {string|Object|null}
|
|
1346
|
+
*/
|
|
1347
|
+
this.compareFieldId = null;
|
|
1348
|
+
|
|
1349
|
+
/**
|
|
1350
|
+
* Gets or sets the comparison operator for the field.
|
|
1351
|
+
* @type {string|null}
|
|
1352
|
+
*/
|
|
1353
|
+
this.compareOperator = null;
|
|
1354
|
+
|
|
1355
|
+
/**
|
|
1356
|
+
* Gets or sets the minimum length allowed for the field value.
|
|
1357
|
+
* @type {number|null}
|
|
1358
|
+
*/
|
|
1359
|
+
this.minLength = null;
|
|
1360
|
+
|
|
1361
|
+
/**
|
|
1362
|
+
* Gets or sets the maximum length allowed for the field value.
|
|
1363
|
+
* @type {number|null}
|
|
1364
|
+
*/
|
|
1365
|
+
this.maxLength = null;
|
|
1366
|
+
|
|
1367
|
+
/**
|
|
1368
|
+
* Gets or sets the minimum range allowed for the field value.
|
|
1369
|
+
* @type {number|null}
|
|
1370
|
+
*/
|
|
1371
|
+
this.minRange = null;
|
|
1372
|
+
|
|
1373
|
+
/**
|
|
1374
|
+
* Gets or sets the maximum range allowed for the field value.
|
|
1375
|
+
* @type {number|null}
|
|
1376
|
+
*/
|
|
1377
|
+
this.maxRange = null;
|
|
1378
|
+
|
|
1379
|
+
/**
|
|
1380
|
+
* Gets or sets the regex pattern that the field value must match.
|
|
1381
|
+
* @type {string|null}
|
|
1382
|
+
*/
|
|
1383
|
+
this.pattern = null;
|
|
1384
|
+
|
|
1385
|
+
_clone(this, properties);
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1389
|
+
/**
|
|
1390
|
+
* The Form Command class.
|
|
1391
|
+
* @class
|
|
1392
|
+
* @memberof componyx.UI.Form
|
|
1393
|
+
*/
|
|
1394
|
+
class Command
|
|
1395
|
+
{
|
|
1396
|
+
/**
|
|
1397
|
+
* @param {Object} [properties] The properties used to initialize the object.
|
|
1398
|
+
* @param {String} [properties.id] Gets or sets the id of the command. The id is generated if it's not set.
|
|
1399
|
+
* @param {String|Function} [properties.command] Gets or sets the command that the button triggers (e.g. 'undo', 'redo').
|
|
1400
|
+
* @param {Function} [properties.isVisible] Gets or sets a predicate function that returns `true` when this button should be shown. No value set means always visible.
|
|
1401
|
+
* @param {Function} [properties.isEnabled] Gets or sets a predicate function that returns `true` when this button should be enabled; return `false` to disable it. No value set means always enabled.
|
|
1402
|
+
* @param {String} [properties.shortcutKey] Gets or sets the keyboard shortcut key in combination with the CTRL key for this button (e.g. 'z' for undo).
|
|
1403
|
+
* @param {String} [properties.cssClass=''] Gets or sets the CSS class name for the button.
|
|
1404
|
+
* @param {String} [properties.cssClassIcon='ico-undo'] Gets or sets the CSS class name for the icon to display.
|
|
1405
|
+
* @param {Object} [properties.events=null] Gets or sets the events of the button component.
|
|
1406
|
+
* @param {String|null} [properties.buttonId=null] Gets or sets the id of the button component from which the settings are cloned.
|
|
1407
|
+
*/
|
|
1408
|
+
constructor(properties)
|
|
1409
|
+
{
|
|
1410
|
+
/**
|
|
1411
|
+
* Gets or sets the id of the command. The id is generated if it's not set.
|
|
1412
|
+
* @type {string|null}
|
|
1413
|
+
*/
|
|
1414
|
+
this.id = null;
|
|
1415
|
+
|
|
1416
|
+
/**
|
|
1417
|
+
* Gets or sets the command to execute.
|
|
1418
|
+
* @type {Function|null}
|
|
1419
|
+
*/
|
|
1420
|
+
this.command = null;
|
|
1421
|
+
|
|
1422
|
+
/**
|
|
1423
|
+
* Gets or sets a predicate function that returns `true` when this button should be shown.
|
|
1424
|
+
* @type {Function|null}
|
|
1425
|
+
*/
|
|
1426
|
+
this.isVisible = null;
|
|
1427
|
+
|
|
1428
|
+
/**
|
|
1429
|
+
* Gets or sets a predicate function that returns `true` when this button should be enabled; return `false` to disable it.
|
|
1430
|
+
* @type {Function|null}
|
|
1431
|
+
*/
|
|
1432
|
+
this.isEnabled = null;
|
|
1433
|
+
|
|
1434
|
+
/**
|
|
1435
|
+
* Gets or sets the keyboard shortcut key in combination with the CTRL key for this button (e.g. 'z' for undo).
|
|
1436
|
+
* @type {string}
|
|
1437
|
+
*/
|
|
1438
|
+
this.shortcutKey = '';
|
|
1439
|
+
|
|
1440
|
+
/**
|
|
1441
|
+
* Gets or sets the CSS class name for the button.
|
|
1442
|
+
* @type {string}
|
|
1443
|
+
*/
|
|
1444
|
+
this.cssClass = '';
|
|
1445
|
+
|
|
1446
|
+
/**
|
|
1447
|
+
* Gets or sets the CSS class name for the icon to display.
|
|
1448
|
+
* @type {string}
|
|
1449
|
+
*/
|
|
1450
|
+
this.cssClassIcon = '';
|
|
1451
|
+
|
|
1452
|
+
/**
|
|
1453
|
+
* Gets or sets the location of the command button.
|
|
1454
|
+
* @type {Form.CommandLocationOption}
|
|
1455
|
+
*/
|
|
1456
|
+
this.location = CommandLocationOption.HEADER;
|
|
1457
|
+
|
|
1458
|
+
/**
|
|
1459
|
+
* Gets or sets the events of the button component.
|
|
1460
|
+
* @type {Object|null}
|
|
1461
|
+
*/
|
|
1462
|
+
this.events = null;
|
|
1463
|
+
|
|
1464
|
+
/**
|
|
1465
|
+
* Gets or sets the id of the button component from which the settings are cloned.
|
|
1466
|
+
* @type {string|null}
|
|
1467
|
+
*/
|
|
1468
|
+
this.buttonId = null;
|
|
1469
|
+
|
|
1470
|
+
_clone(this, properties);
|
|
1471
|
+
}
|
|
1472
|
+
}
|
|
1473
|
+
|
|
1474
|
+
/**
|
|
1475
|
+
* The RuleCase class represents a case of rules that result in actions.
|
|
1476
|
+
* @class
|
|
1477
|
+
* @memberof componyx.UI.Form
|
|
1478
|
+
* @extends BaseType
|
|
1479
|
+
*/
|
|
1480
|
+
class RuleCase extends BaseType
|
|
1481
|
+
{
|
|
1482
|
+
constructor()
|
|
1483
|
+
{
|
|
1484
|
+
super();
|
|
1485
|
+
|
|
1486
|
+
/**
|
|
1487
|
+
* Gets or sets the id. The id is generated if it's not set.
|
|
1488
|
+
* @type {String}
|
|
1489
|
+
*/
|
|
1490
|
+
this.id = null;
|
|
1491
|
+
|
|
1492
|
+
/**
|
|
1493
|
+
* Gets or sets the trigger of the RuleCase. Determines when this case executes.
|
|
1494
|
+
* @type {RuleCaseTriggerOption}
|
|
1495
|
+
*/
|
|
1496
|
+
this.trigger = null;
|
|
1497
|
+
|
|
1498
|
+
/**
|
|
1499
|
+
* Gets or sets a value indicating if this rule case is run when the field is visible (default), hidden or when even it's section is hidden.
|
|
1500
|
+
* @type {RuleCaseRunVisibilityOption}
|
|
1501
|
+
*/
|
|
1502
|
+
this.runVisibility = null;
|
|
1503
|
+
|
|
1504
|
+
/**
|
|
1505
|
+
* Gets or sets the array of RuleGroup objects in this case.
|
|
1506
|
+
* @type {Array<RuleGroup>}
|
|
1507
|
+
*/
|
|
1508
|
+
this.ruleGroups = [];
|
|
1509
|
+
|
|
1510
|
+
/**
|
|
1511
|
+
* Gets or sets a list of actions to execute when the rule condition is met. Each action is an object with a type and optional value.
|
|
1512
|
+
* @type {Array<Action>}
|
|
1513
|
+
*/
|
|
1514
|
+
this.actions = [];
|
|
1515
|
+
}
|
|
1516
|
+
}
|
|
1517
|
+
|
|
1518
|
+
/**
|
|
1519
|
+
* The RuleGroup class represents a group of rules combined with a logical operator.
|
|
1520
|
+
* @class
|
|
1521
|
+
* @memberof componyx.UI.Form
|
|
1522
|
+
* @extends BaseType
|
|
1523
|
+
*/
|
|
1524
|
+
class RuleGroup extends BaseType
|
|
1525
|
+
{
|
|
1526
|
+
constructor()
|
|
1527
|
+
{
|
|
1528
|
+
super();
|
|
1529
|
+
|
|
1530
|
+
/**
|
|
1531
|
+
* Gets or sets the id. The id is generated if it's not set.
|
|
1532
|
+
* @type {String}
|
|
1533
|
+
*/
|
|
1534
|
+
this.id = null;
|
|
1535
|
+
|
|
1536
|
+
/**
|
|
1537
|
+
* Gets or sets the array of Rule objects in this group.
|
|
1538
|
+
* @type {Array<Rule>}
|
|
1539
|
+
*/
|
|
1540
|
+
this.rules = [];
|
|
1541
|
+
|
|
1542
|
+
/**
|
|
1543
|
+
* Gets or sets the logical operator to combine the rules: 'AND' or 'OR'.
|
|
1544
|
+
* @type {string}
|
|
1545
|
+
*/
|
|
1546
|
+
this.logicalOperator = null;
|
|
1547
|
+
}
|
|
1548
|
+
}
|
|
1549
|
+
|
|
1550
|
+
/**
|
|
1551
|
+
* The Rule class represents a single conditional rule for a field.
|
|
1552
|
+
* @class
|
|
1553
|
+
* @memberof componyx.UI.Form
|
|
1554
|
+
* @extends BaseType
|
|
1555
|
+
*/
|
|
1556
|
+
class Rule extends BaseType
|
|
1557
|
+
{
|
|
1558
|
+
constructor()
|
|
1559
|
+
{
|
|
1560
|
+
super();
|
|
1561
|
+
|
|
1562
|
+
/**
|
|
1563
|
+
* Gets or sets the id. The id is generated if it's not set.
|
|
1564
|
+
* @type {String}
|
|
1565
|
+
*/
|
|
1566
|
+
this.id = null;
|
|
1567
|
+
|
|
1568
|
+
/**
|
|
1569
|
+
* Gets or sets the id of the field/fieldset that this rule applies to.
|
|
1570
|
+
* @type {string|null}
|
|
1571
|
+
*/
|
|
1572
|
+
this.sourceId = null;
|
|
1573
|
+
|
|
1574
|
+
/**
|
|
1575
|
+
* Gets or sets the logical operator to combine the rules: 'AND' or 'OR'.
|
|
1576
|
+
* @type {string|null}
|
|
1577
|
+
*/
|
|
1578
|
+
this.logicalOperator = null;
|
|
1579
|
+
|
|
1580
|
+
/**
|
|
1581
|
+
* Gets or sets the comparison operator for evaluation (e.g., equals, greater than).
|
|
1582
|
+
* @type {RuleComparisonOperatorOption}
|
|
1583
|
+
*/
|
|
1584
|
+
this.comparisonOperator = null;
|
|
1585
|
+
|
|
1586
|
+
/**
|
|
1587
|
+
* Gets or sets the value to compare against.
|
|
1588
|
+
* @type {*}
|
|
1589
|
+
*/
|
|
1590
|
+
this.value = null;
|
|
1591
|
+
|
|
1592
|
+
/**
|
|
1593
|
+
* Gets or sets a value indicating if the set value is the end value of a range.
|
|
1594
|
+
* @type {boolean}
|
|
1595
|
+
*/
|
|
1596
|
+
this.isRangeEnd = null;
|
|
1597
|
+
}
|
|
1598
|
+
}
|
|
1599
|
+
|
|
1600
|
+
/**
|
|
1601
|
+
* Represents an action to execute when a rule case condition is met.
|
|
1602
|
+
* @class
|
|
1603
|
+
* @memberof componyx.UI.Form
|
|
1604
|
+
* @extends BaseType
|
|
1605
|
+
*/
|
|
1606
|
+
class Action extends BaseType
|
|
1607
|
+
{
|
|
1608
|
+
/**
|
|
1609
|
+
* @param {Object} [properties] The properties used to initialize the object.
|
|
1610
|
+
* @param {string} [properties.id] - Gets or sets the id of the action.
|
|
1611
|
+
* @param {string} [properties.runtimeActionId] - Gets or sets the unique id of the registered runtime action to execute.
|
|
1612
|
+
* @param {any} [properties.targetFieldSetId] - Gets or sets the id of the target field set.
|
|
1613
|
+
* @param {any} [properties.value] - Gets or sets the value associated with the action.
|
|
1614
|
+
*/
|
|
1615
|
+
constructor(properties)
|
|
1616
|
+
{
|
|
1617
|
+
super();
|
|
1618
|
+
|
|
1619
|
+
/**
|
|
1620
|
+
* Gets or sets the id of the action.
|
|
1621
|
+
* @type {String}
|
|
1622
|
+
*/
|
|
1623
|
+
this.id = null;
|
|
1624
|
+
|
|
1625
|
+
/**
|
|
1626
|
+
* Gets or sets the unique id of the registered runtime action to execute.
|
|
1627
|
+
* @type {String}
|
|
1628
|
+
*/
|
|
1629
|
+
this.runtimeActionId = null;
|
|
1630
|
+
|
|
1631
|
+
/**
|
|
1632
|
+
* Gets or sets the id of the target field set.
|
|
1633
|
+
* @type {String}
|
|
1634
|
+
*/
|
|
1635
|
+
this.targetFieldSetId = null;
|
|
1636
|
+
|
|
1637
|
+
/**
|
|
1638
|
+
* Gets or sets the value associated with the action.
|
|
1639
|
+
* @type {*}
|
|
1640
|
+
*/
|
|
1641
|
+
this.value = null;
|
|
1642
|
+
|
|
1643
|
+
_clone(this, properties);
|
|
1644
|
+
}
|
|
1645
|
+
}
|
|
1646
|
+
|
|
1647
|
+
/**
|
|
1648
|
+
* @typedef {object} Types
|
|
1649
|
+
* @property {CommandLocationOption} CommandLocationOption
|
|
1650
|
+
* @property {BlockTypeOption} BlockTypeOption
|
|
1651
|
+
* @property {InputTypeOption} InputTypeOption
|
|
1652
|
+
* @property {DisplayModeOption} DisplayModeOption
|
|
1653
|
+
* @property {FieldSetLayoutOption} FieldSetLayoutOption
|
|
1654
|
+
* @property {RuleCaseTriggerOption} RuleCaseTriggerOption
|
|
1655
|
+
* @property {RuleCaseRunVisibilityOption} RuleCaseRunVisibilityOption
|
|
1656
|
+
* @property {RuleComparisonOperatorOption} RuleComparisonOperatorOption
|
|
1657
|
+
* @property {FieldRole} FieldRole
|
|
1658
|
+
* @property {ServerEndpoint} ServerEndpoint
|
|
1659
|
+
* @property {DataSource} DataSource
|
|
1660
|
+
* @property {BuildBlock} BuildBlock
|
|
1661
|
+
* @property {BaseField} BaseField
|
|
1662
|
+
* @property {Section} Section
|
|
1663
|
+
* @property {FieldSet} FieldSet
|
|
1664
|
+
* @property {Field} Field
|
|
1665
|
+
* @property {FieldOption} FieldOption
|
|
1666
|
+
* @property {ContentField} ContentField
|
|
1667
|
+
* @property {SpacerField} SpacerField
|
|
1668
|
+
* @property {ComponentSettings} ComponentSettings
|
|
1669
|
+
* @property {ValidationSettings} ValidationSettings
|
|
1670
|
+
* @property {Command} Command
|
|
1671
|
+
* @property {RuleCase} RuleCase
|
|
1672
|
+
* @property {RuleGroup} RuleGroup
|
|
1673
|
+
* @property {Rule} Rule
|
|
1674
|
+
* @property {Action} Action
|
|
1675
|
+
* @ignore
|
|
1676
|
+
*/
|
|
1677
|
+
componyx.UI.form_modules.Types =
|
|
1678
|
+
{
|
|
1679
|
+
CommandLocationOption,
|
|
1680
|
+
BlockTypeOption,
|
|
1681
|
+
InputTypeOption,
|
|
1682
|
+
DisplayModeOption,
|
|
1683
|
+
FieldSetLayoutOption,
|
|
1684
|
+
RuleCaseTriggerOption,
|
|
1685
|
+
RuleCaseRunVisibilityOption,
|
|
1686
|
+
RuleComparisonOperatorOption,
|
|
1687
|
+
FieldRole,
|
|
1688
|
+
ServerEndpoint,
|
|
1689
|
+
DataSource,
|
|
1690
|
+
BuildBlock,
|
|
1691
|
+
BaseField,
|
|
1692
|
+
Section,
|
|
1693
|
+
FieldSet,
|
|
1694
|
+
Field,
|
|
1695
|
+
FieldOption,
|
|
1696
|
+
ContentField,
|
|
1697
|
+
SpacerField,
|
|
1698
|
+
ComponentSettings,
|
|
1699
|
+
ValidationSettings,
|
|
1700
|
+
Command,
|
|
1701
|
+
RuleCase,
|
|
1702
|
+
RuleGroup,
|
|
1703
|
+
Rule,
|
|
1704
|
+
Action
|
|
1705
|
+
};
|
|
1706
|
+
|
|
1707
|
+
var Types = componyx.UI.form_modules.Types;
|
|
1708
|
+
|
|
1709
|
+
export { Types as default };
|