@axel669/zephyr 0.1.17 → 0.2.0-beta.1

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.
Files changed (115) hide show
  1. package/LICENSE +21 -21
  2. package/package.json +10 -7
  3. package/readme.md +55 -44
  4. package/src/async/button.svelte +31 -0
  5. package/src/async/load-zone.svelte +17 -0
  6. package/src/composed/data-table/th.svelte +60 -0
  7. package/src/composed/data-table.md +83 -0
  8. package/src/composed/data-table.svelte +136 -150
  9. package/src/composed/entry-button.md +34 -0
  10. package/src/composed/entry-button.svelte +29 -68
  11. package/src/composed/table-functions.js +13 -0
  12. package/src/composed/toast/message.svelte +56 -44
  13. package/src/composed/toast.md +36 -0
  14. package/src/composed/toast.svelte +68 -108
  15. package/src/control/button.md +37 -0
  16. package/src/control/button.svelte +25 -0
  17. package/src/control/input.svelte +107 -0
  18. package/src/control/label.md +45 -0
  19. package/src/control/label.svelte +36 -0
  20. package/src/control/link.md +46 -0
  21. package/src/control/link.svelte +28 -0
  22. package/src/control/radio.md +56 -0
  23. package/src/control/radio.svelte +26 -0
  24. package/src/control/select.md +68 -0
  25. package/src/control/select.svelte +62 -0
  26. package/src/control/tabs.md +45 -0
  27. package/src/control/tabs.svelte +39 -0
  28. package/src/control/toggle.md +55 -0
  29. package/src/control/toggle.svelte +47 -0
  30. package/src/data-display/avatar.md +32 -0
  31. package/src/data-display/avatar.svelte +23 -0
  32. package/src/data-display/badge.md +24 -0
  33. package/src/data-display/badge.svelte +12 -0
  34. package/src/data-display/chip.md +32 -0
  35. package/src/data-display/chip.svelte +26 -0
  36. package/src/data-display/details.md +3 -0
  37. package/src/{details.svelte → data-display/details.svelte} +3 -3
  38. package/src/data-display/popover.md +28 -0
  39. package/src/data-display/popover.svelte +23 -0
  40. package/src/data-display/progress.md +42 -0
  41. package/src/data-display/progress.svelte +25 -0
  42. package/src/data-display/table.md +7 -0
  43. package/src/data-display/table.svelte +36 -0
  44. package/src/data-display/tooltip.md +25 -0
  45. package/src/data-display/tooltip.svelte +15 -0
  46. package/src/dialogs/alert.md +3 -0
  47. package/src/dialogs/alert.svelte +4 -4
  48. package/src/dialogs/confirm.md +3 -0
  49. package/src/dialogs/confirm.svelte +5 -5
  50. package/src/functions.md +77 -0
  51. package/src/handler$.mjs +20 -68
  52. package/src/index.mjs +58 -92
  53. package/src/info/icon.md +17 -0
  54. package/src/info/icon.svelte +9 -0
  55. package/src/info/notification.md +32 -0
  56. package/src/info/notification.svelte +16 -0
  57. package/src/info/titlebar.md +49 -0
  58. package/src/info/titlebar.svelte +18 -0
  59. package/src/info/toaster.md +22 -0
  60. package/src/info/toaster.svelte +14 -0
  61. package/src/inline-dialog.svelte +23 -23
  62. package/src/layout/dialog.md +34 -0
  63. package/src/layout/dialog.svelte +24 -0
  64. package/src/layout/drawer.md +61 -0
  65. package/src/layout/drawer.svelte +47 -0
  66. package/src/layout/flex.md +39 -0
  67. package/src/layout/flex.svelte +22 -0
  68. package/src/layout/grid.md +57 -0
  69. package/src/layout/grid.svelte +26 -0
  70. package/src/layout/modal.md +47 -0
  71. package/src/layout/modal.svelte +58 -0
  72. package/src/layout/paper.md +90 -0
  73. package/src/layout/paper.svelte +45 -0
  74. package/src/layout/screen.md +28 -0
  75. package/src/layout/screen.svelte +32 -0
  76. package/src/{circle-spinner.svelte → spinner/circle-spinner.svelte} +2 -2
  77. package/src/{hexagon-spinner.svelte → spinner/hexagon-spinner.svelte} +2 -2
  78. package/src/spinner/spinners.md +3 -0
  79. package/src/text.md +34 -0
  80. package/src/text.svelte +20 -49
  81. package/src/variant.mjs +12 -12
  82. package/src/wsx.mjs +24 -45
  83. package/src/avatar.svelte +0 -54
  84. package/src/badge.svelte +0 -40
  85. package/src/button.svelte +0 -86
  86. package/src/chip.svelte +0 -56
  87. package/src/dialog.svelte +0 -54
  88. package/src/drawer.svelte +0 -121
  89. package/src/flex.svelte +0 -57
  90. package/src/grid.svelte +0 -66
  91. package/src/icon.svelte +0 -34
  92. package/src/input/area.svelte +0 -98
  93. package/src/input/elems.mjs +0 -7
  94. package/src/input/email.svelte +0 -104
  95. package/src/input/file.svelte +0 -82
  96. package/src/input/number.svelte +0 -104
  97. package/src/input/password.svelte +0 -101
  98. package/src/input/search.svelte +0 -104
  99. package/src/input/text.svelte +0 -104
  100. package/src/link.svelte +0 -67
  101. package/src/modal.svelte +0 -73
  102. package/src/notification.svelte +0 -57
  103. package/src/paper.svelte +0 -127
  104. package/src/popover.svelte +0 -60
  105. package/src/progress.svelte +0 -60
  106. package/src/radio.svelte +0 -82
  107. package/src/screen.svelte +0 -69
  108. package/src/select.svelte +0 -122
  109. package/src/table.svelte +0 -69
  110. package/src/tabs.svelte +0 -78
  111. package/src/titlebar.svelte +0 -69
  112. package/src/toaster.svelte +0 -42
  113. package/src/toggle.svelte +0 -94
  114. package/src/tooltip.svelte +0 -45
  115. package/src/vars.mjs +0 -61
@@ -0,0 +1,77 @@
1
+ # Library Functions/Actions
2
+
3
+ Zephyr has a few functions to make some tasks easier for working with the
4
+ library.
5
+
6
+ ## handler$
7
+
8
+ Wraps a function for currying as an event handler. The curried function does
9
+ not pass the event into final function call.
10
+
11
+ ### Example
12
+ ```svelte
13
+ <script>
14
+ const clicked = handler$(
15
+ (buttonName) => console.log(buttonName)
16
+ )
17
+ </script>
18
+
19
+ <!-- logs "first" when clicked -->
20
+ <Button on:click={clicked("first")}>
21
+ First
22
+ </Button>
23
+ <!-- logs "second" when clicked -->
24
+ <Button on:click={clicked("second")}>
25
+ Second
26
+ </Button>
27
+ ```
28
+
29
+ ## eventHandler$
30
+
31
+ Wraps a function for currying as an event handler. Unlike the `handler$`
32
+ function, the event is passed to the curried function.
33
+
34
+ ### Example
35
+
36
+ ```svelte
37
+ <script>
38
+ const clicked = eventHandler$(
39
+ (event, buttonName) => console.log(event, buttonName)
40
+ )
41
+ </script>
42
+
43
+ <!-- logs the event and "first" when clicked -->
44
+ <Button on:click={clicked("first")}>
45
+ First
46
+ </Button>
47
+ <!-- logs the event and "second" when clicked -->
48
+ <Button on:click={clicked("second")}>
49
+ Second
50
+ </Button>
51
+ ```
52
+
53
+ ## wsx Action
54
+
55
+ The wsx action can be used to set the `ws-x` attribute on a DOM element by using
56
+ an object as the source rather than trying to do the string manipulation
57
+ directly.
58
+ - `null`, `undefined`, and `false` will not insert the wind function
59
+ - `true` will insert the wind function with no args
60
+ - any string value will insert the wind function with the arguments formatted
61
+ for the parser (replace spaces and underscores as needed).
62
+
63
+ ### Example
64
+ ```svelte
65
+ <script>
66
+ // will generate ws-x="grid gr-col[1fr 1fr]"
67
+ const wsxProps = {
68
+ grid: true,
69
+ "gr.cols": "1fr 1fr",
70
+ bg: null
71
+ }
72
+ </script>
73
+
74
+ <div use:wsx={wsxProps}>
75
+ <span>Content</span>
76
+ </div>
77
+ ```
package/src/handler$.mjs CHANGED
@@ -1,68 +1,20 @@
1
- /*md
2
- [@] Event Handlers
3
-
4
- # Event Handlers
5
-
6
- Zephyr provides a couple of functions to help make event handlers look
7
- nicer and bind arguments easier.
8
- */
9
-
10
-
11
- /*md
12
- ## handler$
13
-
14
- Wraps a function for currying as an event handler. The curried function does
15
- not pass the event into final function call.
16
-
17
- ### Usage
18
- ```js
19
- const clicked = handler$(
20
- (buttonName) => console.log(buttonName)
21
- )
22
- ```
23
- ```svelte
24
- <!-- logs "first" when clicked -->
25
- <Button on:click={clicked("first")}>
26
- First
27
- </Button>
28
- <!-- logs "second" when clicked -->
29
- <Button on:click={clicked("second")}>
30
- Second
31
- </Button>
32
- ```
33
- */
34
- const handler$ = (func) =>
35
- (...args) =>
36
- (_, ...extra) => func(...args, ...extra)
37
-
38
- /*md
39
- ## eventHandler$
40
-
41
- Wraps a function for currying as an event handler. Unlike the `handler$`
42
- function, the event is passed to the curried function.
43
-
44
- ### Usage
45
- In the following example, "first" is logged each time the first button is
46
- clicked, and "second" is logged when the second button is clicked. In both
47
- cases the click event is also logged.
48
- ```js
49
- const clicked = eventHandler$(
50
- (event, buttonName) => console.log(event, buttonName)
51
- )
52
- ```
53
- ```svelte
54
- <!-- logs the event and "first" when clicked -->
55
- <Button on:click={clicked("first")}>
56
- First
57
- </Button>
58
- <!-- logs the event and "second" when clicked -->
59
- <Button on:click={clicked("second")}>
60
- Second
61
- </Button>
62
- ```
63
- */
64
- const eventHandler$ = (func) =>
65
- (...args) =>
66
- (...extra) => func(...extra, ...args)
67
-
68
- export { handler$, eventHandler$ }
1
+ /**
2
+ Wraps a handler function for easy reuse.
3
+
4
+ @param {Function} func The handler function to wrap
5
+ */
6
+ const handler$ = (func) =>
7
+ (...args) =>
8
+ (_, ...extra) => func(...args, ...extra)
9
+
10
+ /**
11
+ Wraps a handler function for easy reuse, and doesn't throw away the event arg
12
+ passed by events firing.
13
+
14
+ @param {Function} func The handler function to wrap
15
+ */
16
+ const eventHandler$ = (func) =>
17
+ (...args) =>
18
+ (...extra) => func(...extra, ...args)
19
+
20
+ export { handler$, eventHandler$ }
package/src/index.mjs CHANGED
@@ -1,92 +1,58 @@
1
- /*md
2
- [@] Home
3
-
4
- # Zephyr
5
- Zephyr is a svelte binding for the
6
- [Windstorm](https://www.npmjs.com/package/@axel669/windstorm)
7
- library.
8
-
9
- [Docs Here](https://svelte-wind.axel669.net)
10
-
11
- ## Installation
12
- Zephyr can be installed through npm (or the variants like yarn, pnpm, etc).
13
-
14
- ```bash
15
- npm install @axel669/svelte-wind
16
- ```
17
-
18
- ## Usage
19
- Components can be imported individually from the library for tree-shaking, or
20
- the entire lib can imported at once, but I dunno how big that bundle will be.
21
-
22
- ```svelte
23
- <script>
24
- // individual import for tree shaking
25
- import { Button } from "@axel69/svelte-wind"
26
-
27
- // bring the whole thing to keep it simple
28
- import * as Wind from "@axel69/svelte-wind"
29
- </script>
30
-
31
- <!-- the wsx action can be used to setup the ws-x needed for the body -->
32
- <svelte:body use:wsx={{theme, "@app": true}} />
33
-
34
- <Button on:click={stuff}>
35
- I'm a button!
36
- </Button>
37
-
38
- <Wind.Button on:click={stuff}>
39
- I'm also button!
40
- </Wind.Button>
41
- ```
42
-
43
- ### Svelte Config
44
- No special configuration of svelte is required, nor is there a separate plugin
45
- that needs to be added. Just have svelte and you're good to go.
46
- */
47
-
48
- export { default as Avatar } from "./avatar.svelte"
49
- export { default as Badge } from "./badge.svelte"
50
- export { default as Button } from "./button.svelte"
51
- export { default as Chip } from "./chip.svelte"
52
- export { default as Details } from "./details.svelte"
53
- export { default as Dialog } from "./dialog.svelte"
54
- export { default as Drawer } from "./drawer.svelte"
55
- export { default as Flex } from "./flex.svelte"
56
- export { default as Grid } from "./grid.svelte"
57
- export { default as Icon } from "./icon.svelte"
58
- export { default as InlineDialog } from "./inline-dialog.svelte"
59
- export { default as Link } from "./link.svelte"
60
- export { default as Modal } from "./modal.svelte"
61
- export { default as Notification } from "./notification.svelte"
62
- export { default as Paper } from "./paper.svelte"
63
- export { default as Popover } from "./popover.svelte"
64
- export { default as Progress } from "./progress.svelte"
65
- export { default as Radio } from "./radio.svelte"
66
- export { default as Screen } from "./screen.svelte"
67
- export { default as Select } from "./select.svelte"
68
- export { default as Table } from "./table.svelte"
69
- export { default as Tabs } from "./tabs.svelte"
70
- export { default as Text } from "./text.svelte"
71
- export { default as Titlebar } from "./titlebar.svelte"
72
- export { default as Toaster } from "./toaster.svelte"
73
- export { default as Toggle } from "./toggle.svelte"
74
- export { default as Tooltip } from "./tooltip.svelte"
75
-
76
- export { default as CircleSpinner } from "./circle-spinner.svelte"
77
- export { default as HexagonSpinner } from "./hexagon-spinner.svelte"
78
-
79
- export { default as Alert } from "./dialogs/alert.svelte"
80
- export { default as Confirm } from "./dialogs/confirm.svelte"
81
-
82
- export { default as DataTable } from "./composed/data-table.svelte"
83
- export { default as EntryButton } from "./composed/entry-button.svelte"
84
- export { default as Toast } from "./composed/toast.svelte"
85
-
86
- export { default as wsx } from "./wsx.mjs"
87
-
88
- export * as Input from "./input/elems.mjs"
89
-
90
- export * from "./handler$.mjs"
91
-
92
- export { default as TheLastAirbender } from "./avatar.svelte"
1
+ export { default as Button } from "./control/button.svelte"
2
+ export { default as Input } from "./control/input.svelte"
3
+ export { default as Link } from "./control/link.svelte"
4
+ export { default as Radio } from "./control/radio.svelte"
5
+ export { default as Select } from "./control/select.svelte"
6
+ export { default as Tabs } from "./control/tabs.svelte"
7
+ export { default as Toggle } from "./control/toggle.svelte"
8
+
9
+ export { default as Avatar } from "./data-display/avatar.svelte"
10
+ export { default as TheLastAirbender } from "./data-display/avatar.svelte"
11
+ export { default as Badge } from "./data-display/badge.svelte"
12
+ export { default as Chip } from "./data-display/chip.svelte"
13
+ export { default as Details } from "./data-display/details.svelte"
14
+ export { default as Popover } from "./data-display/popover.svelte"
15
+ export { default as Progress } from "./data-display/progress.svelte"
16
+ export { default as Table } from "./data-display/table.svelte"
17
+ export { default as Tooltip } from "./data-display/tooltip.svelte"
18
+
19
+ export { default as Icon } from "./info/icon.svelte"
20
+ export { default as Notification } from "./info/notification.svelte"
21
+ export { default as Titlebar } from "./info/titlebar.svelte"
22
+ export { default as Toaster } from "./info/toaster.svelte"
23
+
24
+ export { default as Dialog } from "./layout/dialog.svelte"
25
+ export { default as Drawer } from "./layout/drawer.svelte"
26
+ export { default as Flex } from "./layout/flex.svelte"
27
+ export { default as Grid } from "./layout/grid.svelte"
28
+ export { default as Modal } from "./layout/modal.svelte"
29
+ export { default as Paper } from "./layout/paper.svelte"
30
+ export { default as Screen } from "./layout/screen.svelte"
31
+
32
+ // export { default as InlineDialog } from "./inline-dialog.svelte"
33
+ export { default as Text } from "./text.svelte"
34
+
35
+ export { default as CircleSpinner } from "./spinner/circle-spinner.svelte"
36
+ export { default as HexagonSpinner } from "./spinner/hexagon-spinner.svelte"
37
+
38
+ export { default as Alert } from "./dialogs/alert.svelte"
39
+ export { default as Confirm } from "./dialogs/confirm.svelte"
40
+
41
+ export { default as EntryButton } from "./composed/entry-button.svelte"
42
+ export { default as Toast } from "./composed/toast.svelte"
43
+
44
+ export { default as AsyncButton } from "./async/button.svelte"
45
+ export { default as LoadZone } from "./async/load-zone.svelte"
46
+
47
+ import DataTable from "./composed/data-table.svelte"
48
+ import th from "./composed/data-table/th.svelte"
49
+ DataTable.th = th
50
+
51
+ export { DataTable, th }
52
+ // export { default as DataTable } from "./composed/data-table.svelte"
53
+
54
+ export { default as wsx } from "./wsx.mjs"
55
+
56
+
57
+ export * from "./handler$.mjs"
58
+ export * from "./composed/table-functions.js"
@@ -0,0 +1,17 @@
1
+ # Icon
2
+
3
+ Displays a [Tabler Icon](https://tabler-icons.io/) and some optional text.
4
+ The icon will appear at the beginning of the text.
5
+
6
+ ## Props
7
+
8
+ ### name
9
+ `string`
10
+
11
+ The name of the icon. Use the tabler icon class name without the "ti-".
12
+
13
+ ## Example
14
+ ```svelte
15
+ <Icon name="hexagon" />
16
+ <Icon name="hexagons">Are the bestagons</Icon>
17
+ ```
@@ -0,0 +1,9 @@
1
+ <script>
2
+ import wsx from "../wsx.mjs"
3
+
4
+ export let name
5
+ </script>
6
+
7
+ <ws-icon class="ti-{name}" use:wsx={$$restProps}>
8
+ <slot />
9
+ </ws-icon>
@@ -0,0 +1,32 @@
1
+ # Notification
2
+
3
+ Displays a piece of content that stands out from the surrounding content and
4
+ can also be used for toast messages. Optionally has some interactable
5
+ elements embedded.
6
+
7
+ Expects 1-2 child nodes and will display them on the sides of the
8
+ notification with space between them. This means that reversing the order
9
+ of the child nodes will flip which sides they appear on.
10
+
11
+ ## Props
12
+
13
+ ### color
14
+ Sets `$color` and uses the fill style for coloration.
15
+
16
+ ## Example
17
+ ```svelte
18
+ <Notification>
19
+ <Icon name="info-hexagon">
20
+ Some kind of information
21
+ </Icon>
22
+ </Notification>
23
+ <Notification color="danger">
24
+ <Icon name="alert-hexagon">
25
+ Something broke
26
+ </Icon>
27
+
28
+ <Button>
29
+ Cancel
30
+ </Button>
31
+ </Notification>
32
+ ```
@@ -0,0 +1,16 @@
1
+ <script>
2
+ import wsx from "../wsx.mjs"
3
+
4
+ export let color = false
5
+
6
+ $: wind = {
7
+ "$color": color,
8
+ ...$$restProps,
9
+ }
10
+ </script>
11
+
12
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
13
+ <!-- svelte-ignore a11y-interactive-supports-focus -->
14
+ <ws-notification use:wsx={wind} on:click role="button">
15
+ <slot />
16
+ </ws-notification>
@@ -0,0 +1,49 @@
1
+ # Titlebar
2
+
3
+ The titlebar is used to set section titles with some style, and provides
4
+ slots for buttons on either side of the title text. Works well as a header
5
+ for Paper components.
6
+
7
+ ## Props
8
+
9
+ ### color
10
+ `string`
11
+
12
+ Sets `$color`
13
+
14
+ ### fill
15
+ `bool`
16
+
17
+ Sets `$fill`
18
+
19
+ ## Slots
20
+
21
+ ### title
22
+ The center of the titlebar, where the text usually goes
23
+
24
+ ### menu
25
+ The area on the left of the titlebar (where drawer menus tend to open)
26
+
27
+ ### action
28
+ The area on the right of the titlebar
29
+
30
+ ## Example
31
+ ```svelte
32
+ <Titlebar color="primary" fill>
33
+ <Text title slot="title">
34
+ Some Title
35
+ </Text>
36
+
37
+ <Button slot="menu" color={false}>
38
+ <Icon name="menu" />
39
+ </Button>
40
+ </Titlebar>
41
+
42
+ <Paper>
43
+ <Titlebar color="secondary" slot="header">
44
+ <Text title slot="title">
45
+ Paper Title
46
+ </Text>
47
+ </Titlebar>
48
+ </Paper>
49
+ ```
@@ -0,0 +1,18 @@
1
+ <script>
2
+ import wsx from "../wsx.mjs"
3
+
4
+ export let color
5
+ export let fill = false
6
+
7
+ $: wind = {
8
+ "$color": color,
9
+ "$fill": fill,
10
+ ...$$restProps
11
+ }
12
+ </script>
13
+
14
+ <ws-titlebar use:wsx={wind}>
15
+ <slot name="menu" />
16
+ <slot name="title" />
17
+ <slot name="action" />
18
+ </ws-titlebar>
@@ -0,0 +1,22 @@
1
+ # Toaster
2
+
3
+ The Toaster component is used for building popup notifications along the
4
+ edges of the window.
5
+
6
+ ## Props
7
+
8
+ ### position
9
+ Sets position of the toaster. See the
10
+ [windstorm base](https://windstorm.axel669.net/lib/css/component/toaster)
11
+ for values.
12
+
13
+ ## Example
14
+ ```svelte
15
+ <Toaster position="$tc">
16
+ <Notification>
17
+ <Icon name="info">
18
+ Some kind of notification of things
19
+ </Icon>
20
+ </Notification>
21
+ </Toaster>
22
+ ```
@@ -0,0 +1,14 @@
1
+ <script>
2
+ import wsx from "../wsx.mjs"
3
+
4
+ export let position = "tc"
5
+
6
+ $: wind = {
7
+ [`$${position}`]: true,
8
+ ...$$restProps,
9
+ }
10
+ </script>
11
+
12
+ <ws-toaster use:wsx={wind}>
13
+ <slot />
14
+ </ws-toaster>
@@ -1,23 +1,23 @@
1
- <script>
2
- import wsx from "./wsx.mjs"
3
-
4
- import Paper from "./paper.svelte"
5
-
6
- const id = Math.random().toString(16)
7
-
8
- $: paper = {
9
- "@dialog": true,
10
- "@outline": true,
11
- ...$$restProps
12
- }
13
- </script>
14
-
15
- <slot name="toggle" {id} />
16
- <input type="checkbox" ws-x="hide" {id} />
17
- <ws-modal>
18
- <ws-paper use:wsx={paper}>
19
- <slot name="header" {id} />
20
- <slot name="content" {id} />
21
- <slot name="footer" {id} />
22
- </ws-paper>
23
- </ws-modal>
1
+ <script>
2
+ import wsx from "../wsx.mjs"
3
+
4
+ import Paper from "./paper.svelte"
5
+
6
+ const id = Math.random().toString(16)
7
+
8
+ $: paper = {
9
+ "@dialog": true,
10
+ "$outline": true,
11
+ ...$$restProps
12
+ }
13
+ </script>
14
+
15
+ <slot name="toggle" {id} />
16
+ <input type="checkbox" ws-x="hide" {id} />
17
+ <ws-modal>
18
+ <ws-paper use:wsx={paper}>
19
+ <slot name="header" {id} />
20
+ <slot name="content" {id} />
21
+ <slot name="footer" {id} />
22
+ </ws-paper>
23
+ </ws-modal>
@@ -0,0 +1,34 @@
1
+ # Dialog
2
+
3
+ A modal container for creating dialogs. The Dialog component is a modal
4
+ element that uses a Paper element for the layout of content. All props and
5
+ slots for the Dialog are passed to the underlying Paper component.
6
+
7
+ The Dialog component is used as a wrapper for content and is used in
8
+ conjunction with the Modal component to be controlled on screen.
9
+
10
+ ## Props
11
+ This component just wraps a [Paper](./paper.md) component with some extra parts,
12
+ and passes the props to a `Paper`.
13
+
14
+ ## Example
15
+ `cool-dialog.svelte`
16
+ ```svelte
17
+ <Dialog>
18
+ <Titlebar slot="header">
19
+ <Text slot="title" title>
20
+ Some Title
21
+ </Text>
22
+ </Titlebar>
23
+
24
+ <span>Content</span>
25
+ </Dialog>
26
+ ```
27
+
28
+ `app.svelte`
29
+ ```svelte
30
+ <Modal component={CoolDialog} />
31
+ <EntryButton this={Modal} component={CoolDialog}>
32
+ Open Cool Dialog
33
+ </EntryButton>
34
+ ```
@@ -0,0 +1,24 @@
1
+ <script>
2
+ import { fade } from "svelte/transition"
3
+
4
+ import wsx from "../wsx.mjs"
5
+
6
+ import Paper from "./paper.svelte"
7
+
8
+ const trick = (node, options) => ({
9
+ delay: 0,
10
+ duration: 250,
11
+ css: () => "",
12
+ })
13
+ </script>
14
+
15
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
16
+ <!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
17
+ <wind-wrapper transition:trick ws-x="$dialog grid" on:click|stopPropagation
18
+ role="dialog">
19
+ <Paper {...$$props}>
20
+ <slot name="header" slot="header" />
21
+ <slot />
22
+ <slot name="footer" slot="footer" />
23
+ </Paper>
24
+ </wind-wrapper>
@@ -0,0 +1,61 @@
1
+ # Drawer
2
+
3
+ A modal container for creating dialogs. The Dialog component is a modal
4
+ element that uses a Paper element for the layout of content. All extra props
5
+ and slots for the Drawer are passed to the underlying Paper component.
6
+
7
+ The Drawer component is used as a wrapper for content and is used in
8
+ conjunction with the Modal component to be controlled on screen.
9
+
10
+ ## Props
11
+
12
+ ### close
13
+ `function`
14
+
15
+ If passed, this function will be called when the user clicks in the
16
+ empty area outside of the drawer contents.
17
+
18
+ ### height
19
+ `string`
20
+
21
+ Sets the height of the select drawer, no effect for menu and action
22
+ drawers which default to full height of the window.
23
+
24
+ ### type
25
+ `string`
26
+
27
+ The type of drawer. Default is "menu"
28
+ #### "menu"
29
+
30
+ Makes a drawer that slides in on the left side of the screen
31
+
32
+ #### "action"
33
+
34
+ Makes a drawer that slides in on the right side of the screen
35
+
36
+ #### "select"
37
+
38
+ Makes a drawer that is centered horizontally and slides in from
39
+ the top of the screen
40
+
41
+ ## Example
42
+ `cool-drawer.svelte`
43
+ ```svelte
44
+ <Drawer>
45
+ <Titlebar slot="header">
46
+ <Text slot="title" title>
47
+ Some Title
48
+ </Text>
49
+ </Titlebar>
50
+
51
+ <span>Content</span>
52
+ </Drawer>
53
+ ```
54
+
55
+ `app.svelte`
56
+ ```svelte
57
+ <Modal component={CoolDrawer} />
58
+ <EntryButton this={Modal} component={CoolDrawer}>
59
+ Open Cool Dialog
60
+ </EntryButton>
61
+ ```