@smwb/ui-solid 1.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/badge/badge.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/badge/badge.d.ts +2 -1
- package/dist/components/dataDisplay/badge/badge.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 +15 -1
- 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/badge/badge.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/badge/badge.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/badge/badge.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,30 +1,35 @@
|
|
|
1
|
-
import { createComponent as
|
|
1
|
+
import { createComponent as o, use as w, spread as y, mergeProps as m, insert as O, template as P, memo as _ } from "solid-js/web";
|
|
2
2
|
import '../../../assets/styles/less/components/button/button.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
|
|
3
3
|
/* empty css */
|
|
4
|
-
import { mergeProps as
|
|
5
|
-
import
|
|
6
|
-
import { mergeRefs as
|
|
7
|
-
import { useButtonGroup as
|
|
8
|
-
import { callHandler as
|
|
9
|
-
import { resolveLinkRel as
|
|
10
|
-
import { Ripple as
|
|
11
|
-
import { Icon as
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
import { mergeProps as L, splitProps as D, children as R, Show as u } from "solid-js";
|
|
5
|
+
import T from "clsx";
|
|
6
|
+
import { mergeRefs as v } from "../../../primitives/mergeRefs.js";
|
|
7
|
+
import { useButtonGroup as k } from "../buttonGroups/buttonGroupContext.js";
|
|
8
|
+
import { callHandler as z } from "../../../primitives/callHandler.js";
|
|
9
|
+
import { resolveLinkRel as B, resolveLinkTarget as E } from "../../../utils/linkAttrs.js";
|
|
10
|
+
import { Ripple as W } from "../../base/ripple/ripple.js";
|
|
11
|
+
import { Icon as Y } from "../../base/icon/icon.js";
|
|
12
|
+
var q = /* @__PURE__ */ P("<a>"), A = /* @__PURE__ */ P("<button>");
|
|
13
|
+
const x = "`iconOnly` has no text, so it needs an `aria-label` (or `aria-labelledby`) to be named.", H = "`iconOnly` is a square for one icon: a `label` is clipped. Drop it and name the button with `aria-label`.", S = "`iconOnly` is a square for one icon: children are clipped. Drop them and name the button with `aria-label`.", G = "`iconOnly` without an `icon` draws an empty square.", N = /* @__PURE__ */ new Set();
|
|
14
|
+
function a(i, r) {
|
|
15
|
+
N.has(i) || (N.add(i), console.warn(`[smwb] Button: ${r}`));
|
|
16
|
+
}
|
|
17
|
+
function te(i) {
|
|
18
|
+
const r = k(), $ = L({
|
|
15
19
|
get variant() {
|
|
16
|
-
return
|
|
20
|
+
return r?.variant ?? "contained";
|
|
17
21
|
},
|
|
18
22
|
get size() {
|
|
19
|
-
return
|
|
23
|
+
return r?.size ?? "medium";
|
|
20
24
|
},
|
|
21
25
|
get colorTheme() {
|
|
22
|
-
return
|
|
26
|
+
return r?.colorTheme ?? "primary";
|
|
23
27
|
}
|
|
24
|
-
},
|
|
28
|
+
}, i), [e, l] = D($, [
|
|
25
29
|
"label",
|
|
26
30
|
"variant",
|
|
27
31
|
"icon",
|
|
32
|
+
"iconOnly",
|
|
28
33
|
"iconProps",
|
|
29
34
|
"href",
|
|
30
35
|
"target",
|
|
@@ -42,85 +47,86 @@ function U(_) {
|
|
|
42
47
|
"color",
|
|
43
48
|
"ref",
|
|
44
49
|
"data-testid"
|
|
45
|
-
]),
|
|
46
|
-
let
|
|
47
|
-
const
|
|
48
|
-
"smwb-disabled":
|
|
49
|
-
"smwb-full-width":
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
50
|
+
]), d = () => E(e.target), p = () => e.color ?? r?.color ?? e.colorTheme, s = () => e.disabled ?? r?.disabled, C = () => e.fullWidth ?? r?.fullWidth;
|
|
51
|
+
let f;
|
|
52
|
+
const b = () => T("smwb-button", `smwb-${e.variant}`, `smwb-${e.size}`, p() === "primary" ? "smwb-primary" : `smwb-button_color-${p()}`, r && "smwb-button-group__grouped", e.class, {
|
|
53
|
+
"smwb-disabled": s(),
|
|
54
|
+
"smwb-full-width": C(),
|
|
55
|
+
"smwb-button_icon-only": e.iconOnly
|
|
56
|
+
}), h = (t) => {
|
|
57
|
+
z(e.onPointerDown, t), s() || f?.onRipple(t);
|
|
58
|
+
}, c = R(() => e.icon), I = () => {
|
|
59
|
+
const t = c();
|
|
60
|
+
return typeof t == "string" ? o(Y, m(() => e.iconProps ?? {}, {
|
|
61
|
+
name: t
|
|
62
|
+
})) : t;
|
|
63
|
+
}, g = () => [o(u, {
|
|
58
64
|
get when() {
|
|
59
|
-
return
|
|
65
|
+
return c();
|
|
60
66
|
},
|
|
61
67
|
get children() {
|
|
62
|
-
return
|
|
68
|
+
return I();
|
|
63
69
|
}
|
|
64
|
-
}),
|
|
70
|
+
}), _(() => _(() => !!e.label)() ? e.label : e.children), o(u, {
|
|
65
71
|
get when() {
|
|
66
72
|
return !e.disableRipple;
|
|
67
73
|
},
|
|
68
74
|
get children() {
|
|
69
|
-
return
|
|
70
|
-
actionRef: (
|
|
75
|
+
return o(W, {
|
|
76
|
+
actionRef: (t) => f = t,
|
|
71
77
|
get center() {
|
|
72
78
|
return e.rippleCenter;
|
|
73
79
|
}
|
|
74
80
|
});
|
|
75
81
|
}
|
|
76
82
|
})];
|
|
77
|
-
return
|
|
83
|
+
return e.iconOnly && (!l["aria-label"] && !l["aria-labelledby"] && a("name", x), e.label ? a("label", H) : "children" in e && a("children", S), c() || a("icon", G)), o(u, {
|
|
78
84
|
get when() {
|
|
79
85
|
return e.href;
|
|
80
86
|
},
|
|
81
87
|
get fallback() {
|
|
82
88
|
return (() => {
|
|
83
|
-
var
|
|
84
|
-
return typeof
|
|
89
|
+
var t = A(), n = v(e.ref);
|
|
90
|
+
return typeof n == "function" && w(n, t), y(t, m({
|
|
85
91
|
get "data-testid"() {
|
|
86
92
|
return e["data-testid"] ?? "button";
|
|
87
93
|
}
|
|
88
|
-
},
|
|
94
|
+
}, l, {
|
|
89
95
|
get class() {
|
|
90
|
-
return
|
|
96
|
+
return b();
|
|
91
97
|
},
|
|
92
|
-
onPointerDown:
|
|
98
|
+
onPointerDown: h,
|
|
93
99
|
get disabled() {
|
|
94
|
-
return !!
|
|
100
|
+
return !!s();
|
|
95
101
|
}
|
|
96
|
-
}), !1, !0),
|
|
102
|
+
}), !1, !0), O(t, g), t;
|
|
97
103
|
})();
|
|
98
104
|
},
|
|
99
105
|
get children() {
|
|
100
|
-
var
|
|
101
|
-
return typeof
|
|
106
|
+
var t = q(), n = v(e.ref);
|
|
107
|
+
return typeof n == "function" && w(n, t), y(t, m({
|
|
102
108
|
get "data-testid"() {
|
|
103
109
|
return e["data-testid"] ?? "button-link";
|
|
104
110
|
}
|
|
105
|
-
},
|
|
111
|
+
}, l, {
|
|
106
112
|
get class() {
|
|
107
|
-
return
|
|
113
|
+
return b();
|
|
108
114
|
},
|
|
109
115
|
get href() {
|
|
110
116
|
return e.href;
|
|
111
117
|
},
|
|
112
118
|
get target() {
|
|
113
|
-
return
|
|
119
|
+
return d();
|
|
114
120
|
},
|
|
115
121
|
get rel() {
|
|
116
|
-
return
|
|
122
|
+
return B(e.rel, d());
|
|
117
123
|
},
|
|
118
|
-
onPointerDown:
|
|
119
|
-
}), !1, !0),
|
|
124
|
+
onPointerDown: h
|
|
125
|
+
}), !1, !0), O(t, g), t;
|
|
120
126
|
}
|
|
121
127
|
});
|
|
122
128
|
}
|
|
123
129
|
export {
|
|
124
|
-
|
|
130
|
+
te as Button
|
|
125
131
|
};
|
|
126
132
|
//# sourceMappingURL=button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","sources":["../../../../src/components/inputs/button/button.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, children, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { Icon, type IconProps } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { useButtonGroup } from \"../buttonGroups/buttonGroupContext\";\nimport { callHandler } from \"../../../primitives/callHandler\";\nimport { resolveLinkRel, resolveLinkTarget } from \"../../../utils/linkAttrs\";\n\nexport interface ButtonProps extends JSX.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement> {\n /** Button text. */\n label?: string;\n /** Visual style of the button. */\n variant?: \"contained\" | \"text\" | \"outlined\";\n /** Button size. */\n size?: \"small\" | \"medium\" | \"large\";\n /** Icon as an element (e.g. <Icon/>) or a string (icon name / url / base64). */\n icon?: JSX.Element | string;\n /** Props forwarded to the <Icon/> when `icon` is a string. */\n iconProps?: Omit<IconProps, \"name\">;\n /** @deprecated use `color`. Kept for backward compatibility. */\n colorTheme?: \"primary\";\n /** Semantic color, resolved through `--smwb-*Color*` tokens. */\n color?: \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n /** When set, the component renders as an <a>. */\n href?: string;\n /**\n * Where a link (with `href`) opens. By default `\"_blank\"`: a new tab. `null` leaves the `target`\n * attribute out, so the link opens in place, like an internal one; an empty string does the same, and\n * any other string is used as is.\n */\n target?: string | null | undefined;\n /**\n * The `rel` of a link (with `href`). By default `\"noreferrer\"` for a link that opens another tab or\n * window, and none for one that opens in place. Your own value replaces the default, so add `noreferrer` yourself\n * if you still want it; an empty string drops the attribute.\n */\n rel?: string | undefined;\n disabled?: boolean;\n type?: \"button\" | \"submit\" | \"reset\";\n /** Stretch to the full width of the container. */\n fullWidth?: boolean;\n /** Center the ripple effect. */\n rippleCenter?: boolean;\n /** Disable the ripple effect. */\n disableRipple?: boolean;\n /** Test id of the root; `button`, or `button-link` for a link, unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLButtonElement | HTMLAnchorElement>;\n}\n\nexport function Button(props: ParentProps<ButtonProps>): JSX.Element {\n const group = useButtonGroup();\n const merged = mergeProps(\n {\n get variant(): NonNullable<ButtonProps[\"variant\"]> {\n return group?.variant ?? \"contained\";\n },\n get size(): NonNullable<ButtonProps[\"size\"]> {\n return group?.size ?? \"medium\";\n },\n get colorTheme(): NonNullable<ButtonProps[\"colorTheme\"]> {\n return group?.colorTheme ?? \"primary\";\n },\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"label\",\n \"variant\",\n \"icon\",\n \"iconProps\",\n \"href\",\n \"target\",\n \"rel\",\n \"class\",\n \"disabled\",\n \"children\",\n \"fullWidth\",\n \"rippleCenter\",\n \"disableRipple\",\n // The button sets this on its root too; its own handler calls the caller's first.\n \"onPointerDown\",\n \"size\",\n \"colorTheme\",\n \"color\",\n \"ref\",\n \"data-testid\",\n ]);\n\n const linkTarget = (): string | undefined => resolveLinkTarget(local.target);\n const color = (): string => local.color ?? group?.color ?? local.colorTheme;\n const disabled = (): boolean | undefined => local.disabled ?? group?.disabled;\n const fullWidth = (): boolean | undefined => local.fullWidth ?? group?.fullWidth;\n let rippleActions: RippleActionsRef | undefined;\n\n const classes = (): string =>\n cn(\n \"smwb-button\",\n `smwb-${local.variant}`,\n `smwb-${local.size}`,\n color() === \"primary\" ? \"smwb-primary\" : `smwb-button_color-${color()}`,\n group && \"smwb-button-group__grouped\",\n local.class,\n {\n \"smwb-disabled\": disabled(),\n \"smwb-full-width\": fullWidth(),\n }\n );\n\n // Ripple on pointerdown so it fires for touch and pen, not just mouse.\n const onPointerDown: JSX.EventHandler<HTMLButtonElement | HTMLAnchorElement, PointerEvent> = (event) => {\n callHandler(local.onPointerDown, event);\n if (!disabled()) {\n rippleActions?.onRipple(event);\n }\n };\n\n // Read the icon once: markup passed as a prop is created anew on every read,\n // and during hydration the copy made for a <Show> test has no server DOM node.\n const icon = children(() => local.icon);\n const iconElement = (): JSX.Element => {\n const resolved = icon();\n return typeof resolved === \"string\" ? <Icon {...(local.iconProps ?? {})} name={resolved} /> : resolved;\n };\n\n const content = (): JSX.Element => (\n <>\n <Show when={icon()}>{iconElement()}</Show>\n {local.label ? local.label : local.children}\n <Show when={!local.disableRipple}>\n <Ripple actionRef={(actions) => (rippleActions = actions)} center={local.rippleCenter} />\n </Show>\n </>\n );\n\n return (\n <Show\n when={local.href}\n fallback={\n <button\n data-testid={local[\"data-testid\"] ?? \"button\"}\n {...rest}\n ref={mergeRefs(local.ref)}\n class={classes()}\n onPointerDown={onPointerDown}\n disabled={!!disabled()}\n >\n {content()}\n </button>\n }\n >\n <a\n data-testid={local[\"data-testid\"] ?? \"button-link\"}\n {...rest}\n ref={mergeRefs(local.ref)}\n class={classes()}\n href={local.href}\n target={linkTarget()}\n rel={resolveLinkRel(local.rel, linkTarget())}\n onPointerDown={onPointerDown}\n >\n {content()}\n </a>\n </Show>\n );\n}\n\nexport default Button;\n"],"names":["Button","props","group","useButtonGroup","merged","mergeProps","variant","size","colorTheme","local","rest","splitProps","linkTarget","resolveLinkTarget","target","color","disabled","fullWidth","rippleActions","classes","cn","class","onPointerDown","event","callHandler","onRipple","icon","children","iconElement","resolved","_$createComponent","Icon","_$mergeProps","iconProps","name","content","Show","when","_$memo","label","disableRipple","Ripple","actionRef","actions","center","rippleCenter","href","fallback","_el$2","_tmpl$2","_ref$2","mergeRefs","ref","_$use","_$spread","_$insert","_el$","_tmpl$","_ref$","rel","resolveLinkRel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"button.js","sources":["../../../../src/components/inputs/button/button.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, children, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { Icon, type IconProps } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { useButtonGroup } from \"../buttonGroups/buttonGroupContext\";\nimport { callHandler } from \"../../../primitives/callHandler\";\nimport { resolveLinkRel, resolveLinkTarget } from \"../../../utils/linkAttrs\";\n\nexport interface ButtonProps extends JSX.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement> {\n /** Button text. */\n label?: string;\n /** Visual style of the button. */\n variant?: \"contained\" | \"text\" | \"outlined\";\n /** Button size. */\n size?: \"small\" | \"medium\" | \"large\";\n /** Icon as an element (e.g. <Icon/>) or a string (icon name / url / base64). */\n icon?: JSX.Element | string;\n /**\n * Icon-only button: a square of its size's control height (`--smui-control-h-sm/md/lg`), with no\n * `min-width` and no padding. Works for every `variant` and for a link (`href`). It has no text, so its\n * name comes from `aria-label` (or `aria-labelledby`); without one the component warns in the console.\n * Apart from `fullWidth`: a square does not stretch.\n */\n iconOnly?: boolean;\n /** Props forwarded to the <Icon/> when `icon` is a string. */\n iconProps?: Omit<IconProps, \"name\">;\n /** @deprecated use `color`. Kept for backward compatibility. */\n colorTheme?: \"primary\";\n /** Semantic color, resolved through `--smwb-*Color*` tokens. */\n color?: \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n /** When set, the component renders as an <a>. */\n href?: string;\n /**\n * Where a link (with `href`) opens. By default `\"_blank\"`: a new tab. `null` leaves the `target`\n * attribute out, so the link opens in place, like an internal one; an empty string does the same, and\n * any other string is used as is.\n */\n target?: string | null | undefined;\n /**\n * The `rel` of a link (with `href`). By default `\"noreferrer\"` for a link that opens another tab or\n * window, and none for one that opens in place. Your own value replaces the default, so add `noreferrer` yourself\n * if you still want it; an empty string drops the attribute.\n */\n rel?: string | undefined;\n disabled?: boolean;\n type?: \"button\" | \"submit\" | \"reset\";\n /** Stretch to the full width of the container. */\n fullWidth?: boolean;\n /** Center the ripple effect. */\n rippleCenter?: boolean;\n /** Disable the ripple effect. */\n disableRipple?: boolean;\n /** Test id of the root; `button`, or `button-link` for a link, unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLButtonElement | HTMLAnchorElement>;\n}\n\nconst ICON_ONLY_NAME = \"`iconOnly` has no text, so it needs an `aria-label` (or `aria-labelledby`) to be named.\";\nconst ICON_ONLY_LABEL =\n \"`iconOnly` is a square for one icon: a `label` is clipped. Drop it and name the button with `aria-label`.\";\nconst ICON_ONLY_CHILDREN =\n \"`iconOnly` is a square for one icon: children are clipped. Drop them and name the button with `aria-label`.\";\nconst ICON_ONLY_ICON = \"`iconOnly` without an `icon` draws an empty square.\";\n\nconst warnedIconOnly = new Set<string>();\n\n// Warns unconditionally, once per kind of mistake, like the rest of ui-solid (icon.tsx).\nfunction warnIconOnly(kind: \"name\" | \"label\" | \"children\" | \"icon\", message: string): void {\n if (warnedIconOnly.has(kind)) return;\n warnedIconOnly.add(kind);\n console.warn(`[smwb] Button: ${message}`);\n}\n\nexport function Button(props: ParentProps<ButtonProps>): JSX.Element {\n const group = useButtonGroup();\n const merged = mergeProps(\n {\n get variant(): NonNullable<ButtonProps[\"variant\"]> {\n return group?.variant ?? \"contained\";\n },\n get size(): NonNullable<ButtonProps[\"size\"]> {\n return group?.size ?? \"medium\";\n },\n get colorTheme(): NonNullable<ButtonProps[\"colorTheme\"]> {\n return group?.colorTheme ?? \"primary\";\n },\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"label\",\n \"variant\",\n \"icon\",\n \"iconOnly\",\n \"iconProps\",\n \"href\",\n \"target\",\n \"rel\",\n \"class\",\n \"disabled\",\n \"children\",\n \"fullWidth\",\n \"rippleCenter\",\n \"disableRipple\",\n // The button sets this on its root too; its own handler calls the caller's first.\n \"onPointerDown\",\n \"size\",\n \"colorTheme\",\n \"color\",\n \"ref\",\n \"data-testid\",\n ]);\n\n const linkTarget = (): string | undefined => resolveLinkTarget(local.target);\n const color = (): string => local.color ?? group?.color ?? local.colorTheme;\n const disabled = (): boolean | undefined => local.disabled ?? group?.disabled;\n const fullWidth = (): boolean | undefined => local.fullWidth ?? group?.fullWidth;\n let rippleActions: RippleActionsRef | undefined;\n\n const classes = (): string =>\n cn(\n \"smwb-button\",\n `smwb-${local.variant}`,\n `smwb-${local.size}`,\n color() === \"primary\" ? \"smwb-primary\" : `smwb-button_color-${color()}`,\n group && \"smwb-button-group__grouped\",\n local.class,\n {\n \"smwb-disabled\": disabled(),\n \"smwb-full-width\": fullWidth(),\n \"smwb-button_icon-only\": local.iconOnly,\n }\n );\n\n // Ripple on pointerdown so it fires for touch and pen, not just mouse.\n const onPointerDown: JSX.EventHandler<HTMLButtonElement | HTMLAnchorElement, PointerEvent> = (event) => {\n callHandler(local.onPointerDown, event);\n if (!disabled()) {\n rippleActions?.onRipple(event);\n }\n };\n\n // Read the icon once: markup passed as a prop is created anew on every read,\n // and during hydration the copy made for a <Show> test has no server DOM node.\n const icon = children(() => local.icon);\n const iconElement = (): JSX.Element => {\n const resolved = icon();\n return typeof resolved === \"string\" ? <Icon {...(local.iconProps ?? {})} name={resolved} /> : resolved;\n };\n\n const content = (): JSX.Element => (\n <>\n <Show when={icon()}>{iconElement()}</Show>\n {local.label ? local.label : local.children}\n <Show when={!local.disableRipple}>\n <Ripple actionRef={(actions) => (rippleActions = actions)} center={local.rippleCenter} />\n </Show>\n </>\n );\n\n // Checked once, here: `children` is only looked up by key, because reading it would create its nodes.\n if (local.iconOnly) {\n if (!rest[\"aria-label\"] && !rest[\"aria-labelledby\"]) {\n warnIconOnly(\"name\", ICON_ONLY_NAME);\n }\n if (local.label) {\n warnIconOnly(\"label\", ICON_ONLY_LABEL);\n } else if (\"children\" in local) {\n warnIconOnly(\"children\", ICON_ONLY_CHILDREN);\n }\n if (!icon()) {\n warnIconOnly(\"icon\", ICON_ONLY_ICON);\n }\n }\n\n return (\n <Show\n when={local.href}\n fallback={\n <button\n data-testid={local[\"data-testid\"] ?? \"button\"}\n {...rest}\n ref={mergeRefs(local.ref)}\n class={classes()}\n onPointerDown={onPointerDown}\n disabled={!!disabled()}\n >\n {content()}\n </button>\n }\n >\n <a\n data-testid={local[\"data-testid\"] ?? \"button-link\"}\n {...rest}\n ref={mergeRefs(local.ref)}\n class={classes()}\n href={local.href}\n target={linkTarget()}\n rel={resolveLinkRel(local.rel, linkTarget())}\n onPointerDown={onPointerDown}\n >\n {content()}\n </a>\n </Show>\n );\n}\n\nexport default Button;\n"],"names":["ICON_ONLY_NAME","ICON_ONLY_LABEL","ICON_ONLY_CHILDREN","ICON_ONLY_ICON","warnedIconOnly","Set","warnIconOnly","kind","message","has","add","console","warn","Button","props","group","useButtonGroup","merged","mergeProps","variant","size","colorTheme","local","rest","splitProps","linkTarget","resolveLinkTarget","target","color","disabled","fullWidth","rippleActions","classes","cn","class","iconOnly","onPointerDown","event","callHandler","onRipple","icon","children","iconElement","resolved","_$createComponent","Icon","_$mergeProps","iconProps","name","content","Show","when","_$memo","label","disableRipple","Ripple","actionRef","actions","center","rippleCenter","href","fallback","_el$2","_tmpl$2","_ref$2","mergeRefs","ref","_$use","_$spread","_$insert","_el$","_tmpl$","_ref$","rel","resolveLinkRel"],"mappings":"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"}
|
|
@@ -19,6 +19,12 @@ export interface ToggleProps extends Omit<JSX.InputHTMLAttributes<HTMLInputEleme
|
|
|
19
19
|
onChange?: (event: SelectionChangeEvent, checked: boolean, data: ToggleProps) => void;
|
|
20
20
|
helperText?: JSX.Element;
|
|
21
21
|
error?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* A compact look for a status row or a toolbar: the label shares the line with the switch ("top", the default,
|
|
24
|
+
* counts as "left"), no line is kept for helper text unless `helperText` is set, and the row is the theme's small
|
|
25
|
+
* control height, at most 28px. The default look is unchanged.
|
|
26
|
+
*/
|
|
27
|
+
compact?: boolean;
|
|
22
28
|
ref?: Ref<HTMLInputElement>;
|
|
23
29
|
}
|
|
24
30
|
export declare function Toggle(props: ToggleProps): JSX.Element;
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { createComponent as
|
|
1
|
+
import { createComponent as m, insert as g, setAttribute as b, use as k, spread as x, mergeProps as v, effect as C, className as p, memo as $, template as h } from "solid-js/web";
|
|
2
2
|
import '../../../assets/styles/less/components/toggle/toggle.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
|
|
3
3
|
/* empty css */
|
|
4
|
-
import { mergeProps as
|
|
4
|
+
import { mergeProps as T, splitProps as P, Show as O } from "solid-js";
|
|
5
5
|
import u from "clsx";
|
|
6
|
-
import { TextFieldWrapper as
|
|
7
|
-
import { createHelperText as
|
|
8
|
-
import { createId as
|
|
9
|
-
import { mergeRefs as
|
|
10
|
-
import { callHandler as
|
|
11
|
-
var
|
|
12
|
-
function
|
|
13
|
-
const f =
|
|
6
|
+
import { TextFieldWrapper as q } from "../textField/textFieldWrapper.js";
|
|
7
|
+
import { createHelperText as z } from "../../../primitives/createHelperText.js";
|
|
8
|
+
import { createId as B } from "../../../primitives/createId.js";
|
|
9
|
+
import { mergeRefs as H } from "../../../primitives/mergeRefs.js";
|
|
10
|
+
import { callHandler as I } from "../../../primitives/callHandler.js";
|
|
11
|
+
var A = /* @__PURE__ */ h("<label class=smwb-toggle__label>"), D = /* @__PURE__ */ h("<span><label><input type=checkbox class=smwb-toggle__checkbox role=switch><span class=smwb-toggle__track></span><span class=smwb-toggle__thumb>");
|
|
12
|
+
function L(i) {
|
|
13
|
+
const f = T({
|
|
14
14
|
size: "medium",
|
|
15
15
|
color: "primary"
|
|
16
|
-
}, i), [e, _] =
|
|
16
|
+
}, i), [e, _] = P(f, ["disabled", "readOnly", "onClick", "required", "checked", "class", "id", "label", "labelPlacement", "size", "color", "helperText", "error", "compact", "onChange", "aria-describedby", "ref"]), s = B(e.id), l = z(() => e.helperText, {
|
|
17
17
|
describedBy: () => e["aria-describedby"]
|
|
18
18
|
}), w = (r) => {
|
|
19
|
-
|
|
19
|
+
I(e.onClick, r), e.readOnly && r.preventDefault();
|
|
20
20
|
}, y = (r) => {
|
|
21
21
|
e.readOnly || e.onChange?.(r, r.currentTarget.checked, i);
|
|
22
22
|
};
|
|
23
|
-
return
|
|
23
|
+
return m(q, {
|
|
24
24
|
get helperText() {
|
|
25
|
-
return l.text();
|
|
25
|
+
return $(() => !!(e.compact && !l.text()))() ? null : l.text();
|
|
26
26
|
},
|
|
27
27
|
get helperTextId() {
|
|
28
28
|
return l.id;
|
|
@@ -35,18 +35,18 @@ function K(i) {
|
|
|
35
35
|
},
|
|
36
36
|
class: "smwb-text-field-checkbox",
|
|
37
37
|
get children() {
|
|
38
|
-
var r =
|
|
39
|
-
|
|
38
|
+
var r = D(), a = r.firstChild, o = a.firstChild;
|
|
39
|
+
g(r, m(O, {
|
|
40
40
|
get when() {
|
|
41
41
|
return e.label;
|
|
42
42
|
},
|
|
43
43
|
get children() {
|
|
44
|
-
var t =
|
|
45
|
-
return b(t, "for", s),
|
|
44
|
+
var t = A();
|
|
45
|
+
return b(t, "for", s), g(t, () => e.label), t;
|
|
46
46
|
}
|
|
47
47
|
}), a);
|
|
48
|
-
var
|
|
49
|
-
return typeof
|
|
48
|
+
var c = H(e.ref);
|
|
49
|
+
return typeof c == "function" && k(c, o), b(o, "id", s), x(o, v({
|
|
50
50
|
get "aria-checked"() {
|
|
51
51
|
return e.checked;
|
|
52
52
|
},
|
|
@@ -78,11 +78,11 @@ function K(i) {
|
|
|
78
78
|
onChange: y,
|
|
79
79
|
onClick: w
|
|
80
80
|
}), !1, !1), C((t) => {
|
|
81
|
-
var
|
|
81
|
+
var d = u("smwb-toggle__wrapper", e.labelPlacement && `smwb-toggle__wrapper_label-${e.labelPlacement}`, e.compact && "smwb-toggle__wrapper_compact"), n = u("smwb-toggle", `smwb-toggle_size-${e.size}`, `smwb-toggle_color-${e.color}`, e.class, {
|
|
82
82
|
"smwb-disabled": e.disabled,
|
|
83
83
|
"smwb-readonly": e.readOnly
|
|
84
84
|
});
|
|
85
|
-
return
|
|
85
|
+
return d !== t.e && p(r, t.e = d), n !== t.t && p(a, t.t = n), t;
|
|
86
86
|
}, {
|
|
87
87
|
e: void 0,
|
|
88
88
|
t: void 0
|
|
@@ -91,6 +91,6 @@ function K(i) {
|
|
|
91
91
|
});
|
|
92
92
|
}
|
|
93
93
|
export {
|
|
94
|
-
|
|
94
|
+
L as Toggle
|
|
95
95
|
};
|
|
96
96
|
//# sourceMappingURL=toggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle.js","sources":["../../../../src/components/inputs/toggle/toggle.tsx"],"sourcesContent":["import { type JSX, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { TextFieldWrapper } from \"../textField/textFieldWrapper\";\nimport { createHelperText } from \"../../../primitives/createHelperText\";\nimport { createId } from \"../../../primitives/createId\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\nimport type { SelectionChangeEvent, SelectionControlColor, SelectionControlSize } from \"../checkbox/checkbox\";\n\nexport interface ToggleProps extends Omit<JSX.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"size\"> {\n disabled?: boolean;\n /**\n * Keeps the switch as it is: clicks on it or its label and Space change nothing, and `onChange` is not called.\n * It stays focusable, and its input tells assistive technology it is read-only (`aria-readonly`).\n */\n readOnly?: boolean;\n required?: boolean;\n checked?: boolean;\n id?: string;\n label?: string;\n labelPlacement?: \"top\" | \"left\" | \"right\";\n size?: SelectionControlSize;\n color?: SelectionControlColor;\n /** Unified handler: `(event, checked, data)`. */\n onChange?: (event: SelectionChangeEvent, checked: boolean, data: ToggleProps) => void;\n helperText?: JSX.Element;\n error?: boolean;\n ref?: Ref<HTMLInputElement>;\n}\n\nexport function Toggle(props: ToggleProps): JSX.Element {\n const merged = mergeProps({ size: \"medium\" as SelectionControlSize, color: \"primary\" as SelectionControlColor }, props);\n const [local, args] = splitProps(merged, [\n \"disabled\",\n \"readOnly\",\n \"onClick\",\n \"required\",\n \"checked\",\n \"class\",\n \"id\",\n \"label\",\n \"labelPlacement\",\n \"size\",\n \"color\",\n \"helperText\",\n \"error\",\n \"onChange\",\n \"aria-describedby\",\n \"ref\",\n ]);\n const id = createId(local.id);\n const helper = createHelperText(() => local.helperText, { describedBy: () => local[\"aria-describedby\"] });\n\n // `readonly` means nothing to a checkbox input: a click on it or on its label, and Space, still\n // toggle it. Cancel the click; the browser then puts the previous state back.\n const handleClick: JSX.EventHandler<HTMLInputElement, MouseEvent> = (event) => {\n callHandler(local.onClick, event);\n if (local.readOnly) event.preventDefault();\n };\n\n const handleChange: JSX.EventHandler<HTMLInputElement, Event> = (event) => {\n if (local.readOnly) {\n return;\n }\n local.onChange?.(event, event.currentTarget.checked, props);\n };\n\n return (\n <TextFieldWrapper\n helperText={helper.text()}\n helperTextId={helper.id}\n disabled={local.disabled}\n error={local.error}\n class=\"smwb-text-field-checkbox\"\n >\n <span
|
|
1
|
+
{"version":3,"file":"toggle.js","sources":["../../../../src/components/inputs/toggle/toggle.tsx"],"sourcesContent":["import { type JSX, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { TextFieldWrapper } from \"../textField/textFieldWrapper\";\nimport { createHelperText } from \"../../../primitives/createHelperText\";\nimport { createId } from \"../../../primitives/createId\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\nimport type { SelectionChangeEvent, SelectionControlColor, SelectionControlSize } from \"../checkbox/checkbox\";\n\nexport interface ToggleProps extends Omit<JSX.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"size\"> {\n disabled?: boolean;\n /**\n * Keeps the switch as it is: clicks on it or its label and Space change nothing, and `onChange` is not called.\n * It stays focusable, and its input tells assistive technology it is read-only (`aria-readonly`).\n */\n readOnly?: boolean;\n required?: boolean;\n checked?: boolean;\n id?: string;\n label?: string;\n labelPlacement?: \"top\" | \"left\" | \"right\";\n size?: SelectionControlSize;\n color?: SelectionControlColor;\n /** Unified handler: `(event, checked, data)`. */\n onChange?: (event: SelectionChangeEvent, checked: boolean, data: ToggleProps) => void;\n helperText?: JSX.Element;\n error?: boolean;\n /**\n * A compact look for a status row or a toolbar: the label shares the line with the switch (\"top\", the default,\n * counts as \"left\"), no line is kept for helper text unless `helperText` is set, and the row is the theme's small\n * control height, at most 28px. The default look is unchanged.\n */\n compact?: boolean;\n ref?: Ref<HTMLInputElement>;\n}\n\nexport function Toggle(props: ToggleProps): JSX.Element {\n const merged = mergeProps({ size: \"medium\" as SelectionControlSize, color: \"primary\" as SelectionControlColor }, props);\n const [local, args] = splitProps(merged, [\n \"disabled\",\n \"readOnly\",\n \"onClick\",\n \"required\",\n \"checked\",\n \"class\",\n \"id\",\n \"label\",\n \"labelPlacement\",\n \"size\",\n \"color\",\n \"helperText\",\n \"error\",\n \"compact\",\n \"onChange\",\n \"aria-describedby\",\n \"ref\",\n ]);\n const id = createId(local.id);\n const helper = createHelperText(() => local.helperText, { describedBy: () => local[\"aria-describedby\"] });\n\n // `readonly` means nothing to a checkbox input: a click on it or on its label, and Space, still\n // toggle it. Cancel the click; the browser then puts the previous state back.\n const handleClick: JSX.EventHandler<HTMLInputElement, MouseEvent> = (event) => {\n callHandler(local.onClick, event);\n if (local.readOnly) event.preventDefault();\n };\n\n const handleChange: JSX.EventHandler<HTMLInputElement, Event> = (event) => {\n if (local.readOnly) {\n return;\n }\n local.onChange?.(event, event.currentTarget.checked, props);\n };\n\n return (\n <TextFieldWrapper\n helperText={local.compact && !helper.text() ? null : helper.text()}\n helperTextId={helper.id}\n disabled={local.disabled}\n error={local.error}\n class=\"smwb-text-field-checkbox\"\n >\n <span\n class={cn(\n \"smwb-toggle__wrapper\",\n local.labelPlacement && `smwb-toggle__wrapper_label-${local.labelPlacement}`,\n local.compact && \"smwb-toggle__wrapper_compact\"\n )}\n >\n <Show when={local.label}>\n <label for={id} class=\"smwb-toggle__label\">\n {local.label}\n </label>\n </Show>\n <label\n class={cn(\"smwb-toggle\", `smwb-toggle_size-${local.size}`, `smwb-toggle_color-${local.color}`, local.class, {\n \"smwb-disabled\": local.disabled,\n \"smwb-readonly\": local.readOnly,\n })}\n >\n <input\n type=\"checkbox\"\n id={id}\n class=\"smwb-toggle__checkbox\"\n aria-checked={local.checked}\n aria-invalid={local.error || undefined}\n aria-required={local.required || undefined}\n aria-describedby={helper.describedBy()}\n role=\"switch\"\n checked={local.checked}\n disabled={local.disabled}\n readonly={local.readOnly}\n required={local.required}\n ref={mergeRefs(local.ref)}\n {...args}\n aria-readonly={local.readOnly || undefined}\n onChange={handleChange}\n onClick={handleClick}\n />\n <span class=\"smwb-toggle__track\" />\n <span class=\"smwb-toggle__thumb\" />\n </label>\n </span>\n </TextFieldWrapper>\n );\n}\n\nexport default Toggle;\n"],"names":["Toggle","props","merged","mergeProps","size","color","local","args","splitProps","id","createId","helper","createHelperText","helperText","describedBy","handleClick","event","callHandler","onClick","readOnly","preventDefault","handleChange","onChange","currentTarget","checked","_$createComponent","TextFieldWrapper","_$memo","compact","text","helperTextId","disabled","error","children","_el$","_tmpl$2","_el$3","firstChild","_el$4","_$insert","Show","when","label","_el$2","_tmpl$","_$setAttribute","_ref$","mergeRefs","ref","_$use","_$spread","_$mergeProps","undefined","required","readonly","_$effect","_p$","_v$","cn","labelPlacement","_v$2","class","e","_$className","t"],"mappings":"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"}
|
|
@@ -23,7 +23,12 @@ export interface AppLayoutProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
|
23
23
|
collapseToggleAriaLabel?: string;
|
|
24
24
|
/** Sidebar collapsed width. */
|
|
25
25
|
sidebarCollapsedWidth?: number | string;
|
|
26
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Keep the header pinned while content scrolls. A pinned header's height is published as `--smui-sheet-offset-top`
|
|
28
|
+
* on the document element, so a `Sheet` opens below it and leaves it visible and clickable (a `Sheet` with its own
|
|
29
|
+
* `offsetTop` ignores it). The height is taken from the top of the window, so the layout is assumed to start
|
|
30
|
+
* there; with several layouts the most recent one wins.
|
|
31
|
+
*/
|
|
27
32
|
stickyHeader?: boolean;
|
|
28
33
|
/** Test id of the root `<div>`; `app-layout` unless given. */
|
|
29
34
|
"data-testid"?: string | undefined;
|
|
@@ -1,80 +1,87 @@
|
|
|
1
|
-
import { use as
|
|
1
|
+
import { use as S, spread as L, mergeProps as P, insert as l, createComponent as o, setAttribute as u, effect as x, template as s, delegateEvents as I } from "solid-js/web";
|
|
2
2
|
import '../../../assets/styles/less/components/appLayout/appLayout.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
|
|
3
3
|
/* empty css */
|
|
4
|
-
import { mergeProps as
|
|
5
|
-
import
|
|
6
|
-
import { createControllableState as
|
|
7
|
-
import { createId as
|
|
8
|
-
import { mergeRefs as
|
|
9
|
-
import { mergeStyle as
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
import { mergeProps as E, splitProps as z, children as m, Show as n, createEffect as O, onCleanup as R } from "solid-js";
|
|
5
|
+
import V from "clsx";
|
|
6
|
+
import { createControllableState as j } from "../../../primitives/createControllableState.js";
|
|
7
|
+
import { createId as q } from "../../../primitives/createId.js";
|
|
8
|
+
import { mergeRefs as B } from "../../../primitives/mergeRefs.js";
|
|
9
|
+
import { mergeStyle as D } from "../../../primitives/mergeStyle.js";
|
|
10
|
+
import { publishHeaderOffset as F } from "../../../primitives/publishHeaderOffset.js";
|
|
11
|
+
import { Icon as G } from "../../base/icon/icon.js";
|
|
12
|
+
var J = /* @__PURE__ */ s("<div class=smwb-app-layout__header>"), K = /* @__PURE__ */ s("<div class=smwb-app-layout__collapse>"), M = /* @__PURE__ */ s("<aside class=smwb-app-layout__sidebar>"), N = /* @__PURE__ */ s("<div class=smwb-app-layout__footer>"), Q = /* @__PURE__ */ s("<div><div class=smwb-app-layout__body><div class=smwb-app-layout__content>"), U = /* @__PURE__ */ s("<button type=button class=smwb-app-layout__collapse-btn>");
|
|
13
|
+
const k = (i) => typeof i == "number" ? `${i}px` : i;
|
|
14
|
+
function de(i) {
|
|
15
|
+
const T = E({
|
|
15
16
|
sidebarWidth: 260,
|
|
16
17
|
defaultSidebarCollapsed: !1,
|
|
17
18
|
collapsible: !1,
|
|
18
19
|
collapseToggleAriaLabel: "Toggle navigation",
|
|
19
20
|
sidebarCollapsedWidth: 72,
|
|
20
21
|
stickyHeader: !0
|
|
21
|
-
}, i), [e,
|
|
22
|
+
}, i), [e, W] = z(T, ["header", "sidebar", "footer", "sidebarWidth", "sidebarCollapsed", "defaultSidebarCollapsed", "onSidebarCollapsedChange", "collapsible", "collapseToggle", "collapseToggleAriaLabel", "sidebarCollapsedWidth", "stickyHeader", "class", "style", "children", "ref", "data-testid"]), [d, A] = j({
|
|
22
23
|
value: () => e.sidebarCollapsed,
|
|
23
24
|
defaultValue: e.defaultSidebarCollapsed,
|
|
24
25
|
onChange: (a) => e.onSidebarCollapsedChange?.(a)
|
|
25
|
-
}),
|
|
26
|
-
"--smui-app-sidebar-w": d() ?
|
|
26
|
+
}), f = q(), h = m(() => e.header), _ = m(() => e.sidebar), y = m(() => e.footer), v = m(() => e.collapsible ? e.collapseToggle : void 0), H = () => D({
|
|
27
|
+
"--smui-app-sidebar-w": d() ? k(e.sidebarCollapsedWidth) : k(e.sidebarWidth)
|
|
27
28
|
}, e.style);
|
|
28
29
|
return (() => {
|
|
29
|
-
var a =
|
|
30
|
-
return typeof
|
|
30
|
+
var a = Q(), b = a.firstChild, g = b.firstChild, C = B(e.ref);
|
|
31
|
+
return typeof C == "function" && S(C, a), L(a, P(W, {
|
|
31
32
|
get "data-testid"() {
|
|
32
33
|
return e["data-testid"] ?? "app-layout";
|
|
33
34
|
},
|
|
34
35
|
get class() {
|
|
35
|
-
return
|
|
36
|
+
return V("smwb-app-layout", {
|
|
36
37
|
"smwb-app-layout_sticky-header": e.stickyHeader,
|
|
37
38
|
"smwb-app-layout_collapsed": d()
|
|
38
39
|
}, e.class);
|
|
39
40
|
},
|
|
40
41
|
get style() {
|
|
41
|
-
return
|
|
42
|
+
return H();
|
|
42
43
|
}
|
|
43
|
-
}), !1, !0),
|
|
44
|
+
}), !1, !0), l(a, o(n, {
|
|
44
45
|
get when() {
|
|
45
|
-
return
|
|
46
|
+
return h();
|
|
46
47
|
},
|
|
47
48
|
get children() {
|
|
48
|
-
var
|
|
49
|
-
return
|
|
49
|
+
var t = J();
|
|
50
|
+
return S((c) => (
|
|
51
|
+
// Created with the header, so it ends with it. A header that scrolls away leaves no fixed edge for a
|
|
52
|
+
// sheet to start under.
|
|
53
|
+
O(() => {
|
|
54
|
+
e.stickyHeader && R(F(c));
|
|
55
|
+
})
|
|
56
|
+
), t), l(t, h), t;
|
|
50
57
|
}
|
|
51
|
-
}), b),
|
|
58
|
+
}), b), l(b, o(n, {
|
|
52
59
|
get when() {
|
|
53
|
-
return
|
|
60
|
+
return _();
|
|
54
61
|
},
|
|
55
62
|
get children() {
|
|
56
|
-
var
|
|
57
|
-
return
|
|
63
|
+
var t = M();
|
|
64
|
+
return u(t, "id", f), l(t, o(n, {
|
|
58
65
|
get when() {
|
|
59
66
|
return e.collapsible;
|
|
60
67
|
},
|
|
61
68
|
get children() {
|
|
62
|
-
var
|
|
63
|
-
return
|
|
69
|
+
var c = K();
|
|
70
|
+
return l(c, o(n, {
|
|
64
71
|
get when() {
|
|
65
|
-
return
|
|
72
|
+
return v();
|
|
66
73
|
},
|
|
67
74
|
get fallback() {
|
|
68
75
|
return (() => {
|
|
69
|
-
var r =
|
|
70
|
-
return r.$$click = () =>
|
|
76
|
+
var r = U();
|
|
77
|
+
return r.$$click = () => A(!d()), u(r, "aria-controls", f), l(r, o(G, {
|
|
71
78
|
get name() {
|
|
72
79
|
return d() ? "chevron_right" : "chevron_left";
|
|
73
80
|
},
|
|
74
81
|
size: 20
|
|
75
|
-
})),
|
|
82
|
+
})), x((p) => {
|
|
76
83
|
var w = e.collapseToggleAriaLabel, $ = !d();
|
|
77
|
-
return w !==
|
|
84
|
+
return w !== p.e && u(r, "aria-label", p.e = w), $ !== p.t && u(r, "aria-expanded", p.t = $), p;
|
|
78
85
|
}, {
|
|
79
86
|
e: void 0,
|
|
80
87
|
t: void 0
|
|
@@ -82,25 +89,25 @@ function re(i) {
|
|
|
82
89
|
})();
|
|
83
90
|
},
|
|
84
91
|
get children() {
|
|
85
|
-
return
|
|
92
|
+
return v();
|
|
86
93
|
}
|
|
87
|
-
})),
|
|
94
|
+
})), c;
|
|
88
95
|
}
|
|
89
|
-
}), null), t
|
|
96
|
+
}), null), l(t, _, null), t;
|
|
90
97
|
}
|
|
91
|
-
}),
|
|
98
|
+
}), g), l(g, () => e.children, null), l(g, o(n, {
|
|
92
99
|
get when() {
|
|
93
|
-
return
|
|
100
|
+
return y();
|
|
94
101
|
},
|
|
95
102
|
get children() {
|
|
96
|
-
var
|
|
97
|
-
return t
|
|
103
|
+
var t = N();
|
|
104
|
+
return l(t, y), t;
|
|
98
105
|
}
|
|
99
106
|
}), null), a;
|
|
100
107
|
})();
|
|
101
108
|
}
|
|
102
109
|
I(["click"]);
|
|
103
110
|
export {
|
|
104
|
-
|
|
111
|
+
de as AppLayout
|
|
105
112
|
};
|
|
106
113
|
//# sourceMappingURL=appLayout.js.map
|