@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.
Files changed (79) hide show
  1. package/dist/cjs/nvs-dynamic-form/_template.js +4 -17
  2. package/dist/cjs/nvs-dynamic-form/_template.js.map +1 -1
  3. package/dist/cjs/nvs-dynamic-form/components/arrayField/_template.js +25 -26
  4. package/dist/cjs/nvs-dynamic-form/components/arrayField/_template.js.map +1 -1
  5. package/dist/cjs/nvs-dynamic-form/components/elements/_template.d.ts +16 -0
  6. package/dist/cjs/nvs-dynamic-form/components/elements/_template.js +62 -0
  7. package/dist/cjs/nvs-dynamic-form/components/elements/_template.js.map +1 -0
  8. package/dist/cjs/nvs-dynamic-form/components/elements/index.d.ts +1 -0
  9. package/dist/cjs/nvs-dynamic-form/components/elements/index.js +18 -0
  10. package/dist/cjs/nvs-dynamic-form/components/elements/index.js.map +1 -0
  11. package/dist/cjs/nvs-dynamic-form/components/formBuilder/_template.d.ts +20 -0
  12. package/dist/cjs/nvs-dynamic-form/components/formBuilder/_template.js +84 -0
  13. package/dist/cjs/nvs-dynamic-form/components/formBuilder/_template.js.map +1 -0
  14. package/dist/cjs/nvs-dynamic-form/components/formBuilder/index.d.ts +1 -0
  15. package/dist/cjs/nvs-dynamic-form/components/formBuilder/index.js +18 -0
  16. package/dist/cjs/nvs-dynamic-form/components/formBuilder/index.js.map +1 -0
  17. package/dist/cjs/nvs-dynamic-form/components/groupField/_template.d.ts +2 -1
  18. package/dist/cjs/nvs-dynamic-form/components/groupField/_template.js +33 -17
  19. package/dist/cjs/nvs-dynamic-form/components/groupField/_template.js.map +1 -1
  20. package/dist/cjs/nvs-dynamic-form/components/groupField/_type.d.ts +1 -0
  21. package/dist/cjs/types/array-field.type.d.ts +4 -2
  22. package/dist/cjs/types/array-field.type.js +2 -0
  23. package/dist/cjs/types/array-field.type.js.map +1 -1
  24. package/dist/cjs/types/group-field.type.d.ts +3 -5
  25. package/dist/esm/nvs-dynamic-form/_template.js +4 -17
  26. package/dist/esm/nvs-dynamic-form/_template.js.map +1 -1
  27. package/dist/esm/nvs-dynamic-form/components/arrayField/_template.js +26 -27
  28. package/dist/esm/nvs-dynamic-form/components/arrayField/_template.js.map +1 -1
  29. package/dist/esm/nvs-dynamic-form/components/elements/_template.d.ts +16 -0
  30. package/dist/esm/nvs-dynamic-form/components/elements/_template.js +35 -0
  31. package/dist/esm/nvs-dynamic-form/components/elements/_template.js.map +1 -0
  32. package/dist/esm/nvs-dynamic-form/components/elements/index.d.ts +1 -0
  33. package/dist/esm/nvs-dynamic-form/components/elements/index.js +2 -0
  34. package/dist/esm/nvs-dynamic-form/components/elements/index.js.map +1 -0
  35. package/dist/esm/nvs-dynamic-form/components/formBuilder/_template.d.ts +20 -0
  36. package/dist/esm/nvs-dynamic-form/components/formBuilder/_template.js +57 -0
  37. package/dist/esm/nvs-dynamic-form/components/formBuilder/_template.js.map +1 -0
  38. package/dist/esm/nvs-dynamic-form/components/formBuilder/index.d.ts +1 -0
  39. package/dist/esm/nvs-dynamic-form/components/formBuilder/index.js +2 -0
  40. package/dist/esm/nvs-dynamic-form/components/formBuilder/index.js.map +1 -0
  41. package/dist/esm/nvs-dynamic-form/components/groupField/_template.d.ts +2 -1
  42. package/dist/esm/nvs-dynamic-form/components/groupField/_template.js +10 -17
  43. package/dist/esm/nvs-dynamic-form/components/groupField/_template.js.map +1 -1
  44. package/dist/esm/nvs-dynamic-form/components/groupField/_type.d.ts +1 -0
  45. package/dist/esm/types/array-field.type.d.ts +4 -2
  46. package/dist/esm/types/array-field.type.js +2 -0
  47. package/dist/esm/types/array-field.type.js.map +1 -1
  48. package/dist/esm/types/group-field.type.d.ts +3 -5
  49. package/lib/nvs-dynamic-form/_template.tsx +21 -18
  50. package/lib/nvs-dynamic-form/components/arrayField/_template.tsx +51 -40
  51. package/lib/nvs-dynamic-form/components/elements/_template.tsx +94 -0
  52. package/lib/nvs-dynamic-form/components/elements/index.tsx +1 -0
  53. package/lib/nvs-dynamic-form/components/formBuilder/_template.tsx +149 -0
  54. package/lib/nvs-dynamic-form/components/formBuilder/index.tsx +1 -0
  55. package/lib/nvs-dynamic-form/components/groupField/_template.tsx +33 -13
  56. package/lib/nvs-dynamic-form/components/groupField/_type.tsx +1 -0
  57. package/lib/nvs-dynamic-form/stories/components/button.tsx +17 -0
  58. package/lib/nvs-dynamic-form/stories/components/container.tsx +14 -0
  59. package/lib/nvs-dynamic-form/stories/components/index.tsx +3 -0
  60. package/lib/nvs-dynamic-form/stories/components/textboxElement.tsx +20 -0
  61. package/lib/nvs-dynamic-form/stories/fields/arrayField/basicExample.stories.tsx +87 -0
  62. package/lib/nvs-dynamic-form/stories/fields/arrayField/groupField.stories.tsx +102 -0
  63. package/lib/nvs-dynamic-form/stories/fields/arrayField/nested.stories.tsx +137 -0
  64. package/lib/nvs-dynamic-form/stories/fields/basicExample.stories.tsx +66 -0
  65. package/lib/nvs-dynamic-form/stories/fields/groupField/arrayFields.stories.tsx +113 -0
  66. package/lib/nvs-dynamic-form/stories/fields/groupField/basicExample.stories.tsx +86 -0
  67. package/lib/nvs-dynamic-form/stories/fields/groupField/container.stories.tsx +112 -0
  68. package/lib/nvs-dynamic-form/stories/fields/groupField/nested.stories.tsx +103 -0
  69. package/lib/types/array-field.type.tsx +6 -2
  70. package/lib/types/group-field.type.tsx +3 -3
  71. package/package.json +1 -1
  72. package/dist/cjs/nvs-dynamic-form/services/generateFormContentUtils.d.ts +0 -46
  73. package/dist/cjs/nvs-dynamic-form/services/generateFormContentUtils.js +0 -97
  74. package/dist/cjs/nvs-dynamic-form/services/generateFormContentUtils.js.map +0 -1
  75. package/dist/esm/nvs-dynamic-form/services/generateFormContentUtils.d.ts +0 -46
  76. package/dist/esm/nvs-dynamic-form/services/generateFormContentUtils.js +0 -90
  77. package/dist/esm/nvs-dynamic-form/services/generateFormContentUtils.js.map +0 -1
  78. package/lib/nvs-dynamic-form/_stories.tsx +0 -349
  79. 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
- }