@syncfusion/ej2-form-renderer 34.2.8 → 35.1.37

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 (215) hide show
  1. package/dist/ej2-form-renderer.umd.min.js +2 -2
  2. package/dist/ej2-form-renderer.umd.min.js.map +1 -1
  3. package/dist/es6/ej2-form-renderer.es2015.js +3261 -1523
  4. package/dist/es6/ej2-form-renderer.es2015.js.map +1 -1
  5. package/dist/es6/ej2-form-renderer.es5.js +3316 -1540
  6. package/dist/es6/ej2-form-renderer.es5.js.map +1 -1
  7. package/dist/global/ej2-form-renderer.min.js +2 -2
  8. package/dist/global/ej2-form-renderer.min.js.map +1 -1
  9. package/dist/global/index.d.ts +1 -1
  10. package/package.json +11 -11
  11. package/src/{common → form-renderer/common}/checkbox-group.js +1 -1
  12. package/src/{common → form-renderer/common}/conditional-rule-engine.d.ts +1 -6
  13. package/src/{common → form-renderer/common}/custom-validation-engine.d.ts +1 -1
  14. package/src/{common → form-renderer/common}/expressions/expression-engine.d.ts +1 -4
  15. package/src/{common → form-renderer/common}/expressions/expression-parser.d.ts +1 -9
  16. package/src/{common → form-renderer/common}/index.d.ts +2 -0
  17. package/src/{common → form-renderer/common}/index.js +2 -0
  18. package/src/{common → form-renderer/common}/json-converter.d.ts +6 -1
  19. package/src/{common → form-renderer/common}/json-converter.js +49 -8
  20. package/src/form-renderer/common/props-forwarder.d.ts +38 -0
  21. package/src/form-renderer/common/props-forwarder.js +123 -0
  22. package/src/{common → form-renderer/common}/utils.d.ts +6 -0
  23. package/src/form-renderer/form-renderer/custom-widget-resolver.d.ts +17 -0
  24. package/src/form-renderer/form-renderer/custom-widget-resolver.js +39 -0
  25. package/src/form-renderer/form-renderer/form-renderer-model.d.ts +125 -0
  26. package/src/form-renderer/form-renderer/form-renderer.d.ts +373 -0
  27. package/src/form-renderer/{form-renderer.js → form-renderer/form-renderer.js} +419 -298
  28. package/src/form-renderer/form-renderer/index.d.ts +7 -0
  29. package/src/form-renderer/form-renderer/index.js +6 -0
  30. package/src/form-renderer/{render-form-field.js → form-renderer/render-form-field.js} +154 -25
  31. package/src/form-renderer/index.d.ts +3 -4
  32. package/src/form-renderer/index.js +3 -3
  33. package/src/index.d.ts +1 -4
  34. package/src/index.js +1 -4
  35. package/common.d.ts +0 -4
  36. package/common.js +0 -4
  37. package/src/form-renderer/form-renderer-model.d.ts +0 -65
  38. package/src/form-renderer/form-renderer.d.ts +0 -425
  39. package/styles/bds-lite.css +0 -599
  40. package/styles/bds-lite.scss +0 -2
  41. package/styles/bds.css +0 -599
  42. package/styles/bds.scss +0 -2
  43. package/styles/bootstrap-dark-lite.css +0 -608
  44. package/styles/bootstrap-dark-lite.scss +0 -2
  45. package/styles/bootstrap-dark.css +0 -608
  46. package/styles/bootstrap-dark.scss +0 -2
  47. package/styles/bootstrap-lite.css +0 -595
  48. package/styles/bootstrap-lite.scss +0 -2
  49. package/styles/bootstrap.css +0 -595
  50. package/styles/bootstrap.scss +0 -2
  51. package/styles/bootstrap4-lite.css +0 -595
  52. package/styles/bootstrap4-lite.scss +0 -2
  53. package/styles/bootstrap4.css +0 -595
  54. package/styles/bootstrap4.scss +0 -2
  55. package/styles/bootstrap5-dark-lite.css +0 -595
  56. package/styles/bootstrap5-dark-lite.scss +0 -2
  57. package/styles/bootstrap5-dark.css +0 -595
  58. package/styles/bootstrap5-dark.scss +0 -2
  59. package/styles/bootstrap5-lite.css +0 -595
  60. package/styles/bootstrap5-lite.scss +0 -2
  61. package/styles/bootstrap5.3-lite.css +0 -679
  62. package/styles/bootstrap5.3-lite.scss +0 -2
  63. package/styles/bootstrap5.3.css +0 -679
  64. package/styles/bootstrap5.3.scss +0 -2
  65. package/styles/bootstrap5.css +0 -595
  66. package/styles/bootstrap5.scss +0 -2
  67. package/styles/fabric-dark-lite.css +0 -608
  68. package/styles/fabric-dark-lite.scss +0 -2
  69. package/styles/fabric-dark.css +0 -608
  70. package/styles/fabric-dark.scss +0 -2
  71. package/styles/fabric-lite.css +0 -595
  72. package/styles/fabric-lite.scss +0 -2
  73. package/styles/fabric.css +0 -595
  74. package/styles/fabric.scss +0 -2
  75. package/styles/fluent-dark-lite.css +0 -595
  76. package/styles/fluent-dark-lite.scss +0 -2
  77. package/styles/fluent-dark.css +0 -595
  78. package/styles/fluent-dark.scss +0 -2
  79. package/styles/fluent-lite.css +0 -595
  80. package/styles/fluent-lite.scss +0 -2
  81. package/styles/fluent.css +0 -595
  82. package/styles/fluent.scss +0 -2
  83. package/styles/fluent2-lite.css +0 -681
  84. package/styles/fluent2-lite.scss +0 -2
  85. package/styles/fluent2.css +0 -681
  86. package/styles/fluent2.scss +0 -2
  87. package/styles/form-renderer/_all.scss +0 -2
  88. package/styles/form-renderer/_bds-definition.scss +0 -8
  89. package/styles/form-renderer/_bootstrap-dark-definition.scss +0 -8
  90. package/styles/form-renderer/_bootstrap-definition.scss +0 -8
  91. package/styles/form-renderer/_bootstrap4-definition.scss +0 -8
  92. package/styles/form-renderer/_bootstrap5-dark-definition.scss +0 -8
  93. package/styles/form-renderer/_bootstrap5-definition.scss +0 -8
  94. package/styles/form-renderer/_bootstrap5.3-definition.scss +0 -8
  95. package/styles/form-renderer/_fabric-dark-definition.scss +0 -8
  96. package/styles/form-renderer/_fabric-definition.scss +0 -8
  97. package/styles/form-renderer/_fluent-dark-definition.scss +0 -8
  98. package/styles/form-renderer/_fluent-definition.scss +0 -8
  99. package/styles/form-renderer/_fluent2-definition.scss +0 -8
  100. package/styles/form-renderer/_highcontrast-definition.scss +0 -8
  101. package/styles/form-renderer/_highcontrast-light-definition.scss +0 -8
  102. package/styles/form-renderer/_layout.scss +0 -480
  103. package/styles/form-renderer/_material-dark-definition.scss +0 -8
  104. package/styles/form-renderer/_material-definition.scss +0 -8
  105. package/styles/form-renderer/_material3-dark-definition.scss +0 -8
  106. package/styles/form-renderer/_material3-definition.scss +0 -8
  107. package/styles/form-renderer/_mixin.scss +0 -26
  108. package/styles/form-renderer/_tailwind-dark-definition.scss +0 -8
  109. package/styles/form-renderer/_tailwind-definition.scss +0 -8
  110. package/styles/form-renderer/_tailwind3-definition.scss +0 -8
  111. package/styles/form-renderer/_theme.scss +0 -69
  112. package/styles/form-renderer/_variables.scss +0 -2
  113. package/styles/form-renderer/bds.css +0 -599
  114. package/styles/form-renderer/bds.scss +0 -2
  115. package/styles/form-renderer/bootstrap-dark.css +0 -608
  116. package/styles/form-renderer/bootstrap-dark.scss +0 -2
  117. package/styles/form-renderer/bootstrap.css +0 -595
  118. package/styles/form-renderer/bootstrap.scss +0 -2
  119. package/styles/form-renderer/bootstrap4.css +0 -595
  120. package/styles/form-renderer/bootstrap4.scss +0 -2
  121. package/styles/form-renderer/bootstrap5-dark.css +0 -595
  122. package/styles/form-renderer/bootstrap5-dark.scss +0 -2
  123. package/styles/form-renderer/bootstrap5.3.css +0 -679
  124. package/styles/form-renderer/bootstrap5.3.scss +0 -2
  125. package/styles/form-renderer/bootstrap5.css +0 -595
  126. package/styles/form-renderer/bootstrap5.scss +0 -2
  127. package/styles/form-renderer/fabric-dark.css +0 -608
  128. package/styles/form-renderer/fabric-dark.scss +0 -2
  129. package/styles/form-renderer/fabric.css +0 -595
  130. package/styles/form-renderer/fabric.scss +0 -2
  131. package/styles/form-renderer/fluent-dark.css +0 -595
  132. package/styles/form-renderer/fluent-dark.scss +0 -2
  133. package/styles/form-renderer/fluent.css +0 -595
  134. package/styles/form-renderer/fluent.scss +0 -2
  135. package/styles/form-renderer/fluent2.css +0 -681
  136. package/styles/form-renderer/fluent2.scss +0 -2
  137. package/styles/form-renderer/highcontrast-light.css +0 -595
  138. package/styles/form-renderer/highcontrast-light.scss +0 -2
  139. package/styles/form-renderer/highcontrast.css +0 -608
  140. package/styles/form-renderer/highcontrast.scss +0 -2
  141. package/styles/form-renderer/material-dark.css +0 -608
  142. package/styles/form-renderer/material-dark.scss +0 -2
  143. package/styles/form-renderer/material.css +0 -595
  144. package/styles/form-renderer/material.scss +0 -2
  145. package/styles/form-renderer/material3-dark.css +0 -677
  146. package/styles/form-renderer/material3-dark.scss +0 -2
  147. package/styles/form-renderer/material3.css +0 -679
  148. package/styles/form-renderer/material3.scss +0 -2
  149. package/styles/form-renderer/tailwind-dark.css +0 -595
  150. package/styles/form-renderer/tailwind-dark.scss +0 -2
  151. package/styles/form-renderer/tailwind.css +0 -595
  152. package/styles/form-renderer/tailwind.scss +0 -2
  153. package/styles/form-renderer/tailwind3.css +0 -669
  154. package/styles/form-renderer/tailwind3.scss +0 -2
  155. package/styles/highcontrast-light-lite.css +0 -595
  156. package/styles/highcontrast-light-lite.scss +0 -2
  157. package/styles/highcontrast-light.css +0 -595
  158. package/styles/highcontrast-light.scss +0 -2
  159. package/styles/highcontrast-lite.css +0 -608
  160. package/styles/highcontrast-lite.scss +0 -2
  161. package/styles/highcontrast.css +0 -608
  162. package/styles/highcontrast.scss +0 -2
  163. package/styles/material-dark-lite.css +0 -608
  164. package/styles/material-dark-lite.scss +0 -2
  165. package/styles/material-dark.css +0 -608
  166. package/styles/material-dark.scss +0 -2
  167. package/styles/material-lite.css +0 -595
  168. package/styles/material-lite.scss +0 -2
  169. package/styles/material.css +0 -595
  170. package/styles/material.scss +0 -2
  171. package/styles/material3-dark-lite.css +0 -677
  172. package/styles/material3-dark-lite.scss +0 -2
  173. package/styles/material3-dark.css +0 -677
  174. package/styles/material3-dark.scss +0 -2
  175. package/styles/material3-lite.css +0 -679
  176. package/styles/material3-lite.scss +0 -2
  177. package/styles/material3.css +0 -679
  178. package/styles/material3.scss +0 -2
  179. package/styles/tailwind-dark-lite.css +0 -595
  180. package/styles/tailwind-dark-lite.scss +0 -2
  181. package/styles/tailwind-dark.css +0 -595
  182. package/styles/tailwind-dark.scss +0 -2
  183. package/styles/tailwind-lite.css +0 -595
  184. package/styles/tailwind-lite.scss +0 -2
  185. package/styles/tailwind.css +0 -595
  186. package/styles/tailwind.scss +0 -2
  187. package/styles/tailwind3-lite.css +0 -669
  188. package/styles/tailwind3-lite.scss +0 -2
  189. package/styles/tailwind3.css +0 -669
  190. package/styles/tailwind3.scss +0 -2
  191. /package/src/{common → form-renderer/common}/checkbox-group.d.ts +0 -0
  192. /package/src/{common → form-renderer/common}/conditional-rule-engine.js +0 -0
  193. /package/src/{common → form-renderer/common}/custom-validation-engine.js +0 -0
  194. /package/src/{common → form-renderer/common}/datagrid-component.d.ts +0 -0
  195. /package/src/{common → form-renderer/common}/datagrid-component.js +0 -0
  196. /package/src/{common → form-renderer/common}/expressions/dependency-tracker.d.ts +0 -0
  197. /package/src/{common → form-renderer/common}/expressions/dependency-tracker.js +0 -0
  198. /package/src/{common → form-renderer/common}/expressions/expression-engine.js +0 -0
  199. /package/src/{common → form-renderer/common}/expressions/expression-parser.js +0 -0
  200. /package/src/{common → form-renderer/common}/expressions/grid-expressions.d.ts +0 -0
  201. /package/src/{common → form-renderer/common}/expressions/grid-expressions.js +0 -0
  202. /package/src/{common → form-renderer/common}/expressions/index.d.ts +0 -0
  203. /package/src/{common → form-renderer/common}/expressions/index.js +0 -0
  204. /package/src/{common → form-renderer/common}/minmax-rule-engine.d.ts +0 -0
  205. /package/src/{common → form-renderer/common}/minmax-rule-engine.js +0 -0
  206. /package/src/{common → form-renderer/common}/option-fetcher.d.ts +0 -0
  207. /package/src/{common → form-renderer/common}/option-fetcher.js +0 -0
  208. /package/src/{common → form-renderer/common}/parser.d.ts +0 -0
  209. /package/src/{common → form-renderer/common}/parser.js +0 -0
  210. /package/src/{common → form-renderer/common}/static-html-renderer.d.ts +0 -0
  211. /package/src/{common → form-renderer/common}/static-html-renderer.js +0 -0
  212. /package/src/{common → form-renderer/common}/utils.js +0 -0
  213. /package/src/form-renderer/{render-form-field.d.ts → form-renderer/render-form-field.d.ts} +0 -0
  214. /package/src/form-renderer/{types → form-renderer/types}/form-schema.d.ts +0 -0
  215. /package/src/form-renderer/{types → form-renderer/types}/form-schema.js +0 -0
@@ -1,425 +0,0 @@
1
- import { Component, EmitType } from '@syncfusion/ej2-base';
2
- import { FormLayout, Schema } from './types/form-schema';
3
- import { FormRendererModel } from './form-renderer-model';
4
- /**
5
- * Specifies the types for the form field data values.
6
- */
7
- export declare type FieldDataType = string | number | boolean | string[] | number[] | Date | Record<string, unknown> | object | unknown[] | null;
8
- /**
9
- * This event argument provides details for field value changes during form interaction.
10
- */
11
- export interface ChangeEventArgs {
12
- /** Provides the unique name/identifier of the changed field */
13
- fieldName: string;
14
- /** Specifies the display text/label of the form field. */
15
- label: string;
16
- /** Specifies the new value of the field */
17
- value: FieldDataType;
18
- }
19
- /**
20
- * This event argument provides details for form submission.
21
- */
22
- export interface SubmitEventArgs {
23
- /** Provides the complete form data object keyed by field names */
24
- data: Record<string, FieldDataType>;
25
- /** Specifies whether the form passed all validation rules */
26
- isValid: boolean;
27
- }
28
- /**
29
- * This event argument provides details for custom button clicks within the rendered form.
30
- */
31
- export interface ButtonClickEventArgs {
32
- /** Specifies the unique identifier of the clicked button */
33
- fieldName: string;
34
- /** Specifies the display text/label of the clicked button */
35
- label: string;
36
- /** Provides the original button click event. */
37
- event: any;
38
- }
39
- /**
40
- * Event arguments describing a failure/warning that occurred in the form renderer.
41
- */
42
- export interface FailureEventArgs {
43
- /** The underlying error error/warning or exception. */
44
- error: any;
45
- }
46
- /**
47
- * @private
48
- */
49
- export declare const defaultLocale: {
50
- "unsupportedComponent": string;
51
- };
52
- /**
53
- * The FormRenderer component consumes a JSON form schema and renders a fully functional, Syncfusion-based form. It handles field mapping, conditional visibility/disabling, expression evaluation, custom validation, and data submission.
54
- *
55
- * ```typescript
56
- * let form: FormRenderer = new FormRenderer({
57
- * schema: formSchema,
58
- * submit: (args: SubmitEventArgs) => console.log(args)
59
- * });
60
- * form.appendTo('#container');
61
- * ```
62
- */
63
- export declare class FormRenderer extends Component<HTMLElement> {
64
- /**
65
- * Specifies the data schema of the form that needs to be rendered in the Form Renderer.
66
- */
67
- schema: Schema | string | Record<string, unknown> | null;
68
- /**
69
- * Specifies the form layout configuration (only applies when layout details are NOT available in the schema). Determines how form fields are arranged in columns.
70
- *
71
- * @default 'SingleColumn'
72
- */
73
- layout: FormLayout | string;
74
- /**
75
- * Specifies the CSS class name to apply to the root form container element. This property supports space-separated multiple classes.
76
- *
77
- * @default ""
78
- */
79
- className: string;
80
- /**
81
- * Event triggered when the form is submitted.
82
- * This event provides form data and validation status in the event argument.
83
- *
84
- * @event
85
- */
86
- submit: EmitType<SubmitEventArgs>;
87
- /**
88
- * Event triggered when any form field value changes. Fired on user input for tracked fields.
89
- *
90
- * @event
91
- */
92
- change: EmitType<ChangeEventArgs>;
93
- /**
94
- * Event triggered when a button in the form is clicked. Applies to all button types (button, submit, splitButton).
95
- *
96
- * @event
97
- */
98
- buttonClick: EmitType<ButtonClickEventArgs>;
99
- /**
100
- * Event triggered when an error is thrown in the form rendering or schema parsing.
101
- *
102
- * @event
103
- */
104
- failure: EmitType<FailureEventArgs>;
105
- /**
106
- * Event triggered when all form elements are rendered and ready for interaction. Useful for performing post-render initialization or setup.
107
- *
108
- * @event
109
- */
110
- created: EmitType<Object>;
111
- /**
112
- * Constructor for creating the widget
113
- *
114
- * @param {FormRendererModel} options - Specifies the form renderer model
115
- * @param {string|HTMLDivElement} element - Specifies the target element
116
- */
117
- constructor(options?: FormRendererModel, element?: string | HTMLDivElement);
118
- private processedSchemaCache;
119
- /** Localization instance */
120
- private l10n;
121
- /**
122
- * @private
123
- *
124
- * Minimal form-state container owned by the orchestrator. The previous
125
- * vanilla-TS port delegated this to `FormStateBridge`; that bridge's
126
- * `registeredFields` gate silently short-circuited every field to "no
127
- * error" because the orchestrator never called `registerField`. The
128
- * EJ2 native `FormValidator` (bound to `this.element`) now handles all
129
- * rule evaluation, error-element placement, change/blur/submit wiring,
130
- * and ARIA — exactly what `FormValidator` was designed for. This object
131
- * is the orchestrator's authoritative values store; `errors` are
132
- * mirrored from the FormValidator's `errorRules` for `renderField`'s
133
- * initial-paint logic and for submit-time `isValid` checks.
134
- */
135
- private formState;
136
- /** EJ2 native FormValidator bound to `this.element` (replaces FormStateBridge). */
137
- private validator;
138
- /** Map of input component instances keyed by `name` (or `${name}_${idx}`). */
139
- private inputRefs;
140
- /** Conditional value applied tracker (per-field). */
141
- private conditionalValueApplied;
142
- /** Expression engine + dependency graph + computed-field set. */
143
- private expressionEngine;
144
- private expressionDependencyGraph;
145
- private expressionEvaluationInProgress;
146
- private previousFormValues;
147
- private computedFieldNames;
148
- /** Custom validation engine instance. */
149
- private customValidationEngine;
150
- /** Latest form values snapshot for custom validation (named-key context). */
151
- private currentFormValues;
152
- /** Whether initial values have been seeded once. */
153
- private isInitialized;
154
- /** Cached layout detection result. */
155
- private hasLayoutComponentsCache;
156
- /** Cached id→label map. */
157
- private idToLabelCache;
158
- /** Cached initial values (recomputed on schema change). */
159
- private initialValuesCache;
160
- /** Rendered child EJ2 instances (for destroy cleanup). */
161
- private renderedInstances;
162
- /** Tooltip instances keyed by field id so stale tooltips can be replaced promptly. */
163
- private tooltipRefs;
164
- /** `created` fired-once guard. */
165
- private createdFired;
166
- /**
167
- * Coalescing guard for `scheduleRerender`. Prevents redundant full-form
168
- * re-renders within a single microtask — mirrors React's batched-state
169
- * semantics so that a user keystroke + expression cascade fire one render.
170
- */
171
- private rerenderScheduled;
172
- /**
173
- * Set of `component.id`s that are referenced as the trigger field of any
174
- * other component's `conditions` (`visibleWhen` / `hideWhen` /
175
- * `disabledWhen` / `requiredWhen` / `readOnlyWhen` / `setValueWhen` /
176
- * `choiceBasedField.primaryFieldId`). Only changes to these fields can
177
- * affect visibility / disabled / required / valueWhen of any other
178
- * field, so only they need to trigger a full-form re-render. Changes to
179
- * fields *not* in this set are guaranteed to have no conditional side
180
- * effects and safely skip the (expensive) full DOM teardown + rebuild.
181
- * Built once per schema in `buildConditionalDependencyMap`.
182
- */
183
- private conditionalTriggerFieldIds;
184
- /**
185
- * Maps `component.id` → the previously-rendered DOM subtree (form-group)
186
- * for "expensive" components (dataGrid, dropdown, multiselect,
187
- * checkboxGroup) that support remote data. During a full-form re-render
188
- * triggered by an *unrelated* conditional change, these subtrees are
189
- * detached (not destroyed) and re-attached in place, avoiding a re-fetch
190
- * of their remote data sources and preventing the visible blink/reload.
191
- * A subtree is *invalidated* (dropped from this map, forcing a fresh
192
- * render) when a field it depends on (via its own `conditions` or
193
- * `conditionalData`) is the one that changed.
194
- */
195
- private preservedFields;
196
- /**
197
- * Component types eligible for DOM preservation across re-renders.
198
- * These types either bind remote data (dataGrid, lookup-backed
199
- * dropdown/multiselect) or render many child options (checkboxGroup)
200
- * and are noticeably expensive / flicker-prone to rebuild.
201
- */
202
- private static readonly PRESERVABLE_TYPES;
203
- /**
204
- * Per-consumer dependency map: `component.id` → set of trigger field ids
205
- * that the consumer's own `conditions` / `conditionalData` /
206
- * `choiceBasedField` reference. Used during `rerenderForm` to decide
207
- * whether a preserved subtree must be invalidated (rebuilt) because the
208
- * changed field is one of its own dependencies, or can be safely reused.
209
- */
210
- private consumerDependencyMap;
211
- /**
212
- * Returns the EJ2 component module name.
213
- * @private
214
- */
215
- getModuleName(): string;
216
- /**
217
- * Return the persisted-state payload. The base class declares this
218
- * abstract; FormRenderer does not implement state persistence, so an
219
- * empty object is returned (mirrors the EJ2 convention for
220
- * non-persistent components).
221
- * @private
222
- */
223
- getPersistData(): string;
224
- /**
225
- * Pre-render wiring: enable ripple, init the expression engine + bridge.
226
- * @private
227
- */
228
- protected preRender(): void;
229
- /**
230
- * Main render: normalize schema, build rules + initial values, render tree.
231
- * @private
232
- */
233
- protected render(): void;
234
- /**
235
- * @private
236
- */
237
- private normalizeSchema;
238
- /**
239
- * Recursively scan the schema for any `table`/`tabs`/`panel`/`card`
240
- * (including inside table cells and tab content). Mirrors `hasLayoutComponents`.
241
- * @private
242
- */
243
- private computeHasLayoutComponents;
244
- /**
245
- * The layout CSS class (suppressed when layout components are present).
246
- * @private
247
- */
248
- private readonly layoutClass;
249
- /**
250
- * Recursively collect all components including nested ones.
251
- * @private
252
- */
253
- private collectAllComponents;
254
- /**
255
- * @private
256
- */
257
- private computeIdToLabel;
258
- /**
259
- * @private
260
- */
261
- private buildValidationRulesAndBridge;
262
- /**
263
- * @private
264
- *
265
- * Mirror the FormValidator's `errorRules` array into `this.formState.errors`
266
- * keyed by field `name` (= `component.id`). Called after every
267
- * `validationComplete` callback and from submit-time `isValid` reads.
268
- */
269
- private syncFormStateErrors;
270
- /**
271
- * @private
272
- */
273
- private buildInitialValues;
274
- /**
275
- * Initialize the expression engine dependency graph + computed-field set.
276
- * @private
277
- */
278
- private initExpressionEngine;
279
- /**
280
- * @private
281
- */
282
- private disposeTooltipInstance;
283
- private renderField;
284
- /**
285
- * @private
286
- */
287
- private renderComponent;
288
- /**
289
- * @private
290
- */
291
- private afterValueChange;
292
- /**
293
- * @private
294
- */
295
- private beforeValidate;
296
- /**
297
- * @private
298
- *
299
- * Coalesced full-form re-render. Multiple triggers within the same
300
- * microtask drain into a single `rerenderForm()` call. The set of
301
- * changed field ids is accumulated across the tick so `rerenderForm`
302
- * can decide which preserved subtrees must be invalidated (because one
303
- * of the changed fields is in their own dependency set).
304
- */
305
- private pendingChangedFieldIds;
306
- private scheduleRerender;
307
- /**
308
- * @private
309
- *
310
- * Recursively walk a `ConditionType` (a `ConditionalRule { field }` leaf
311
- * or a `CompositeConditionalRule { rules: [...] }` tree) and collect the
312
- * `field` ids of every leaf rule into the supplied `acc` set. These are
313
- * the trigger ids whose value changes can affect the visibility/disabled/
314
- * required/readOnly/valueWhen of the component that owns this `conditions`.
315
- */
316
- private collectConditionFieldIds;
317
- private collectDataSourceReferenceIds;
318
- /**
319
- * @private
320
- *
321
- * Build `this.conditionalTriggerFieldIds` — the set of every
322
- * `component.id` that is referenced by *any* other component's
323
- * `conditions` (visibleWhen / hideWhen / disabledWhen / requiredWhen /
324
- * readOnlyWhen / setValueWhen / choiceBasedField.primaryFieldId).
325
- * Only changes to ids in this set can affect another field's
326
- * visibility/enabled/required/value, so only they need to trigger a
327
- * full-form re-render. Called once per schema during `render()`.
328
- */
329
- private buildConditionalDependencyMap;
330
- /**
331
- * @private
332
- *
333
- * Returns `true` if a value change to `fieldId` can affect any other
334
- * field's conditional state (visibility/disabled/required/readOnly/
335
- * valueWhen/choiceBasedField) — i.e. `fieldId` is in the
336
- * `conditionalTriggerFieldIds` set built by
337
- * `buildConditionalDependencyMap`. Used by `afterValueChange` to skip
338
- * the expensive full-form re-render when the changed field is not a
339
- * conditional trigger.
340
- */
341
- private isConditionalTrigger;
342
- /**
343
- * @private
344
- *
345
- * Tear down the rendered tree and re-render it, preserving user-entered
346
- * `formState.values` (carried through `buildValidationRulesAndBridge`'s
347
- * `previousValues` merge) and restoring keyboard focus to the field that
348
- * had it before re-render (so a user typing in a textbox is not
349
- * interrupted by a dependent field appearing/disappearing on the page).
350
- */
351
- private rerenderForm;
352
- /**
353
- * @private
354
- */
355
- private removePreviousRoot;
356
- /**
357
- * @private
358
- */
359
- private destroyRenderedInstance;
360
- /**
361
- * @private
362
- *
363
- * Destroy all rendered EJ2 instances except those whose host element
364
- * lives inside a preserved subtree (those are kept alive for re-use in
365
- * the upcoming `render()` pass). Mirrors `destroyRendered` but skips
366
- * instances rooted in `preservedFields` nodes.
367
- */
368
- private destroyRenderedExcludingPreserved;
369
- /**
370
- * @private
371
- *
372
- * Destroy EJ2 instances whose host element lives inside a preserved
373
- * subtree that was NOT re-attached (field became hidden). Used during
374
- * the post-render cleanup pass in `rerenderForm`.
375
- */
376
- private destroyPreservedSubtree;
377
- private getInputElementByName;
378
- /**
379
- * Evaluate expressions in topological order with type coercion.
380
- * @private
381
- */
382
- private evaluateExpressions;
383
- /**
384
- * Re-trigger custom validation for changed + dependent fields.
385
- * @private
386
- */
387
- private retriggerCustomValidation;
388
- /**
389
- * @private
390
- */
391
- private handleSubmitData;
392
- /**
393
- * Retrieves the underlying Syncfusion form-input component instance by its field name. Use this to call Syncfusion component methods and properties.
394
- */
395
- getComponent(name: string): object | null;
396
- /**
397
- * Re-normalize + re-render on `schema`/`locale`/`enableRtl` change.
398
- * @private
399
- */
400
- protected onPropertyChanged(newProps: {
401
- [key: string]: any;
402
- }, oldProps: {
403
- [key: string]: any;
404
- }): void;
405
- /**
406
- * Destroy all child EJ2 instances, detach listeners, null refs.
407
- * @private
408
- */
409
- private destroyRendered;
410
- /**
411
- * Remove persisted tab selection state for this form when it is fully destroyed.
412
- * @private
413
- */
414
- private clearPersistedTabSelections;
415
- /**
416
- * Full component teardown.
417
- * @private
418
- */
419
- destroy(): void;
420
- /**
421
- * @private
422
- */
423
- private clearEngineCaches;
424
- }
425
- export default FormRenderer;