@syncfusion/ej2-form-renderer 34.2.6 → 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 (216) hide show
  1. package/README.md +6 -3
  2. package/dist/ej2-form-renderer.umd.min.js +2 -2
  3. package/dist/ej2-form-renderer.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-form-renderer.es2015.js +3261 -1523
  5. package/dist/es6/ej2-form-renderer.es2015.js.map +1 -1
  6. package/dist/es6/ej2-form-renderer.es5.js +3316 -1540
  7. package/dist/es6/ej2-form-renderer.es5.js.map +1 -1
  8. package/dist/global/ej2-form-renderer.min.js +2 -2
  9. package/dist/global/ej2-form-renderer.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +11 -11
  12. package/src/{common → form-renderer/common}/checkbox-group.js +1 -1
  13. package/src/{common → form-renderer/common}/conditional-rule-engine.d.ts +1 -6
  14. package/src/{common → form-renderer/common}/custom-validation-engine.d.ts +1 -1
  15. package/src/{common → form-renderer/common}/expressions/expression-engine.d.ts +1 -4
  16. package/src/{common → form-renderer/common}/expressions/expression-parser.d.ts +1 -9
  17. package/src/{common → form-renderer/common}/index.d.ts +2 -0
  18. package/src/{common → form-renderer/common}/index.js +2 -0
  19. package/src/{common → form-renderer/common}/json-converter.d.ts +6 -1
  20. package/src/{common → form-renderer/common}/json-converter.js +49 -8
  21. package/src/form-renderer/common/props-forwarder.d.ts +38 -0
  22. package/src/form-renderer/common/props-forwarder.js +123 -0
  23. package/src/{common → form-renderer/common}/utils.d.ts +6 -0
  24. package/src/form-renderer/form-renderer/custom-widget-resolver.d.ts +17 -0
  25. package/src/form-renderer/form-renderer/custom-widget-resolver.js +39 -0
  26. package/src/form-renderer/form-renderer/form-renderer-model.d.ts +125 -0
  27. package/src/form-renderer/form-renderer/form-renderer.d.ts +373 -0
  28. package/src/form-renderer/{form-renderer.js → form-renderer/form-renderer.js} +419 -298
  29. package/src/form-renderer/form-renderer/index.d.ts +7 -0
  30. package/src/form-renderer/form-renderer/index.js +6 -0
  31. package/src/form-renderer/{render-form-field.js → form-renderer/render-form-field.js} +154 -25
  32. package/src/form-renderer/index.d.ts +3 -4
  33. package/src/form-renderer/index.js +3 -3
  34. package/src/index.d.ts +1 -4
  35. package/src/index.js +1 -4
  36. package/common.d.ts +0 -4
  37. package/common.js +0 -4
  38. package/src/form-renderer/form-renderer-model.d.ts +0 -65
  39. package/src/form-renderer/form-renderer.d.ts +0 -425
  40. package/styles/bds-lite.css +0 -599
  41. package/styles/bds-lite.scss +0 -2
  42. package/styles/bds.css +0 -599
  43. package/styles/bds.scss +0 -2
  44. package/styles/bootstrap-dark-lite.css +0 -608
  45. package/styles/bootstrap-dark-lite.scss +0 -2
  46. package/styles/bootstrap-dark.css +0 -608
  47. package/styles/bootstrap-dark.scss +0 -2
  48. package/styles/bootstrap-lite.css +0 -595
  49. package/styles/bootstrap-lite.scss +0 -2
  50. package/styles/bootstrap.css +0 -595
  51. package/styles/bootstrap.scss +0 -2
  52. package/styles/bootstrap4-lite.css +0 -595
  53. package/styles/bootstrap4-lite.scss +0 -2
  54. package/styles/bootstrap4.css +0 -595
  55. package/styles/bootstrap4.scss +0 -2
  56. package/styles/bootstrap5-dark-lite.css +0 -595
  57. package/styles/bootstrap5-dark-lite.scss +0 -2
  58. package/styles/bootstrap5-dark.css +0 -595
  59. package/styles/bootstrap5-dark.scss +0 -2
  60. package/styles/bootstrap5-lite.css +0 -595
  61. package/styles/bootstrap5-lite.scss +0 -2
  62. package/styles/bootstrap5.3-lite.css +0 -679
  63. package/styles/bootstrap5.3-lite.scss +0 -2
  64. package/styles/bootstrap5.3.css +0 -679
  65. package/styles/bootstrap5.3.scss +0 -2
  66. package/styles/bootstrap5.css +0 -595
  67. package/styles/bootstrap5.scss +0 -2
  68. package/styles/fabric-dark-lite.css +0 -608
  69. package/styles/fabric-dark-lite.scss +0 -2
  70. package/styles/fabric-dark.css +0 -608
  71. package/styles/fabric-dark.scss +0 -2
  72. package/styles/fabric-lite.css +0 -595
  73. package/styles/fabric-lite.scss +0 -2
  74. package/styles/fabric.css +0 -595
  75. package/styles/fabric.scss +0 -2
  76. package/styles/fluent-dark-lite.css +0 -595
  77. package/styles/fluent-dark-lite.scss +0 -2
  78. package/styles/fluent-dark.css +0 -595
  79. package/styles/fluent-dark.scss +0 -2
  80. package/styles/fluent-lite.css +0 -595
  81. package/styles/fluent-lite.scss +0 -2
  82. package/styles/fluent.css +0 -595
  83. package/styles/fluent.scss +0 -2
  84. package/styles/fluent2-lite.css +0 -681
  85. package/styles/fluent2-lite.scss +0 -2
  86. package/styles/fluent2.css +0 -681
  87. package/styles/fluent2.scss +0 -2
  88. package/styles/form-renderer/_all.scss +0 -2
  89. package/styles/form-renderer/_bds-definition.scss +0 -8
  90. package/styles/form-renderer/_bootstrap-dark-definition.scss +0 -8
  91. package/styles/form-renderer/_bootstrap-definition.scss +0 -8
  92. package/styles/form-renderer/_bootstrap4-definition.scss +0 -8
  93. package/styles/form-renderer/_bootstrap5-dark-definition.scss +0 -8
  94. package/styles/form-renderer/_bootstrap5-definition.scss +0 -8
  95. package/styles/form-renderer/_bootstrap5.3-definition.scss +0 -8
  96. package/styles/form-renderer/_fabric-dark-definition.scss +0 -8
  97. package/styles/form-renderer/_fabric-definition.scss +0 -8
  98. package/styles/form-renderer/_fluent-dark-definition.scss +0 -8
  99. package/styles/form-renderer/_fluent-definition.scss +0 -8
  100. package/styles/form-renderer/_fluent2-definition.scss +0 -8
  101. package/styles/form-renderer/_highcontrast-definition.scss +0 -8
  102. package/styles/form-renderer/_highcontrast-light-definition.scss +0 -8
  103. package/styles/form-renderer/_layout.scss +0 -480
  104. package/styles/form-renderer/_material-dark-definition.scss +0 -8
  105. package/styles/form-renderer/_material-definition.scss +0 -8
  106. package/styles/form-renderer/_material3-dark-definition.scss +0 -8
  107. package/styles/form-renderer/_material3-definition.scss +0 -8
  108. package/styles/form-renderer/_mixin.scss +0 -26
  109. package/styles/form-renderer/_tailwind-dark-definition.scss +0 -8
  110. package/styles/form-renderer/_tailwind-definition.scss +0 -8
  111. package/styles/form-renderer/_tailwind3-definition.scss +0 -8
  112. package/styles/form-renderer/_theme.scss +0 -69
  113. package/styles/form-renderer/_variables.scss +0 -2
  114. package/styles/form-renderer/bds.css +0 -599
  115. package/styles/form-renderer/bds.scss +0 -2
  116. package/styles/form-renderer/bootstrap-dark.css +0 -608
  117. package/styles/form-renderer/bootstrap-dark.scss +0 -2
  118. package/styles/form-renderer/bootstrap.css +0 -595
  119. package/styles/form-renderer/bootstrap.scss +0 -2
  120. package/styles/form-renderer/bootstrap4.css +0 -595
  121. package/styles/form-renderer/bootstrap4.scss +0 -2
  122. package/styles/form-renderer/bootstrap5-dark.css +0 -595
  123. package/styles/form-renderer/bootstrap5-dark.scss +0 -2
  124. package/styles/form-renderer/bootstrap5.3.css +0 -679
  125. package/styles/form-renderer/bootstrap5.3.scss +0 -2
  126. package/styles/form-renderer/bootstrap5.css +0 -595
  127. package/styles/form-renderer/bootstrap5.scss +0 -2
  128. package/styles/form-renderer/fabric-dark.css +0 -608
  129. package/styles/form-renderer/fabric-dark.scss +0 -2
  130. package/styles/form-renderer/fabric.css +0 -595
  131. package/styles/form-renderer/fabric.scss +0 -2
  132. package/styles/form-renderer/fluent-dark.css +0 -595
  133. package/styles/form-renderer/fluent-dark.scss +0 -2
  134. package/styles/form-renderer/fluent.css +0 -595
  135. package/styles/form-renderer/fluent.scss +0 -2
  136. package/styles/form-renderer/fluent2.css +0 -681
  137. package/styles/form-renderer/fluent2.scss +0 -2
  138. package/styles/form-renderer/highcontrast-light.css +0 -595
  139. package/styles/form-renderer/highcontrast-light.scss +0 -2
  140. package/styles/form-renderer/highcontrast.css +0 -608
  141. package/styles/form-renderer/highcontrast.scss +0 -2
  142. package/styles/form-renderer/material-dark.css +0 -608
  143. package/styles/form-renderer/material-dark.scss +0 -2
  144. package/styles/form-renderer/material.css +0 -595
  145. package/styles/form-renderer/material.scss +0 -2
  146. package/styles/form-renderer/material3-dark.css +0 -677
  147. package/styles/form-renderer/material3-dark.scss +0 -2
  148. package/styles/form-renderer/material3.css +0 -679
  149. package/styles/form-renderer/material3.scss +0 -2
  150. package/styles/form-renderer/tailwind-dark.css +0 -595
  151. package/styles/form-renderer/tailwind-dark.scss +0 -2
  152. package/styles/form-renderer/tailwind.css +0 -595
  153. package/styles/form-renderer/tailwind.scss +0 -2
  154. package/styles/form-renderer/tailwind3.css +0 -669
  155. package/styles/form-renderer/tailwind3.scss +0 -2
  156. package/styles/highcontrast-light-lite.css +0 -595
  157. package/styles/highcontrast-light-lite.scss +0 -2
  158. package/styles/highcontrast-light.css +0 -595
  159. package/styles/highcontrast-light.scss +0 -2
  160. package/styles/highcontrast-lite.css +0 -608
  161. package/styles/highcontrast-lite.scss +0 -2
  162. package/styles/highcontrast.css +0 -608
  163. package/styles/highcontrast.scss +0 -2
  164. package/styles/material-dark-lite.css +0 -608
  165. package/styles/material-dark-lite.scss +0 -2
  166. package/styles/material-dark.css +0 -608
  167. package/styles/material-dark.scss +0 -2
  168. package/styles/material-lite.css +0 -595
  169. package/styles/material-lite.scss +0 -2
  170. package/styles/material.css +0 -595
  171. package/styles/material.scss +0 -2
  172. package/styles/material3-dark-lite.css +0 -677
  173. package/styles/material3-dark-lite.scss +0 -2
  174. package/styles/material3-dark.css +0 -677
  175. package/styles/material3-dark.scss +0 -2
  176. package/styles/material3-lite.css +0 -679
  177. package/styles/material3-lite.scss +0 -2
  178. package/styles/material3.css +0 -679
  179. package/styles/material3.scss +0 -2
  180. package/styles/tailwind-dark-lite.css +0 -595
  181. package/styles/tailwind-dark-lite.scss +0 -2
  182. package/styles/tailwind-dark.css +0 -595
  183. package/styles/tailwind-dark.scss +0 -2
  184. package/styles/tailwind-lite.css +0 -595
  185. package/styles/tailwind-lite.scss +0 -2
  186. package/styles/tailwind.css +0 -595
  187. package/styles/tailwind.scss +0 -2
  188. package/styles/tailwind3-lite.css +0 -669
  189. package/styles/tailwind3-lite.scss +0 -2
  190. package/styles/tailwind3.css +0 -669
  191. package/styles/tailwind3.scss +0 -2
  192. /package/src/{common → form-renderer/common}/checkbox-group.d.ts +0 -0
  193. /package/src/{common → form-renderer/common}/conditional-rule-engine.js +0 -0
  194. /package/src/{common → form-renderer/common}/custom-validation-engine.js +0 -0
  195. /package/src/{common → form-renderer/common}/datagrid-component.d.ts +0 -0
  196. /package/src/{common → form-renderer/common}/datagrid-component.js +0 -0
  197. /package/src/{common → form-renderer/common}/expressions/dependency-tracker.d.ts +0 -0
  198. /package/src/{common → form-renderer/common}/expressions/dependency-tracker.js +0 -0
  199. /package/src/{common → form-renderer/common}/expressions/expression-engine.js +0 -0
  200. /package/src/{common → form-renderer/common}/expressions/expression-parser.js +0 -0
  201. /package/src/{common → form-renderer/common}/expressions/grid-expressions.d.ts +0 -0
  202. /package/src/{common → form-renderer/common}/expressions/grid-expressions.js +0 -0
  203. /package/src/{common → form-renderer/common}/expressions/index.d.ts +0 -0
  204. /package/src/{common → form-renderer/common}/expressions/index.js +0 -0
  205. /package/src/{common → form-renderer/common}/minmax-rule-engine.d.ts +0 -0
  206. /package/src/{common → form-renderer/common}/minmax-rule-engine.js +0 -0
  207. /package/src/{common → form-renderer/common}/option-fetcher.d.ts +0 -0
  208. /package/src/{common → form-renderer/common}/option-fetcher.js +0 -0
  209. /package/src/{common → form-renderer/common}/parser.d.ts +0 -0
  210. /package/src/{common → form-renderer/common}/parser.js +0 -0
  211. /package/src/{common → form-renderer/common}/static-html-renderer.d.ts +0 -0
  212. /package/src/{common → form-renderer/common}/static-html-renderer.js +0 -0
  213. /package/src/{common → form-renderer/common}/utils.js +0 -0
  214. /package/src/form-renderer/{render-form-field.d.ts → form-renderer/render-form-field.d.ts} +0 -0
  215. /package/src/form-renderer/{types → form-renderer/types}/form-schema.d.ts +0 -0
  216. /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;