@smwb/ui-solid 2.0.0 → 2.1.0
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 +115 -0
- package/dist/assets/styles/less/components/appBar/appBar.entry.css +1 -1
- package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
- package/dist/assets/styles/less/components/breadcrumbs/breadcrumbs.entry.css +1 -1
- package/dist/assets/styles/less/components/button/button.entry.css +1 -1
- package/dist/assets/styles/less/components/buttonGroup/buttonGroup.entry.css +1 -1
- package/dist/assets/styles/less/components/dagView/dagView.entry.css +1 -1
- package/dist/assets/styles/less/components/meter/meter.entry.css +1 -1
- package/dist/assets/styles/less/components/screenDivider/screenDivider.entry.css +1 -1
- package/dist/assets/styles/less/components/sheet/sheet.entry.css +1 -1
- package/dist/assets/styles/less/components/statusDot/statusDot.entry.css +1 -1
- package/dist/assets/styles/less/components/tabGroups/tabGroups.entry.css +1 -1
- package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
- package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
- package/dist/assets/styles/less/components/treeView/treeView.entry.css +1 -1
- package/dist/assets/styles/less/tokens.entry.css +1 -1
- package/dist/components/dataDisplay/avatar/avatar.d.ts +5 -2
- package/dist/components/dataDisplay/avatar/avatar.js +9 -9
- package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/components/dataDisplay/chart/chart.d.ts +16 -8
- package/dist/components/dataDisplay/chart/chartFull.d.ts +14 -0
- package/dist/components/dataDisplay/chart/core.d.ts +19 -0
- package/dist/components/dataDisplay/chart/index.d.ts +1 -1
- package/dist/components/dataDisplay/dagView/dagView.d.ts +4 -0
- package/dist/components/dataDisplay/dagView/dagView.js +124 -123
- package/dist/components/dataDisplay/dagView/dagView.js.map +1 -1
- package/dist/components/dataDisplay/dagView/index.d.ts +1 -1
- package/dist/components/dataDisplay/meter/index.d.ts +1 -1
- package/dist/components/dataDisplay/meter/meter.d.ts +14 -0
- package/dist/components/dataDisplay/meter/meter.js +32 -30
- package/dist/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/components/dataDisplay/statusDot/index.d.ts +1 -1
- package/dist/components/dataDisplay/statusDot/statusDot.d.ts +10 -1
- package/dist/components/dataDisplay/statusDot/statusDot.js +20 -11
- package/dist/components/dataDisplay/statusDot/statusDot.js.map +1 -1
- package/dist/components/dataDisplay/treeView/treeView.d.ts +18 -2
- package/dist/components/dataDisplay/treeView/treeView.js +140 -121
- package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/components/inputs/button/button.d.ts +7 -0
- package/dist/components/inputs/button/button.js +57 -51
- package/dist/components/inputs/button/button.js.map +1 -1
- package/dist/components/inputs/toggle/toggle.d.ts +6 -0
- package/dist/components/inputs/toggle/toggle.js +23 -23
- package/dist/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/components/layout/appLayout/appLayout.d.ts +6 -1
- package/dist/components/layout/appLayout/appLayout.js +49 -42
- package/dist/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/components/layout/screenDivider/screenDivider.d.ts +12 -0
- package/dist/components/layout/screenDivider/screenDivider.js +87 -46
- package/dist/components/layout/screenDivider/screenDivider.js.map +1 -1
- package/dist/components/layout/sheet/sheet.d.ts +11 -0
- package/dist/components/layout/sheet/sheet.js +122 -102
- package/dist/components/layout/sheet/sheet.js.map +1 -1
- package/dist/components/layout/tabGroups/index.d.ts +1 -1
- package/dist/components/layout/tabGroups/tabGroups.d.ts +44 -1
- package/dist/components/layout/tabGroups/tabGroups.js +500 -460
- package/dist/components/layout/tabGroups/tabGroups.js.map +1 -1
- package/dist/components/layout/tabGroups/tabGroupsFocus.d.ts +16 -0
- package/dist/components/layout/tabGroups/tabGroupsFocus.js +102 -70
- package/dist/components/layout/tabGroups/tabGroupsFocus.js.map +1 -1
- package/dist/components/navigation/appBar/appBar.d.ts +12 -0
- package/dist/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +9 -0
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js +47 -31
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/components/navigation/tabs/tab/tab.js +71 -68
- package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/components/navigation/tabs/tabs.d.ts +11 -0
- package/dist/components/navigation/tabs/tabs.js +19 -16
- package/dist/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/components/navigation/tabs/tabsContext.d.ts +2 -0
- package/dist/components/navigation/tabs/tabsContext.js.map +1 -1
- package/dist/headless/components/dataDisplay/avatar/avatar.js +9 -9
- package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/headless/components/dataDisplay/dagView/dagView.js +133 -132
- package/dist/headless/components/dataDisplay/dagView/dagView.js.map +1 -1
- package/dist/headless/components/dataDisplay/meter/meter.js +32 -30
- package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/headless/components/dataDisplay/statusDot/statusDot.js +19 -10
- package/dist/headless/components/dataDisplay/statusDot/statusDot.js.map +1 -1
- package/dist/headless/components/dataDisplay/treeView/treeView.js +139 -120
- package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/headless/components/inputs/button/button.js +57 -51
- package/dist/headless/components/inputs/button/button.js.map +1 -1
- package/dist/headless/components/inputs/toggle/toggle.js +23 -23
- package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/headless/components/layout/appLayout/appLayout.js +52 -45
- package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/headless/components/layout/screenDivider/screenDivider.js +88 -47
- package/dist/headless/components/layout/screenDivider/screenDivider.js.map +1 -1
- package/dist/headless/components/layout/sheet/sheet.js +124 -104
- package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
- package/dist/headless/components/layout/tabGroups/tabGroups.js +500 -460
- package/dist/headless/components/layout/tabGroups/tabGroups.js.map +1 -1
- package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js +102 -70
- package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js.map +1 -1
- package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +46 -30
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tab/tab.js +70 -67
- package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabs.js +19 -16
- package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -1
- package/dist/headless/primitives/publishHeaderOffset.js +19 -0
- package/dist/headless/primitives/publishHeaderOffset.js.map +1 -0
- package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx +1 -0
- package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chart/chart.jsx +14 -12
- package/dist/headless/source/components/dataDisplay/chart/chart.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chart/chartFull.js +12 -0
- package/dist/headless/source/components/dataDisplay/chart/chartFull.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/chart/core.js +11 -0
- package/dist/headless/source/components/dataDisplay/chart/core.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/chart/index.js +1 -1
- package/dist/headless/source/components/dataDisplay/chart/index.js.map +1 -1
- package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx +2 -1
- package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/dagView/index.js.map +2 -2
- package/dist/headless/source/components/dataDisplay/meter/index.js.map +1 -1
- package/dist/headless/source/components/dataDisplay/meter/meter.jsx +14 -2
- package/dist/headless/source/components/dataDisplay/meter/meter.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/statusDot/index.js.map +1 -1
- package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx +13 -1
- package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +16 -3
- package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/headless/source/components/inputs/button/button.jsx +26 -1
- package/dist/headless/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/headless/source/components/inputs/toggle/toggle.jsx +9 -2
- package/dist/headless/source/components/inputs/toggle/toggle.jsx.map +1 -1
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx +14 -2
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/headless/source/components/layout/screenDivider/screenDivider.jsx +102 -18
- package/dist/headless/source/components/layout/screenDivider/screenDivider.jsx.map +1 -1
- package/dist/headless/source/components/layout/sheet/sheet.jsx +14 -1
- package/dist/headless/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/headless/source/components/layout/tabGroups/index.js.map +1 -1
- package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx +55 -1
- package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx.map +1 -1
- package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js +42 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js.map +2 -2
- package/dist/headless/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx +39 -4
- package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +7 -1
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabs.jsx +5 -1
- package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabsContext.js.map +2 -2
- package/dist/headless/source/index.js +8 -1
- package/dist/headless/source/index.js.map +2 -2
- package/dist/headless/source/primitives/publishHeaderOffset.js +34 -0
- package/dist/headless/source/primitives/publishHeaderOffset.js.map +7 -0
- package/dist/index.d.ts +5 -5
- package/dist/primitives/publishHeaderOffset.d.ts +7 -0
- package/dist/primitives/publishHeaderOffset.js +19 -0
- package/dist/primitives/publishHeaderOffset.js.map +1 -0
- package/dist/source/components/dataDisplay/avatar/avatar.jsx +1 -0
- package/dist/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chart/chart.jsx +14 -12
- package/dist/source/components/dataDisplay/chart/chart.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chart/chartFull.js +12 -0
- package/dist/source/components/dataDisplay/chart/chartFull.js.map +7 -0
- package/dist/source/components/dataDisplay/chart/core.js +11 -0
- package/dist/source/components/dataDisplay/chart/core.js.map +7 -0
- package/dist/source/components/dataDisplay/chart/index.js +1 -1
- package/dist/source/components/dataDisplay/chart/index.js.map +1 -1
- package/dist/source/components/dataDisplay/dagView/dagView.jsx +2 -1
- package/dist/source/components/dataDisplay/dagView/dagView.jsx.map +1 -1
- package/dist/source/components/dataDisplay/dagView/index.js.map +2 -2
- package/dist/source/components/dataDisplay/meter/index.js.map +1 -1
- package/dist/source/components/dataDisplay/meter/meter.jsx +14 -2
- package/dist/source/components/dataDisplay/meter/meter.jsx.map +1 -1
- package/dist/source/components/dataDisplay/statusDot/index.js.map +1 -1
- package/dist/source/components/dataDisplay/statusDot/statusDot.jsx +13 -1
- package/dist/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -1
- package/dist/source/components/dataDisplay/treeView/treeView.jsx +16 -3
- package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/source/components/inputs/button/button.jsx +26 -1
- package/dist/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/source/components/inputs/toggle/toggle.jsx +9 -2
- package/dist/source/components/inputs/toggle/toggle.jsx.map +1 -1
- package/dist/source/components/layout/appLayout/appLayout.jsx +14 -2
- package/dist/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/source/components/layout/screenDivider/screenDivider.jsx +102 -18
- package/dist/source/components/layout/screenDivider/screenDivider.jsx.map +1 -1
- package/dist/source/components/layout/sheet/sheet.jsx +14 -1
- package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/source/components/layout/tabGroups/index.js.map +1 -1
- package/dist/source/components/layout/tabGroups/tabGroups.jsx +55 -1
- package/dist/source/components/layout/tabGroups/tabGroups.jsx.map +1 -1
- package/dist/source/components/layout/tabGroups/tabGroupsFocus.js +42 -0
- package/dist/source/components/layout/tabGroups/tabGroupsFocus.js.map +2 -2
- package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx +39 -4
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tab/tab.jsx +7 -1
- package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabs.jsx +5 -1
- package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabsContext.js.map +2 -2
- package/dist/source/index.js +8 -1
- package/dist/source/index.js.map +2 -2
- package/dist/source/primitives/publishHeaderOffset.js +34 -0
- package/dist/source/primitives/publishHeaderOffset.js.map +7 -0
- package/package.json +9 -3
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import { createComponent as l, Portal as
|
|
2
|
-
import { mergeProps as
|
|
3
|
-
import
|
|
4
|
-
import { createCssTransition as
|
|
5
|
-
import { isTopOverlayLayer as
|
|
6
|
-
import { restoreFocus as
|
|
7
|
-
import { mergeRefs as
|
|
8
|
-
import { mergeStyle as
|
|
9
|
-
import { ClickAwayListener as
|
|
10
|
-
import { Button as
|
|
11
|
-
import { Icon as
|
|
12
|
-
var
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { createComponent as l, Portal as G, use as L, insert as h, effect as k, style as P, className as T, isServer as J, template as y, mergeProps as I, spread as Q, setAttribute as b, memo as _, delegateEvents as Z } from "solid-js/web";
|
|
2
|
+
import { mergeProps as K, splitProps as N, createSignal as Y, createEffect as W, onCleanup as U, Show as z, on as ee } from "solid-js";
|
|
3
|
+
import $ from "clsx";
|
|
4
|
+
import { createCssTransition as X } from "../../../primitives/createCssTransition.js";
|
|
5
|
+
import { isTopOverlayLayer as te } from "../../../primitives/overlayLayer.js";
|
|
6
|
+
import { restoreFocus as re } from "../../../primitives/restoreFocus.js";
|
|
7
|
+
import { mergeRefs as ne } from "../../../primitives/mergeRefs.js";
|
|
8
|
+
import { mergeStyle as oe } from "../../../primitives/mergeStyle.js";
|
|
9
|
+
import { ClickAwayListener as ie } from "../../clickAwayListener/clickAwayListener.js";
|
|
10
|
+
import { Button as R } from "../../inputs/button/button.js";
|
|
11
|
+
import { Icon as B } from "../../base/icon/icon.js";
|
|
12
|
+
var ae = /* @__PURE__ */ y("<div class=smwb-sheet__drag-handle data-testid=sheet-drag-handle role=separator tabindex=0><span class=smwb-sheet__drag-handle-bar>"), se = /* @__PURE__ */ y("<div class=smwb-sheet__header>"), le = /* @__PURE__ */ y("<div class=smwb-sheet__inner>"), ce = /* @__PURE__ */ y("<div>"), M = /* @__PURE__ */ y("<div data-smwb-overlay-layer>");
|
|
13
|
+
const de = (c, f) => {
|
|
14
|
+
const e = "changedTouches" in c ? c.changedTouches[0]?.clientY : c.clientY;
|
|
15
|
+
return f != null && e !== void 0 && e < f.getBoundingClientRect().top;
|
|
16
|
+
}, me = (c) => c === "bottom" || c === "top";
|
|
17
|
+
function ue(c) {
|
|
18
|
+
const f = K({
|
|
16
19
|
size: "60%",
|
|
17
20
|
withSizeToggle: !0,
|
|
18
21
|
hideHeaderActions: !1,
|
|
@@ -25,9 +28,9 @@ function de(m) {
|
|
|
25
28
|
minSize: 80,
|
|
26
29
|
resizeStep: 24,
|
|
27
30
|
resizeHandleAriaLabel: "Resize sheet"
|
|
28
|
-
},
|
|
29
|
-
let
|
|
30
|
-
const [
|
|
31
|
+
}, c), [e, x] = N(f, ["isOpen", "placement", "class", "mode", "size", "variant", "onClose", "withSizeToggle", "hideHeaderActions", "reverseHeaderActions", "closeAriaLabel", "expandAriaLabel", "collapseAriaLabel", "restoreAriaLabel", "resizable", "minSize", "maxSize", "resizeStep", "resizeHandleAriaLabel", "onResize", "style", "handleClose", "handleSizeButton", "children", "ref", "data-testid"]);
|
|
32
|
+
let w;
|
|
33
|
+
const [u, p] = Y(null), s = () => me(e.placement), C = X({
|
|
31
34
|
in: () => e.isOpen,
|
|
32
35
|
timeout: {
|
|
33
36
|
enter: 120,
|
|
@@ -37,63 +40,63 @@ function de(m) {
|
|
|
37
40
|
enterDone: "smwb-sheet_entered"
|
|
38
41
|
},
|
|
39
42
|
appear: !0
|
|
40
|
-
}),
|
|
41
|
-
const
|
|
42
|
-
return Math.max(e.minSize, Math.min(
|
|
43
|
-
},
|
|
44
|
-
const t =
|
|
43
|
+
}), A = (t) => {
|
|
44
|
+
const i = s() ? window.innerHeight : window.innerWidth, n = e.maxSize ?? i;
|
|
45
|
+
return Math.max(e.minSize, Math.min(n, t));
|
|
46
|
+
}, g = () => {
|
|
47
|
+
const t = w?.getBoundingClientRect();
|
|
45
48
|
return t ? s() ? t.height : t.width : e.minSize;
|
|
46
|
-
},
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
+
}, d = (t) => {
|
|
50
|
+
const i = A(t);
|
|
51
|
+
p(i), e.onResize?.(i);
|
|
49
52
|
};
|
|
50
|
-
let
|
|
51
|
-
const
|
|
52
|
-
t.preventDefault(),
|
|
53
|
+
let r = null;
|
|
54
|
+
const o = (t) => {
|
|
55
|
+
t.preventDefault(), r = {
|
|
53
56
|
start: s() ? t.clientY : t.clientX,
|
|
54
|
-
size:
|
|
57
|
+
size: g()
|
|
55
58
|
};
|
|
56
59
|
try {
|
|
57
60
|
t.currentTarget.setPointerCapture?.(t.pointerId);
|
|
58
61
|
} catch {
|
|
59
62
|
}
|
|
60
|
-
},
|
|
61
|
-
if (!
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
},
|
|
67
|
-
const
|
|
68
|
-
t.key ===
|
|
63
|
+
}, v = (t) => {
|
|
64
|
+
if (!r) return;
|
|
65
|
+
const n = (s() ? t.clientY : t.clientX) - r.start, a = e.placement === "bottom" || e.placement === "right" ? -n : n;
|
|
66
|
+
d(r.size + a);
|
|
67
|
+
}, m = (t) => {
|
|
68
|
+
r = null, t.currentTarget.hasPointerCapture?.(t.pointerId) && t.currentTarget.releasePointerCapture?.(t.pointerId);
|
|
69
|
+
}, F = (t) => {
|
|
70
|
+
const i = u() ?? g(), n = e.maxSize ?? (s() ? window.innerHeight : window.innerWidth), a = e.placement === "bottom" ? "ArrowUp" : e.placement === "top" ? "ArrowDown" : e.placement === "left" ? "ArrowRight" : "ArrowLeft", S = e.placement === "bottom" ? "ArrowDown" : e.placement === "top" ? "ArrowUp" : e.placement === "left" ? "ArrowLeft" : "ArrowRight";
|
|
71
|
+
t.key === a ? (t.preventDefault(), d(i + e.resizeStep)) : t.key === S ? (t.preventDefault(), d(i - e.resizeStep)) : t.key === "Home" ? (t.preventDefault(), d(e.minSize)) : t.key === "End" && (t.preventDefault(), d(n));
|
|
69
72
|
};
|
|
70
|
-
|
|
73
|
+
W(ee(() => e.isOpen, (t) => {
|
|
71
74
|
if (!t) {
|
|
72
|
-
|
|
75
|
+
p(null);
|
|
73
76
|
return;
|
|
74
77
|
}
|
|
75
|
-
const
|
|
76
|
-
|
|
78
|
+
const i = w, n = i?.contains(document.activeElement) ? null : document.activeElement;
|
|
79
|
+
i?.focus(), U(() => re(n, i));
|
|
77
80
|
}));
|
|
78
|
-
const
|
|
81
|
+
const V = () => !e.hideHeaderActions && (!!e.onClose || e.withSizeToggle), j = () => {
|
|
79
82
|
const t = [];
|
|
80
|
-
return e.withSizeToggle && t.push(l(
|
|
83
|
+
return e.withSizeToggle && t.push(l(R, {
|
|
81
84
|
variant: "outlined",
|
|
82
85
|
size: "small",
|
|
83
86
|
get onClick() {
|
|
84
87
|
return e.handleSizeButton;
|
|
85
88
|
},
|
|
86
89
|
get "aria-label"() {
|
|
87
|
-
return
|
|
90
|
+
return _(() => e.mode === "expanded")() ? e.collapseAriaLabel : _(() => e.mode === "small")() ? e.restoreAriaLabel : e.expandAriaLabel;
|
|
88
91
|
},
|
|
89
92
|
get children() {
|
|
90
|
-
return l(
|
|
93
|
+
return l(B, {
|
|
91
94
|
get name() {
|
|
92
95
|
return e.mode === "expanded" ? "close_fullscreen" : "open_in_full";
|
|
93
96
|
}
|
|
94
97
|
});
|
|
95
98
|
}
|
|
96
|
-
})), e.onClose && t.push(l(
|
|
99
|
+
})), e.onClose && t.push(l(R, {
|
|
97
100
|
variant: "outlined",
|
|
98
101
|
size: "small",
|
|
99
102
|
get onClick() {
|
|
@@ -103,14 +106,14 @@ function de(m) {
|
|
|
103
106
|
return e.closeAriaLabel;
|
|
104
107
|
},
|
|
105
108
|
get children() {
|
|
106
|
-
return l(
|
|
109
|
+
return l(B, {
|
|
107
110
|
name: "close"
|
|
108
111
|
});
|
|
109
112
|
}
|
|
110
113
|
})), e.reverseHeaderActions && t.reverse(), t;
|
|
111
|
-
},
|
|
112
|
-
if (e.resizable &&
|
|
113
|
-
const t = `${
|
|
114
|
+
}, q = () => {
|
|
115
|
+
if (e.resizable && u() !== null) {
|
|
116
|
+
const t = `${u()}px`;
|
|
114
117
|
return {
|
|
115
118
|
...s() ? {
|
|
116
119
|
height: t
|
|
@@ -123,8 +126,8 @@ function de(m) {
|
|
|
123
126
|
return {};
|
|
124
127
|
};
|
|
125
128
|
return (() => {
|
|
126
|
-
var t =
|
|
127
|
-
return typeof
|
|
129
|
+
var t = ce(), i = ne(e.ref, (n) => w = n);
|
|
130
|
+
return typeof i == "function" && L(i, t), Q(t, I(x, {
|
|
128
131
|
get "data-testid"() {
|
|
129
132
|
return e["data-testid"] ?? "sheet";
|
|
130
133
|
},
|
|
@@ -134,62 +137,62 @@ function de(m) {
|
|
|
134
137
|
return e.variant === "modal" || void 0;
|
|
135
138
|
},
|
|
136
139
|
get class() {
|
|
137
|
-
return
|
|
140
|
+
return $("smwb-sheet", e.class, `smwb-sheet_${e.variant}`, `smwb-${e.placement}`, C.classes(), {
|
|
138
141
|
"smwb-expanded": e.mode === "expanded",
|
|
139
142
|
"smwb-small": e.mode === "small",
|
|
140
143
|
"smwb-sheet_resizable": e.resizable
|
|
141
144
|
});
|
|
142
145
|
},
|
|
143
146
|
get style() {
|
|
144
|
-
return
|
|
147
|
+
return oe({
|
|
145
148
|
"--sizeProp": e.size,
|
|
146
|
-
...
|
|
149
|
+
...q()
|
|
147
150
|
}, e.style);
|
|
148
151
|
}
|
|
149
|
-
}), !1, !0),
|
|
152
|
+
}), !1, !0), h(t, l(z, {
|
|
150
153
|
get when() {
|
|
151
154
|
return e.resizable;
|
|
152
155
|
},
|
|
153
156
|
get children() {
|
|
154
|
-
var
|
|
155
|
-
return
|
|
156
|
-
var
|
|
157
|
-
return
|
|
157
|
+
var n = ae();
|
|
158
|
+
return n.$$keydown = F, n.addEventListener("pointercancel", m), n.$$pointerup = m, n.$$pointermove = v, n.$$pointerdown = o, k((a) => {
|
|
159
|
+
var S = s() ? "horizontal" : "vertical", O = e.resizeHandleAriaLabel, E = e.minSize, D = Math.round(e.maxSize ?? (s() ? window.innerHeight : window.innerWidth)), H = Math.round(u() ?? g());
|
|
160
|
+
return S !== a.e && b(n, "aria-orientation", a.e = S), O !== a.t && b(n, "aria-label", a.t = O), E !== a.a && b(n, "aria-valuemin", a.a = E), D !== a.o && b(n, "aria-valuemax", a.o = D), H !== a.i && b(n, "aria-valuenow", a.i = H), a;
|
|
158
161
|
}, {
|
|
159
162
|
e: void 0,
|
|
160
163
|
t: void 0,
|
|
161
164
|
a: void 0,
|
|
162
165
|
o: void 0,
|
|
163
166
|
i: void 0
|
|
164
|
-
}),
|
|
167
|
+
}), n;
|
|
165
168
|
}
|
|
166
|
-
}), null),
|
|
169
|
+
}), null), h(t, l(z, {
|
|
167
170
|
get when() {
|
|
168
|
-
return
|
|
171
|
+
return V();
|
|
169
172
|
},
|
|
170
173
|
get children() {
|
|
171
|
-
var
|
|
172
|
-
return
|
|
174
|
+
var n = se();
|
|
175
|
+
return h(n, j), n;
|
|
173
176
|
}
|
|
174
|
-
}), null),
|
|
177
|
+
}), null), h(t, l(z, {
|
|
175
178
|
get when() {
|
|
176
|
-
return
|
|
179
|
+
return _(() => !!e.isOpen)() && e.mode !== "small";
|
|
177
180
|
},
|
|
178
181
|
get children() {
|
|
179
|
-
var
|
|
180
|
-
return
|
|
182
|
+
var n = le();
|
|
183
|
+
return h(n, () => e.children), n;
|
|
181
184
|
}
|
|
182
185
|
}), null), t;
|
|
183
186
|
})();
|
|
184
187
|
}
|
|
185
|
-
function
|
|
186
|
-
const
|
|
188
|
+
function xe(c) {
|
|
189
|
+
const f = K({
|
|
187
190
|
variant: "default",
|
|
188
191
|
placement: "bottom",
|
|
189
192
|
closeOnEsc: !0
|
|
190
|
-
},
|
|
191
|
-
let
|
|
192
|
-
const s =
|
|
193
|
+
}, c), [e, x] = N(f, ["isOpen", "onClose", "variant", "children", "placement", "disableOutsideClick", "closeOnEsc", "offsetTop", "ref"]), [w, u] = Y(null);
|
|
194
|
+
let p;
|
|
195
|
+
const s = X({
|
|
193
196
|
in: () => e.isOpen,
|
|
194
197
|
timeout: {
|
|
195
198
|
enter: 70,
|
|
@@ -200,21 +203,26 @@ function Se(m) {
|
|
|
200
203
|
},
|
|
201
204
|
appear: !0
|
|
202
205
|
});
|
|
203
|
-
|
|
206
|
+
W(() => {
|
|
204
207
|
if (!e.isOpen || !e.closeOnEsc || !e.onClose) return;
|
|
205
|
-
const
|
|
206
|
-
|
|
208
|
+
const r = (o) => {
|
|
209
|
+
o.key === "Escape" && !o.defaultPrevented && te(p) && e.onClose?.();
|
|
207
210
|
};
|
|
208
|
-
document.addEventListener("keydown",
|
|
211
|
+
document.addEventListener("keydown", r), U(() => document.removeEventListener("keydown", r));
|
|
209
212
|
});
|
|
210
|
-
const
|
|
211
|
-
|
|
212
|
-
},
|
|
213
|
-
e.onClose?.(),
|
|
214
|
-
},
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
typeof
|
|
213
|
+
const C = () => {
|
|
214
|
+
u((r) => r === "expanded" ? "small" : r === null ? "expanded" : null);
|
|
215
|
+
}, A = () => {
|
|
216
|
+
e.onClose?.(), u(null);
|
|
217
|
+
}, g = () => {
|
|
218
|
+
const r = e.offsetTop;
|
|
219
|
+
return r === void 0 ? void 0 : {
|
|
220
|
+
"--smui-sheet-offset-top": typeof r == "number" ? `${r}px` : r
|
|
221
|
+
};
|
|
222
|
+
}, d = () => l(ue, I(x, {
|
|
223
|
+
ref(r) {
|
|
224
|
+
var o = e.ref;
|
|
225
|
+
typeof o == "function" ? o(r) : e.ref = r;
|
|
218
226
|
},
|
|
219
227
|
get isOpen() {
|
|
220
228
|
return e.isOpen;
|
|
@@ -222,10 +230,10 @@ function Se(m) {
|
|
|
222
230
|
get onClose() {
|
|
223
231
|
return e.onClose;
|
|
224
232
|
},
|
|
225
|
-
handleSizeButton:
|
|
226
|
-
handleClose:
|
|
233
|
+
handleSizeButton: C,
|
|
234
|
+
handleClose: A,
|
|
227
235
|
get mode() {
|
|
228
|
-
return
|
|
236
|
+
return w();
|
|
229
237
|
},
|
|
230
238
|
get placement() {
|
|
231
239
|
return e.placement;
|
|
@@ -237,34 +245,46 @@ function Se(m) {
|
|
|
237
245
|
return e.children;
|
|
238
246
|
}
|
|
239
247
|
}));
|
|
240
|
-
return l(
|
|
248
|
+
return l(z, {
|
|
241
249
|
get when() {
|
|
242
250
|
return s.mounted();
|
|
243
251
|
},
|
|
244
252
|
get children() {
|
|
245
|
-
return l(
|
|
253
|
+
return l(G, {
|
|
246
254
|
get mount() {
|
|
247
|
-
return
|
|
255
|
+
return J ? void 0 : document.body;
|
|
248
256
|
},
|
|
249
257
|
get children() {
|
|
250
|
-
return l(
|
|
258
|
+
return l(z, {
|
|
251
259
|
get when() {
|
|
252
260
|
return e.variant === "default";
|
|
253
261
|
},
|
|
254
262
|
get fallback() {
|
|
255
263
|
return (() => {
|
|
256
|
-
var
|
|
257
|
-
return
|
|
258
|
-
onClickAway: () => !e.disableOutsideClick &&
|
|
264
|
+
var r = M();
|
|
265
|
+
return L((o) => p = o, r), h(r, l(ie, {
|
|
266
|
+
onClickAway: (o) => !e.disableOutsideClick && !de(o, p) && A(),
|
|
259
267
|
get children() {
|
|
260
|
-
return
|
|
268
|
+
return d();
|
|
261
269
|
}
|
|
262
|
-
})),
|
|
270
|
+
})), k((o) => {
|
|
271
|
+
var v = g(), m = $("smwb-sheet__overlay", "smwb-dark", `smwb-${e.placement}`, `smwb-sheet_${e.variant}`, s.classes());
|
|
272
|
+
return o.e = P(r, v, o.e), m !== o.t && T(r, o.t = m), o;
|
|
273
|
+
}, {
|
|
274
|
+
e: void 0,
|
|
275
|
+
t: void 0
|
|
276
|
+
}), r;
|
|
263
277
|
})();
|
|
264
278
|
},
|
|
265
279
|
get children() {
|
|
266
|
-
var
|
|
267
|
-
return
|
|
280
|
+
var r = M();
|
|
281
|
+
return L((o) => p = o, r), h(r, d), k((o) => {
|
|
282
|
+
var v = g(), m = $(e.disableOutsideClick ? "smwb-sheet__overlay" : "smwb-sheet__default", s.classes());
|
|
283
|
+
return o.e = P(r, v, o.e), m !== o.t && T(r, o.t = m), o;
|
|
284
|
+
}, {
|
|
285
|
+
e: void 0,
|
|
286
|
+
t: void 0
|
|
287
|
+
}), r;
|
|
268
288
|
}
|
|
269
289
|
});
|
|
270
290
|
}
|
|
@@ -272,8 +292,8 @@ function Se(m) {
|
|
|
272
292
|
}
|
|
273
293
|
});
|
|
274
294
|
}
|
|
275
|
-
|
|
295
|
+
Z(["pointerdown", "pointermove", "pointerup", "keydown"]);
|
|
276
296
|
export {
|
|
277
|
-
|
|
297
|
+
xe as Sheet
|
|
278
298
|
};
|
|
279
299
|
//# sourceMappingURL=sheet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet.js","sources":["../../../../../src/components/layout/sheet/sheet.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, createSignal, mergeProps, on, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Button } from \"../../inputs/button\";\nimport { Icon } from \"../../base/icon\";\nimport { ClickAwayListener } from \"../../clickAwayListener\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport { isTopOverlayLayer } from \"../../../primitives/overlayLayer\";\nimport { restoreFocus } from \"../../../primitives/restoreFocus\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\n\nexport interface SheetProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onResize\"> {\n placement?: \"top\" | \"bottom\" | \"right\" | \"left\";\n isOpen: boolean;\n onClose?: (() => void) | undefined;\n variant?: \"default\" | \"modal\";\n withSizeToggle?: boolean;\n /** Hide built-in header actions; onClose still handles Esc and backdrop. */\n hideHeaderActions?: boolean;\n reverseHeaderActions?: boolean;\n /** Accessible name of the header close button (default \"Close sheet\"). */\n closeAriaLabel?: string;\n /**\n * Accessible name of the size toggle while the sheet is at its normal size (default \"Expand sheet\"). The toggle\n * cycles normal, expanded, collapsed and back, and its name always says what the next press does; the\n * name changing is how it exposes its state. It shows the `open_in_full` icon, and `close_fullscreen` while expanded.\n */\n expandAriaLabel?: string;\n /** Accessible name of the size toggle while the sheet is expanded (default \"Collapse sheet\"). */\n collapseAriaLabel?: string;\n /** Accessible name of the size toggle while the sheet is collapsed to its header (default \"Restore sheet size\"). */\n restoreAriaLabel?: string;\n size?: string;\n disableOutsideClick?: boolean;\n /** Close the sheet when Escape is pressed. */\n closeOnEsc?: boolean;\n /** Allow drag-to-resize (mobile bottom-sheet style). Off by default. */\n resizable?: boolean;\n /** Minimum size in px while resizing (default 80). */\n minSize?: number;\n /** Maximum size in px while resizing (default: viewport dimension). */\n maxSize?: number;\n /** Step in px for keyboard resizing (default 24). */\n resizeStep?: number;\n /** Accessible label for the resize handle. */\n resizeHandleAriaLabel?: string;\n /** Called with the new size in px while/after resizing. */\n onResize?: (size: number) => void;\n \"aria-label\"?: string;\n /** Test id of the sheet panel (the dialog); `sheet` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLDivElement>;\n}\n\ntype Mode = \"small\" | \"expanded\" | null;\n\nconst isVerticalAxis = (placement: SheetProps[\"placement\"]): boolean => placement === \"bottom\" || placement === \"top\";\n\ninterface SheetBlockProps extends ParentProps<SheetProps> {\n mode: Mode;\n handleSizeButton: () => void;\n handleClose: () => void;\n}\n\nfunction SheetBlock(props: SheetBlockProps): JSX.Element {\n const merged = mergeProps(\n {\n size: \"60%\",\n withSizeToggle: true,\n hideHeaderActions: false,\n reverseHeaderActions: false,\n closeAriaLabel: \"Close sheet\",\n expandAriaLabel: \"Expand sheet\",\n collapseAriaLabel: \"Collapse sheet\",\n restoreAriaLabel: \"Restore sheet size\",\n resizable: false,\n minSize: 80,\n resizeStep: 24,\n resizeHandleAriaLabel: \"Resize sheet\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"isOpen\",\n \"placement\",\n \"class\",\n \"mode\",\n \"size\",\n \"variant\",\n \"onClose\",\n \"withSizeToggle\",\n \"hideHeaderActions\",\n \"reverseHeaderActions\",\n \"closeAriaLabel\",\n \"expandAriaLabel\",\n \"collapseAriaLabel\",\n \"restoreAriaLabel\",\n \"resizable\",\n \"minSize\",\n \"maxSize\",\n \"resizeStep\",\n \"resizeHandleAriaLabel\",\n \"onResize\",\n \"style\",\n \"handleClose\",\n \"handleSizeButton\",\n \"children\",\n \"ref\",\n \"data-testid\",\n ]);\n\n let rootEl: HTMLDivElement | undefined;\n const [dragSize, setDragSize] = createSignal<number | null>(null);\n const vertical = (): boolean => isVerticalAxis(local.placement);\n\n const inner = createCssTransition({\n in: () => local.isOpen,\n timeout: { enter: 120, exit: 120 },\n classNames: { enterDone: \"smwb-sheet_entered\" },\n appear: true,\n });\n\n const clamp = (px: number): number => {\n const viewport = vertical() ? window.innerHeight : window.innerWidth;\n const max = local.maxSize ?? viewport;\n return Math.max(local.minSize, Math.min(max, px));\n };\n\n const currentSizePx = (): number => {\n const rect = rootEl?.getBoundingClientRect();\n if (!rect) return local.minSize;\n return vertical() ? rect.height : rect.width;\n };\n\n const applySize = (px: number): void => {\n const next = clamp(px);\n setDragSize(next);\n local.onResize?.(next);\n };\n\n let drag: { start: number; size: number } | null = null;\n\n const onPointerDown = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n event.preventDefault();\n drag = { start: vertical() ? event.clientY : event.clientX, size: currentSizePx() };\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onPointerMove = (event: PointerEvent): void => {\n if (!drag) return;\n const pos = vertical() ? event.clientY : event.clientX;\n const delta = pos - drag.start;\n const grow = local.placement === \"bottom\" || local.placement === \"right\" ? -delta : delta;\n applySize(drag.size + grow);\n };\n\n const endDrag = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n drag = null;\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n const onHandleKeyDown: JSX.EventHandler<HTMLDivElement, KeyboardEvent> = (event) => {\n const base = dragSize() ?? currentSizePx();\n const max = local.maxSize ?? (vertical() ? window.innerHeight : window.innerWidth);\n const incKey =\n local.placement === \"bottom\" ? \"ArrowUp\" : local.placement === \"top\" ? \"ArrowDown\" : local.placement === \"left\" ? \"ArrowRight\" : \"ArrowLeft\";\n const decKey =\n local.placement === \"bottom\" ? \"ArrowDown\" : local.placement === \"top\" ? \"ArrowUp\" : local.placement === \"left\" ? \"ArrowLeft\" : \"ArrowRight\";\n if (event.key === incKey) {\n event.preventDefault();\n applySize(base + local.resizeStep);\n } else if (event.key === decKey) {\n event.preventDefault();\n applySize(base - local.resizeStep);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n applySize(local.minSize);\n } else if (event.key === \"End\") {\n event.preventDefault();\n applySize(max);\n }\n };\n\n // Keyed on `isOpen` alone: root.focus() fires focus handlers synchronously, and Solid runs those\n // without untrack, so any signal they read would otherwise re-run this effect and steal focus.\n createEffect(\n on(\n () => local.isOpen,\n (open) => {\n if (!open) {\n setDragSize(null);\n return;\n }\n const root = rootEl;\n // The element that had focus when the sheet opened gets it back when it closes (or unmounts\n // while open), unless the app has put focus somewhere else by then.\n const opener = root?.contains(document.activeElement) ? null : document.activeElement;\n root?.focus();\n onCleanup(() => restoreFocus(opener, root));\n },\n ),\n );\n\n const showActions = (): boolean => !local.hideHeaderActions && (!!local.onClose || local.withSizeToggle);\n const actionNodes = (): JSX.Element[] => {\n const nodes: JSX.Element[] = [];\n if (local.withSizeToggle) {\n nodes.push(\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={local.handleSizeButton}\n aria-label={\n local.mode === \"expanded\" ? local.collapseAriaLabel : local.mode === \"small\" ? local.restoreAriaLabel : local.expandAriaLabel\n }\n >\n <Icon name={local.mode === \"expanded\" ? \"close_fullscreen\" : \"open_in_full\"} />\n </Button>\n );\n }\n if (local.onClose) {\n nodes.push(\n <Button variant=\"outlined\" size=\"small\" onClick={local.handleClose} aria-label={local.closeAriaLabel}>\n <Icon name=\"close\" />\n </Button>\n );\n }\n if (local.reverseHeaderActions) nodes.reverse();\n return nodes;\n };\n\n const sizeStyle = (): JSX.CSSProperties => {\n if (local.resizable && dragSize() !== null) {\n const px = `${dragSize()}px`;\n return { ...(vertical() ? { height: px } : { width: px }), transition: \"none\" };\n }\n return {};\n };\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref, (el) => (rootEl = el as HTMLDivElement))}\n data-testid={local[\"data-testid\"] ?? \"sheet\"}\n tabindex={-1}\n role=\"dialog\"\n aria-modal={local.variant === \"modal\" || undefined}\n class={cn(\"smwb-sheet\", local.class, `smwb-sheet_${local.variant}`, `smwb-${local.placement}`, inner.classes(), {\n \"smwb-expanded\": local.mode === \"expanded\",\n \"smwb-small\": local.mode === \"small\",\n \"smwb-sheet_resizable\": local.resizable,\n })}\n style={mergeStyle({ \"--sizeProp\": local.size, ...sizeStyle() }, local.style)}\n >\n <Show when={local.resizable}>\n <div\n class=\"smwb-sheet__drag-handle\"\n data-testid=\"sheet-drag-handle\"\n role=\"separator\"\n tabindex={0}\n aria-orientation={vertical() ? \"horizontal\" : \"vertical\"}\n aria-label={local.resizeHandleAriaLabel}\n aria-valuemin={local.minSize}\n aria-valuemax={Math.round(local.maxSize ?? (vertical() ? window.innerHeight : window.innerWidth))}\n aria-valuenow={Math.round(dragSize() ?? currentSizePx())}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n onKeyDown={onHandleKeyDown}\n >\n <span class=\"smwb-sheet__drag-handle-bar\" />\n </div>\n </Show>\n <Show when={showActions()}>\n <div class=\"smwb-sheet__header\">{actionNodes()}</div>\n </Show>\n <Show when={local.isOpen && local.mode !== \"small\"}>\n <div class=\"smwb-sheet__inner\">{local.children}</div>\n </Show>\n </div>\n );\n}\n\nexport function Sheet(props: ParentProps<SheetProps>): JSX.Element {\n const merged = mergeProps({ variant: \"default\" as const, placement: \"bottom\" as const, closeOnEsc: true }, props);\n const [local, rest] = splitProps(merged, [\n \"isOpen\",\n \"onClose\",\n \"variant\",\n \"children\",\n \"placement\",\n \"disableOutsideClick\",\n \"closeOnEsc\",\n \"ref\",\n ]);\n\n const [mode, setMode] = createSignal<Mode>(null);\n let wrapperEl: HTMLDivElement | undefined;\n\n const outer = createCssTransition({\n in: () => local.isOpen,\n timeout: { enter: 70, exit: 70 },\n classNames: { enterDone: \"smwb-entered\" },\n appear: true,\n });\n\n createEffect(() => {\n if (!local.isOpen || !local.closeOnEsc || !local.onClose) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n // Only the topmost overlay layer reacts to Escape, and not to one handled inside\n // it, e.g. by a menu closing on it.\n if (event.key === \"Escape\" && !event.defaultPrevented && isTopOverlayLayer(wrapperEl)) local.onClose?.();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const handleSizeButton = (): void => {\n setMode((prev) => (prev === \"expanded\" ? \"small\" : prev === null ? \"expanded\" : null));\n };\n const handleClose = (): void => {\n local.onClose?.();\n setMode(null);\n };\n\n const block = (): JSX.Element => (\n <SheetBlock\n {...rest}\n ref={local.ref}\n isOpen={local.isOpen}\n onClose={local.onClose}\n handleSizeButton={handleSizeButton}\n handleClose={handleClose}\n mode={mode()}\n placement={local.placement}\n variant={local.variant}\n >\n {local.children}\n </SheetBlock>\n );\n\n return (\n <Show when={outer.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <Show\n when={local.variant === \"default\"}\n fallback={\n <div\n ref={(el) => (wrapperEl = el)}\n data-smwb-overlay-layer\n class={cn(\"smwb-sheet__overlay\", \"smwb-dark\", `smwb-${local.placement}`, `smwb-sheet_${local.variant}`, outer.classes())}\n >\n <ClickAwayListener onClickAway={() => !local.disableOutsideClick && handleClose()}>\n {block()}\n </ClickAwayListener>\n </div>\n }\n >\n <div\n ref={(el) => (wrapperEl = el)}\n data-smwb-overlay-layer\n class={cn(local.disableOutsideClick ? \"smwb-sheet__overlay\" : \"smwb-sheet__default\", outer.classes())}\n >\n {block()}\n </div>\n </Show>\n </Portal>\n </Show>\n );\n}\n\nexport default Sheet;\n"],"names":["isVerticalAxis","placement","SheetBlock","props","merged","mergeProps","size","withSizeToggle","hideHeaderActions","reverseHeaderActions","closeAriaLabel","expandAriaLabel","collapseAriaLabel","restoreAriaLabel","resizable","minSize","resizeStep","resizeHandleAriaLabel","local","rest","splitProps","rootEl","dragSize","setDragSize","createSignal","vertical","inner","createCssTransition","in","isOpen","timeout","enter","exit","classNames","enterDone","appear","clamp","px","viewport","window","innerHeight","innerWidth","max","maxSize","Math","min","currentSizePx","rect","getBoundingClientRect","height","width","applySize","next","onResize","drag","onPointerDown","event","preventDefault","start","clientY","clientX","currentTarget","setPointerCapture","pointerId","onPointerMove","delta","grow","endDrag","hasPointerCapture","releasePointerCapture","onHandleKeyDown","base","incKey","decKey","key","createEffect","on","open","root","opener","contains","document","activeElement","focus","onCleanup","restoreFocus","showActions","onClose","actionNodes","nodes","push","_$createComponent","Button","variant","onClick","handleSizeButton","_$memo","mode","children","Icon","name","handleClose","reverse","sizeStyle","transition","_el$","_tmpl$4","_ref$","mergeRefs","ref","el","_$use","_$spread","_$mergeProps","undefined","cn","class","classes","style","mergeStyle","_$insert","Show","when","_el$2","_tmpl$","$$keydown","addEventListener","$$pointerup","$$pointermove","$$pointerdown","_$effect","_p$","_v$","_v$2","_v$3","_v$4","round","_v$5","e","_$setAttribute","t","a","o","i","_el$3","_tmpl$2","_el$4","_tmpl$3","Sheet","closeOnEsc","setMode","wrapperEl","outer","onKeyDown","defaultPrevented","isTopOverlayLayer","removeEventListener","prev","block","r$","_ref$2","mounted","Portal","mount","isServer","body","fallback","_el$6","_tmpl$5","ClickAwayListener","onClickAway","disableOutsideClick","_$className","_el$5","_$delegateEvents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sheet.js","sources":["../../../../../src/components/layout/sheet/sheet.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, createSignal, mergeProps, on, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Button } from \"../../inputs/button\";\nimport { Icon } from \"../../base/icon\";\nimport { ClickAwayListener } from \"../../clickAwayListener\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport { isTopOverlayLayer } from \"../../../primitives/overlayLayer\";\nimport { restoreFocus } from \"../../../primitives/restoreFocus\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\n\nexport interface SheetProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onResize\"> {\n placement?: \"top\" | \"bottom\" | \"right\" | \"left\";\n isOpen: boolean;\n onClose?: (() => void) | undefined;\n variant?: \"default\" | \"modal\";\n withSizeToggle?: boolean;\n /** Hide built-in header actions; onClose still handles Esc and backdrop. */\n hideHeaderActions?: boolean;\n reverseHeaderActions?: boolean;\n /** Accessible name of the header close button (default \"Close sheet\"). */\n closeAriaLabel?: string;\n /**\n * Accessible name of the size toggle while the sheet is at its normal size (default \"Expand sheet\"). The toggle\n * cycles normal, expanded, collapsed and back, and its name always says what the next press does; the\n * name changing is how it exposes its state. It shows the `open_in_full` icon, and `close_fullscreen` while expanded.\n */\n expandAriaLabel?: string;\n /** Accessible name of the size toggle while the sheet is expanded (default \"Collapse sheet\"). */\n collapseAriaLabel?: string;\n /** Accessible name of the size toggle while the sheet is collapsed to its header (default \"Restore sheet size\"). */\n restoreAriaLabel?: string;\n size?: string;\n /**\n * Gap between the top edge of the window and the top of the sheet and of its modal scrim (px, or any CSS length),\n * so a panel can start below a fixed app bar and leave it visible and clickable. It applies to the `top`, `left`\n * and `right` placements and to the scrim of every placement. Without it the sheet takes the page's\n * `--smui-sheet-offset-top`, which `AppLayout` sets to the height of its sticky header and which is 0 elsewhere;\n * `offsetTop={0}` covers the header anyway. A press in the strip above a modal scrim belongs to the page and does\n * not close the sheet, so a header button can toggle it. The modal sheet keeps `aria-modal`, though that strip can\n * still be reached by pointer and Tab; for a header that must stay available to assistive technology, use\n * `variant=\"default\"`.\n */\n offsetTop?: number | string;\n disableOutsideClick?: boolean;\n /** Close the sheet when Escape is pressed. */\n closeOnEsc?: boolean;\n /** Allow drag-to-resize (mobile bottom-sheet style). Off by default. */\n resizable?: boolean;\n /** Minimum size in px while resizing (default 80). */\n minSize?: number;\n /** Maximum size in px while resizing (default: viewport dimension). */\n maxSize?: number;\n /** Step in px for keyboard resizing (default 24). */\n resizeStep?: number;\n /** Accessible label for the resize handle. */\n resizeHandleAriaLabel?: string;\n /** Called with the new size in px while/after resizing. */\n onResize?: (size: number) => void;\n \"aria-label\"?: string;\n /** Test id of the sheet panel (the dialog); `sheet` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLDivElement>;\n}\n\ntype Mode = \"small\" | \"expanded\" | null;\n\n/**\n * Whether a press ended above the top edge of the scrim, i.e. in the strip an `offsetTop` leaves uncovered. The page\n * owns that strip (a header button there, say), so it is not \"away\" from a modal sheet: a button that toggles the\n * sheet would otherwise see it close on the release and open again on the click.\n */\nconst landedAboveScrim = (event: MouseEvent | TouchEvent, scrim: HTMLElement | null | undefined): boolean => {\n const y = \"changedTouches\" in event ? event.changedTouches[0]?.clientY : event.clientY;\n return scrim != null && y !== undefined && y < scrim.getBoundingClientRect().top;\n};\n\nconst isVerticalAxis = (placement: SheetProps[\"placement\"]): boolean => placement === \"bottom\" || placement === \"top\";\n\ninterface SheetBlockProps extends ParentProps<SheetProps> {\n mode: Mode;\n handleSizeButton: () => void;\n handleClose: () => void;\n}\n\nfunction SheetBlock(props: SheetBlockProps): JSX.Element {\n const merged = mergeProps(\n {\n size: \"60%\",\n withSizeToggle: true,\n hideHeaderActions: false,\n reverseHeaderActions: false,\n closeAriaLabel: \"Close sheet\",\n expandAriaLabel: \"Expand sheet\",\n collapseAriaLabel: \"Collapse sheet\",\n restoreAriaLabel: \"Restore sheet size\",\n resizable: false,\n minSize: 80,\n resizeStep: 24,\n resizeHandleAriaLabel: \"Resize sheet\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"isOpen\",\n \"placement\",\n \"class\",\n \"mode\",\n \"size\",\n \"variant\",\n \"onClose\",\n \"withSizeToggle\",\n \"hideHeaderActions\",\n \"reverseHeaderActions\",\n \"closeAriaLabel\",\n \"expandAriaLabel\",\n \"collapseAriaLabel\",\n \"restoreAriaLabel\",\n \"resizable\",\n \"minSize\",\n \"maxSize\",\n \"resizeStep\",\n \"resizeHandleAriaLabel\",\n \"onResize\",\n \"style\",\n \"handleClose\",\n \"handleSizeButton\",\n \"children\",\n \"ref\",\n \"data-testid\",\n ]);\n\n let rootEl: HTMLDivElement | undefined;\n const [dragSize, setDragSize] = createSignal<number | null>(null);\n const vertical = (): boolean => isVerticalAxis(local.placement);\n\n const inner = createCssTransition({\n in: () => local.isOpen,\n timeout: { enter: 120, exit: 120 },\n classNames: { enterDone: \"smwb-sheet_entered\" },\n appear: true,\n });\n\n const clamp = (px: number): number => {\n const viewport = vertical() ? window.innerHeight : window.innerWidth;\n const max = local.maxSize ?? viewport;\n return Math.max(local.minSize, Math.min(max, px));\n };\n\n const currentSizePx = (): number => {\n const rect = rootEl?.getBoundingClientRect();\n if (!rect) return local.minSize;\n return vertical() ? rect.height : rect.width;\n };\n\n const applySize = (px: number): void => {\n const next = clamp(px);\n setDragSize(next);\n local.onResize?.(next);\n };\n\n let drag: { start: number; size: number } | null = null;\n\n const onPointerDown = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n event.preventDefault();\n drag = { start: vertical() ? event.clientY : event.clientX, size: currentSizePx() };\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onPointerMove = (event: PointerEvent): void => {\n if (!drag) return;\n const pos = vertical() ? event.clientY : event.clientX;\n const delta = pos - drag.start;\n const grow = local.placement === \"bottom\" || local.placement === \"right\" ? -delta : delta;\n applySize(drag.size + grow);\n };\n\n const endDrag = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n drag = null;\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n const onHandleKeyDown: JSX.EventHandler<HTMLDivElement, KeyboardEvent> = (event) => {\n const base = dragSize() ?? currentSizePx();\n const max = local.maxSize ?? (vertical() ? window.innerHeight : window.innerWidth);\n const incKey =\n local.placement === \"bottom\" ? \"ArrowUp\" : local.placement === \"top\" ? \"ArrowDown\" : local.placement === \"left\" ? \"ArrowRight\" : \"ArrowLeft\";\n const decKey =\n local.placement === \"bottom\" ? \"ArrowDown\" : local.placement === \"top\" ? \"ArrowUp\" : local.placement === \"left\" ? \"ArrowLeft\" : \"ArrowRight\";\n if (event.key === incKey) {\n event.preventDefault();\n applySize(base + local.resizeStep);\n } else if (event.key === decKey) {\n event.preventDefault();\n applySize(base - local.resizeStep);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n applySize(local.minSize);\n } else if (event.key === \"End\") {\n event.preventDefault();\n applySize(max);\n }\n };\n\n // Keyed on `isOpen` alone: root.focus() fires focus handlers synchronously, and Solid runs those\n // without untrack, so any signal they read would otherwise re-run this effect and steal focus.\n createEffect(\n on(\n () => local.isOpen,\n (open) => {\n if (!open) {\n setDragSize(null);\n return;\n }\n const root = rootEl;\n // The element that had focus when the sheet opened gets it back when it closes (or unmounts\n // while open), unless the app has put focus somewhere else by then.\n const opener = root?.contains(document.activeElement) ? null : document.activeElement;\n root?.focus();\n onCleanup(() => restoreFocus(opener, root));\n },\n ),\n );\n\n const showActions = (): boolean => !local.hideHeaderActions && (!!local.onClose || local.withSizeToggle);\n const actionNodes = (): JSX.Element[] => {\n const nodes: JSX.Element[] = [];\n if (local.withSizeToggle) {\n nodes.push(\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={local.handleSizeButton}\n aria-label={\n local.mode === \"expanded\" ? local.collapseAriaLabel : local.mode === \"small\" ? local.restoreAriaLabel : local.expandAriaLabel\n }\n >\n <Icon name={local.mode === \"expanded\" ? \"close_fullscreen\" : \"open_in_full\"} />\n </Button>\n );\n }\n if (local.onClose) {\n nodes.push(\n <Button variant=\"outlined\" size=\"small\" onClick={local.handleClose} aria-label={local.closeAriaLabel}>\n <Icon name=\"close\" />\n </Button>\n );\n }\n if (local.reverseHeaderActions) nodes.reverse();\n return nodes;\n };\n\n const sizeStyle = (): JSX.CSSProperties => {\n if (local.resizable && dragSize() !== null) {\n const px = `${dragSize()}px`;\n return { ...(vertical() ? { height: px } : { width: px }), transition: \"none\" };\n }\n return {};\n };\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref, (el) => (rootEl = el as HTMLDivElement))}\n data-testid={local[\"data-testid\"] ?? \"sheet\"}\n tabindex={-1}\n role=\"dialog\"\n aria-modal={local.variant === \"modal\" || undefined}\n class={cn(\"smwb-sheet\", local.class, `smwb-sheet_${local.variant}`, `smwb-${local.placement}`, inner.classes(), {\n \"smwb-expanded\": local.mode === \"expanded\",\n \"smwb-small\": local.mode === \"small\",\n \"smwb-sheet_resizable\": local.resizable,\n })}\n style={mergeStyle({ \"--sizeProp\": local.size, ...sizeStyle() }, local.style)}\n >\n <Show when={local.resizable}>\n <div\n class=\"smwb-sheet__drag-handle\"\n data-testid=\"sheet-drag-handle\"\n role=\"separator\"\n tabindex={0}\n aria-orientation={vertical() ? \"horizontal\" : \"vertical\"}\n aria-label={local.resizeHandleAriaLabel}\n aria-valuemin={local.minSize}\n aria-valuemax={Math.round(local.maxSize ?? (vertical() ? window.innerHeight : window.innerWidth))}\n aria-valuenow={Math.round(dragSize() ?? currentSizePx())}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n onKeyDown={onHandleKeyDown}\n >\n <span class=\"smwb-sheet__drag-handle-bar\" />\n </div>\n </Show>\n <Show when={showActions()}>\n <div class=\"smwb-sheet__header\">{actionNodes()}</div>\n </Show>\n <Show when={local.isOpen && local.mode !== \"small\"}>\n <div class=\"smwb-sheet__inner\">{local.children}</div>\n </Show>\n </div>\n );\n}\n\nexport function Sheet(props: ParentProps<SheetProps>): JSX.Element {\n const merged = mergeProps({ variant: \"default\" as const, placement: \"bottom\" as const, closeOnEsc: true }, props);\n const [local, rest] = splitProps(merged, [\n \"isOpen\",\n \"onClose\",\n \"variant\",\n \"children\",\n \"placement\",\n \"disableOutsideClick\",\n \"closeOnEsc\",\n \"offsetTop\",\n \"ref\",\n ]);\n\n const [mode, setMode] = createSignal<Mode>(null);\n let wrapperEl: HTMLDivElement | undefined;\n\n const outer = createCssTransition({\n in: () => local.isOpen,\n timeout: { enter: 70, exit: 70 },\n classNames: { enterDone: \"smwb-entered\" },\n appear: true,\n });\n\n createEffect(() => {\n if (!local.isOpen || !local.closeOnEsc || !local.onClose) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n // Only the topmost overlay layer reacts to Escape, and not to one handled inside\n // it, e.g. by a menu closing on it.\n if (event.key === \"Escape\" && !event.defaultPrevented && isTopOverlayLayer(wrapperEl)) local.onClose?.();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const handleSizeButton = (): void => {\n setMode((prev) => (prev === \"expanded\" ? \"small\" : prev === null ? \"expanded\" : null));\n };\n const handleClose = (): void => {\n local.onClose?.();\n setMode(null);\n };\n\n // The variable goes on the wrapper, so the panel and the scrim both inherit it. Left off when not given: an\n // undefined style key would print `style=\"\"` on the server.\n const wrapperStyle = (): JSX.CSSProperties | undefined => {\n const offset = local.offsetTop;\n return offset === undefined ? undefined : { \"--smui-sheet-offset-top\": typeof offset === \"number\" ? `${offset}px` : offset };\n };\n\n const block = (): JSX.Element => (\n <SheetBlock\n {...rest}\n ref={local.ref}\n isOpen={local.isOpen}\n onClose={local.onClose}\n handleSizeButton={handleSizeButton}\n handleClose={handleClose}\n mode={mode()}\n placement={local.placement}\n variant={local.variant}\n >\n {local.children}\n </SheetBlock>\n );\n\n return (\n <Show when={outer.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <Show\n when={local.variant === \"default\"}\n fallback={\n <div\n ref={(el) => (wrapperEl = el)}\n data-smwb-overlay-layer\n style={wrapperStyle()}\n class={cn(\"smwb-sheet__overlay\", \"smwb-dark\", `smwb-${local.placement}`, `smwb-sheet_${local.variant}`, outer.classes())}\n >\n <ClickAwayListener\n onClickAway={(event) => !local.disableOutsideClick && !landedAboveScrim(event, wrapperEl) && handleClose()}\n >\n {block()}\n </ClickAwayListener>\n </div>\n }\n >\n <div\n ref={(el) => (wrapperEl = el)}\n data-smwb-overlay-layer\n style={wrapperStyle()}\n class={cn(local.disableOutsideClick ? \"smwb-sheet__overlay\" : \"smwb-sheet__default\", outer.classes())}\n >\n {block()}\n </div>\n </Show>\n </Portal>\n </Show>\n );\n}\n\nexport default Sheet;\n"],"names":["landedAboveScrim","event","scrim","y","changedTouches","clientY","undefined","getBoundingClientRect","top","isVerticalAxis","placement","SheetBlock","props","merged","mergeProps","size","withSizeToggle","hideHeaderActions","reverseHeaderActions","closeAriaLabel","expandAriaLabel","collapseAriaLabel","restoreAriaLabel","resizable","minSize","resizeStep","resizeHandleAriaLabel","local","rest","splitProps","rootEl","dragSize","setDragSize","createSignal","vertical","inner","createCssTransition","in","isOpen","timeout","enter","exit","classNames","enterDone","appear","clamp","px","viewport","window","innerHeight","innerWidth","max","maxSize","Math","min","currentSizePx","rect","height","width","applySize","next","onResize","drag","onPointerDown","preventDefault","start","clientX","currentTarget","setPointerCapture","pointerId","onPointerMove","delta","grow","endDrag","hasPointerCapture","releasePointerCapture","onHandleKeyDown","base","incKey","decKey","key","createEffect","on","open","root","opener","contains","document","activeElement","focus","onCleanup","restoreFocus","showActions","onClose","actionNodes","nodes","push","_$createComponent","Button","variant","onClick","handleSizeButton","_$memo","mode","children","Icon","name","handleClose","reverse","sizeStyle","transition","_el$","_tmpl$4","_ref$","mergeRefs","ref","el","_$use","_$spread","_$mergeProps","cn","class","classes","style","mergeStyle","_$insert","Show","when","_el$2","_tmpl$","$$keydown","addEventListener","$$pointerup","$$pointermove","$$pointerdown","_$effect","_p$","_v$","_v$2","_v$3","_v$4","round","_v$5","e","_$setAttribute","t","a","o","i","_el$3","_tmpl$2","_el$4","_tmpl$3","Sheet","closeOnEsc","setMode","wrapperEl","outer","onKeyDown","defaultPrevented","isTopOverlayLayer","removeEventListener","prev","wrapperStyle","offset","offsetTop","block","r$","_ref$2","mounted","Portal","mount","isServer","body","fallback","_el$6","_tmpl$5","ClickAwayListener","onClickAway","disableOutsideClick","_v$8","_v$9","_$style","_$className","_el$5","_v$6","_v$7","_$delegateEvents"],"mappings":"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"}
|