@medyll/idae-slotui-svelte 0.122.1 → 0.124.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.
Files changed (203) hide show
  1. package/README.md +47 -47
  2. package/dist/base/alert/Alert.demo.svelte +62 -62
  3. package/dist/base/alert/Alert.svelte +121 -121
  4. package/dist/base/alert/alert.scss +93 -93
  5. package/dist/base/avatar/Avatar.demo.svelte +41 -41
  6. package/dist/base/avatar/Avatar.preview.svelte +6 -6
  7. package/dist/base/avatar/Avatar.svelte +65 -65
  8. package/dist/base/avatar/avatar.scss +17 -17
  9. package/dist/base/backdrop/Backdrop.demo.svelte +49 -49
  10. package/dist/base/backdrop/Backdrop.svelte +78 -78
  11. package/dist/base/backdrop/backdrop.scss +34 -34
  12. package/dist/base/badge/Badge.svelte +31 -31
  13. package/dist/base/badge/badge.scss +19 -19
  14. package/dist/base/box/Box.demo.svelte +54 -54
  15. package/dist/base/box/Box.svelte +72 -72
  16. package/dist/base/box/box.scss +33 -33
  17. package/dist/base/breadCrumb/BreadCrumb.svelte +23 -23
  18. package/dist/base/breadCrumb/breadcrumb.scss +11 -11
  19. package/dist/base/cartouche/Cartouche.demo.svelte +108 -108
  20. package/dist/base/cartouche/Cartouche.svelte +114 -114
  21. package/dist/base/cartouche/cartouche.scss +114 -114
  22. package/dist/base/chipper/Chipper.demo.svelte +45 -45
  23. package/dist/base/chipper/Chipper.svelte +36 -36
  24. package/dist/base/chipper/chipper.scss +65 -65
  25. package/dist/base/columner/Column.svelte +62 -62
  26. package/dist/base/columner/Columner.demo.svelte +15 -15
  27. package/dist/base/columner/Columner.svelte +21 -21
  28. package/dist/base/contentSwitcher/ContentSwitcher.demo.svelte +45 -45
  29. package/dist/base/contentSwitcher/ContentSwitcher.svelte +63 -63
  30. package/dist/base/contentSwitcher/content-switcher.scss +22 -22
  31. package/dist/base/debug/Debug.svelte +21 -21
  32. package/dist/base/demoer/DemoPage.svelte +40 -40
  33. package/dist/base/demoer/Demoer.svelte +170 -170
  34. package/dist/base/demoer/DemoerCode.svelte +45 -45
  35. package/dist/base/demoer/DemoerComponent.svelte +50 -50
  36. package/dist/base/divider/Divider.demo.svelte +34 -34
  37. package/dist/base/divider/Divider.svelte +68 -68
  38. package/dist/base/divider/divider.scss +19 -19
  39. package/dist/base/icon/Icon.demo.svelte +24 -24
  40. package/dist/base/icon/Icon.svelte +117 -117
  41. package/dist/base/icon/icon.scss +17 -17
  42. package/dist/base/paper/Paper.demo.svelte +31 -31
  43. package/dist/base/paper/Paper.svelte +20 -20
  44. package/dist/base/paper/paper.scss +15 -15
  45. package/dist/base/titleBar/TitleBar.demo.svelte +30 -30
  46. package/dist/base/titleBar/TitleBar.svelte +40 -40
  47. package/dist/base/titleBar/title-bar.scss +29 -29
  48. package/dist/controls/autocomplete/AutoComplete.demo.svelte +88 -88
  49. package/dist/controls/autocomplete/AutoComplete.svelte +152 -152
  50. package/dist/controls/autocomplete/auto-complete.scss +15 -15
  51. package/dist/controls/button/Button.demo.svelte +165 -165
  52. package/dist/controls/button/Button.svelte +95 -95
  53. package/dist/controls/button/ButtonAction.svelte +55 -55
  54. package/dist/controls/button/ButtonMenu.svelte +55 -55
  55. package/dist/controls/button/IconButton.svelte +45 -45
  56. package/dist/controls/button/button-action.scss +8 -8
  57. package/dist/controls/button/button-menu.scss +36 -36
  58. package/dist/controls/button/button.scss +293 -293
  59. package/dist/controls/checkbox/Checkbox.demo.svelte +29 -29
  60. package/dist/controls/checkbox/Checkbox.svelte +59 -59
  61. package/dist/controls/checkbox/checkbox.scss +115 -115
  62. package/dist/controls/confirm/Confirm.demo.svelte +60 -60
  63. package/dist/controls/confirm/Confirm.preview.svelte +14 -14
  64. package/dist/controls/confirm/Confirm.svelte +156 -156
  65. package/dist/controls/confirm/confirm.scss +12 -12
  66. package/dist/controls/inplaceedit/InPlaceEdit.demo.svelte +41 -41
  67. package/dist/controls/inplaceedit/InPlaceEdit.svelte +109 -109
  68. package/dist/controls/progress/Progress.demo.svelte +30 -30
  69. package/dist/controls/progress/Progress.svelte +26 -26
  70. package/dist/controls/progress/progress.scss +23 -23
  71. package/dist/controls/rating/Rating.demo.svelte +45 -45
  72. package/dist/controls/rating/Rating.svelte +44 -44
  73. package/dist/controls/rating/rating.scss +9 -9
  74. package/dist/controls/select/Select.demo.svelte +101 -101
  75. package/dist/controls/select/Select.svelte +125 -125
  76. package/dist/controls/select/select.scss +13 -13
  77. package/dist/controls/slider/Slider.demo.svelte +34 -34
  78. package/dist/controls/slider/Slider.svelte +153 -153
  79. package/dist/controls/slider/slider.scss +51 -51
  80. package/dist/controls/stepper/Stepper.demo.svelte +32 -32
  81. package/dist/controls/stepper/Stepper.svelte +30 -30
  82. package/dist/controls/stepper/stepper.scss +23 -23
  83. package/dist/controls/switch/Switch.demo.svelte +61 -61
  84. package/dist/controls/switch/Switch.svelte +45 -45
  85. package/dist/controls/switch/switch.scss +73 -73
  86. package/dist/controls/textfield/TextField.demo.svelte +79 -79
  87. package/dist/controls/textfield/TextField.svelte +86 -86
  88. package/dist/controls/textfield/textfield.scss +68 -68
  89. package/dist/csss/csss.scss +10 -10
  90. package/dist/data/dataList/DataList.demo.svelte +151 -151
  91. package/dist/data/dataList/DataList.preview.svelte +23 -23
  92. package/dist/data/dataList/DataList.svelte +233 -233
  93. package/dist/data/dataList/DataListCell.svelte +212 -212
  94. package/dist/data/dataList/DataListHead.svelte +75 -75
  95. package/dist/data/dataList/DataListRow.svelte +93 -93
  96. package/dist/data/dataList/datalist.scss +157 -157
  97. package/dist/data/finder/Finder.demo.svelte +55 -55
  98. package/dist/data/finder/Finder.svelte +166 -166
  99. package/dist/data/finder/finder.scss +14 -14
  100. package/dist/data/grouper/Grouper.demo.svelte +36 -36
  101. package/dist/data/grouper/Grouper.svelte +85 -85
  102. package/dist/data/jsoner/Jsoner.svelte +40 -40
  103. package/dist/data/list/List.svelte +16 -16
  104. package/dist/data/list/ListItem.svelte +10 -10
  105. package/dist/data/list/ListTitle.svelte +8 -8
  106. package/dist/data/loader/Loader.demo.svelte +95 -95
  107. package/dist/data/loader/Loader.preview.svelte +7 -7
  108. package/dist/data/loader/Loader.svelte +99 -99
  109. package/dist/data/loader/loader.scss +50 -50
  110. package/dist/data/sorter/Sorter.demo.svelte +62 -62
  111. package/dist/data/sorter/Sorter.svelte +80 -80
  112. package/dist/data/sorter/Sorterer.svelte +27 -27
  113. package/dist/data/sorter/sorterer.scss +11 -11
  114. package/dist/index.d.ts +58 -57
  115. package/dist/index.js +58 -57
  116. package/dist/navigation/drawer/Drawer.demo.svelte +52 -52
  117. package/dist/navigation/drawer/Drawer.svelte +163 -163
  118. package/dist/navigation/drawer/drawer.scss +69 -69
  119. package/dist/navigation/tabs/Tabs.demo.svelte +83 -83
  120. package/dist/navigation/tabs/Tabs.preview.svelte +22 -22
  121. package/dist/navigation/tabs/Tabs.svelte +158 -158
  122. package/dist/navigation/tabs/tabs.scss +92 -92
  123. package/dist/slotui-css/slotui-css.css +141 -141
  124. package/dist/slotui-css/slotui-min-css.css +141 -141
  125. package/dist/styles/slotui-mixins.scss +168 -168
  126. package/dist/styles/slotui-presets.scss +56 -56
  127. package/dist/styles/slotuisheet/SlotuiSheet.svelte +36 -36
  128. package/dist/styles/slotuisheet/SlotyuiSheet.demo.svelte +28 -28
  129. package/dist/styles/slotuisheet/sheetConfig.scss +7 -7
  130. package/dist/styles/slotuisheet/slotui-sheet.scss +192 -192
  131. package/dist/styles/slotuisheet/stylesheet-container.scss +147 -147
  132. package/dist/styles/slotuisheet/stylesheet.scss +156 -156
  133. package/dist/types/slotui-ambient.d.ts +27 -27
  134. package/dist/ui/bootstrapp/BootStrApp.svelte +92 -92
  135. package/dist/ui/chromeFrame/ChromeFrame.svelte +43 -43
  136. package/dist/ui/chromeFrame/ChromeFrameButtonList.svelte +33 -33
  137. package/dist/ui/chromeFrame/ChromeFrameList.svelte +106 -106
  138. package/dist/ui/chromeFrame/chrome-frame.scss +34 -34
  139. package/dist/ui/frame/Frame.demo.svelte +48 -48
  140. package/dist/ui/frame/Frame.svelte +90 -90
  141. package/dist/ui/frame/frame.scss +46 -46
  142. package/dist/ui/login/Login.demo.svelte +62 -62
  143. package/dist/ui/login/Login.svelte +102 -102
  144. package/dist/ui/marquee/Marquee.demo.svelte +33 -33
  145. package/dist/ui/marquee/Marquee.svelte +97 -97
  146. package/dist/ui/marquee/marquee.scss +34 -34
  147. package/dist/ui/menu/Menu.svelte +9 -9
  148. package/dist/ui/menu/MenuItem.svelte +9 -9
  149. package/dist/ui/menu/MenuTitle.svelte +10 -10
  150. package/dist/ui/menu/menu.scss +61 -61
  151. package/dist/ui/menuList/MenuList.demo.svelte +73 -73
  152. package/dist/ui/menuList/MenuList.svelte +143 -143
  153. package/dist/ui/menuList/MenuListItem.svelte +134 -134
  154. package/dist/ui/menuList/MenuListTitle.svelte +10 -10
  155. package/dist/ui/menuList/menu-list.scss +120 -120
  156. package/dist/ui/panel/Panel.demo.svelte +169 -169
  157. package/dist/ui/panel/Panel.svelte +96 -96
  158. package/dist/ui/panel/PanelGrid.svelte +62 -62
  159. package/dist/ui/panel/PanelSlide.svelte +156 -156
  160. package/dist/ui/panel/Paneler.svelte +63 -63
  161. package/dist/ui/panel/panel.scss +32 -32
  162. package/dist/ui/popper/Popper.demo.svelte +92 -92
  163. package/dist/ui/popper/Popper.svelte +160 -160
  164. package/dist/ui/popper/popper.scss +108 -108
  165. package/dist/ui/preview/Preview.svelte +41 -41
  166. package/dist/ui/serviceBox/ServiceBox.svelte +24 -24
  167. package/dist/ui/startMenu/BootMenu.svelte +102 -102
  168. package/dist/ui/startMenu/boot-menu.scss +86 -86
  169. package/dist/ui/taskbar/TaskBarContent.svelte +20 -20
  170. package/dist/ui/taskbar/Taskbar.svelte +26 -26
  171. package/dist/ui/taskbar/taskbar.scss +28 -28
  172. package/dist/ui/themeswitcher/ThemeSwitcher.svelte +18 -18
  173. package/dist/ui/toast/Toast.demo.svelte +19 -19
  174. package/dist/ui/toast/Toast.svelte +60 -60
  175. package/dist/ui/toast/Toaster.svelte +18 -18
  176. package/dist/ui/toggleBar/ToggleBar.demo.svelte +114 -114
  177. package/dist/ui/toggleBar/ToggleBar.svelte +58 -58
  178. package/dist/ui/toggleBar/toggle-bar.scss +45 -45
  179. package/dist/ui/toolBar/ToolBar.demo.svelte +98 -98
  180. package/dist/ui/toolBar/ToolBar.svelte +30 -30
  181. package/dist/ui/toolBar/toolbar.scss +32 -32
  182. package/dist/ui/tree/Tree.demo.svelte +84 -84
  183. package/dist/ui/tree/Tree.preview.svelte +19 -19
  184. package/dist/ui/tree/Tree.svelte +182 -182
  185. package/dist/ui/tree/tree.scss +38 -38
  186. package/dist/ui/window/Window.demo.svelte +111 -111
  187. package/dist/ui/window/Window.svelte +177 -177
  188. package/dist/ui/window/window.scss +66 -66
  189. package/dist/utils/content/Content.svelte +78 -78
  190. package/dist/utils/contextRooter/ContextRooter.demo.svelte +33 -33
  191. package/dist/utils/contextRooter/ContextRooter.svelte +6 -6
  192. package/dist/utils/css/Css.demo.svelte +5 -5
  193. package/dist/utils/css/Css.svelte +64 -64
  194. package/dist/utils/effects/transitions.js +6 -6
  195. package/dist/utils/looper/Looper.demo.svelte +36 -36
  196. package/dist/utils/looper/Looper.svelte +47 -47
  197. package/dist/utils/slotted/Slotted.svelte +21 -21
  198. package/dist/utils/stylesheet/StyleSheet.demo.svelte +28 -28
  199. package/dist/utils/stylesheet/StyleSheet.svelte +30 -30
  200. package/dist/utils/stylesheet/containerConfig.scss +7 -7
  201. package/dist/utils/stylesheet/stylesheet.scss +147 -147
  202. package/dist/utils/uses/sx4u/sx4uPreprocess.js +34 -34
  203. package/package.json +3 -3
package/README.md CHANGED
@@ -1,47 +1,47 @@
1
- # @medyll/idae-slotui-svelte
2
-
3
- This package is part of the Idae monorepo and focuses on providing slot UI components for Svelte applications.
4
- It aims to offer a set of reusable and customizable slots to enhance the development of web applications.
5
-
6
- ## Features
7
-
8
- - **Reusable Components**: Prebuilt slot-based components to speed up development.
9
- - **Customizable**: Easily adapt components to fit your application's design and functionality.
10
- - **Svelte Integration**: Designed specifically for Svelte, ensuring seamless integration.
11
- - **Lightweight**: Minimal dependencies for optimal performance.
12
-
13
- ## Installation
14
-
15
- To install the package, use your preferred package manager:
16
-
17
- ```bash
18
- npm install @medyll/idae-slotui-svelte
19
- # or
20
- yarn add @medyll/idae-slotui-svelte
21
- # or
22
- pnpm add @medyll/idae-slotui-svelte
23
- ```
24
-
25
- ## Usage
26
-
27
- Import and use the components in your Svelte application:
28
-
29
- ```svelte
30
- <script>
31
- import { SlotComponent } from '@medyll/idae-slotui-svelte';
32
- </script>
33
-
34
- <SlotComponent>
35
- <div slot="header">Header Content</div>
36
- <div slot="body">Body Content</div>
37
- <div slot="footer">Footer Content</div>
38
- </SlotComponent>
39
- ```
40
-
41
- ## Contributing
42
-
43
- Contributions are welcome! Please refer to the [contribution guidelines](../../CONTRIBUTING.md) for more details.
44
-
45
- ## License
46
-
47
- This package is licensed under the MIT License. See the [LICENSE](../../LICENSE) file for more information.
1
+ # @medyll/idae-slotui-svelte
2
+
3
+ This package is part of the Idae monorepo and focuses on providing slot UI components for Svelte applications.
4
+ It aims to offer a set of reusable and customizable slots to enhance the development of web applications.
5
+
6
+ ## Features
7
+
8
+ - **Reusable Components**: Prebuilt slot-based components to speed up development.
9
+ - **Customizable**: Easily adapt components to fit your application's design and functionality.
10
+ - **Svelte Integration**: Designed specifically for Svelte, ensuring seamless integration.
11
+ - **Lightweight**: Minimal dependencies for optimal performance.
12
+
13
+ ## Installation
14
+
15
+ To install the package, use your preferred package manager:
16
+
17
+ ```bash
18
+ npm install @medyll/idae-slotui-svelte
19
+ # or
20
+ yarn add @medyll/idae-slotui-svelte
21
+ # or
22
+ pnpm add @medyll/idae-slotui-svelte
23
+ ```
24
+
25
+ ## Usage
26
+
27
+ Import and use the components in your Svelte application:
28
+
29
+ ```svelte
30
+ <script>
31
+ import { SlotComponent } from '@medyll/idae-slotui-svelte';
32
+ </script>
33
+
34
+ <SlotComponent>
35
+ <div slot="header">Header Content</div>
36
+ <div slot="body">Body Content</div>
37
+ <div slot="footer">Footer Content</div>
38
+ </SlotComponent>
39
+ ```
40
+
41
+ ## Contributing
42
+
43
+ Contributions are welcome! Please refer to the [contribution guidelines](../../CONTRIBUTING.md) for more details.
44
+
45
+ ## License
46
+
47
+ This package is licensed under the MIT License. See the [LICENSE](../../LICENSE) file for more information.
@@ -1,62 +1,62 @@
1
- <script lang="ts">
2
- import ComponentDemo from '../demoer/DemoerComponent.svelte';
3
- import Button from '../../controls/button/Button.svelte';
4
- import Alert from './Alert.svelte';
5
- import Demoer from '../demoer/Demoer.svelte';
6
- import DemoPage from '../demoer/DemoPage.svelte';
7
- import { parameters, componentArgs } from './types.js';
8
-
9
- let code1 = `
10
- <Alert {...activeParams}>
11
- Simple alert with a button
12
- {#snippet topButtonSlot()}
13
- <Button>button</Button>
14
- {/snippet}
15
- </Alert>`;
16
- let code2 = `
17
- <Alert /> `;
18
- </script>
19
-
20
- <ComponentDemo
21
- component="Alert"
22
- cite="Then they were informed, then they were messaged, then they were alerted. Br Jhons, 1752"
23
- >
24
- <DemoPage component="Alert" code={code1}>
25
- <Demoer {parameters} {componentArgs}>
26
- {#snippet children({ activeParams })}
27
- <div class="flex-h flex-wrap flex-align-middle gap-medium">
28
- <Alert {...activeParams}>hi !</Alert>
29
- <Alert {...activeParams}>
30
- Simple alert with a button
31
- {#snippet alertTopButton()}
32
- <Button>button</Button>
33
- {/snippet}
34
- </Alert>
35
- <Alert
36
- {...activeParams}
37
- on:alert:closed={() => {
38
- alert('closed');
39
- }}
40
- >
41
- Alert with button close
42
- {#snippet alertMessage()}
43
- description here here
44
- {/snippet}
45
- {#snippet alertButtonZone()}
46
- <Button data-close>close</Button>
47
- {/snippet}
48
- </Alert>
49
- </div>
50
- {/snippet}
51
- </Demoer>
52
- </DemoPage>
53
- <DemoPage title="Using props" component="Alert" code={code2}>
54
- <Demoer {parameters} {componentArgs}>
55
- {#snippet children({ activeParams })}
56
- <div class="flex-h flex-wrap gap-medium">
57
- <Alert {...activeParams} />
58
- </div>
59
- {/snippet}
60
- </Demoer>
61
- </DemoPage>
62
- </ComponentDemo>
1
+ <script lang="ts">
2
+ import ComponentDemo from '../demoer/DemoerComponent.svelte';
3
+ import Button from '../../controls/button/Button.svelte';
4
+ import Alert from './Alert.svelte';
5
+ import Demoer from '../demoer/Demoer.svelte';
6
+ import DemoPage from '../demoer/DemoPage.svelte';
7
+ import { parameters, componentArgs } from './types.js';
8
+
9
+ let code1 = `
10
+ <Alert {...activeParams}>
11
+ Simple alert with a button
12
+ {#snippet topButtonSlot()}
13
+ <Button>button</Button>
14
+ {/snippet}
15
+ </Alert>`;
16
+ let code2 = `
17
+ <Alert /> `;
18
+ </script>
19
+
20
+ <ComponentDemo
21
+ component="Alert"
22
+ cite="Then they were informed, then they were messaged, then they were alerted. Br Jhons, 1752"
23
+ >
24
+ <DemoPage component="Alert" code={code1}>
25
+ <Demoer {parameters} {componentArgs}>
26
+ {#snippet children({ activeParams })}
27
+ <div class="flex-h flex-wrap flex-align-middle gap-medium">
28
+ <Alert {...activeParams}>hi !</Alert>
29
+ <Alert {...activeParams}>
30
+ Simple alert with a button
31
+ {#snippet alertTopButton()}
32
+ <Button>button</Button>
33
+ {/snippet}
34
+ </Alert>
35
+ <Alert
36
+ {...activeParams}
37
+ on:alert:closed={() => {
38
+ alert('closed');
39
+ }}
40
+ >
41
+ Alert with button close
42
+ {#snippet alertMessage()}
43
+ description here here
44
+ {/snippet}
45
+ {#snippet alertButtonZone()}
46
+ <Button data-close>close</Button>
47
+ {/snippet}
48
+ </Alert>
49
+ </div>
50
+ {/snippet}
51
+ </Demoer>
52
+ </DemoPage>
53
+ <DemoPage title="Using props" component="Alert" code={code2}>
54
+ <Demoer {parameters} {componentArgs}>
55
+ {#snippet children({ activeParams })}
56
+ <div class="flex-h flex-wrap gap-medium">
57
+ <Alert {...activeParams} />
58
+ </div>
59
+ {/snippet}
60
+ </Demoer>
61
+ </DemoPage>
62
+ </ComponentDemo>
@@ -1,123 +1,123 @@
1
- <script module lang="ts">
2
- import type { Snippet } from "svelte";
3
- import type { ElementProps, CommonProps } from '../../types/index.js';
4
-
5
- export interface AlertProps extends CommonProps {
6
- /** alert level */
7
- level?: ElementProps["levels"];
8
- /** message to be shown */
9
- message?: string;
10
- /** make the alert draggable */
11
- draggable?: boolean;
12
- /** show or hide the alert */
13
- isOpen?: boolean;
14
- children?: Snippet;
15
- alertTopButton?: Snippet;
16
- alertMessage?: Snippet;
17
- alertButtonZone?: Snippet;
18
- alertButtonClose?: Snippet;
19
- }
20
- </script>
21
-
22
- <script lang="ts">
23
- import { fade } from 'svelte/transition';
24
- import Divider from '../divider/Divider.svelte';
25
- import Button from '../../controls/button/Button.svelte';
26
- import type { ExpandProps } from '../../types/index.js';
27
- // import type { AlertProps } from './types.js';
28
- import Slotted from '../../utils/slotted/Slotted.svelte';
29
- import IconButton from '../../controls/button/IconButton.svelte';
30
-
31
- let {
32
- class: className,
33
- message,
34
- draggable = false,
35
- level = $bindable<ElementProps['levels']>('info'),
36
- isOpen = $bindable<boolean>(false),
37
- element = $bindable<HTMLDialogElement>(),
38
- children,
39
- alertTopButton,
40
- alertMessage,
41
- alertButtonZone,
42
- alertButtonClose
43
- }: AlertProps = $props();
44
-
45
- export const actions: Record<'open' | 'toggle' | 'close', Function> = {
46
- open,
47
- toggle,
48
- close
49
- };
50
-
51
- const handleClick = (event: Event) => {
52
- if ((event?.target as Element)?.getAttribute('data-close')) {
53
- event.stopPropagation();
54
- actions.close();
55
- }
56
- };
57
-
58
- $effect(() => {
59
- if (element) {
60
- element.addEventListener('click', handleClick, true);
61
- }
62
- return () => {
63
- if (element) {
64
- element.removeEventListener('click', handleClick);
65
- }
66
- };
67
- });
68
-
69
- function open() {
70
- isOpen = true;
71
- }
72
- function toggle() {
73
- isOpen = !isOpen;
74
- }
75
- function close() {
76
- isOpen = false;
77
- }
78
- </script>
79
-
80
- {#if isOpen}
81
- <dialog
82
- open={isOpen}
83
- {draggable}
84
- bind:this={element}
85
- transition:fade|global
86
- class="alert {className}"
87
- >
88
- <article class="dialog-content border-color-scheme-{level}">
89
- <header class="header-bar">
90
- <div class="dot bg-themed-scheme-{level}"></div>
91
- <div class="title">
92
- <Slotted child={children}>{message}</Slotted>
93
- </div>
94
- <Slotted child={alertTopButton} />
95
- <div data-close>
96
- <Slotted child={alertButtonClose}
97
- ><IconButton
98
- icon="window-close"
99
- variant="naked"
100
- onclick={() => {
101
- isOpen = !isOpen;
102
- }}
103
- aria-label="Close"
104
- /></Slotted
105
- >
106
- </div>
107
- </header>
108
- {#if alertMessage}
109
- <Divider />
110
- {@render alertMessage()}
111
- {/if}
112
- {#if alertButtonZone}
113
- <footer class="dialog-footer">
114
- {@render alertButtonZone()}
115
- </footer>
116
- {/if}
117
- </article>
118
- </dialog>
119
- {/if}
120
-
1
+ <script module lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import type { ElementProps, CommonProps } from '../../types/index.js';
4
+
5
+ export interface AlertProps extends CommonProps {
6
+ /** alert level */
7
+ level?: ElementProps["levels"];
8
+ /** message to be shown */
9
+ message?: string;
10
+ /** make the alert draggable */
11
+ draggable?: boolean;
12
+ /** show or hide the alert */
13
+ isOpen?: boolean;
14
+ children?: Snippet;
15
+ alertTopButton?: Snippet;
16
+ alertMessage?: Snippet;
17
+ alertButtonZone?: Snippet;
18
+ alertButtonClose?: Snippet;
19
+ }
20
+ </script>
21
+
22
+ <script lang="ts">
23
+ import { fade } from 'svelte/transition';
24
+ import Divider from '../divider/Divider.svelte';
25
+ import Button from '../../controls/button/Button.svelte';
26
+ import type { ExpandProps } from '../../types/index.js';
27
+ // import type { AlertProps } from './types.js';
28
+ import Slotted from '../../utils/slotted/Slotted.svelte';
29
+ import IconButton from '../../controls/button/IconButton.svelte';
30
+
31
+ let {
32
+ class: className,
33
+ message,
34
+ draggable = false,
35
+ level = $bindable<ElementProps['levels']>('info'),
36
+ isOpen = $bindable<boolean>(false),
37
+ element = $bindable<HTMLDialogElement>(),
38
+ children,
39
+ alertTopButton,
40
+ alertMessage,
41
+ alertButtonZone,
42
+ alertButtonClose
43
+ }: AlertProps = $props();
44
+
45
+ export const actions: Record<'open' | 'toggle' | 'close', Function> = {
46
+ open,
47
+ toggle,
48
+ close
49
+ };
50
+
51
+ const handleClick = (event: Event) => {
52
+ if ((event?.target as Element)?.getAttribute('data-close')) {
53
+ event.stopPropagation();
54
+ actions.close();
55
+ }
56
+ };
57
+
58
+ $effect(() => {
59
+ if (element) {
60
+ element.addEventListener('click', handleClick, true);
61
+ }
62
+ return () => {
63
+ if (element) {
64
+ element.removeEventListener('click', handleClick);
65
+ }
66
+ };
67
+ });
68
+
69
+ function open() {
70
+ isOpen = true;
71
+ }
72
+ function toggle() {
73
+ isOpen = !isOpen;
74
+ }
75
+ function close() {
76
+ isOpen = false;
77
+ }
78
+ </script>
79
+
80
+ {#if isOpen}
81
+ <dialog
82
+ open={isOpen}
83
+ {draggable}
84
+ bind:this={element}
85
+ transition:fade|global
86
+ class="alert {className}"
87
+ >
88
+ <article class="dialog-content border-color-scheme-{level}">
89
+ <header class="header-bar">
90
+ <div class="dot bg-themed-scheme-{level}"></div>
91
+ <div class="title">
92
+ <Slotted child={children}>{message}</Slotted>
93
+ </div>
94
+ <Slotted child={alertTopButton} />
95
+ <div data-close>
96
+ <Slotted child={alertButtonClose}
97
+ ><IconButton
98
+ icon="window-close"
99
+ variant="naked"
100
+ onclick={() => {
101
+ isOpen = !isOpen;
102
+ }}
103
+ aria-label="Close"
104
+ /></Slotted
105
+ >
106
+ </div>
107
+ </header>
108
+ {#if alertMessage}
109
+ <Divider />
110
+ {@render alertMessage()}
111
+ {/if}
112
+ {#if alertButtonZone}
113
+ <footer class="dialog-footer">
114
+ {@render alertButtonZone()}
115
+ </footer>
116
+ {/if}
117
+ </article>
118
+ </dialog>
119
+ {/if}
120
+
121
121
  <style>:root {
122
122
  --alert-radius: var(--sld-radius-small);
123
123
  --alert-color-border: var(--sld-color-border);
@@ -213,4 +213,4 @@ dialog.alert article.dialog-content footer.dialog-footer button {
213
213
  color: white;
214
214
  text-shadow: 0 0 0.125rem #cc0000;
215
215
  background-color: red;
216
- }</style>
216
+ }</style>
@@ -1,93 +1,93 @@
1
- @use "../../styles/slotui-mixins.scss";
2
-
3
- :root {
4
- --alert-radius: var(--sld-radius-small);
5
- --alert-color-border: var(--sld-color-border);
6
- --alert-color-background: var(--sld-color-background);
7
- --alert-elevation: var(--sld-elevation-4);
8
- --alert-pad: var(--sld-pad-small);
9
- --alert-gap: var(--sld-gap-small);
10
- }
11
-
12
- dialog.alert {
13
- &[open="true"] {
14
- display: none;
15
- }
16
- position: relative;
17
- min-width: 350px;
18
- display: inline-block;
19
- border-radius: var(--alert-radius);
20
- border: 1px solid var(--alert-color-border);
21
- background-color: var(--alert-color-background);
22
- box-shadow: var(--alert-elevation);
23
- overflow: hidden;
24
- padding: 0;
25
- article.dialog-content {
26
- padding: var(--alert-pad);
27
- border-bottom: 4px solid var(--alert-color-border);
28
- header.header-bar {
29
- display: flex;
30
- align-items: center;
31
- padding: var(--alert-pad-small);
32
- gap: var(--alert-gap-small, 1rem);
33
- .dot {
34
- display: inline-block;
35
- border: 1px solid var(--alert-color-border);
36
- border-radius: var(--alert-radius);
37
- height: 16px;
38
- width: 4px;
39
- transform: translate(-50%, 0);
40
- }
41
- .title {
42
- flex: 1;
43
- display: flex;
44
- align-items: center;
45
- }
46
- [data-close] {
47
- border-radius: var(--alert-radius);
48
- margin: 0.25rem;
49
- padding: 0.25rem;
50
- }
51
- }
52
- footer.dialog-footer {
53
- display: flex;
54
- justify-content: flex-end;
55
- padding: var(--alert-pad);
56
- border-top: 1px solid var(--alert-color-border);
57
- button {
58
- margin-left: 1rem;
59
- }
60
- }
61
- }
62
- }
63
-
64
- .bg-themed-scheme-discrete {
65
- color: black;
66
- text-shadow: 0 0 0.125rem #b3b3b3;
67
- background-color: #ccc;
68
- }
69
- .bg-themed-scheme-success {
70
- color: white;
71
- text-shadow: 0 0 0.125rem #004d00;
72
- background-color: green;
73
- }
74
- .bg-themed-scheme-info {
75
- color: black;
76
- text-shadow: 0 0 0.125rem #ffd324;
77
- background-color: #ffdd57;
78
- }
79
- .bg-themed-scheme-warning {
80
- color: black;
81
- text-shadow: 0 0 0.125rem #b49104;
82
- background-color: #e6b905;
83
- }
84
- .bg-themed-scheme-alert {
85
- color: black;
86
- text-shadow: 0 0 0.125rem #cc5c00;
87
- background-color: #ff7300;
88
- }
89
- .bg-themed-scheme-error {
90
- color: white;
91
- text-shadow: 0 0 0.125rem #cc0000;
92
- background-color: red;
93
- }
1
+ @use "../../styles/slotui-mixins.scss";
2
+
3
+ :root {
4
+ --alert-radius: var(--sld-radius-small);
5
+ --alert-color-border: var(--sld-color-border);
6
+ --alert-color-background: var(--sld-color-background);
7
+ --alert-elevation: var(--sld-elevation-4);
8
+ --alert-pad: var(--sld-pad-small);
9
+ --alert-gap: var(--sld-gap-small);
10
+ }
11
+
12
+ dialog.alert {
13
+ &[open="true"] {
14
+ display: none;
15
+ }
16
+ position: relative;
17
+ min-width: 350px;
18
+ display: inline-block;
19
+ border-radius: var(--alert-radius);
20
+ border: 1px solid var(--alert-color-border);
21
+ background-color: var(--alert-color-background);
22
+ box-shadow: var(--alert-elevation);
23
+ overflow: hidden;
24
+ padding: 0;
25
+ article.dialog-content {
26
+ padding: var(--alert-pad);
27
+ border-bottom: 4px solid var(--alert-color-border);
28
+ header.header-bar {
29
+ display: flex;
30
+ align-items: center;
31
+ padding: var(--alert-pad-small);
32
+ gap: var(--alert-gap-small, 1rem);
33
+ .dot {
34
+ display: inline-block;
35
+ border: 1px solid var(--alert-color-border);
36
+ border-radius: var(--alert-radius);
37
+ height: 16px;
38
+ width: 4px;
39
+ transform: translate(-50%, 0);
40
+ }
41
+ .title {
42
+ flex: 1;
43
+ display: flex;
44
+ align-items: center;
45
+ }
46
+ [data-close] {
47
+ border-radius: var(--alert-radius);
48
+ margin: 0.25rem;
49
+ padding: 0.25rem;
50
+ }
51
+ }
52
+ footer.dialog-footer {
53
+ display: flex;
54
+ justify-content: flex-end;
55
+ padding: var(--alert-pad);
56
+ border-top: 1px solid var(--alert-color-border);
57
+ button {
58
+ margin-left: 1rem;
59
+ }
60
+ }
61
+ }
62
+ }
63
+
64
+ .bg-themed-scheme-discrete {
65
+ color: black;
66
+ text-shadow: 0 0 0.125rem #b3b3b3;
67
+ background-color: #ccc;
68
+ }
69
+ .bg-themed-scheme-success {
70
+ color: white;
71
+ text-shadow: 0 0 0.125rem #004d00;
72
+ background-color: green;
73
+ }
74
+ .bg-themed-scheme-info {
75
+ color: black;
76
+ text-shadow: 0 0 0.125rem #ffd324;
77
+ background-color: #ffdd57;
78
+ }
79
+ .bg-themed-scheme-warning {
80
+ color: black;
81
+ text-shadow: 0 0 0.125rem #b49104;
82
+ background-color: #e6b905;
83
+ }
84
+ .bg-themed-scheme-alert {
85
+ color: black;
86
+ text-shadow: 0 0 0.125rem #cc5c00;
87
+ background-color: #ff7300;
88
+ }
89
+ .bg-themed-scheme-error {
90
+ color: white;
91
+ text-shadow: 0 0 0.125rem #cc0000;
92
+ background-color: red;
93
+ }