@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.
- package/dist/ej2-form-renderer.umd.min.js +2 -2
- package/dist/ej2-form-renderer.umd.min.js.map +1 -1
- package/dist/es6/ej2-form-renderer.es2015.js +3261 -1523
- package/dist/es6/ej2-form-renderer.es2015.js.map +1 -1
- package/dist/es6/ej2-form-renderer.es5.js +3316 -1540
- package/dist/es6/ej2-form-renderer.es5.js.map +1 -1
- package/dist/global/ej2-form-renderer.min.js +2 -2
- package/dist/global/ej2-form-renderer.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +11 -11
- package/src/{common → form-renderer/common}/checkbox-group.js +1 -1
- package/src/{common → form-renderer/common}/conditional-rule-engine.d.ts +1 -6
- package/src/{common → form-renderer/common}/custom-validation-engine.d.ts +1 -1
- package/src/{common → form-renderer/common}/expressions/expression-engine.d.ts +1 -4
- package/src/{common → form-renderer/common}/expressions/expression-parser.d.ts +1 -9
- package/src/{common → form-renderer/common}/index.d.ts +2 -0
- package/src/{common → form-renderer/common}/index.js +2 -0
- package/src/{common → form-renderer/common}/json-converter.d.ts +6 -1
- package/src/{common → form-renderer/common}/json-converter.js +49 -8
- package/src/form-renderer/common/props-forwarder.d.ts +38 -0
- package/src/form-renderer/common/props-forwarder.js +123 -0
- package/src/{common → form-renderer/common}/utils.d.ts +6 -0
- package/src/form-renderer/form-renderer/custom-widget-resolver.d.ts +17 -0
- package/src/form-renderer/form-renderer/custom-widget-resolver.js +39 -0
- package/src/form-renderer/form-renderer/form-renderer-model.d.ts +125 -0
- package/src/form-renderer/form-renderer/form-renderer.d.ts +373 -0
- package/src/form-renderer/{form-renderer.js → form-renderer/form-renderer.js} +419 -298
- package/src/form-renderer/form-renderer/index.d.ts +7 -0
- package/src/form-renderer/form-renderer/index.js +6 -0
- package/src/form-renderer/{render-form-field.js → form-renderer/render-form-field.js} +154 -25
- package/src/form-renderer/index.d.ts +3 -4
- package/src/form-renderer/index.js +3 -3
- package/src/index.d.ts +1 -4
- package/src/index.js +1 -4
- package/common.d.ts +0 -4
- package/common.js +0 -4
- package/src/form-renderer/form-renderer-model.d.ts +0 -65
- package/src/form-renderer/form-renderer.d.ts +0 -425
- package/styles/bds-lite.css +0 -599
- package/styles/bds-lite.scss +0 -2
- package/styles/bds.css +0 -599
- package/styles/bds.scss +0 -2
- package/styles/bootstrap-dark-lite.css +0 -608
- package/styles/bootstrap-dark-lite.scss +0 -2
- package/styles/bootstrap-dark.css +0 -608
- package/styles/bootstrap-dark.scss +0 -2
- package/styles/bootstrap-lite.css +0 -595
- package/styles/bootstrap-lite.scss +0 -2
- package/styles/bootstrap.css +0 -595
- package/styles/bootstrap.scss +0 -2
- package/styles/bootstrap4-lite.css +0 -595
- package/styles/bootstrap4-lite.scss +0 -2
- package/styles/bootstrap4.css +0 -595
- package/styles/bootstrap4.scss +0 -2
- package/styles/bootstrap5-dark-lite.css +0 -595
- package/styles/bootstrap5-dark-lite.scss +0 -2
- package/styles/bootstrap5-dark.css +0 -595
- package/styles/bootstrap5-dark.scss +0 -2
- package/styles/bootstrap5-lite.css +0 -595
- package/styles/bootstrap5-lite.scss +0 -2
- package/styles/bootstrap5.3-lite.css +0 -679
- package/styles/bootstrap5.3-lite.scss +0 -2
- package/styles/bootstrap5.3.css +0 -679
- package/styles/bootstrap5.3.scss +0 -2
- package/styles/bootstrap5.css +0 -595
- package/styles/bootstrap5.scss +0 -2
- package/styles/fabric-dark-lite.css +0 -608
- package/styles/fabric-dark-lite.scss +0 -2
- package/styles/fabric-dark.css +0 -608
- package/styles/fabric-dark.scss +0 -2
- package/styles/fabric-lite.css +0 -595
- package/styles/fabric-lite.scss +0 -2
- package/styles/fabric.css +0 -595
- package/styles/fabric.scss +0 -2
- package/styles/fluent-dark-lite.css +0 -595
- package/styles/fluent-dark-lite.scss +0 -2
- package/styles/fluent-dark.css +0 -595
- package/styles/fluent-dark.scss +0 -2
- package/styles/fluent-lite.css +0 -595
- package/styles/fluent-lite.scss +0 -2
- package/styles/fluent.css +0 -595
- package/styles/fluent.scss +0 -2
- package/styles/fluent2-lite.css +0 -681
- package/styles/fluent2-lite.scss +0 -2
- package/styles/fluent2.css +0 -681
- package/styles/fluent2.scss +0 -2
- package/styles/form-renderer/_all.scss +0 -2
- package/styles/form-renderer/_bds-definition.scss +0 -8
- package/styles/form-renderer/_bootstrap-dark-definition.scss +0 -8
- package/styles/form-renderer/_bootstrap-definition.scss +0 -8
- package/styles/form-renderer/_bootstrap4-definition.scss +0 -8
- package/styles/form-renderer/_bootstrap5-dark-definition.scss +0 -8
- package/styles/form-renderer/_bootstrap5-definition.scss +0 -8
- package/styles/form-renderer/_bootstrap5.3-definition.scss +0 -8
- package/styles/form-renderer/_fabric-dark-definition.scss +0 -8
- package/styles/form-renderer/_fabric-definition.scss +0 -8
- package/styles/form-renderer/_fluent-dark-definition.scss +0 -8
- package/styles/form-renderer/_fluent-definition.scss +0 -8
- package/styles/form-renderer/_fluent2-definition.scss +0 -8
- package/styles/form-renderer/_highcontrast-definition.scss +0 -8
- package/styles/form-renderer/_highcontrast-light-definition.scss +0 -8
- package/styles/form-renderer/_layout.scss +0 -480
- package/styles/form-renderer/_material-dark-definition.scss +0 -8
- package/styles/form-renderer/_material-definition.scss +0 -8
- package/styles/form-renderer/_material3-dark-definition.scss +0 -8
- package/styles/form-renderer/_material3-definition.scss +0 -8
- package/styles/form-renderer/_mixin.scss +0 -26
- package/styles/form-renderer/_tailwind-dark-definition.scss +0 -8
- package/styles/form-renderer/_tailwind-definition.scss +0 -8
- package/styles/form-renderer/_tailwind3-definition.scss +0 -8
- package/styles/form-renderer/_theme.scss +0 -69
- package/styles/form-renderer/_variables.scss +0 -2
- package/styles/form-renderer/bds.css +0 -599
- package/styles/form-renderer/bds.scss +0 -2
- package/styles/form-renderer/bootstrap-dark.css +0 -608
- package/styles/form-renderer/bootstrap-dark.scss +0 -2
- package/styles/form-renderer/bootstrap.css +0 -595
- package/styles/form-renderer/bootstrap.scss +0 -2
- package/styles/form-renderer/bootstrap4.css +0 -595
- package/styles/form-renderer/bootstrap4.scss +0 -2
- package/styles/form-renderer/bootstrap5-dark.css +0 -595
- package/styles/form-renderer/bootstrap5-dark.scss +0 -2
- package/styles/form-renderer/bootstrap5.3.css +0 -679
- package/styles/form-renderer/bootstrap5.3.scss +0 -2
- package/styles/form-renderer/bootstrap5.css +0 -595
- package/styles/form-renderer/bootstrap5.scss +0 -2
- package/styles/form-renderer/fabric-dark.css +0 -608
- package/styles/form-renderer/fabric-dark.scss +0 -2
- package/styles/form-renderer/fabric.css +0 -595
- package/styles/form-renderer/fabric.scss +0 -2
- package/styles/form-renderer/fluent-dark.css +0 -595
- package/styles/form-renderer/fluent-dark.scss +0 -2
- package/styles/form-renderer/fluent.css +0 -595
- package/styles/form-renderer/fluent.scss +0 -2
- package/styles/form-renderer/fluent2.css +0 -681
- package/styles/form-renderer/fluent2.scss +0 -2
- package/styles/form-renderer/highcontrast-light.css +0 -595
- package/styles/form-renderer/highcontrast-light.scss +0 -2
- package/styles/form-renderer/highcontrast.css +0 -608
- package/styles/form-renderer/highcontrast.scss +0 -2
- package/styles/form-renderer/material-dark.css +0 -608
- package/styles/form-renderer/material-dark.scss +0 -2
- package/styles/form-renderer/material.css +0 -595
- package/styles/form-renderer/material.scss +0 -2
- package/styles/form-renderer/material3-dark.css +0 -677
- package/styles/form-renderer/material3-dark.scss +0 -2
- package/styles/form-renderer/material3.css +0 -679
- package/styles/form-renderer/material3.scss +0 -2
- package/styles/form-renderer/tailwind-dark.css +0 -595
- package/styles/form-renderer/tailwind-dark.scss +0 -2
- package/styles/form-renderer/tailwind.css +0 -595
- package/styles/form-renderer/tailwind.scss +0 -2
- package/styles/form-renderer/tailwind3.css +0 -669
- package/styles/form-renderer/tailwind3.scss +0 -2
- package/styles/highcontrast-light-lite.css +0 -595
- package/styles/highcontrast-light-lite.scss +0 -2
- package/styles/highcontrast-light.css +0 -595
- package/styles/highcontrast-light.scss +0 -2
- package/styles/highcontrast-lite.css +0 -608
- package/styles/highcontrast-lite.scss +0 -2
- package/styles/highcontrast.css +0 -608
- package/styles/highcontrast.scss +0 -2
- package/styles/material-dark-lite.css +0 -608
- package/styles/material-dark-lite.scss +0 -2
- package/styles/material-dark.css +0 -608
- package/styles/material-dark.scss +0 -2
- package/styles/material-lite.css +0 -595
- package/styles/material-lite.scss +0 -2
- package/styles/material.css +0 -595
- package/styles/material.scss +0 -2
- package/styles/material3-dark-lite.css +0 -677
- package/styles/material3-dark-lite.scss +0 -2
- package/styles/material3-dark.css +0 -677
- package/styles/material3-dark.scss +0 -2
- package/styles/material3-lite.css +0 -679
- package/styles/material3-lite.scss +0 -2
- package/styles/material3.css +0 -679
- package/styles/material3.scss +0 -2
- package/styles/tailwind-dark-lite.css +0 -595
- package/styles/tailwind-dark-lite.scss +0 -2
- package/styles/tailwind-dark.css +0 -595
- package/styles/tailwind-dark.scss +0 -2
- package/styles/tailwind-lite.css +0 -595
- package/styles/tailwind-lite.scss +0 -2
- package/styles/tailwind.css +0 -595
- package/styles/tailwind.scss +0 -2
- package/styles/tailwind3-lite.css +0 -669
- package/styles/tailwind3-lite.scss +0 -2
- package/styles/tailwind3.css +0 -669
- package/styles/tailwind3.scss +0 -2
- /package/src/{common → form-renderer/common}/checkbox-group.d.ts +0 -0
- /package/src/{common → form-renderer/common}/conditional-rule-engine.js +0 -0
- /package/src/{common → form-renderer/common}/custom-validation-engine.js +0 -0
- /package/src/{common → form-renderer/common}/datagrid-component.d.ts +0 -0
- /package/src/{common → form-renderer/common}/datagrid-component.js +0 -0
- /package/src/{common → form-renderer/common}/expressions/dependency-tracker.d.ts +0 -0
- /package/src/{common → form-renderer/common}/expressions/dependency-tracker.js +0 -0
- /package/src/{common → form-renderer/common}/expressions/expression-engine.js +0 -0
- /package/src/{common → form-renderer/common}/expressions/expression-parser.js +0 -0
- /package/src/{common → form-renderer/common}/expressions/grid-expressions.d.ts +0 -0
- /package/src/{common → form-renderer/common}/expressions/grid-expressions.js +0 -0
- /package/src/{common → form-renderer/common}/expressions/index.d.ts +0 -0
- /package/src/{common → form-renderer/common}/expressions/index.js +0 -0
- /package/src/{common → form-renderer/common}/minmax-rule-engine.d.ts +0 -0
- /package/src/{common → form-renderer/common}/minmax-rule-engine.js +0 -0
- /package/src/{common → form-renderer/common}/option-fetcher.d.ts +0 -0
- /package/src/{common → form-renderer/common}/option-fetcher.js +0 -0
- /package/src/{common → form-renderer/common}/parser.d.ts +0 -0
- /package/src/{common → form-renderer/common}/parser.js +0 -0
- /package/src/{common → form-renderer/common}/static-html-renderer.d.ts +0 -0
- /package/src/{common → form-renderer/common}/static-html-renderer.js +0 -0
- /package/src/{common → form-renderer/common}/utils.js +0 -0
- /package/src/form-renderer/{render-form-field.d.ts → form-renderer/render-form-field.d.ts} +0 -0
- /package/src/form-renderer/{types → form-renderer/types}/form-schema.d.ts +0 -0
- /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;
|