@banzamel/mineralui 2.1.3 → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{MDropdownMenu-C2lftqSx.cjs → MDropdownMenu-BvN5grK5.cjs} +2 -2
- package/dist/{MDropdownMenu-C2lftqSx.cjs.map → MDropdownMenu-BvN5grK5.cjs.map} +1 -1
- package/dist/{MDropdownMenu-BeD_DxPr.js → MDropdownMenu-CFoKJ7V6.js} +2 -2
- package/dist/{MDropdownMenu-BeD_DxPr.js.map → MDropdownMenu-CFoKJ7V6.js.map} +1 -1
- package/dist/{MInputCVC-DvUOzpYp.js → MInputCVC-B4V0QI5h.js} +2 -2
- package/dist/{MInputCVC-DvUOzpYp.js.map → MInputCVC-B4V0QI5h.js.map} +1 -1
- package/dist/{MInputCVC-_2ALihF1.cjs → MInputCVC-BlY5OrVn.cjs} +2 -2
- package/dist/{MInputCVC-_2ALihF1.cjs.map → MInputCVC-BlY5OrVn.cjs.map} +1 -1
- package/dist/MPopover-C5aaGhma.js +150 -0
- package/dist/MPopover-C5aaGhma.js.map +1 -0
- package/dist/MPopover-CV-9MArH.cjs +2 -0
- package/dist/MPopover-CV-9MArH.cjs.map +1 -0
- package/dist/{cards-fRWZkts9.cjs → cards-CQSYgH9U.cjs} +2 -2
- package/dist/{cards-fRWZkts9.cjs.map → cards-CQSYgH9U.cjs.map} +1 -1
- package/dist/{cards-DYmK8TpL.js → cards-Cpr9B8Mu.js} +4 -4
- package/dist/{cards-DYmK8TpL.js.map → cards-Cpr9B8Mu.js.map} +1 -1
- package/dist/cards.cjs +1 -1
- package/dist/cards.js +1 -1
- package/dist/components/primitives/MPopover/popoverStack.d.ts +32 -0
- package/dist/{data-CuynADWM.cjs → data-BZ92hzXx.cjs} +2 -2
- package/dist/{data-CuynADWM.cjs.map → data-BZ92hzXx.cjs.map} +1 -1
- package/dist/{data-D8WFA3Et.js → data-C-6DP7iY.js} +2 -2
- package/dist/{data-D8WFA3Et.js.map → data-C-6DP7iY.js.map} +1 -1
- package/dist/data.cjs +1 -1
- package/dist/data.js +1 -1
- package/dist/{dropdowns-5cJf-6UG.js → dropdowns-DiThUF7D.js} +2 -2
- package/dist/{dropdowns-5cJf-6UG.js.map → dropdowns-DiThUF7D.js.map} +1 -1
- package/dist/{dropdowns-C-ASvu7P.cjs → dropdowns-bQ0cEKNN.cjs} +2 -2
- package/dist/{dropdowns-C-ASvu7P.cjs.map → dropdowns-bQ0cEKNN.cjs.map} +1 -1
- package/dist/dropdowns.cjs +1 -1
- package/dist/dropdowns.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +8 -8
- package/dist/inputs.cjs +1 -1
- package/dist/inputs.js +1 -1
- package/dist/{layout-i8H5tIbO.js → layout-CdSpVJuK.js} +2 -2
- package/dist/{layout-i8H5tIbO.js.map → layout-CdSpVJuK.js.map} +1 -1
- package/dist/{layout-CfolwT8L.cjs → layout-Ddo7HUPu.cjs} +2 -2
- package/dist/{layout-CfolwT8L.cjs.map → layout-Ddo7HUPu.cjs.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{overlays-zPzbHW5P.cjs → overlays-BUZEaZaJ.cjs} +2 -2
- package/dist/{overlays-zPzbHW5P.cjs.map → overlays-BUZEaZaJ.cjs.map} +1 -1
- package/dist/{overlays-CAcGmqNv.js → overlays-C1vO_A2I.js} +2 -2
- package/dist/{overlays-CAcGmqNv.js.map → overlays-C1vO_A2I.js.map} +1 -1
- package/dist/overlays.cjs +1 -1
- package/dist/overlays.js +2 -2
- package/dist/primitives.cjs +1 -1
- package/dist/primitives.js +1 -1
- package/package.json +1 -1
- package/dist/MPopover-Cweomcj2.cjs +0 -2
- package/dist/MPopover-Cweomcj2.cjs.map +0 -1
- package/dist/MPopover-DT3vclV1.js +0 -98
- package/dist/MPopover-DT3vclV1.js.map +0 -1
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./cn-YER3QsV1.js";
|
|
2
|
-
import { t } from "./MPortal-Ba2Sxset.js";
|
|
3
|
-
import { useCallback as n, useEffect as r, useRef as i, useState as a } from "react";
|
|
4
|
-
import { jsx as o } from "react/jsx-runtime";
|
|
5
|
-
//#region src/components/primitives/MPopover/MPopover.tsx
|
|
6
|
-
function s({ open: s, anchorRef: c, onClose: l, placement: u = "bottom-start", matchWidth: d = !1, offset: f = 4, zIndex: p, children: m, className: h, style: g }) {
|
|
7
|
-
let _ = i(null), [v, y] = a(null), [b, x] = a(!1), [S, C] = a(null), w = n(() => {
|
|
8
|
-
if (p !== void 0) {
|
|
9
|
-
C(p);
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
let e = c.current;
|
|
13
|
-
if (!e || typeof window > "u") {
|
|
14
|
-
C(null);
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
let t = e.closest(".drawer-backdrop, .modal-backdrop, .sheet-backdrop, .sidebar.mobile-open, .popover");
|
|
18
|
-
if (!t) {
|
|
19
|
-
C(null);
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
let n = window.getComputedStyle(t).zIndex, r = Number.parseInt(n, 10);
|
|
23
|
-
C(Number.isFinite(r) ? r + 1 : null);
|
|
24
|
-
}, [c, p]), T = n(() => {
|
|
25
|
-
if (!c.current || !_.current) return;
|
|
26
|
-
let e = c.current.getBoundingClientRect(), t = _.current.getBoundingClientRect(), n = {
|
|
27
|
-
width: window.innerWidth,
|
|
28
|
-
height: window.innerHeight
|
|
29
|
-
}, r = u.startsWith("top"), i = u.startsWith("right"), a = u.startsWith("left"), o = i || a, s = u.endsWith("end"), l, p;
|
|
30
|
-
if (o) {
|
|
31
|
-
let r = n.width - e.right - f, a = e.left - f, o = i ? r < t.width && a > r : a < t.width && r > a;
|
|
32
|
-
x(o), p = (i ? !o : o) ? e.right + f + window.scrollX : e.left - t.width - f + window.scrollX, l = s ? e.bottom - t.height + window.scrollY : e.top + window.scrollY;
|
|
33
|
-
} else {
|
|
34
|
-
let i = n.height - e.bottom - f, a = e.top - f, o = r ? a < t.height && i > a : i < t.height && a > i;
|
|
35
|
-
x(o), l = (r ? !o : o) ? e.top - t.height - f + window.scrollY : e.bottom + f + window.scrollY, p = s ? e.right - t.width + window.scrollX : e.left + window.scrollX;
|
|
36
|
-
}
|
|
37
|
-
p = Math.max(8, Math.min(p, n.width - t.width - 8)), l = Math.max(8 + window.scrollY, l), y({
|
|
38
|
-
top: l,
|
|
39
|
-
left: p,
|
|
40
|
-
width: d ? e.width : void 0
|
|
41
|
-
});
|
|
42
|
-
}, [
|
|
43
|
-
c,
|
|
44
|
-
u,
|
|
45
|
-
f,
|
|
46
|
-
d
|
|
47
|
-
]);
|
|
48
|
-
return r(() => {
|
|
49
|
-
if (!s) {
|
|
50
|
-
y(null), C(null);
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
return w(), requestAnimationFrame(T), document.addEventListener("scroll", T, {
|
|
54
|
-
capture: !0,
|
|
55
|
-
passive: !0
|
|
56
|
-
}), window.addEventListener("resize", T, { passive: !0 }), () => {
|
|
57
|
-
document.removeEventListener("scroll", T, { capture: !0 }), window.removeEventListener("resize", T);
|
|
58
|
-
};
|
|
59
|
-
}, [
|
|
60
|
-
s,
|
|
61
|
-
w,
|
|
62
|
-
T
|
|
63
|
-
]), r(() => {
|
|
64
|
-
if (!s) return;
|
|
65
|
-
let e = (e) => {
|
|
66
|
-
e.key === "Escape" && l();
|
|
67
|
-
};
|
|
68
|
-
return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
|
|
69
|
-
}, [s, l]), r(() => {
|
|
70
|
-
if (!s) return;
|
|
71
|
-
let e = (e) => {
|
|
72
|
-
_.current && !_.current.contains(e.target) && c.current && !c.current.contains(e.target) && l();
|
|
73
|
-
};
|
|
74
|
-
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
75
|
-
}, [
|
|
76
|
-
s,
|
|
77
|
-
l,
|
|
78
|
-
c
|
|
79
|
-
]), s ? /* @__PURE__ */ o(t, { children: /* @__PURE__ */ o("div", {
|
|
80
|
-
ref: _,
|
|
81
|
-
className: e("popover", b ? "flipped" : "normal", h),
|
|
82
|
-
style: {
|
|
83
|
-
position: "absolute",
|
|
84
|
-
top: v?.top ?? 0,
|
|
85
|
-
left: v?.left ?? 0,
|
|
86
|
-
width: v?.width,
|
|
87
|
-
zIndex: S ?? void 0,
|
|
88
|
-
visibility: v ? "visible" : "hidden",
|
|
89
|
-
...g
|
|
90
|
-
},
|
|
91
|
-
role: "listbox",
|
|
92
|
-
children: m
|
|
93
|
-
}) }) : null;
|
|
94
|
-
}
|
|
95
|
-
//#endregion
|
|
96
|
-
export { s as t };
|
|
97
|
-
|
|
98
|
-
//# sourceMappingURL=MPopover-DT3vclV1.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MPopover-DT3vclV1.js","names":[],"sources":["../src/components/primitives/MPopover/MPopover.tsx"],"sourcesContent":["import {useState, useEffect, useRef, useCallback} from 'react'\nimport {MPortal} from '../MPortal'\nimport {cn} from '../../../utils/cn'\nimport type {MPopoverProps} from './MPopover.types'\nimport './MPopover.css'\n\n// Position floating content relative to an anchor with viewport-aware flipping.\nexport function MPopover({\n open,\n anchorRef,\n onClose,\n placement = 'bottom-start',\n matchWidth = false,\n offset = 4,\n zIndex,\n children,\n className,\n style,\n}: MPopoverProps) {\n const popoverRef = useRef<HTMLDivElement>(null)\n const [position, setPosition] = useState<{top: number; left: number; width?: number} | null>(null)\n const [flipped, setFlipped] = useState(false)\n const [layerZ, setLayerZ] = useState<number | string | null>(null)\n\n // Lift popovers above drawers, modals and mobile sidebars when the anchor sits inside them.\n const updateLayer = useCallback(() => {\n if (zIndex !== undefined) {\n setLayerZ(zIndex)\n return\n }\n\n const anchor = anchorRef.current\n if (!anchor || typeof window === 'undefined') {\n setLayerZ(null)\n return\n }\n\n const layerHost = anchor.closest(\n '.drawer-backdrop, .modal-backdrop, .sheet-backdrop, .sidebar.mobile-open, .popover'\n )\n if (!layerHost) {\n setLayerZ(null)\n return\n }\n\n const computedZ = window.getComputedStyle(layerHost).zIndex\n const parsedZ = Number.parseInt(computedZ, 10)\n setLayerZ(Number.isFinite(parsedZ) ? parsedZ + 1 : null)\n }, [anchorRef, zIndex])\n\n // Recalculate popover position whenever layout or viewport constraints change.\n const updatePosition = useCallback(() => {\n if (!anchorRef.current || !popoverRef.current) return\n\n const anchor = anchorRef.current.getBoundingClientRect()\n const popover = popoverRef.current.getBoundingClientRect()\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n }\n\n const isTop = placement.startsWith('top')\n const isRight = placement.startsWith('right')\n const isLeft = placement.startsWith('left')\n const isHorizontal = isRight || isLeft\n const isEnd = placement.endsWith('end')\n\n let top: number\n let left: number\n\n if (isHorizontal) {\n // Horizontal placement: position to the right or left of the anchor\n const spaceRight = viewport.width - anchor.right - offset\n const spaceLeft = anchor.left - offset\n const shouldFlip = isRight\n ? spaceRight < popover.width && spaceLeft > spaceRight\n : spaceLeft < popover.width && spaceRight > spaceLeft\n\n setFlipped(shouldFlip)\n\n const showOnRight = isRight ? !shouldFlip : shouldFlip\n\n if (showOnRight) {\n left = anchor.right + offset + window.scrollX\n } else {\n left = anchor.left - popover.width - offset + window.scrollX\n }\n\n if (isEnd) {\n top = anchor.bottom - popover.height + window.scrollY\n } else {\n top = anchor.top + window.scrollY\n }\n } else {\n // Vertical placement: position above or below the anchor\n const spaceBelow = viewport.height - anchor.bottom - offset\n const spaceAbove = anchor.top - offset\n const shouldFlip = isTop\n ? spaceAbove < popover.height && spaceBelow > spaceAbove\n : spaceBelow < popover.height && spaceAbove > spaceBelow\n\n setFlipped(shouldFlip)\n\n const showOnTop = isTop ? !shouldFlip : shouldFlip\n\n if (showOnTop) {\n top = anchor.top - popover.height - offset + window.scrollY\n } else {\n top = anchor.bottom + offset + window.scrollY\n }\n\n if (isEnd) {\n left = anchor.right - popover.width + window.scrollX\n } else {\n left = anchor.left + window.scrollX\n }\n }\n\n // Clamp to viewport\n left = Math.max(8, Math.min(left, viewport.width - popover.width - 8))\n top = Math.max(8 + window.scrollY, top)\n\n setPosition({\n top,\n left,\n width: matchWidth ? anchor.width : undefined,\n })\n }, [anchorRef, placement, offset, matchWidth])\n\n useEffect(() => {\n if (!open) {\n setPosition(null)\n setLayerZ(null)\n return\n }\n\n updateLayer()\n // Wait one frame so the rendered popover can be measured accurately.\n requestAnimationFrame(updatePosition)\n\n // `scroll` does not bubble, so a window listener only ever sees the\n // document scrolling. Anchors living inside a scrollable ancestor — an\n // app shell with a scrolling main region, MStickyPanel, an overflowing\n // card — would leave the popover stranded at its opening coordinates\n // while the anchor moved away underneath it. Scroll events do capture,\n // so a capture-phase listener on the document catches scrolling from\n // ANY container, including the document itself.\n document.addEventListener('scroll', updatePosition, {capture: true, passive: true})\n window.addEventListener('resize', updatePosition, {passive: true})\n return () => {\n document.removeEventListener('scroll', updatePosition, {capture: true})\n window.removeEventListener('resize', updatePosition)\n }\n }, [open, updateLayer, updatePosition])\n\n // Close the popover with the standard Escape key interaction.\n useEffect(() => {\n if (!open) return\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n }\n document.addEventListener('keydown', handleKey)\n return () => document.removeEventListener('keydown', handleKey)\n }, [open, onClose])\n\n // Close when the user interacts outside both the popover and its anchor.\n useEffect(() => {\n if (!open) return\n const handleClick = (e: MouseEvent) => {\n if (\n popoverRef.current &&\n !popoverRef.current.contains(e.target as Node) &&\n anchorRef.current &&\n !anchorRef.current.contains(e.target as Node)\n ) {\n onClose()\n }\n }\n document.addEventListener('mousedown', handleClick)\n return () => document.removeEventListener('mousedown', handleClick)\n }, [open, onClose, anchorRef])\n\n if (!open) return null\n\n return (\n <MPortal>\n <div\n ref={popoverRef}\n className={cn('popover', flipped ? 'flipped' : 'normal', className)}\n style={{\n position: 'absolute',\n top: position?.top ?? 0,\n left: position?.left ?? 0,\n width: position?.width,\n zIndex: layerZ ?? undefined,\n visibility: position ? 'visible' : 'hidden',\n ...style,\n }}\n role=\"listbox\"\n >\n {children}\n </div>\n </MPortal>\n )\n}\n"],"mappings":"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"}
|