@budibase/bbui 3.39.19 → 3.39.21
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/dist/bbui.mjs +49 -47
- package/package.json +2 -2
- package/src/Avatar/Avatar.svelte +21 -12
- package/src/Drawer/Drawer.svelte +52 -27
- package/src/Drawer/DrawerContent.svelte +2 -2
package/dist/bbui.mjs
CHANGED
|
@@ -45707,7 +45707,7 @@ function StatusLight(l, u) {
|
|
|
45707
45707
|
var root_1$39 = /* @__PURE__ */ from_html("<img alt=\"Avatar\"/>"), root_2$25 = /* @__PURE__ */ from_html("<div> </div>");
|
|
45708
45708
|
function Avatar(l, u) {
|
|
45709
45709
|
push$1(u, !1);
|
|
45710
|
-
let f = /* @__PURE__ */
|
|
45710
|
+
let f = /* @__PURE__ */ new Map([
|
|
45711
45711
|
["XXS", "--spectrum-alias-avatar-size-50"],
|
|
45712
45712
|
["XS", "--spectrum-alias-avatar-size-75"],
|
|
45713
45713
|
["S", "--spectrum-alias-avatar-size-200"],
|
|
@@ -45715,35 +45715,37 @@ function Avatar(l, u) {
|
|
|
45715
45715
|
["L", "--spectrum-alias-avatar-size-500"],
|
|
45716
45716
|
["XL", "--spectrum-alias-avatar-size-600"],
|
|
45717
45717
|
["XXL", "--spectrum-alias-avatar-size-700"]
|
|
45718
|
-
]),
|
|
45719
|
-
let
|
|
45720
|
-
|
|
45718
|
+
]), p = prop(u, "size", 8, "M"), m = prop(u, "url", 8, ""), v = prop(u, "disabled", 8, !1), y = prop(u, "initials", 8, "JD"), b = prop(u, "color", 8, ""), x = "#3aab87", S = /* @__PURE__ */ mutable_source(), w = /* @__PURE__ */ mutable_source(), T = (l) => l?.length ? `hsl(${l[0].toLowerCase().charCodeAt(0) % 26 / 26 * 360}, 50%, 50%)` : "#3aab87", E = (l, u) => {
|
|
45719
|
+
let p = f.get(l);
|
|
45720
|
+
if (!p) return `background:${u};`;
|
|
45721
|
+
let m = `var(${p})`;
|
|
45722
|
+
return `width:${m}; height:${m}; font-size:${`calc(${m} / 2)`}; background:${u};`;
|
|
45721
45723
|
};
|
|
45722
|
-
legacy_pre_effect(() => (deep_read_state(
|
|
45723
|
-
set(
|
|
45724
|
-
}), legacy_pre_effect(() => (deep_read_state(
|
|
45725
|
-
set(
|
|
45724
|
+
legacy_pre_effect(() => (deep_read_state(b()), deep_read_state(y())), () => {
|
|
45725
|
+
set(S, b() || T(y()));
|
|
45726
|
+
}), legacy_pre_effect(() => (deep_read_state(p()), get$2(S)), () => {
|
|
45727
|
+
set(w, E(p(), get$2(S)));
|
|
45726
45728
|
}), legacy_pre_effect_reset(), init$1();
|
|
45727
45729
|
var D = comment(), O = first_child(D), k = (l) => {
|
|
45728
45730
|
var u = root_1$39();
|
|
45729
|
-
let
|
|
45730
|
-
template_effect((l,
|
|
45731
|
-
|
|
45731
|
+
let y;
|
|
45732
|
+
template_effect((l, f, p) => {
|
|
45733
|
+
y = set_class(u, 1, "spectrum-Avatar", null, y, l), set_attribute(u, "src", m()), set_style(u, `width: var(${f ?? ""}); height: var(${p ?? ""});`);
|
|
45732
45734
|
}, [
|
|
45733
|
-
() => ({ "is-disabled":
|
|
45734
|
-
() => (deep_read_state(
|
|
45735
|
-
() => (deep_read_state(
|
|
45735
|
+
() => ({ "is-disabled": v() }),
|
|
45736
|
+
() => (deep_read_state(p()), untrack(() => f.get(p()))),
|
|
45737
|
+
() => (deep_read_state(p()), untrack(() => f.get(p())))
|
|
45736
45738
|
]), append$1(l, u);
|
|
45737
45739
|
}, j = (l) => {
|
|
45738
45740
|
var u = root_2$25();
|
|
45739
45741
|
let f;
|
|
45740
|
-
var
|
|
45742
|
+
var p = child(u, !0);
|
|
45741
45743
|
reset(u), template_effect((l) => {
|
|
45742
|
-
f = set_class(u, 1, "spectrum-Avatar svelte-8hiuyi", null, f, l), set_style(u, get$2(
|
|
45743
|
-
}, [() => ({ "is-disabled":
|
|
45744
|
+
f = set_class(u, 1, "spectrum-Avatar svelte-8hiuyi", null, f, l), set_style(u, get$2(w)), set_text(p, y() || "");
|
|
45745
|
+
}, [() => ({ "is-disabled": v() })]), append$1(l, u);
|
|
45744
45746
|
};
|
|
45745
45747
|
if_block(O, (l) => {
|
|
45746
|
-
|
|
45748
|
+
m() ? l(k) : l(j, !1);
|
|
45747
45749
|
}), append$1(l, D), pop();
|
|
45748
45750
|
}
|
|
45749
45751
|
//#endregion
|
|
@@ -51373,9 +51375,9 @@ var require_random_from_seed = /* @__PURE__ */ __commonJSMin(((l, u) => {
|
|
|
51373
51375
|
}, isActiveOverlay = (l) => {
|
|
51374
51376
|
let u = [];
|
|
51375
51377
|
return overlayStack.subscribe((l) => u = l)(), u.length > 0 && u[u.length - 1] === l;
|
|
51376
|
-
}, drawerContainer = "drawer-container", openDrawers = writable([]), modal = writable(!1), resizable = writable(!0), drawerLeft = writable(null), drawerWidth = writable(null), observer, observe = () => {
|
|
51378
|
+
}, drawerContainer = "drawer-container", openDrawers = writable([]), modal = writable(!1), resizable = writable(!0), drawerLeft = writable(null), drawerWidth = writable(null), observer = null, observe = () => {
|
|
51377
51379
|
let l = document.getElementsByClassName(drawerContainer)[0];
|
|
51378
|
-
if (observer || !l) return;
|
|
51380
|
+
if (observer || !(l instanceof HTMLElement)) return;
|
|
51379
51381
|
observer = new ResizeObserver((l) => {
|
|
51380
51382
|
if (!l?.[0]) return;
|
|
51381
51383
|
let u = l[0].target.getBoundingClientRect();
|
|
@@ -51389,7 +51391,7 @@ var require_random_from_seed = /* @__PURE__ */ __commonJSMin(((l, u) => {
|
|
|
51389
51391
|
function Drawer(l, u) {
|
|
51390
51392
|
let f = sanitize_slots(u);
|
|
51391
51393
|
push$1(u, !1);
|
|
51392
|
-
let p = () => store_get(openDrawers, "$openDrawers", S), m = () => store_get(overlayStack, "$overlayStack", S), v = () => store_get(drawerLeft, "$drawerLeft", S), y = () => store_get(drawerWidth, "$drawerWidth", S), b = () => store_get(modal, "$modal", S), x = () => store_get(resizable, "$resizable", S), [S, w] = setup_stores(), T =
|
|
51394
|
+
let p = () => store_get(openDrawers, "$openDrawers", S), m = () => store_get(overlayStack, "$overlayStack", S), v = () => store_get(drawerLeft, "$drawerLeft", S), y = () => store_get(drawerWidth, "$drawerWidth", S), b = () => store_get(modal, "$modal", S), x = () => store_get(resizable, "$resizable", S), [S, w] = setup_stores(), T = prop(u, "title", 8, ""), E = prop(u, "forceModal", 8, !1), D = prop(u, "zIndex", 24, () => void 0), O = createEventDispatcher(), k = 11, j = /* @__PURE__ */ mutable_source(!1), M = (0, import_shortid.generate)(), N = /* @__PURE__ */ mutable_source(0), P = /* @__PURE__ */ mutable_source(-1), F = /* @__PURE__ */ mutable_source(BASE_Z_INDEX), L = /* @__PURE__ */ mutable_source(""), R = (l, u, f, p, m) => {
|
|
51393
51395
|
let v = `
|
|
51394
51396
|
--scale-factor: ${W(l)};
|
|
51395
51397
|
--spacing: 11px;
|
|
@@ -51402,10 +51404,10 @@ function Drawer(l, u) {
|
|
|
51402
51404
|
`;
|
|
51403
51405
|
};
|
|
51404
51406
|
function z() {
|
|
51405
|
-
get$2(
|
|
51407
|
+
get$2(j) || (E() && (modal.set(!0), resizable.set(!1)), observe(), set(j, !0), O("drawerShow", M), openDrawers.update((l) => [...l, M]), addOverlay(M));
|
|
51406
51408
|
}
|
|
51407
51409
|
function B() {
|
|
51408
|
-
get$2(
|
|
51410
|
+
get$2(j) && (set(j, !1), O("drawerHide", M), openDrawers.update((l) => l.filter((l) => l !== M)), removeOverlay(M), unobserve());
|
|
51409
51411
|
}
|
|
51410
51412
|
setContext("drawer", {
|
|
51411
51413
|
hide: B,
|
|
@@ -51413,7 +51415,7 @@ function Drawer(l, u) {
|
|
|
51413
51415
|
modal,
|
|
51414
51416
|
resizable
|
|
51415
51417
|
});
|
|
51416
|
-
let V = (l) => l < .5 ? 2 * l * l : 1 - (-2 * l + 2) ** 2 / 2, H = () => ({
|
|
51418
|
+
let V = (l) => l < .5 ? 2 * l * l : 1 - (-2 * l + 2) ** 2 / 2, H = (l) => ({
|
|
51417
51419
|
duration: 260,
|
|
51418
51420
|
css: (l) => {
|
|
51419
51421
|
let u = V(l);
|
|
@@ -51422,20 +51424,20 @@ function Drawer(l, u) {
|
|
|
51422
51424
|
opacity: ${u};
|
|
51423
51425
|
`;
|
|
51424
51426
|
}
|
|
51425
|
-
}), U = () => ({
|
|
51427
|
+
}), U = (l) => ({
|
|
51426
51428
|
duration: 260,
|
|
51427
51429
|
css: (l) => `opacity: ${V(l)};`
|
|
51428
51430
|
}), W = (l) => 1 - (1 - 1 / (l * l + 1)) * .1;
|
|
51429
51431
|
onDestroy(() => {
|
|
51430
|
-
get$2(
|
|
51432
|
+
get$2(j) && B();
|
|
51431
51433
|
}), legacy_pre_effect(() => p(), () => {
|
|
51432
|
-
set(
|
|
51434
|
+
set(N, p().length - p().indexOf(M) - 1);
|
|
51433
51435
|
}), legacy_pre_effect(() => m(), () => {
|
|
51434
|
-
set(
|
|
51435
|
-
}), legacy_pre_effect(() => (deep_read_state(
|
|
51436
|
-
set(
|
|
51437
|
-
}), legacy_pre_effect(() => (get$2(
|
|
51438
|
-
set(
|
|
51436
|
+
set(P, m().indexOf(M));
|
|
51437
|
+
}), legacy_pre_effect(() => (deep_read_state(D()), get$2(P), BASE_Z_INDEX), () => {
|
|
51438
|
+
set(F, D() ?? (get$2(P) === -1 ? 1001 : 1001 + get$2(P)));
|
|
51439
|
+
}), legacy_pre_effect(() => (get$2(N), v(), y(), b(), get$2(F)), () => {
|
|
51440
|
+
set(L, R(get$2(N), v(), y(), b(), get$2(F)));
|
|
51439
51441
|
}), legacy_pre_effect_reset();
|
|
51440
51442
|
var K = {
|
|
51441
51443
|
show: z,
|
|
@@ -51450,18 +51452,18 @@ function Drawer(l, u) {
|
|
|
51450
51452
|
let y;
|
|
51451
51453
|
var S = sibling(v, 2);
|
|
51452
51454
|
let w;
|
|
51453
|
-
var E = child(S),
|
|
51455
|
+
var E = child(S), D = child(E), O = (l) => {
|
|
51454
51456
|
var f = comment();
|
|
51455
51457
|
slot(first_child(f), u, "title", {}, null), append$1(l, f);
|
|
51456
|
-
},
|
|
51458
|
+
}, k = (l) => {
|
|
51457
51459
|
var u = root_4$6(), f = child(u, !0);
|
|
51458
|
-
reset(u), template_effect(() => set_text(f,
|
|
51460
|
+
reset(u), template_effect(() => set_text(f, T() || "Bindings")), append$1(l, u);
|
|
51459
51461
|
};
|
|
51460
|
-
if_block(
|
|
51461
|
-
untrack(() => f.title) ? l(
|
|
51462
|
+
if_block(D, (l) => {
|
|
51463
|
+
untrack(() => f.title) ? l(O) : l(k, !1);
|
|
51462
51464
|
});
|
|
51463
|
-
var
|
|
51464
|
-
Button(
|
|
51465
|
+
var j = sibling(D, 2), M = child(j);
|
|
51466
|
+
Button(M, {
|
|
51465
51467
|
secondary: !0,
|
|
51466
51468
|
quiet: !0,
|
|
51467
51469
|
$$events: { click: B },
|
|
@@ -51470,9 +51472,9 @@ function Drawer(l, u) {
|
|
|
51470
51472
|
},
|
|
51471
51473
|
$$slots: { default: !0 }
|
|
51472
51474
|
});
|
|
51473
|
-
var
|
|
51474
|
-
slot(
|
|
51475
|
-
var R = sibling(
|
|
51475
|
+
var P = sibling(M, 2);
|
|
51476
|
+
slot(P, u, "buttons", {}, null);
|
|
51477
|
+
var R = sibling(P, 2), z = (l) => {
|
|
51476
51478
|
ActionButton(l, {
|
|
51477
51479
|
size: "M",
|
|
51478
51480
|
quiet: !0,
|
|
@@ -51496,27 +51498,27 @@ function Drawer(l, u) {
|
|
|
51496
51498
|
};
|
|
51497
51499
|
if_block(R, (l) => {
|
|
51498
51500
|
x() && l(z);
|
|
51499
|
-
}), reset(
|
|
51501
|
+
}), reset(j), reset(E);
|
|
51500
51502
|
var V = sibling(E, 2);
|
|
51501
51503
|
slot(V, u, "body", {}, null);
|
|
51502
51504
|
var W = sibling(V, 2);
|
|
51503
51505
|
let K;
|
|
51504
51506
|
reset(S), reset(m), template_effect((l, u, f) => {
|
|
51505
|
-
y = set_class(v, 1, "underlay svelte-1vcgmkq", null, y, l), set_style(v, `z-index: ${get$2(
|
|
51507
|
+
y = set_class(v, 1, "underlay svelte-1vcgmkq", null, y, l), set_style(v, `z-index: ${get$2(F) - 1}`), w = set_class(S, 1, "drawer svelte-1vcgmkq", null, w, u), set_style(S, get$2(L)), K = set_class(W, 1, "overlay svelte-1vcgmkq", null, K, f);
|
|
51506
51508
|
}, [
|
|
51507
51509
|
() => ({ hidden: !b() }),
|
|
51508
51510
|
() => ({
|
|
51509
|
-
stacked: get$2(
|
|
51511
|
+
stacked: get$2(N) > 0,
|
|
51510
51512
|
modal: b()
|
|
51511
51513
|
}),
|
|
51512
|
-
() => ({ hidden: b() || get$2(
|
|
51514
|
+
() => ({ hidden: b() || get$2(N) === 0 })
|
|
51513
51515
|
]), transition(3, v, () => U), transition(3, S, () => H), append$1(l, m);
|
|
51514
51516
|
},
|
|
51515
51517
|
$$slots: { default: !0 }
|
|
51516
51518
|
});
|
|
51517
51519
|
};
|
|
51518
51520
|
if_block(J, (l) => {
|
|
51519
|
-
get$2(
|
|
51521
|
+
get$2(j) && l(Y);
|
|
51520
51522
|
}), append$1(l, q), bind_prop(u, "show", z), bind_prop(u, "hide", B);
|
|
51521
51523
|
var X = pop(K);
|
|
51522
51524
|
return w(), X;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/bbui",
|
|
3
3
|
"description": "A UI solution used in the different Budibase projects.",
|
|
4
|
-
"version": "3.39.
|
|
4
|
+
"version": "3.39.21",
|
|
5
5
|
"license": "MPL-2.0",
|
|
6
6
|
"module": "dist/bbui.mjs",
|
|
7
7
|
"exports": {
|
|
@@ -105,5 +105,5 @@
|
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
},
|
|
108
|
-
"gitHead": "
|
|
108
|
+
"gitHead": "8dfa68fadbb12b4b6f9ce8bc124d0ec40b6ccb71"
|
|
109
109
|
}
|
package/src/Avatar/Avatar.svelte
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
<script>
|
|
1
|
+
<script lang="ts">
|
|
2
2
|
import "@spectrum-css/avatar/dist/index-vars.css"
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
type AvatarSize = "XXS" | "XS" | "S" | "M" | "L" | "XL" | "XXL"
|
|
5
|
+
|
|
6
|
+
let sizes = new Map<AvatarSize, string>([
|
|
5
7
|
["XXS", "--spectrum-alias-avatar-size-50"],
|
|
6
8
|
["XS", "--spectrum-alias-avatar-size-75"],
|
|
7
9
|
["S", "--spectrum-alias-avatar-size-200"],
|
|
@@ -10,28 +12,35 @@
|
|
|
10
12
|
["XL", "--spectrum-alias-avatar-size-600"],
|
|
11
13
|
["XXL", "--spectrum-alias-avatar-size-700"],
|
|
12
14
|
])
|
|
13
|
-
export let size = "M"
|
|
14
|
-
export let url = ""
|
|
15
|
-
export let disabled = false
|
|
16
|
-
export let initials = "JD"
|
|
17
|
-
export let color = ""
|
|
15
|
+
export let size: AvatarSize = "M"
|
|
16
|
+
export let url: string = ""
|
|
17
|
+
export let disabled: boolean = false
|
|
18
|
+
export let initials: string = "JD"
|
|
19
|
+
export let color: string = ""
|
|
20
|
+
|
|
21
|
+
const defaultColor = "#3aab87"
|
|
18
22
|
|
|
19
|
-
|
|
23
|
+
let avatarColor: string
|
|
24
|
+
let style: string
|
|
20
25
|
|
|
21
26
|
$: avatarColor = color || getColor(initials)
|
|
22
27
|
$: style = getStyle(size, avatarColor)
|
|
23
28
|
|
|
24
|
-
const getColor = initials => {
|
|
29
|
+
const getColor = (initials: string): string => {
|
|
25
30
|
if (!initials?.length) {
|
|
26
|
-
return
|
|
31
|
+
return defaultColor
|
|
27
32
|
}
|
|
28
33
|
const code = initials[0].toLowerCase().charCodeAt(0)
|
|
29
34
|
const hue = ((code % 26) / 26) * 360
|
|
30
35
|
return `hsl(${hue}, 50%, 50%)`
|
|
31
36
|
}
|
|
32
37
|
|
|
33
|
-
const getStyle = (sizeKey, color) => {
|
|
34
|
-
const
|
|
38
|
+
const getStyle = (sizeKey: AvatarSize, color: string): string => {
|
|
39
|
+
const sizeValue = sizes.get(sizeKey)
|
|
40
|
+
if (!sizeValue) {
|
|
41
|
+
return `background:${color};`
|
|
42
|
+
}
|
|
43
|
+
const size = `var(${sizeValue})`
|
|
35
44
|
const fontSize = `calc(${size} / 2)`
|
|
36
45
|
return `width:${size}; height:${size}; font-size:${fontSize}; background:${color};`
|
|
37
46
|
}
|
package/src/Drawer/Drawer.svelte
CHANGED
|
@@ -1,25 +1,34 @@
|
|
|
1
|
-
<script context="module">
|
|
2
|
-
import { get, writable } from "svelte/store"
|
|
1
|
+
<script lang="ts" context="module">
|
|
2
|
+
import { get, writable, type Writable } from "svelte/store"
|
|
3
3
|
|
|
4
4
|
// Observe this class name if possible in order to know how to size the
|
|
5
5
|
// drawer. If this doesn't exist we'll use a fixed size.
|
|
6
6
|
const drawerContainer = "drawer-container"
|
|
7
7
|
|
|
8
8
|
// Context level stores to keep drawers in sync
|
|
9
|
-
const openDrawers = writable([])
|
|
10
|
-
const modal = writable(false)
|
|
11
|
-
const resizable = writable(true)
|
|
12
|
-
const drawerLeft = writable(null)
|
|
13
|
-
const drawerWidth = writable(null)
|
|
9
|
+
const openDrawers = writable<string[]>([])
|
|
10
|
+
const modal = writable<boolean>(false)
|
|
11
|
+
const resizable = writable<boolean>(true)
|
|
12
|
+
const drawerLeft = writable<number | null>(null)
|
|
13
|
+
const drawerWidth = writable<number | null>(null)
|
|
14
14
|
|
|
15
15
|
// Resize observer to keep track of size changes
|
|
16
|
-
let observer
|
|
16
|
+
let observer: ResizeObserver | null = null
|
|
17
|
+
|
|
18
|
+
interface DrawerContext {
|
|
19
|
+
hide: () => void
|
|
20
|
+
show: () => void
|
|
21
|
+
modal: Writable<boolean>
|
|
22
|
+
resizable: Writable<boolean>
|
|
23
|
+
}
|
|
17
24
|
|
|
18
25
|
// Starts observing the target node to watching to size changes.
|
|
19
26
|
// Invoked when the first drawer of a chain is rendered.
|
|
20
27
|
const observe = () => {
|
|
21
|
-
const target = document.getElementsByClassName(drawerContainer)[0]
|
|
22
|
-
|
|
28
|
+
const target = document.getElementsByClassName(drawerContainer)[0] as
|
|
29
|
+
| Element
|
|
30
|
+
| undefined
|
|
31
|
+
if (observer || !(target instanceof HTMLElement)) {
|
|
23
32
|
return
|
|
24
33
|
}
|
|
25
34
|
observer = new ResizeObserver(entries => {
|
|
@@ -56,9 +65,10 @@
|
|
|
56
65
|
}
|
|
57
66
|
</script>
|
|
58
67
|
|
|
59
|
-
<script>
|
|
68
|
+
<script lang="ts">
|
|
60
69
|
import { generate } from "shortid"
|
|
61
70
|
import { createEventDispatcher, onDestroy, setContext } from "svelte"
|
|
71
|
+
import type { TransitionConfig } from "svelte/transition"
|
|
62
72
|
import Portal from "svelte-portal"
|
|
63
73
|
import ActionButton from "../ActionButton/ActionButton.svelte"
|
|
64
74
|
import Button from "../Button/Button.svelte"
|
|
@@ -70,15 +80,24 @@
|
|
|
70
80
|
BASE_Z_INDEX,
|
|
71
81
|
} from "../Modal/overlayStack"
|
|
72
82
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
83
|
+
interface DrawerEvents {
|
|
84
|
+
drawerShow: string
|
|
85
|
+
drawerHide: string
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export let title: string = ""
|
|
89
|
+
export let forceModal: boolean = false
|
|
90
|
+
export let zIndex: number | undefined = undefined
|
|
76
91
|
|
|
77
|
-
const dispatch = createEventDispatcher()
|
|
92
|
+
const dispatch = createEventDispatcher<DrawerEvents>()
|
|
78
93
|
const spacing = 11
|
|
79
94
|
|
|
80
|
-
let visible = false
|
|
81
|
-
let drawerId = generate()
|
|
95
|
+
let visible: boolean = false
|
|
96
|
+
let drawerId: string = generate()
|
|
97
|
+
let depth: number = 0
|
|
98
|
+
let stackIndex: number = -1
|
|
99
|
+
let computedZIndex: number = BASE_Z_INDEX
|
|
100
|
+
let style: string = ""
|
|
82
101
|
|
|
83
102
|
$: depth = $openDrawers.length - $openDrawers.indexOf(drawerId) - 1
|
|
84
103
|
$: stackIndex = $overlayStack.indexOf(drawerId)
|
|
@@ -86,7 +105,13 @@
|
|
|
86
105
|
zIndex ?? (stackIndex === -1 ? BASE_Z_INDEX : BASE_Z_INDEX + stackIndex)
|
|
87
106
|
$: style = getStyle(depth, $drawerLeft, $drawerWidth, $modal, computedZIndex)
|
|
88
107
|
|
|
89
|
-
const getStyle = (
|
|
108
|
+
const getStyle = (
|
|
109
|
+
depth: number,
|
|
110
|
+
left: number | null,
|
|
111
|
+
width: number | null,
|
|
112
|
+
modal: boolean,
|
|
113
|
+
zIndex: number | undefined
|
|
114
|
+
): string => {
|
|
90
115
|
let style = `
|
|
91
116
|
--scale-factor: ${getScaleFactor(depth)};
|
|
92
117
|
--spacing: ${spacing}px;
|
|
@@ -105,7 +130,7 @@
|
|
|
105
130
|
`
|
|
106
131
|
}
|
|
107
132
|
|
|
108
|
-
export function show() {
|
|
133
|
+
export function show(): void {
|
|
109
134
|
if (visible) {
|
|
110
135
|
return
|
|
111
136
|
}
|
|
@@ -120,7 +145,7 @@
|
|
|
120
145
|
addOverlay(drawerId)
|
|
121
146
|
}
|
|
122
147
|
|
|
123
|
-
export function hide() {
|
|
148
|
+
export function hide(): void {
|
|
124
149
|
if (!visible) {
|
|
125
150
|
return
|
|
126
151
|
}
|
|
@@ -131,23 +156,23 @@
|
|
|
131
156
|
unobserve()
|
|
132
157
|
}
|
|
133
158
|
|
|
134
|
-
setContext("drawer", {
|
|
159
|
+
setContext<DrawerContext>("drawer", {
|
|
135
160
|
hide,
|
|
136
161
|
show,
|
|
137
162
|
modal,
|
|
138
163
|
resizable,
|
|
139
164
|
})
|
|
140
165
|
|
|
141
|
-
const easeInOutQuad = x => {
|
|
166
|
+
const easeInOutQuad = (x: number): number => {
|
|
142
167
|
return x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2
|
|
143
168
|
}
|
|
144
169
|
|
|
145
170
|
// Use a custom svelte transition here because the built-in slide
|
|
146
171
|
// transition has a horrible overshoot
|
|
147
|
-
const drawerSlide = () => {
|
|
172
|
+
const drawerSlide = (_node: Element): TransitionConfig => {
|
|
148
173
|
return {
|
|
149
174
|
duration: 260,
|
|
150
|
-
css: t => {
|
|
175
|
+
css: (t: number) => {
|
|
151
176
|
const f = easeInOutQuad(t)
|
|
152
177
|
const yOffset = (1 - f) * 200
|
|
153
178
|
return `
|
|
@@ -160,16 +185,16 @@
|
|
|
160
185
|
|
|
161
186
|
// Custom fade transition because the default svelte one doesn't work any more
|
|
162
187
|
// with svelte 4
|
|
163
|
-
const drawerFade = () => {
|
|
188
|
+
const drawerFade = (_node: Element): TransitionConfig => {
|
|
164
189
|
return {
|
|
165
190
|
duration: 260,
|
|
166
|
-
css: t => {
|
|
191
|
+
css: (t: number) => {
|
|
167
192
|
return `opacity: ${easeInOutQuad(t)};`
|
|
168
193
|
},
|
|
169
194
|
}
|
|
170
195
|
}
|
|
171
196
|
|
|
172
|
-
const getScaleFactor = depth => {
|
|
197
|
+
const getScaleFactor = (depth: number): number => {
|
|
173
198
|
// Quadratic function approaching a limit of 1 as depth tends to infinity
|
|
174
199
|
const lim = 1 - 1 / (depth * depth + 1)
|
|
175
200
|
// Scale drawers between 1 and 0.9 as depth approaches infinity
|