@apia/components 2.0.2 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/IconsList/KeyHandler.js +1 -1
- package/dist/components/IconsList/KeyHandler.js.map +1 -1
- package/dist/components/Toolbar/ToolbarIconButton.d.ts +1 -1
- package/dist/components/Toolbar/ToolbarIconButton.js +8 -6
- package/dist/components/Toolbar/ToolbarIconButton.js.map +1 -1
- package/dist/components/Toolbar/index.d.ts +2 -4
- package/dist/components/Toolbar/index.js +18 -15
- package/dist/components/Toolbar/index.js.map +1 -1
- package/dist/components/Toolbar/types.d.ts +2 -1
- package/dist/components/modals/Modal.d.ts +10 -2
- package/dist/components/modals/Modal.js +1 -1
- package/dist/components/modals/Modal.js.map +1 -1
- package/dist/components/modals/Overlay.js +3 -2
- package/dist/components/modals/Overlay.js.map +1 -1
- package/dist/components/modals/StaticModal.js +12 -40
- package/dist/components/modals/StaticModal.js.map +1 -1
- package/dist/components/modals/WindowModal.js +210 -4
- package/dist/components/modals/WindowModal.js.map +1 -1
- package/dist/components/modals/hooks/useEscapeKey.js +32 -0
- package/dist/components/modals/hooks/useEscapeKey.js.map +1 -0
- package/dist/components/modals/hooks/useInitialFocus.js +37 -0
- package/dist/components/modals/hooks/useInitialFocus.js.map +1 -0
- package/dist/components/modals/hooks/useStyleState.js +44 -0
- package/dist/components/modals/hooks/useStyleState.js.map +1 -0
- package/dist/components/modals/layout/DialogHeader.js +2 -2
- package/dist/components/modals/layout/DialogHeader.js.map +1 -1
- package/dist/objects/ApiaUtil/index.d.ts +1 -1
- package/dist/objects/ApiaUtil/index.js +9 -22
- package/dist/objects/ApiaUtil/index.js.map +1 -1
- package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.d.ts +1 -0
- package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js +8 -6
- package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js.map +1 -1
- package/dist/objects/ApiaUtil/modals/ApiaUtilModals.js.map +1 -1
- package/dist/objects/ApiaUtil/modals/OpenModal.d.ts +1 -1
- package/dist/objects/ApiaUtil/modals/OpenModal.js.map +1 -1
- package/dist/tabs/tabsController.js +2 -2
- package/dist/tabs/tabsController.js.map +1 -1
- package/package.json +8 -8
|
@@ -1,8 +1,214 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx, jsxs } from '@apia/theme/jsx-runtime';
|
|
2
|
+
import { forwardRef, useMemo, useRef, useState, useEffect, useCallback, Fragment } from 'react';
|
|
3
|
+
import { CSSTransition } from 'react-transition-group';
|
|
4
|
+
import { Box, getVariant } from '@apia/theme';
|
|
5
|
+
import DialogHeader from './layout/DialogHeader.js';
|
|
6
|
+
import { ModalContext } from './ModalContext.js';
|
|
7
|
+
import { useEscapeKey } from './hooks/useEscapeKey.js';
|
|
8
|
+
import { useInitialFocus } from './hooks/useInitialFocus.js';
|
|
9
|
+
import { useCombinedRefs } from '@apia/util';
|
|
10
|
+
import { useStyleState } from './hooks/useStyleState.js';
|
|
11
|
+
import { uniqueId } from '@apia/notifications';
|
|
2
12
|
|
|
3
|
-
const WindowModal = forwardRef(
|
|
4
|
-
|
|
5
|
-
|
|
13
|
+
const WindowModal = forwardRef(
|
|
14
|
+
({
|
|
15
|
+
animationDuration = 150,
|
|
16
|
+
children = null,
|
|
17
|
+
className,
|
|
18
|
+
hideCloseButton,
|
|
19
|
+
id,
|
|
20
|
+
initialFocusConfiguration,
|
|
21
|
+
initialFocusGetter,
|
|
22
|
+
initialFocusRef,
|
|
23
|
+
isOpen = false,
|
|
24
|
+
maxWidth,
|
|
25
|
+
NavBar,
|
|
26
|
+
noFocus,
|
|
27
|
+
noHeader = false,
|
|
28
|
+
onClose = () => {
|
|
29
|
+
},
|
|
30
|
+
onDragStart = () => {
|
|
31
|
+
},
|
|
32
|
+
onExited = () => {
|
|
33
|
+
},
|
|
34
|
+
Portal,
|
|
35
|
+
shouldCloseOnEsc = true,
|
|
36
|
+
size = "md",
|
|
37
|
+
title = "",
|
|
38
|
+
variant
|
|
39
|
+
}, ref) => {
|
|
40
|
+
const innerId = useMemo(() => {
|
|
41
|
+
return `Modal${uniqueId()}`;
|
|
42
|
+
}, []);
|
|
43
|
+
const nodeRef = useRef(null);
|
|
44
|
+
const lastTitle = useRef(title);
|
|
45
|
+
const [innerTitle, setInnerTitle] = useState(title);
|
|
46
|
+
if (lastTitle.current !== title && innerTitle !== title) {
|
|
47
|
+
setInnerTitle(title);
|
|
48
|
+
}
|
|
49
|
+
const [isOpenInner, setIsOpen] = useState(isOpen);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
setIsOpen(isOpen);
|
|
52
|
+
}, [isOpen]);
|
|
53
|
+
const closeHandler = useCallback(() => {
|
|
54
|
+
setIsOpen(false);
|
|
55
|
+
onClose();
|
|
56
|
+
}, [onClose]);
|
|
57
|
+
useEscapeKey({ closeHandler, id: innerId, isOpenInner, shouldCloseOnEsc });
|
|
58
|
+
useInitialFocus({
|
|
59
|
+
isOpenInner,
|
|
60
|
+
initialFocusConfiguration,
|
|
61
|
+
initialFocusGetter,
|
|
62
|
+
initialFocusRef,
|
|
63
|
+
noFocus,
|
|
64
|
+
parentElement: nodeRef.current
|
|
65
|
+
});
|
|
66
|
+
const Wrapper = useMemo(() => {
|
|
67
|
+
return Portal ?? Fragment;
|
|
68
|
+
}, []);
|
|
69
|
+
const { ref: stylesRef, setState: setStyle } = useStyleState((el) => {
|
|
70
|
+
const box = el.getBoundingClientRect();
|
|
71
|
+
return {
|
|
72
|
+
left: `${window.innerWidth - box.width / 2}`,
|
|
73
|
+
top: `${window.innerHeight - box.height / 2}`,
|
|
74
|
+
position: "fixed",
|
|
75
|
+
zIndex: "1201"
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
const unSubscribe = useRef(() => {
|
|
79
|
+
});
|
|
80
|
+
const initialPosition = useRef(null);
|
|
81
|
+
const initialMousePosition = useRef(null);
|
|
82
|
+
const assignRefs = useCombinedRefs(
|
|
83
|
+
nodeRef,
|
|
84
|
+
ref,
|
|
85
|
+
stylesRef
|
|
86
|
+
);
|
|
87
|
+
return /* @__PURE__ */ jsx(Wrapper, { children: /* @__PURE__ */ jsx(
|
|
88
|
+
ModalContext.Provider,
|
|
89
|
+
{
|
|
90
|
+
value: useMemo(() => {
|
|
91
|
+
return {
|
|
92
|
+
changeTitle: (newTitle) => {
|
|
93
|
+
setInnerTitle(newTitle);
|
|
94
|
+
},
|
|
95
|
+
close: () => {
|
|
96
|
+
closeHandler();
|
|
97
|
+
},
|
|
98
|
+
descriptionId: `${innerId}_Description`
|
|
99
|
+
};
|
|
100
|
+
}, [closeHandler, innerId]),
|
|
101
|
+
children: /* @__PURE__ */ jsx(
|
|
102
|
+
CSSTransition,
|
|
103
|
+
{
|
|
104
|
+
in: isOpen,
|
|
105
|
+
timeout: animationDuration,
|
|
106
|
+
classNames: "modal",
|
|
107
|
+
appear: true,
|
|
108
|
+
unmountOnExit: true,
|
|
109
|
+
nodeRef,
|
|
110
|
+
onExited,
|
|
111
|
+
children: /* @__PURE__ */ jsx(
|
|
112
|
+
Box,
|
|
113
|
+
{
|
|
114
|
+
ref: assignRefs,
|
|
115
|
+
className: `modal__variantWrapper ${className ?? ""}`,
|
|
116
|
+
id: `modal__${innerId}`,
|
|
117
|
+
...variant ? getVariant(variant) : {},
|
|
118
|
+
children: /* @__PURE__ */ jsxs(
|
|
119
|
+
Box,
|
|
120
|
+
{
|
|
121
|
+
id,
|
|
122
|
+
role: "dialog",
|
|
123
|
+
"aria-modal": "true",
|
|
124
|
+
"aria-label": title,
|
|
125
|
+
"aria-describedby": `${innerId}_Description`,
|
|
126
|
+
"aria-hidden": "false",
|
|
127
|
+
className: "modal__main",
|
|
128
|
+
"data-scroll-lock-scrollable": true,
|
|
129
|
+
sx: useMemo(() => {
|
|
130
|
+
return {
|
|
131
|
+
variant: `layout.common.modals.${size}`,
|
|
132
|
+
...maxWidth !== void 0 ? { maxWidth } : {}
|
|
133
|
+
};
|
|
134
|
+
}, [maxWidth, size]),
|
|
135
|
+
"data-variant": `layout.common.modals.${size}`,
|
|
136
|
+
ref: useCallback(
|
|
137
|
+
(el) => {
|
|
138
|
+
unSubscribe.current();
|
|
139
|
+
unSubscribe.current = () => {
|
|
140
|
+
};
|
|
141
|
+
if (el) {
|
|
142
|
+
const handleMouseDown = (ev) => {
|
|
143
|
+
const res = onDragStart?.(ev);
|
|
144
|
+
if (res === false)
|
|
145
|
+
return;
|
|
146
|
+
const rect = el.getBoundingClientRect();
|
|
147
|
+
initialPosition.current = rect;
|
|
148
|
+
initialMousePosition.current = {
|
|
149
|
+
x: ev.clientX,
|
|
150
|
+
y: ev.clientY
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
const handleMouseMove = (ev) => {
|
|
154
|
+
if (initialPosition.current) {
|
|
155
|
+
const diffX = ev.clientX - initialMousePosition.current.x;
|
|
156
|
+
const diffY = ev.clientY - initialMousePosition.current.y;
|
|
157
|
+
setStyle({
|
|
158
|
+
left: `${initialPosition.current.left + diffX}px`,
|
|
159
|
+
top: `${initialPosition.current.top + diffY}px`
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
const handleMouseUp = () => {
|
|
164
|
+
initialPosition.current = null;
|
|
165
|
+
};
|
|
166
|
+
el.addEventListener("mousedown", handleMouseDown);
|
|
167
|
+
document.addEventListener("mousemove", handleMouseMove);
|
|
168
|
+
document.addEventListener("mouseup", handleMouseUp);
|
|
169
|
+
unSubscribe.current = () => {
|
|
170
|
+
el.removeEventListener("mousedown", handleMouseDown);
|
|
171
|
+
document.removeEventListener(
|
|
172
|
+
"mousemove",
|
|
173
|
+
handleMouseMove
|
|
174
|
+
);
|
|
175
|
+
document.removeEventListener("mouseup", handleMouseUp);
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
[onDragStart, setStyle]
|
|
180
|
+
),
|
|
181
|
+
children: [
|
|
182
|
+
!noHeader && /* @__PURE__ */ jsx(
|
|
183
|
+
DialogHeader,
|
|
184
|
+
{
|
|
185
|
+
className: "modal__header",
|
|
186
|
+
NavBar,
|
|
187
|
+
title: innerTitle,
|
|
188
|
+
close: closeHandler,
|
|
189
|
+
hideCloseButton,
|
|
190
|
+
id: `${innerId}_Header`
|
|
191
|
+
}
|
|
192
|
+
),
|
|
193
|
+
/* @__PURE__ */ jsx(
|
|
194
|
+
Box,
|
|
195
|
+
{
|
|
196
|
+
className: "modal__content",
|
|
197
|
+
id: typeof children === "string" ? `${innerId}_Description` : void 0,
|
|
198
|
+
children
|
|
199
|
+
}
|
|
200
|
+
)
|
|
201
|
+
]
|
|
202
|
+
}
|
|
203
|
+
)
|
|
204
|
+
}
|
|
205
|
+
)
|
|
206
|
+
}
|
|
207
|
+
)
|
|
208
|
+
}
|
|
209
|
+
) });
|
|
210
|
+
}
|
|
211
|
+
);
|
|
6
212
|
|
|
7
213
|
export { WindowModal };
|
|
8
214
|
//# sourceMappingURL=WindowModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindowModal.js","sources":["../../../src/components/modals/WindowModal.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { TModal } from './Modal';\n\nexport const WindowModal = forwardRef<HTMLDivElement, TModal>((props, ref) => {\n props;\n ref;\n\n return null;\n});\n"],"names":[],"mappings":";;AAGO,MAAM,WAAc,GAAA,UAAA,CAAmC,CAAC,KAAA,EAAO,GAAQ,KAAA;AAI5E,EAAO,OAAA,IAAA,CAAA;AACT,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"WindowModal.js","sources":["../../../src/components/modals/WindowModal.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n Fragment,\n} from 'react';\nimport { TModal } from './Modal';\nimport { CSSTransition } from 'react-transition-group';\nimport { Box, getVariant } from '@apia/theme';\nimport DialogHeader from './layout/DialogHeader';\nimport { ModalContext } from './ModalContext';\nimport { useEscapeKey } from './hooks/useEscapeKey';\nimport { useInitialFocus } from './hooks/useInitialFocus';\nimport { useCombinedRefs } from '@apia/util';\nimport { useStyleState } from './hooks/useStyleState';\nimport { uniqueId } from '@apia/notifications';\n\nexport const WindowModal = forwardRef<HTMLDivElement, TModal>(\n (\n {\n animationDuration = 150,\n children = null,\n className,\n hideCloseButton,\n id,\n initialFocusConfiguration,\n initialFocusGetter,\n initialFocusRef,\n isOpen = false,\n maxWidth,\n NavBar,\n noFocus,\n noHeader = false,\n onClose = () => {},\n onDragStart = () => {},\n onExited = () => {},\n Portal,\n shouldCloseOnEsc = true,\n size = 'md',\n title = '',\n variant,\n },\n ref,\n ) => {\n const innerId = useMemo(() => {\n return `Modal${uniqueId()}`;\n }, []);\n const nodeRef = useRef<HTMLElement | null>(null);\n\n const lastTitle = useRef(title);\n const [innerTitle, setInnerTitle] = useState(title);\n if (lastTitle.current !== title && innerTitle !== title) {\n setInnerTitle(title);\n }\n const [isOpenInner, setIsOpen] = useState(isOpen);\n useEffect(() => {\n setIsOpen(isOpen);\n }, [isOpen]);\n\n const closeHandler = useCallback(() => {\n setIsOpen(false);\n onClose();\n }, [onClose]);\n\n useEscapeKey({ closeHandler, id: innerId, isOpenInner, shouldCloseOnEsc });\n useInitialFocus({\n isOpenInner,\n initialFocusConfiguration,\n initialFocusGetter,\n initialFocusRef,\n noFocus,\n parentElement: nodeRef.current,\n });\n\n const Wrapper = useMemo(() => {\n return Portal ?? Fragment;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const { ref: stylesRef, setState: setStyle } = useStyleState((el) => {\n const box = el.getBoundingClientRect();\n return {\n left: `${window.innerWidth - box.width / 2}`,\n top: `${window.innerHeight - box.height / 2}`,\n position: 'fixed',\n zIndex: '1201',\n };\n });\n\n const unSubscribe = useRef(() => {});\n const initialPosition = useRef<null | DOMRect>(null);\n const initialMousePosition = useRef<null | { x: number; y: number }>(null);\n const assignRefs = useCombinedRefs(\n nodeRef as unknown as React.ForwardedRef<unknown>,\n ref as unknown as React.Ref<unknown>,\n stylesRef as unknown as React.Ref<unknown>,\n );\n\n return (\n <Wrapper>\n <ModalContext.Provider\n value={useMemo(() => {\n return {\n changeTitle: (newTitle) => {\n setInnerTitle(newTitle);\n },\n close: () => {\n closeHandler();\n },\n descriptionId: `${innerId}_Description`,\n };\n }, [closeHandler, innerId])}\n >\n <CSSTransition\n in={isOpen}\n timeout={animationDuration}\n classNames=\"modal\"\n appear\n unmountOnExit\n nodeRef={nodeRef}\n onExited={onExited}\n >\n <Box\n ref={assignRefs}\n className={`modal__variantWrapper ${className ?? ''}`}\n id={`modal__${innerId}`}\n {...(variant ? getVariant(variant) : {})}\n >\n <Box\n id={id}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n aria-describedby={`${innerId}_Description`}\n aria-hidden=\"false\"\n className=\"modal__main\"\n // allows scrolling within element, despite body lock\n data-scroll-lock-scrollable\n sx={useMemo(() => {\n return {\n variant: `layout.common.modals.${size}`,\n ...(maxWidth !== undefined ? { maxWidth } : {}),\n };\n }, [maxWidth, size])}\n data-variant={`layout.common.modals.${size}`}\n ref={useCallback(\n (el: null | HTMLElement) => {\n unSubscribe.current();\n unSubscribe.current = () => {};\n\n if (el) {\n const handleMouseDown = (ev: MouseEvent) => {\n const res = onDragStart?.(ev);\n if (res === false) return;\n\n const rect = el.getBoundingClientRect();\n initialPosition.current = rect;\n initialMousePosition.current = {\n x: ev.clientX,\n y: ev.clientY,\n };\n };\n const handleMouseMove = (ev: MouseEvent) => {\n if (initialPosition.current) {\n const diffX =\n ev.clientX - initialMousePosition.current!.x;\n const diffY =\n ev.clientY - initialMousePosition.current!.y;\n\n setStyle({\n left: `${initialPosition.current.left + diffX}px`,\n top: `${initialPosition.current.top + diffY}px`,\n });\n }\n };\n\n const handleMouseUp = () => {\n initialPosition.current = null;\n };\n\n el.addEventListener('mousedown', handleMouseDown);\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n\n unSubscribe.current = () => {\n el.removeEventListener('mousedown', handleMouseDown);\n document.removeEventListener(\n 'mousemove',\n handleMouseMove,\n );\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }\n },\n [onDragStart, setStyle],\n )}\n >\n {!noHeader && (\n <DialogHeader\n className=\"modal__header\"\n NavBar={NavBar}\n title={innerTitle}\n close={closeHandler}\n hideCloseButton={hideCloseButton}\n id={`${innerId}_Header`}\n />\n )}\n <Box\n className=\"modal__content\"\n id={\n typeof children === 'string'\n ? `${innerId}_Description`\n : undefined\n }\n >\n {children}\n </Box>\n </Box>\n </Box>\n </CSSTransition>\n </ModalContext.Provider>\n </Wrapper>\n );\n },\n);\n"],"names":[],"mappings":";;;;;;;;;;;;AAoBO,MAAM,WAAc,GAAA,UAAA;AAAA,EACzB,CACE;AAAA,IACE,iBAAoB,GAAA,GAAA;AAAA,IACpB,QAAW,GAAA,IAAA;AAAA,IACX,SAAA;AAAA,IACA,eAAA;AAAA,IACA,EAAA;AAAA,IACA,yBAAA;AAAA,IACA,kBAAA;AAAA,IACA,eAAA;AAAA,IACA,MAAS,GAAA,KAAA;AAAA,IACT,QAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAW,GAAA,KAAA;AAAA,IACX,UAAU,MAAM;AAAA,KAAC;AAAA,IACjB,cAAc,MAAM;AAAA,KAAC;AAAA,IACrB,WAAW,MAAM;AAAA,KAAC;AAAA,IAClB,MAAA;AAAA,IACA,gBAAmB,GAAA,IAAA;AAAA,IACnB,IAAO,GAAA,IAAA;AAAA,IACP,KAAQ,GAAA,EAAA;AAAA,IACR,OAAA;AAAA,KAEF,GACG,KAAA;AACH,IAAM,MAAA,OAAA,GAAU,QAAQ,MAAM;AAC5B,MAAO,OAAA,CAAA,KAAA,EAAQ,UAAU,CAAA,CAAA,CAAA;AAAA,KAC3B,EAAG,EAAE,CAAA,CAAA;AACL,IAAM,MAAA,OAAA,GAAU,OAA2B,IAAI,CAAA,CAAA;AAE/C,IAAM,MAAA,SAAA,GAAY,OAAO,KAAK,CAAA,CAAA;AAC9B,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAClD,IAAA,IAAI,SAAU,CAAA,OAAA,KAAY,KAAS,IAAA,UAAA,KAAe,KAAO,EAAA;AACvD,MAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAAA,KACrB;AACA,IAAA,MAAM,CAAC,WAAA,EAAa,SAAS,CAAA,GAAI,SAAS,MAAM,CAAA,CAAA;AAChD,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,SAAA,CAAU,MAAM,CAAA,CAAA;AAAA,KAClB,EAAG,CAAC,MAAM,CAAC,CAAA,CAAA;AAEX,IAAM,MAAA,YAAA,GAAe,YAAY,MAAM;AACrC,MAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AACf,MAAQ,OAAA,EAAA,CAAA;AAAA,KACV,EAAG,CAAC,OAAO,CAAC,CAAA,CAAA;AAEZ,IAAA,YAAA,CAAa,EAAE,YAAc,EAAA,EAAA,EAAI,OAAS,EAAA,WAAA,EAAa,kBAAkB,CAAA,CAAA;AACzE,IAAgB,eAAA,CAAA;AAAA,MACd,WAAA;AAAA,MACA,yBAAA;AAAA,MACA,kBAAA;AAAA,MACA,eAAA;AAAA,MACA,OAAA;AAAA,MACA,eAAe,OAAQ,CAAA,OAAA;AAAA,KACxB,CAAA,CAAA;AAED,IAAM,MAAA,OAAA,GAAU,QAAQ,MAAM;AAC5B,MAAA,OAAO,MAAU,IAAA,QAAA,CAAA;AAAA,KAEnB,EAAG,EAAE,CAAA,CAAA;AAEL,IAAM,MAAA,EAAE,KAAK,SAAW,EAAA,QAAA,EAAU,UAAa,GAAA,aAAA,CAAc,CAAC,EAAO,KAAA;AACnE,MAAM,MAAA,GAAA,GAAM,GAAG,qBAAsB,EAAA,CAAA;AACrC,MAAO,OAAA;AAAA,QACL,MAAM,CAAG,EAAA,MAAA,CAAO,UAAa,GAAA,GAAA,CAAI,QAAQ,CAAC,CAAA,CAAA;AAAA,QAC1C,KAAK,CAAG,EAAA,MAAA,CAAO,WAAc,GAAA,GAAA,CAAI,SAAS,CAAC,CAAA,CAAA;AAAA,QAC3C,QAAU,EAAA,OAAA;AAAA,QACV,MAAQ,EAAA,MAAA;AAAA,OACV,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAM,MAAA,WAAA,GAAc,OAAO,MAAM;AAAA,KAAE,CAAA,CAAA;AACnC,IAAM,MAAA,eAAA,GAAkB,OAAuB,IAAI,CAAA,CAAA;AACnD,IAAM,MAAA,oBAAA,GAAuB,OAAwC,IAAI,CAAA,CAAA;AACzE,IAAA,MAAM,UAAa,GAAA,eAAA;AAAA,MACjB,OAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAA;AAAA,KACF,CAAA;AAEA,IAAA,2BACG,OACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,YAAa,CAAA,QAAA;AAAA,MAAb;AAAA,QACC,KAAA,EAAO,QAAQ,MAAM;AACnB,UAAO,OAAA;AAAA,YACL,WAAA,EAAa,CAAC,QAAa,KAAA;AACzB,cAAA,aAAA,CAAc,QAAQ,CAAA,CAAA;AAAA,aACxB;AAAA,YACA,OAAO,MAAM;AACX,cAAa,YAAA,EAAA,CAAA;AAAA,aACf;AAAA,YACA,aAAA,EAAe,GAAG,OAAO,CAAA,YAAA,CAAA;AAAA,WAC3B,CAAA;AAAA,SACC,EAAA,CAAC,YAAc,EAAA,OAAO,CAAC,CAAA;AAAA,QAE1B,QAAA,kBAAA,GAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,EAAI,EAAA,MAAA;AAAA,YACJ,OAAS,EAAA,iBAAA;AAAA,YACT,UAAW,EAAA,OAAA;AAAA,YACX,MAAM,EAAA,IAAA;AAAA,YACN,aAAa,EAAA,IAAA;AAAA,YACb,OAAA;AAAA,YACA,QAAA;AAAA,YAEA,QAAA,kBAAA,GAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,GAAK,EAAA,UAAA;AAAA,gBACL,SAAA,EAAW,CAAyB,sBAAA,EAAA,SAAA,IAAa,EAAE,CAAA,CAAA;AAAA,gBACnD,EAAA,EAAI,UAAU,OAAO,CAAA,CAAA;AAAA,gBACpB,GAAI,OAAA,GAAU,UAAW,CAAA,OAAO,IAAI,EAAC;AAAA,gBAEtC,QAAA,kBAAA,IAAA;AAAA,kBAAC,GAAA;AAAA,kBAAA;AAAA,oBACC,EAAA;AAAA,oBACA,IAAK,EAAA,QAAA;AAAA,oBACL,YAAW,EAAA,MAAA;AAAA,oBACX,YAAY,EAAA,KAAA;AAAA,oBACZ,kBAAA,EAAkB,GAAG,OAAO,CAAA,YAAA,CAAA;AAAA,oBAC5B,aAAY,EAAA,OAAA;AAAA,oBACZ,SAAU,EAAA,aAAA;AAAA,oBAEV,6BAA2B,EAAA,IAAA;AAAA,oBAC3B,EAAA,EAAI,QAAQ,MAAM;AAChB,sBAAO,OAAA;AAAA,wBACL,OAAA,EAAS,wBAAwB,IAAI,CAAA,CAAA;AAAA,wBACrC,GAAI,QAAa,KAAA,KAAA,CAAA,GAAY,EAAE,QAAA,KAAa,EAAC;AAAA,uBAC/C,CAAA;AAAA,qBACC,EAAA,CAAC,QAAU,EAAA,IAAI,CAAC,CAAA;AAAA,oBACnB,cAAA,EAAc,wBAAwB,IAAI,CAAA,CAAA;AAAA,oBAC1C,GAAK,EAAA,WAAA;AAAA,sBACH,CAAC,EAA2B,KAAA;AAC1B,wBAAA,WAAA,CAAY,OAAQ,EAAA,CAAA;AACpB,wBAAA,WAAA,CAAY,UAAU,MAAM;AAAA,yBAAC,CAAA;AAE7B,wBAAA,IAAI,EAAI,EAAA;AACN,0BAAM,MAAA,eAAA,GAAkB,CAAC,EAAmB,KAAA;AAC1C,4BAAM,MAAA,GAAA,GAAM,cAAc,EAAE,CAAA,CAAA;AAC5B,4BAAA,IAAI,GAAQ,KAAA,KAAA;AAAO,8BAAA,OAAA;AAEnB,4BAAM,MAAA,IAAA,GAAO,GAAG,qBAAsB,EAAA,CAAA;AACtC,4BAAA,eAAA,CAAgB,OAAU,GAAA,IAAA,CAAA;AAC1B,4BAAA,oBAAA,CAAqB,OAAU,GAAA;AAAA,8BAC7B,GAAG,EAAG,CAAA,OAAA;AAAA,8BACN,GAAG,EAAG,CAAA,OAAA;AAAA,6BACR,CAAA;AAAA,2BACF,CAAA;AACA,0BAAM,MAAA,eAAA,GAAkB,CAAC,EAAmB,KAAA;AAC1C,4BAAA,IAAI,gBAAgB,OAAS,EAAA;AAC3B,8BAAA,MAAM,KACJ,GAAA,EAAA,CAAG,OAAU,GAAA,oBAAA,CAAqB,OAAS,CAAA,CAAA,CAAA;AAC7C,8BAAA,MAAM,KACJ,GAAA,EAAA,CAAG,OAAU,GAAA,oBAAA,CAAqB,OAAS,CAAA,CAAA,CAAA;AAE7C,8BAAS,QAAA,CAAA;AAAA,gCACP,IAAM,EAAA,CAAA,EAAG,eAAgB,CAAA,OAAA,CAAQ,OAAO,KAAK,CAAA,EAAA,CAAA;AAAA,gCAC7C,GAAK,EAAA,CAAA,EAAG,eAAgB,CAAA,OAAA,CAAQ,MAAM,KAAK,CAAA,EAAA,CAAA;AAAA,+BAC5C,CAAA,CAAA;AAAA,6BACH;AAAA,2BACF,CAAA;AAEA,0BAAA,MAAM,gBAAgB,MAAM;AAC1B,4BAAA,eAAA,CAAgB,OAAU,GAAA,IAAA,CAAA;AAAA,2BAC5B,CAAA;AAEA,0BAAG,EAAA,CAAA,gBAAA,CAAiB,aAAa,eAAe,CAAA,CAAA;AAChD,0BAAS,QAAA,CAAA,gBAAA,CAAiB,aAAa,eAAe,CAAA,CAAA;AACtD,0BAAS,QAAA,CAAA,gBAAA,CAAiB,WAAW,aAAa,CAAA,CAAA;AAElD,0BAAA,WAAA,CAAY,UAAU,MAAM;AAC1B,4BAAG,EAAA,CAAA,mBAAA,CAAoB,aAAa,eAAe,CAAA,CAAA;AACnD,4BAAS,QAAA,CAAA,mBAAA;AAAA,8BACP,WAAA;AAAA,8BACA,eAAA;AAAA,6BACF,CAAA;AACA,4BAAS,QAAA,CAAA,mBAAA,CAAoB,WAAW,aAAa,CAAA,CAAA;AAAA,2BACvD,CAAA;AAAA,yBACF;AAAA,uBACF;AAAA,sBACA,CAAC,aAAa,QAAQ,CAAA;AAAA,qBACxB;AAAA,oBAEC,QAAA,EAAA;AAAA,sBAAA,CAAC,QACA,oBAAA,GAAA;AAAA,wBAAC,YAAA;AAAA,wBAAA;AAAA,0BACC,SAAU,EAAA,eAAA;AAAA,0BACV,MAAA;AAAA,0BACA,KAAO,EAAA,UAAA;AAAA,0BACP,KAAO,EAAA,YAAA;AAAA,0BACP,eAAA;AAAA,0BACA,EAAA,EAAI,GAAG,OAAO,CAAA,OAAA,CAAA;AAAA,yBAAA;AAAA,uBAChB;AAAA,sCAEF,GAAA;AAAA,wBAAC,GAAA;AAAA,wBAAA;AAAA,0BACC,SAAU,EAAA,gBAAA;AAAA,0BACV,IACE,OAAO,QAAA,KAAa,QAChB,GAAA,CAAA,EAAG,OAAO,CACV,YAAA,CAAA,GAAA,KAAA,CAAA;AAAA,0BAGL,QAAA;AAAA,yBAAA;AAAA,uBACH;AAAA,qBAAA;AAAA,mBAAA;AAAA,iBACF;AAAA,eAAA;AAAA,aACF;AAAA,WAAA;AAAA,SACF;AAAA,OAAA;AAAA,KAEJ,EAAA,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
function useEscapeKey({
|
|
4
|
+
closeHandler,
|
|
5
|
+
id,
|
|
6
|
+
isOpenInner,
|
|
7
|
+
shouldCloseOnEsc
|
|
8
|
+
}) {
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
function handleEscape(event) {
|
|
11
|
+
const overlays = [...document.querySelectorAll(".overlay")];
|
|
12
|
+
const modal = event.target.closest(`#modal__${id}`);
|
|
13
|
+
if (modal && event.key === "Escape") {
|
|
14
|
+
event.preventDefault();
|
|
15
|
+
event.stopPropagation();
|
|
16
|
+
closeHandler();
|
|
17
|
+
} else if (overlays.length > 0 && overlays[overlays.length - 1]?.id === id && event.key === "Escape") {
|
|
18
|
+
event.preventDefault();
|
|
19
|
+
event.stopPropagation();
|
|
20
|
+
closeHandler();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (isOpenInner && shouldCloseOnEsc)
|
|
24
|
+
document.addEventListener("keydown", handleEscape, false);
|
|
25
|
+
return () => {
|
|
26
|
+
document.removeEventListener("keydown", handleEscape, false);
|
|
27
|
+
};
|
|
28
|
+
}, [shouldCloseOnEsc, isOpenInner, closeHandler, id]);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { useEscapeKey };
|
|
32
|
+
//# sourceMappingURL=useEscapeKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEscapeKey.js","sources":["../../../../src/components/modals/hooks/useEscapeKey.ts"],"sourcesContent":["import { useEffect } from 'react';\r\n\r\n/**\r\n * Contorla la lógica encargada de cerrar el modal al presionar la tecla escape.\r\n */\r\nexport function useEscapeKey({\r\n closeHandler,\r\n id,\r\n isOpenInner,\r\n shouldCloseOnEsc,\r\n}: {\r\n id: string;\r\n closeHandler: () => void;\r\n isOpenInner: boolean;\r\n shouldCloseOnEsc?: boolean;\r\n}) {\r\n useEffect(() => {\r\n function handleEscape(event: KeyboardEvent) {\r\n const overlays = [...document.querySelectorAll('.overlay')];\r\n\r\n const modal = (event.target as HTMLElement).closest(`#modal__${id}`);\r\n if (modal && event.key === 'Escape') {\r\n /**\r\n * Funcionamiento para el WindowModal\r\n */\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n closeHandler();\r\n } else if (\r\n overlays.length > 0 &&\r\n overlays[overlays.length - 1]?.id === id &&\r\n event.key === 'Escape'\r\n ) {\r\n /**\r\n * Legacy, para el StaticModal\r\n */\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n closeHandler();\r\n }\r\n }\r\n if (isOpenInner && shouldCloseOnEsc)\r\n document.addEventListener('keydown', handleEscape, false);\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape, false);\r\n };\r\n }, [shouldCloseOnEsc, isOpenInner, closeHandler, id]);\r\n}\r\n"],"names":[],"mappings":";;AAKO,SAAS,YAAa,CAAA;AAAA,EAC3B,YAAA;AAAA,EACA,EAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AACF,CAKG,EAAA;AACD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,SAAS,aAAa,KAAsB,EAAA;AAC1C,MAAA,MAAM,WAAW,CAAC,GAAG,QAAS,CAAA,gBAAA,CAAiB,UAAU,CAAC,CAAA,CAAA;AAE1D,MAAA,MAAM,QAAS,KAAM,CAAA,MAAA,CAAuB,OAAQ,CAAA,CAAA,QAAA,EAAW,EAAE,CAAE,CAAA,CAAA,CAAA;AACnE,MAAI,IAAA,KAAA,IAAS,KAAM,CAAA,GAAA,KAAQ,QAAU,EAAA;AAInC,QAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,QAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AAEtB,QAAa,YAAA,EAAA,CAAA;AAAA,OAEb,MAAA,IAAA,QAAA,CAAS,MAAS,GAAA,CAAA,IAClB,QAAS,CAAA,QAAA,CAAS,MAAS,GAAA,CAAC,CAAG,EAAA,EAAA,KAAO,EACtC,IAAA,KAAA,CAAM,QAAQ,QACd,EAAA;AAIA,QAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,QAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AAEtB,QAAa,YAAA,EAAA,CAAA;AAAA,OACf;AAAA,KACF;AACA,IAAA,IAAI,WAAe,IAAA,gBAAA;AACjB,MAAS,QAAA,CAAA,gBAAA,CAAiB,SAAW,EAAA,YAAA,EAAc,KAAK,CAAA,CAAA;AAC1D,IAAA,OAAO,MAAM;AACX,MAAS,QAAA,CAAA,mBAAA,CAAoB,SAAW,EAAA,YAAA,EAAc,KAAK,CAAA,CAAA;AAAA,KAC7D,CAAA;AAAA,KACC,CAAC,gBAAA,EAAkB,WAAa,EAAA,YAAA,EAAc,EAAE,CAAC,CAAA,CAAA;AACtD;;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { focus, focusSelector, getFocusSelector } from '@apia/util';
|
|
3
|
+
|
|
4
|
+
function useInitialFocus({
|
|
5
|
+
isOpenInner,
|
|
6
|
+
initialFocusConfiguration,
|
|
7
|
+
initialFocusGetter,
|
|
8
|
+
initialFocusRef,
|
|
9
|
+
noFocus,
|
|
10
|
+
parentElement
|
|
11
|
+
}) {
|
|
12
|
+
useEffect(
|
|
13
|
+
() => {
|
|
14
|
+
if (!noFocus && isOpenInner) {
|
|
15
|
+
if (parentElement) {
|
|
16
|
+
void focus.on(
|
|
17
|
+
() => {
|
|
18
|
+
if (initialFocusGetter)
|
|
19
|
+
return initialFocusGetter(parentElement);
|
|
20
|
+
if (initialFocusRef?.current)
|
|
21
|
+
return (initialFocusRef?.current || parentElement).querySelector(focusSelector);
|
|
22
|
+
return parentElement.querySelector(
|
|
23
|
+
getFocusSelector(":not(.modal__closeButton)")
|
|
24
|
+
);
|
|
25
|
+
},
|
|
26
|
+
{ ...initialFocusConfiguration, focusEvenWhenScreenLocked: true }
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32
|
+
[parentElement]
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export { useInitialFocus };
|
|
37
|
+
//# sourceMappingURL=useInitialFocus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInitialFocus.js","sources":["../../../../src/components/modals/hooks/useInitialFocus.ts"],"sourcesContent":["import { useEffect } from 'react';\r\nimport { TModal } from '../Modal';\r\nimport { focus, focusSelector, getFocusSelector } from '@apia/util';\r\n\r\nexport function useInitialFocus({\r\n isOpenInner,\r\n initialFocusConfiguration,\r\n initialFocusGetter,\r\n initialFocusRef,\r\n noFocus,\r\n parentElement,\r\n}: { isOpenInner: boolean; parentElement?: HTMLElement | null } & Pick<\r\n TModal,\r\n | 'noFocus'\r\n | 'initialFocusGetter'\r\n | 'initialFocusRef'\r\n | 'initialFocusConfiguration'\r\n>) {\r\n useEffect(\r\n () => {\r\n if (!noFocus && isOpenInner) {\r\n if (parentElement) {\r\n void focus.on(\r\n () => {\r\n if (initialFocusGetter) return initialFocusGetter(parentElement);\r\n if (initialFocusRef?.current)\r\n return (\r\n (initialFocusRef?.current || parentElement) as HTMLElement\r\n ).querySelector(focusSelector) as HTMLElement;\r\n return parentElement.querySelector(\r\n getFocusSelector(':not(.modal__closeButton)'),\r\n ) as HTMLElement;\r\n },\r\n { ...initialFocusConfiguration, focusEvenWhenScreenLocked: true },\r\n );\r\n }\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [parentElement],\r\n );\r\n}\r\n"],"names":[],"mappings":";;;AAIO,SAAS,eAAgB,CAAA;AAAA,EAC9B,WAAA;AAAA,EACA,yBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA;AACF,CAMG,EAAA;AACD,EAAA,SAAA;AAAA,IACE,MAAM;AACJ,MAAI,IAAA,CAAC,WAAW,WAAa,EAAA;AAC3B,QAAA,IAAI,aAAe,EAAA;AACjB,UAAA,KAAK,KAAM,CAAA,EAAA;AAAA,YACT,MAAM;AACJ,cAAI,IAAA,kBAAA;AAAoB,gBAAA,OAAO,mBAAmB,aAAa,CAAA,CAAA;AAC/D,cAAA,IAAI,eAAiB,EAAA,OAAA;AACnB,gBAAA,OAAA,CACG,eAAiB,EAAA,OAAA,IAAW,aAC7B,EAAA,aAAA,CAAc,aAAa,CAAA,CAAA;AAC/B,cAAA,OAAO,aAAc,CAAA,aAAA;AAAA,gBACnB,iBAAiB,2BAA2B,CAAA;AAAA,eAC9C,CAAA;AAAA,aACF;AAAA,YACA,EAAE,GAAG,yBAA2B,EAAA,yBAAA,EAA2B,IAAK,EAAA;AAAA,WAClE,CAAA;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAAA;AAAA,IAEA,CAAC,aAAa,CAAA;AAAA,GAChB,CAAA;AACF;;;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useRef, useCallback } from 'react';
|
|
2
|
+
|
|
3
|
+
function useStyleState(initialStyle) {
|
|
4
|
+
const element = useRef(null);
|
|
5
|
+
const state = useRef(
|
|
6
|
+
typeof initialStyle === "object" ? initialStyle : {}
|
|
7
|
+
);
|
|
8
|
+
const applyStyles = useCallback(() => {
|
|
9
|
+
if (element.current) {
|
|
10
|
+
Object.entries(state.current).forEach(([name, value]) => {
|
|
11
|
+
if (Object.getOwnPropertyDescriptor(element.current.style, name)?.writable) {
|
|
12
|
+
element.current.style[name] = value;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}, []);
|
|
17
|
+
const hasInitializedState = useRef(typeof initialStyle !== "function");
|
|
18
|
+
return {
|
|
19
|
+
ref: useCallback(
|
|
20
|
+
(el) => {
|
|
21
|
+
element.current = el;
|
|
22
|
+
if (el) {
|
|
23
|
+
if (!hasInitializedState.current) {
|
|
24
|
+
hasInitializedState.current = true;
|
|
25
|
+
state.current = initialStyle(el);
|
|
26
|
+
}
|
|
27
|
+
applyStyles();
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
31
|
+
[applyStyles]
|
|
32
|
+
),
|
|
33
|
+
setState: useCallback(
|
|
34
|
+
(newState) => {
|
|
35
|
+
state.current = typeof newState === "function" ? newState(state.current) : newState;
|
|
36
|
+
applyStyles();
|
|
37
|
+
},
|
|
38
|
+
[applyStyles]
|
|
39
|
+
)
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export { useStyleState };
|
|
44
|
+
//# sourceMappingURL=useStyleState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStyleState.js","sources":["../../../../src/components/modals/hooks/useStyleState.ts"],"sourcesContent":["import { SetStateAction, useCallback, useRef } from 'react';\r\n\r\ntype InitialStyleAssigner = (el: HTMLElement) => Partial<CSSStyleDeclaration>;\r\ntype CSSState = Partial<CSSStyleDeclaration>;\r\n\r\nexport function useStyleState(initialStyle?: CSSState | InitialStyleAssigner) {\r\n const element = useRef<null | HTMLElement>(null);\r\n const state = useRef<CSSState>(\r\n typeof initialStyle === 'object' ? initialStyle : ({} as CSSState),\r\n );\r\n\r\n const applyStyles = useCallback(() => {\r\n if (element.current) {\r\n Object.entries(state.current).forEach(([name, value]) => {\r\n if (\r\n Object.getOwnPropertyDescriptor(element.current!.style, name)\r\n ?.writable\r\n ) {\r\n element.current!.style[name as 'width'] = value as any;\r\n }\r\n });\r\n }\r\n }, []);\r\n\r\n const hasInitializedState = useRef(typeof initialStyle !== 'function');\r\n return {\r\n ref: useCallback(\r\n (el: HTMLElement | null) => {\r\n element.current = el;\r\n if (el) {\r\n if (!hasInitializedState.current) {\r\n hasInitializedState.current = true;\r\n state.current = (initialStyle as InitialStyleAssigner)(el);\r\n }\r\n applyStyles();\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [applyStyles],\r\n ),\r\n setState: useCallback(\r\n (newState: SetStateAction<CSSState>) => {\r\n state.current =\r\n typeof newState === 'function' ? newState(state.current) : newState;\r\n applyStyles();\r\n },\r\n [applyStyles],\r\n ),\r\n };\r\n}\r\n"],"names":[],"mappings":";;AAKO,SAAS,cAAc,YAAgD,EAAA;AAC5E,EAAM,MAAA,OAAA,GAAU,OAA2B,IAAI,CAAA,CAAA;AAC/C,EAAA,MAAM,KAAQ,GAAA,MAAA;AAAA,IACZ,OAAO,YAAA,KAAiB,QAAW,GAAA,YAAA,GAAgB,EAAC;AAAA,GACtD,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,IAAI,QAAQ,OAAS,EAAA;AACnB,MAAO,MAAA,CAAA,OAAA,CAAQ,MAAM,OAAO,CAAA,CAAE,QAAQ,CAAC,CAAC,IAAM,EAAA,KAAK,CAAM,KAAA;AACvD,QAAA,IACE,OAAO,wBAAyB,CAAA,OAAA,CAAQ,QAAS,KAAO,EAAA,IAAI,GACxD,QACJ,EAAA;AACA,UAAQ,OAAA,CAAA,OAAA,CAAS,KAAM,CAAA,IAAe,CAAI,GAAA,KAAA,CAAA;AAAA,SAC5C;AAAA,OACD,CAAA,CAAA;AAAA,KACH;AAAA,GACF,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,MAAM,mBAAsB,GAAA,MAAA,CAAO,OAAO,YAAA,KAAiB,UAAU,CAAA,CAAA;AACrE,EAAO,OAAA;AAAA,IACL,GAAK,EAAA,WAAA;AAAA,MACH,CAAC,EAA2B,KAAA;AAC1B,QAAA,OAAA,CAAQ,OAAU,GAAA,EAAA,CAAA;AAClB,QAAA,IAAI,EAAI,EAAA;AACN,UAAI,IAAA,CAAC,oBAAoB,OAAS,EAAA;AAChC,YAAA,mBAAA,CAAoB,OAAU,GAAA,IAAA,CAAA;AAC9B,YAAM,KAAA,CAAA,OAAA,GAAW,aAAsC,EAAE,CAAA,CAAA;AAAA,WAC3D;AACA,UAAY,WAAA,EAAA,CAAA;AAAA,SACd;AAAA,OACF;AAAA;AAAA,MAEA,CAAC,WAAW,CAAA;AAAA,KACd;AAAA,IACA,QAAU,EAAA,WAAA;AAAA,MACR,CAAC,QAAuC,KAAA;AACtC,QAAA,KAAA,CAAM,UACJ,OAAO,QAAA,KAAa,aAAa,QAAS,CAAA,KAAA,CAAM,OAAO,CAAI,GAAA,QAAA,CAAA;AAC7D,QAAY,WAAA,EAAA,CAAA;AAAA,OACd;AAAA,MACA,CAAC,WAAW,CAAA;AAAA,KACd;AAAA,GACF,CAAA;AACF;;;;"}
|
|
@@ -62,7 +62,7 @@ const DialogHeader = ({
|
|
|
62
62
|
return breakpointIndex > 3 ? /* @__PURE__ */ jsxs(
|
|
63
63
|
Box,
|
|
64
64
|
{
|
|
65
|
-
className
|
|
65
|
+
className: `${className} modal__header`,
|
|
66
66
|
sx: {
|
|
67
67
|
display: "flex",
|
|
68
68
|
flexDirection: "row",
|
|
@@ -82,7 +82,7 @@ const DialogHeader = ({
|
|
|
82
82
|
) : /* @__PURE__ */ jsxs(
|
|
83
83
|
Box,
|
|
84
84
|
{
|
|
85
|
-
className
|
|
85
|
+
className: `${className} modal__header`,
|
|
86
86
|
sx: {
|
|
87
87
|
display: "flex",
|
|
88
88
|
flexDirection: "column",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DialogHeader.js","sources":["../../../../src/components/modals/layout/DialogHeader.tsx"],"sourcesContent":["import { Box, Close, Heading, useBreakpointIndex } from '@apia/theme';\nimport React, { FC } from 'react';\nimport { responsive, spacing } from '@apia/theme';\n\nexport interface IDialogHeader {\n className?: string;\n close: () => void;\n hideCloseButton?: boolean;\n id?: string;\n NavBar?: React.ReactNode;\n title?: string;\n}\n\ndeclare global {\n interface Window {\n BTN_CLOSE: string;\n }\n}\n\nconst DialogHeader: FC<IDialogHeader> = ({\n className,\n close,\n hideCloseButton,\n id,\n NavBar,\n title = '',\n}) => {\n const breakpointIndex = useBreakpointIndex();\n\n const Title = (\n <Heading\n as=\"h3\"\n sx={{\n wordBreak: 'break-word',\n m: '0',\n flex: '2 0',\n color: 'title',\n }}\n className=\"modal__title\"\n id={id ? `modal-${id}-title` : ''}\n >\n {title}\n </Heading>\n );\n\n const CloseButton = React.useMemo(\n () =>\n hideCloseButton ? null : (\n <Close\n role=\"button\"\n type=\"button\"\n aria-label={window.BTN_CLOSE}\n onClick={close}\n title={window.BTN_CLOSE}\n sx={{\n mr: 'unset',\n }}\n className=\"modal__closeButton\"\n />\n ),\n [close, hideCloseButton],\n );\n\n const NavBarElement = NavBar && (\n <Box\n sx={{\n display: 'flex',\n gap: responsive({ 0: 2, 1: '3px', 2: 2 }),\n justifyContent: 'end',\n flexDirection: responsive({ 0: 'row', 1: 'column', 3: 'row' }),\n width: responsive({ 0: 'auto', 1: '100%', 2: 'auto' }),\n flexBasis: 'max-content',\n height: '100%',\n }}\n className=\"modal__headerBar\"\n >\n {NavBar}\n </Box>\n );\n\n return breakpointIndex > 3 ? (\n <Box\n className={className}\n sx={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'start',\n mb: spacing(0),\n justifyContent: 'space-between',\n width: '100%',\n gap: spacing(2),\n flexWrap: 'nowrap',\n }}\n >\n {Title}\n {NavBarElement}\n {CloseButton}\n </Box>\n ) : (\n <Box\n className={className}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: responsive({ 0: 'center', 2: 'end' }),\n mb: spacing(0),\n justifyContent: 'space-between',\n width: '100%',\n gap: spacing(2),\n }}\n >\n <Box\n sx={{\n display: 'flex',\n width: '100%',\n }}\n >\n {Title}\n {CloseButton}\n </Box>\n {NavBarElement}\n </Box>\n );\n};\n\nexport default DialogHeader;\n"],"names":["React"],"mappings":";;;;AAmBA,MAAM,eAAkC,CAAC;AAAA,EACvC,SAAA;AAAA,EACA,KAAA;AAAA,EACA,eAAA;AAAA,EACA,EAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAQ,GAAA,EAAA;AACV,CAAM,KAAA;AACJ,EAAA,MAAM,kBAAkB,kBAAmB,EAAA,CAAA;AAE3C,EAAA,MAAM,KACJ,mBAAA,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,EAAG,EAAA,IAAA;AAAA,MACH,EAAI,EAAA;AAAA,QACF,SAAW,EAAA,YAAA;AAAA,QACX,CAAG,EAAA,GAAA;AAAA,QACH,IAAM,EAAA,KAAA;AAAA,QACN,KAAO,EAAA,OAAA;AAAA,OACT;AAAA,MACA,SAAU,EAAA,cAAA;AAAA,MACV,EAAI,EAAA,EAAA,GAAK,CAAS,MAAA,EAAA,EAAE,CAAW,MAAA,CAAA,GAAA,EAAA;AAAA,MAE9B,QAAA,EAAA,KAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAGF,EAAA,MAAM,cAAcA,cAAM,CAAA,OAAA;AAAA,IACxB,MACE,kBAAkB,IAChB,mBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAK,EAAA,QAAA;AAAA,QACL,IAAK,EAAA,QAAA;AAAA,QACL,cAAY,MAAO,CAAA,SAAA;AAAA,QACnB,OAAS,EAAA,KAAA;AAAA,QACT,OAAO,MAAO,CAAA,SAAA;AAAA,QACd,EAAI,EAAA;AAAA,UACF,EAAI,EAAA,OAAA;AAAA,SACN;AAAA,QACA,SAAU,EAAA,oBAAA;AAAA,OAAA;AAAA,KACZ;AAAA,IAEJ,CAAC,OAAO,eAAe,CAAA;AAAA,GACzB,CAAA;AAEA,EAAA,MAAM,gBAAgB,MACpB,oBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA;AAAA,QACF,OAAS,EAAA,MAAA;AAAA,QACT,GAAA,EAAK,WAAW,EAAE,CAAA,EAAG,GAAG,CAAG,EAAA,KAAA,EAAO,CAAG,EAAA,CAAA,EAAG,CAAA;AAAA,QACxC,cAAgB,EAAA,KAAA;AAAA,QAChB,aAAA,EAAe,WAAW,EAAE,CAAA,EAAG,OAAO,CAAG,EAAA,QAAA,EAAU,CAAG,EAAA,KAAA,EAAO,CAAA;AAAA,QAC7D,KAAA,EAAO,WAAW,EAAE,CAAA,EAAG,QAAQ,CAAG,EAAA,MAAA,EAAQ,CAAG,EAAA,MAAA,EAAQ,CAAA;AAAA,QACrD,SAAW,EAAA,aAAA;AAAA,QACX,MAAQ,EAAA,MAAA;AAAA,OACV;AAAA,MACA,SAAU,EAAA,kBAAA;AAAA,MAET,QAAA,EAAA,MAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAGF,EAAA,OAAO,kBAAkB,CACvB,mBAAA,IAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"DialogHeader.js","sources":["../../../../src/components/modals/layout/DialogHeader.tsx"],"sourcesContent":["import { Box, Close, Heading, useBreakpointIndex } from '@apia/theme';\nimport React, { FC } from 'react';\nimport { responsive, spacing } from '@apia/theme';\n\nexport interface IDialogHeader {\n className?: string;\n close: () => void;\n hideCloseButton?: boolean;\n id?: string;\n NavBar?: React.ReactNode;\n title?: string;\n}\n\ndeclare global {\n interface Window {\n BTN_CLOSE: string;\n }\n}\n\nconst DialogHeader: FC<IDialogHeader> = ({\n className,\n close,\n hideCloseButton,\n id,\n NavBar,\n title = '',\n}) => {\n const breakpointIndex = useBreakpointIndex();\n\n const Title = (\n <Heading\n as=\"h3\"\n sx={{\n wordBreak: 'break-word',\n m: '0',\n flex: '2 0',\n color: 'title',\n }}\n className=\"modal__title\"\n id={id ? `modal-${id}-title` : ''}\n >\n {title}\n </Heading>\n );\n\n const CloseButton = React.useMemo(\n () =>\n hideCloseButton ? null : (\n <Close\n role=\"button\"\n type=\"button\"\n aria-label={window.BTN_CLOSE}\n onClick={close}\n title={window.BTN_CLOSE}\n sx={{\n mr: 'unset',\n }}\n className=\"modal__closeButton\"\n />\n ),\n [close, hideCloseButton],\n );\n\n const NavBarElement = NavBar && (\n <Box\n sx={{\n display: 'flex',\n gap: responsive({ 0: 2, 1: '3px', 2: 2 }),\n justifyContent: 'end',\n flexDirection: responsive({ 0: 'row', 1: 'column', 3: 'row' }),\n width: responsive({ 0: 'auto', 1: '100%', 2: 'auto' }),\n flexBasis: 'max-content',\n height: '100%',\n }}\n className=\"modal__headerBar\"\n >\n {NavBar}\n </Box>\n );\n\n return breakpointIndex > 3 ? (\n <Box\n className={`${className} modal__header`}\n sx={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'start',\n mb: spacing(0),\n justifyContent: 'space-between',\n width: '100%',\n gap: spacing(2),\n flexWrap: 'nowrap',\n }}\n >\n {Title}\n {NavBarElement}\n {CloseButton}\n </Box>\n ) : (\n <Box\n className={`${className} modal__header`}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: responsive({ 0: 'center', 2: 'end' }),\n mb: spacing(0),\n justifyContent: 'space-between',\n width: '100%',\n gap: spacing(2),\n }}\n >\n <Box\n sx={{\n display: 'flex',\n width: '100%',\n }}\n >\n {Title}\n {CloseButton}\n </Box>\n {NavBarElement}\n </Box>\n );\n};\n\nexport default DialogHeader;\n"],"names":["React"],"mappings":"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"}
|
|
@@ -52,31 +52,18 @@ const _ApiaUtil = class _ApiaUtil {
|
|
|
52
52
|
/* @__PURE__ */ jsx(this.menu.Component, {})
|
|
53
53
|
] });
|
|
54
54
|
});
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
this.tabs = new ApiaUtilTabsController();
|
|
64
|
-
this.tooltips = new ApiaUtilTooltips();
|
|
65
|
-
} else {
|
|
66
|
-
this.dialogs = __privateGet(_ApiaUtil, _instance).dialogs;
|
|
67
|
-
this.menu = __privateGet(_ApiaUtil, _instance).menu;
|
|
68
|
-
this.modals = __privateGet(_ApiaUtil, _instance).modals;
|
|
69
|
-
this.mouse = __privateGet(_ApiaUtil, _instance).mouse;
|
|
70
|
-
this.notifications = __privateGet(_ApiaUtil, _instance).notifications;
|
|
71
|
-
this.parsers = __privateGet(_ApiaUtil, _instance).parsers;
|
|
72
|
-
this.tabs = __privateGet(_ApiaUtil, _instance).tabs;
|
|
73
|
-
this.tooltips = __privateGet(_ApiaUtil, _instance).tooltips;
|
|
74
|
-
}
|
|
75
|
-
return __privateGet(_ApiaUtil, _instance);
|
|
55
|
+
this.dialogs = new ApiaUtilDialogs();
|
|
56
|
+
this.menu = new ApiaUtilMenu();
|
|
57
|
+
this.modals = new ApiaUtilModals();
|
|
58
|
+
this.mouse = new ApiaUtilMouse();
|
|
59
|
+
this.notifications = new ApiaUtilNotifications();
|
|
60
|
+
this.parsers = new ApiaUtilParsers();
|
|
61
|
+
this.tabs = new ApiaUtilTabsController();
|
|
62
|
+
this.tooltips = new ApiaUtilTooltips();
|
|
76
63
|
}
|
|
77
64
|
static get instance() {
|
|
78
65
|
if (!__privateGet(this, _instance)) {
|
|
79
|
-
new _ApiaUtil();
|
|
66
|
+
__privateSet(this, _instance, new _ApiaUtil());
|
|
80
67
|
}
|
|
81
68
|
return __privateGet(this, _instance);
|
|
82
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/objects/ApiaUtil/index.tsx"],"sourcesContent":["import { ApiaUtilModals } from './modals/ApiaUtilModals';\nimport { ApiaUtilNotifications } from './notifications/ApiaUtilNotifications';\nimport { ApiaUtilTabsController } from './tabs/ApiaUtilTabsController';\nimport { ApiaUtilDialogs } from './dialogs/ApiaUtilDialogs';\nimport { ApiaUtilParsers } from './parsers/ApiaUtilParsers';\nimport { ApiaUtilTooltips } from './tooltips/ApiaUtilTooltips';\nimport { ApiaUtilMenu } from './menu/ApiaUtilMenu';\nimport { ApiaUtilMouse } from './mouse/ApiaUtilMouse';\n\nexport class ApiaUtil {\n static #instance: ApiaUtil;\n public static get instance() {\n if (!this.#instance) {\n new ApiaUtil();\n }\n\n return this.#instance;\n }\n\n constructor() {\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/objects/ApiaUtil/index.tsx"],"sourcesContent":["import { ApiaUtilModals } from './modals/ApiaUtilModals';\nimport { ApiaUtilNotifications } from './notifications/ApiaUtilNotifications';\nimport { ApiaUtilTabsController } from './tabs/ApiaUtilTabsController';\nimport { ApiaUtilDialogs } from './dialogs/ApiaUtilDialogs';\nimport { ApiaUtilParsers } from './parsers/ApiaUtilParsers';\nimport { ApiaUtilTooltips } from './tooltips/ApiaUtilTooltips';\nimport { ApiaUtilMenu } from './menu/ApiaUtilMenu';\nimport { ApiaUtilMouse } from './mouse/ApiaUtilMouse';\n\nexport class ApiaUtil {\n static #instance: ApiaUtil;\n public static get instance() {\n if (!this.#instance) {\n this.#instance = new ApiaUtil();\n }\n\n return this.#instance;\n }\n\n private constructor() {\n this.dialogs = new ApiaUtilDialogs();\n this.menu = new ApiaUtilMenu();\n this.modals = new ApiaUtilModals();\n this.mouse = new ApiaUtilMouse();\n this.notifications = new ApiaUtilNotifications();\n this.parsers = new ApiaUtilParsers();\n this.tabs = new ApiaUtilTabsController();\n this.tooltips = new ApiaUtilTooltips();\n }\n\n dialogs: ApiaUtilDialogs;\n menu: ApiaUtilMenu;\n modals: ApiaUtilModals;\n mouse: ApiaUtilMouse;\n notifications: ApiaUtilNotifications;\n parsers: ApiaUtilParsers;\n tabs: ApiaUtilTabsController;\n tooltips: ApiaUtilTooltips;\n\n Component = () => {\n return (\n <>\n <this.dialogs.Component />\n <this.modals.Component />\n <this.notifications.Component />\n <this.tooltips.Component />\n <this.menu.Component />\n </>\n );\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,SAAA,CAAA;AASO,MAAM,SAAA,GAAN,MAAM,SAAS,CAAA;AAAA,EAUZ,WAAc,GAAA;AAWtB,IAAA,aAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAEA,IAAA,aAAA,CAAA,IAAA,EAAA,WAAA,EAAY,MAAM;AAChB,MAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,IAAA,CAAK,OAAQ,CAAA,SAAA,EAAb,EAAuB,CAAA;AAAA,wBACvB,GAAA,CAAA,IAAA,CAAK,MAAO,CAAA,SAAA,EAAZ,EAAsB,CAAA;AAAA,wBACtB,GAAA,CAAA,IAAA,CAAK,aAAc,CAAA,SAAA,EAAnB,EAA6B,CAAA;AAAA,wBAC7B,GAAA,CAAA,IAAA,CAAK,QAAS,CAAA,SAAA,EAAd,EAAwB,CAAA;AAAA,wBACxB,GAAA,CAAA,IAAA,CAAK,IAAK,CAAA,SAAA,EAAV,EAAoB,CAAA;AAAA,OACvB,EAAA,CAAA,CAAA;AAAA,KAEJ,CAAA,CAAA;AA7BE,IAAK,IAAA,CAAA,OAAA,GAAU,IAAI,eAAgB,EAAA,CAAA;AACnC,IAAK,IAAA,CAAA,IAAA,GAAO,IAAI,YAAa,EAAA,CAAA;AAC7B,IAAK,IAAA,CAAA,MAAA,GAAS,IAAI,cAAe,EAAA,CAAA;AACjC,IAAK,IAAA,CAAA,KAAA,GAAQ,IAAI,aAAc,EAAA,CAAA;AAC/B,IAAK,IAAA,CAAA,aAAA,GAAgB,IAAI,qBAAsB,EAAA,CAAA;AAC/C,IAAK,IAAA,CAAA,OAAA,GAAU,IAAI,eAAgB,EAAA,CAAA;AACnC,IAAK,IAAA,CAAA,IAAA,GAAO,IAAI,sBAAuB,EAAA,CAAA;AACvC,IAAK,IAAA,CAAA,QAAA,GAAW,IAAI,gBAAiB,EAAA,CAAA;AAAA,GACvC;AAAA,EAjBA,WAAkB,QAAW,GAAA;AAC3B,IAAI,IAAA,CAAC,mBAAK,SAAW,CAAA,EAAA;AACnB,MAAK,YAAA,CAAA,IAAA,EAAA,SAAA,EAAY,IAAI,SAAS,EAAA,CAAA,CAAA;AAAA,KAChC;AAEA,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAAA,GACd;AAiCF,CAAA,CAAA;AAxCS,SAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAAP,YAAA,CADW,WACJ,SAAP,EAAA,KAAA,CAAA,CAAA,CAAA;AADK,IAAM,QAAN,GAAA;;;;"}
|
|
@@ -36,7 +36,7 @@ var __privateWrapper = (obj, member, setter, getter) => ({
|
|
|
36
36
|
return __privateGet(obj, member, getter);
|
|
37
37
|
}
|
|
38
38
|
});
|
|
39
|
-
var _emitter, _items,
|
|
39
|
+
var _emitter, _items, _hooks, _maxId, _RenderMenu;
|
|
40
40
|
function isSubmenu(item) {
|
|
41
41
|
return Array.isArray(item.items);
|
|
42
42
|
}
|
|
@@ -44,7 +44,7 @@ class ApiaUtilMenu {
|
|
|
44
44
|
constructor() {
|
|
45
45
|
__privateAdd(this, _emitter, new EventEmitter());
|
|
46
46
|
__privateAdd(this, _items, []);
|
|
47
|
-
|
|
47
|
+
__publicField(this, "menuProps", null);
|
|
48
48
|
__privateAdd(this, _hooks, {
|
|
49
49
|
useIsOpen: () => {
|
|
50
50
|
const [isOpen, setIsOpen] = useState(false);
|
|
@@ -67,7 +67,7 @@ class ApiaUtilMenu {
|
|
|
67
67
|
items
|
|
68
68
|
}) => {
|
|
69
69
|
__privateSet(this, _items, items);
|
|
70
|
-
|
|
70
|
+
this.menuProps = menuProps;
|
|
71
71
|
__privateGet(this, _emitter).emit("toggle", true);
|
|
72
72
|
});
|
|
73
73
|
__privateAdd(this, _maxId, 0);
|
|
@@ -88,9 +88,12 @@ class ApiaUtilMenu {
|
|
|
88
88
|
return /* @__PURE__ */ jsx(
|
|
89
89
|
ControlledMenu,
|
|
90
90
|
{
|
|
91
|
-
...
|
|
91
|
+
...this.menuProps,
|
|
92
92
|
state: isOpen ? "open" : "closed",
|
|
93
|
-
onClose:
|
|
93
|
+
onClose: (ev) => {
|
|
94
|
+
close();
|
|
95
|
+
this.menuProps?.onClose?.(ev);
|
|
96
|
+
},
|
|
94
97
|
children: __privateGet(this, _RenderMenu).call(this, { label: "", items: __privateGet(this, _items) })
|
|
95
98
|
}
|
|
96
99
|
);
|
|
@@ -99,7 +102,6 @@ class ApiaUtilMenu {
|
|
|
99
102
|
}
|
|
100
103
|
_emitter = new WeakMap();
|
|
101
104
|
_items = new WeakMap();
|
|
102
|
-
_menuProps = new WeakMap();
|
|
103
105
|
_hooks = new WeakMap();
|
|
104
106
|
_maxId = new WeakMap();
|
|
105
107
|
_RenderMenu = new WeakMap();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiaUtilMenu.js","sources":["../../../../src/objects/ApiaUtil/menu/ApiaUtilMenu.tsx"],"sourcesContent":["import { EventEmitter, useMount } from '@apia/util';\nimport {\n ControlledMenu,\n MenuItem,\n MenuItemProps,\n ControlledMenuProps,\n MenuDivider,\n SubMenu,\n} from '@szhsin/react-menu';\nimport { useCallback, useState } from 'react';\n\nexport type TSubmenu = { label: string; items: TMenuItems };\n\nexport type TMenuItem =\n | (MenuItemProps & { key: string })\n | 'separator'\n | TSubmenu;\n\nexport type TMenuItems = TMenuItem[];\n\nfunction isSubmenu(item: TMenuItem): item is TSubmenu {\n return Array.isArray((item as TSubmenu).items);\n}\n\nexport class ApiaUtilMenu {\n #emitter = new EventEmitter<{ toggle: boolean }>();\n #items: TMenuItems = [];\n
|
|
1
|
+
{"version":3,"file":"ApiaUtilMenu.js","sources":["../../../../src/objects/ApiaUtil/menu/ApiaUtilMenu.tsx"],"sourcesContent":["import { EventEmitter, useMount } from '@apia/util';\nimport {\n ControlledMenu,\n MenuItem,\n MenuItemProps,\n ControlledMenuProps,\n MenuDivider,\n SubMenu,\n} from '@szhsin/react-menu';\nimport { useCallback, useState } from 'react';\n\nexport type TSubmenu = { label: string; items: TMenuItems };\n\nexport type TMenuItem =\n | (MenuItemProps & { key: string })\n | 'separator'\n | TSubmenu;\n\nexport type TMenuItems = TMenuItem[];\n\nfunction isSubmenu(item: TMenuItem): item is TSubmenu {\n return Array.isArray((item as TSubmenu).items);\n}\n\nexport class ApiaUtilMenu {\n #emitter = new EventEmitter<{ toggle: boolean }>();\n #items: TMenuItems = [];\n menuProps: ControlledMenuProps | null = null;\n\n #hooks = {\n useIsOpen: (): [boolean, () => void] => {\n const [isOpen, setIsOpen] = useState(false);\n\n useMount(() => {\n return this.#emitter.on('toggle', setIsOpen);\n });\n\n return [\n isOpen,\n useCallback(() => {\n setIsOpen(false);\n }, []),\n ];\n },\n };\n\n close = () => {\n this.#emitter.emit('toggle', false);\n };\n\n open = ({\n menuProps,\n items,\n }: {\n menuProps: ControlledMenuProps;\n items: TMenuItems;\n }) => {\n this.#items = items;\n this.menuProps = menuProps;\n\n this.#emitter.emit('toggle', true);\n };\n\n #maxId = 0;\n\n #RenderMenu = (submenu: TSubmenu) => {\n return (\n <>\n {submenu.items.map((current, i) => {\n if (current === 'separator')\n return <MenuDivider key={`separator${i}`} />;\n\n if (isSubmenu(current)) {\n return (\n <SubMenu label={current.label} key={`submenu${this.#maxId++}`}>\n {this.#RenderMenu(current)}\n </SubMenu>\n );\n }\n\n return <MenuItem {...current} key={current.key} />;\n })}\n </>\n );\n };\n\n Component = () => {\n const [isOpen, close] = this.#hooks.useIsOpen();\n\n if (!isOpen) return null;\n\n return (\n <ControlledMenu\n {...this.menuProps}\n state={isOpen ? 'open' : 'closed'}\n onClose={(ev) => {\n close();\n this.menuProps?.onClose?.(ev);\n }}\n >\n {this.#RenderMenu({ label: '', items: this.#items })}\n </ControlledMenu>\n );\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiaUtilModals.js","sources":["../../../../src/objects/ApiaUtil/modals/ApiaUtilModals.tsx"],"sourcesContent":["import { EventEmitter, useMount } from '@apia/util';\nimport { useState } from 'react';\nimport { OpenModal, TOpenModal } from './OpenModal';\n\nexport class ApiaUtilModalHandler {\n constructor(private id: string
|
|
1
|
+
{"version":3,"file":"ApiaUtilModals.js","sources":["../../../../src/objects/ApiaUtil/modals/ApiaUtilModals.tsx"],"sourcesContent":["import { EventEmitter, useMount } from '@apia/util';\nimport { useState } from 'react';\nimport { OpenModal, TOpenModal } from './OpenModal';\n\nexport class ApiaUtilModalHandler {\n constructor(\n private id: string,\n public close: () => void,\n ) {}\n}\n\nexport class ApiaUtilModals {\n #emitter = new EventEmitter<{\n close: string;\n closeAll: boolean;\n open: TOpenModal;\n }>();\n #maxId = 0;\n\n constructor() {\n document.addEventListener('openModal', (event) => {\n const cevent = event as CustomEvent;\n\n this.open(cevent.detail as TOpenModal);\n });\n }\n\n open(props: TOpenModal) {\n const id = props.id ?? `modal_${this.#maxId++}`;\n\n this.#emitter.emit('open', { ...props, id });\n\n return new ApiaUtilModalHandler(id, () => {\n this.#emitter.emit('close', id);\n });\n }\n\n #useModalsList = () => {\n const [modals, setModals] = useState<(TOpenModal & { isOpen: boolean })[]>(\n [],\n );\n\n useMount(() => {\n const u1 = this.#emitter.on('open', (ev) => {\n setModals((current) => [\n ...current,\n {\n ...ev,\n isOpen: true,\n onExited: () => {\n ev.onExited?.();\n setModals((current) =>\n current.filter((modal) => modal.id !== ev.id),\n );\n },\n },\n ]);\n });\n const u2 = this.#emitter.on('closeAll', () => {\n setModals((current) =>\n current.map((modal) => ({ ...modal, isOpen: false })),\n );\n });\n const u3 = this.#emitter.on('close', (modalId) => {\n setModals((current) =>\n current.map((modal) =>\n modal.id === modalId ? { ...modal, isOpen: false } : modal,\n ),\n );\n });\n\n return () => {\n u1();\n u2();\n u3();\n };\n });\n\n return modals;\n };\n\n Component = () => {\n const modals = this.#useModalsList();\n\n return (\n <>\n {modals.map((current) => (\n <OpenModal key={current.id} {...current} />\n ))}\n </>\n );\n };\n}\n"],"names":["current"],"mappings":"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"}
|