dynamic-modal 1.1.12 → 1.1.13
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/components/input-upload/input-upload.js +3 -16
- package/dist/components/make-button/make-button.js +1 -1
- package/dist/components/make-input/make-input.js +32 -29
- package/dist/components/make-select/make-select.js +45 -33
- package/dist/components/make-textarea/make-textarea.js +32 -29
- package/dist/components/make-toggle/make-toggle.js +32 -29
- package/dist/components/make-upload/make-upload.js +32 -29
- package/dist/components/portal/portal.js +1 -2
- package/dist/hooks/modal-handler.js +1 -1
- package/dist/hooks/use-enable-if.d.ts +2 -1
- package/dist/hooks/use-enable-if.js +9 -18
- package/dist/hooks/use-live-data.d.ts +3 -6
- package/dist/hooks/use-live-data.js +9 -26
- package/dist/hooks/use-render-if.d.ts +3 -5
- package/dist/hooks/use-render-if.js +10 -25
- package/dist/modal.js +15 -41
- package/dist/util/general/general.util.js +9 -17
- package/package.json +1 -1
- package/src/hooks/use-enable-if.ts +2 -1
- package/src/hooks/use-render-if.ts +7 -0
|
@@ -1,24 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
'use client';
|
|
3
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
4
|
-
var t = {};
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
8
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
9
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
10
|
-
t[p[i]] = s[p[i]];
|
|
11
|
-
}
|
|
12
|
-
return t;
|
|
13
|
-
};
|
|
14
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
5
|
};
|
|
17
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
7
|
const react_1 = __importDefault(require("react"));
|
|
19
|
-
const InputUpload = (
|
|
20
|
-
var _b;
|
|
21
|
-
var { onChange, readAsArrayBuffer } = _a, props = __rest(_a, ["onChange", "readAsArrayBuffer"]);
|
|
8
|
+
const InputUpload = ({ onChange, readAsArrayBuffer, ...props }) => {
|
|
22
9
|
const onChangeHandler = (event) => {
|
|
23
10
|
if (props.read && event.target.files) {
|
|
24
11
|
readFileBlob(event.target.files[0], false)
|
|
@@ -56,7 +43,7 @@ const InputUpload = (_a) => {
|
|
|
56
43
|
};
|
|
57
44
|
return (react_1.default.createElement("div", { className: "flex flex-col w-full gap-1 text-center" },
|
|
58
45
|
props.label && (react_1.default.createElement("label", { className: "block mb-2 text-sm font-medium text-gray-900 dark:text-white", htmlFor: `file-input-${props.id}` }, props.label)),
|
|
59
|
-
react_1.default.createElement("input",
|
|
60
|
-
react_1.default.createElement("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-300 text-start", id: `file-input-${props.id}-help` },
|
|
46
|
+
react_1.default.createElement("input", { className: "file:transition-all file:delay-150 block w-full text-sm text-slate-500\r\n file:mr-4 file:py-2 file:px-4 file:rounded-md\r\n file:border-0 file:text-sm file:font-semibold\r\n file:bg-gray-100 file:text-blue-600\r\n hover:file:bg-blue-700 hover:file:text-white cursor-pointer disabled:cursor-not-allowed", "aria-describedby": `file-input-${props.id}-help`, id: `file-input-${props.id}`, type: "file", onChange: onChangeHandler, ...props }),
|
|
47
|
+
react_1.default.createElement("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-300 text-start", id: `file-input-${props.id}-help` }, props.helpText?.toUpperCase())));
|
|
61
48
|
};
|
|
62
49
|
exports.default = InputUpload;
|
|
@@ -39,6 +39,6 @@ const component_state_1 = require("../../context/component/component-state");
|
|
|
39
39
|
const MakeButton = ({ element }) => {
|
|
40
40
|
const { Button } = (0, react_1.useContext)(component_state_1.ComponentStateContext);
|
|
41
41
|
const elementId = (0, react_1.useId)();
|
|
42
|
-
return react_1.default.createElement(Button,
|
|
42
|
+
return react_1.default.createElement(Button, { ...element, id: elementId });
|
|
43
43
|
};
|
|
44
44
|
exports.default = MakeButton;
|
|
@@ -33,17 +33,6 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
return result;
|
|
34
34
|
};
|
|
35
35
|
})();
|
|
36
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
|
-
var t = {};
|
|
38
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
39
|
-
t[p] = s[p];
|
|
40
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
41
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
42
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
43
|
-
t[p[i]] = s[p[i]];
|
|
44
|
-
}
|
|
45
|
-
return t;
|
|
46
|
-
};
|
|
47
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
48
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
49
38
|
};
|
|
@@ -55,40 +44,54 @@ const use_enable_if_1 = __importDefault(require("../../hooks/use-enable-if"));
|
|
|
55
44
|
const use_render_if_1 = __importDefault(require("../../hooks/use-render-if"));
|
|
56
45
|
const MakeInput = ({ element, control, watch, unregister, }) => {
|
|
57
46
|
const { Input } = (0, react_1.useContext)(component_state_1.ComponentStateContext);
|
|
58
|
-
const { name
|
|
59
|
-
const { checkEnable, enable } = (0, use_enable_if_1.default)({
|
|
60
|
-
|
|
61
|
-
|
|
47
|
+
const { name: elementName, validation: { required, message, regex, ...otherValidation }, enableIf, renderIf, ...inputProps } = element;
|
|
48
|
+
const { checkEnable, enable, setEnable } = (0, use_enable_if_1.default)({
|
|
49
|
+
elementEnableIf: enableIf,
|
|
50
|
+
});
|
|
51
|
+
const { checkRender, render, setRender } = (0, use_render_if_1.default)({
|
|
62
52
|
elementRenderIf: renderIf,
|
|
63
|
-
unregister,
|
|
64
53
|
});
|
|
65
54
|
const elementId = (0, react_1.useId)();
|
|
66
55
|
(0, react_1.useEffect)(() => {
|
|
67
|
-
const unsubscribe = watch((formData, { name, type }) => {
|
|
56
|
+
const { unsubscribe } = watch((formData, { name, type }) => {
|
|
68
57
|
if (!name)
|
|
69
58
|
return;
|
|
70
59
|
if (enableIf) {
|
|
71
|
-
checkEnable(formData, { name, type })
|
|
60
|
+
checkEnable(formData, { name, type }).then((enableStatus) => {
|
|
61
|
+
if (enableStatus === undefined || enableStatus === null)
|
|
62
|
+
return;
|
|
63
|
+
if (enable !== enableStatus)
|
|
64
|
+
setEnable(enableStatus);
|
|
65
|
+
});
|
|
72
66
|
}
|
|
73
67
|
if (renderIf) {
|
|
74
|
-
checkRender(formData, { name, type })
|
|
68
|
+
checkRender(formData, { name, type }).then((renderStatus) => {
|
|
69
|
+
if (renderStatus === undefined || renderStatus === null)
|
|
70
|
+
return;
|
|
71
|
+
if (render !== renderStatus) {
|
|
72
|
+
if (render && !renderStatus)
|
|
73
|
+
unregister(elementName);
|
|
74
|
+
setRender(!!renderStatus);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
75
77
|
}
|
|
76
78
|
});
|
|
77
|
-
return () => unsubscribe
|
|
78
|
-
}, [watch]);
|
|
79
|
+
return () => unsubscribe();
|
|
80
|
+
}, [watch, render, enable]);
|
|
79
81
|
if (!render)
|
|
80
82
|
return null;
|
|
81
|
-
return (react_1.default.createElement(react_hook_form_1.Controller, { control: control, name:
|
|
83
|
+
return (react_1.default.createElement(react_hook_form_1.Controller, { control: control, name: elementName, rules: {
|
|
84
|
+
required: {
|
|
82
85
|
value: required,
|
|
83
|
-
message: message
|
|
84
|
-
},
|
|
86
|
+
message: message ?? '',
|
|
87
|
+
},
|
|
88
|
+
pattern: regex
|
|
85
89
|
? {
|
|
86
90
|
value: regex,
|
|
87
|
-
message: message
|
|
91
|
+
message: message ?? '',
|
|
88
92
|
}
|
|
89
|
-
: undefined
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
} }));
|
|
93
|
+
: undefined,
|
|
94
|
+
...otherValidation,
|
|
95
|
+
}, render: ({ field: { onChange, value }, fieldState: { invalid, error }, }) => (react_1.default.createElement(Input, { ...inputProps, name: elementName, id: elementId, onChange: onChange, value: value ?? '', invalid: invalid, error: error, disabled: element.disabled ?? !enable })) }));
|
|
93
96
|
};
|
|
94
97
|
exports.default = MakeInput;
|
|
@@ -33,17 +33,6 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
return result;
|
|
34
34
|
};
|
|
35
35
|
})();
|
|
36
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
|
-
var t = {};
|
|
38
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
39
|
-
t[p] = s[p];
|
|
40
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
41
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
42
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
43
|
-
t[p[i]] = s[p[i]];
|
|
44
|
-
}
|
|
45
|
-
return t;
|
|
46
|
-
};
|
|
47
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
48
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
49
38
|
};
|
|
@@ -56,48 +45,71 @@ const use_render_if_1 = __importDefault(require("../../hooks/use-render-if"));
|
|
|
56
45
|
const use_live_data_1 = __importDefault(require("../../hooks/use-live-data"));
|
|
57
46
|
const MakeSelect = ({ element, control, watch, setValue, unregister, }) => {
|
|
58
47
|
const { Select } = (0, react_1.useContext)(component_state_1.ComponentStateContext);
|
|
59
|
-
const { name
|
|
60
|
-
const
|
|
61
|
-
|
|
48
|
+
const { name: elementName, validation: { required, message, regex, ...otherValidation }, enableIf, renderIf, liveData: elementLiveData, ...inputProps } = element;
|
|
49
|
+
const [liveSearching, setLiveSearching] = (0, react_1.useState)(false);
|
|
50
|
+
const { checkLiveData, liveData, setLiveData } = (0, use_live_data_1.default)({
|
|
62
51
|
elementLiveData,
|
|
63
|
-
setValue,
|
|
64
52
|
});
|
|
65
|
-
const { checkEnable, enable } = (0, use_enable_if_1.default)({
|
|
66
|
-
|
|
67
|
-
|
|
53
|
+
const { checkEnable, enable, setEnable } = (0, use_enable_if_1.default)({
|
|
54
|
+
elementEnableIf: enableIf,
|
|
55
|
+
});
|
|
56
|
+
const { checkRender, render, setRender } = (0, use_render_if_1.default)({
|
|
68
57
|
elementRenderIf: renderIf,
|
|
69
|
-
unregister,
|
|
70
58
|
});
|
|
71
59
|
const elementId = (0, react_1.useId)();
|
|
72
60
|
(0, react_1.useEffect)(() => {
|
|
73
|
-
const unsubscribe = watch((formData, { name, type }) => {
|
|
61
|
+
const { unsubscribe } = watch((formData, { name, type }) => {
|
|
74
62
|
if (!name)
|
|
75
63
|
return;
|
|
76
64
|
if (enableIf) {
|
|
77
|
-
checkEnable(formData, { name, type })
|
|
65
|
+
checkEnable(formData, { name, type }).then((enableStatus) => {
|
|
66
|
+
if (enableStatus === undefined || enableStatus === null)
|
|
67
|
+
return;
|
|
68
|
+
if (enable !== enableStatus)
|
|
69
|
+
setEnable(enableStatus);
|
|
70
|
+
});
|
|
78
71
|
}
|
|
79
72
|
if (renderIf) {
|
|
80
|
-
checkRender(formData, { name, type })
|
|
73
|
+
checkRender(formData, { name, type }).then((renderStatus) => {
|
|
74
|
+
if (renderStatus === undefined || renderStatus === null)
|
|
75
|
+
return;
|
|
76
|
+
if (render !== renderStatus) {
|
|
77
|
+
if (render && !renderStatus)
|
|
78
|
+
unregister(elementName);
|
|
79
|
+
setRender(!!renderStatus);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
81
82
|
}
|
|
82
83
|
if (elementLiveData) {
|
|
83
|
-
|
|
84
|
+
setLiveSearching(true);
|
|
85
|
+
checkLiveData(formData, { name, type })
|
|
86
|
+
.then((options) => {
|
|
87
|
+
if (options === undefined || options === null)
|
|
88
|
+
return;
|
|
89
|
+
setLiveData(options);
|
|
90
|
+
setValue(elementName, options);
|
|
91
|
+
})
|
|
92
|
+
.finally(() => {
|
|
93
|
+
setLiveSearching(false);
|
|
94
|
+
});
|
|
84
95
|
}
|
|
85
96
|
});
|
|
86
|
-
return () => unsubscribe
|
|
87
|
-
}, [watch]);
|
|
97
|
+
return () => unsubscribe();
|
|
98
|
+
}, [watch, render, enable, liveData]);
|
|
88
99
|
if (!render)
|
|
89
100
|
return null;
|
|
90
|
-
return (react_1.default.createElement(react_hook_form_1.Controller, { control: control, name:
|
|
101
|
+
return (react_1.default.createElement(react_hook_form_1.Controller, { control: control, name: elementName, rules: {
|
|
102
|
+
required: {
|
|
91
103
|
value: required,
|
|
92
|
-
message: message
|
|
93
|
-
},
|
|
104
|
+
message: message ?? '',
|
|
105
|
+
},
|
|
106
|
+
pattern: regex
|
|
94
107
|
? {
|
|
95
108
|
value: regex,
|
|
96
|
-
message: message
|
|
109
|
+
message: message ?? '',
|
|
97
110
|
}
|
|
98
|
-
: undefined
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
} }));
|
|
111
|
+
: undefined,
|
|
112
|
+
...otherValidation,
|
|
113
|
+
}, render: ({ field: { onChange, value }, fieldState: { invalid, error }, }) => (react_1.default.createElement(Select, { ...inputProps, id: elementId, name: elementName, onChange: onChange, value: value, invalid: invalid, error: error, disabled: element.disabled ?? !enable, liveSearching: liveSearching, options: liveData || (element.options ?? []) })) }));
|
|
102
114
|
};
|
|
103
115
|
exports.default = MakeSelect;
|
|
@@ -33,17 +33,6 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
return result;
|
|
34
34
|
};
|
|
35
35
|
})();
|
|
36
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
|
-
var t = {};
|
|
38
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
39
|
-
t[p] = s[p];
|
|
40
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
41
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
42
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
43
|
-
t[p[i]] = s[p[i]];
|
|
44
|
-
}
|
|
45
|
-
return t;
|
|
46
|
-
};
|
|
47
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
48
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
49
38
|
};
|
|
@@ -55,40 +44,54 @@ const use_enable_if_1 = __importDefault(require("../../hooks/use-enable-if"));
|
|
|
55
44
|
const use_render_if_1 = __importDefault(require("../../hooks/use-render-if"));
|
|
56
45
|
const MakeTextarea = ({ element, control, watch, unregister, }) => {
|
|
57
46
|
const { Textarea } = (0, react_1.useContext)(component_state_1.ComponentStateContext);
|
|
58
|
-
const { name
|
|
59
|
-
const { checkEnable, enable } = (0, use_enable_if_1.default)({
|
|
60
|
-
|
|
61
|
-
|
|
47
|
+
const { name: elementName, validation: { required, message, regex, ...otherValidation }, enableIf, renderIf, ...inputProps } = element;
|
|
48
|
+
const { checkEnable, enable, setEnable } = (0, use_enable_if_1.default)({
|
|
49
|
+
elementEnableIf: enableIf,
|
|
50
|
+
});
|
|
51
|
+
const { checkRender, render, setRender } = (0, use_render_if_1.default)({
|
|
62
52
|
elementRenderIf: renderIf,
|
|
63
|
-
unregister,
|
|
64
53
|
});
|
|
65
54
|
const elementId = (0, react_1.useId)();
|
|
66
55
|
(0, react_1.useEffect)(() => {
|
|
67
|
-
const unsubscribe = watch((formData, { name, type }) => {
|
|
56
|
+
const { unsubscribe } = watch((formData, { name, type }) => {
|
|
68
57
|
if (!name)
|
|
69
58
|
return;
|
|
70
59
|
if (enableIf) {
|
|
71
|
-
checkEnable(formData, { name, type })
|
|
60
|
+
checkEnable(formData, { name, type }).then((enableStatus) => {
|
|
61
|
+
if (enableStatus === undefined || enableStatus === null)
|
|
62
|
+
return;
|
|
63
|
+
if (enable !== enableStatus)
|
|
64
|
+
setEnable(enableStatus);
|
|
65
|
+
});
|
|
72
66
|
}
|
|
73
67
|
if (renderIf) {
|
|
74
|
-
checkRender(formData, { name, type })
|
|
68
|
+
checkRender(formData, { name, type }).then((renderStatus) => {
|
|
69
|
+
if (renderStatus === undefined || renderStatus === null)
|
|
70
|
+
return;
|
|
71
|
+
if (render !== renderStatus) {
|
|
72
|
+
if (render && !renderStatus)
|
|
73
|
+
unregister(elementName);
|
|
74
|
+
setRender(!!renderStatus);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
75
77
|
}
|
|
76
78
|
});
|
|
77
|
-
return () => unsubscribe
|
|
78
|
-
}, [watch]);
|
|
79
|
+
return () => unsubscribe();
|
|
80
|
+
}, [watch, render, enable]);
|
|
79
81
|
if (!render)
|
|
80
82
|
return null;
|
|
81
|
-
return (react_1.default.createElement(react_hook_form_1.Controller, { name:
|
|
83
|
+
return (react_1.default.createElement(react_hook_form_1.Controller, { name: elementName, control: control, rules: {
|
|
84
|
+
required: {
|
|
82
85
|
value: required,
|
|
83
|
-
message: message
|
|
84
|
-
},
|
|
86
|
+
message: message ?? '',
|
|
87
|
+
},
|
|
88
|
+
pattern: regex
|
|
85
89
|
? {
|
|
86
90
|
value: regex,
|
|
87
|
-
message: message
|
|
91
|
+
message: message ?? '',
|
|
88
92
|
}
|
|
89
|
-
: undefined
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
} }));
|
|
93
|
+
: undefined,
|
|
94
|
+
...otherValidation,
|
|
95
|
+
}, render: ({ field: { onChange, value }, fieldState: { invalid, error }, }) => (react_1.default.createElement(Textarea, { ...inputProps, id: elementId, name: elementName, onChange: onChange, value: value ?? '', invalid: invalid, error: error, disabled: element.disabled ?? !enable })) }));
|
|
93
96
|
};
|
|
94
97
|
exports.default = MakeTextarea;
|
|
@@ -33,17 +33,6 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
return result;
|
|
34
34
|
};
|
|
35
35
|
})();
|
|
36
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
|
-
var t = {};
|
|
38
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
39
|
-
t[p] = s[p];
|
|
40
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
41
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
42
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
43
|
-
t[p[i]] = s[p[i]];
|
|
44
|
-
}
|
|
45
|
-
return t;
|
|
46
|
-
};
|
|
47
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
48
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
49
38
|
};
|
|
@@ -55,40 +44,54 @@ const use_enable_if_1 = __importDefault(require("../../hooks/use-enable-if"));
|
|
|
55
44
|
const use_render_if_1 = __importDefault(require("../../hooks/use-render-if"));
|
|
56
45
|
const MakeToggle = ({ element, control, watch, unregister, }) => {
|
|
57
46
|
const { Toggle } = (0, react_1.useContext)(component_state_1.ComponentStateContext);
|
|
58
|
-
const { name
|
|
59
|
-
const { checkEnable, enable } = (0, use_enable_if_1.default)({
|
|
60
|
-
|
|
61
|
-
|
|
47
|
+
const { name: elementName, validation: { required, message, regex, ...otherValidation }, enableIf, renderIf, ...inputProps } = element;
|
|
48
|
+
const { checkEnable, enable, setEnable } = (0, use_enable_if_1.default)({
|
|
49
|
+
elementEnableIf: enableIf,
|
|
50
|
+
});
|
|
51
|
+
const { checkRender, render, setRender } = (0, use_render_if_1.default)({
|
|
62
52
|
elementRenderIf: renderIf,
|
|
63
|
-
unregister,
|
|
64
53
|
});
|
|
65
54
|
const elementId = (0, react_1.useId)();
|
|
66
55
|
(0, react_1.useEffect)(() => {
|
|
67
|
-
const unsubscribe = watch((formData, { name, type }) => {
|
|
56
|
+
const { unsubscribe } = watch((formData, { name, type }) => {
|
|
68
57
|
if (!name)
|
|
69
58
|
return;
|
|
70
59
|
if (enableIf) {
|
|
71
|
-
checkEnable(formData, { name, type })
|
|
60
|
+
checkEnable(formData, { name, type }).then((enableStatus) => {
|
|
61
|
+
if (enableStatus === undefined || enableStatus === null)
|
|
62
|
+
return;
|
|
63
|
+
if (enable !== enableStatus)
|
|
64
|
+
setEnable(enableStatus);
|
|
65
|
+
});
|
|
72
66
|
}
|
|
73
67
|
if (renderIf) {
|
|
74
|
-
checkRender(formData, { name, type })
|
|
68
|
+
checkRender(formData, { name, type }).then((renderStatus) => {
|
|
69
|
+
if (renderStatus === undefined || renderStatus === null)
|
|
70
|
+
return;
|
|
71
|
+
if (render !== renderStatus) {
|
|
72
|
+
if (render && !renderStatus)
|
|
73
|
+
unregister(elementName);
|
|
74
|
+
setRender(!!renderStatus);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
75
77
|
}
|
|
76
78
|
});
|
|
77
|
-
return () => unsubscribe
|
|
78
|
-
}, [watch]);
|
|
79
|
+
return () => unsubscribe();
|
|
80
|
+
}, [watch, render, enable]);
|
|
79
81
|
if (!render)
|
|
80
82
|
return null;
|
|
81
|
-
return (react_1.default.createElement(react_hook_form_1.Controller, { control: control, name:
|
|
83
|
+
return (react_1.default.createElement(react_hook_form_1.Controller, { control: control, name: elementName, rules: {
|
|
84
|
+
required: {
|
|
82
85
|
value: required,
|
|
83
|
-
message: message
|
|
84
|
-
},
|
|
86
|
+
message: message ?? '',
|
|
87
|
+
},
|
|
88
|
+
pattern: regex
|
|
85
89
|
? {
|
|
86
90
|
value: regex,
|
|
87
|
-
message: message
|
|
91
|
+
message: message ?? '',
|
|
88
92
|
}
|
|
89
|
-
: undefined
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
} }));
|
|
93
|
+
: undefined,
|
|
94
|
+
...otherValidation,
|
|
95
|
+
}, render: ({ field: { onChange, value }, fieldState: { invalid, error }, }) => (react_1.default.createElement(Toggle, { ...inputProps, id: elementId, name: elementName, onChange: onChange, value: value ?? '', invalid: invalid, error: error, disabled: element.disabled ?? !enable })) }));
|
|
93
96
|
};
|
|
94
97
|
exports.default = MakeToggle;
|
|
@@ -33,17 +33,6 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
return result;
|
|
34
34
|
};
|
|
35
35
|
})();
|
|
36
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
|
-
var t = {};
|
|
38
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
39
|
-
t[p] = s[p];
|
|
40
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
41
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
42
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
43
|
-
t[p[i]] = s[p[i]];
|
|
44
|
-
}
|
|
45
|
-
return t;
|
|
46
|
-
};
|
|
47
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
48
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
49
38
|
};
|
|
@@ -54,40 +43,54 @@ const input_upload_1 = __importDefault(require("../input-upload/input-upload"));
|
|
|
54
43
|
const use_enable_if_1 = __importDefault(require("../../hooks/use-enable-if"));
|
|
55
44
|
const use_render_if_1 = __importDefault(require("../../hooks/use-render-if"));
|
|
56
45
|
const MakeUpload = ({ element, control, watch, unregister, }) => {
|
|
57
|
-
const { name
|
|
58
|
-
const { checkEnable, enable } = (0, use_enable_if_1.default)({
|
|
59
|
-
|
|
60
|
-
|
|
46
|
+
const { name: elementName, validation: { required, message, regex, ...otherValidation }, enableIf, renderIf, ...inputProps } = element;
|
|
47
|
+
const { checkEnable, enable, setEnable } = (0, use_enable_if_1.default)({
|
|
48
|
+
elementEnableIf: enableIf,
|
|
49
|
+
});
|
|
50
|
+
const { checkRender, render, setRender } = (0, use_render_if_1.default)({
|
|
61
51
|
elementRenderIf: renderIf,
|
|
62
|
-
unregister,
|
|
63
52
|
});
|
|
64
53
|
const elementId = (0, react_1.useId)();
|
|
65
54
|
(0, react_1.useEffect)(() => {
|
|
66
|
-
const unsubscribe = watch((formData, { name, type }) => {
|
|
55
|
+
const { unsubscribe } = watch((formData, { name, type }) => {
|
|
67
56
|
if (!name)
|
|
68
57
|
return;
|
|
69
58
|
if (enableIf) {
|
|
70
|
-
checkEnable(formData, { name, type })
|
|
59
|
+
checkEnable(formData, { name, type }).then((enableStatus) => {
|
|
60
|
+
if (enableStatus === undefined || enableStatus === null)
|
|
61
|
+
return;
|
|
62
|
+
if (enable !== enableStatus)
|
|
63
|
+
setEnable(enableStatus);
|
|
64
|
+
});
|
|
71
65
|
}
|
|
72
66
|
if (renderIf) {
|
|
73
|
-
checkRender(formData, { name, type })
|
|
67
|
+
checkRender(formData, { name, type }).then((renderStatus) => {
|
|
68
|
+
if (renderStatus === undefined || renderStatus === null)
|
|
69
|
+
return;
|
|
70
|
+
if (render !== renderStatus) {
|
|
71
|
+
if (render && !renderStatus)
|
|
72
|
+
unregister(elementName);
|
|
73
|
+
setRender(!!renderStatus);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
74
76
|
}
|
|
75
77
|
});
|
|
76
|
-
return () => unsubscribe
|
|
77
|
-
}, [watch]);
|
|
78
|
+
return () => unsubscribe();
|
|
79
|
+
}, [watch, render, enable]);
|
|
78
80
|
if (!render)
|
|
79
81
|
return null;
|
|
80
|
-
return (react_1.default.createElement(react_hook_form_1.Controller, { control: control, name:
|
|
82
|
+
return (react_1.default.createElement(react_hook_form_1.Controller, { control: control, name: elementName, rules: {
|
|
83
|
+
required: {
|
|
81
84
|
value: required,
|
|
82
|
-
message: message
|
|
83
|
-
},
|
|
85
|
+
message: message ?? '',
|
|
86
|
+
},
|
|
87
|
+
pattern: regex
|
|
84
88
|
? {
|
|
85
89
|
value: regex,
|
|
86
|
-
message: message
|
|
90
|
+
message: message ?? '',
|
|
87
91
|
}
|
|
88
|
-
: undefined
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
} }));
|
|
92
|
+
: undefined,
|
|
93
|
+
...otherValidation,
|
|
94
|
+
}, render: ({ field: { onChange } }) => (react_1.default.createElement(input_upload_1.default, { ...inputProps, id: elementId, name: elementName, onChange: onChange, disabled: element.disabled ?? !enable })) }));
|
|
92
95
|
};
|
|
93
96
|
exports.default = MakeUpload;
|
|
@@ -41,7 +41,6 @@ const Portal = (props) => {
|
|
|
41
41
|
const ref = (0, react_1.useRef)(null);
|
|
42
42
|
const [mounted, setMounted] = (0, react_1.useState)(false);
|
|
43
43
|
(0, react_1.useEffect)(() => {
|
|
44
|
-
var _a;
|
|
45
44
|
if (mounted && !props.portalOpen && props.closeTime > 0) {
|
|
46
45
|
const timeoutId = setTimeout(() => {
|
|
47
46
|
setMounted(false);
|
|
@@ -54,7 +53,7 @@ const Portal = (props) => {
|
|
|
54
53
|
ref.current = null;
|
|
55
54
|
}
|
|
56
55
|
else if (!mounted && props.portalOpen) {
|
|
57
|
-
ref.current = document.querySelector(
|
|
56
|
+
ref.current = document.querySelector(props.portalTag ?? '#portal');
|
|
58
57
|
setMounted(true);
|
|
59
58
|
}
|
|
60
59
|
}, [mounted, props.closeTime, props.portalOpen, props.portalTag]);
|
|
@@ -23,6 +23,6 @@ function useModalHandler() {
|
|
|
23
23
|
const closeModal = () => setModalConfig(initialState);
|
|
24
24
|
return {
|
|
25
25
|
openModal,
|
|
26
|
-
modalProps:
|
|
26
|
+
modalProps: { ...modalConfig.modalProps, close: closeModal },
|
|
27
27
|
};
|
|
28
28
|
}
|
|
@@ -4,6 +4,7 @@ export interface IRenderIfProps {
|
|
|
4
4
|
}
|
|
5
5
|
declare const useEnableIf: ({ elementEnableIf }: IRenderIfProps) => {
|
|
6
6
|
enable: boolean;
|
|
7
|
-
checkEnable: (formData: Record<string, unknown>, { name }: Record<"name", string> & Record<"type", string | undefined>) => Promise<
|
|
7
|
+
checkEnable: (formData: Record<string, unknown>, { name }: Record<"name", string> & Record<"type", string | undefined>) => Promise<boolean | undefined>;
|
|
8
|
+
setEnable: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
8
9
|
};
|
|
9
10
|
export default useEnableIf;
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
2
|
+
'use client';
|
|
11
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
4
|
const react_1 = require("react");
|
|
13
5
|
const general_util_1 = require("../util/general/general.util");
|
|
@@ -15,31 +7,30 @@ const useEnableIf = ({ elementEnableIf }) => {
|
|
|
15
7
|
const [enable, setEnable] = (0, react_1.useState)(() => {
|
|
16
8
|
return elementEnableIf === undefined;
|
|
17
9
|
});
|
|
18
|
-
const checkEnable =
|
|
10
|
+
const checkEnable = async (formData, { name }) => {
|
|
19
11
|
const targetFieldData = formData[name];
|
|
20
12
|
if (targetFieldData === undefined ||
|
|
21
13
|
targetFieldData === '' ||
|
|
22
14
|
targetFieldData === null)
|
|
23
|
-
return;
|
|
15
|
+
return false;
|
|
24
16
|
const enableIfConfig = elementEnableIf;
|
|
25
|
-
const isLiveEnable = !!
|
|
17
|
+
const isLiveEnable = !!enableIfConfig?.action && !!enableIfConfig.condition;
|
|
26
18
|
if (isLiveEnable && enableIfConfig.condition.includes(name)) {
|
|
27
|
-
const enableStatus =
|
|
28
|
-
|
|
29
|
-
setEnable(enableStatus);
|
|
19
|
+
const enableStatus = await (0, general_util_1.liveDataHandler)(targetFieldData, formData, enableIfConfig.action);
|
|
20
|
+
return enableStatus;
|
|
30
21
|
}
|
|
31
22
|
else {
|
|
32
23
|
const enableConditionList = Object.keys(elementEnableIf);
|
|
33
24
|
if (enableConditionList.includes(name)) {
|
|
34
25
|
const enableStatus = enableIfConfig[name].includes(targetFieldData) || enableIfConfig[name].includes('*');
|
|
35
|
-
|
|
36
|
-
setEnable(enableStatus);
|
|
26
|
+
return enableStatus;
|
|
37
27
|
}
|
|
38
28
|
}
|
|
39
|
-
}
|
|
29
|
+
};
|
|
40
30
|
return {
|
|
41
31
|
enable,
|
|
42
32
|
checkEnable,
|
|
33
|
+
setEnable,
|
|
43
34
|
};
|
|
44
35
|
};
|
|
45
36
|
exports.default = useEnableIf;
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import { FieldValues, UseFormSetValue } from 'react-hook-form';
|
|
2
1
|
import { IModalLiveDataCondition } from '../interfaces/modal';
|
|
3
2
|
import { IOption } from '../interfaces/option';
|
|
4
3
|
export interface ILiveDataProps {
|
|
5
|
-
elementName: string;
|
|
6
4
|
elementLiveData?: IModalLiveDataCondition;
|
|
7
|
-
setValue: UseFormSetValue<FieldValues>;
|
|
8
5
|
}
|
|
9
|
-
declare const useLiveData: ({
|
|
10
|
-
liveSearching: boolean;
|
|
6
|
+
declare const useLiveData: ({ elementLiveData }: ILiveDataProps) => {
|
|
11
7
|
liveData: IOption[] | undefined;
|
|
12
|
-
checkLiveData: (formData: Record<string, unknown>, { name }: Record<"name", string> & Record<"type", string | undefined>) => Promise<
|
|
8
|
+
checkLiveData: (formData: Record<string, unknown>, { name }: Record<"name", string> & Record<"type", string | undefined>) => Promise<IOption[] | null>;
|
|
9
|
+
setLiveData: import("react").Dispatch<import("react").SetStateAction<IOption[] | undefined>>;
|
|
13
10
|
};
|
|
14
11
|
export default useLiveData;
|
|
@@ -1,42 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
2
|
+
'use client';
|
|
11
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
4
|
const react_1 = require("react");
|
|
13
5
|
const general_util_1 = require("../util/general/general.util");
|
|
14
|
-
const useLiveData = ({
|
|
15
|
-
const [liveSearching, setLiveSearching] = (0, react_1.useState)(false);
|
|
6
|
+
const useLiveData = ({ elementLiveData }) => {
|
|
16
7
|
const [liveData, setLiveData] = (0, react_1.useState)(undefined);
|
|
17
|
-
const checkLiveData =
|
|
18
|
-
var _b;
|
|
8
|
+
const checkLiveData = async (formData, { name }) => {
|
|
19
9
|
const targetFieldData = formData[name];
|
|
20
|
-
if (targetFieldData === undefined ||
|
|
21
|
-
targetFieldData === '' ||
|
|
22
|
-
targetFieldData === null)
|
|
23
|
-
return;
|
|
24
10
|
const liveDataConfig = elementLiveData;
|
|
25
|
-
const isLiveData = !!
|
|
11
|
+
const isLiveData = !!liveDataConfig?.action && !!liveDataConfig.condition;
|
|
26
12
|
if (!isLiveData)
|
|
27
|
-
return;
|
|
13
|
+
return null;
|
|
28
14
|
if (liveDataConfig.condition.includes(name)) {
|
|
29
|
-
|
|
30
|
-
const options = (_b = (yield (0, general_util_1.liveDataAction)(targetFieldData, formData, liveDataConfig.action))) !== null && _b !== void 0 ? _b : [];
|
|
31
|
-
setValue(elementName, options);
|
|
32
|
-
setLiveData(options);
|
|
33
|
-
setLiveSearching(false);
|
|
15
|
+
return await (0, general_util_1.liveDataAction)(targetFieldData, formData, liveDataConfig.action);
|
|
34
16
|
}
|
|
35
|
-
|
|
17
|
+
return null;
|
|
18
|
+
};
|
|
36
19
|
return {
|
|
37
|
-
liveSearching,
|
|
38
20
|
liveData,
|
|
39
21
|
checkLiveData,
|
|
22
|
+
setLiveData,
|
|
40
23
|
};
|
|
41
24
|
};
|
|
42
25
|
exports.default = useLiveData;
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { IModalRenderCondition } from '../interfaces/modal';
|
|
2
|
-
import { FieldValues, UseFormUnregister } from 'react-hook-form';
|
|
3
2
|
export interface IRenderIfProps {
|
|
4
|
-
elementName: string;
|
|
5
3
|
elementRenderIf?: IModalRenderCondition;
|
|
6
|
-
unregister: UseFormUnregister<FieldValues>;
|
|
7
4
|
}
|
|
8
|
-
declare const useRenderIf: ({
|
|
5
|
+
declare const useRenderIf: ({ elementRenderIf }: IRenderIfProps) => {
|
|
9
6
|
render: boolean;
|
|
10
|
-
checkRender: (formData: Record<string, unknown>, { name }: Record<"name", string> & Record<"type", string | undefined>) => Promise<
|
|
7
|
+
checkRender: (formData: Record<string, unknown>, { name }: Record<"name", string> & Record<"type", string | undefined>) => Promise<boolean | undefined>;
|
|
8
|
+
setRender: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
11
9
|
};
|
|
12
10
|
export default useRenderIf;
|
|
@@ -1,51 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
2
|
+
'use client';
|
|
11
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
4
|
const react_1 = require("react");
|
|
13
5
|
const general_util_1 = require("../util/general/general.util");
|
|
14
|
-
const useRenderIf = ({
|
|
6
|
+
const useRenderIf = ({ elementRenderIf }) => {
|
|
15
7
|
const [render, setRender] = (0, react_1.useState)(() => {
|
|
16
8
|
return elementRenderIf === undefined;
|
|
17
9
|
});
|
|
18
|
-
const checkRender =
|
|
10
|
+
const checkRender = async (formData, { name }) => {
|
|
19
11
|
const targetFieldData = formData[name];
|
|
20
12
|
if (targetFieldData === undefined ||
|
|
21
13
|
targetFieldData === '' ||
|
|
22
14
|
targetFieldData === null)
|
|
23
|
-
return;
|
|
15
|
+
return false;
|
|
24
16
|
const renderIfConfig = elementRenderIf;
|
|
25
|
-
const isLiveRender = !!
|
|
17
|
+
const isLiveRender = !!renderIfConfig?.action && !!renderIfConfig?.condition;
|
|
26
18
|
if (isLiveRender && renderIfConfig.condition.includes(name)) {
|
|
27
|
-
const renderStatus =
|
|
28
|
-
|
|
29
|
-
if (render && !renderStatus)
|
|
30
|
-
unregister(elementName);
|
|
31
|
-
setRender(renderStatus);
|
|
32
|
-
}
|
|
19
|
+
const renderStatus = await (0, general_util_1.liveDataHandler)(targetFieldData, formData, renderIfConfig.action);
|
|
20
|
+
return renderStatus;
|
|
33
21
|
}
|
|
34
22
|
else {
|
|
35
23
|
const renderConditionList = Object.keys(elementRenderIf);
|
|
36
24
|
if (renderConditionList.includes(name)) {
|
|
37
25
|
const renderStatus = renderIfConfig[name].includes(targetFieldData) || renderIfConfig[name].includes('*');
|
|
38
|
-
|
|
39
|
-
if (render && !renderStatus)
|
|
40
|
-
unregister(elementName);
|
|
41
|
-
setRender(renderStatus);
|
|
42
|
-
}
|
|
26
|
+
return renderStatus;
|
|
43
27
|
}
|
|
44
28
|
}
|
|
45
|
-
}
|
|
29
|
+
};
|
|
46
30
|
return {
|
|
47
31
|
render,
|
|
48
32
|
checkRender,
|
|
33
|
+
setRender,
|
|
49
34
|
};
|
|
50
35
|
};
|
|
51
36
|
exports.default = useRenderIf;
|
package/dist/modal.js
CHANGED
|
@@ -33,26 +33,6 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
return result;
|
|
34
34
|
};
|
|
35
35
|
})();
|
|
36
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
39
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
40
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
41
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
42
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
46
|
-
var t = {};
|
|
47
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
48
|
-
t[p] = s[p];
|
|
49
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
50
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
51
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
52
|
-
t[p[i]] = s[p[i]];
|
|
53
|
-
}
|
|
54
|
-
return t;
|
|
55
|
-
};
|
|
56
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
57
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
58
38
|
};
|
|
@@ -73,22 +53,21 @@ const Modal = ({ open, close, config }) => {
|
|
|
73
53
|
const { ModalButtonAction, ModalButtonCancel } = (0, react_1.useContext)(component_state_1.ComponentStateContext);
|
|
74
54
|
const [modalReady, setModalReady] = (0, react_1.useState)(undefined);
|
|
75
55
|
const [defaultLoaded, setDefaultLoaded] = (0, react_1.useState)(false);
|
|
76
|
-
const { control, handleSubmit, getValues, unregister, setValue, watch, trigger, getFieldState, } = (0, react_hook_form_1.useForm)();
|
|
56
|
+
const { control, handleSubmit, getValues, unregister, setValue, watch, trigger, reset, getFieldState, } = (0, react_hook_form_1.useForm)();
|
|
77
57
|
const formValueHandler = (element) => {
|
|
78
|
-
var _a;
|
|
79
58
|
if (['group', 'upload', 'text'].includes(element.elementType))
|
|
80
59
|
return;
|
|
81
60
|
if (!element.defaultValue && element.renderIf) {
|
|
82
61
|
unregister(element.name);
|
|
83
62
|
return;
|
|
84
63
|
}
|
|
85
|
-
const defaultValue =
|
|
64
|
+
const defaultValue = element.defaultValue ?? '';
|
|
86
65
|
const parsedValue = defaultValue === 'true'
|
|
87
66
|
? true
|
|
88
67
|
: defaultValue === 'false'
|
|
89
68
|
? false
|
|
90
69
|
: defaultValue;
|
|
91
|
-
setValue(element.name, parsedValue
|
|
70
|
+
setValue(element.name, parsedValue ?? '');
|
|
92
71
|
};
|
|
93
72
|
const autoLoadGroup = (groupFields) => {
|
|
94
73
|
groupFields.forEach((element) => {
|
|
@@ -115,9 +94,7 @@ const Modal = ({ open, close, config }) => {
|
|
|
115
94
|
: true;
|
|
116
95
|
return useSubmit;
|
|
117
96
|
};
|
|
118
|
-
const getRender = (
|
|
119
|
-
var { elementType } = _a, element = __rest(_a, ["elementType"]);
|
|
120
|
-
if (isEndOfRender === void 0) { isEndOfRender = false; }
|
|
97
|
+
const getRender = ({ elementType, ...element }, index, isEndOfRender = false) => {
|
|
121
98
|
if (isEndOfRender && modalReady)
|
|
122
99
|
setTimeout(() => autoLoadField(modalReady.fields), 200);
|
|
123
100
|
const props = {
|
|
@@ -126,24 +103,22 @@ const Modal = ({ open, close, config }) => {
|
|
|
126
103
|
setValue,
|
|
127
104
|
unregister,
|
|
128
105
|
};
|
|
129
|
-
return elementType === 'input' ? (react_1.default.createElement(make_input_1.default,
|
|
106
|
+
return elementType === 'input' ? (react_1.default.createElement(make_input_1.default, { ...props, key: `modal-input-${index}`, element: element })) : elementType === 'select' ? (react_1.default.createElement(make_select_1.default, { ...props, key: `modal-select-${index}`, element: element })) : elementType === 'textarea' ? (react_1.default.createElement(make_textarea_1.default, { ...props, key: `modal-textarea-${index}`, element: element })) : elementType === 'toggle' ? (react_1.default.createElement(make_toggle_1.default, { ...props, key: `modal-toggle-${index}`, element: element })) : elementType === 'text' ? (react_1.default.createElement(make_description_1.default, { ...props, key: `modal-text-${index}`, element: element })) : elementType === 'upload' ? (react_1.default.createElement(make_upload_1.default, { ...props, key: `modal-upload-${index}`, element: element })) : elementType === 'button' ? (react_1.default.createElement(make_button_1.default, { ...props, key: `modal-button-${index}`, element: element })) : null;
|
|
130
107
|
};
|
|
131
108
|
const closeHandler = () => {
|
|
132
|
-
if (modalReady
|
|
109
|
+
if (modalReady?.onClose)
|
|
133
110
|
modalReady.onClose();
|
|
134
111
|
setTimeout(() => {
|
|
135
|
-
const form = getValues();
|
|
136
|
-
unregister(Object.keys(form));
|
|
137
112
|
setModalReady(undefined);
|
|
138
113
|
setDefaultLoaded(false);
|
|
114
|
+
reset();
|
|
139
115
|
close();
|
|
140
116
|
}, 200);
|
|
141
117
|
};
|
|
142
|
-
const manualSubmit = () =>
|
|
143
|
-
var _a;
|
|
118
|
+
const manualSubmit = async () => {
|
|
144
119
|
const form = getValues();
|
|
145
120
|
const fields = Object.keys(form);
|
|
146
|
-
|
|
121
|
+
await trigger(fields);
|
|
147
122
|
const validations = fields.map((field) => {
|
|
148
123
|
const { invalid } = getFieldState(field);
|
|
149
124
|
return invalid;
|
|
@@ -153,11 +128,10 @@ const Modal = ({ open, close, config }) => {
|
|
|
153
128
|
: form;
|
|
154
129
|
if (!result)
|
|
155
130
|
return;
|
|
156
|
-
actionHandler(
|
|
157
|
-
}
|
|
131
|
+
actionHandler({ ...(modalReady?.reservedData ?? {}), ...form });
|
|
132
|
+
};
|
|
158
133
|
const actionHandler = (data) => {
|
|
159
|
-
|
|
160
|
-
modalReady === null || modalReady === void 0 ? void 0 : modalReady.out(Object.assign(Object.assign({}, ((_a = modalReady === null || modalReady === void 0 ? void 0 : modalReady.reservedData) !== null && _a !== void 0 ? _a : {})), data));
|
|
134
|
+
modalReady?.out({ ...(modalReady?.reservedData ?? {}), ...data });
|
|
161
135
|
closeHandler();
|
|
162
136
|
};
|
|
163
137
|
(0, react_1.useEffect)(() => {
|
|
@@ -195,9 +169,9 @@ const Modal = ({ open, close, config }) => {
|
|
|
195
169
|
return getRender(element, index, isEndOfRender);
|
|
196
170
|
}
|
|
197
171
|
})),
|
|
198
|
-
react_1.default.createElement("div", { className: "flex gap-4 items-center justify-center border-t p-2", style: modalReady
|
|
199
|
-
modalReady.actions.cancel && (react_1.default.createElement(ModalButtonCancel,
|
|
200
|
-
getUseSubmit(modalReady) ? (react_1.default.createElement(ModalButtonAction,
|
|
172
|
+
react_1.default.createElement("div", { className: "flex gap-4 items-center justify-center border-t p-2", style: modalReady?.actions.containerStyle },
|
|
173
|
+
modalReady.actions.cancel && (react_1.default.createElement(ModalButtonCancel, { ...modalReady.actions.cancel, onClick: closeHandler })),
|
|
174
|
+
getUseSubmit(modalReady) ? (react_1.default.createElement(ModalButtonAction, { ...modalReady.actions.action, type: "submit" })) : (react_1.default.createElement(ModalButtonAction, { ...modalReady.actions.action, onClick: manualSubmit, type: "button" })))))));
|
|
201
175
|
};
|
|
202
176
|
exports.Modal = Modal;
|
|
203
177
|
exports.default = exports.Modal;
|
|
@@ -1,28 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
2
|
+
'use client';
|
|
11
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
4
|
exports.liveDataHandler = exports.liveDataAction = void 0;
|
|
13
|
-
const liveDataAction = (fieldData, formData, action) =>
|
|
5
|
+
const liveDataAction = async (fieldData, formData, action) => {
|
|
14
6
|
if (typeof fieldData === 'string') {
|
|
15
|
-
const options =
|
|
16
|
-
return options
|
|
7
|
+
const options = await action(fieldData, formData);
|
|
8
|
+
return options ?? [];
|
|
17
9
|
}
|
|
18
10
|
return [];
|
|
19
|
-
}
|
|
11
|
+
};
|
|
20
12
|
exports.liveDataAction = liveDataAction;
|
|
21
|
-
const liveDataHandler = (fieldData, formData, action) =>
|
|
13
|
+
const liveDataHandler = async (fieldData, formData, action) => {
|
|
22
14
|
if (typeof fieldData === 'string') {
|
|
23
|
-
const result =
|
|
24
|
-
return result
|
|
15
|
+
const result = await action(fieldData, formData);
|
|
16
|
+
return result ?? false;
|
|
25
17
|
}
|
|
26
18
|
return false;
|
|
27
|
-
}
|
|
19
|
+
};
|
|
28
20
|
exports.liveDataHandler = liveDataHandler;
|
package/package.json
CHANGED
|
@@ -23,12 +23,13 @@ const useEnableIf = ({ elementEnableIf }: IRenderIfProps) => {
|
|
|
23
23
|
{ name }: Record<'name', string> & Record<'type', string | undefined>,
|
|
24
24
|
) => {
|
|
25
25
|
const targetFieldData = formData[name] as string | number;
|
|
26
|
+
|
|
26
27
|
if (
|
|
27
28
|
targetFieldData === undefined ||
|
|
28
29
|
targetFieldData === '' ||
|
|
29
30
|
targetFieldData === null
|
|
30
31
|
)
|
|
31
|
-
return;
|
|
32
|
+
return false;
|
|
32
33
|
|
|
33
34
|
const enableIfConfig = elementEnableIf;
|
|
34
35
|
const isLiveEnable: boolean =
|
|
@@ -24,6 +24,13 @@ const useRenderIf = ({ elementRenderIf }: IRenderIfProps) => {
|
|
|
24
24
|
) => {
|
|
25
25
|
const targetFieldData = formData[name] as string | number;
|
|
26
26
|
|
|
27
|
+
if (
|
|
28
|
+
targetFieldData === undefined ||
|
|
29
|
+
targetFieldData === '' ||
|
|
30
|
+
targetFieldData === null
|
|
31
|
+
)
|
|
32
|
+
return false;
|
|
33
|
+
|
|
27
34
|
const renderIfConfig = elementRenderIf!;
|
|
28
35
|
const isLiveRender: boolean =
|
|
29
36
|
!!renderIfConfig?.action && !!renderIfConfig?.condition;
|