dynamic-modal 1.1.19 → 1.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/components/input-upload/input-upload.js +3 -9
  2. package/dist/components/make-button/make-button.js +4 -36
  3. package/dist/components/make-custom-upload/make-custom-upload.js +5 -37
  4. package/dist/components/make-description/make-description.js +4 -9
  5. package/dist/components/make-input/make-input.js +5 -37
  6. package/dist/components/make-select/make-select.js +5 -37
  7. package/dist/components/make-table/make-table.js +12 -53
  8. package/dist/components/make-textarea/make-textarea.js +5 -37
  9. package/dist/components/make-toggle/make-toggle.js +5 -37
  10. package/dist/components/make-upload/make-upload.js +5 -37
  11. package/dist/components/make-watcher/make-watcher.js +4 -36
  12. package/dist/components/portal/portal.js +4 -36
  13. package/dist/context/component/component-state.d.ts +1 -1
  14. package/dist/context/component/component-state.js +4 -36
  15. package/dist/hooks/modal-handler.js +1 -1
  16. package/dist/hooks/use-enable-if.js +1 -1
  17. package/dist/hooks/use-live-data.js +1 -1
  18. package/dist/hooks/use-render-if.js +1 -1
  19. package/dist/index.d.ts +5 -0
  20. package/dist/index.js +4 -0
  21. package/dist/interfaces/make-description.d.ts +2 -1
  22. package/dist/modal.d.ts +1 -2
  23. package/dist/modal.js +35 -75
  24. package/dist/src/components/input-upload/input-upload.d.ts +4 -0
  25. package/dist/src/components/input-upload/input-upload.js +41 -0
  26. package/dist/src/components/make-button/make-button.d.ts +4 -0
  27. package/dist/src/components/make-button/make-button.js +14 -0
  28. package/dist/src/components/make-custom-upload/make-custom-upload.d.ts +4 -0
  29. package/dist/src/components/make-custom-upload/make-custom-upload.js +60 -0
  30. package/dist/src/components/make-description/make-description.d.ts +4 -0
  31. package/dist/src/components/make-description/make-description.js +6 -0
  32. package/dist/src/components/make-input/make-input.d.ts +4 -0
  33. package/dist/src/components/make-input/make-input.js +60 -0
  34. package/dist/src/components/make-select/make-select.d.ts +4 -0
  35. package/dist/src/components/make-select/make-select.js +78 -0
  36. package/dist/src/components/make-table/make-table.d.ts +4 -0
  37. package/dist/src/components/make-table/make-table.js +100 -0
  38. package/dist/src/components/make-textarea/make-textarea.d.ts +4 -0
  39. package/dist/src/components/make-textarea/make-textarea.js +60 -0
  40. package/dist/src/components/make-toggle/make-toggle.d.ts +4 -0
  41. package/dist/src/components/make-toggle/make-toggle.js +60 -0
  42. package/dist/src/components/make-upload/make-upload.d.ts +4 -0
  43. package/dist/src/components/make-upload/make-upload.js +59 -0
  44. package/dist/src/components/make-watcher/make-watcher.d.ts +4 -0
  45. package/dist/src/components/make-watcher/make-watcher.js +28 -0
  46. package/dist/src/components/portal/portal.d.ts +3 -0
  47. package/dist/src/components/portal/portal.js +28 -0
  48. package/dist/src/context/component/component-state.d.ts +4 -0
  49. package/dist/src/context/component/component-state.js +8 -0
  50. package/dist/src/hooks/modal-handler.d.ts +7 -0
  51. package/dist/src/hooks/modal-handler.js +25 -0
  52. package/dist/src/hooks/use-enable-if.d.ts +10 -0
  53. package/dist/src/hooks/use-enable-if.js +36 -0
  54. package/dist/src/hooks/use-live-data.d.ts +11 -0
  55. package/dist/src/hooks/use-live-data.js +23 -0
  56. package/dist/src/hooks/use-render-if.d.ts +10 -0
  57. package/dist/src/hooks/use-render-if.js +36 -0
  58. package/dist/src/interfaces/component-state.d.ts +29 -0
  59. package/dist/src/interfaces/component-state.js +1 -0
  60. package/dist/src/interfaces/custom-upload.d.ts +12 -0
  61. package/dist/src/interfaces/custom-upload.js +1 -0
  62. package/dist/src/interfaces/field.d.ts +33 -0
  63. package/dist/src/interfaces/field.js +1 -0
  64. package/dist/src/interfaces/input-upload.d.ts +19 -0
  65. package/dist/src/interfaces/input-upload.js +1 -0
  66. package/dist/src/interfaces/make-button.d.ts +20 -0
  67. package/dist/src/interfaces/make-button.js +1 -0
  68. package/{src/interfaces/make-custom-upload.ts → dist/src/interfaces/make-custom-upload.d.ts} +2 -4
  69. package/dist/src/interfaces/make-custom-upload.js +1 -0
  70. package/dist/src/interfaces/make-description.d.ts +13 -0
  71. package/dist/src/interfaces/make-description.js +1 -0
  72. package/{src/interfaces/make-field-group.ts → dist/src/interfaces/make-field-group.d.ts} +5 -8
  73. package/dist/src/interfaces/make-field-group.js +1 -0
  74. package/{src/interfaces/make-input.ts → dist/src/interfaces/make-input.d.ts} +6 -9
  75. package/dist/src/interfaces/make-input.js +1 -0
  76. package/{src/interfaces/make-select.ts → dist/src/interfaces/make-select.d.ts} +6 -8
  77. package/dist/src/interfaces/make-select.js +1 -0
  78. package/dist/src/interfaces/make-table.d.ts +26 -0
  79. package/dist/src/interfaces/make-table.js +1 -0
  80. package/{src/interfaces/make-textarea.ts → dist/src/interfaces/make-textarea.d.ts} +4 -6
  81. package/dist/src/interfaces/make-textarea.js +1 -0
  82. package/{src/interfaces/make-toggle.ts → dist/src/interfaces/make-toggle.d.ts} +2 -4
  83. package/dist/src/interfaces/make-toggle.js +1 -0
  84. package/dist/src/interfaces/make-upload.d.ts +12 -0
  85. package/dist/src/interfaces/make-upload.js +1 -0
  86. package/{src/interfaces/make-watcher.ts → dist/src/interfaces/make-watcher.d.ts} +3 -5
  87. package/dist/src/interfaces/make-watcher.js +1 -0
  88. package/dist/src/interfaces/modal.d.ts +48 -0
  89. package/dist/src/interfaces/modal.js +1 -0
  90. package/dist/src/interfaces/option.d.ts +4 -0
  91. package/dist/src/interfaces/option.js +1 -0
  92. package/dist/src/interfaces/portal.d.ts +8 -0
  93. package/dist/src/interfaces/portal.js +1 -0
  94. package/dist/src/modal.d.ts +3 -0
  95. package/dist/src/modal.js +135 -0
  96. package/dist/src/util/general/general.util.d.ts +3 -0
  97. package/dist/src/util/general/general.util.js +15 -0
  98. package/dist/util/general/general.util.js +1 -1
  99. package/package.json +20 -2
  100. package/README-ES.md +0 -217
  101. package/eslint.config.mjs +0 -72
  102. package/examples/enable-if.ts +0 -128
  103. package/examples/live-data.ts +0 -61
  104. package/examples/render-if.ts +0 -129
  105. package/examples/simple.ts +0 -75
  106. package/index.ts +0 -5
  107. package/src/components/input-upload/input-upload.tsx +0 -82
  108. package/src/components/make-button/make-button.tsx +0 -25
  109. package/src/components/make-custom-upload/make-custom-upload.tsx +0 -100
  110. package/src/components/make-description/make-description.tsx +0 -21
  111. package/src/components/make-input/make-input.tsx +0 -100
  112. package/src/components/make-select/make-select.tsx +0 -125
  113. package/src/components/make-table/make-table.tsx +0 -201
  114. package/src/components/make-textarea/make-textarea.tsx +0 -100
  115. package/src/components/make-toggle/make-toggle.tsx +0 -100
  116. package/src/components/make-upload/make-upload.tsx +0 -92
  117. package/src/components/make-watcher/make-watcher.tsx +0 -49
  118. package/src/components/portal/portal.tsx +0 -41
  119. package/src/context/component/component-state.tsx +0 -25
  120. package/src/hooks/modal-handler.ts +0 -41
  121. package/src/hooks/use-enable-if.ts +0 -68
  122. package/src/hooks/use-live-data.ts +0 -47
  123. package/src/hooks/use-render-if.ts +0 -69
  124. package/src/interfaces/component-state.ts +0 -55
  125. package/src/interfaces/custom-upload.ts +0 -13
  126. package/src/interfaces/field.ts +0 -43
  127. package/src/interfaces/input-upload.ts +0 -23
  128. package/src/interfaces/make-button.ts +0 -23
  129. package/src/interfaces/make-description.ts +0 -15
  130. package/src/interfaces/make-table.ts +0 -29
  131. package/src/interfaces/make-upload.ts +0 -14
  132. package/src/interfaces/modal.ts +0 -75
  133. package/src/interfaces/option.ts +0 -4
  134. package/src/interfaces/portal.ts +0 -9
  135. package/src/modal.tsx +0 -331
  136. package/src/util/general/general.util.ts +0 -29
  137. package/tsconfig.json +0 -13
@@ -1,41 +1,9 @@
1
- "use strict";
2
1
  'use client';
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
2
+ "use strict";
36
3
  Object.defineProperty(exports, "__esModule", { value: true });
37
4
  exports.Portal = void 0;
38
- const react_1 = __importStar(require("react"));
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
39
7
  const react_dom_1 = require("react-dom");
40
8
  const Portal = (props) => {
41
9
  const ref = (0, react_1.useRef)(null);
@@ -59,6 +27,6 @@ const Portal = (props) => {
59
27
  }, [mounted, props.closeTime, props.portalOpen, props.portalTag]);
60
28
  if (!mounted && !ref.current)
61
29
  return null;
62
- return (0, react_dom_1.createPortal)(react_1.default.createElement("div", { className: `transition-all delay-100 fixed top-0 left-0 w-full h-full grid place-items-center bg-black bg-opacity-40 z-20 ${props.useBlur && 'backdrop-blur-xs'}` }, props.children), ref.current);
30
+ return (0, react_dom_1.createPortal)((0, jsx_runtime_1.jsx)("div", { className: `transition-all delay-100 fixed top-0 left-0 w-full h-full grid place-items-center bg-black bg-opacity-40 z-20 ${props.useBlur && 'backdrop-blur-sm'}`, children: props.children }), ref.current);
63
31
  };
64
32
  exports.Portal = Portal;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { IComponentState, IComponentStateProps } from '../../interfaces/component-state';
3
3
  export declare const ComponentStateContext: React.Context<IComponentState>;
4
- export declare const ComponentState: ({ children, components, }: IComponentStateProps) => React.JSX.Element;
4
+ export declare const ComponentState: ({ children, components, }: IComponentStateProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,44 +1,12 @@
1
- "use strict";
2
1
  'use client';
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
2
+ "use strict";
36
3
  Object.defineProperty(exports, "__esModule", { value: true });
37
4
  exports.ComponentState = exports.ComponentStateContext = void 0;
38
- const react_1 = __importStar(require("react"));
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
39
7
  exports.ComponentStateContext = (0, react_1.createContext)({});
40
8
  const ComponentState = ({ children, components, }) => {
41
9
  const value = (0, react_1.useMemo)(() => components, [components]);
42
- return (react_1.default.createElement(exports.ComponentStateContext.Provider, { value: value }, children));
10
+ return ((0, jsx_runtime_1.jsx)(exports.ComponentStateContext.Provider, { value: value, children: children }));
43
11
  };
44
12
  exports.ComponentState = ComponentState;
@@ -1,5 +1,5 @@
1
- "use strict";
2
1
  'use client';
2
+ "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.useModalHandler = useModalHandler;
5
5
  const react_1 = require("react");
@@ -1,5 +1,5 @@
1
- "use strict";
2
1
  'use client';
2
+ "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const react_1 = require("react");
5
5
  const general_util_1 = require("../util/general/general.util");
@@ -1,5 +1,5 @@
1
- "use strict";
2
1
  'use client';
2
+ "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const react_1 = require("react");
5
5
  const general_util_1 = require("../util/general/general.util");
@@ -1,5 +1,5 @@
1
- "use strict";
2
1
  'use client';
2
+ "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const react_1 = require("react");
5
5
  const general_util_1 = require("../util/general/general.util");
@@ -0,0 +1,5 @@
1
+ export { default as DynamicModal } from './src/modal';
2
+ export type { IModalConfigLoader, IModalConfigProps, IModalRenderCondition, IModalField, IModalLiveDataCondition } from './src/interfaces/modal';
3
+ export { useModalHandler } from './src/hooks/modal-handler';
4
+ export { ComponentState, ComponentStateContext } from './src/context/component/component-state';
5
+ export type { IComponentState } from './src/interfaces/component-state';
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ 'use client';
2
+ export { default as DynamicModal } from './src/modal';
3
+ export { useModalHandler } from './src/hooks/modal-handler';
4
+ export { ComponentState, ComponentStateContext } from './src/context/component/component-state';
@@ -2,10 +2,11 @@ import { CSSProperties, FC } from 'react';
2
2
  import { IFieldProps } from './field';
3
3
  export interface IMakeDescription {
4
4
  elementType: 'text';
5
- text: string;
5
+ text?: string;
6
6
  containerStyle?: CSSProperties;
7
7
  textStyle?: CSSProperties;
8
8
  Icon?: FC;
9
+ elements?: Array<Record<'text', string> & Record<'style', CSSProperties>>;
9
10
  }
10
11
  export interface IMakeDescriptionProps extends IFieldProps {
11
12
  element: Omit<IMakeDescription, 'elementType'>;
package/dist/modal.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  import { IModal } from './interfaces/modal';
3
- export declare const Modal: ({ open, close, config }: IModal) => React.JSX.Element | null;
2
+ export declare const Modal: ({ open, close, config }: IModal) => import("react/jsx-runtime").JSX.Element | null;
4
3
  export default Modal;
package/dist/modal.js CHANGED
@@ -1,44 +1,13 @@
1
- "use strict";
2
1
  'use client';
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
2
+ "use strict";
36
3
  var __importDefault = (this && this.__importDefault) || function (mod) {
37
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
38
5
  };
39
6
  Object.defineProperty(exports, "__esModule", { value: true });
40
7
  exports.Modal = void 0;
41
- const react_1 = __importStar(require("react"));
8
+ const jsx_runtime_1 = require("react/jsx-runtime");
9
+ const react_1 = require("react");
10
+ const react_2 = require("react");
42
11
  const react_hook_form_1 = require("react-hook-form");
43
12
  const portal_1 = require("./components/portal/portal");
44
13
  const make_toggle_1 = __importDefault(require("./components/make-toggle/make-toggle"));
@@ -53,12 +22,20 @@ const make_custom_upload_1 = __importDefault(require("./components/make-custom-u
53
22
  const make_watcher_1 = __importDefault(require("./components/make-watcher/make-watcher"));
54
23
  const make_table_1 = __importDefault(require("./components/make-table/make-table"));
55
24
  const Modal = ({ open, close, config }) => {
56
- const { ModalButtonAction, ModalButtonCancel } = (0, react_1.useContext)(component_state_1.ComponentStateContext);
57
- const [modalReady, setModalReady] = (0, react_1.useState)(undefined);
58
- const [defaultLoaded, setDefaultLoaded] = (0, react_1.useState)(false);
25
+ const { ModalButtonAction, ModalButtonCancel } = (0, react_2.useContext)(component_state_1.ComponentStateContext);
26
+ const [modalReady, setModalReady] = (0, react_2.useState)(undefined);
27
+ const [defaultLoaded, setDefaultLoaded] = (0, react_2.useState)(false);
59
28
  const { control, handleSubmit, getValues, unregister, setValue, watch, trigger, reset, getFieldState, } = (0, react_hook_form_1.useForm)();
60
29
  const formValueHandler = (element) => {
61
- if (['group', 'upload', 'custom-upload', 'text'].includes(element.elementType))
30
+ if ([
31
+ 'group',
32
+ 'upload',
33
+ 'custom-upload',
34
+ 'text',
35
+ 'description',
36
+ 'watcher',
37
+ 'table',
38
+ ].includes(element.elementType))
62
39
  return;
63
40
  if (!element.defaultValue && element.renderIf) {
64
41
  unregister(element.name);
@@ -106,7 +83,7 @@ const Modal = ({ open, close, config }) => {
106
83
  setValue,
107
84
  unregister,
108
85
  };
109
- 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 === 'custom-upload' ? (react_1.default.createElement(make_custom_upload_1.default, { ...props, key: `modal-custom-upload-${index}`, element: element })) : elementType === 'watcher' ? (react_1.default.createElement(make_watcher_1.default, { ...props, key: `modal-watcher-${index}`, element: element })) : elementType === 'button' ? (react_1.default.createElement(make_button_1.default, { ...props, key: `modal-button-${index}`, element: element, getValues: getValues })) : elementType === 'table' ? (react_1.default.createElement(make_table_1.default, { ...props, key: `modal-table-${index}`, element: element })) : null;
86
+ return elementType === 'input' ? ((0, react_1.createElement)(make_input_1.default, { ...props, key: `modal-input-${index}`, element: element })) : elementType === 'select' ? ((0, react_1.createElement)(make_select_1.default, { ...props, key: `modal-select-${index}`, element: element })) : elementType === 'textarea' ? ((0, react_1.createElement)(make_textarea_1.default, { ...props, key: `modal-textarea-${index}`, element: element })) : elementType === 'toggle' ? ((0, react_1.createElement)(make_toggle_1.default, { ...props, key: `modal-toggle-${index}`, element: element })) : elementType === 'text' ? ((0, react_1.createElement)(make_description_1.default, { ...props, key: `modal-text-${index}`, element: element })) : elementType === 'upload' ? ((0, react_1.createElement)(make_upload_1.default, { ...props, key: `modal-upload-${index}`, element: element })) : elementType === 'custom-upload' ? ((0, react_1.createElement)(make_custom_upload_1.default, { ...props, key: `modal-custom-upload-${index}`, element: element })) : elementType === 'watcher' ? ((0, react_1.createElement)(make_watcher_1.default, { ...props, key: `modal-watcher-${index}`, element: element })) : elementType === 'button' ? ((0, react_1.createElement)(make_button_1.default, { ...props, key: `modal-button-${index}`, element: element, getValues: getValues })) : elementType === 'table' ? ((0, react_1.createElement)(make_table_1.default, { ...props, key: `modal-table-${index}`, element: element })) : null;
110
87
  };
111
88
  const closeHandler = () => {
112
89
  if (modalReady?.onClose)
@@ -137,46 +114,29 @@ const Modal = ({ open, close, config }) => {
137
114
  modalReady?.out({ ...(modalReady?.reservedData ?? {}), ...data });
138
115
  closeHandler();
139
116
  };
140
- (0, react_1.useEffect)(() => {
117
+ (0, react_2.useEffect)(() => {
141
118
  if (open && !modalReady)
142
119
  setModalReady(config);
143
120
  }, [config, modalReady, open]);
144
121
  if (!modalReady)
145
122
  return null;
146
- return (react_1.default.createElement(portal_1.Portal, { closeTime: 200, portalOpen: open, portalTag: '#modal-portal', useBlur: modalReady.useBlur },
147
- react_1.default.createElement("div", { className: "rounded bg-white relative w-auto h-auto min-h-[200px] min-w-[500px]", style: modalReady.style },
148
- react_1.default.createElement("form", { className: "flex flex-col p-4 gap-4", autoComplete: "off", onSubmit: handleSubmit(actionHandler) },
149
- react_1.default.createElement("h2", { className: "text-bold text-center border-b pb-4 font-semibold" }, modalReady.title),
150
- react_1.default.createElement("div", { className: "flex flex-col gap-4 py-4", style: {
151
- overflowY: modalReady.overFlowBody ? 'auto' : undefined,
152
- height: modalReady.overFlowBody,
153
- minHeight: modalReady.minHeightBody,
154
- } }, modalReady.fields.map((element, index) => {
155
- const isEndOfRender = index + 1 === modalReady.fields.length;
156
- if (element.elementType === 'group') {
157
- return (react_1.default.createElement("div", { key: `modal-group-${index}`, className: "flex flex-col w-full gap-2" },
158
- element.title && (react_1.default.createElement("h3", { className: "font-bold border-b-2 pb-2 mb-2" }, element.title)),
159
- react_1.default.createElement("div", { key: `modal-group-${index}`, className: "flex gap-4 w-full", style: element.style }, element.groups
160
- .filter((sub) => [
161
- 'input',
162
- 'select',
163
- 'toggle',
164
- 'multiselect',
165
- 'upload',
166
- 'custom-upload',
167
- 'watcher',
168
- 'button',
169
- 'autocomplete',
170
- ].includes(sub.elementType))
171
- .map((sub, subIndex) => getRender(sub, index + subIndex, isEndOfRender)))));
172
- }
173
- else {
174
- return getRender(element, index, isEndOfRender);
175
- }
176
- })),
177
- react_1.default.createElement("div", { className: "flex gap-4 items-center justify-center border-t p-2", style: modalReady?.actions.containerStyle },
178
- modalReady.actions.cancel && (react_1.default.createElement(ModalButtonCancel, { ...modalReady.actions.cancel, onClick: closeHandler })),
179
- getUseSubmit(modalReady) ? (react_1.default.createElement(ModalButtonAction, { ...modalReady.actions.action, type: "submit" })) : (react_1.default.createElement(ModalButtonAction, { ...modalReady.actions.action, onClick: manualSubmit, type: "button" })))))));
123
+ return ((0, jsx_runtime_1.jsx)(portal_1.Portal, { closeTime: 200, portalOpen: open, portalTag: '#modal-portal', useBlur: modalReady.useBlur, children: (0, jsx_runtime_1.jsx)("div", { className: `rounded bg-white relative w-auto h-auto min-h-[200px] min-w-[500px] ${modalReady.useBlur && 'shadow-md border border-gray-200'}`, style: modalReady.style, children: (0, jsx_runtime_1.jsxs)("form", { className: "flex flex-col p-4 gap-4", autoComplete: "off", onSubmit: handleSubmit(actionHandler), children: [(0, jsx_runtime_1.jsx)("h2", { className: "text-bold text-center border-b pb-4 font-semibold", children: modalReady.title }), (0, jsx_runtime_1.jsx)("div", { className: "flex flex-col gap-4 py-4", style: {
124
+ overflowY: modalReady.overFlowBody ? 'auto' : undefined,
125
+ height: modalReady.overFlowBody,
126
+ minHeight: modalReady.minHeightBody,
127
+ }, children: modalReady.fields.map((element, index) => {
128
+ const isEndOfRender = index + 1 === modalReady.fields.length;
129
+ if (element.elementType === 'group') {
130
+ const groupElements = element.groups
131
+ .filter((sub) => !['group', 'watcher', 'table'].includes(sub.elementType))
132
+ .map((sub, subIndex) => getRender(sub, index + subIndex, isEndOfRender));
133
+ const hideDiv = groupElements.filter((render) => render).length === 0;
134
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `flex flex-col w-full gap-2 ${hideDiv && 'hidden'}`, children: [element.title && ((0, jsx_runtime_1.jsx)("h3", { className: "font-bold border-b-2 pb-2 mb-2", children: element.title })), (0, jsx_runtime_1.jsx)("div", { className: "flex gap-4 w-full", style: element.style, children: groupElements.map((component) => component) })] }, `modal-group-${index}`));
135
+ }
136
+ else {
137
+ return getRender(element, index, isEndOfRender);
138
+ }
139
+ }) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex gap-4 items-center justify-center border-t p-2", style: modalReady?.actions.containerStyle, children: [modalReady.actions.cancel && ((0, jsx_runtime_1.jsx)(ModalButtonCancel, { ...modalReady.actions.cancel, onClick: closeHandler })), getUseSubmit(modalReady) ? ((0, jsx_runtime_1.jsx)(ModalButtonAction, { ...modalReady.actions.action, type: "submit" })) : ((0, jsx_runtime_1.jsx)(ModalButtonAction, { ...modalReady.actions.action, onClick: manualSubmit, type: "button" }))] })] }) }) }));
180
140
  };
181
141
  exports.Modal = Modal;
182
142
  exports.default = exports.Modal;
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+ import { IInputUpload } from '../../interfaces/input-upload';
3
+ declare const InputUpload: FC<IInputUpload>;
4
+ export default InputUpload;
@@ -0,0 +1,41 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ const InputUpload = ({ onChange, readAsArrayBuffer, read, helpText, label, ...props }) => {
4
+ const onChangeHandler = (event) => {
5
+ if (read && event.target.files) {
6
+ readFileBlob(event.target.files[0], false)
7
+ .then((result) => onChange(result))
8
+ .catch((err) => {
9
+ console.error('file read error', err);
10
+ onChange({ name: '', size: 0, data: '' });
11
+ });
12
+ }
13
+ else {
14
+ onChange(event.target.files);
15
+ }
16
+ };
17
+ const readFileBlob = (blob, image) => {
18
+ return new Promise((resolve, reject) => {
19
+ const fileReader = new FileReader();
20
+ if (image)
21
+ fileReader.readAsDataURL(blob);
22
+ else if (readAsArrayBuffer)
23
+ fileReader.readAsArrayBuffer(blob);
24
+ else
25
+ fileReader.readAsText(blob);
26
+ fileReader.onload = () => {
27
+ const fileResult = {
28
+ name: blob.name,
29
+ size: blob.size,
30
+ data: fileReader.result,
31
+ };
32
+ resolve(fileResult);
33
+ };
34
+ fileReader.onerror = (error) => {
35
+ reject(error);
36
+ };
37
+ });
38
+ };
39
+ return (_jsxs("div", { className: "flex flex-col w-full gap-1 text-center", children: [label && (_jsx("label", { className: "block mb-2 text-sm font-medium text-gray-900 dark:text-white", htmlFor: `file-input-${props.id}`, children: label })), _jsx("input", { className: "file:transition-all file:delay-150 block w-full text-sm text-slate-500\n file:mr-4 file:py-2 file:px-4 file:rounded-md\n file:border-0 file:text-sm file:font-semibold\n file:bg-gray-100 file:text-blue-600\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 }), _jsx("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-300 text-start", id: `file-input-${props.id}-help`, children: helpText?.toUpperCase() })] }));
40
+ };
41
+ export default InputUpload;
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+ import { IMakeButtonProps } from '../../interfaces/make-button';
3
+ declare const MakeButton: FC<IMakeButtonProps>;
4
+ export default MakeButton;
@@ -0,0 +1,14 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useContext, useId } from 'react';
4
+ import { ComponentStateContext } from '../../context/component/component-state';
5
+ const MakeButton = ({ element, getValues }) => {
6
+ const { Button } = useContext(ComponentStateContext);
7
+ const elementId = useId();
8
+ return (_jsx(Button, { ...element, id: elementId, onClick: () => {
9
+ const formData = getValues();
10
+ if (element.onClick)
11
+ element.onClick(formData);
12
+ } }));
13
+ };
14
+ export default MakeButton;
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+ import { IMakeCustomUploadProps } from '../../interfaces/make-custom-upload';
3
+ declare const MakeCustomUpload: FC<IMakeCustomUploadProps>;
4
+ export default MakeCustomUpload;
@@ -0,0 +1,60 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useContext, useEffect, useId } from 'react';
4
+ import { Controller } from 'react-hook-form';
5
+ import { ComponentStateContext } from '../../context/component/component-state';
6
+ import useEnableIf from '../../hooks/use-enable-if';
7
+ import useRenderIf from '../../hooks/use-render-if';
8
+ const MakeCustomUpload = ({ element, control, watch, unregister, }) => {
9
+ const { CustomUpload } = useContext(ComponentStateContext);
10
+ const { name: elementName, validation: { required, message, regex, ...otherValidation }, enableIf, renderIf, ...inputProps } = element;
11
+ const { checkEnable, enable, setEnable } = useEnableIf({
12
+ elementEnableIf: enableIf,
13
+ });
14
+ const { checkRender, render, setRender } = useRenderIf({
15
+ elementRenderIf: renderIf,
16
+ });
17
+ const elementId = useId();
18
+ useEffect(() => {
19
+ const { unsubscribe } = watch((formData, { name, type }) => {
20
+ if (!name)
21
+ return;
22
+ if (enableIf) {
23
+ checkEnable(formData, { name, type }).then((enableStatus) => {
24
+ if (enableStatus === undefined || enableStatus === null)
25
+ return;
26
+ if (enable !== enableStatus)
27
+ setEnable(enableStatus);
28
+ });
29
+ }
30
+ if (renderIf) {
31
+ checkRender(formData, { name, type }).then((renderStatus) => {
32
+ if (renderStatus === undefined || renderStatus === null)
33
+ return;
34
+ if (render !== renderStatus) {
35
+ if (render && !renderStatus)
36
+ unregister(elementName);
37
+ setRender(!!renderStatus);
38
+ }
39
+ });
40
+ }
41
+ });
42
+ return () => unsubscribe();
43
+ }, [watch, render, enable]);
44
+ if (!render)
45
+ return null;
46
+ return (_jsx(Controller, { control: control, name: elementName, rules: {
47
+ required: {
48
+ value: required,
49
+ message: message ?? '',
50
+ },
51
+ pattern: regex
52
+ ? {
53
+ value: regex,
54
+ message: message ?? '',
55
+ }
56
+ : undefined,
57
+ ...otherValidation,
58
+ }, render: ({ field: { onChange, value }, fieldState: { invalid, error }, }) => (_jsx(CustomUpload, { ...inputProps, name: elementName, id: elementId, onChange: onChange, value: value ?? '', invalid: invalid, error: error, disabled: element.disabled ?? !enable })) }));
59
+ };
60
+ export default MakeCustomUpload;
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+ import { IMakeDescriptionProps } from '../../interfaces/make-description';
3
+ declare const MakeDescription: FC<IMakeDescriptionProps>;
4
+ export default MakeDescription;
@@ -0,0 +1,6 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ const MakeDescription = ({ element: { text, Icon, containerStyle, textStyle, elements }, }) => {
4
+ return (_jsxs("div", { className: "flex gap-4 w-full h-auto text-xs text-center p-2 border-1 rounded-md", style: containerStyle, children: [Icon && _jsx(Icon, {}), text && !elements && _jsx("p", { style: textStyle, children: text }), !text && elements && (_jsx("p", { style: textStyle, children: elements.map((fragment, index) => (_jsx("span", { style: fragment.style, children: fragment.text }, `desc-fragment-${index}`))) }))] }));
5
+ };
6
+ export default MakeDescription;
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+ import { IMakeInputProps } from '../../interfaces/make-input';
3
+ declare const MakeInput: FC<IMakeInputProps>;
4
+ export default MakeInput;
@@ -0,0 +1,60 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useContext, useEffect, useId } from 'react';
4
+ import { Controller } from 'react-hook-form';
5
+ import { ComponentStateContext } from '../../context/component/component-state';
6
+ import useEnableIf from '../../hooks/use-enable-if';
7
+ import useRenderIf from '../../hooks/use-render-if';
8
+ const MakeInput = ({ element, control, watch, unregister, }) => {
9
+ const { Input } = useContext(ComponentStateContext);
10
+ const { name: elementName, validation: { required, message, regex, ...otherValidation }, enableIf, renderIf, ...inputProps } = element;
11
+ const { checkEnable, enable, setEnable } = useEnableIf({
12
+ elementEnableIf: enableIf,
13
+ });
14
+ const { checkRender, render, setRender } = useRenderIf({
15
+ elementRenderIf: renderIf,
16
+ });
17
+ const elementId = useId();
18
+ useEffect(() => {
19
+ const { unsubscribe } = watch((formData, { name, type }) => {
20
+ if (!name)
21
+ return;
22
+ if (enableIf) {
23
+ checkEnable(formData, { name, type }).then((enableStatus) => {
24
+ if (enableStatus === undefined || enableStatus === null)
25
+ return;
26
+ if (enable !== enableStatus)
27
+ setEnable(enableStatus);
28
+ });
29
+ }
30
+ if (renderIf) {
31
+ checkRender(formData, { name, type }).then((renderStatus) => {
32
+ if (renderStatus === undefined || renderStatus === null)
33
+ return;
34
+ if (render !== renderStatus) {
35
+ if (render && !renderStatus)
36
+ unregister(elementName);
37
+ setRender(!!renderStatus);
38
+ }
39
+ });
40
+ }
41
+ });
42
+ return () => unsubscribe();
43
+ }, [watch, render, enable]);
44
+ if (!render)
45
+ return null;
46
+ return (_jsx(Controller, { control: control, name: elementName, rules: {
47
+ required: {
48
+ value: required,
49
+ message: message ?? '',
50
+ },
51
+ pattern: regex
52
+ ? {
53
+ value: regex,
54
+ message: message ?? '',
55
+ }
56
+ : undefined,
57
+ ...otherValidation,
58
+ }, render: ({ field: { onChange, value }, fieldState: { invalid, error }, }) => (_jsx(Input, { ...inputProps, name: elementName, id: elementId, onChange: onChange, value: value ?? '', invalid: invalid, error: error, disabled: element.disabled ?? !enable })) }));
59
+ };
60
+ export default MakeInput;
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+ import { IMakeSelectProps } from '../../interfaces/make-select';
3
+ declare const MakeSelect: FC<IMakeSelectProps>;
4
+ export default MakeSelect;
@@ -0,0 +1,78 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useContext, useEffect, useId, useState } from 'react';
4
+ import { Controller } from 'react-hook-form';
5
+ import { ComponentStateContext } from '../../context/component/component-state';
6
+ import useEnableIf from '../../hooks/use-enable-if';
7
+ import useRenderIf from '../../hooks/use-render-if';
8
+ import useLiveData from '../../hooks/use-live-data';
9
+ const MakeSelect = ({ element, control, watch, setValue, unregister, }) => {
10
+ const { Select } = useContext(ComponentStateContext);
11
+ const { name: elementName, validation: { required, message, regex, ...otherValidation }, enableIf, renderIf, liveData: elementLiveData, ...inputProps } = element;
12
+ const [liveSearching, setLiveSearching] = useState(false);
13
+ const { checkLiveData, liveData, setLiveData } = useLiveData({
14
+ elementLiveData,
15
+ });
16
+ const { checkEnable, enable, setEnable } = useEnableIf({
17
+ elementEnableIf: enableIf,
18
+ });
19
+ const { checkRender, render, setRender } = useRenderIf({
20
+ elementRenderIf: renderIf,
21
+ });
22
+ const elementId = useId();
23
+ useEffect(() => {
24
+ const { unsubscribe } = watch((formData, { name, type }) => {
25
+ if (!name)
26
+ return;
27
+ if (enableIf) {
28
+ checkEnable(formData, { name, type }).then((enableStatus) => {
29
+ if (enableStatus === undefined || enableStatus === null)
30
+ return;
31
+ if (enable !== enableStatus)
32
+ setEnable(enableStatus);
33
+ });
34
+ }
35
+ if (renderIf) {
36
+ checkRender(formData, { name, type }).then((renderStatus) => {
37
+ if (renderStatus === undefined || renderStatus === null)
38
+ return;
39
+ if (render !== renderStatus) {
40
+ if (render && !renderStatus)
41
+ unregister(elementName);
42
+ setRender(!!renderStatus);
43
+ }
44
+ });
45
+ }
46
+ if (elementLiveData) {
47
+ setLiveSearching(true);
48
+ checkLiveData(formData, { name, type })
49
+ .then((options) => {
50
+ if (options === undefined || options === null)
51
+ return;
52
+ setLiveData(options);
53
+ setValue(elementName, options);
54
+ })
55
+ .finally(() => {
56
+ setLiveSearching(false);
57
+ });
58
+ }
59
+ });
60
+ return () => unsubscribe();
61
+ }, [watch, render, enable, liveData]);
62
+ if (!render)
63
+ return null;
64
+ return (_jsx(Controller, { control: control, name: elementName, rules: {
65
+ required: {
66
+ value: required,
67
+ message: message ?? '',
68
+ },
69
+ pattern: regex
70
+ ? {
71
+ value: regex,
72
+ message: message ?? '',
73
+ }
74
+ : undefined,
75
+ ...otherValidation,
76
+ }, render: ({ field: { onChange, value }, fieldState: { invalid, error }, }) => (_jsx(Select, { ...inputProps, id: elementId, name: elementName, onChange: onChange, value: value, invalid: invalid, error: error, disabled: element.disabled ?? !enable, liveSearching: liveSearching, options: liveData || (element.options ?? []) })) }));
77
+ };
78
+ export default MakeSelect;