@mbpockets/shared-ui 0.2.0 → 0.2.6

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 (205) hide show
  1. package/dist/EventPage/editMode/index.cjs.map +1 -1
  2. package/dist/EventPage/editMode/index.d.cts +1 -1
  3. package/dist/EventPage/editMode/index.d.ts +1 -1
  4. package/dist/EventPage/editMode/index.mjs.map +1 -1
  5. package/dist/EventPage/editMode.cjs.map +1 -1
  6. package/dist/EventPage/editMode.d.cts +1 -1
  7. package/dist/EventPage/editMode.d.ts +1 -1
  8. package/dist/EventPage/editMode.mjs.map +1 -1
  9. package/dist/EventPage/index.cjs +202 -96
  10. package/dist/EventPage/index.cjs.map +1 -1
  11. package/dist/EventPage/index.d.cts +1 -1
  12. package/dist/EventPage/index.d.ts +1 -1
  13. package/dist/EventPage/index.mjs +202 -96
  14. package/dist/EventPage/index.mjs.map +1 -1
  15. package/dist/EventPage.cjs +202 -96
  16. package/dist/EventPage.cjs.map +1 -1
  17. package/dist/EventPage.d.cts +6 -4
  18. package/dist/EventPage.d.ts +6 -4
  19. package/dist/EventPage.mjs +202 -96
  20. package/dist/EventPage.mjs.map +1 -1
  21. package/dist/PlayerPage/index.cjs +12 -8
  22. package/dist/PlayerPage/index.cjs.map +1 -1
  23. package/dist/PlayerPage/index.mjs +12 -8
  24. package/dist/PlayerPage/index.mjs.map +1 -1
  25. package/dist/PlayerPage.cjs +12 -8
  26. package/dist/PlayerPage.cjs.map +1 -1
  27. package/dist/PlayerPage.mjs +12 -8
  28. package/dist/PlayerPage.mjs.map +1 -1
  29. package/dist/ProfilePage/index.cjs +12 -8
  30. package/dist/ProfilePage/index.cjs.map +1 -1
  31. package/dist/ProfilePage/index.mjs +12 -8
  32. package/dist/ProfilePage/index.mjs.map +1 -1
  33. package/dist/ProfilePage.cjs +12 -8
  34. package/dist/ProfilePage.cjs.map +1 -1
  35. package/dist/ProfilePage.mjs +12 -8
  36. package/dist/ProfilePage.mjs.map +1 -1
  37. package/dist/SearchPage/Filters/index.cjs +38 -18
  38. package/dist/SearchPage/Filters/index.cjs.map +1 -1
  39. package/dist/SearchPage/Filters/index.d.cts +2 -1
  40. package/dist/SearchPage/Filters/index.d.ts +2 -1
  41. package/dist/SearchPage/Filters/index.mjs +34 -17
  42. package/dist/SearchPage/Filters/index.mjs.map +1 -1
  43. package/dist/SearchPage/Filters.cjs +38 -18
  44. package/dist/SearchPage/Filters.cjs.map +1 -1
  45. package/dist/SearchPage/Filters.d.cts +13 -1
  46. package/dist/SearchPage/Filters.d.ts +13 -1
  47. package/dist/SearchPage/Filters.mjs +34 -17
  48. package/dist/SearchPage/Filters.mjs.map +1 -1
  49. package/dist/SearchPage/Results/index.cjs +137 -73
  50. package/dist/SearchPage/Results/index.cjs.map +1 -1
  51. package/dist/SearchPage/Results/index.mjs +137 -73
  52. package/dist/SearchPage/Results/index.mjs.map +1 -1
  53. package/dist/SearchPage/Results.cjs +137 -73
  54. package/dist/SearchPage/Results.cjs.map +1 -1
  55. package/dist/SearchPage/Results.d.cts +14 -3
  56. package/dist/SearchPage/Results.d.ts +14 -3
  57. package/dist/SearchPage/Results.mjs +137 -73
  58. package/dist/SearchPage/Results.mjs.map +1 -1
  59. package/dist/SearchPage/index.cjs +265 -130
  60. package/dist/SearchPage/index.cjs.map +1 -1
  61. package/dist/SearchPage/index.d.cts +2 -2
  62. package/dist/SearchPage/index.d.ts +2 -2
  63. package/dist/SearchPage/index.mjs +261 -129
  64. package/dist/SearchPage/index.mjs.map +1 -1
  65. package/dist/SearchPage.cjs +265 -130
  66. package/dist/SearchPage.cjs.map +1 -1
  67. package/dist/SearchPage.d.cts +25 -3
  68. package/dist/SearchPage.d.ts +25 -3
  69. package/dist/SearchPage.mjs +261 -129
  70. package/dist/SearchPage.mjs.map +1 -1
  71. package/dist/TablePage/EditComponents/index.cjs +296 -0
  72. package/dist/TablePage/EditComponents/index.cjs.map +1 -0
  73. package/dist/TablePage/EditComponents/index.d.cts +3 -0
  74. package/dist/TablePage/EditComponents/index.d.ts +3 -0
  75. package/dist/TablePage/EditComponents/index.mjs +286 -0
  76. package/dist/TablePage/EditComponents/index.mjs.map +1 -0
  77. package/dist/TablePage/EditComponents.cjs +296 -0
  78. package/dist/TablePage/EditComponents.cjs.map +1 -0
  79. package/dist/TablePage/EditComponents.d.cts +21 -0
  80. package/dist/TablePage/EditComponents.d.ts +21 -0
  81. package/dist/TablePage/EditComponents.mjs +286 -0
  82. package/dist/TablePage/EditComponents.mjs.map +1 -0
  83. package/dist/TablePage/ModalProvider/index.cjs +59 -58
  84. package/dist/TablePage/ModalProvider/index.cjs.map +1 -1
  85. package/dist/TablePage/ModalProvider/index.d.cts +1 -1
  86. package/dist/TablePage/ModalProvider/index.d.ts +1 -1
  87. package/dist/TablePage/ModalProvider/index.mjs +50 -59
  88. package/dist/TablePage/ModalProvider/index.mjs.map +1 -1
  89. package/dist/TablePage/ModalProvider.cjs +59 -58
  90. package/dist/TablePage/ModalProvider.cjs.map +1 -1
  91. package/dist/TablePage/ModalProvider.d.cts +7 -2
  92. package/dist/TablePage/ModalProvider.d.ts +7 -2
  93. package/dist/TablePage/ModalProvider.mjs +50 -59
  94. package/dist/TablePage/ModalProvider.mjs.map +1 -1
  95. package/dist/TablePage/index.cjs +555 -331
  96. package/dist/TablePage/index.cjs.map +1 -1
  97. package/dist/TablePage/index.d.cts +3 -2
  98. package/dist/TablePage/index.d.ts +3 -2
  99. package/dist/TablePage/index.mjs +539 -320
  100. package/dist/TablePage/index.mjs.map +1 -1
  101. package/dist/TablePage/players/index.cjs +24 -4
  102. package/dist/TablePage/players/index.cjs.map +1 -1
  103. package/dist/TablePage/players/index.mjs +24 -4
  104. package/dist/TablePage/players/index.mjs.map +1 -1
  105. package/dist/TablePage/players.cjs +24 -4
  106. package/dist/TablePage/players.cjs.map +1 -1
  107. package/dist/TablePage/players.mjs +24 -4
  108. package/dist/TablePage/players.mjs.map +1 -1
  109. package/dist/TablePage.cjs +555 -331
  110. package/dist/TablePage.cjs.map +1 -1
  111. package/dist/TablePage.d.cts +4 -1
  112. package/dist/TablePage.d.ts +4 -1
  113. package/dist/TablePage.mjs +539 -320
  114. package/dist/TablePage.mjs.map +1 -1
  115. package/dist/{index-D7WHhl3Q.d.ts → index-B23RQop0.d.ts} +12 -12
  116. package/dist/{index-DC0kK3aC.d.cts → index-Csj8S4A4.d.cts} +12 -12
  117. package/dist/index.cjs +972 -460
  118. package/dist/index.cjs.map +1 -1
  119. package/dist/index.d.cts +5 -4
  120. package/dist/index.d.ts +5 -4
  121. package/dist/index.mjs +953 -457
  122. package/dist/index.mjs.map +1 -1
  123. package/dist/mocks/{EventDB.cjs → EventDetails.cjs} +203 -3
  124. package/dist/mocks/EventDetails.cjs.map +1 -0
  125. package/dist/mocks/EventDetails.d.cts +6 -0
  126. package/dist/mocks/EventDetails.d.ts +6 -0
  127. package/dist/mocks/{EventDB.mjs → EventDetails.mjs} +203 -3
  128. package/dist/mocks/EventDetails.mjs.map +1 -0
  129. package/dist/mocks/Tables.cjs +1 -1
  130. package/dist/mocks/Tables.cjs.map +1 -1
  131. package/dist/mocks/Tables.mjs +1 -1
  132. package/dist/mocks/Tables.mjs.map +1 -1
  133. package/dist/mocks/Tags.cjs +200 -0
  134. package/dist/mocks/Tags.cjs.map +1 -1
  135. package/dist/mocks/Tags.mjs +200 -0
  136. package/dist/mocks/Tags.mjs.map +1 -1
  137. package/dist/mocks/index.cjs +202 -2
  138. package/dist/mocks/index.cjs.map +1 -1
  139. package/dist/mocks/index.d.cts +1 -1
  140. package/dist/mocks/index.d.ts +1 -1
  141. package/dist/mocks/index.mjs +202 -2
  142. package/dist/mocks/index.mjs.map +1 -1
  143. package/dist/mocks.cjs +202 -2
  144. package/dist/mocks.cjs.map +1 -1
  145. package/dist/mocks.d.cts +1 -1
  146. package/dist/mocks.d.ts +1 -1
  147. package/dist/mocks.mjs +202 -2
  148. package/dist/mocks.mjs.map +1 -1
  149. package/dist/shared/index.cjs +327 -64
  150. package/dist/shared/index.cjs.map +1 -1
  151. package/dist/shared/index.d.cts +1 -1
  152. package/dist/shared/index.d.ts +1 -1
  153. package/dist/shared/index.mjs +324 -64
  154. package/dist/shared/index.mjs.map +1 -1
  155. package/dist/shared.cjs +327 -64
  156. package/dist/shared.cjs.map +1 -1
  157. package/dist/shared.d.cts +25 -2
  158. package/dist/shared.d.ts +25 -2
  159. package/dist/shared.mjs +324 -64
  160. package/dist/shared.mjs.map +1 -1
  161. package/dist/types/event.d.cts +2 -3
  162. package/dist/types/event.d.ts +2 -3
  163. package/dist/types/index.d.cts +2 -2
  164. package/dist/types/index.d.ts +2 -2
  165. package/dist/types/search.d.cts +7 -1
  166. package/dist/types/search.d.ts +7 -1
  167. package/dist/types/tables.d.cts +1 -0
  168. package/dist/types/tables.d.ts +1 -0
  169. package/dist/types.d.cts +2 -2
  170. package/dist/types.d.ts +2 -2
  171. package/package.json +9 -2
  172. package/dist/TablePage/ModalProvider/index.css +0 -49
  173. package/dist/TablePage/ModalProvider/index.css.map +0 -1
  174. package/dist/TablePage/ModalProvider.css +0 -49
  175. package/dist/TablePage/ModalProvider.css.map +0 -1
  176. package/dist/TablePage/index.css +0 -49
  177. package/dist/TablePage/index.css.map +0 -1
  178. package/dist/TablePage.css +0 -49
  179. package/dist/TablePage.css.map +0 -1
  180. package/dist/index.css +0 -49
  181. package/dist/index.css.map +0 -1
  182. package/dist/mocks/EventDB.cjs.map +0 -1
  183. package/dist/mocks/EventDB.d.cts +0 -6
  184. package/dist/mocks/EventDB.d.ts +0 -6
  185. package/dist/mocks/EventDB.mjs.map +0 -1
  186. package/dist/shared/Modal/index.cjs +0 -64
  187. package/dist/shared/Modal/index.cjs.map +0 -1
  188. package/dist/shared/Modal/index.css +0 -49
  189. package/dist/shared/Modal/index.css.map +0 -1
  190. package/dist/shared/Modal/index.d.cts +0 -2
  191. package/dist/shared/Modal/index.d.ts +0 -2
  192. package/dist/shared/Modal/index.mjs +0 -62
  193. package/dist/shared/Modal/index.mjs.map +0 -1
  194. package/dist/shared/Modal.cjs +0 -64
  195. package/dist/shared/Modal.cjs.map +0 -1
  196. package/dist/shared/Modal.css +0 -49
  197. package/dist/shared/Modal.css.map +0 -1
  198. package/dist/shared/Modal.d.cts +0 -9
  199. package/dist/shared/Modal.d.ts +0 -9
  200. package/dist/shared/Modal.mjs +0 -62
  201. package/dist/shared/Modal.mjs.map +0 -1
  202. package/dist/shared/index.css +0 -49
  203. package/dist/shared/index.css.map +0 -1
  204. package/dist/shared.css +0 -49
  205. package/dist/shared.css.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/TablePage/ModalProvider/ModalContext.ts","../../../src/components/shared/Modal/index.tsx","../../../src/components/TablePage/ModalProvider/ModalProvider.tsx"],"names":["_a","jsxs","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use client\"\r\nimport { createContext, ReactNode, useContext } from \"react\";\r\n\r\ntype ModalContextType = {\r\n showModal: (content: ReactNode) => void;\r\n hideModal: () => void;\r\n}\r\n\r\nexport const ModalContext = createContext<ModalContextType>({\r\n showModal: (content: ReactNode) => {},\r\n hideModal: () => {},\r\n});\r\n\r\nexport const useModal = () => useContext(ModalContext);","\"use client\"\r\nimport React, { useEffect, useRef } from \"react\";\r\nimport \"./style.css\";\r\n\r\ninterface IModalProps {\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Modal: React.FC<IModalProps> = ({ onClose, children }) => {\r\n const modalRef = useRef<HTMLDivElement>(null);\r\n const previouslyFocusedElement = useRef<HTMLElement | null>(null);\r\n\r\n useEffect(() => {\r\n if (children) {\r\n previouslyFocusedElement.current = document.activeElement as HTMLElement;\r\n modalRef.current?.focus();\r\n }\r\n return () => {\r\n previouslyFocusedElement.current?.focus();\r\n }\r\n }, [children]);\r\n\r\n const handleOnClose = () => {\r\n onClose();\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key !== 'Tab') return;\r\n\r\n const focusableElements = modalRef.current?.querySelectorAll<HTMLElement>(\r\n 'button, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n\r\n if (!focusableElements || focusableElements.length === 0) return;\r\n\r\n const first = focusableElements[0];\r\n const last = focusableElements[focusableElements.length - 1];\r\n\r\n if (e.shiftKey) {\r\n // shift + tab\r\n if (document.activeElement === first) {\r\n e.preventDefault();\r\n last.focus();\r\n }\r\n } else {\r\n // tab\r\n if (document.activeElement === last) {\r\n e.preventDefault();\r\n first.focus();\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className=\"modal-overlay\"\r\n onKeyDown={handleKeyDown}\r\n ref={modalRef}\r\n role=\"dialog\"\r\n tabIndex={-1}\r\n >\r\n <div className=\"modal-container\">\r\n <div className=\"modal-control-strip\">\r\n <button onClick={handleOnClose}>X</button>\r\n </div>\r\n <div className=\"modal-content\">\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Modal;\r\n","\"use client\";\n\nimport React, { ReactNode, useState } from \"react\";\r\nimport { ModalContext } from './ModalContext';\r\nimport Modal from \"@/components/shared/Modal\";\r\n\r\ntype ModalProviderProps = {\r\n children: ReactNode;\r\n}\r\n\r\nexport const ModalProvider = ({ children }: ModalProviderProps) => {\r\n const [modalContent, setModalContent] = useState<null | ReactNode>(null);\r\n\r\n const showModal = (content: ReactNode) => setModalContent(content);\r\n const hideModal = () => setModalContent(null);\r\n\r\n return (\r\n <ModalContext.Provider value={{ showModal, hideModal }}>\r\n {children}\r\n {modalContent && (\r\n <Modal onClose={hideModal}>\r\n {modalContent}\r\n </Modal>\r\n )}\r\n </ModalContext.Provider>\r\n );\r\n}\r\n\r\nexport default ModalProvider;"]}
1
+ {"version":3,"sources":["../../../src/components/TablePage/ModalProvider/ModalContext.ts","../../../src/components/TablePage/ModalProvider/ModalProvider.tsx"],"names":["title","_a"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use client\"\r\nimport { createContext, ReactNode, useContext } from \"react\";\r\n\r\nexport type ModalOptions = {\r\n acceptText?: string;\r\n onAccept?: () => void;\r\n onCancel?: () => void;\r\n}\r\n\r\ntype ModalContextType = {\r\n showModal: (content: ReactNode, title: string, options?: ModalOptions) => void;\r\n hideModal: () => void;\r\n}\r\n\r\nexport const ModalContext = createContext<ModalContextType>({\r\n showModal: () => {},\r\n hideModal: () => {},\r\n});\r\n\r\nexport const useModal = () => useContext(ModalContext);","\"use client\";\r\n\r\nimport React, { ReactNode, useState } from \"react\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport Button from \"@mui/material/Button\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport { ModalContext, ModalOptions } from '@/components';\r\nimport {Box} from \"@mui/material\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\n\r\ntype ModalProviderProps = {\r\n children: ReactNode;\r\n}\r\n\r\nexport const ModalProvider = ({ children }: ModalProviderProps) => {\r\n const [modalContent, setModalContent] = useState<null | ReactNode>(null);\r\n const [displayModal, setDisplayModal] = useState(false);\r\n const [title, setTitle] = useState(\"\");\r\n const [options, setOptions] = useState<ModalOptions>({});\r\n\r\n const showModal = (content: ReactNode, title: string, opts?: ModalOptions) => {\r\n setModalContent(content);\r\n setTitle(title);\r\n setOptions(opts ?? {});\r\n setDisplayModal(true);\r\n }\r\n const hideModal = () => {\r\n setDisplayModal(false);\r\n };\r\n\r\n return (\r\n <ModalContext.Provider value={{ showModal, hideModal }}>\r\n {children}\r\n <Dialog open={displayModal} onClose={hideModal} sx={{height: \"85%\"}}>\r\n <Box>\r\n <DialogTitle sx={{marginRight: '20px', minWidth: '400px'}}>{title}</DialogTitle>\r\n <IconButton\r\n aria-label=\"close\"\r\n onClick={hideModal}\r\n sx={{ position: 'absolute', right: 8, top: 8 }}\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n </Box>\r\n <DialogContent sx={{paddingTop: 0}}>\r\n {modalContent}\r\n </DialogContent>\r\n {(options.acceptText || options.onAccept) && (\r\n <DialogActions>\r\n <Button variant=\"contained\" onClick={() => { hideModal(); options.onAccept?.(); }}>\r\n {options.acceptText ?? \"OK\"}\r\n </Button>\r\n <Button onClick={() => { hideModal(); options.onCancel?.(); }}>Cancel</Button>\r\n </DialogActions>\r\n )}\r\n </Dialog>\r\n </ModalContext.Provider>\r\n );\r\n}\r\n\r\nexport default ModalProvider;"]}
@@ -2,76 +2,77 @@
2
2
  'use strict';
3
3
 
4
4
  var react = require('react');
5
+ var Dialog = require('@mui/material/Dialog');
6
+ var DialogContent = require('@mui/material/DialogContent');
7
+ var DialogActions = require('@mui/material/DialogActions');
8
+ var Button = require('@mui/material/Button');
9
+ var IconButton = require('@mui/material/IconButton');
10
+ var CloseIcon = require('@mui/icons-material/Close');
11
+ var material = require('@mui/material');
12
+ var DialogTitle = require('@mui/material/DialogTitle');
5
13
  var jsxRuntime = require('react/jsx-runtime');
6
14
 
15
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
+
17
+ var Dialog__default = /*#__PURE__*/_interopDefault(Dialog);
18
+ var DialogContent__default = /*#__PURE__*/_interopDefault(DialogContent);
19
+ var DialogActions__default = /*#__PURE__*/_interopDefault(DialogActions);
20
+ var Button__default = /*#__PURE__*/_interopDefault(Button);
21
+ var IconButton__default = /*#__PURE__*/_interopDefault(IconButton);
22
+ var CloseIcon__default = /*#__PURE__*/_interopDefault(CloseIcon);
23
+ var DialogTitle__default = /*#__PURE__*/_interopDefault(DialogTitle);
24
+
7
25
  var ModalContext = react.createContext({
8
- showModal: (content) => {
26
+ showModal: () => {
9
27
  },
10
28
  hideModal: () => {
11
29
  }
12
30
  });
13
31
  var useModal = () => react.useContext(ModalContext);
14
- var Modal = ({ onClose, children }) => {
15
- const modalRef = react.useRef(null);
16
- const previouslyFocusedElement = react.useRef(null);
17
- react.useEffect(() => {
18
- var _a;
19
- if (children) {
20
- previouslyFocusedElement.current = document.activeElement;
21
- (_a = modalRef.current) == null ? void 0 : _a.focus();
22
- }
23
- return () => {
24
- var _a2;
25
- (_a2 = previouslyFocusedElement.current) == null ? void 0 : _a2.focus();
26
- };
27
- }, [children]);
28
- const handleOnClose = () => {
29
- onClose();
30
- };
31
- const handleKeyDown = (e) => {
32
- var _a;
33
- if (e.key !== "Tab") return;
34
- const focusableElements = (_a = modalRef.current) == null ? void 0 : _a.querySelectorAll(
35
- 'button, [tabindex]:not([tabindex="-1"])'
36
- );
37
- if (!focusableElements || focusableElements.length === 0) return;
38
- const first = focusableElements[0];
39
- const last = focusableElements[focusableElements.length - 1];
40
- if (e.shiftKey) {
41
- if (document.activeElement === first) {
42
- e.preventDefault();
43
- last.focus();
44
- }
45
- } else {
46
- if (document.activeElement === last) {
47
- e.preventDefault();
48
- first.focus();
49
- }
50
- }
51
- };
52
- return /* @__PURE__ */ jsxRuntime.jsx(
53
- "div",
54
- {
55
- className: "modal-overlay",
56
- onKeyDown: handleKeyDown,
57
- ref: modalRef,
58
- role: "dialog",
59
- tabIndex: -1,
60
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "modal-container", children: [
61
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "modal-control-strip", children: /* @__PURE__ */ jsxRuntime.jsx("button", { onClick: handleOnClose, children: "X" }) }),
62
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "modal-content", children })
63
- ] })
64
- }
65
- );
66
- };
67
- var Modal_default = Modal;
68
32
  var ModalProvider = ({ children }) => {
33
+ var _a;
69
34
  const [modalContent, setModalContent] = react.useState(null);
70
- const showModal = (content) => setModalContent(content);
71
- const hideModal = () => setModalContent(null);
35
+ const [displayModal, setDisplayModal] = react.useState(false);
36
+ const [title, setTitle] = react.useState("");
37
+ const [options, setOptions] = react.useState({});
38
+ const showModal = (content, title2, opts) => {
39
+ setModalContent(content);
40
+ setTitle(title2);
41
+ setOptions(opts != null ? opts : {});
42
+ setDisplayModal(true);
43
+ };
44
+ const hideModal = () => {
45
+ setDisplayModal(false);
46
+ };
72
47
  return /* @__PURE__ */ jsxRuntime.jsxs(ModalContext.Provider, { value: { showModal, hideModal }, children: [
73
48
  children,
74
- modalContent && /* @__PURE__ */ jsxRuntime.jsx(Modal_default, { onClose: hideModal, children: modalContent })
49
+ /* @__PURE__ */ jsxRuntime.jsxs(Dialog__default.default, { open: displayModal, onClose: hideModal, sx: { height: "85%" }, children: [
50
+ /* @__PURE__ */ jsxRuntime.jsxs(material.Box, { children: [
51
+ /* @__PURE__ */ jsxRuntime.jsx(DialogTitle__default.default, { sx: { marginRight: "20px", minWidth: "400px" }, children: title }),
52
+ /* @__PURE__ */ jsxRuntime.jsx(
53
+ IconButton__default.default,
54
+ {
55
+ "aria-label": "close",
56
+ onClick: hideModal,
57
+ sx: { position: "absolute", right: 8, top: 8 },
58
+ children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon__default.default, {})
59
+ }
60
+ )
61
+ ] }),
62
+ /* @__PURE__ */ jsxRuntime.jsx(DialogContent__default.default, { sx: { paddingTop: 0 }, children: modalContent }),
63
+ (options.acceptText || options.onAccept) && /* @__PURE__ */ jsxRuntime.jsxs(DialogActions__default.default, { children: [
64
+ /* @__PURE__ */ jsxRuntime.jsx(Button__default.default, { variant: "contained", onClick: () => {
65
+ var _a2;
66
+ hideModal();
67
+ (_a2 = options.onAccept) == null ? void 0 : _a2.call(options);
68
+ }, children: (_a = options.acceptText) != null ? _a : "OK" }),
69
+ /* @__PURE__ */ jsxRuntime.jsx(Button__default.default, { onClick: () => {
70
+ var _a2;
71
+ hideModal();
72
+ (_a2 = options.onCancel) == null ? void 0 : _a2.call(options);
73
+ }, children: "Cancel" })
74
+ ] })
75
+ ] })
75
76
  ] });
76
77
  };
77
78
  var ModalProvider_default = ModalProvider;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/TablePage/ModalProvider/ModalContext.ts","../../src/components/shared/Modal/index.tsx","../../src/components/TablePage/ModalProvider/ModalProvider.tsx"],"names":["createContext","useContext","useRef","useEffect","_a","jsx","jsxs","useState"],"mappings":"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","file":"ModalProvider.cjs","sourcesContent":["\"use client\"\r\nimport { createContext, ReactNode, useContext } from \"react\";\r\n\r\ntype ModalContextType = {\r\n showModal: (content: ReactNode) => void;\r\n hideModal: () => void;\r\n}\r\n\r\nexport const ModalContext = createContext<ModalContextType>({\r\n showModal: (content: ReactNode) => {},\r\n hideModal: () => {},\r\n});\r\n\r\nexport const useModal = () => useContext(ModalContext);","\"use client\"\r\nimport React, { useEffect, useRef } from \"react\";\r\nimport \"./style.css\";\r\n\r\ninterface IModalProps {\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Modal: React.FC<IModalProps> = ({ onClose, children }) => {\r\n const modalRef = useRef<HTMLDivElement>(null);\r\n const previouslyFocusedElement = useRef<HTMLElement | null>(null);\r\n\r\n useEffect(() => {\r\n if (children) {\r\n previouslyFocusedElement.current = document.activeElement as HTMLElement;\r\n modalRef.current?.focus();\r\n }\r\n return () => {\r\n previouslyFocusedElement.current?.focus();\r\n }\r\n }, [children]);\r\n\r\n const handleOnClose = () => {\r\n onClose();\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key !== 'Tab') return;\r\n\r\n const focusableElements = modalRef.current?.querySelectorAll<HTMLElement>(\r\n 'button, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n\r\n if (!focusableElements || focusableElements.length === 0) return;\r\n\r\n const first = focusableElements[0];\r\n const last = focusableElements[focusableElements.length - 1];\r\n\r\n if (e.shiftKey) {\r\n // shift + tab\r\n if (document.activeElement === first) {\r\n e.preventDefault();\r\n last.focus();\r\n }\r\n } else {\r\n // tab\r\n if (document.activeElement === last) {\r\n e.preventDefault();\r\n first.focus();\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className=\"modal-overlay\"\r\n onKeyDown={handleKeyDown}\r\n ref={modalRef}\r\n role=\"dialog\"\r\n tabIndex={-1}\r\n >\r\n <div className=\"modal-container\">\r\n <div className=\"modal-control-strip\">\r\n <button onClick={handleOnClose}>X</button>\r\n </div>\r\n <div className=\"modal-content\">\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Modal;\r\n","\"use client\";\n\nimport React, { ReactNode, useState } from \"react\";\r\nimport { ModalContext } from './ModalContext';\r\nimport Modal from \"@/components/shared/Modal\";\r\n\r\ntype ModalProviderProps = {\r\n children: ReactNode;\r\n}\r\n\r\nexport const ModalProvider = ({ children }: ModalProviderProps) => {\r\n const [modalContent, setModalContent] = useState<null | ReactNode>(null);\r\n\r\n const showModal = (content: ReactNode) => setModalContent(content);\r\n const hideModal = () => setModalContent(null);\r\n\r\n return (\r\n <ModalContext.Provider value={{ showModal, hideModal }}>\r\n {children}\r\n {modalContent && (\r\n <Modal onClose={hideModal}>\r\n {modalContent}\r\n </Modal>\r\n )}\r\n </ModalContext.Provider>\r\n );\r\n}\r\n\r\nexport default ModalProvider;"]}
1
+ {"version":3,"sources":["../../src/components/TablePage/ModalProvider/ModalContext.ts","../../src/components/TablePage/ModalProvider/ModalProvider.tsx"],"names":["createContext","useContext","useState","title","jsxs","Dialog","Box","jsx","DialogTitle","IconButton","CloseIcon","DialogContent","DialogActions","Button","_a"],"mappings":"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","file":"ModalProvider.cjs","sourcesContent":["\"use client\"\r\nimport { createContext, ReactNode, useContext } from \"react\";\r\n\r\nexport type ModalOptions = {\r\n acceptText?: string;\r\n onAccept?: () => void;\r\n onCancel?: () => void;\r\n}\r\n\r\ntype ModalContextType = {\r\n showModal: (content: ReactNode, title: string, options?: ModalOptions) => void;\r\n hideModal: () => void;\r\n}\r\n\r\nexport const ModalContext = createContext<ModalContextType>({\r\n showModal: () => {},\r\n hideModal: () => {},\r\n});\r\n\r\nexport const useModal = () => useContext(ModalContext);","\"use client\";\r\n\r\nimport React, { ReactNode, useState } from \"react\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport Button from \"@mui/material/Button\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport { ModalContext, ModalOptions } from '@/components';\r\nimport {Box} from \"@mui/material\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\n\r\ntype ModalProviderProps = {\r\n children: ReactNode;\r\n}\r\n\r\nexport const ModalProvider = ({ children }: ModalProviderProps) => {\r\n const [modalContent, setModalContent] = useState<null | ReactNode>(null);\r\n const [displayModal, setDisplayModal] = useState(false);\r\n const [title, setTitle] = useState(\"\");\r\n const [options, setOptions] = useState<ModalOptions>({});\r\n\r\n const showModal = (content: ReactNode, title: string, opts?: ModalOptions) => {\r\n setModalContent(content);\r\n setTitle(title);\r\n setOptions(opts ?? {});\r\n setDisplayModal(true);\r\n }\r\n const hideModal = () => {\r\n setDisplayModal(false);\r\n };\r\n\r\n return (\r\n <ModalContext.Provider value={{ showModal, hideModal }}>\r\n {children}\r\n <Dialog open={displayModal} onClose={hideModal} sx={{height: \"85%\"}}>\r\n <Box>\r\n <DialogTitle sx={{marginRight: '20px', minWidth: '400px'}}>{title}</DialogTitle>\r\n <IconButton\r\n aria-label=\"close\"\r\n onClick={hideModal}\r\n sx={{ position: 'absolute', right: 8, top: 8 }}\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n </Box>\r\n <DialogContent sx={{paddingTop: 0}}>\r\n {modalContent}\r\n </DialogContent>\r\n {(options.acceptText || options.onAccept) && (\r\n <DialogActions>\r\n <Button variant=\"contained\" onClick={() => { hideModal(); options.onAccept?.(); }}>\r\n {options.acceptText ?? \"OK\"}\r\n </Button>\r\n <Button onClick={() => { hideModal(); options.onCancel?.(); }}>Cancel</Button>\r\n </DialogActions>\r\n )}\r\n </Dialog>\r\n </ModalContext.Provider>\r\n );\r\n}\r\n\r\nexport default ModalProvider;"]}
@@ -2,8 +2,13 @@ import * as React from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
 
5
+ type ModalOptions = {
6
+ acceptText?: string;
7
+ onAccept?: () => void;
8
+ onCancel?: () => void;
9
+ };
5
10
  type ModalContextType = {
6
- showModal: (content: ReactNode) => void;
11
+ showModal: (content: ReactNode, title: string, options?: ModalOptions) => void;
7
12
  hideModal: () => void;
8
13
  };
9
14
  declare const ModalContext: React.Context<ModalContextType>;
@@ -14,4 +19,4 @@ type ModalProviderProps = {
14
19
  };
15
20
  declare const ModalProvider: ({ children }: ModalProviderProps) => react_jsx_runtime.JSX.Element;
16
21
 
17
- export { ModalContext, ModalProvider, useModal };
22
+ export { ModalContext, type ModalOptions, ModalProvider, useModal };
@@ -2,8 +2,13 @@ import * as React from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
 
5
+ type ModalOptions = {
6
+ acceptText?: string;
7
+ onAccept?: () => void;
8
+ onCancel?: () => void;
9
+ };
5
10
  type ModalContextType = {
6
- showModal: (content: ReactNode) => void;
11
+ showModal: (content: ReactNode, title: string, options?: ModalOptions) => void;
7
12
  hideModal: () => void;
8
13
  };
9
14
  declare const ModalContext: React.Context<ModalContextType>;
@@ -14,4 +19,4 @@ type ModalProviderProps = {
14
19
  };
15
20
  declare const ModalProvider: ({ children }: ModalProviderProps) => react_jsx_runtime.JSX.Element;
16
21
 
17
- export { ModalContext, ModalProvider, useModal };
22
+ export { ModalContext, type ModalOptions, ModalProvider, useModal };
@@ -1,75 +1,66 @@
1
1
  "use client";
2
- import { createContext, useContext, useState, useRef, useEffect } from 'react';
2
+ import { createContext, useContext, useState } from 'react';
3
+ import Dialog from '@mui/material/Dialog';
4
+ import DialogContent from '@mui/material/DialogContent';
5
+ import DialogActions from '@mui/material/DialogActions';
6
+ import Button from '@mui/material/Button';
7
+ import IconButton from '@mui/material/IconButton';
8
+ import CloseIcon from '@mui/icons-material/Close';
9
+ import { Box } from '@mui/material';
10
+ import DialogTitle from '@mui/material/DialogTitle';
3
11
  import { jsxs, jsx } from 'react/jsx-runtime';
4
12
 
5
13
  var ModalContext = createContext({
6
- showModal: (content) => {
14
+ showModal: () => {
7
15
  },
8
16
  hideModal: () => {
9
17
  }
10
18
  });
11
19
  var useModal = () => useContext(ModalContext);
12
- var Modal = ({ onClose, children }) => {
13
- const modalRef = useRef(null);
14
- const previouslyFocusedElement = useRef(null);
15
- useEffect(() => {
16
- var _a;
17
- if (children) {
18
- previouslyFocusedElement.current = document.activeElement;
19
- (_a = modalRef.current) == null ? void 0 : _a.focus();
20
- }
21
- return () => {
22
- var _a2;
23
- (_a2 = previouslyFocusedElement.current) == null ? void 0 : _a2.focus();
24
- };
25
- }, [children]);
26
- const handleOnClose = () => {
27
- onClose();
28
- };
29
- const handleKeyDown = (e) => {
30
- var _a;
31
- if (e.key !== "Tab") return;
32
- const focusableElements = (_a = modalRef.current) == null ? void 0 : _a.querySelectorAll(
33
- 'button, [tabindex]:not([tabindex="-1"])'
34
- );
35
- if (!focusableElements || focusableElements.length === 0) return;
36
- const first = focusableElements[0];
37
- const last = focusableElements[focusableElements.length - 1];
38
- if (e.shiftKey) {
39
- if (document.activeElement === first) {
40
- e.preventDefault();
41
- last.focus();
42
- }
43
- } else {
44
- if (document.activeElement === last) {
45
- e.preventDefault();
46
- first.focus();
47
- }
48
- }
49
- };
50
- return /* @__PURE__ */ jsx(
51
- "div",
52
- {
53
- className: "modal-overlay",
54
- onKeyDown: handleKeyDown,
55
- ref: modalRef,
56
- role: "dialog",
57
- tabIndex: -1,
58
- children: /* @__PURE__ */ jsxs("div", { className: "modal-container", children: [
59
- /* @__PURE__ */ jsx("div", { className: "modal-control-strip", children: /* @__PURE__ */ jsx("button", { onClick: handleOnClose, children: "X" }) }),
60
- /* @__PURE__ */ jsx("div", { className: "modal-content", children })
61
- ] })
62
- }
63
- );
64
- };
65
- var Modal_default = Modal;
66
20
  var ModalProvider = ({ children }) => {
21
+ var _a;
67
22
  const [modalContent, setModalContent] = useState(null);
68
- const showModal = (content) => setModalContent(content);
69
- const hideModal = () => setModalContent(null);
23
+ const [displayModal, setDisplayModal] = useState(false);
24
+ const [title, setTitle] = useState("");
25
+ const [options, setOptions] = useState({});
26
+ const showModal = (content, title2, opts) => {
27
+ setModalContent(content);
28
+ setTitle(title2);
29
+ setOptions(opts != null ? opts : {});
30
+ setDisplayModal(true);
31
+ };
32
+ const hideModal = () => {
33
+ setDisplayModal(false);
34
+ };
70
35
  return /* @__PURE__ */ jsxs(ModalContext.Provider, { value: { showModal, hideModal }, children: [
71
36
  children,
72
- modalContent && /* @__PURE__ */ jsx(Modal_default, { onClose: hideModal, children: modalContent })
37
+ /* @__PURE__ */ jsxs(Dialog, { open: displayModal, onClose: hideModal, sx: { height: "85%" }, children: [
38
+ /* @__PURE__ */ jsxs(Box, { children: [
39
+ /* @__PURE__ */ jsx(DialogTitle, { sx: { marginRight: "20px", minWidth: "400px" }, children: title }),
40
+ /* @__PURE__ */ jsx(
41
+ IconButton,
42
+ {
43
+ "aria-label": "close",
44
+ onClick: hideModal,
45
+ sx: { position: "absolute", right: 8, top: 8 },
46
+ children: /* @__PURE__ */ jsx(CloseIcon, {})
47
+ }
48
+ )
49
+ ] }),
50
+ /* @__PURE__ */ jsx(DialogContent, { sx: { paddingTop: 0 }, children: modalContent }),
51
+ (options.acceptText || options.onAccept) && /* @__PURE__ */ jsxs(DialogActions, { children: [
52
+ /* @__PURE__ */ jsx(Button, { variant: "contained", onClick: () => {
53
+ var _a2;
54
+ hideModal();
55
+ (_a2 = options.onAccept) == null ? void 0 : _a2.call(options);
56
+ }, children: (_a = options.acceptText) != null ? _a : "OK" }),
57
+ /* @__PURE__ */ jsx(Button, { onClick: () => {
58
+ var _a2;
59
+ hideModal();
60
+ (_a2 = options.onCancel) == null ? void 0 : _a2.call(options);
61
+ }, children: "Cancel" })
62
+ ] })
63
+ ] })
73
64
  ] });
74
65
  };
75
66
  var ModalProvider_default = ModalProvider;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/TablePage/ModalProvider/ModalContext.ts","../../src/components/shared/Modal/index.tsx","../../src/components/TablePage/ModalProvider/ModalProvider.tsx"],"names":["_a","jsxs","jsx"],"mappings":"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","file":"ModalProvider.mjs","sourcesContent":["\"use client\"\r\nimport { createContext, ReactNode, useContext } from \"react\";\r\n\r\ntype ModalContextType = {\r\n showModal: (content: ReactNode) => void;\r\n hideModal: () => void;\r\n}\r\n\r\nexport const ModalContext = createContext<ModalContextType>({\r\n showModal: (content: ReactNode) => {},\r\n hideModal: () => {},\r\n});\r\n\r\nexport const useModal = () => useContext(ModalContext);","\"use client\"\r\nimport React, { useEffect, useRef } from \"react\";\r\nimport \"./style.css\";\r\n\r\ninterface IModalProps {\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Modal: React.FC<IModalProps> = ({ onClose, children }) => {\r\n const modalRef = useRef<HTMLDivElement>(null);\r\n const previouslyFocusedElement = useRef<HTMLElement | null>(null);\r\n\r\n useEffect(() => {\r\n if (children) {\r\n previouslyFocusedElement.current = document.activeElement as HTMLElement;\r\n modalRef.current?.focus();\r\n }\r\n return () => {\r\n previouslyFocusedElement.current?.focus();\r\n }\r\n }, [children]);\r\n\r\n const handleOnClose = () => {\r\n onClose();\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key !== 'Tab') return;\r\n\r\n const focusableElements = modalRef.current?.querySelectorAll<HTMLElement>(\r\n 'button, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n\r\n if (!focusableElements || focusableElements.length === 0) return;\r\n\r\n const first = focusableElements[0];\r\n const last = focusableElements[focusableElements.length - 1];\r\n\r\n if (e.shiftKey) {\r\n // shift + tab\r\n if (document.activeElement === first) {\r\n e.preventDefault();\r\n last.focus();\r\n }\r\n } else {\r\n // tab\r\n if (document.activeElement === last) {\r\n e.preventDefault();\r\n first.focus();\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className=\"modal-overlay\"\r\n onKeyDown={handleKeyDown}\r\n ref={modalRef}\r\n role=\"dialog\"\r\n tabIndex={-1}\r\n >\r\n <div className=\"modal-container\">\r\n <div className=\"modal-control-strip\">\r\n <button onClick={handleOnClose}>X</button>\r\n </div>\r\n <div className=\"modal-content\">\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Modal;\r\n","\"use client\";\n\nimport React, { ReactNode, useState } from \"react\";\r\nimport { ModalContext } from './ModalContext';\r\nimport Modal from \"@/components/shared/Modal\";\r\n\r\ntype ModalProviderProps = {\r\n children: ReactNode;\r\n}\r\n\r\nexport const ModalProvider = ({ children }: ModalProviderProps) => {\r\n const [modalContent, setModalContent] = useState<null | ReactNode>(null);\r\n\r\n const showModal = (content: ReactNode) => setModalContent(content);\r\n const hideModal = () => setModalContent(null);\r\n\r\n return (\r\n <ModalContext.Provider value={{ showModal, hideModal }}>\r\n {children}\r\n {modalContent && (\r\n <Modal onClose={hideModal}>\r\n {modalContent}\r\n </Modal>\r\n )}\r\n </ModalContext.Provider>\r\n );\r\n}\r\n\r\nexport default ModalProvider;"]}
1
+ {"version":3,"sources":["../../src/components/TablePage/ModalProvider/ModalContext.ts","../../src/components/TablePage/ModalProvider/ModalProvider.tsx"],"names":["title","_a"],"mappings":"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","file":"ModalProvider.mjs","sourcesContent":["\"use client\"\r\nimport { createContext, ReactNode, useContext } from \"react\";\r\n\r\nexport type ModalOptions = {\r\n acceptText?: string;\r\n onAccept?: () => void;\r\n onCancel?: () => void;\r\n}\r\n\r\ntype ModalContextType = {\r\n showModal: (content: ReactNode, title: string, options?: ModalOptions) => void;\r\n hideModal: () => void;\r\n}\r\n\r\nexport const ModalContext = createContext<ModalContextType>({\r\n showModal: () => {},\r\n hideModal: () => {},\r\n});\r\n\r\nexport const useModal = () => useContext(ModalContext);","\"use client\";\r\n\r\nimport React, { ReactNode, useState } from \"react\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport Button from \"@mui/material/Button\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport { ModalContext, ModalOptions } from '@/components';\r\nimport {Box} from \"@mui/material\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\n\r\ntype ModalProviderProps = {\r\n children: ReactNode;\r\n}\r\n\r\nexport const ModalProvider = ({ children }: ModalProviderProps) => {\r\n const [modalContent, setModalContent] = useState<null | ReactNode>(null);\r\n const [displayModal, setDisplayModal] = useState(false);\r\n const [title, setTitle] = useState(\"\");\r\n const [options, setOptions] = useState<ModalOptions>({});\r\n\r\n const showModal = (content: ReactNode, title: string, opts?: ModalOptions) => {\r\n setModalContent(content);\r\n setTitle(title);\r\n setOptions(opts ?? {});\r\n setDisplayModal(true);\r\n }\r\n const hideModal = () => {\r\n setDisplayModal(false);\r\n };\r\n\r\n return (\r\n <ModalContext.Provider value={{ showModal, hideModal }}>\r\n {children}\r\n <Dialog open={displayModal} onClose={hideModal} sx={{height: \"85%\"}}>\r\n <Box>\r\n <DialogTitle sx={{marginRight: '20px', minWidth: '400px'}}>{title}</DialogTitle>\r\n <IconButton\r\n aria-label=\"close\"\r\n onClick={hideModal}\r\n sx={{ position: 'absolute', right: 8, top: 8 }}\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n </Box>\r\n <DialogContent sx={{paddingTop: 0}}>\r\n {modalContent}\r\n </DialogContent>\r\n {(options.acceptText || options.onAccept) && (\r\n <DialogActions>\r\n <Button variant=\"contained\" onClick={() => { hideModal(); options.onAccept?.(); }}>\r\n {options.acceptText ?? \"OK\"}\r\n </Button>\r\n <Button onClick={() => { hideModal(); options.onCancel?.(); }}>Cancel</Button>\r\n </DialogActions>\r\n )}\r\n </Dialog>\r\n </ModalContext.Provider>\r\n );\r\n}\r\n\r\nexport default ModalProvider;"]}