@nvs-dynamic-form/react-core 2.3.0 → 2.4.0
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/cjs/nvs-dynamic-form/_template.js +4 -17
- package/dist/cjs/nvs-dynamic-form/_template.js.map +1 -1
- package/dist/cjs/nvs-dynamic-form/components/arrayField/_template.js +25 -26
- package/dist/cjs/nvs-dynamic-form/components/arrayField/_template.js.map +1 -1
- package/dist/cjs/nvs-dynamic-form/components/elements/_template.d.ts +16 -0
- package/dist/cjs/nvs-dynamic-form/components/elements/_template.js +62 -0
- package/dist/cjs/nvs-dynamic-form/components/elements/_template.js.map +1 -0
- package/dist/cjs/nvs-dynamic-form/components/elements/index.d.ts +1 -0
- package/dist/cjs/nvs-dynamic-form/components/elements/index.js +18 -0
- package/dist/cjs/nvs-dynamic-form/components/elements/index.js.map +1 -0
- package/dist/cjs/nvs-dynamic-form/components/formBuilder/_template.d.ts +20 -0
- package/dist/cjs/nvs-dynamic-form/components/formBuilder/_template.js +84 -0
- package/dist/cjs/nvs-dynamic-form/components/formBuilder/_template.js.map +1 -0
- package/dist/cjs/nvs-dynamic-form/components/formBuilder/index.d.ts +1 -0
- package/dist/cjs/nvs-dynamic-form/components/formBuilder/index.js +18 -0
- package/dist/cjs/nvs-dynamic-form/components/formBuilder/index.js.map +1 -0
- package/dist/cjs/nvs-dynamic-form/components/groupField/_template.d.ts +2 -1
- package/dist/cjs/nvs-dynamic-form/components/groupField/_template.js +33 -17
- package/dist/cjs/nvs-dynamic-form/components/groupField/_template.js.map +1 -1
- package/dist/cjs/nvs-dynamic-form/components/groupField/_type.d.ts +1 -0
- package/dist/cjs/types/array-field.type.d.ts +4 -2
- package/dist/cjs/types/array-field.type.js +2 -0
- package/dist/cjs/types/array-field.type.js.map +1 -1
- package/dist/cjs/types/group-field.type.d.ts +3 -5
- package/dist/esm/nvs-dynamic-form/_template.js +4 -17
- package/dist/esm/nvs-dynamic-form/_template.js.map +1 -1
- package/dist/esm/nvs-dynamic-form/components/arrayField/_template.js +26 -27
- package/dist/esm/nvs-dynamic-form/components/arrayField/_template.js.map +1 -1
- package/dist/esm/nvs-dynamic-form/components/elements/_template.d.ts +16 -0
- package/dist/esm/nvs-dynamic-form/components/elements/_template.js +35 -0
- package/dist/esm/nvs-dynamic-form/components/elements/_template.js.map +1 -0
- package/dist/esm/nvs-dynamic-form/components/elements/index.d.ts +1 -0
- package/dist/esm/nvs-dynamic-form/components/elements/index.js +2 -0
- package/dist/esm/nvs-dynamic-form/components/elements/index.js.map +1 -0
- package/dist/esm/nvs-dynamic-form/components/formBuilder/_template.d.ts +20 -0
- package/dist/esm/nvs-dynamic-form/components/formBuilder/_template.js +57 -0
- package/dist/esm/nvs-dynamic-form/components/formBuilder/_template.js.map +1 -0
- package/dist/esm/nvs-dynamic-form/components/formBuilder/index.d.ts +1 -0
- package/dist/esm/nvs-dynamic-form/components/formBuilder/index.js +2 -0
- package/dist/esm/nvs-dynamic-form/components/formBuilder/index.js.map +1 -0
- package/dist/esm/nvs-dynamic-form/components/groupField/_template.d.ts +2 -1
- package/dist/esm/nvs-dynamic-form/components/groupField/_template.js +10 -17
- package/dist/esm/nvs-dynamic-form/components/groupField/_template.js.map +1 -1
- package/dist/esm/nvs-dynamic-form/components/groupField/_type.d.ts +1 -0
- package/dist/esm/types/array-field.type.d.ts +4 -2
- package/dist/esm/types/array-field.type.js +2 -0
- package/dist/esm/types/array-field.type.js.map +1 -1
- package/dist/esm/types/group-field.type.d.ts +3 -5
- package/lib/nvs-dynamic-form/_template.tsx +21 -18
- package/lib/nvs-dynamic-form/components/arrayField/_template.tsx +51 -40
- package/lib/nvs-dynamic-form/components/elements/_template.tsx +94 -0
- package/lib/nvs-dynamic-form/components/elements/index.tsx +1 -0
- package/lib/nvs-dynamic-form/components/formBuilder/_template.tsx +149 -0
- package/lib/nvs-dynamic-form/components/formBuilder/index.tsx +1 -0
- package/lib/nvs-dynamic-form/components/groupField/_template.tsx +33 -13
- package/lib/nvs-dynamic-form/components/groupField/_type.tsx +1 -0
- package/lib/nvs-dynamic-form/stories/components/button.tsx +17 -0
- package/lib/nvs-dynamic-form/stories/components/container.tsx +14 -0
- package/lib/nvs-dynamic-form/stories/components/index.tsx +3 -0
- package/lib/nvs-dynamic-form/stories/components/textboxElement.tsx +20 -0
- package/lib/nvs-dynamic-form/stories/fields/arrayField/basicExample.stories.tsx +87 -0
- package/lib/nvs-dynamic-form/stories/fields/arrayField/groupField.stories.tsx +102 -0
- package/lib/nvs-dynamic-form/stories/fields/arrayField/nested.stories.tsx +137 -0
- package/lib/nvs-dynamic-form/stories/fields/basicExample.stories.tsx +66 -0
- package/lib/nvs-dynamic-form/stories/fields/groupField/arrayFields.stories.tsx +113 -0
- package/lib/nvs-dynamic-form/stories/fields/groupField/basicExample.stories.tsx +86 -0
- package/lib/nvs-dynamic-form/stories/fields/groupField/container.stories.tsx +112 -0
- package/lib/nvs-dynamic-form/stories/fields/groupField/nested.stories.tsx +103 -0
- package/lib/types/array-field.type.tsx +6 -2
- package/lib/types/group-field.type.tsx +3 -3
- package/package.json +1 -1
- package/dist/cjs/nvs-dynamic-form/services/generateFormContentUtils.d.ts +0 -46
- package/dist/cjs/nvs-dynamic-form/services/generateFormContentUtils.js +0 -97
- package/dist/cjs/nvs-dynamic-form/services/generateFormContentUtils.js.map +0 -1
- package/dist/esm/nvs-dynamic-form/services/generateFormContentUtils.d.ts +0 -46
- package/dist/esm/nvs-dynamic-form/services/generateFormContentUtils.js +0 -90
- package/dist/esm/nvs-dynamic-form/services/generateFormContentUtils.js.map +0 -1
- package/lib/nvs-dynamic-form/_stories.tsx +0 -349
- package/lib/nvs-dynamic-form/services/generateFormContentUtils.tsx +0 -196
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ArrayField,
|
|
3
|
-
ArrayFieldAddButton,
|
|
4
|
-
FieldBase,
|
|
5
|
-
GroupField,
|
|
6
|
-
LabelOptions,
|
|
7
|
-
} from "../../types";
|
|
8
|
-
|
|
9
|
-
import { ArrayField as ArrayFieldElement } from "../components/arrayField";
|
|
10
|
-
import { Container } from "../components/container";
|
|
11
|
-
import { Field } from "../components/field";
|
|
12
|
-
import { FieldType } from "../_type";
|
|
13
|
-
import { GroupField as GroupFieldElement } from "../components/groupField";
|
|
14
|
-
import { IFormElement } from "../components/field";
|
|
15
|
-
import React from "react";
|
|
16
|
-
import { ReactNode } from "react";
|
|
17
|
-
|
|
18
|
-
export class GenerateFormContentUtils {
|
|
19
|
-
private readonly containerComponent: React.FC<any>;
|
|
20
|
-
private readonly formElements: IFormElement;
|
|
21
|
-
private readonly useContainersOutsideGroup: boolean;
|
|
22
|
-
private readonly useGroupContainer: boolean;
|
|
23
|
-
private readonly containerVisible: boolean;
|
|
24
|
-
private readonly fields: Array<FieldType>;
|
|
25
|
-
private readonly containerOptions: { [key: string]: any };
|
|
26
|
-
private readonly buttonComponent?: React.FC<any>;
|
|
27
|
-
private readonly fieldArrayAddButtonDefaultOptions: ArrayFieldAddButton;
|
|
28
|
-
private readonly fieldArrayRemoveButtonDefaultOptions: ArrayFieldAddButton;
|
|
29
|
-
private readonly labelDefaultOptions: LabelOptions;
|
|
30
|
-
|
|
31
|
-
constructor({
|
|
32
|
-
containerComponent,
|
|
33
|
-
formElements,
|
|
34
|
-
useContainersOutsideGroup,
|
|
35
|
-
useGroupContainer,
|
|
36
|
-
containerVisible,
|
|
37
|
-
fields,
|
|
38
|
-
containerOptions,
|
|
39
|
-
buttonComponent,
|
|
40
|
-
fieldArrayAddButtonDefaultOptions,
|
|
41
|
-
fieldArrayRemoveButtonDefaultOptions,
|
|
42
|
-
labelDefaultOptions,
|
|
43
|
-
}: {
|
|
44
|
-
containerComponent: React.FC<any>;
|
|
45
|
-
formElements: IFormElement;
|
|
46
|
-
useContainersOutsideGroup: boolean;
|
|
47
|
-
useGroupContainer: boolean;
|
|
48
|
-
containerVisible: boolean;
|
|
49
|
-
fields: Array<FieldType>;
|
|
50
|
-
buttonComponent?: React.FC<any>;
|
|
51
|
-
containerOptions?: { [key: string]: any };
|
|
52
|
-
fieldArrayAddButtonDefaultOptions?: ArrayFieldAddButton;
|
|
53
|
-
fieldArrayRemoveButtonDefaultOptions?: ArrayFieldAddButton;
|
|
54
|
-
labelDefaultOptions?: LabelOptions;
|
|
55
|
-
}) {
|
|
56
|
-
this.containerComponent = containerComponent;
|
|
57
|
-
this.formElements = formElements;
|
|
58
|
-
this.useContainersOutsideGroup = useContainersOutsideGroup;
|
|
59
|
-
this.useGroupContainer = useGroupContainer;
|
|
60
|
-
this.containerVisible = containerVisible;
|
|
61
|
-
this.fields = fields;
|
|
62
|
-
this.containerOptions = containerOptions ?? {};
|
|
63
|
-
this.buttonComponent = buttonComponent;
|
|
64
|
-
this.fieldArrayAddButtonDefaultOptions =
|
|
65
|
-
fieldArrayAddButtonDefaultOptions ?? {};
|
|
66
|
-
this.fieldArrayRemoveButtonDefaultOptions =
|
|
67
|
-
fieldArrayRemoveButtonDefaultOptions ?? {};
|
|
68
|
-
this.labelDefaultOptions = labelDefaultOptions ?? {};
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
createContainer(content: ReactNode, containerProps: object) {
|
|
72
|
-
return (
|
|
73
|
-
<Container
|
|
74
|
-
containerComponent={this.containerComponent}
|
|
75
|
-
options={containerProps}
|
|
76
|
-
>
|
|
77
|
-
{content}
|
|
78
|
-
</Container>
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
createFormContent() {
|
|
83
|
-
const singleFields = this.createSingleFieldsElements();
|
|
84
|
-
const groupFields = this.createGroupFieldsElements();
|
|
85
|
-
|
|
86
|
-
let formContent;
|
|
87
|
-
if (this.containerVisible && this.useContainersOutsideGroup && singleFields)
|
|
88
|
-
formContent = (
|
|
89
|
-
<>
|
|
90
|
-
{this.createContainer(singleFields, this.containerOptions)}
|
|
91
|
-
{groupFields}
|
|
92
|
-
</>
|
|
93
|
-
);
|
|
94
|
-
else
|
|
95
|
-
formContent = this.createFormGroup(
|
|
96
|
-
<>
|
|
97
|
-
{singleFields}
|
|
98
|
-
{groupFields}
|
|
99
|
-
</>,
|
|
100
|
-
);
|
|
101
|
-
|
|
102
|
-
return formContent;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
createFormElements(fields: Array<FieldType>): JSX.Element[] {
|
|
106
|
-
const fieldsElements = [];
|
|
107
|
-
for (const field of fields) {
|
|
108
|
-
if (field instanceof GroupField)
|
|
109
|
-
fieldsElements.push(this.createGroupFieldElement(field));
|
|
110
|
-
else if (field instanceof ArrayField)
|
|
111
|
-
fieldsElements.push(this.createArrayFieldElement(field));
|
|
112
|
-
else fieldsElements.push(this.createSingleFieldElement(field));
|
|
113
|
-
}
|
|
114
|
-
return fieldsElements;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
createContentContainer(formElements: ReactNode) {
|
|
118
|
-
return (
|
|
119
|
-
<div className="nvs-container-fluid">
|
|
120
|
-
<div className="nvs-row">{formElements}</div>
|
|
121
|
-
</div>
|
|
122
|
-
);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
private getSingleFields() {
|
|
126
|
-
return this.fields.filter((field) => this.isSingleField(field));
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
private getGroupFields() {
|
|
130
|
-
return this.fields.filter((field) => !this.isSingleField(field));
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
private createSingleFieldsElements() {
|
|
134
|
-
const singleFields = this.getSingleFields();
|
|
135
|
-
return (
|
|
136
|
-
singleFields.length > 0 &&
|
|
137
|
-
this.createContentContainer(this.createFormElements(singleFields))
|
|
138
|
-
);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
private createGroupFieldsElements() {
|
|
142
|
-
const groupFields = this.getGroupFields();
|
|
143
|
-
return groupFields.length > 0 && this.createFormElements(groupFields);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
private createSingleFieldElement(field: FieldBase<unknown>) {
|
|
147
|
-
return (
|
|
148
|
-
<Field key={field.id} formElements={this.formElements} field={field} />
|
|
149
|
-
);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
private createGroupFieldElement(field: GroupField) {
|
|
153
|
-
return (
|
|
154
|
-
<GroupFieldElement
|
|
155
|
-
key={field.id}
|
|
156
|
-
formElements={this.formElements}
|
|
157
|
-
field={field}
|
|
158
|
-
containerComponent={this.containerComponent}
|
|
159
|
-
useContainersOutsideGroup={this.useContainersOutsideGroup}
|
|
160
|
-
useGroupContainer={this.useGroupContainer}
|
|
161
|
-
containerVisible={this.containerVisible}
|
|
162
|
-
/>
|
|
163
|
-
);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
private createArrayFieldElement(field: ArrayField) {
|
|
167
|
-
return (
|
|
168
|
-
<ArrayFieldElement
|
|
169
|
-
key={field.id}
|
|
170
|
-
formElements={this.formElements}
|
|
171
|
-
field={field}
|
|
172
|
-
containerComponent={this.containerComponent}
|
|
173
|
-
useContainersOutsideGroup={this.useContainersOutsideGroup}
|
|
174
|
-
useGroupContainer={this.useGroupContainer}
|
|
175
|
-
containerVisible={this.containerVisible}
|
|
176
|
-
buttonComponent={this.buttonComponent!}
|
|
177
|
-
addButtonDefaultOptions={this.fieldArrayAddButtonDefaultOptions}
|
|
178
|
-
removeButtonDefaultOptions={this.fieldArrayRemoveButtonDefaultOptions}
|
|
179
|
-
labelDefaultOptions={this.labelDefaultOptions}
|
|
180
|
-
/>
|
|
181
|
-
);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
private isSingleField(field: FieldType) {
|
|
185
|
-
return !(
|
|
186
|
-
field instanceof GroupField &&
|
|
187
|
-
field.containerVisible &&
|
|
188
|
-
this.useGroupContainer &&
|
|
189
|
-
this.containerVisible
|
|
190
|
-
);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
private createFormGroup(formContent: ReactNode) {
|
|
194
|
-
return <div className="df-form-group">{formContent}</div>;
|
|
195
|
-
}
|
|
196
|
-
}
|