@axel669/zephyr 0.5.4 → 1.0.0-beta.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/package.json +48 -42
- package/readme.md +0 -44
- package/src/changed.svelte.js +23 -0
- package/src/component/adorn.svelte +9 -0
- package/src/component/alert.svelte +32 -0
- package/src/component/application.svelte +17 -0
- package/src/component/async-button.svelte +53 -0
- package/src/component/avatar.svelte +15 -0
- package/src/component/badge.svelte +7 -0
- package/src/component/button.svelte +7 -0
- package/src/component/chip.svelte +10 -0
- package/src/component/circle-spinner.svelte +6 -0
- package/src/component/confirm.svelte +40 -0
- package/src/component/control-label.svelte +41 -0
- package/src/component/data-table.svelte +227 -0
- package/src/component/details.svelte +22 -0
- package/src/component/dialog-element.svelte +35 -0
- package/src/component/dialog.svelte +43 -0
- package/src/component/drawer.svelte +20 -0
- package/src/component/flex.svelte +7 -0
- package/src/component/grid.svelte +7 -0
- package/src/component/hexagon-spinner.svelte +6 -0
- package/src/component/icon.svelte +7 -0
- package/src/component/link.svelte +11 -0
- package/src/component/modal.svelte +32 -0
- package/src/component/paper.svelte +33 -0
- package/src/component/popover.svelte +19 -0
- package/src/component/progress.svelte +6 -0
- package/src/component/prompt.svelte +58 -0
- package/src/{routing → component}/routing.svelte.js +5 -13
- package/src/component/screen.svelte +30 -0
- package/src/component/select.svelte +40 -0
- package/src/{async → component}/suspend.svelte +14 -8
- package/src/component/table.svelte +49 -0
- package/src/component/tabs.svelte +2 -0
- package/src/component/text.svelte +26 -0
- package/src/component/titlebar.svelte +23 -0
- package/src/component/toast.svelte +7 -0
- package/src/component/toaster.svelte +60 -0
- package/src/component/toggle-label.svelte +11 -0
- package/src/component/tooltip.svelte +11 -0
- package/src/custom-macros.js +11 -9
- package/src/{hash.svelte.js → hash.js} +0 -9
- package/src/index.js +3 -2
- package/src/internals.js +12 -0
- package/src/main.js +47 -0
- package/src/ws.js +10 -0
- package/src/async/button.svelte +0 -41
- package/src/changed.js +0 -10
- package/src/composed/data-table/th.svelte +0 -61
- package/src/composed/data-table.svelte +0 -174
- package/src/composed/entry-button.svelte +0 -28
- package/src/composed/form.svelte +0 -60
- package/src/composed/table-functions.js +0 -15
- package/src/control/button.svelte +0 -39
- package/src/control/input.svelte +0 -103
- package/src/control/label.svelte +0 -49
- package/src/control/link.svelte +0 -47
- package/src/control/radio-group.svelte +0 -24
- package/src/control/select.svelte +0 -69
- package/src/control/tabs.svelte +0 -35
- package/src/control/toggle.svelte +0 -60
- package/src/data-display/avatar.svelte +0 -29
- package/src/data-display/badge.svelte +0 -16
- package/src/data-display/chip.svelte +0 -38
- package/src/data-display/details.svelte +0 -33
- package/src/data-display/popover.svelte +0 -28
- package/src/data-display/progress.svelte +0 -25
- package/src/data-display/table.svelte +0 -50
- package/src/data-display/tooltip.svelte +0 -19
- package/src/dialogs/alert.svelte +0 -40
- package/src/dialogs/confirm.svelte +0 -51
- package/src/info/element-toaster.svelte +0 -110
- package/src/info/icon.svelte +0 -9
- package/src/info/titlebar.svelte +0 -40
- package/src/info/toast.svelte +0 -35
- package/src/info/toaster/message.svelte +0 -42
- package/src/info/toaster.svelte +0 -72
- package/src/layout/dialog.svelte +0 -24
- package/src/layout/drawer.svelte +0 -76
- package/src/layout/flex.svelte +0 -24
- package/src/layout/grid.svelte +0 -32
- package/src/layout/modal.svelte +0 -68
- package/src/layout/paper.svelte +0 -54
- package/src/layout/screen.svelte +0 -38
- package/src/spinner/circle-spinner.svelte +0 -18
- package/src/spinner/hexagon-spinner.svelte +0 -18
- package/src/text.svelte +0 -16
- package/src/wsx.js +0 -29
- /package/src/{routing → component}/route.svelte +0 -0
- /package/src/{routing → component}/title.svelte +0 -0
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
const genID = () => `${Date.now()}:${Math.random().toString(16)}`
|
|
3
|
-
|
|
4
|
-
const delays = {}
|
|
5
|
-
const delay = ({time, action, id}) => {
|
|
6
|
-
const trigger = () => {
|
|
7
|
-
const info = delays[id]
|
|
8
|
-
clearTimeout(info.id)
|
|
9
|
-
action()
|
|
10
|
-
delete delays[id]
|
|
11
|
-
}
|
|
12
|
-
const timeoutID = setTimeout(trigger, time)
|
|
13
|
-
delays[id] = { trigger, id: timeoutID }
|
|
14
|
-
}
|
|
15
|
-
delay.trigger = (id) => delays[id].trigger()
|
|
16
|
-
|
|
17
|
-
const macros = {
|
|
18
|
-
top: {
|
|
19
|
-
x: "50%",
|
|
20
|
-
tf: "translateX(-50%)",
|
|
21
|
-
"-y": "100%",
|
|
22
|
-
flex: "column-reverse",
|
|
23
|
-
},
|
|
24
|
-
bottom: {
|
|
25
|
-
x: "50%",
|
|
26
|
-
tf: "translateX(-50%)",
|
|
27
|
-
"y": "100%",
|
|
28
|
-
flex: "column"
|
|
29
|
-
},
|
|
30
|
-
left: {
|
|
31
|
-
y: "50%",
|
|
32
|
-
tf: "translateY(-50%)",
|
|
33
|
-
"-x": "100%",
|
|
34
|
-
flex: "row-reverse"
|
|
35
|
-
},
|
|
36
|
-
right: {
|
|
37
|
-
y: "50%",
|
|
38
|
-
tf: "translateY(-50%)",
|
|
39
|
-
"x": "100%",
|
|
40
|
-
flex: "row"
|
|
41
|
-
},
|
|
42
|
-
}
|
|
43
|
-
</script>
|
|
44
|
-
|
|
45
|
-
<script>
|
|
46
|
-
import { fade } from "svelte/transition"
|
|
47
|
-
|
|
48
|
-
import { eventHandler$ } from "../handler$.js"
|
|
49
|
-
import wsx from "../wsx.js"
|
|
50
|
-
|
|
51
|
-
import ToastMessage from "./toaster/message.svelte"
|
|
52
|
-
|
|
53
|
-
const {
|
|
54
|
-
component = ToastMessage,
|
|
55
|
-
position = "top",
|
|
56
|
-
content,
|
|
57
|
-
onaction,
|
|
58
|
-
...rest
|
|
59
|
-
} = $props()
|
|
60
|
-
|
|
61
|
-
let items = $state([])
|
|
62
|
-
|
|
63
|
-
const act = eventHandler$(
|
|
64
|
-
(evt, id, props) => {
|
|
65
|
-
delay.trigger(id)
|
|
66
|
-
evt.props = props
|
|
67
|
-
onaction?.(evt)
|
|
68
|
-
// dispatch(
|
|
69
|
-
// "action",
|
|
70
|
-
// { value: evt.detail, props }
|
|
71
|
-
// )
|
|
72
|
-
}
|
|
73
|
-
)
|
|
74
|
-
|
|
75
|
-
export const show = (duration, props) => {
|
|
76
|
-
const id = genID()
|
|
77
|
-
items = [...items, { id, props }]
|
|
78
|
-
delay({
|
|
79
|
-
action: () => items = items.filter(
|
|
80
|
-
item => item.id !== id
|
|
81
|
-
),
|
|
82
|
-
time: duration,
|
|
83
|
-
id,
|
|
84
|
-
})
|
|
85
|
-
}
|
|
86
|
-
export const clear = () => items = []
|
|
87
|
-
|
|
88
|
-
const wind = $derived({
|
|
89
|
-
gap: "8px",
|
|
90
|
-
pos: "absolute",
|
|
91
|
-
z: "50",
|
|
92
|
-
...macros[position],
|
|
93
|
-
...rest,
|
|
94
|
-
})
|
|
95
|
-
const Message = $derived(component)
|
|
96
|
-
</script>
|
|
97
|
-
|
|
98
|
-
<zephyr-element-toaster ws-x="[disp inline-grid] [pos relative]">
|
|
99
|
-
{@render content?.(show)}
|
|
100
|
-
<zephyr-element-toast-messages use:wsx={wind}>
|
|
101
|
-
{#each items as {props, id} (id)}
|
|
102
|
-
<zephyr-toast-wrapper ws-x="[grid]" transition:fade={{duration: 200}}>
|
|
103
|
-
<Message
|
|
104
|
-
{...props}
|
|
105
|
-
onaction={act(id, props)}
|
|
106
|
-
/>
|
|
107
|
-
</zephyr-toast-wrapper>
|
|
108
|
-
{/each}
|
|
109
|
-
</zephyr-element-toast-messages>
|
|
110
|
-
</zephyr-element-toaster>
|
package/src/info/icon.svelte
DELETED
package/src/info/titlebar.svelte
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import wsx from "../wsx.js"
|
|
3
|
-
|
|
4
|
-
const {
|
|
5
|
-
color,
|
|
6
|
-
fill = false,
|
|
7
|
-
title,
|
|
8
|
-
menu,
|
|
9
|
-
action,
|
|
10
|
-
...rest
|
|
11
|
-
} = $props()
|
|
12
|
-
|
|
13
|
-
const titleProps = $derived({
|
|
14
|
-
"$color": color,
|
|
15
|
-
"$fill": fill,
|
|
16
|
-
$title: true,
|
|
17
|
-
})
|
|
18
|
-
const wind = $derived({
|
|
19
|
-
...rest,
|
|
20
|
-
})
|
|
21
|
-
</script>
|
|
22
|
-
|
|
23
|
-
<ws-titlebar use:wsx={wind}>
|
|
24
|
-
{#if title}
|
|
25
|
-
<div use:wsx={titleProps}>
|
|
26
|
-
{@render title()}
|
|
27
|
-
</div>
|
|
28
|
-
{/if}
|
|
29
|
-
|
|
30
|
-
{#if menu}
|
|
31
|
-
<div ws-x="[$menu] [grid] [p 0px]">
|
|
32
|
-
{@render menu()}
|
|
33
|
-
</div>
|
|
34
|
-
{/if}
|
|
35
|
-
{#if action}
|
|
36
|
-
<div ws-x="[$action] [grid] [p 0px]">
|
|
37
|
-
{@render action()}
|
|
38
|
-
</div>
|
|
39
|
-
{/if}
|
|
40
|
-
</ws-titlebar>
|
package/src/info/toast.svelte
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import wsx from "../wsx.js"
|
|
3
|
-
|
|
4
|
-
const {
|
|
5
|
-
color,
|
|
6
|
-
children,
|
|
7
|
-
start,
|
|
8
|
-
end,
|
|
9
|
-
onclick,
|
|
10
|
-
...rest
|
|
11
|
-
} = $props()
|
|
12
|
-
|
|
13
|
-
const wind = $derived({
|
|
14
|
-
"$color": color,
|
|
15
|
-
...rest,
|
|
16
|
-
})
|
|
17
|
-
</script>
|
|
18
|
-
|
|
19
|
-
<!-- svelte-ignore a11y_interactive_supports_focus -->
|
|
20
|
-
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
21
|
-
<ws-toast use:wsx={wind} {onclick} role="button">
|
|
22
|
-
{#if start}
|
|
23
|
-
<div ws-x="[$start] [grid]">
|
|
24
|
-
{@render start()}
|
|
25
|
-
</div>
|
|
26
|
-
{/if}
|
|
27
|
-
<div ws-x="[$notif-text]">
|
|
28
|
-
{@render children?.()}
|
|
29
|
-
</div>
|
|
30
|
-
{#if end}
|
|
31
|
-
<div ws-x="[$end] [grid]">
|
|
32
|
-
{@render end()}
|
|
33
|
-
</div>
|
|
34
|
-
{/if}
|
|
35
|
-
</ws-toast>
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import Button from "../../control/button.svelte"
|
|
3
|
-
import Icon from "../icon.svelte"
|
|
4
|
-
import Toast from "../toast.svelte"
|
|
5
|
-
import Text from "../../text.svelte"
|
|
6
|
-
|
|
7
|
-
const {
|
|
8
|
-
message = "",
|
|
9
|
-
icon = false,
|
|
10
|
-
color = false,
|
|
11
|
-
actionText = null,
|
|
12
|
-
onaction,
|
|
13
|
-
} = $props()
|
|
14
|
-
|
|
15
|
-
const dismiss = () => onaction({ value: null })
|
|
16
|
-
const respond = (evt) => {
|
|
17
|
-
evt.stopPropagation()
|
|
18
|
-
onaction({ value: true })
|
|
19
|
-
}
|
|
20
|
-
</script>
|
|
21
|
-
|
|
22
|
-
<Toast {color} onclick={dismiss}>
|
|
23
|
-
{#snippet start()}
|
|
24
|
-
<Text adorn>
|
|
25
|
-
{#if icon !== false}
|
|
26
|
-
<Icon name={icon} />
|
|
27
|
-
{/if}
|
|
28
|
-
</Text>
|
|
29
|
-
{/snippet}
|
|
30
|
-
|
|
31
|
-
<span>{message}</span>
|
|
32
|
-
|
|
33
|
-
{#snippet end()}
|
|
34
|
-
<div ws-x="[grid]">
|
|
35
|
-
{#if actionText}
|
|
36
|
-
<Button onclick={respond} r.l="0px" ground>
|
|
37
|
-
{actionText}
|
|
38
|
-
</Button>
|
|
39
|
-
{/if}
|
|
40
|
-
</div>
|
|
41
|
-
{/snippet}
|
|
42
|
-
</Toast>
|
package/src/info/toaster.svelte
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
const genID = () => `${Date.now()}:${Math.random().toString(16)}`
|
|
3
|
-
|
|
4
|
-
const delays = {}
|
|
5
|
-
const delay = ({time, action, id}) => {
|
|
6
|
-
const trigger = () => {
|
|
7
|
-
const info = delays[id]
|
|
8
|
-
clearTimeout(info.id)
|
|
9
|
-
action()
|
|
10
|
-
delete delays[id]
|
|
11
|
-
}
|
|
12
|
-
const timeoutID = setTimeout(trigger, time)
|
|
13
|
-
delays[id] = { trigger, id: timeoutID }
|
|
14
|
-
}
|
|
15
|
-
delay.trigger = (id) => delays[id].trigger()
|
|
16
|
-
</script>
|
|
17
|
-
|
|
18
|
-
<script>
|
|
19
|
-
import { fade } from "svelte/transition"
|
|
20
|
-
|
|
21
|
-
import { eventHandler$ } from "../handler$.js"
|
|
22
|
-
import wsx from "../wsx.js"
|
|
23
|
-
|
|
24
|
-
import ToastMessage from "./toaster/message.svelte"
|
|
25
|
-
|
|
26
|
-
const {
|
|
27
|
-
message = ToastMessage,
|
|
28
|
-
position = "tc",
|
|
29
|
-
onaction,
|
|
30
|
-
...rest
|
|
31
|
-
} = $props()
|
|
32
|
-
|
|
33
|
-
let items = $state([])
|
|
34
|
-
|
|
35
|
-
const act = eventHandler$(
|
|
36
|
-
(evt, id, props) => {
|
|
37
|
-
delay.trigger(id)
|
|
38
|
-
evt.props = props
|
|
39
|
-
onaction?.(evt)
|
|
40
|
-
}
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
export const show = (duration, props) => {
|
|
44
|
-
const id = genID()
|
|
45
|
-
items = [...items, { id, props }]
|
|
46
|
-
delay({
|
|
47
|
-
action: () => items = items.filter(
|
|
48
|
-
item => item.id !== id
|
|
49
|
-
),
|
|
50
|
-
time: duration,
|
|
51
|
-
id,
|
|
52
|
-
})
|
|
53
|
-
}
|
|
54
|
-
export const clear = () => items = []
|
|
55
|
-
|
|
56
|
-
const wind = $derived({
|
|
57
|
-
[`$${position}`]: true,
|
|
58
|
-
...rest,
|
|
59
|
-
})
|
|
60
|
-
const Message = $derived(message)
|
|
61
|
-
</script>
|
|
62
|
-
|
|
63
|
-
<ws-toaster use:wsx={wind}>
|
|
64
|
-
{#each items as {props, id} (id)}
|
|
65
|
-
<zephyr-toast-wrapper ws-x="[grid]" transition:fade={{duration: 200}}>
|
|
66
|
-
<Message
|
|
67
|
-
{...props}
|
|
68
|
-
onaction={act(id, {...props})}
|
|
69
|
-
/>
|
|
70
|
-
</zephyr-toast-wrapper>
|
|
71
|
-
{/each}
|
|
72
|
-
</ws-toaster>
|
package/src/layout/dialog.svelte
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { fade } from "svelte/transition"
|
|
3
|
-
|
|
4
|
-
import wsx from "../wsx.js"
|
|
5
|
-
|
|
6
|
-
import Paper from "./paper.svelte"
|
|
7
|
-
|
|
8
|
-
const props = $props()
|
|
9
|
-
|
|
10
|
-
const trick = (node, options) => ({
|
|
11
|
-
delay: 0,
|
|
12
|
-
duration: 250,
|
|
13
|
-
css: () => "",
|
|
14
|
-
})
|
|
15
|
-
const onclick = (evt) => {
|
|
16
|
-
evt.stopPropagation()
|
|
17
|
-
}
|
|
18
|
-
</script>
|
|
19
|
-
|
|
20
|
-
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
21
|
-
<!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
|
|
22
|
-
<wind-wrapper transition:trick ws-x="@@dialog [grid]" {onclick} role="dialog">
|
|
23
|
-
<Paper {...props} />
|
|
24
|
-
</wind-wrapper>
|
package/src/layout/drawer.svelte
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
const defs = {
|
|
3
|
-
select: {
|
|
4
|
-
"@@select": true,
|
|
5
|
-
"w.min": "35vw",
|
|
6
|
-
grid: true,
|
|
7
|
-
over: "hidden"
|
|
8
|
-
},
|
|
9
|
-
menu: {
|
|
10
|
-
"@@menu": true,
|
|
11
|
-
},
|
|
12
|
-
action: {
|
|
13
|
-
"@@action": true,
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
const parseTime = (timestring) => {
|
|
17
|
-
if (!timestring) {
|
|
18
|
-
return 200
|
|
19
|
-
}
|
|
20
|
-
const { base, scale } =
|
|
21
|
-
timestring.match(/(?<base>\d+)(?<scale>s|ms)/)?.groups ?? {}
|
|
22
|
-
if (base === undefined) {
|
|
23
|
-
return 200
|
|
24
|
-
}
|
|
25
|
-
const numeric = parseInt(base)
|
|
26
|
-
if (scale === "ms") {
|
|
27
|
-
return numeric
|
|
28
|
-
}
|
|
29
|
-
return numeric * 1000
|
|
30
|
-
}
|
|
31
|
-
</script>
|
|
32
|
-
|
|
33
|
-
<script>
|
|
34
|
-
import { getContext } from "svelte"
|
|
35
|
-
|
|
36
|
-
import wsx from "../wsx.js"
|
|
37
|
-
|
|
38
|
-
import Paper from "./paper.svelte"
|
|
39
|
-
import { modalContext } from "./modal.svelte"
|
|
40
|
-
|
|
41
|
-
const {
|
|
42
|
-
height,
|
|
43
|
-
type = "menu",
|
|
44
|
-
children,
|
|
45
|
-
header,
|
|
46
|
-
footer,
|
|
47
|
-
content,
|
|
48
|
-
...rest
|
|
49
|
-
} = $props()
|
|
50
|
-
|
|
51
|
-
const animTime = getContext(modalContext)
|
|
52
|
-
|
|
53
|
-
// When Svelte removes things from the DOM they are removed immediately
|
|
54
|
-
// unless Svelte has a transition running. Adding this prevents the drawer
|
|
55
|
-
// from disappearing without first letting the built in animations run.
|
|
56
|
-
const trick = (node, options) => ({
|
|
57
|
-
delay: 0,
|
|
58
|
-
duration: parseTime($animTime),
|
|
59
|
-
css: () => "",
|
|
60
|
-
})
|
|
61
|
-
|
|
62
|
-
const container = $derived({
|
|
63
|
-
...defs[type],
|
|
64
|
-
$show: true,
|
|
65
|
-
h: (type === "select") ? height : "100%",
|
|
66
|
-
grid: true,
|
|
67
|
-
})
|
|
68
|
-
const onclick = (evt) => evt.stopPropagation()
|
|
69
|
-
</script>
|
|
70
|
-
|
|
71
|
-
<!-- svelte-ignore a11y_interactive_supports_focus -->
|
|
72
|
-
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
73
|
-
<wind-drawer-container use:wsx={container} {onclick} role="menubar"
|
|
74
|
-
transition:trick>
|
|
75
|
-
<Paper r="0px" {...rest} {header} {footer} {content} {children} />
|
|
76
|
-
</wind-drawer-container>
|
package/src/layout/flex.svelte
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import wsx from "../wsx.js"
|
|
3
|
-
|
|
4
|
-
const {
|
|
5
|
-
direction = false,
|
|
6
|
-
cross = "stretch",
|
|
7
|
-
main = "start",
|
|
8
|
-
scrollable = false,
|
|
9
|
-
children,
|
|
10
|
-
...rest
|
|
11
|
-
} = $props()
|
|
12
|
-
|
|
13
|
-
const wind = $derived({
|
|
14
|
-
"fl.dir": direction,
|
|
15
|
-
"fl.cross": cross,
|
|
16
|
-
"fl.main": main,
|
|
17
|
-
over: (scrollable === true) ? "auto" : null,
|
|
18
|
-
...rest
|
|
19
|
-
})
|
|
20
|
-
</script>
|
|
21
|
-
|
|
22
|
-
<ws-flex use:wsx={wind}>
|
|
23
|
-
{@render children?.()}
|
|
24
|
-
</ws-flex>
|
package/src/layout/grid.svelte
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import wsx from "../wsx.js"
|
|
3
|
-
|
|
4
|
-
const {
|
|
5
|
-
direction = false,
|
|
6
|
-
cols = null,
|
|
7
|
-
rows = null,
|
|
8
|
-
autoCol = false,
|
|
9
|
-
autoRow = false,
|
|
10
|
-
colsFit = false,
|
|
11
|
-
colsFill = false,
|
|
12
|
-
scrollable = false,
|
|
13
|
-
children,
|
|
14
|
-
...rest
|
|
15
|
-
} = $props()
|
|
16
|
-
|
|
17
|
-
const wind = $derived({
|
|
18
|
-
"gr.flow": direction,
|
|
19
|
-
"gr.cols": cols?.join?.(" ") ?? cols ?? false,
|
|
20
|
-
"gr.rows": rows?.join?.(" ") ?? rows ?? false,
|
|
21
|
-
"gr.cols.a": autoCol,
|
|
22
|
-
"gr.rows.a": autoRow,
|
|
23
|
-
"gr.cols-fit": colsFit,
|
|
24
|
-
"gr.cols-fill": colsFill,
|
|
25
|
-
over: (scrollable === true) ? "auto" : null,
|
|
26
|
-
...rest
|
|
27
|
-
})
|
|
28
|
-
</script>
|
|
29
|
-
|
|
30
|
-
<ws-grid use:wsx={wind}>
|
|
31
|
-
{@render children?.()}
|
|
32
|
-
</ws-grid>
|
package/src/layout/modal.svelte
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
let topClose = null
|
|
3
|
-
export const modalContext = Symbol("modal context")
|
|
4
|
-
</script>
|
|
5
|
-
|
|
6
|
-
<script>
|
|
7
|
-
import { tick, setContext } from "svelte"
|
|
8
|
-
import { writable } from "svelte/store"
|
|
9
|
-
|
|
10
|
-
import wsx from "../wsx.js"
|
|
11
|
-
|
|
12
|
-
const {
|
|
13
|
-
component,
|
|
14
|
-
animTime = "200ms"
|
|
15
|
-
} = $props()
|
|
16
|
-
|
|
17
|
-
let modalProps = $state(null)
|
|
18
|
-
let resolver = $state(null)
|
|
19
|
-
let displayed = $state(null)
|
|
20
|
-
|
|
21
|
-
const close = (value) => {
|
|
22
|
-
resolver(value)
|
|
23
|
-
resolver = null
|
|
24
|
-
modalProps = null
|
|
25
|
-
Component = null
|
|
26
|
-
if (topClose !== close) {
|
|
27
|
-
return
|
|
28
|
-
}
|
|
29
|
-
topClose = null
|
|
30
|
-
}
|
|
31
|
-
const closeToTop = (value) => {
|
|
32
|
-
topClose(value)
|
|
33
|
-
}
|
|
34
|
-
const cancel = () => displayed.cancel?.()
|
|
35
|
-
|
|
36
|
-
export const show = (props) => new Promise(
|
|
37
|
-
async (resolve) => {
|
|
38
|
-
modalProps = props ?? {}
|
|
39
|
-
topClose = topClose ?? close
|
|
40
|
-
Component = component
|
|
41
|
-
await tick()
|
|
42
|
-
setTimeout(
|
|
43
|
-
() => resolver = resolve,
|
|
44
|
-
0
|
|
45
|
-
)
|
|
46
|
-
}
|
|
47
|
-
)
|
|
48
|
-
|
|
49
|
-
const animationTime = writable(animTime)
|
|
50
|
-
const wind = $derived({
|
|
51
|
-
"@anim-time": $animationTime,
|
|
52
|
-
$show: resolver !== null,
|
|
53
|
-
})
|
|
54
|
-
let Component = $state(null)
|
|
55
|
-
setContext(modalContext, animationTime)
|
|
56
|
-
</script>
|
|
57
|
-
|
|
58
|
-
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
59
|
-
<!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
|
|
60
|
-
<ws-modal onclick={cancel} role="dialog" use:wsx={wind}>
|
|
61
|
-
<Component
|
|
62
|
-
bind:this={displayed}
|
|
63
|
-
this={component}
|
|
64
|
-
{...modalProps}
|
|
65
|
-
{close}
|
|
66
|
-
{closeToTop}
|
|
67
|
-
/>
|
|
68
|
-
</ws-modal>
|
package/src/layout/paper.svelte
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import Flex from "./flex.svelte"
|
|
3
|
-
import wsx from "../wsx.js"
|
|
4
|
-
import { splitProps } from "../props.js"
|
|
5
|
-
|
|
6
|
-
const {
|
|
7
|
-
color,
|
|
8
|
-
card = false,
|
|
9
|
-
square = false,
|
|
10
|
-
layout = Flex,
|
|
11
|
-
scrollable = true,
|
|
12
|
-
children,
|
|
13
|
-
content,
|
|
14
|
-
header,
|
|
15
|
-
footer,
|
|
16
|
-
...rest
|
|
17
|
-
} = $props()
|
|
18
|
-
|
|
19
|
-
const props = $derived(
|
|
20
|
-
splitProps(rest, "l!")
|
|
21
|
-
)
|
|
22
|
-
|
|
23
|
-
const layoutProps = $derived({
|
|
24
|
-
over: scrollable ? "auto" : false,
|
|
25
|
-
$content: true,
|
|
26
|
-
...props["l!"],
|
|
27
|
-
})
|
|
28
|
-
const wind = $derived({
|
|
29
|
-
"$color": color,
|
|
30
|
-
"$outline": card,
|
|
31
|
-
r: square && "0px",
|
|
32
|
-
...props.rest,
|
|
33
|
-
})
|
|
34
|
-
</script>
|
|
35
|
-
|
|
36
|
-
<ws-paper use:wsx={wind}>
|
|
37
|
-
{#if header}
|
|
38
|
-
<div ws-x="[$header] [grid] [p 0px]">
|
|
39
|
-
{@render header()}
|
|
40
|
-
</div>
|
|
41
|
-
{/if}
|
|
42
|
-
{#if content}
|
|
43
|
-
{@render content()}
|
|
44
|
-
{:else}
|
|
45
|
-
<Flex {...layoutProps}>
|
|
46
|
-
{@render children?.()}
|
|
47
|
-
</Flex>
|
|
48
|
-
{/if}
|
|
49
|
-
{#if footer}
|
|
50
|
-
<div ws-x="[$footer] [grid] [p 0px]">
|
|
51
|
-
{@render footer()}
|
|
52
|
-
</div>
|
|
53
|
-
{/if}
|
|
54
|
-
</ws-paper>
|
package/src/layout/screen.svelte
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
const ctxStack = Symbol("stack context")
|
|
3
|
-
const ctxClose = Symbol("close context")
|
|
4
|
-
</script>
|
|
5
|
-
|
|
6
|
-
<script>
|
|
7
|
-
import { getContext, setContext } from "svelte"
|
|
8
|
-
import { fly } from "svelte/transition"
|
|
9
|
-
|
|
10
|
-
import wsx from "../wsx.js"
|
|
11
|
-
|
|
12
|
-
const {
|
|
13
|
-
alignLeft = false,
|
|
14
|
-
width = false,
|
|
15
|
-
children,
|
|
16
|
-
...rest
|
|
17
|
-
} = $props()
|
|
18
|
-
|
|
19
|
-
const stack = getContext(ctxStack) ?? 0
|
|
20
|
-
const animation = {
|
|
21
|
-
y: window.innerHeight,
|
|
22
|
-
duration: 350
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
setContext(ctxStack, stack + 1)
|
|
26
|
-
|
|
27
|
-
const wind = $derived({
|
|
28
|
-
"@stack": stack.toString(),
|
|
29
|
-
"@screen-width": width,
|
|
30
|
-
"bg.c": "transparent",
|
|
31
|
-
$left: alignLeft,
|
|
32
|
-
...rest
|
|
33
|
-
})
|
|
34
|
-
</script>
|
|
35
|
-
|
|
36
|
-
<ws-screen use:wsx={wind} transition:fly={animation}>
|
|
37
|
-
{@render children?.()}
|
|
38
|
-
</ws-screen>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import wsx from "../wsx.js"
|
|
3
|
-
|
|
4
|
-
const {
|
|
5
|
-
size = "100px",
|
|
6
|
-
color = "@primary",
|
|
7
|
-
...rest
|
|
8
|
-
} = $props()
|
|
9
|
-
|
|
10
|
-
const wind = $derived({
|
|
11
|
-
...rest,
|
|
12
|
-
"@size": size,
|
|
13
|
-
"$color": color,
|
|
14
|
-
})
|
|
15
|
-
</script>
|
|
16
|
-
|
|
17
|
-
<!-- svelte-ignore element_invalid_self_closing_tag -->
|
|
18
|
-
<ws-circle-spinner use:wsx={wind} style="aspect-ratio: 1 / 1;" />
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import wsx from "../wsx.js"
|
|
3
|
-
|
|
4
|
-
const {
|
|
5
|
-
size = "100px",
|
|
6
|
-
color = "@primary",
|
|
7
|
-
...rest
|
|
8
|
-
} = $props()
|
|
9
|
-
|
|
10
|
-
const wind = $derived({
|
|
11
|
-
...rest,
|
|
12
|
-
"@size": size,
|
|
13
|
-
"$color": color,
|
|
14
|
-
})
|
|
15
|
-
</script>
|
|
16
|
-
|
|
17
|
-
<!-- svelte-ignore element_invalid_self_closing_tag -->
|
|
18
|
-
<ws-hexagon-spinner use:wsx={wind} style="aspect-ratio: 1 / 1;" />
|
package/src/text.svelte
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import wsx from "./wsx.js"
|
|
3
|
-
|
|
4
|
-
const { adorn, subtitle, title, children, ...rest } = $props()
|
|
5
|
-
|
|
6
|
-
const wind = $derived({
|
|
7
|
-
"$title-text": title,
|
|
8
|
-
"$subtitle-text": subtitle,
|
|
9
|
-
"$adorn": adorn,
|
|
10
|
-
...rest
|
|
11
|
-
})
|
|
12
|
-
</script>
|
|
13
|
-
|
|
14
|
-
<span use:wsx={wind}>
|
|
15
|
-
{@render children?.()}
|
|
16
|
-
</span>
|