@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.
Files changed (38) hide show
  1. package/dist/components/IconsList/KeyHandler.js +1 -1
  2. package/dist/components/IconsList/KeyHandler.js.map +1 -1
  3. package/dist/components/Toolbar/ToolbarIconButton.d.ts +1 -1
  4. package/dist/components/Toolbar/ToolbarIconButton.js +8 -6
  5. package/dist/components/Toolbar/ToolbarIconButton.js.map +1 -1
  6. package/dist/components/Toolbar/index.d.ts +2 -4
  7. package/dist/components/Toolbar/index.js +18 -15
  8. package/dist/components/Toolbar/index.js.map +1 -1
  9. package/dist/components/Toolbar/types.d.ts +2 -1
  10. package/dist/components/modals/Modal.d.ts +10 -2
  11. package/dist/components/modals/Modal.js +1 -1
  12. package/dist/components/modals/Modal.js.map +1 -1
  13. package/dist/components/modals/Overlay.js +3 -2
  14. package/dist/components/modals/Overlay.js.map +1 -1
  15. package/dist/components/modals/StaticModal.js +12 -40
  16. package/dist/components/modals/StaticModal.js.map +1 -1
  17. package/dist/components/modals/WindowModal.js +210 -4
  18. package/dist/components/modals/WindowModal.js.map +1 -1
  19. package/dist/components/modals/hooks/useEscapeKey.js +32 -0
  20. package/dist/components/modals/hooks/useEscapeKey.js.map +1 -0
  21. package/dist/components/modals/hooks/useInitialFocus.js +37 -0
  22. package/dist/components/modals/hooks/useInitialFocus.js.map +1 -0
  23. package/dist/components/modals/hooks/useStyleState.js +44 -0
  24. package/dist/components/modals/hooks/useStyleState.js.map +1 -0
  25. package/dist/components/modals/layout/DialogHeader.js +2 -2
  26. package/dist/components/modals/layout/DialogHeader.js.map +1 -1
  27. package/dist/objects/ApiaUtil/index.d.ts +1 -1
  28. package/dist/objects/ApiaUtil/index.js +9 -22
  29. package/dist/objects/ApiaUtil/index.js.map +1 -1
  30. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.d.ts +1 -0
  31. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js +8 -6
  32. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js.map +1 -1
  33. package/dist/objects/ApiaUtil/modals/ApiaUtilModals.js.map +1 -1
  34. package/dist/objects/ApiaUtil/modals/OpenModal.d.ts +1 -1
  35. package/dist/objects/ApiaUtil/modals/OpenModal.js.map +1 -1
  36. package/dist/tabs/tabsController.js +2 -2
  37. package/dist/tabs/tabsController.js.map +1 -1
  38. package/package.json +8 -8
@@ -1,8 +1,214 @@
1
- import { forwardRef } from 'react';
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((props, ref) => {
4
- return null;
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":"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"}
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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"}
@@ -11,7 +11,7 @@ import { ApiaUtilMouse } from './mouse/ApiaUtilMouse.js';
11
11
  declare class ApiaUtil {
12
12
  #private;
13
13
  static get instance(): ApiaUtil;
14
- constructor();
14
+ private constructor();
15
15
  dialogs: ApiaUtilDialogs;
16
16
  menu: ApiaUtilMenu;
17
17
  modals: ApiaUtilModals;
@@ -52,31 +52,18 @@ const _ApiaUtil = class _ApiaUtil {
52
52
  /* @__PURE__ */ jsx(this.menu.Component, {})
53
53
  ] });
54
54
  });
55
- if (void 0 === __privateGet(_ApiaUtil, _instance)) {
56
- __privateSet(_ApiaUtil, _instance, this);
57
- this.dialogs = new ApiaUtilDialogs();
58
- this.menu = new ApiaUtilMenu();
59
- this.modals = new ApiaUtilModals();
60
- this.mouse = new ApiaUtilMouse();
61
- this.notifications = new ApiaUtilNotifications();
62
- this.parsers = new ApiaUtilParsers();
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 if (undefined === ApiaUtil.#instance) {\n ApiaUtil.#instance = this;\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 } else {\n this.dialogs = ApiaUtil.#instance.dialogs;\n this.menu = ApiaUtil.#instance.menu;\n this.modals = ApiaUtil.#instance.modals;\n this.mouse = ApiaUtil.#instance.mouse;\n this.notifications = ApiaUtil.#instance.notifications;\n this.parsers = ApiaUtil.#instance.parsers;\n this.tabs = ApiaUtil.#instance.tabs;\n this.tooltips = ApiaUtil.#instance.tooltips;\n }\n\n return ApiaUtil.#instance;\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,EAUpB,WAAc,GAAA;AAyBd,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;AA3CE,IAAI,IAAA,KAAA,CAAA,KAAc,wBAAS,SAAW,CAAA,EAAA;AACpC,MAAA,YAAA,CAAA,SAAA,EAAS,SAAY,EAAA,IAAA,CAAA,CAAA;AACrB,MAAK,IAAA,CAAA,OAAA,GAAU,IAAI,eAAgB,EAAA,CAAA;AACnC,MAAK,IAAA,CAAA,IAAA,GAAO,IAAI,YAAa,EAAA,CAAA;AAC7B,MAAK,IAAA,CAAA,MAAA,GAAS,IAAI,cAAe,EAAA,CAAA;AACjC,MAAK,IAAA,CAAA,KAAA,GAAQ,IAAI,aAAc,EAAA,CAAA;AAC/B,MAAK,IAAA,CAAA,aAAA,GAAgB,IAAI,qBAAsB,EAAA,CAAA;AAC/C,MAAK,IAAA,CAAA,OAAA,GAAU,IAAI,eAAgB,EAAA,CAAA;AACnC,MAAK,IAAA,CAAA,IAAA,GAAO,IAAI,sBAAuB,EAAA,CAAA;AACvC,MAAK,IAAA,CAAA,QAAA,GAAW,IAAI,gBAAiB,EAAA,CAAA;AAAA,KAChC,MAAA;AACL,MAAK,IAAA,CAAA,OAAA,GAAU,wBAAS,SAAU,CAAA,CAAA,OAAA,CAAA;AAClC,MAAK,IAAA,CAAA,IAAA,GAAO,wBAAS,SAAU,CAAA,CAAA,IAAA,CAAA;AAC/B,MAAK,IAAA,CAAA,MAAA,GAAS,wBAAS,SAAU,CAAA,CAAA,MAAA,CAAA;AACjC,MAAK,IAAA,CAAA,KAAA,GAAQ,wBAAS,SAAU,CAAA,CAAA,KAAA,CAAA;AAChC,MAAK,IAAA,CAAA,aAAA,GAAgB,wBAAS,SAAU,CAAA,CAAA,aAAA,CAAA;AACxC,MAAK,IAAA,CAAA,OAAA,GAAU,wBAAS,SAAU,CAAA,CAAA,OAAA,CAAA;AAClC,MAAK,IAAA,CAAA,IAAA,GAAO,wBAAS,SAAU,CAAA,CAAA,IAAA,CAAA;AAC/B,MAAK,IAAA,CAAA,QAAA,GAAW,wBAAS,SAAU,CAAA,CAAA,QAAA,CAAA;AAAA,KACrC;AAEA,IAAA,OAAO,YAAS,CAAA,SAAA,EAAA,SAAA,CAAA,CAAA;AAAA,GAClB;AAAA,EA/BA,WAAkB,QAAW,GAAA;AAC3B,IAAI,IAAA,CAAC,mBAAK,SAAW,CAAA,EAAA;AACnB,MAAA,IAAI,SAAS,EAAA,CAAA;AAAA,KACf;AAEA,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAAA,GACd;AA+CF,CAAA,CAAA;AAtDS,SAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAAP,YAAA,CADW,WACJ,SAAP,EAAA,KAAA,CAAA,CAAA,CAAA;AADK,IAAM,QAAN,GAAA;;;;"}
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;;;;"}
@@ -11,6 +11,7 @@ type TMenuItem = (MenuItemProps & {
11
11
  type TMenuItems = TMenuItem[];
12
12
  declare class ApiaUtilMenu {
13
13
  #private;
14
+ menuProps: ControlledMenuProps | null;
14
15
  close: () => void;
15
16
  open: ({ menuProps, items, }: {
16
17
  menuProps: ControlledMenuProps;
@@ -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, _menuProps, _hooks, _maxId, _RenderMenu;
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
- __privateAdd(this, _menuProps, null);
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
- __privateSet(this, _menuProps, menuProps);
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
- ...__privateGet(this, _menuProps),
91
+ ...this.menuProps,
92
92
  state: isOpen ? "open" : "closed",
93
- onClose: close,
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 #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={close}\n >\n {this.#RenderMenu({ label: '', items: this.#items })}\n </ControlledMenu>\n );\n };\n}\n"],"names":[],"mappings":"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"}
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, public close: () => void) {}\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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"}
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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"}