@stackone/malachite 2.41.0 → 2.41.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.
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { jsxs as me, Fragment as ve, jsx as C } from "react/jsx-runtime";
|
|
2
|
-
import he, { useContext as be, useState as U, useSyncExternalStore as
|
|
3
|
-
import { createPortal as
|
|
2
|
+
import he, { useContext as be, useState as U, useSyncExternalStore as Pe, useRef as h, useCallback as ge, useEffect as W, useMemo as xe } from "react";
|
|
3
|
+
import { createPortal as Ee } from "react-dom";
|
|
4
4
|
import { ShadowRootWrapper as we } from "../ShadowRootWrapper.js";
|
|
5
|
-
import { PopoverEmpty as Le, PopoverSection as
|
|
5
|
+
import { PopoverEmpty as Le, PopoverSection as Me, PopoverList as ye, PopoverAction as Se, PopoverHeader as Te } from "./PopoverParts.js";
|
|
6
6
|
import { getDeepActiveElement as j } from "./activeElement.js";
|
|
7
|
-
import { elementRef as _e, composeRefs as Ae, chainHandler as
|
|
7
|
+
import { elementRef as _e, composeRefs as Ae, chainHandler as v } from "./composeRefs.js";
|
|
8
8
|
import { pushEscapeLayer as Ce } from "./escapeLayers.js";
|
|
9
9
|
import { MENU_VIEWPORT_PADDING_PX as De } from "./floatingMenuGeometry.js";
|
|
10
|
-
import { FOCUSABLE_SELECTOR as
|
|
10
|
+
import { FOCUSABLE_SELECTOR as Oe } from "./overlayBehaviour.js";
|
|
11
11
|
import { PopoverTreeContext as q } from "./popoverTree.js";
|
|
12
|
-
import { overlayIdentity as
|
|
13
|
-
import { useHoverClose as
|
|
12
|
+
import { overlayIdentity as Ie } from "./portalOverlay.js";
|
|
13
|
+
import { useHoverClose as Ne } from "./useHoverClose.js";
|
|
14
14
|
import { useLatestRef as D } from "./useLatestRef.js";
|
|
15
15
|
import { usePopoverPosition as ke } from "./usePopoverPosition.js";
|
|
16
16
|
import { usePopoverTree as Re } from "./usePopoverTree.js";
|
|
@@ -37,13 +37,13 @@ const Ke = "font-sans box-border overflow-auto outline-none rounded-[var(--malac
|
|
|
37
37
|
const c = o.getRootNode();
|
|
38
38
|
return [o, ...c instanceof ShadowRoot ? V(c.host) : []];
|
|
39
39
|
}, We = () => () => {
|
|
40
|
-
}, je = () => !0, qe = () => !1, G = (o, c) => c ?? o.querySelector(
|
|
40
|
+
}, je = () => !0, qe = () => !1, G = (o, c) => c ?? o.querySelector(Oe) ?? o, Ge = ({
|
|
41
41
|
trigger: o,
|
|
42
42
|
children: c,
|
|
43
43
|
open: b,
|
|
44
44
|
defaultOpen: Y = !1,
|
|
45
45
|
onOpenChange: X,
|
|
46
|
-
placement:
|
|
46
|
+
placement: O = "bottom-start",
|
|
47
47
|
openOn: i = "click",
|
|
48
48
|
width: z = "content",
|
|
49
49
|
padding: F = "small",
|
|
@@ -51,36 +51,36 @@ const Ke = "font-sans box-border overflow-auto outline-none rounded-[var(--malac
|
|
|
51
51
|
offset: Q = "small",
|
|
52
52
|
elevation: Z = "default",
|
|
53
53
|
initialFocusRef: d,
|
|
54
|
-
role:
|
|
54
|
+
role: I = "dialog",
|
|
55
55
|
"aria-label": ee,
|
|
56
56
|
"aria-labelledby": re,
|
|
57
57
|
className: oe = ""
|
|
58
58
|
}) => {
|
|
59
|
-
const te = be(q), [ne, se] = U(Y), t = b ?? ne, ce =
|
|
59
|
+
const te = be(q), [ne, se] = U(Y), t = b ?? ne, ce = Pe(We, je, qe), P = h(null), E = h(null), [u, ue] = U(null), N = h(0), _ = h(!1), w = h(!1), L = h(!1), M = D(t), k = D(b), y = D(X), n = ge(
|
|
60
60
|
(e) => {
|
|
61
|
-
var
|
|
62
|
-
e !==
|
|
61
|
+
var m;
|
|
62
|
+
e !== M.current && (k.current === void 0 && se(e), (m = y.current) == null || m.call(y, e));
|
|
63
63
|
},
|
|
64
|
-
[
|
|
65
|
-
), { pointerInside:
|
|
66
|
-
isOpenRef:
|
|
67
|
-
heldByChildren:
|
|
64
|
+
[M, k, y]
|
|
65
|
+
), { pointerInside: g, focusInside: x, triggerFocused: R, cancelClose: f, scheduleClose: S } = Ne({
|
|
66
|
+
isOpenRef: M,
|
|
67
|
+
heldByChildren: N,
|
|
68
68
|
setOpen: n
|
|
69
69
|
}), { tree: ae, ownedSources: A } = Re({
|
|
70
70
|
parent: te,
|
|
71
71
|
isOpen: t,
|
|
72
72
|
openOn: i,
|
|
73
|
-
isOpenRef:
|
|
74
|
-
heldByChildren:
|
|
75
|
-
cancelClose:
|
|
73
|
+
isOpenRef: M,
|
|
74
|
+
heldByChildren: N,
|
|
75
|
+
cancelClose: f,
|
|
76
76
|
scheduleClose: S
|
|
77
77
|
}), r = ke({
|
|
78
78
|
isOpen: t,
|
|
79
79
|
panel: u,
|
|
80
|
-
hostRef:
|
|
81
|
-
triggerRef:
|
|
80
|
+
hostRef: E,
|
|
81
|
+
triggerRef: P,
|
|
82
82
|
anchorRef: J,
|
|
83
|
-
placement:
|
|
83
|
+
placement: O,
|
|
84
84
|
width: z,
|
|
85
85
|
offset: Q
|
|
86
86
|
});
|
|
@@ -90,40 +90,40 @@ const Ke = "font-sans box-border overflow-auto outline-none rounded-[var(--malac
|
|
|
90
90
|
const e = (a) => {
|
|
91
91
|
const l = a.composedPath();
|
|
92
92
|
He(l, [
|
|
93
|
+
P.current,
|
|
93
94
|
E.current,
|
|
94
|
-
g.current,
|
|
95
95
|
...[...A.current].map((pe) => pe())
|
|
96
96
|
]) || n(!1);
|
|
97
97
|
};
|
|
98
98
|
document.addEventListener("mousedown", e, !0);
|
|
99
|
-
const
|
|
99
|
+
const m = Ce(() => n(!1));
|
|
100
100
|
return () => {
|
|
101
101
|
var l;
|
|
102
|
-
document.removeEventListener("mousedown", e, !0),
|
|
102
|
+
document.removeEventListener("mousedown", e, !0), m(), g.current = !1;
|
|
103
103
|
const a = j();
|
|
104
|
-
|
|
104
|
+
x.current && (!a || a === document.body) && (w.current = !0, (l = P.current) == null || l.focus({ preventScroll: !0 }), w.current = !1), x.current = !1;
|
|
105
105
|
};
|
|
106
|
-
}, [t, n, A,
|
|
106
|
+
}, [t, n, A, g, x]);
|
|
107
107
|
const K = t && u !== null && r !== null;
|
|
108
108
|
W(() => {
|
|
109
109
|
const e = i === "click" || _.current;
|
|
110
110
|
!K || !u || !e || (_.current = !1, G(u, d == null ? void 0 : d.current).focus({ preventScroll: !0 }));
|
|
111
111
|
}, [K, u, i, d]);
|
|
112
112
|
const B = () => {
|
|
113
|
-
if (
|
|
113
|
+
if (f(), t && u) {
|
|
114
114
|
G(u, d == null ? void 0 : d.current).focus({ preventScroll: !0 });
|
|
115
115
|
return;
|
|
116
116
|
}
|
|
117
117
|
_.current = !0, n(!0);
|
|
118
118
|
}, T = (e) => {
|
|
119
|
-
const
|
|
119
|
+
const m = [
|
|
120
|
+
P.current,
|
|
120
121
|
E.current,
|
|
121
|
-
g.current,
|
|
122
122
|
u,
|
|
123
123
|
...[...A.current].map((a) => a())
|
|
124
124
|
];
|
|
125
125
|
return V(e).some(
|
|
126
|
-
(a) =>
|
|
126
|
+
(a) => m.some((l) => l == null ? void 0 : l.contains(a))
|
|
127
127
|
);
|
|
128
128
|
}, $ = (e) => {
|
|
129
129
|
e && queueMicrotask(() => {
|
|
@@ -131,20 +131,23 @@ const Ke = "font-sans box-border overflow-auto outline-none rounded-[var(--malac
|
|
|
131
131
|
});
|
|
132
132
|
}, s = i === "hover" ? {
|
|
133
133
|
onMouseEnter: () => {
|
|
134
|
-
|
|
134
|
+
g.current = !0, f(), n(!0);
|
|
135
135
|
},
|
|
136
136
|
onMouseLeave: () => {
|
|
137
|
-
|
|
137
|
+
g.current = !1, S();
|
|
138
|
+
},
|
|
139
|
+
onPanelMouseOver: () => {
|
|
140
|
+
g.current = !0, f();
|
|
138
141
|
}
|
|
139
|
-
} : null,
|
|
140
|
-
() => Ae(H,
|
|
142
|
+
} : null, p = o.props, H = _e(o), le = xe(
|
|
143
|
+
() => Ae(H, P),
|
|
141
144
|
[H]
|
|
142
|
-
), ie = Ue[
|
|
145
|
+
), ie = Ue[O.split("-")[0]], de = he.cloneElement(o, {
|
|
143
146
|
ref: le,
|
|
144
|
-
"aria-haspopup":
|
|
147
|
+
"aria-haspopup": I,
|
|
145
148
|
"aria-expanded": t,
|
|
146
|
-
onClick:
|
|
147
|
-
|
|
149
|
+
onClick: v(
|
|
150
|
+
p.onClick,
|
|
148
151
|
(e) => {
|
|
149
152
|
if (i !== "hover") {
|
|
150
153
|
n(!t);
|
|
@@ -154,39 +157,39 @@ const Ke = "font-sans box-border overflow-auto outline-none rounded-[var(--malac
|
|
|
154
157
|
B();
|
|
155
158
|
return;
|
|
156
159
|
}
|
|
157
|
-
|
|
160
|
+
f(), n(!0);
|
|
158
161
|
}
|
|
159
162
|
),
|
|
160
163
|
...s ? {
|
|
161
|
-
onMouseEnter:
|
|
162
|
-
|
|
164
|
+
onMouseEnter: v(
|
|
165
|
+
p.onMouseEnter,
|
|
163
166
|
s.onMouseEnter
|
|
164
167
|
),
|
|
165
|
-
onMouseLeave:
|
|
166
|
-
|
|
168
|
+
onMouseLeave: v(
|
|
169
|
+
p.onMouseLeave,
|
|
167
170
|
s.onMouseLeave
|
|
168
171
|
),
|
|
169
|
-
onMouseDown:
|
|
170
|
-
|
|
172
|
+
onMouseDown: v(
|
|
173
|
+
p.onMouseDown,
|
|
171
174
|
() => {
|
|
172
|
-
|
|
173
|
-
|
|
175
|
+
L.current = !0, setTimeout(() => {
|
|
176
|
+
L.current = !1;
|
|
174
177
|
});
|
|
175
178
|
}
|
|
176
179
|
),
|
|
177
|
-
onFocus:
|
|
178
|
-
const e =
|
|
179
|
-
|
|
180
|
+
onFocus: v(p.onFocus, () => {
|
|
181
|
+
const e = L.current;
|
|
182
|
+
L.current = !1, R.current = !e && !w.current, !w.current && (f(), n(!0));
|
|
180
183
|
}),
|
|
181
|
-
onKeyDown:
|
|
182
|
-
|
|
184
|
+
onKeyDown: v(
|
|
185
|
+
p.onKeyDown,
|
|
183
186
|
(e) => {
|
|
184
187
|
e.key === ie && (e.preventDefault(), B());
|
|
185
188
|
}
|
|
186
189
|
)
|
|
187
190
|
} : {},
|
|
188
|
-
onBlur:
|
|
189
|
-
|
|
191
|
+
onBlur: v(
|
|
192
|
+
p.onBlur,
|
|
190
193
|
(e) => {
|
|
191
194
|
if (R.current = !1, !(!t || T(e.relatedTarget))) {
|
|
192
195
|
if (i === "hover") {
|
|
@@ -204,12 +207,12 @@ const Ke = "font-sans box-border overflow-auto outline-none rounded-[var(--malac
|
|
|
204
207
|
};
|
|
205
208
|
return /* @__PURE__ */ me(ve, { children: [
|
|
206
209
|
de,
|
|
207
|
-
t && ce &&
|
|
210
|
+
t && ce && Ee(
|
|
208
211
|
/* @__PURE__ */ C(q.Provider, { value: ae, children: /* @__PURE__ */ C(
|
|
209
212
|
we,
|
|
210
213
|
{
|
|
211
|
-
hostRef:
|
|
212
|
-
hostProps:
|
|
214
|
+
hostRef: E,
|
|
215
|
+
hostProps: Ie("popover"),
|
|
213
216
|
hostStyle: {
|
|
214
217
|
position: "fixed",
|
|
215
218
|
top: (r == null ? void 0 : r.top) ?? 0,
|
|
@@ -219,21 +222,21 @@ const Ke = "font-sans box-border overflow-auto outline-none rounded-[var(--malac
|
|
|
219
222
|
"div",
|
|
220
223
|
{
|
|
221
224
|
ref: ue,
|
|
222
|
-
role:
|
|
225
|
+
role: I,
|
|
223
226
|
"aria-label": ee,
|
|
224
227
|
"aria-labelledby": re,
|
|
225
228
|
"data-side": r == null ? void 0 : r.side,
|
|
226
229
|
tabIndex: -1,
|
|
227
230
|
className: `${Ke} ${Be[Z]} ${$e[F]} ${oe}`.trim(),
|
|
228
231
|
style: fe,
|
|
229
|
-
|
|
232
|
+
onMouseOver: s == null ? void 0 : s.onPanelMouseOver,
|
|
230
233
|
onMouseLeave: s == null ? void 0 : s.onMouseLeave,
|
|
231
234
|
onFocus: () => {
|
|
232
|
-
|
|
235
|
+
x.current = !0, f();
|
|
233
236
|
},
|
|
234
237
|
onBlur: (e) => {
|
|
235
238
|
if (!T(e.relatedTarget)) {
|
|
236
|
-
if (
|
|
239
|
+
if (x.current = !1, i === "hover") {
|
|
237
240
|
S();
|
|
238
241
|
return;
|
|
239
242
|
}
|
|
@@ -251,8 +254,8 @@ const Ke = "font-sans box-border overflow-auto outline-none rounded-[var(--malac
|
|
|
251
254
|
}, lr = Object.assign(Ge, {
|
|
252
255
|
Header: Te,
|
|
253
256
|
Action: Se,
|
|
254
|
-
List:
|
|
255
|
-
Section:
|
|
257
|
+
List: ye,
|
|
258
|
+
Section: Me,
|
|
256
259
|
Empty: Le
|
|
257
260
|
});
|
|
258
261
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popover.js","sources":["../../src/components/Popover.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { ShadowRootWrapper } from '../ShadowRootWrapper';\nimport {\n PopoverAction,\n PopoverEmpty,\n PopoverHeader,\n PopoverList,\n PopoverSection,\n} from './PopoverParts';\nimport { getDeepActiveElement } from './activeElement';\nimport { chainHandler, composeRefs, elementRef } from './composeRefs';\nimport { pushEscapeLayer } from './escapeLayers';\nimport {\n type FloatingOffset,\n type FloatingPlacement,\n MENU_VIEWPORT_PADDING_PX,\n} from './floatingMenuGeometry';\nimport { FOCUSABLE_SELECTOR } from './overlayBehaviour';\nimport { PopoverTreeContext } from './popoverTree';\nimport { overlayIdentity } from './portalOverlay';\nimport { useHoverClose } from './useHoverClose';\nimport { useLatestRef } from './useLatestRef';\nimport { usePopoverPosition } from './usePopoverPosition';\nimport { usePopoverTree } from './usePopoverTree';\n\nexport type PopoverPlacement = FloatingPlacement;\n\ninterface PopoverBaseProps {\n trigger: React.ReactElement;\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placement?: PopoverPlacement;\n openOn?: 'click' | 'hover';\n width?: 'content' | 'trigger';\n padding?: 'none' | 'small' | 'medium';\n anchorRef?: React.RefObject<HTMLElement | null>;\n offset?: FloatingOffset;\n elevation?: 'default' | 'raised';\n initialFocusRef?: React.RefObject<HTMLElement | null>;\n role?: 'dialog' | 'menu' | 'listbox';\n className?: string;\n}\n\ntype PopoverName =\n | { 'aria-label': string; 'aria-labelledby'?: string }\n | { 'aria-label'?: string; 'aria-labelledby': string };\n\nexport type PopoverProps = PopoverBaseProps & PopoverName;\n\nconst PANEL =\n 'font-sans box-border overflow-auto outline-none rounded-[var(--malachite-radius-xl,12px)] border border-solid border-[var(--malachite-card-border,rgb(232,232,232))] bg-[var(--malachite-card-background,rgb(255,255,255))] text-[var(--malachite-text-primary,rgb(10,10,10))]';\n\nconst ELEVATION: Record<NonNullable<PopoverBaseProps['elevation']>, string> = {\n default: '[box-shadow:0px_4px_10px_0px_var(--malachite-card-shadow,rgba(0,0,0,0.1))]',\n raised: '[box-shadow:0px_8px_24px_0px_var(--malachite-card-shadow,rgba(0,0,0,0.1))]',\n};\n\nconst PADDING: Record<NonNullable<PopoverBaseProps['padding']>, string> = {\n none: 'p-0',\n small: 'p-1',\n medium: 'p-2',\n};\n\nconst pathHits = (path: EventTarget[], nodes: Iterable<Element | null | undefined>): boolean => {\n for (const node of nodes) {\n if (node && path.includes(node)) {\n return true;\n }\n }\n return false;\n};\n\nconst KEYBOARD_OPEN_KEY: Record<string, string> = {\n bottom: 'ArrowDown',\n top: 'ArrowUp',\n right: 'ArrowRight',\n left: 'ArrowLeft',\n};\n\nconst composedPathOf = (node: EventTarget | null): Node[] => {\n if (!(node instanceof Node)) {\n return [];\n }\n const root = node.getRootNode();\n return [node, ...(root instanceof ShadowRoot ? composedPathOf(root.host) : [])];\n};\n\nconst subscribeToNothing = () => () => undefined;\nconst onClient = () => true;\nconst onServer = () => false;\n\nconst focusTarget = (panel: HTMLElement, initial: HTMLElement | null | undefined): HTMLElement =>\n initial ?? panel.querySelector<HTMLElement>(FOCUSABLE_SELECTOR) ?? panel;\n\n/** An anchored, non-modal panel; nested Popovers count as inside their parent. */\nconst PopoverRoot: React.FC<PopoverProps> = ({\n trigger,\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom-start',\n openOn = 'click',\n width = 'content',\n padding = 'small',\n anchorRef,\n offset = 'small',\n elevation = 'default',\n initialFocusRef,\n role = 'dialog',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n className = '',\n}) => {\n const parent = useContext(PopoverTreeContext);\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isOpen = controlledOpen ?? uncontrolledOpen;\n const isClient = useSyncExternalStore(subscribeToNothing, onClient, onServer);\n\n const triggerRef = useRef<HTMLElement | null>(null);\n const hostRef = useRef<HTMLDivElement | null>(null);\n const [panel, setPanel] = useState<HTMLDivElement | null>(null);\n const heldByChildren = useRef(0);\n const focusOnOpen = useRef(false);\n const returningFocus = useRef(false);\n const pointerPressedTrigger = useRef(false);\n\n const isOpenRef = useLatestRef(isOpen);\n const controlledRef = useLatestRef(controlledOpen);\n const onOpenChangeRef = useLatestRef(onOpenChange);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (next === isOpenRef.current) {\n return;\n }\n if (controlledRef.current === undefined) {\n setUncontrolledOpen(next);\n }\n onOpenChangeRef.current?.(next);\n },\n [isOpenRef, controlledRef, onOpenChangeRef],\n );\n\n const { pointerInside, focusInside, triggerFocused, cancelClose, scheduleClose } =\n useHoverClose({\n isOpenRef,\n heldByChildren,\n setOpen,\n });\n\n const { tree, ownedSources } = usePopoverTree({\n parent,\n isOpen,\n openOn,\n isOpenRef,\n heldByChildren,\n cancelClose,\n scheduleClose,\n });\n\n const geometry = usePopoverPosition({\n isOpen,\n panel,\n hostRef,\n triggerRef,\n anchorRef,\n placement,\n width,\n offset,\n });\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n const closeOnOutsidePress = (event: MouseEvent) => {\n const path = event.composedPath();\n const inside = pathHits(path, [\n triggerRef.current,\n hostRef.current,\n ...[...ownedSources.current].map((source) => source()),\n ]);\n if (!inside) {\n setOpen(false);\n }\n };\n document.addEventListener('mousedown', closeOnOutsidePress, true);\n const popEscapeLayer = pushEscapeLayer(() => setOpen(false));\n return () => {\n document.removeEventListener('mousedown', closeOnOutsidePress, true);\n popEscapeLayer();\n pointerInside.current = false;\n const active = getDeepActiveElement();\n if (focusInside.current && (!active || active === document.body)) {\n returningFocus.current = true;\n triggerRef.current?.focus({ preventScroll: true });\n returningFocus.current = false;\n }\n focusInside.current = false;\n };\n }, [isOpen, setOpen, ownedSources, pointerInside, focusInside]);\n\n const shown = isOpen && panel !== null && geometry !== null;\n\n useEffect(() => {\n const shouldFocus = openOn === 'click' || focusOnOpen.current;\n if (!shown || !panel || !shouldFocus) {\n return;\n }\n focusOnOpen.current = false;\n focusTarget(panel, initialFocusRef?.current).focus({ preventScroll: true });\n }, [shown, panel, openOn, initialFocusRef]);\n\n const openWithFocus = () => {\n cancelClose();\n if (isOpen && panel) {\n focusTarget(panel, initialFocusRef?.current).focus({ preventScroll: true });\n return;\n }\n focusOnOpen.current = true;\n setOpen(true);\n };\n\n const isInside = (node: EventTarget | null): boolean => {\n const containers = [\n triggerRef.current,\n hostRef.current,\n panel,\n ...[...ownedSources.current].map((source) => source()),\n ];\n return composedPathOf(node).some((step) =>\n containers.some((container) => container?.contains(step)),\n );\n };\n\n const closeIfFocusLeft = (next: EventTarget | null) => {\n if (!next) {\n return;\n }\n queueMicrotask(() => {\n if (!isInside(next) && !isInside(getDeepActiveElement())) {\n setOpen(false);\n }\n });\n };\n\n const hoverHandlers =\n openOn === 'hover'\n ? {\n onMouseEnter: () => {\n pointerInside.current = true;\n cancelClose();\n setOpen(true);\n },\n onMouseLeave: () => {\n pointerInside.current = false;\n scheduleClose();\n },\n }\n : null;\n\n const triggerProps = trigger.props as Record<string, unknown>;\n type Handler<E extends React.SyntheticEvent> = ((event: E) => void) | undefined;\n\n const ownTriggerRef = elementRef<HTMLElement>(trigger);\n const composedTriggerRef = useMemo(\n () => composeRefs(ownTriggerRef, triggerRef),\n [ownTriggerRef],\n );\n const openKey = KEYBOARD_OPEN_KEY[placement.split('-')[0]];\n\n const clonedTrigger = React.cloneElement(trigger, {\n ref: composedTriggerRef,\n 'aria-haspopup': role,\n 'aria-expanded': isOpen,\n onClick: chainHandler(\n triggerProps.onClick as Handler<React.MouseEvent>,\n (event: React.MouseEvent) => {\n if (openOn !== 'hover') {\n setOpen(!isOpen);\n return;\n }\n const fromKeyboard = event.detail === 0;\n if (fromKeyboard) {\n openWithFocus();\n return;\n }\n cancelClose();\n setOpen(true);\n },\n ),\n ...(hoverHandlers\n ? {\n onMouseEnter: chainHandler(\n triggerProps.onMouseEnter as Handler<React.MouseEvent>,\n hoverHandlers.onMouseEnter,\n ),\n onMouseLeave: chainHandler(\n triggerProps.onMouseLeave as Handler<React.MouseEvent>,\n hoverHandlers.onMouseLeave,\n ),\n onMouseDown: chainHandler(\n triggerProps.onMouseDown as Handler<React.MouseEvent>,\n () => {\n pointerPressedTrigger.current = true;\n setTimeout(() => {\n pointerPressedTrigger.current = false;\n });\n },\n ),\n onFocus: chainHandler(triggerProps.onFocus as Handler<React.FocusEvent>, () => {\n const fromPointer = pointerPressedTrigger.current;\n pointerPressedTrigger.current = false;\n triggerFocused.current = !fromPointer && !returningFocus.current;\n if (returningFocus.current) {\n return;\n }\n cancelClose();\n setOpen(true);\n }),\n onKeyDown: chainHandler(\n triggerProps.onKeyDown as Handler<React.KeyboardEvent>,\n (event: React.KeyboardEvent) => {\n if (event.key !== openKey) {\n return;\n }\n event.preventDefault();\n openWithFocus();\n },\n ),\n }\n : {}),\n onBlur: chainHandler(\n triggerProps.onBlur as Handler<React.FocusEvent>,\n (event: React.FocusEvent) => {\n triggerFocused.current = false;\n if (!isOpen || isInside(event.relatedTarget)) {\n return;\n }\n if (openOn === 'hover') {\n scheduleClose();\n return;\n }\n closeIfFocusLeft(event.relatedTarget);\n },\n ),\n } as Record<string, unknown>);\n\n const panelStyle: React.CSSProperties = {\n maxHeight: geometry?.maxHeight,\n maxWidth: `calc(100vw - ${MENU_VIEWPORT_PADDING_PX * 2}px)`,\n visibility: geometry ? 'visible' : 'hidden',\n };\n\n return (\n <>\n {clonedTrigger}\n {isOpen &&\n isClient &&\n createPortal(\n <PopoverTreeContext.Provider value={tree}>\n <ShadowRootWrapper\n hostRef={hostRef}\n hostProps={overlayIdentity('popover')}\n hostStyle={{\n position: 'fixed',\n top: geometry?.top ?? 0,\n left: geometry?.left ?? 0,\n }}\n >\n <div\n ref={setPanel}\n role={role}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n data-side={geometry?.side}\n tabIndex={-1}\n className={`${PANEL} ${ELEVATION[elevation]} ${PADDING[padding]} ${className}`.trim()}\n style={panelStyle}\n onMouseEnter={hoverHandlers?.onMouseEnter}\n onMouseLeave={hoverHandlers?.onMouseLeave}\n onFocus={() => {\n focusInside.current = true;\n cancelClose();\n }}\n onBlur={(event) => {\n if (isInside(event.relatedTarget)) {\n return;\n }\n focusInside.current = false;\n if (openOn === 'hover') {\n scheduleClose();\n return;\n }\n closeIfFocusLeft(event.relatedTarget);\n }}\n >\n {children}\n </div>\n </ShadowRootWrapper>\n </PopoverTreeContext.Provider>,\n document.body,\n )}\n </>\n );\n};\n\nexport const Popover = Object.assign(PopoverRoot, {\n Header: PopoverHeader,\n Action: PopoverAction,\n List: PopoverList,\n Section: PopoverSection,\n Empty: PopoverEmpty,\n});\n\nexport default Popover;\n"],"names":["PANEL","ELEVATION","PADDING","pathHits","path","nodes","node","KEYBOARD_OPEN_KEY","composedPathOf","root","subscribeToNothing","onClient","onServer","focusTarget","panel","initial","FOCUSABLE_SELECTOR","PopoverRoot","trigger","children","controlledOpen","defaultOpen","onOpenChange","placement","openOn","width","padding","anchorRef","offset","elevation","initialFocusRef","role","ariaLabel","ariaLabelledBy","className","parent","useContext","PopoverTreeContext","uncontrolledOpen","setUncontrolledOpen","useState","isOpen","isClient","useSyncExternalStore","triggerRef","useRef","hostRef","setPanel","heldByChildren","focusOnOpen","returningFocus","pointerPressedTrigger","isOpenRef","useLatestRef","controlledRef","onOpenChangeRef","setOpen","useCallback","next","_a","pointerInside","focusInside","triggerFocused","cancelClose","scheduleClose","useHoverClose","tree","ownedSources","usePopoverTree","geometry","usePopoverPosition","useEffect","closeOnOutsidePress","event","source","popEscapeLayer","pushEscapeLayer","active","getDeepActiveElement","shown","shouldFocus","openWithFocus","isInside","containers","step","container","closeIfFocusLeft","hoverHandlers","triggerProps","ownTriggerRef","elementRef","composedTriggerRef","useMemo","composeRefs","openKey","clonedTrigger","React","chainHandler","fromPointer","panelStyle","MENU_VIEWPORT_PADDING_PX","jsxs","Fragment","createPortal","jsx","ShadowRootWrapper","overlayIdentity","Popover","PopoverHeader","PopoverAction","PopoverList","PopoverSection","PopoverEmpty"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Popover.js","sources":["../../src/components/Popover.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { ShadowRootWrapper } from '../ShadowRootWrapper';\nimport {\n PopoverAction,\n PopoverEmpty,\n PopoverHeader,\n PopoverList,\n PopoverSection,\n} from './PopoverParts';\nimport { getDeepActiveElement } from './activeElement';\nimport { chainHandler, composeRefs, elementRef } from './composeRefs';\nimport { pushEscapeLayer } from './escapeLayers';\nimport {\n type FloatingOffset,\n type FloatingPlacement,\n MENU_VIEWPORT_PADDING_PX,\n} from './floatingMenuGeometry';\nimport { FOCUSABLE_SELECTOR } from './overlayBehaviour';\nimport { PopoverTreeContext } from './popoverTree';\nimport { overlayIdentity } from './portalOverlay';\nimport { useHoverClose } from './useHoverClose';\nimport { useLatestRef } from './useLatestRef';\nimport { usePopoverPosition } from './usePopoverPosition';\nimport { usePopoverTree } from './usePopoverTree';\n\nexport type PopoverPlacement = FloatingPlacement;\n\ninterface PopoverBaseProps {\n trigger: React.ReactElement;\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placement?: PopoverPlacement;\n openOn?: 'click' | 'hover';\n width?: 'content' | 'trigger';\n padding?: 'none' | 'small' | 'medium';\n anchorRef?: React.RefObject<HTMLElement | null>;\n offset?: FloatingOffset;\n elevation?: 'default' | 'raised';\n initialFocusRef?: React.RefObject<HTMLElement | null>;\n role?: 'dialog' | 'menu' | 'listbox';\n className?: string;\n}\n\ntype PopoverName =\n | { 'aria-label': string; 'aria-labelledby'?: string }\n | { 'aria-label'?: string; 'aria-labelledby': string };\n\nexport type PopoverProps = PopoverBaseProps & PopoverName;\n\nconst PANEL =\n 'font-sans box-border overflow-auto outline-none rounded-[var(--malachite-radius-xl,12px)] border border-solid border-[var(--malachite-card-border,rgb(232,232,232))] bg-[var(--malachite-card-background,rgb(255,255,255))] text-[var(--malachite-text-primary,rgb(10,10,10))]';\n\nconst ELEVATION: Record<NonNullable<PopoverBaseProps['elevation']>, string> = {\n default: '[box-shadow:0px_4px_10px_0px_var(--malachite-card-shadow,rgba(0,0,0,0.1))]',\n raised: '[box-shadow:0px_8px_24px_0px_var(--malachite-card-shadow,rgba(0,0,0,0.1))]',\n};\n\nconst PADDING: Record<NonNullable<PopoverBaseProps['padding']>, string> = {\n none: 'p-0',\n small: 'p-1',\n medium: 'p-2',\n};\n\nconst pathHits = (path: EventTarget[], nodes: Iterable<Element | null | undefined>): boolean => {\n for (const node of nodes) {\n if (node && path.includes(node)) {\n return true;\n }\n }\n return false;\n};\n\nconst KEYBOARD_OPEN_KEY: Record<string, string> = {\n bottom: 'ArrowDown',\n top: 'ArrowUp',\n right: 'ArrowRight',\n left: 'ArrowLeft',\n};\n\nconst composedPathOf = (node: EventTarget | null): Node[] => {\n if (!(node instanceof Node)) {\n return [];\n }\n const root = node.getRootNode();\n return [node, ...(root instanceof ShadowRoot ? composedPathOf(root.host) : [])];\n};\n\nconst subscribeToNothing = () => () => undefined;\nconst onClient = () => true;\nconst onServer = () => false;\n\nconst focusTarget = (panel: HTMLElement, initial: HTMLElement | null | undefined): HTMLElement =>\n initial ?? panel.querySelector<HTMLElement>(FOCUSABLE_SELECTOR) ?? panel;\n\n/** An anchored, non-modal panel; nested Popovers count as inside their parent. */\nconst PopoverRoot: React.FC<PopoverProps> = ({\n trigger,\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom-start',\n openOn = 'click',\n width = 'content',\n padding = 'small',\n anchorRef,\n offset = 'small',\n elevation = 'default',\n initialFocusRef,\n role = 'dialog',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n className = '',\n}) => {\n const parent = useContext(PopoverTreeContext);\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isOpen = controlledOpen ?? uncontrolledOpen;\n const isClient = useSyncExternalStore(subscribeToNothing, onClient, onServer);\n\n const triggerRef = useRef<HTMLElement | null>(null);\n const hostRef = useRef<HTMLDivElement | null>(null);\n const [panel, setPanel] = useState<HTMLDivElement | null>(null);\n const heldByChildren = useRef(0);\n const focusOnOpen = useRef(false);\n const returningFocus = useRef(false);\n const pointerPressedTrigger = useRef(false);\n\n const isOpenRef = useLatestRef(isOpen);\n const controlledRef = useLatestRef(controlledOpen);\n const onOpenChangeRef = useLatestRef(onOpenChange);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (next === isOpenRef.current) {\n return;\n }\n if (controlledRef.current === undefined) {\n setUncontrolledOpen(next);\n }\n onOpenChangeRef.current?.(next);\n },\n [isOpenRef, controlledRef, onOpenChangeRef],\n );\n\n const { pointerInside, focusInside, triggerFocused, cancelClose, scheduleClose } =\n useHoverClose({\n isOpenRef,\n heldByChildren,\n setOpen,\n });\n\n const { tree, ownedSources } = usePopoverTree({\n parent,\n isOpen,\n openOn,\n isOpenRef,\n heldByChildren,\n cancelClose,\n scheduleClose,\n });\n\n const geometry = usePopoverPosition({\n isOpen,\n panel,\n hostRef,\n triggerRef,\n anchorRef,\n placement,\n width,\n offset,\n });\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n const closeOnOutsidePress = (event: MouseEvent) => {\n const path = event.composedPath();\n const inside = pathHits(path, [\n triggerRef.current,\n hostRef.current,\n ...[...ownedSources.current].map((source) => source()),\n ]);\n if (!inside) {\n setOpen(false);\n }\n };\n document.addEventListener('mousedown', closeOnOutsidePress, true);\n const popEscapeLayer = pushEscapeLayer(() => setOpen(false));\n return () => {\n document.removeEventListener('mousedown', closeOnOutsidePress, true);\n popEscapeLayer();\n pointerInside.current = false;\n const active = getDeepActiveElement();\n if (focusInside.current && (!active || active === document.body)) {\n returningFocus.current = true;\n triggerRef.current?.focus({ preventScroll: true });\n returningFocus.current = false;\n }\n focusInside.current = false;\n };\n }, [isOpen, setOpen, ownedSources, pointerInside, focusInside]);\n\n const shown = isOpen && panel !== null && geometry !== null;\n\n useEffect(() => {\n const shouldFocus = openOn === 'click' || focusOnOpen.current;\n if (!shown || !panel || !shouldFocus) {\n return;\n }\n focusOnOpen.current = false;\n focusTarget(panel, initialFocusRef?.current).focus({ preventScroll: true });\n }, [shown, panel, openOn, initialFocusRef]);\n\n const openWithFocus = () => {\n cancelClose();\n if (isOpen && panel) {\n focusTarget(panel, initialFocusRef?.current).focus({ preventScroll: true });\n return;\n }\n focusOnOpen.current = true;\n setOpen(true);\n };\n\n const isInside = (node: EventTarget | null): boolean => {\n const containers = [\n triggerRef.current,\n hostRef.current,\n panel,\n ...[...ownedSources.current].map((source) => source()),\n ];\n return composedPathOf(node).some((step) =>\n containers.some((container) => container?.contains(step)),\n );\n };\n\n const closeIfFocusLeft = (next: EventTarget | null) => {\n if (!next) {\n return;\n }\n queueMicrotask(() => {\n if (!isInside(next) && !isInside(getDeepActiveElement())) {\n setOpen(false);\n }\n });\n };\n\n const hoverHandlers =\n openOn === 'hover'\n ? {\n onMouseEnter: () => {\n pointerInside.current = true;\n cancelClose();\n setOpen(true);\n },\n onMouseLeave: () => {\n pointerInside.current = false;\n scheduleClose();\n },\n onPanelMouseOver: () => {\n pointerInside.current = true;\n cancelClose();\n },\n }\n : null;\n\n const triggerProps = trigger.props as Record<string, unknown>;\n type Handler<E extends React.SyntheticEvent> = ((event: E) => void) | undefined;\n\n const ownTriggerRef = elementRef<HTMLElement>(trigger);\n const composedTriggerRef = useMemo(\n () => composeRefs(ownTriggerRef, triggerRef),\n [ownTriggerRef],\n );\n const openKey = KEYBOARD_OPEN_KEY[placement.split('-')[0]];\n\n const clonedTrigger = React.cloneElement(trigger, {\n ref: composedTriggerRef,\n 'aria-haspopup': role,\n 'aria-expanded': isOpen,\n onClick: chainHandler(\n triggerProps.onClick as Handler<React.MouseEvent>,\n (event: React.MouseEvent) => {\n if (openOn !== 'hover') {\n setOpen(!isOpen);\n return;\n }\n const fromKeyboard = event.detail === 0;\n if (fromKeyboard) {\n openWithFocus();\n return;\n }\n cancelClose();\n setOpen(true);\n },\n ),\n ...(hoverHandlers\n ? {\n onMouseEnter: chainHandler(\n triggerProps.onMouseEnter as Handler<React.MouseEvent>,\n hoverHandlers.onMouseEnter,\n ),\n onMouseLeave: chainHandler(\n triggerProps.onMouseLeave as Handler<React.MouseEvent>,\n hoverHandlers.onMouseLeave,\n ),\n onMouseDown: chainHandler(\n triggerProps.onMouseDown as Handler<React.MouseEvent>,\n () => {\n pointerPressedTrigger.current = true;\n setTimeout(() => {\n pointerPressedTrigger.current = false;\n });\n },\n ),\n onFocus: chainHandler(triggerProps.onFocus as Handler<React.FocusEvent>, () => {\n const fromPointer = pointerPressedTrigger.current;\n pointerPressedTrigger.current = false;\n triggerFocused.current = !fromPointer && !returningFocus.current;\n if (returningFocus.current) {\n return;\n }\n cancelClose();\n setOpen(true);\n }),\n onKeyDown: chainHandler(\n triggerProps.onKeyDown as Handler<React.KeyboardEvent>,\n (event: React.KeyboardEvent) => {\n if (event.key !== openKey) {\n return;\n }\n event.preventDefault();\n openWithFocus();\n },\n ),\n }\n : {}),\n onBlur: chainHandler(\n triggerProps.onBlur as Handler<React.FocusEvent>,\n (event: React.FocusEvent) => {\n triggerFocused.current = false;\n if (!isOpen || isInside(event.relatedTarget)) {\n return;\n }\n if (openOn === 'hover') {\n scheduleClose();\n return;\n }\n closeIfFocusLeft(event.relatedTarget);\n },\n ),\n } as Record<string, unknown>);\n\n const panelStyle: React.CSSProperties = {\n maxHeight: geometry?.maxHeight,\n maxWidth: `calc(100vw - ${MENU_VIEWPORT_PADDING_PX * 2}px)`,\n visibility: geometry ? 'visible' : 'hidden',\n };\n\n return (\n <>\n {clonedTrigger}\n {isOpen &&\n isClient &&\n createPortal(\n <PopoverTreeContext.Provider value={tree}>\n <ShadowRootWrapper\n hostRef={hostRef}\n hostProps={overlayIdentity('popover')}\n hostStyle={{\n position: 'fixed',\n top: geometry?.top ?? 0,\n left: geometry?.left ?? 0,\n }}\n >\n <div\n ref={setPanel}\n role={role}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n data-side={geometry?.side}\n tabIndex={-1}\n className={`${PANEL} ${ELEVATION[elevation]} ${PADDING[padding]} ${className}`.trim()}\n style={panelStyle}\n // React's mouseenter stops at the shadow host, so the panel listens for mouseover.\n onMouseOver={hoverHandlers?.onPanelMouseOver}\n onMouseLeave={hoverHandlers?.onMouseLeave}\n onFocus={() => {\n focusInside.current = true;\n cancelClose();\n }}\n onBlur={(event) => {\n if (isInside(event.relatedTarget)) {\n return;\n }\n focusInside.current = false;\n if (openOn === 'hover') {\n scheduleClose();\n return;\n }\n closeIfFocusLeft(event.relatedTarget);\n }}\n >\n {children}\n </div>\n </ShadowRootWrapper>\n </PopoverTreeContext.Provider>,\n document.body,\n )}\n </>\n );\n};\n\nexport const Popover = Object.assign(PopoverRoot, {\n Header: PopoverHeader,\n Action: PopoverAction,\n List: PopoverList,\n Section: PopoverSection,\n Empty: PopoverEmpty,\n});\n\nexport default Popover;\n"],"names":["PANEL","ELEVATION","PADDING","pathHits","path","nodes","node","KEYBOARD_OPEN_KEY","composedPathOf","root","subscribeToNothing","onClient","onServer","focusTarget","panel","initial","FOCUSABLE_SELECTOR","PopoverRoot","trigger","children","controlledOpen","defaultOpen","onOpenChange","placement","openOn","width","padding","anchorRef","offset","elevation","initialFocusRef","role","ariaLabel","ariaLabelledBy","className","parent","useContext","PopoverTreeContext","uncontrolledOpen","setUncontrolledOpen","useState","isOpen","isClient","useSyncExternalStore","triggerRef","useRef","hostRef","setPanel","heldByChildren","focusOnOpen","returningFocus","pointerPressedTrigger","isOpenRef","useLatestRef","controlledRef","onOpenChangeRef","setOpen","useCallback","next","_a","pointerInside","focusInside","triggerFocused","cancelClose","scheduleClose","useHoverClose","tree","ownedSources","usePopoverTree","geometry","usePopoverPosition","useEffect","closeOnOutsidePress","event","source","popEscapeLayer","pushEscapeLayer","active","getDeepActiveElement","shown","shouldFocus","openWithFocus","isInside","containers","step","container","closeIfFocusLeft","hoverHandlers","triggerProps","ownTriggerRef","elementRef","composedTriggerRef","useMemo","composeRefs","openKey","clonedTrigger","React","chainHandler","fromPointer","panelStyle","MENU_VIEWPORT_PADDING_PX","jsxs","Fragment","createPortal","jsx","ShadowRootWrapper","overlayIdentity","Popover","PopoverHeader","PopoverAction","PopoverList","PopoverSection","PopoverEmpty"],"mappings":"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"}
|
package/package.json
CHANGED