@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,39 +1,35 @@
|
|
|
1
1
|
import * as lodash from "lodash";
|
|
2
2
|
import { ArrayFieldAddButton, ArrayFieldRemoveButton, LabelOptions, } from "../../../types";
|
|
3
3
|
import { FieldArray } from "formik";
|
|
4
|
-
import React, { useState } from "react";
|
|
5
|
-
import {
|
|
4
|
+
import React, { useCallback, useState } from "react";
|
|
5
|
+
import { Elements } from "../elements";
|
|
6
6
|
import { List } from "../list/_template";
|
|
7
7
|
export const ArrayField = ({ field: arrayField, formElements, containerComponent, containerVisible, useContainersOutsideGroup, useGroupContainer, buttonComponent: ButtonComponent, addButtonDefaultOptions, removeButtonDefaultOptions, labelDefaultOptions, }) => {
|
|
8
|
+
const createArrayItem = useCallback((index) => {
|
|
9
|
+
return lodash.cloneDeep(arrayField.fields).map((field) => {
|
|
10
|
+
field.id = `${arrayField.id}[${index}].${field.id}`;
|
|
11
|
+
return field;
|
|
12
|
+
});
|
|
13
|
+
}, [arrayField.fields]);
|
|
8
14
|
const [addButtonOptions] = useState(new ArrayFieldAddButton(lodash.merge(addButtonDefaultOptions ?? {}, arrayField.addButtonOptions ?? {})));
|
|
9
15
|
const [removeButtonOptions] = useState(new ArrayFieldRemoveButton(lodash.merge(removeButtonDefaultOptions ?? {}, arrayField.removeButtonOptions ?? {})));
|
|
10
16
|
const [labelOptions] = useState(new LabelOptions(lodash.merge(labelDefaultOptions ?? {}, arrayField.labelOptions ?? {})));
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
useContainersOutsideGroup,
|
|
15
|
-
useGroupContainer,
|
|
16
|
-
containerVisible: containerVisible,
|
|
17
|
-
fields: arrayField.fields,
|
|
18
|
-
fieldArrayAddButtonDefaultOptions: addButtonDefaultOptions,
|
|
19
|
-
fieldArrayRemoveButtonDefaultOptions: removeButtonDefaultOptions,
|
|
20
|
-
});
|
|
21
|
-
const createArrayItem = (name, index) => {
|
|
22
|
-
return arrayField.fields.map((field) => ({
|
|
23
|
-
...field,
|
|
24
|
-
id: `${name}[${index}].${field.id}`,
|
|
25
|
-
}));
|
|
17
|
+
const ContentContainer = ({ children }) => {
|
|
18
|
+
return (React.createElement("div", { className: "nvs-container-fluid" },
|
|
19
|
+
React.createElement("div", { className: "nvs-row" }, children)));
|
|
26
20
|
};
|
|
27
21
|
const getDefaultItem = () => {
|
|
28
22
|
return arrayField.fields.reduce((acc, field) => {
|
|
29
|
-
|
|
23
|
+
if ("defaultValue" in field)
|
|
24
|
+
acc[field.id] = field.defaultValue;
|
|
30
25
|
return acc;
|
|
31
26
|
}, {});
|
|
32
27
|
};
|
|
33
28
|
const createArrayFields = (index) => {
|
|
34
29
|
return (React.createElement("div", { className: "df-array-field-content" },
|
|
35
30
|
React.createElement("div", { className: "nvs-container-fluid" },
|
|
36
|
-
React.createElement("div", { className: "nvs-row" },
|
|
31
|
+
React.createElement("div", { className: "nvs-row" },
|
|
32
|
+
React.createElement(Elements, { fields: createArrayItem(index), formElements: formElements, containerComponent: containerComponent, useContainersOutsideGroup: useContainersOutsideGroup, useGroupContainer: useGroupContainer, containerVisible: containerVisible, buttonComponent: ButtonComponent, fieldArrayAddButtonDefaultOptions: addButtonDefaultOptions, fieldArrayRemoveButtonDefaultOptions: removeButtonDefaultOptions, labelDefaultOptions: labelDefaultOptions })))));
|
|
37
33
|
};
|
|
38
34
|
const createRemoveButton = (onRemoveItem) => {
|
|
39
35
|
return (React.createElement("div", { className: "nvs-col-12" },
|
|
@@ -42,7 +38,8 @@ export const ArrayField = ({ field: arrayField, formElements, containerComponent
|
|
|
42
38
|
}, type: "button", ...removeButtonOptions.options }, removeButtonOptions.label)));
|
|
43
39
|
};
|
|
44
40
|
const createArrayItemRemoveButton = (onRemoveItem) => {
|
|
45
|
-
return (React.createElement("div", { className: "df-array-field-remove-button" },
|
|
41
|
+
return (React.createElement("div", { className: "df-array-field-remove-button" },
|
|
42
|
+
React.createElement(ContentContainer, null, createRemoveButton(onRemoveItem))));
|
|
46
43
|
};
|
|
47
44
|
const createFieldArrayContent = (onRemoveItem, index) => {
|
|
48
45
|
return (React.createElement("div", { className: `df-array-field remove-button-${removeButtonOptions.position}`, key: index },
|
|
@@ -55,17 +52,18 @@ export const ArrayField = ({ field: arrayField, formElements, containerComponent
|
|
|
55
52
|
React.createElement(ButtonComponent, { onClick: () => onAddItem(getDefaultItem()), type: "button", ...addButtonOptions.options }, addButtonOptions.label)));
|
|
56
53
|
};
|
|
57
54
|
const createArrayItemAddButton = (onAddItem) => {
|
|
58
|
-
return
|
|
55
|
+
return React.createElement(ContentContainer, null, createAddButton(onAddItem));
|
|
59
56
|
};
|
|
60
57
|
const createArrayFieldLabel = () => {
|
|
61
|
-
return
|
|
62
|
-
React.createElement("
|
|
58
|
+
return (React.createElement(ContentContainer, null,
|
|
59
|
+
React.createElement("div", { className: "nvs-col-12" },
|
|
60
|
+
React.createElement("label", { className: `df-array-field-label ${labelOptions.class}` }, arrayField.label))));
|
|
63
61
|
};
|
|
64
62
|
const checkFieldArrayMaxSize = (length) => {
|
|
65
63
|
const maxSize = arrayField
|
|
66
64
|
.validate.describe()
|
|
67
65
|
.tests.find((test) => test.name === "max")?.params.max;
|
|
68
|
-
return maxSize && length
|
|
66
|
+
return !(maxSize && length == maxSize);
|
|
69
67
|
};
|
|
70
68
|
const getArrayFieldErrorMessage = (form) => {
|
|
71
69
|
let error = form.errors[arrayField.id];
|
|
@@ -81,9 +79,10 @@ export const ArrayField = ({ field: arrayField, formElements, containerComponent
|
|
|
81
79
|
};
|
|
82
80
|
return (React.createElement(FieldArray, { name: arrayField.id }, ({ push, remove, form }) => (React.createElement(React.Fragment, null,
|
|
83
81
|
arrayField.label && createArrayFieldLabel(),
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
82
|
+
lodash
|
|
83
|
+
.get(form.values, arrayField.id)
|
|
84
|
+
?.map((_, index) => createFieldArrayContent(remove, index)),
|
|
85
|
+
checkFieldArrayMaxSize(lodash.get(form.values, arrayField.id)?.length) && createArrayItemAddButton(push),
|
|
87
86
|
createErrorList(form)))));
|
|
88
87
|
};
|
|
89
88
|
//# sourceMappingURL=_template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_template.js","sourceRoot":"","sources":["../../../../../lib/nvs-dynamic-form/components/arrayField/_template.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAe,MAAM,QAAQ,CAAC;AACjD,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"_template.js","sourceRoot":"","sources":["../../../../../lib/nvs-dynamic-form/components/arrayField/_template.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ArrayFieldAddButton, LabelOptions } from "../../../types";
|
|
2
|
+
import { IFormElement } from "../field";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { FieldType } from "../../_type";
|
|
5
|
+
export declare const Elements: ({ fields, formElements, containerComponent, useContainersOutsideGroup, useGroupContainer, containerVisible, buttonComponent, fieldArrayAddButtonDefaultOptions, fieldArrayRemoveButtonDefaultOptions, labelDefaultOptions, }: {
|
|
6
|
+
fields: Array<FieldType>;
|
|
7
|
+
formElements: IFormElement;
|
|
8
|
+
containerComponent: React.FC<any>;
|
|
9
|
+
useContainersOutsideGroup: boolean;
|
|
10
|
+
useGroupContainer: boolean;
|
|
11
|
+
containerVisible: boolean;
|
|
12
|
+
buttonComponent?: React.FC<any>;
|
|
13
|
+
fieldArrayAddButtonDefaultOptions?: ArrayFieldAddButton;
|
|
14
|
+
fieldArrayRemoveButtonDefaultOptions?: ArrayFieldAddButton;
|
|
15
|
+
labelDefaultOptions?: LabelOptions;
|
|
16
|
+
}) => React.JSX.Element | JSX.Element[];
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ArrayField, GroupField, } from "../../../types";
|
|
2
|
+
import { Field } from "../field";
|
|
3
|
+
import React, { useEffect, useState } from "react";
|
|
4
|
+
import { ArrayField as ArrayFieldElement } from "../arrayField";
|
|
5
|
+
import { GroupField as GroupFieldElement } from "../groupField";
|
|
6
|
+
export const Elements = ({ fields, formElements, containerComponent, useContainersOutsideGroup, useGroupContainer, containerVisible, buttonComponent, fieldArrayAddButtonDefaultOptions = {}, fieldArrayRemoveButtonDefaultOptions = {}, labelDefaultOptions = {}, }) => {
|
|
7
|
+
const [fieldsElements, setFieldsElements] = useState([]);
|
|
8
|
+
const createFormElements = () => {
|
|
9
|
+
const fieldsElements = [];
|
|
10
|
+
for (const field of fields) {
|
|
11
|
+
if (field instanceof GroupField)
|
|
12
|
+
fieldsElements.push(createGroupFieldElement(field));
|
|
13
|
+
else if (field instanceof ArrayField)
|
|
14
|
+
fieldsElements.push(createArrayFieldElement(field));
|
|
15
|
+
else
|
|
16
|
+
fieldsElements.push(createSingleFieldElement(field));
|
|
17
|
+
}
|
|
18
|
+
return fieldsElements;
|
|
19
|
+
};
|
|
20
|
+
const createSingleFieldElement = (field) => {
|
|
21
|
+
return React.createElement(Field, { key: field.id, formElements: formElements, field: field });
|
|
22
|
+
};
|
|
23
|
+
const createGroupFieldElement = (field) => {
|
|
24
|
+
return (React.createElement(GroupFieldElement, { key: field.id, formElements: formElements, field: field, containerComponent: containerComponent, useContainersOutsideGroup: useContainersOutsideGroup, useGroupContainer: useGroupContainer, containerVisible: containerVisible, buttonComponent: buttonComponent }));
|
|
25
|
+
};
|
|
26
|
+
const createArrayFieldElement = (field) => {
|
|
27
|
+
return (React.createElement(ArrayFieldElement, { key: field.id, formElements: formElements, field: field, containerComponent: containerComponent, useContainersOutsideGroup: useContainersOutsideGroup, useGroupContainer: useGroupContainer, containerVisible: containerVisible, buttonComponent: buttonComponent, addButtonDefaultOptions: fieldArrayAddButtonDefaultOptions, removeButtonDefaultOptions: fieldArrayRemoveButtonDefaultOptions, labelDefaultOptions: labelDefaultOptions }));
|
|
28
|
+
};
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (fields.length > 0)
|
|
31
|
+
setFieldsElements(createFormElements());
|
|
32
|
+
}, [fields]);
|
|
33
|
+
return fieldsElements.length > 0 ? fieldsElements : React.createElement(React.Fragment, null);
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=_template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_template.js","sourceRoot":"","sources":["../../../../../lib/nvs-dynamic-form/components/elements/_template.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,UAAU,GAEX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAgB,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEhE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,MAAM,EACN,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iCAAiC,GAAG,EAAE,EACtC,oCAAoC,GAAG,EAAE,EACzC,mBAAmB,GAAG,EAAE,GAYzB,EAAE,EAAE;IACH,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAgB,EAAE,CAAC,CAAC;IAExE,MAAM,kBAAkB,GAAG,GAAkB,EAAE;QAC7C,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,YAAY,UAAU;gBAC7B,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;iBACjD,IAAI,KAAK,YAAY,UAAU;gBAClC,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;;gBACjD,cAAc,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,wBAAwB,GAAG,CAAC,KAAyB,EAAE,EAAE;QAC7D,OAAO,oBAAC,KAAK,IAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;IAC5E,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,CAAC,KAAiB,EAAE,EAAE;QACpD,OAAO,CACL,oBAAC,iBAAiB,IAChB,GAAG,EAAE,KAAK,CAAC,EAAE,EACb,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,kBAAkB,EACtC,yBAAyB,EAAE,yBAAyB,EACpD,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,eAAe,EAAE,eAAgB,GACjC,CACH,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,CAAC,KAAiB,EAAE,EAAE;QACpD,OAAO,CACL,oBAAC,iBAAiB,IAChB,GAAG,EAAE,KAAK,CAAC,EAAE,EACb,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,kBAAkB,EACtC,yBAAyB,EAAE,yBAAyB,EACpD,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,eAAe,EAAE,eAAgB,EACjC,uBAAuB,EAAE,iCAAiC,EAC1D,0BAA0B,EAAE,oCAAoC,EAChE,mBAAmB,EAAE,mBAAmB,GACxC,CACH,CAAC;IACJ,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACjE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,yCAAK,CAAC;AAC5D,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./_template";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/nvs-dynamic-form/components/elements/index.tsx"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { LabelOptions } from "../../../types";
|
|
3
|
+
import { IFormElement } from "../field";
|
|
4
|
+
import { FieldType } from "../../_type";
|
|
5
|
+
import { ArrayFieldAddButton } from "../../../types";
|
|
6
|
+
export declare const FormBuilder: ({ containerComponent, formElements, useContainersOutsideGroup, useGroupContainer, containerVisible, fields, containerOptions, buttonComponent, fieldArrayAddButtonDefaultOptions, fieldArrayRemoveButtonDefaultOptions, labelDefaultOptions, }: {
|
|
7
|
+
containerComponent: React.FC<any>;
|
|
8
|
+
formElements: IFormElement;
|
|
9
|
+
useContainersOutsideGroup: boolean;
|
|
10
|
+
useGroupContainer: boolean;
|
|
11
|
+
containerVisible: boolean;
|
|
12
|
+
fields: Array<FieldType>;
|
|
13
|
+
buttonComponent?: React.FC<any>;
|
|
14
|
+
containerOptions?: {
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
};
|
|
17
|
+
fieldArrayAddButtonDefaultOptions?: ArrayFieldAddButton;
|
|
18
|
+
fieldArrayRemoveButtonDefaultOptions?: ArrayFieldAddButton;
|
|
19
|
+
labelDefaultOptions?: LabelOptions;
|
|
20
|
+
}) => React.JSX.Element;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
|
+
import { ArrayField, GroupField } from "../../../types";
|
|
3
|
+
import { Container } from "../container";
|
|
4
|
+
import { Elements } from "../elements";
|
|
5
|
+
export const FormBuilder = ({ containerComponent, formElements, useContainersOutsideGroup, useGroupContainer, containerVisible, fields, containerOptions = {}, buttonComponent, fieldArrayAddButtonDefaultOptions, fieldArrayRemoveButtonDefaultOptions, labelDefaultOptions, }) => {
|
|
6
|
+
const [formContent, setFormContent] = useState();
|
|
7
|
+
const createFormContent = () => {
|
|
8
|
+
const singleFields = createSingleFieldsElements();
|
|
9
|
+
const groupFields = createGroupFieldsElements();
|
|
10
|
+
let formContent;
|
|
11
|
+
if (containerVisible && useContainersOutsideGroup && singleFields)
|
|
12
|
+
formContent = (React.createElement(React.Fragment, null,
|
|
13
|
+
createContainer(singleFields, containerOptions),
|
|
14
|
+
groupFields));
|
|
15
|
+
else
|
|
16
|
+
formContent = createFormGroup(React.createElement(React.Fragment, null,
|
|
17
|
+
singleFields,
|
|
18
|
+
groupFields));
|
|
19
|
+
return formContent;
|
|
20
|
+
};
|
|
21
|
+
const createContentContainer = (formElements) => {
|
|
22
|
+
return (React.createElement("div", { className: "nvs-container-fluid" },
|
|
23
|
+
React.createElement("div", { className: "nvs-row" }, formElements)));
|
|
24
|
+
};
|
|
25
|
+
const createSingleFieldsElements = () => {
|
|
26
|
+
const singleFields = getSingleFields();
|
|
27
|
+
return (singleFields.length > 0 &&
|
|
28
|
+
createContentContainer(React.createElement(Elements, { fields: singleFields, formElements: formElements, containerComponent: containerComponent, useContainersOutsideGroup: useContainersOutsideGroup, useGroupContainer: useGroupContainer, containerVisible: containerVisible, buttonComponent: buttonComponent, fieldArrayAddButtonDefaultOptions: fieldArrayAddButtonDefaultOptions, fieldArrayRemoveButtonDefaultOptions: fieldArrayRemoveButtonDefaultOptions, labelDefaultOptions: labelDefaultOptions })));
|
|
29
|
+
};
|
|
30
|
+
const createGroupFieldsElements = () => {
|
|
31
|
+
const groupFields = getGroupFields();
|
|
32
|
+
return (groupFields.length > 0 && (React.createElement(Elements, { fields: groupFields, formElements: formElements, containerComponent: containerComponent, useContainersOutsideGroup: useContainersOutsideGroup, useGroupContainer: useGroupContainer, containerVisible: containerVisible, buttonComponent: buttonComponent, fieldArrayAddButtonDefaultOptions: fieldArrayAddButtonDefaultOptions, fieldArrayRemoveButtonDefaultOptions: fieldArrayRemoveButtonDefaultOptions, labelDefaultOptions: labelDefaultOptions })));
|
|
33
|
+
};
|
|
34
|
+
const isSingleField = (field) => {
|
|
35
|
+
return !((field instanceof GroupField || field instanceof ArrayField) &&
|
|
36
|
+
field.containerVisible &&
|
|
37
|
+
useGroupContainer &&
|
|
38
|
+
containerVisible);
|
|
39
|
+
};
|
|
40
|
+
const getSingleFields = () => {
|
|
41
|
+
return fields.filter((field) => isSingleField(field));
|
|
42
|
+
};
|
|
43
|
+
const getGroupFields = () => {
|
|
44
|
+
return fields.filter((field) => !isSingleField(field));
|
|
45
|
+
};
|
|
46
|
+
const createContainer = (content, containerProps) => {
|
|
47
|
+
return (React.createElement(Container, { containerComponent: containerComponent, options: containerProps }, content));
|
|
48
|
+
};
|
|
49
|
+
const createFormGroup = (formContent) => {
|
|
50
|
+
return React.createElement("div", { className: "df-form-group" }, formContent);
|
|
51
|
+
};
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
setFormContent(createFormContent());
|
|
54
|
+
}, [fields]);
|
|
55
|
+
return React.createElement(React.Fragment, null, formContent);
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=_template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_template.js","sourceRoot":"","sources":["../../../../../lib/nvs-dynamic-form/components/formBuilder/_template.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./_template";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/nvs-dynamic-form/components/formBuilder/index.tsx"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import { IGroupField } from "./_type";
|
|
2
|
-
export declare const GroupField: ({ field: groupField, formElements, containerComponent, containerVisible, useContainersOutsideGroup, useGroupContainer, }: IGroupField) =>
|
|
3
|
+
export declare const GroupField: ({ field: groupField, formElements, containerComponent, containerVisible, useContainersOutsideGroup, useGroupContainer, buttonComponent, }: IGroupField) => React.JSX.Element;
|
|
@@ -1,22 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
containerVisible: containerVisible && groupField.containerVisible,
|
|
10
|
-
fields: groupField.fields.map((field) => {
|
|
11
|
-
field.id = `${groupField.id}.${field.id}`;
|
|
12
|
-
return field;
|
|
13
|
-
}),
|
|
14
|
-
});
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import { Elements } from "../elements";
|
|
3
|
+
import { FormBuilder } from "../formBuilder";
|
|
4
|
+
export const GroupField = ({ field: groupField, formElements, containerComponent, containerVisible, useContainersOutsideGroup, useGroupContainer, buttonComponent, }) => {
|
|
5
|
+
const [fields, _] = useState(groupField.fields.map((field) => {
|
|
6
|
+
field.id = `${groupField.id}.${field.id}`;
|
|
7
|
+
return field;
|
|
8
|
+
}));
|
|
15
9
|
const isContainerVisible = () => {
|
|
16
10
|
return groupField.containerVisible && useGroupContainer && containerVisible;
|
|
17
11
|
};
|
|
18
|
-
return
|
|
19
|
-
?
|
|
20
|
-
: generateFormContentUtils.createFormElements(groupField.fields);
|
|
12
|
+
return (fields &&
|
|
13
|
+
(isContainerVisible() ? (React.createElement(FormBuilder, { containerComponent: containerComponent, formElements: formElements, useContainersOutsideGroup: useContainersOutsideGroup, useGroupContainer: useGroupContainer, containerOptions: groupField.containerOptions, containerVisible: containerVisible, fields: fields, buttonComponent: buttonComponent })) : (React.createElement(Elements, { fields: fields, containerComponent: containerComponent, formElements: formElements, useContainersOutsideGroup: useContainersOutsideGroup, useGroupContainer: useGroupContainer, containerVisible: containerVisible, buttonComponent: buttonComponent }))));
|
|
21
14
|
};
|
|
22
15
|
//# sourceMappingURL=_template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_template.js","sourceRoot":"","sources":["../../../../../lib/nvs-dynamic-form/components/groupField/_template.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"_template.js","sourceRoot":"","sources":["../../../../../lib/nvs-dynamic-form/components/groupField/_template.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACzB,KAAK,EAAE,UAAU,EACjB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,eAAe,GACH,EAAE,EAAE;IAChB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,QAAQ,CAC1B,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,KAAK,CAAC,EAAE,GAAG,GAAG,UAAU,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,OAAO,UAAU,CAAC,gBAAgB,IAAI,iBAAiB,IAAI,gBAAgB,CAAC;IAC9E,CAAC,CAAC;IAEF,OAAO,CACL,MAAM;QACN,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CACtB,oBAAC,WAAW,IACV,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,yBAAyB,EAAE,yBAAyB,EACpD,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAC7C,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,GAChC,CACH,CAAC,CAAC,CAAC,CACF,oBAAC,QAAQ,IACP,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,yBAAyB,EAAE,yBAAyB,EACpD,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,eAAe,EAAE,eAAe,GAChC,CACH,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import * as Yup from "yup";
|
|
2
2
|
import { ArrayFieldAddButton, ArrayFieldRemoveButton } from "./array-field-action-button.type";
|
|
3
|
-
import {
|
|
3
|
+
import { FieldType } from "../nvs-dynamic-form";
|
|
4
4
|
import { LabelOptions } from "./label-options.type";
|
|
5
5
|
export declare class ArrayField<ValueType = {
|
|
6
6
|
[key: string]: any;
|
|
7
7
|
}> {
|
|
8
8
|
fieldType?: string;
|
|
9
9
|
id: string;
|
|
10
|
-
fields: Array<
|
|
10
|
+
fields: Array<FieldType>;
|
|
11
11
|
addButtonOptions?: ArrayFieldAddButton;
|
|
12
12
|
removeButtonOptions?: ArrayFieldRemoveButton;
|
|
13
13
|
defaultValues?: Array<ValueType>;
|
|
14
14
|
label?: string;
|
|
15
15
|
labelOptions?: LabelOptions;
|
|
16
16
|
validate?: Yup.ArraySchema<any, any>;
|
|
17
|
+
containerVisible?: boolean;
|
|
18
|
+
containerOptions?: Record<string, any>;
|
|
17
19
|
constructor(options: ArrayField<ValueType>);
|
|
18
20
|
}
|
|
@@ -10,6 +10,8 @@ export class ArrayField {
|
|
|
10
10
|
this.label = options.label;
|
|
11
11
|
this.labelOptions = options.labelOptions ?? {};
|
|
12
12
|
this.validate = options.validate ?? Yup.array();
|
|
13
|
+
this.containerVisible = options.containerVisible ?? false;
|
|
14
|
+
this.containerOptions = options.containerOptions ?? {};
|
|
13
15
|
}
|
|
14
16
|
}
|
|
15
17
|
//# sourceMappingURL=array-field.type.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-field.type.js","sourceRoot":"","sources":["../../../lib/types/array-field.type.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAU3B,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"array-field.type.js","sourceRoot":"","sources":["../../../lib/types/array-field.type.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAU3B,MAAM,OAAO,UAAU;IAarB,YAAY,OAA8B;QAZ1C,cAAS,GAAY,YAAY,CAAC;QAahC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC;QAC1D,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACzD,CAAC;CACF"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FieldType } from "../nvs-dynamic-form";
|
|
2
2
|
export declare class GroupField {
|
|
3
3
|
id: string;
|
|
4
|
-
fields: Array<
|
|
4
|
+
fields: Array<FieldType>;
|
|
5
5
|
containerVisible?: boolean;
|
|
6
|
-
containerOptions?:
|
|
7
|
-
[key: string]: any;
|
|
8
|
-
};
|
|
6
|
+
containerOptions?: Record<string, any>;
|
|
9
7
|
constructor(options: GroupField);
|
|
10
8
|
}
|
|
@@ -3,9 +3,10 @@ import "./_style.css";
|
|
|
3
3
|
|
|
4
4
|
import { Button } from "./components/button";
|
|
5
5
|
import { FormikForm } from "./formikForm";
|
|
6
|
-
import { GenerateFormContentUtils } from "./services/generateFormContentUtils";
|
|
7
6
|
import { INvsDynamicForm } from "./_type";
|
|
8
7
|
import React from "react";
|
|
8
|
+
import { FormBuilder } from "./components/formBuilder";
|
|
9
|
+
import { Container } from "./components/container";
|
|
9
10
|
|
|
10
11
|
export const NvsDynamicForm = ({
|
|
11
12
|
onSubmit,
|
|
@@ -27,22 +28,20 @@ export const NvsDynamicForm = ({
|
|
|
27
28
|
addButtonDefaultOptions,
|
|
28
29
|
removeButtonDefaultOptions,
|
|
29
30
|
}: INvsDynamicForm) => {
|
|
30
|
-
const generateFormContentUtils = new GenerateFormContentUtils({
|
|
31
|
-
containerComponent: container,
|
|
32
|
-
formElements,
|
|
33
|
-
useContainersOutsideGroup,
|
|
34
|
-
useGroupContainer,
|
|
35
|
-
containerVisible,
|
|
36
|
-
fields,
|
|
37
|
-
containerOptions,
|
|
38
|
-
buttonComponent,
|
|
39
|
-
fieldArrayAddButtonDefaultOptions: addButtonDefaultOptions,
|
|
40
|
-
fieldArrayRemoveButtonDefaultOptions: removeButtonDefaultOptions,
|
|
41
|
-
});
|
|
42
|
-
|
|
43
31
|
const formikForm = (
|
|
44
32
|
<FormikForm onSubmit={onSubmit} fields={fields} formClass={formClass}>
|
|
45
|
-
|
|
33
|
+
<FormBuilder
|
|
34
|
+
containerComponent={container}
|
|
35
|
+
formElements={formElements}
|
|
36
|
+
useContainersOutsideGroup={useContainersOutsideGroup}
|
|
37
|
+
useGroupContainer={useGroupContainer}
|
|
38
|
+
containerVisible={containerVisible}
|
|
39
|
+
fields={fields}
|
|
40
|
+
buttonComponent={buttonComponent}
|
|
41
|
+
containerOptions={containerOptions}
|
|
42
|
+
fieldArrayAddButtonDefaultOptions={addButtonDefaultOptions}
|
|
43
|
+
fieldArrayRemoveButtonDefaultOptions={removeButtonDefaultOptions}
|
|
44
|
+
/>
|
|
46
45
|
<Button
|
|
47
46
|
buttonComponent={buttonComponent}
|
|
48
47
|
visible={submitButtonVisible}
|
|
@@ -54,7 +53,11 @@ export const NvsDynamicForm = ({
|
|
|
54
53
|
</FormikForm>
|
|
55
54
|
);
|
|
56
55
|
|
|
57
|
-
return containerVisible && !useContainersOutsideGroup
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
return containerVisible && !useContainersOutsideGroup ? (
|
|
57
|
+
<Container containerComponent={container} options={containerOptions}>
|
|
58
|
+
{formikForm}
|
|
59
|
+
</Container>
|
|
60
|
+
) : (
|
|
61
|
+
formikForm
|
|
62
|
+
);
|
|
60
63
|
};
|
|
@@ -6,9 +6,9 @@ import {
|
|
|
6
6
|
LabelOptions,
|
|
7
7
|
} from "../../../types";
|
|
8
8
|
import { FieldArray, FormikProps } from "formik";
|
|
9
|
-
import React, { useState } from "react";
|
|
9
|
+
import React, { ReactNode, useCallback, useState } from "react";
|
|
10
10
|
|
|
11
|
-
import {
|
|
11
|
+
import { Elements } from "../elements";
|
|
12
12
|
import { IArrayField } from "./_type";
|
|
13
13
|
import { List } from "../list/_template";
|
|
14
14
|
|
|
@@ -24,6 +24,16 @@ export const ArrayField: React.FC<IArrayField> = ({
|
|
|
24
24
|
removeButtonDefaultOptions,
|
|
25
25
|
labelDefaultOptions,
|
|
26
26
|
}: IArrayField) => {
|
|
27
|
+
const createArrayItem = useCallback(
|
|
28
|
+
(index: number) => {
|
|
29
|
+
return lodash.cloneDeep(arrayField.fields).map((field) => {
|
|
30
|
+
field.id = `${arrayField.id}[${index}].${field.id}`;
|
|
31
|
+
return field;
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
[arrayField.fields],
|
|
35
|
+
);
|
|
36
|
+
|
|
27
37
|
const [addButtonOptions] = useState(
|
|
28
38
|
new ArrayFieldAddButton(
|
|
29
39
|
lodash.merge(
|
|
@@ -45,27 +55,18 @@ export const ArrayField: React.FC<IArrayField> = ({
|
|
|
45
55
|
lodash.merge(labelDefaultOptions ?? {}, arrayField.labelOptions ?? {}),
|
|
46
56
|
),
|
|
47
57
|
);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
fieldArrayAddButtonDefaultOptions: addButtonDefaultOptions,
|
|
56
|
-
fieldArrayRemoveButtonDefaultOptions: removeButtonDefaultOptions,
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
const createArrayItem = (name: string, index: number) => {
|
|
60
|
-
return arrayField.fields.map((field) => ({
|
|
61
|
-
...field,
|
|
62
|
-
id: `${name}[${index}].${field.id}`,
|
|
63
|
-
}));
|
|
58
|
+
|
|
59
|
+
const ContentContainer = ({ children }: { children: ReactNode }) => {
|
|
60
|
+
return (
|
|
61
|
+
<div className="nvs-container-fluid">
|
|
62
|
+
<div className="nvs-row">{children}</div>
|
|
63
|
+
</div>
|
|
64
|
+
);
|
|
64
65
|
};
|
|
65
66
|
|
|
66
67
|
const getDefaultItem = () => {
|
|
67
68
|
return arrayField.fields.reduce((acc: { [key: string]: any }, field) => {
|
|
68
|
-
acc[field.id] = field.defaultValue;
|
|
69
|
+
if ("defaultValue" in field) acc[field.id] = field.defaultValue;
|
|
69
70
|
return acc;
|
|
70
71
|
}, {});
|
|
71
72
|
};
|
|
@@ -75,9 +76,18 @@ export const ArrayField: React.FC<IArrayField> = ({
|
|
|
75
76
|
<div className="df-array-field-content">
|
|
76
77
|
<div className="nvs-container-fluid">
|
|
77
78
|
<div className="nvs-row">
|
|
78
|
-
|
|
79
|
-
createArrayItem(
|
|
80
|
-
|
|
79
|
+
<Elements
|
|
80
|
+
fields={createArrayItem(index)}
|
|
81
|
+
formElements={formElements}
|
|
82
|
+
containerComponent={containerComponent}
|
|
83
|
+
useContainersOutsideGroup={useContainersOutsideGroup}
|
|
84
|
+
useGroupContainer={useGroupContainer}
|
|
85
|
+
containerVisible={containerVisible}
|
|
86
|
+
buttonComponent={ButtonComponent}
|
|
87
|
+
fieldArrayAddButtonDefaultOptions={addButtonDefaultOptions}
|
|
88
|
+
fieldArrayRemoveButtonDefaultOptions={removeButtonDefaultOptions}
|
|
89
|
+
labelDefaultOptions={labelDefaultOptions}
|
|
90
|
+
/>
|
|
81
91
|
</div>
|
|
82
92
|
</div>
|
|
83
93
|
</div>
|
|
@@ -103,9 +113,7 @@ export const ArrayField: React.FC<IArrayField> = ({
|
|
|
103
113
|
const createArrayItemRemoveButton = (onRemoveItem: Function) => {
|
|
104
114
|
return (
|
|
105
115
|
<div className="df-array-field-remove-button">
|
|
106
|
-
{
|
|
107
|
-
createRemoveButton(onRemoveItem),
|
|
108
|
-
)}
|
|
116
|
+
<ContentContainer>{createRemoveButton(onRemoveItem)}</ContentContainer>
|
|
109
117
|
</div>
|
|
110
118
|
);
|
|
111
119
|
};
|
|
@@ -138,18 +146,18 @@ export const ArrayField: React.FC<IArrayField> = ({
|
|
|
138
146
|
};
|
|
139
147
|
|
|
140
148
|
const createArrayItemAddButton = (onAddItem: Function) => {
|
|
141
|
-
return
|
|
142
|
-
createAddButton(onAddItem),
|
|
143
|
-
);
|
|
149
|
+
return <ContentContainer>{createAddButton(onAddItem)}</ContentContainer>;
|
|
144
150
|
};
|
|
145
151
|
|
|
146
152
|
const createArrayFieldLabel = () => {
|
|
147
|
-
return
|
|
148
|
-
<
|
|
149
|
-
<
|
|
150
|
-
{
|
|
151
|
-
|
|
152
|
-
|
|
153
|
+
return (
|
|
154
|
+
<ContentContainer>
|
|
155
|
+
<div className="nvs-col-12">
|
|
156
|
+
<label className={`df-array-field-label ${labelOptions.class}`}>
|
|
157
|
+
{arrayField.label}
|
|
158
|
+
</label>
|
|
159
|
+
</div>
|
|
160
|
+
</ContentContainer>
|
|
153
161
|
);
|
|
154
162
|
};
|
|
155
163
|
|
|
@@ -158,7 +166,7 @@ export const ArrayField: React.FC<IArrayField> = ({
|
|
|
158
166
|
.validate!.describe()
|
|
159
167
|
.tests.find((test) => test.name === "max")?.params!.max as number;
|
|
160
168
|
|
|
161
|
-
return maxSize && length
|
|
169
|
+
return !(maxSize && length == maxSize);
|
|
162
170
|
};
|
|
163
171
|
|
|
164
172
|
const getArrayFieldErrorMessage = (
|
|
@@ -180,11 +188,14 @@ export const ArrayField: React.FC<IArrayField> = ({
|
|
|
180
188
|
{({ push, remove, form }) => (
|
|
181
189
|
<>
|
|
182
190
|
{arrayField.label && createArrayFieldLabel()}
|
|
183
|
-
{
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
191
|
+
{lodash
|
|
192
|
+
.get(form.values, arrayField.id)
|
|
193
|
+
?.map((_: any, index: number) =>
|
|
194
|
+
createFieldArrayContent(remove, index),
|
|
195
|
+
)}
|
|
196
|
+
{checkFieldArrayMaxSize(
|
|
197
|
+
lodash.get(form.values, arrayField.id)?.length,
|
|
198
|
+
) && createArrayItemAddButton(push)}
|
|
188
199
|
{createErrorList(form)}
|
|
189
200
|
</>
|
|
190
201
|
)}
|