dynamic-modal 1.0.6 → 1.0.7

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.
@@ -1,86 +1,86 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __rest = (this && this.__rest) || function (s, e) {
26
- var t = {};
27
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
- t[p] = s[p];
29
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
- t[p[i]] = s[p[i]];
33
- }
34
- return t;
35
- };
36
- Object.defineProperty(exports, "__esModule", { value: true });
37
- const react_1 = __importStar(require("react"));
38
- const general_1 = require("../../tools/general");
39
- const InputUpload = (_a) => {
40
- var _b;
41
- var { onChange, readAsArrayBuffer } = _a, props = __rest(_a, ["onChange", "readAsArrayBuffer"]);
42
- const onChangeHandler = (event) => {
43
- if (props.read && event.target.files) {
44
- readFileBlob(event.target.files[0], false)
45
- .then((result) => onChange(result))
46
- .catch((err) => {
47
- console.error('file read error', err);
48
- onChange({ name: '', size: 0, data: '' });
49
- });
50
- }
51
- else {
52
- onChange(event.target.files);
53
- }
54
- };
55
- const readFileBlob = (blob, image) => {
56
- return new Promise((resolve, reject) => {
57
- const fileReader = new FileReader();
58
- if (image)
59
- fileReader.readAsDataURL(blob);
60
- else if (readAsArrayBuffer)
61
- fileReader.readAsArrayBuffer(blob);
62
- else
63
- fileReader.readAsText(blob);
64
- fileReader.onload = () => {
65
- const fileResult = {
66
- name: blob.name,
67
- size: blob.size,
68
- data: fileReader.result
69
- };
70
- resolve(fileResult);
71
- };
72
- fileReader.onerror = (error) => {
73
- reject(error);
74
- };
75
- });
76
- };
77
- const elementId = (0, react_1.useMemo)(() => {
78
- var _a;
79
- return (_a = props.id) !== null && _a !== void 0 ? _a : (0, general_1.generateId)();
80
- }, [props.id]);
81
- return (react_1.default.createElement("div", { className: 'flex flex-col w-full gap-1 text-center' },
82
- props.label && react_1.default.createElement("label", { className: "block mb-2 text-sm font-medium text-gray-900 dark:text-white", htmlFor: `file-input-${elementId}` }, props.label),
83
- react_1.default.createElement("input", Object.assign({ 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-${elementId}-help`, id: `file-input-${elementId}`, type: "file", onChange: onChangeHandler }, props)),
84
- react_1.default.createElement("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-300 text-start", id: `file-input-${elementId}-help` }, (_b = props.helpText) === null || _b === void 0 ? void 0 : _b.toUpperCase())));
85
- };
86
- exports.default = InputUpload;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const react_1 = __importStar(require("react"));
38
+ const general_1 = require("../../tools/general");
39
+ const InputUpload = (_a) => {
40
+ var _b;
41
+ var { onChange, readAsArrayBuffer } = _a, props = __rest(_a, ["onChange", "readAsArrayBuffer"]);
42
+ const onChangeHandler = (event) => {
43
+ if (props.read && event.target.files) {
44
+ readFileBlob(event.target.files[0], false)
45
+ .then((result) => onChange(result))
46
+ .catch((err) => {
47
+ console.error('file read error', err);
48
+ onChange({ name: '', size: 0, data: '' });
49
+ });
50
+ }
51
+ else {
52
+ onChange(event.target.files);
53
+ }
54
+ };
55
+ const readFileBlob = (blob, image) => {
56
+ return new Promise((resolve, reject) => {
57
+ const fileReader = new FileReader();
58
+ if (image)
59
+ fileReader.readAsDataURL(blob);
60
+ else if (readAsArrayBuffer)
61
+ fileReader.readAsArrayBuffer(blob);
62
+ else
63
+ fileReader.readAsText(blob);
64
+ fileReader.onload = () => {
65
+ const fileResult = {
66
+ name: blob.name,
67
+ size: blob.size,
68
+ data: fileReader.result
69
+ };
70
+ resolve(fileResult);
71
+ };
72
+ fileReader.onerror = (error) => {
73
+ reject(error);
74
+ };
75
+ });
76
+ };
77
+ const elementId = (0, react_1.useMemo)(() => {
78
+ var _a;
79
+ return (_a = props.id) !== null && _a !== void 0 ? _a : (0, general_1.generateId)();
80
+ }, [props.id]);
81
+ return (react_1.default.createElement("div", { className: 'flex flex-col w-full gap-1 text-center' },
82
+ props.label && react_1.default.createElement("label", { className: "block mb-2 text-sm font-medium text-gray-900 dark:text-white", htmlFor: `file-input-${elementId}` }, props.label),
83
+ react_1.default.createElement("input", Object.assign({ 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-${elementId}-help`, id: `file-input-${elementId}`, type: "file", onChange: onChangeHandler }, props)),
84
+ react_1.default.createElement("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-300 text-start", id: `file-input-${elementId}-help` }, (_b = props.helpText) === null || _b === void 0 ? void 0 : _b.toUpperCase())));
85
+ };
86
+ exports.default = InputUpload;
@@ -56,7 +56,7 @@ const MakeAutocomplete = (_a) => {
56
56
  }
57
57
  }, render: ({ field: { onChange, value }, fieldState: { invalid } }) => {
58
58
  var _a, _b, _c, _d;
59
- return (react_1.default.createElement(react_2.Autocomplete, Object.assign({ size: 'sm' }, element, { isDisabled: (_a = element.disabled) !== null && _a !== void 0 ? _a : !enable, id: (_b = element.id) !== null && _b !== void 0 ? _b : (0, general_1.generateId)(), onSelectionChange: onChange, label: liveSearching ? 'Loading...' : element.label, selectedKey: value, errorMessage: invalid ? ((_c = element.validation.message) !== null && _c !== void 0 ? _c : '') : undefined }), (liveData || ((_d = element.options) !== null && _d !== void 0 ? _d : [])).map((opt) => (react_1.default.createElement(react_2.AutocompleteItem, { key: opt.id, value: opt.id }, opt.name)))));
59
+ return (react_1.default.createElement(react_2.Autocomplete, Object.assign({ size: 'sm' }, element, { isDisabled: (_a = element.disabled) !== null && _a !== void 0 ? _a : !enable, id: (_b = element.id) !== null && _b !== void 0 ? _b : (0, general_1.generateId)(), onSelectionChange: onChange, label: liveSearching ? 'Loading...' : element.label, selectedKey: value, color: invalid ? 'danger' : 'success', isInvalid: invalid, errorMessage: invalid ? ((_c = element.validation.message) !== null && _c !== void 0 ? _c : '') : undefined }), (liveData || ((_d = element.options) !== null && _d !== void 0 ? _d : [])).map((opt) => (react_1.default.createElement(react_2.AutocompleteItem, { key: opt.id, value: opt.id }, opt.name)))));
60
60
  } })
61
61
  : react_1.default.createElement(react_1.default.Fragment, null));
62
62
  };
@@ -56,7 +56,7 @@ const MakeInput = (_a) => {
56
56
  }
57
57
  }, render: ({ field: { onChange, value }, fieldState: { invalid } }) => {
58
58
  var _a, _b, _c;
59
- return (react_1.default.createElement(react_2.Input, Object.assign({ size: 'sm' }, element, { id: (_a = element.id) !== null && _a !== void 0 ? _a : (0, general_1.generateId)(), onChange: onChange, value: value !== null && value !== void 0 ? value : '', errorMessage: invalid ? ((_b = element.validation.message) !== null && _b !== void 0 ? _b : '') : undefined, disabled: (_c = element.disabled) !== null && _c !== void 0 ? _c : !enable })));
59
+ return (react_1.default.createElement(react_2.Input, Object.assign({ size: 'sm' }, element, { id: (_a = element.id) !== null && _a !== void 0 ? _a : (0, general_1.generateId)(), onChange: onChange, value: value !== null && value !== void 0 ? value : '', color: invalid ? 'danger' : 'success', isInvalid: invalid, errorMessage: invalid ? ((_b = element.validation.message) !== null && _b !== void 0 ? _b : '') : undefined, disabled: (_c = element.disabled) !== null && _c !== void 0 ? _c : !enable })));
60
60
  } })
61
61
  : null);
62
62
  };
@@ -56,7 +56,7 @@ const MakeMultiSelect = (_a) => {
56
56
  }
57
57
  }, render: ({ field: { onChange, value }, fieldState: { invalid } }) => {
58
58
  var _a, _b, _c, _d;
59
- return (react_1.default.createElement(react_2.Select, Object.assign({ size: 'sm' }, element, { id: (_a = element.id) !== null && _a !== void 0 ? _a : (0, general_1.generateId)(), onSelectionChange: onChange, label: liveSearching ? 'Loading...' : element.label, selectionMode: "multiple", selectedKeys: value, errorMessage: invalid ? ((_b = element.validation.message) !== null && _b !== void 0 ? _b : '') : undefined, disabled: (_c = element.disabled) !== null && _c !== void 0 ? _c : !enable, className: 'max-w-lg' }), (liveData || ((_d = element.options) !== null && _d !== void 0 ? _d : [])).map((opt) => (react_1.default.createElement(react_2.SelectItem, { key: opt.id, value: opt.id }, opt.name)))));
59
+ return (react_1.default.createElement(react_2.Select, Object.assign({ size: 'sm' }, element, { id: (_a = element.id) !== null && _a !== void 0 ? _a : (0, general_1.generateId)(), onSelectionChange: onChange, label: liveSearching ? 'Loading...' : element.label, selectionMode: "multiple", selectedKeys: value, color: invalid ? 'danger' : 'success', isInvalid: invalid, errorMessage: invalid ? ((_b = element.validation.message) !== null && _b !== void 0 ? _b : '') : undefined, disabled: (_c = element.disabled) !== null && _c !== void 0 ? _c : !enable, className: 'max-w-lg' }), (liveData || ((_d = element.options) !== null && _d !== void 0 ? _d : [])).map((opt) => (react_1.default.createElement(react_2.SelectItem, { key: opt.id, value: opt.id }, opt.name)))));
60
60
  } })
61
61
  : null);
62
62
  };
@@ -56,7 +56,7 @@ const MakeSelect = (_a) => {
56
56
  }
57
57
  }, render: ({ field: { onChange, value }, fieldState: { invalid } }) => {
58
58
  var _a, _b, _c, _d;
59
- return (react_1.default.createElement(react_2.Select, Object.assign({ size: 'sm' }, element, { id: (_a = element.id) !== null && _a !== void 0 ? _a : (0, general_1.generateId)(), onChange: onChange, label: liveSearching ? 'Loading...' : element.label, selectedKeys: [value], errorMessage: invalid ? ((_b = element.validation.message) !== null && _b !== void 0 ? _b : '') : undefined, disabled: (_c = element.disabled) !== null && _c !== void 0 ? _c : !enable }), (liveData || ((_d = element.options) !== null && _d !== void 0 ? _d : [])).map((opt) => (react_1.default.createElement(react_2.SelectItem, { key: opt.id, value: opt.id }, opt.name)))));
59
+ return (react_1.default.createElement(react_2.Select, Object.assign({ size: 'sm' }, element, { id: (_a = element.id) !== null && _a !== void 0 ? _a : (0, general_1.generateId)(), onChange: onChange, label: liveSearching ? 'Loading...' : element.label, selectedKeys: [value], color: invalid ? 'danger' : 'success', isInvalid: invalid, errorMessage: invalid ? ((_b = element.validation.message) !== null && _b !== void 0 ? _b : '') : undefined, disabled: (_c = element.disabled) !== null && _c !== void 0 ? _c : !enable }), (liveData || ((_d = element.options) !== null && _d !== void 0 ? _d : [])).map((opt) => (react_1.default.createElement(react_2.SelectItem, { key: opt.id, value: opt.id }, opt.name)))));
60
60
  } })
61
61
  : react_1.default.createElement(react_1.default.Fragment, null));
62
62
  };
@@ -56,7 +56,7 @@ const MakeTextarea = (_a) => {
56
56
  }
57
57
  }, render: ({ field: { onChange, value }, fieldState: { invalid } }) => {
58
58
  var _a, _b, _c;
59
- return (react_1.default.createElement(react_2.Textarea, Object.assign({}, element, { disableAutosize: true, id: (_a = element.id) !== null && _a !== void 0 ? _a : (0, general_1.generateId)(), onChange: onChange, label: element.label, value: value !== null && value !== void 0 ? value : '', errorMessage: invalid ? ((_b = element.validation.message) !== null && _b !== void 0 ? _b : '') : undefined, disabled: (_c = element.disabled) !== null && _c !== void 0 ? _c : !enable })));
59
+ return (react_1.default.createElement(react_2.Textarea, Object.assign({}, element, { disableAutosize: true, id: (_a = element.id) !== null && _a !== void 0 ? _a : (0, general_1.generateId)(), onChange: onChange, label: element.label, value: value !== null && value !== void 0 ? value : '', color: invalid ? 'danger' : 'success', isInvalid: invalid, errorMessage: invalid ? ((_b = element.validation.message) !== null && _b !== void 0 ? _b : '') : undefined, disabled: (_c = element.disabled) !== null && _c !== void 0 ? _c : !enable })));
60
60
  } })
61
61
  : null);
62
62
  };
@@ -1,26 +1,26 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = __importDefault(require("react"));
7
- const react_hook_form_1 = require("react-hook-form");
8
- const input_upload_1 = __importDefault(require("../input-upload/input-upload"));
9
- const field_render_1 = require("../../hooks/field-render");
10
- const MakeUpload = (props) => {
11
- var _a, _b;
12
- const { render, enable } = (0, field_render_1.useFieldRender)(props);
13
- return (render
14
- ? react_1.default.createElement(react_hook_form_1.Controller, { control: props.control, name: props.element.name, rules: {
15
- required: props.element.validation.required,
16
- pattern: {
17
- value: (_a = props.element.validation.regex) !== null && _a !== void 0 ? _a : /(.*)/,
18
- message: (_b = props.element.validation.message) !== null && _b !== void 0 ? _b : ''
19
- }
20
- }, render: ({ field: { onChange } }) => {
21
- var _a;
22
- return (react_1.default.createElement(input_upload_1.default, { id: props.element.id, name: props.element.name, disabled: (_a = props.element.disabled) !== null && _a !== void 0 ? _a : !enable, onChange: onChange, label: props.element.label, helpText: props.element.helpText, style: props.element.styles, accept: props.element.accept, read: props.element.read, readAsArrayBuffer: props.element.readAsArrayBuffer }));
23
- } })
24
- : null);
25
- };
26
- exports.default = MakeUpload;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_hook_form_1 = require("react-hook-form");
8
+ const input_upload_1 = __importDefault(require("../input-upload/input-upload"));
9
+ const field_render_1 = require("../../hooks/field-render");
10
+ const MakeUpload = (props) => {
11
+ var _a, _b;
12
+ const { render, enable } = (0, field_render_1.useFieldRender)(props);
13
+ return (render
14
+ ? react_1.default.createElement(react_hook_form_1.Controller, { control: props.control, name: props.element.name, rules: {
15
+ required: props.element.validation.required,
16
+ pattern: {
17
+ value: (_a = props.element.validation.regex) !== null && _a !== void 0 ? _a : /(.*)/,
18
+ message: (_b = props.element.validation.message) !== null && _b !== void 0 ? _b : ''
19
+ }
20
+ }, render: ({ field: { onChange } }) => {
21
+ var _a;
22
+ return (react_1.default.createElement(input_upload_1.default, { id: props.element.id, name: props.element.name, disabled: (_a = props.element.disabled) !== null && _a !== void 0 ? _a : !enable, onChange: onChange, label: props.element.label, helpText: props.element.helpText, style: props.element.styles, accept: props.element.accept, read: props.element.read, readAsArrayBuffer: props.element.readAsArrayBuffer }));
23
+ } })
24
+ : null);
25
+ };
26
+ exports.default = MakeUpload;
@@ -51,16 +51,16 @@ const useFieldRender = (props) => {
51
51
  const key = name !== null && name !== void 0 ? name : '';
52
52
  const targetField = formData[key];
53
53
  if (renderCondition && renderConditionList.includes(key)) {
54
- const renderStatus = props.element.renderIf[key].includes(targetField);
54
+ const renderStatus = targetField === '*' ? true : props.element.renderIf[key].includes(targetField);
55
55
  if (render !== renderStatus)
56
56
  setRender(renderStatus);
57
57
  }
58
58
  else if (enableCondition && enableConditionList.includes(key)) {
59
- const enableStatus = props.element.enableIf[key].includes(targetField);
59
+ const enableStatus = targetField === '*' ? true : props.element.enableIf[key].includes(targetField);
60
60
  if (enable !== enableStatus)
61
61
  setEnable(enableStatus);
62
62
  }
63
- if (liveDataCondition && key === ((_b = props.element.liveData) === null || _b === void 0 ? void 0 : _b.condition)) {
63
+ if (liveDataCondition && ((_b = props.element.liveData) === null || _b === void 0 ? void 0 : _b.condition.includes(key))) {
64
64
  if (targetField) {
65
65
  setLiveSearching(true);
66
66
  const options = yield liveDataAction(targetField, formData);
@@ -1,33 +1,33 @@
1
- import { ChangeEvent, CSSProperties } from 'react';
2
- export interface IFileResult {
3
- name: string;
4
- size: number;
5
- data: string;
6
- }
7
- export interface IFile {
8
- data?: string;
9
- name: string;
10
- size: number;
11
- }
12
- export interface IInputState {
13
- state: boolean;
14
- file: IFile;
15
- }
16
- export interface IInputStorage {
17
- setData: (file: IInputState) => void;
18
- clearFuntion: () => void;
19
- }
20
- export interface IInputUpload {
21
- id?: string;
22
- value?: string;
23
- onChange: (event: ChangeEvent<HTMLInputElement> | IFileResult | FileList | null) => void;
24
- accept?: string;
25
- label?: string;
26
- helpText?: string;
27
- clearfunction?: () => void;
28
- style?: CSSProperties;
29
- readAsArrayBuffer?: boolean;
30
- name: string;
31
- disabled?: boolean;
32
- read?: boolean;
33
- }
1
+ import { ChangeEvent, CSSProperties } from 'react';
2
+ export interface IFileResult {
3
+ name: string;
4
+ size: number;
5
+ data: string;
6
+ }
7
+ export interface IFile {
8
+ data?: string;
9
+ name: string;
10
+ size: number;
11
+ }
12
+ export interface IInputState {
13
+ state: boolean;
14
+ file: IFile;
15
+ }
16
+ export interface IInputStorage {
17
+ setData: (file: IInputState) => void;
18
+ clearFuntion: () => void;
19
+ }
20
+ export interface IInputUpload {
21
+ id?: string;
22
+ value?: string;
23
+ onChange: (event: ChangeEvent<HTMLInputElement> | IFileResult | FileList | null) => void;
24
+ accept?: string;
25
+ label?: string;
26
+ helpText?: string;
27
+ clearfunction?: () => void;
28
+ style?: CSSProperties;
29
+ readAsArrayBuffer?: boolean;
30
+ name: string;
31
+ disabled?: boolean;
32
+ read?: boolean;
33
+ }
@@ -1,12 +1,12 @@
1
- import { IField, IFieldProps } from './field';
2
- export interface IMakeUpload extends Omit<IField, 'defaultValue'> {
3
- elementType: 'upload';
4
- helpText?: string;
5
- read: boolean;
6
- image?: boolean;
7
- accept?: string;
8
- readAsArrayBuffer?: boolean;
9
- }
10
- export interface IMakeUploadProps extends IFieldProps {
11
- element: IMakeUpload;
12
- }
1
+ import { IField, IFieldProps } from './field';
2
+ export interface IMakeUpload extends Omit<IField, 'defaultValue'> {
3
+ elementType: 'upload';
4
+ helpText?: string;
5
+ read: boolean;
6
+ image?: boolean;
7
+ accept?: string;
8
+ readAsArrayBuffer?: boolean;
9
+ }
10
+ export interface IMakeUploadProps extends IFieldProps {
11
+ element: IMakeUpload;
12
+ }
@@ -12,10 +12,10 @@ import { IMakeButton } from './make-button';
12
12
  import { IMakeAutoComplete } from './make-autocomplete';
13
13
  export type IModalField = IMakeSelect | IMakeInput | IMakeFieldGroup | IMakeTextarea | IMakeToggle | IMakeMultiSelect | IMakeText | IMakeUpload | IMakeButton | IMakeAutoComplete;
14
14
  export type IFormField = IMakeSelect | IMakeInput | IMakeTextarea | IMakeToggle | IMakeMultiSelect;
15
- export type IModalRenderCondition = Record<string, Array<string | number>>;
15
+ export type IModalRenderCondition = Record<string, Array<string | number | '*'>>;
16
16
  export type IModalLiveDataCondition = {
17
17
  action: (data: string, ...args: any[]) => Promise<Array<IOption>>;
18
- condition: string;
18
+ condition: Array<string>;
19
19
  };
20
20
  export interface IModalConfigProps {
21
21
  fields: Array<IModalField>;
package/dist/modal.js CHANGED
@@ -127,7 +127,7 @@ const Modal = ({ open, close, config }) => {
127
127
  ? react_1.default.createElement(portal_1.Portal, { closeTime: 200, portalOpen: open, portalTag: '#modal-portal' },
128
128
  react_1.default.createElement("div", { className: 'rounded bg-white relative w-auto h-auto min-h-[200px] min-w-[500px]', style: Object.assign({}, modalReady.styles) },
129
129
  react_1.default.createElement("form", { className: 'flex flex-col p-4 gap-4', autoComplete: 'off', onSubmit: handleSubmit(actionHandler) },
130
- react_1.default.createElement("h2", { className: 'text-bold text-center border-b pb-4' }, modalReady.title),
130
+ react_1.default.createElement("h2", { className: 'text-bold text-center border-b pb-4 font-semibold' }, modalReady.title),
131
131
  react_1.default.createElement("div", { className: 'flex flex-col items-center gap-4 py-4', style: {
132
132
  overflowY: modalReady.overFlowBody ? 'auto' : undefined,
133
133
  height: modalReady.overFlowBody,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dynamic-modal",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "The dynamic-modal is a solution of creation differents modals into project using a json configuration file",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -34,6 +34,8 @@ const MakeAutocomplete: FC<IMakeAutoCompleteProps> = ({ element, ...props }) =>
34
34
  onSelectionChange={onChange}
35
35
  label={liveSearching ? 'Loading...' : element.label}
36
36
  selectedKey={value}
37
+ color={invalid ? 'danger' : 'success'}
38
+ isInvalid={invalid}
37
39
  errorMessage={invalid ? (element.validation.message ?? '') : undefined}
38
40
  >
39
41
  {
@@ -32,6 +32,8 @@ const MakeInput: FC<IMakeInputProps> = ({ element, ...props }) => {
32
32
  id={element.id ?? generateId()}
33
33
  onChange={onChange}
34
34
  value={value ?? ''}
35
+ color={invalid ? 'danger' : 'success'}
36
+ isInvalid={invalid}
35
37
  errorMessage={invalid ? (element.validation.message ?? '') : undefined}
36
38
  disabled={element.disabled ?? !enable}
37
39
  />
@@ -34,6 +34,8 @@ const MakeMultiSelect: FC<IMakeMultiSelectProps> = ({ element, ...props }) => {
34
34
  label={liveSearching ? 'Loading...' : element.label}
35
35
  selectionMode="multiple"
36
36
  selectedKeys={value}
37
+ color={invalid ? 'danger' : 'success'}
38
+ isInvalid={invalid}
37
39
  errorMessage={invalid ? (element.validation.message ?? '') : undefined}
38
40
  disabled={element.disabled ?? !enable}
39
41
  className='max-w-lg'
@@ -33,6 +33,8 @@ const MakeSelect: FC<IMakeSelectProps> = ({ element, ...props }) => {
33
33
  onChange={onChange}
34
34
  label={liveSearching ? 'Loading...' : element.label}
35
35
  selectedKeys={[value]}
36
+ color={invalid ? 'danger' : 'success'}
37
+ isInvalid={invalid}
36
38
  errorMessage={invalid ? (element.validation.message ?? '') : undefined}
37
39
  disabled={element.disabled ?? !enable}
38
40
  >
@@ -33,6 +33,8 @@ const MakeTextarea: FC<IMakeTextareaProps> = ({ element, ...props }) => {
33
33
  onChange={onChange}
34
34
  label={element.label}
35
35
  value={value ?? ''}
36
+ color={invalid ? 'danger' : 'success'}
37
+ isInvalid={invalid}
36
38
  errorMessage={invalid ? (element.validation.message ?? '') : undefined}
37
39
  disabled={element.disabled ?? !enable}
38
40
  />
@@ -75,14 +75,14 @@ export const useFieldRender = (props: IFieldRenderProps): IFieldRender => {
75
75
  const targetField = formData[key] as string | number
76
76
 
77
77
  if (renderCondition && renderConditionList.includes(key)) {
78
- const renderStatus: boolean = (props.element.renderIf as IModalRenderCondition)[key].includes(targetField)
78
+ const renderStatus: boolean = targetField === '*' ? true : (props.element.renderIf as IModalRenderCondition)[key].includes(targetField)
79
79
  if (render !== renderStatus) setRender(renderStatus)
80
80
  } else if (enableCondition && enableConditionList.includes(key)) {
81
- const enableStatus: boolean = (props.element.enableIf as IModalRenderCondition)[key].includes(targetField)
81
+ const enableStatus: boolean = targetField === '*' ? true : (props.element.enableIf as IModalRenderCondition)[key].includes(targetField)
82
82
  if (enable !== enableStatus) setEnable(enableStatus)
83
83
  }
84
84
 
85
- if (liveDataCondition && key === props.element.liveData?.condition) {
85
+ if (liveDataCondition && props.element.liveData?.condition.includes(key)) {
86
86
  if (targetField) {
87
87
  setLiveSearching(true)
88
88
  const options: Array<IOption> = await liveDataAction(targetField, formData)
@@ -16,11 +16,11 @@ export type IModalField = IMakeSelect | IMakeInput | IMakeFieldGroup | IMakeText
16
16
 
17
17
  export type IFormField = IMakeSelect | IMakeInput | IMakeTextarea | IMakeToggle | IMakeMultiSelect
18
18
 
19
- export type IModalRenderCondition = Record<string, Array<string | number>>
19
+ export type IModalRenderCondition = Record<string, Array<string | number | '*'>>
20
20
 
21
21
  export type IModalLiveDataCondition = {
22
22
  action: (data: string, ...args: any[]) => Promise<Array<IOption>>;
23
- condition: string
23
+ condition: Array<string>
24
24
  }
25
25
 
26
26
  export interface IModalConfigProps {
package/src/modal.tsx CHANGED
@@ -115,7 +115,7 @@ export const Modal = ({ open, close, config }: IModal) => {
115
115
  ? <Portal closeTime={200} portalOpen={open} portalTag={'#modal-portal'}>
116
116
  <div className='rounded bg-white relative w-auto h-auto min-h-[200px] min-w-[500px]' style={{ ...modalReady.styles }} >
117
117
  <form className='flex flex-col p-4 gap-4' autoComplete='off' onSubmit={handleSubmit(actionHandler)}>
118
- <h2 className='text-bold text-center border-b pb-4'>{modalReady.title}</h2>
118
+ <h2 className='text-bold text-center border-b pb-4 font-semibold'>{modalReady.title}</h2>
119
119
  <div
120
120
  className='flex flex-col items-center gap-4 py-4'
121
121
  style={{