@mbpockets/shared-ui 0.2.0 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/EventPage/editMode/index.cjs.map +1 -1
- package/dist/EventPage/editMode/index.d.cts +1 -1
- package/dist/EventPage/editMode/index.d.ts +1 -1
- package/dist/EventPage/editMode/index.mjs.map +1 -1
- package/dist/EventPage/editMode.cjs.map +1 -1
- package/dist/EventPage/editMode.d.cts +1 -1
- package/dist/EventPage/editMode.d.ts +1 -1
- package/dist/EventPage/editMode.mjs.map +1 -1
- package/dist/EventPage/index.cjs +121 -63
- package/dist/EventPage/index.cjs.map +1 -1
- package/dist/EventPage/index.d.cts +1 -1
- package/dist/EventPage/index.d.ts +1 -1
- package/dist/EventPage/index.mjs +121 -63
- package/dist/EventPage/index.mjs.map +1 -1
- package/dist/EventPage.cjs +121 -63
- package/dist/EventPage.cjs.map +1 -1
- package/dist/EventPage.d.cts +4 -4
- package/dist/EventPage.d.ts +4 -4
- package/dist/EventPage.mjs +121 -63
- package/dist/EventPage.mjs.map +1 -1
- package/dist/PlayerPage/index.cjs +12 -8
- package/dist/PlayerPage/index.cjs.map +1 -1
- package/dist/PlayerPage/index.mjs +12 -8
- package/dist/PlayerPage/index.mjs.map +1 -1
- package/dist/PlayerPage.cjs +12 -8
- package/dist/PlayerPage.cjs.map +1 -1
- package/dist/PlayerPage.mjs +12 -8
- package/dist/PlayerPage.mjs.map +1 -1
- package/dist/ProfilePage/index.cjs +12 -8
- package/dist/ProfilePage/index.cjs.map +1 -1
- package/dist/ProfilePage/index.mjs +12 -8
- package/dist/ProfilePage/index.mjs.map +1 -1
- package/dist/ProfilePage.cjs +12 -8
- package/dist/ProfilePage.cjs.map +1 -1
- package/dist/ProfilePage.mjs +12 -8
- package/dist/ProfilePage.mjs.map +1 -1
- package/dist/SearchPage/Filters/index.cjs +38 -18
- package/dist/SearchPage/Filters/index.cjs.map +1 -1
- package/dist/SearchPage/Filters/index.d.cts +2 -1
- package/dist/SearchPage/Filters/index.d.ts +2 -1
- package/dist/SearchPage/Filters/index.mjs +34 -17
- package/dist/SearchPage/Filters/index.mjs.map +1 -1
- package/dist/SearchPage/Filters.cjs +38 -18
- package/dist/SearchPage/Filters.cjs.map +1 -1
- package/dist/SearchPage/Filters.d.cts +13 -1
- package/dist/SearchPage/Filters.d.ts +13 -1
- package/dist/SearchPage/Filters.mjs +34 -17
- package/dist/SearchPage/Filters.mjs.map +1 -1
- package/dist/SearchPage/Results/index.cjs +87 -48
- package/dist/SearchPage/Results/index.cjs.map +1 -1
- package/dist/SearchPage/Results/index.mjs +87 -48
- package/dist/SearchPage/Results/index.mjs.map +1 -1
- package/dist/SearchPage/Results.cjs +87 -48
- package/dist/SearchPage/Results.cjs.map +1 -1
- package/dist/SearchPage/Results.d.cts +10 -3
- package/dist/SearchPage/Results.d.ts +10 -3
- package/dist/SearchPage/Results.mjs +87 -48
- package/dist/SearchPage/Results.mjs.map +1 -1
- package/dist/SearchPage/index.cjs +207 -99
- package/dist/SearchPage/index.cjs.map +1 -1
- package/dist/SearchPage/index.d.cts +2 -2
- package/dist/SearchPage/index.d.ts +2 -2
- package/dist/SearchPage/index.mjs +203 -98
- package/dist/SearchPage/index.mjs.map +1 -1
- package/dist/SearchPage.cjs +207 -99
- package/dist/SearchPage.cjs.map +1 -1
- package/dist/SearchPage.d.cts +25 -3
- package/dist/SearchPage.d.ts +25 -3
- package/dist/SearchPage.mjs +203 -98
- package/dist/SearchPage.mjs.map +1 -1
- package/dist/TablePage/EditComponents/index.cjs +296 -0
- package/dist/TablePage/EditComponents/index.cjs.map +1 -0
- package/dist/TablePage/EditComponents/index.d.cts +3 -0
- package/dist/TablePage/EditComponents/index.d.ts +3 -0
- package/dist/TablePage/EditComponents/index.mjs +286 -0
- package/dist/TablePage/EditComponents/index.mjs.map +1 -0
- package/dist/TablePage/EditComponents.cjs +296 -0
- package/dist/TablePage/EditComponents.cjs.map +1 -0
- package/dist/TablePage/EditComponents.d.cts +21 -0
- package/dist/TablePage/EditComponents.d.ts +21 -0
- package/dist/TablePage/EditComponents.mjs +286 -0
- package/dist/TablePage/EditComponents.mjs.map +1 -0
- package/dist/TablePage/ModalProvider/index.cjs +59 -58
- package/dist/TablePage/ModalProvider/index.cjs.map +1 -1
- package/dist/TablePage/ModalProvider/index.d.cts +1 -1
- package/dist/TablePage/ModalProvider/index.d.ts +1 -1
- package/dist/TablePage/ModalProvider/index.mjs +50 -59
- package/dist/TablePage/ModalProvider/index.mjs.map +1 -1
- package/dist/TablePage/ModalProvider.cjs +59 -58
- package/dist/TablePage/ModalProvider.cjs.map +1 -1
- package/dist/TablePage/ModalProvider.d.cts +7 -2
- package/dist/TablePage/ModalProvider.d.ts +7 -2
- package/dist/TablePage/ModalProvider.mjs +50 -59
- package/dist/TablePage/ModalProvider.mjs.map +1 -1
- package/dist/TablePage/index.cjs +555 -331
- package/dist/TablePage/index.cjs.map +1 -1
- package/dist/TablePage/index.d.cts +3 -2
- package/dist/TablePage/index.d.ts +3 -2
- package/dist/TablePage/index.mjs +539 -320
- package/dist/TablePage/index.mjs.map +1 -1
- package/dist/TablePage/players/index.cjs +24 -4
- package/dist/TablePage/players/index.cjs.map +1 -1
- package/dist/TablePage/players/index.mjs +24 -4
- package/dist/TablePage/players/index.mjs.map +1 -1
- package/dist/TablePage/players.cjs +24 -4
- package/dist/TablePage/players.cjs.map +1 -1
- package/dist/TablePage/players.mjs +24 -4
- package/dist/TablePage/players.mjs.map +1 -1
- package/dist/TablePage.cjs +555 -331
- package/dist/TablePage.cjs.map +1 -1
- package/dist/TablePage.d.cts +4 -1
- package/dist/TablePage.d.ts +4 -1
- package/dist/TablePage.mjs +539 -320
- package/dist/TablePage.mjs.map +1 -1
- package/dist/{index-D7WHhl3Q.d.ts → index-B23RQop0.d.ts} +12 -12
- package/dist/{index-DC0kK3aC.d.cts → index-Csj8S4A4.d.cts} +12 -12
- package/dist/index.cjs +889 -424
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.mjs +870 -421
- package/dist/index.mjs.map +1 -1
- package/dist/mocks/{EventDB.cjs → EventDetails.cjs} +203 -3
- package/dist/mocks/EventDetails.cjs.map +1 -0
- package/dist/mocks/EventDetails.d.cts +6 -0
- package/dist/mocks/EventDetails.d.ts +6 -0
- package/dist/mocks/{EventDB.mjs → EventDetails.mjs} +203 -3
- package/dist/mocks/EventDetails.mjs.map +1 -0
- package/dist/mocks/Tables.cjs +1 -1
- package/dist/mocks/Tables.cjs.map +1 -1
- package/dist/mocks/Tables.mjs +1 -1
- package/dist/mocks/Tables.mjs.map +1 -1
- package/dist/mocks/Tags.cjs +200 -0
- package/dist/mocks/Tags.cjs.map +1 -1
- package/dist/mocks/Tags.mjs +200 -0
- package/dist/mocks/Tags.mjs.map +1 -1
- package/dist/mocks/index.cjs +202 -2
- package/dist/mocks/index.cjs.map +1 -1
- package/dist/mocks/index.d.cts +1 -1
- package/dist/mocks/index.d.ts +1 -1
- package/dist/mocks/index.mjs +202 -2
- package/dist/mocks/index.mjs.map +1 -1
- package/dist/mocks.cjs +202 -2
- package/dist/mocks.cjs.map +1 -1
- package/dist/mocks.d.cts +1 -1
- package/dist/mocks.d.ts +1 -1
- package/dist/mocks.mjs +202 -2
- package/dist/mocks.mjs.map +1 -1
- package/dist/shared/index.cjs +327 -64
- package/dist/shared/index.cjs.map +1 -1
- package/dist/shared/index.d.cts +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.mjs +324 -64
- package/dist/shared/index.mjs.map +1 -1
- package/dist/shared.cjs +327 -64
- package/dist/shared.cjs.map +1 -1
- package/dist/shared.d.cts +25 -2
- package/dist/shared.d.ts +25 -2
- package/dist/shared.mjs +324 -64
- package/dist/shared.mjs.map +1 -1
- package/dist/types/event.d.cts +2 -3
- package/dist/types/event.d.ts +2 -3
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/search.d.cts +7 -1
- package/dist/types/search.d.ts +7 -1
- package/dist/types/tables.d.cts +1 -0
- package/dist/types/tables.d.ts +1 -0
- package/dist/types.d.cts +2 -2
- package/dist/types.d.ts +2 -2
- package/package.json +9 -2
- package/dist/TablePage/ModalProvider/index.css +0 -49
- package/dist/TablePage/ModalProvider/index.css.map +0 -1
- package/dist/TablePage/ModalProvider.css +0 -49
- package/dist/TablePage/ModalProvider.css.map +0 -1
- package/dist/TablePage/index.css +0 -49
- package/dist/TablePage/index.css.map +0 -1
- package/dist/TablePage.css +0 -49
- package/dist/TablePage.css.map +0 -1
- package/dist/index.css +0 -49
- package/dist/index.css.map +0 -1
- package/dist/mocks/EventDB.cjs.map +0 -1
- package/dist/mocks/EventDB.d.cts +0 -6
- package/dist/mocks/EventDB.d.ts +0 -6
- package/dist/mocks/EventDB.mjs.map +0 -1
- package/dist/shared/Modal/index.cjs +0 -64
- package/dist/shared/Modal/index.cjs.map +0 -1
- package/dist/shared/Modal/index.css +0 -49
- package/dist/shared/Modal/index.css.map +0 -1
- package/dist/shared/Modal/index.d.cts +0 -2
- package/dist/shared/Modal/index.d.ts +0 -2
- package/dist/shared/Modal/index.mjs +0 -62
- package/dist/shared/Modal/index.mjs.map +0 -1
- package/dist/shared/Modal.cjs +0 -64
- package/dist/shared/Modal.cjs.map +0 -1
- package/dist/shared/Modal.css +0 -49
- package/dist/shared/Modal.css.map +0 -1
- package/dist/shared/Modal.d.cts +0 -9
- package/dist/shared/Modal.d.ts +0 -9
- package/dist/shared/Modal.mjs +0 -62
- package/dist/shared/Modal.mjs.map +0 -1
- package/dist/shared/index.css +0 -49
- package/dist/shared/index.css.map +0 -1
- package/dist/shared.css +0 -49
- package/dist/shared.css.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/TablePage/ModalProvider/ModalContext.ts","../../../src/components/
|
|
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: (
|
|
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
|
|
71
|
-
const
|
|
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
|
-
|
|
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/
|
|
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
|
|
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: (
|
|
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
|
|
69
|
-
const
|
|
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
|
-
|
|
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/
|
|
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;"]}
|