@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.
Files changed (169) hide show
  1. package/AppSkin/AppSkin.css +1268 -0
  2. package/AppSkin/AppSkin.js +2748 -0
  3. package/AppSkin/Themes/Default.css +241 -0
  4. package/Base/Base.js +3407 -0
  5. package/Base/ComponentIcons.css +66 -0
  6. package/Base/Font/ComponentIcons.woff +0 -0
  7. package/Base/Font/UI.woff +0 -0
  8. package/Base/Library.js +8432 -0
  9. package/Base/NavigationManager.js +462 -0
  10. package/Base/ResponsiveTemplates.js +371 -0
  11. package/Base/Sanitizer.js +288 -0
  12. package/Base/Themes/Default.css +255 -0
  13. package/Base/UI.css +618 -0
  14. package/Base/UIResourcePath.js +6 -0
  15. package/Bindary/Bindary.js +2011 -0
  16. package/Bindary/Modules/Connection.js +216 -0
  17. package/Bindary/Modules/Core.js +854 -0
  18. package/Bindary/Modules/DataUpdater.js +351 -0
  19. package/Bindary/Modules/ExpressionEngine.js +347 -0
  20. package/Bindary/Modules/ProxyManager.js +482 -0
  21. package/Bindary/Modules/Renderer.js +605 -0
  22. package/Bindary/Modules/Router.js +291 -0
  23. package/Bindary/Modules/Scroller.js +89 -0
  24. package/Bindary/Modules/Template.js +1273 -0
  25. package/BookmarkSpy/BookmarkSpy.js +430 -0
  26. package/Box/Box.css +36 -0
  27. package/Box/Box.js +1685 -0
  28. package/Button/Button.css +470 -0
  29. package/Button/Button.js +1398 -0
  30. package/Button/Themes/Default.css +200 -0
  31. package/Carousel/Carousel.css +273 -0
  32. package/Carousel/Carousel.js +607 -0
  33. package/ColorButton/ColorButton.css +39 -0
  34. package/ColorButton/ColorButton.js +336 -0
  35. package/ColorPicker/ColorPicker.css +359 -0
  36. package/ColorPicker/ColorPicker.js +972 -0
  37. package/ComboBox/ComboBox.css +357 -0
  38. package/ComboBox/ComboBox.js +2342 -0
  39. package/ComboBox/Themes/Default.css +23 -0
  40. package/DataPager/DataPager.css +72 -0
  41. package/DataPager/DataPager.js +674 -0
  42. package/DatePicker/DatePicker.css +227 -0
  43. package/DatePicker/DatePicker.js +1531 -0
  44. package/DatePicker/Themes/Default.css +26 -0
  45. package/Dialog/Dialog.css +106 -0
  46. package/Dialog/Dialog.js +572 -0
  47. package/Dialog/Themes/Default.css +10 -0
  48. package/Editor/Data/Emoji.json +8285 -0
  49. package/Editor/Data/Special.json +1042 -0
  50. package/Editor/Editor.css +1562 -0
  51. package/Editor/Editor.js +4058 -0
  52. package/Editor/Font/Editor.woff +0 -0
  53. package/Editor/Modules/ComponentFactory.js +565 -0
  54. package/Editor/Modules/ContentManager.js +748 -0
  55. package/Editor/Modules/DialogManager.js +1234 -0
  56. package/Editor/Modules/EventManager.js +458 -0
  57. package/Editor/Modules/Format.js +950 -0
  58. package/Editor/Modules/History.js +191 -0
  59. package/Editor/Modules/LayoutState.js +379 -0
  60. package/Editor/Modules/ListManager.js +296 -0
  61. package/Editor/Modules/MenuManager.js +388 -0
  62. package/Editor/Modules/NodeManager.js +681 -0
  63. package/Editor/Modules/ParagraphButtons.js +122 -0
  64. package/Editor/Modules/Resizer.js +176 -0
  65. package/Editor/Modules/SelectionRange.js +564 -0
  66. package/Editor/Modules/SourceViewBuilder.js +212 -0
  67. package/Editor/Modules/SymbolPicker.js +208 -0
  68. package/Editor/Modules/Table.js +2327 -0
  69. package/Editor/Modules/TableDialog.js +757 -0
  70. package/Editor/Modules/Toolbar.js +375 -0
  71. package/Editor/Modules/TooltipMenu.js +125 -0
  72. package/Editor/Modules/Utility.js +131 -0
  73. package/Editor/Themes/Default.css +204 -0
  74. package/FileUpload/FileUpload.css +156 -0
  75. package/FileUpload/FileUpload.js +898 -0
  76. package/FileUpload/Themes/Default.css +17 -0
  77. package/Form/Form.css +1934 -0
  78. package/Form/Form.js +4943 -0
  79. package/Form/Modules/ActionManager.js +368 -0
  80. package/Form/Modules/BuildPanelManager.js +319 -0
  81. package/Form/Modules/ComponentFactory.js +468 -0
  82. package/Form/Modules/ComponentPanel.js +265 -0
  83. package/Form/Modules/ConfigPanelManager.js +685 -0
  84. package/Form/Modules/DataBinder.js +602 -0
  85. package/Form/Modules/DataObserver.js +717 -0
  86. package/Form/Modules/Draggable.js +756 -0
  87. package/Form/Modules/OptionsPanel.js +342 -0
  88. package/Form/Modules/Renderer.js +1889 -0
  89. package/Form/Modules/RuleEngine.js +585 -0
  90. package/Form/Modules/RulesPanel.js +1158 -0
  91. package/Form/Modules/Types.js +1709 -0
  92. package/Form/Modules/ValidationManager.js +194 -0
  93. package/Form/Themes/Default.css +216 -0
  94. package/FormField/FormField.css +468 -0
  95. package/FormField/FormField.js +576 -0
  96. package/FormField/Themes/Default.css +99 -0
  97. package/Grid/Grid.css +544 -0
  98. package/Grid/Grid.js +3761 -0
  99. package/Grid/Themes/Default.css +43 -0
  100. package/LICENSE +126 -0
  101. package/MaskedTextBox/MaskedTextBox.css +28 -0
  102. package/MaskedTextBox/MaskedTextBox.js +642 -0
  103. package/MaskedTextBox/Themes/Default.css +6 -0
  104. package/Menu/Menu.css +328 -0
  105. package/Menu/Menu.js +2386 -0
  106. package/Menu/Themes/Default.css +24 -0
  107. package/NumericBox/NumericBox.css +120 -0
  108. package/NumericBox/NumericBox.js +984 -0
  109. package/PanelBar/PanelBar.css +123 -0
  110. package/PanelBar/PanelBar.js +505 -0
  111. package/PanelBar/Themes/Default.css +51 -0
  112. package/PieChart/PieChart.css +95 -0
  113. package/PieChart/PieChart.js +820 -0
  114. package/PieChart/Themes/Default.css +9 -0
  115. package/README.md +178 -3
  116. package/Slider/Slider.css +348 -0
  117. package/Slider/Slider.js +1306 -0
  118. package/Slider/Themes/Default.css +44 -0
  119. package/TabStrip/TabStrip.css +52 -0
  120. package/TabStrip/TabStrip.js +362 -0
  121. package/TabStrip/Themes/Default.css +35 -0
  122. package/TimePicker/Themes/Default.css +30 -0
  123. package/TimePicker/TimePicker.css +253 -0
  124. package/TimePicker/TimePicker.js +1485 -0
  125. package/TooltipManager/Themes/Default.css +21 -0
  126. package/TooltipManager/TooltipManager.css +227 -0
  127. package/TooltipManager/TooltipManager.js +791 -0
  128. package/Validator/Validator.css +54 -0
  129. package/Validator/Validator.js +2508 -0
  130. package/componyx.html-data.json +619 -0
  131. package/index.js +27 -0
  132. package/package.json +43 -4
  133. package/types/AppSkin.d.ts +842 -0
  134. package/types/Base.d.ts +1034 -0
  135. package/types/Bindary.d.ts +1196 -0
  136. package/types/BookmarkSpy.d.ts +112 -0
  137. package/types/Box.d.ts +374 -0
  138. package/types/Button.d.ts +455 -0
  139. package/types/Carousel.d.ts +136 -0
  140. package/types/ColorButton.d.ts +120 -0
  141. package/types/ColorPicker.d.ts +225 -0
  142. package/types/ComboBox.d.ts +507 -0
  143. package/types/DataPager.d.ts +152 -0
  144. package/types/DatePicker.d.ts +354 -0
  145. package/types/Dialog.d.ts +160 -0
  146. package/types/Editor.d.ts +1289 -0
  147. package/types/FileUpload.d.ts +206 -0
  148. package/types/Form.d.ts +3078 -0
  149. package/types/FormField.d.ts +204 -0
  150. package/types/Grid.d.ts +911 -0
  151. package/types/Library.d.ts +1899 -0
  152. package/types/MaskedTextBox.d.ts +91 -0
  153. package/types/Menu.d.ts +577 -0
  154. package/types/NumericBox.d.ts +310 -0
  155. package/types/PanelBar.d.ts +223 -0
  156. package/types/PieChart.d.ts +224 -0
  157. package/types/ResponsiveTemplates.d.ts +108 -0
  158. package/types/Slider.d.ts +227 -0
  159. package/types/TabStrip.d.ts +185 -0
  160. package/types/TimePicker.d.ts +265 -0
  161. package/types/TooltipManager.d.ts +178 -0
  162. package/types/UI.d.ts +29 -0
  163. package/types/Validator.d.ts +653 -0
  164. package/types/index.d.ts +59 -0
  165. package/ui.css +11783 -0
  166. package/ui.js +79477 -0
  167. package/ui.min.css +138 -0
  168. package/ui.min.js +264 -0
  169. 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 };