@medyll/idae-slotui-svelte 0.120.0 → 0.122.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 (208) 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.svelte.d.ts +1 -1
  42. package/dist/base/icon/icon.scss +17 -17
  43. package/dist/base/paper/Paper.demo.svelte +31 -31
  44. package/dist/base/paper/Paper.svelte +20 -20
  45. package/dist/base/paper/paper.scss +15 -15
  46. package/dist/base/titleBar/TitleBar.demo.svelte +30 -30
  47. package/dist/base/titleBar/TitleBar.svelte +40 -40
  48. package/dist/base/titleBar/title-bar.scss +29 -29
  49. package/dist/controls/autocomplete/AutoComplete.demo.svelte +88 -88
  50. package/dist/controls/autocomplete/AutoComplete.svelte +152 -152
  51. package/dist/controls/autocomplete/auto-complete.scss +15 -15
  52. package/dist/controls/button/Button.demo.svelte +165 -165
  53. package/dist/controls/button/Button.svelte +95 -95
  54. package/dist/controls/button/Button.svelte.d.ts +1 -1
  55. package/dist/controls/button/ButtonAction.svelte +55 -55
  56. package/dist/controls/button/ButtonMenu.svelte +55 -55
  57. package/dist/controls/button/IconButton.svelte +45 -45
  58. package/dist/controls/button/button-action.scss +8 -8
  59. package/dist/controls/button/button-menu.scss +36 -36
  60. package/dist/controls/button/button.scss +293 -293
  61. package/dist/controls/checkbox/Checkbox.demo.svelte +29 -29
  62. package/dist/controls/checkbox/Checkbox.svelte +59 -59
  63. package/dist/controls/checkbox/checkbox.scss +115 -115
  64. package/dist/controls/confirm/Confirm.demo.svelte +60 -60
  65. package/dist/controls/confirm/Confirm.preview.svelte +14 -14
  66. package/dist/controls/confirm/Confirm.svelte +156 -156
  67. package/dist/controls/confirm/confirm.scss +12 -12
  68. package/dist/controls/inplaceedit/InPlaceEdit.demo.svelte +41 -41
  69. package/dist/controls/inplaceedit/InPlaceEdit.svelte +109 -109
  70. package/dist/controls/progress/Progress.demo.svelte +30 -30
  71. package/dist/controls/progress/Progress.svelte +26 -26
  72. package/dist/controls/progress/progress.scss +23 -23
  73. package/dist/controls/rating/Rating.demo.svelte +45 -45
  74. package/dist/controls/rating/Rating.svelte +44 -44
  75. package/dist/controls/rating/Rating.svelte.d.ts +1 -1
  76. package/dist/controls/rating/rating.scss +9 -9
  77. package/dist/controls/select/Select.demo.svelte +101 -101
  78. package/dist/controls/select/Select.svelte +125 -125
  79. package/dist/controls/select/select.scss +13 -13
  80. package/dist/controls/slider/Slider.demo.svelte +34 -34
  81. package/dist/controls/slider/Slider.svelte +153 -153
  82. package/dist/controls/slider/slider.scss +51 -51
  83. package/dist/controls/stepper/Stepper.demo.svelte +32 -32
  84. package/dist/controls/stepper/Stepper.svelte +30 -30
  85. package/dist/controls/stepper/stepper.scss +23 -23
  86. package/dist/controls/switch/Switch.demo.svelte +61 -61
  87. package/dist/controls/switch/Switch.svelte +45 -45
  88. package/dist/controls/switch/switch.scss +73 -73
  89. package/dist/controls/textfield/TextField.demo.svelte +79 -79
  90. package/dist/controls/textfield/TextField.svelte +86 -86
  91. package/dist/controls/textfield/TextField.svelte.d.ts +1 -1
  92. package/dist/controls/textfield/textfield.scss +68 -68
  93. package/dist/csss/csss.scss +10 -10
  94. package/dist/data/dataList/DataList.demo.svelte +151 -151
  95. package/dist/data/dataList/DataList.preview.svelte +23 -23
  96. package/dist/data/dataList/DataList.svelte +233 -233
  97. package/dist/data/dataList/DataListCell.svelte +212 -212
  98. package/dist/data/dataList/DataListHead.svelte +75 -75
  99. package/dist/data/dataList/DataListRow.svelte +93 -93
  100. package/dist/data/dataList/datalist.scss +157 -157
  101. package/dist/data/finder/Finder.demo.svelte +55 -55
  102. package/dist/data/finder/Finder.svelte +166 -166
  103. package/dist/data/finder/finder.scss +14 -14
  104. package/dist/data/grouper/Grouper.demo.svelte +36 -36
  105. package/dist/data/grouper/Grouper.svelte +85 -85
  106. package/dist/data/jsoner/Jsoner.svelte +40 -40
  107. package/dist/data/list/List.svelte +16 -16
  108. package/dist/data/list/ListItem.svelte +10 -10
  109. package/dist/data/list/ListTitle.svelte +8 -8
  110. package/dist/data/loader/Loader.demo.svelte +95 -95
  111. package/dist/data/loader/Loader.preview.svelte +7 -7
  112. package/dist/data/loader/Loader.svelte +99 -99
  113. package/dist/data/loader/loader.scss +50 -50
  114. package/dist/data/sorter/Sorter.demo.svelte +62 -62
  115. package/dist/data/sorter/Sorter.svelte +80 -80
  116. package/dist/data/sorter/Sorterer.svelte +27 -27
  117. package/dist/data/sorter/sorterer.scss +11 -11
  118. package/dist/index.d.ts +46 -47
  119. package/dist/index.js +46 -47
  120. package/dist/navigation/drawer/Drawer.demo.svelte +52 -52
  121. package/dist/navigation/drawer/Drawer.svelte +163 -163
  122. package/dist/navigation/drawer/drawer.scss +69 -69
  123. package/dist/navigation/tabs/Tabs.demo.svelte +83 -83
  124. package/dist/navigation/tabs/Tabs.preview.svelte +22 -22
  125. package/dist/navigation/tabs/Tabs.svelte +158 -158
  126. package/dist/navigation/tabs/tabs.scss +92 -92
  127. package/dist/slotui-css/slotui-css.css +288 -288
  128. package/dist/slotui-css/slotui-min-css.css +288 -288
  129. package/dist/styles/slotui-mixins.scss +168 -168
  130. package/dist/styles/slotui-presets.scss +56 -56
  131. package/dist/styles/slotuisheet/SlotuiSheet.svelte +36 -36
  132. package/dist/styles/slotuisheet/SlotyuiSheet.demo.svelte +28 -28
  133. package/dist/styles/slotuisheet/sheetConfig.scss +7 -7
  134. package/dist/styles/slotuisheet/slotui-sheet.scss +192 -192
  135. package/dist/styles/slotuisheet/stylesheet-container.scss +147 -147
  136. package/dist/styles/slotuisheet/stylesheet.scss +156 -156
  137. package/dist/types/slotui-ambient.d.ts +27 -27
  138. package/dist/ui/bootstrapp/BootStrApp.svelte +92 -92
  139. package/dist/ui/chromeFrame/ChromeFrame.svelte +43 -43
  140. package/dist/ui/chromeFrame/ChromeFrameButtonList.svelte +33 -33
  141. package/dist/ui/chromeFrame/ChromeFrameList.svelte +106 -106
  142. package/dist/ui/chromeFrame/chrome-frame.scss +34 -34
  143. package/dist/ui/frame/Frame.demo.svelte +48 -48
  144. package/dist/ui/frame/Frame.svelte +90 -90
  145. package/dist/ui/frame/frame.scss +46 -46
  146. package/dist/ui/login/Login.demo.svelte +62 -62
  147. package/dist/ui/login/Login.svelte +102 -102
  148. package/dist/ui/marquee/Marquee.demo.svelte +33 -33
  149. package/dist/ui/marquee/Marquee.svelte +97 -97
  150. package/dist/ui/marquee/marquee.scss +34 -34
  151. package/dist/ui/menu/Menu.svelte +9 -9
  152. package/dist/ui/menu/MenuItem.svelte +9 -9
  153. package/dist/ui/menu/MenuTitle.svelte +10 -10
  154. package/dist/ui/menu/menu.scss +61 -61
  155. package/dist/ui/menuList/MenuList.demo.svelte +73 -73
  156. package/dist/ui/menuList/MenuList.svelte +143 -143
  157. package/dist/ui/menuList/MenuListItem.svelte +134 -134
  158. package/dist/ui/menuList/MenuListTitle.svelte +10 -10
  159. package/dist/ui/menuList/menu-list.scss +120 -120
  160. package/dist/ui/panel/Panel.demo.svelte +169 -169
  161. package/dist/ui/panel/Panel.svelte +96 -96
  162. package/dist/ui/panel/PanelGrid.svelte +62 -62
  163. package/dist/ui/panel/PanelSlide.svelte +156 -156
  164. package/dist/ui/panel/Paneler.svelte +63 -63
  165. package/dist/ui/panel/panel.scss +32 -32
  166. package/dist/ui/popper/Popper.demo.svelte +92 -92
  167. package/dist/ui/popper/Popper.svelte +160 -160
  168. package/dist/ui/popper/popper.scss +108 -108
  169. package/dist/ui/preview/Preview.svelte +41 -41
  170. package/dist/ui/serviceBox/ServiceBox.svelte +24 -24
  171. package/dist/ui/startMenu/BootMenu.svelte +102 -102
  172. package/dist/ui/startMenu/boot-menu.scss +86 -86
  173. package/dist/ui/taskbar/TaskBarContent.svelte +20 -20
  174. package/dist/ui/taskbar/Taskbar.svelte +26 -26
  175. package/dist/ui/taskbar/taskbar.scss +28 -28
  176. package/dist/ui/themeswitcher/ThemeSwitcher.svelte +18 -18
  177. package/dist/ui/toast/Toast.demo.svelte +19 -19
  178. package/dist/ui/toast/Toast.svelte +60 -60
  179. package/dist/ui/toast/Toaster.svelte +18 -18
  180. package/dist/ui/toggleBar/ToggleBar.demo.svelte +114 -114
  181. package/dist/ui/toggleBar/ToggleBar.svelte +58 -58
  182. package/dist/ui/toggleBar/ToggleBar.svelte.d.ts +1 -1
  183. package/dist/ui/toggleBar/toggle-bar.scss +45 -45
  184. package/dist/ui/toolBar/ToolBar.demo.svelte +98 -98
  185. package/dist/ui/toolBar/ToolBar.svelte +30 -30
  186. package/dist/ui/toolBar/toolbar.scss +32 -32
  187. package/dist/ui/tree/Tree.demo.svelte +84 -84
  188. package/dist/ui/tree/Tree.preview.svelte +19 -19
  189. package/dist/ui/tree/Tree.svelte +182 -182
  190. package/dist/ui/tree/tree.scss +38 -38
  191. package/dist/ui/window/Window.demo.svelte +111 -111
  192. package/dist/ui/window/Window.svelte +177 -177
  193. package/dist/ui/window/window.scss +66 -66
  194. package/dist/utils/content/Content.svelte +78 -78
  195. package/dist/utils/contextRooter/ContextRooter.demo.svelte +33 -33
  196. package/dist/utils/contextRooter/ContextRooter.svelte +6 -6
  197. package/dist/utils/css/Css.demo.svelte +5 -5
  198. package/dist/utils/css/Css.svelte +64 -64
  199. package/dist/utils/effects/transitions.js +6 -6
  200. package/dist/utils/looper/Looper.demo.svelte +36 -36
  201. package/dist/utils/looper/Looper.svelte +47 -47
  202. package/dist/utils/slotted/Slotted.svelte +21 -21
  203. package/dist/utils/stylesheet/StyleSheet.demo.svelte +28 -28
  204. package/dist/utils/stylesheet/StyleSheet.svelte +30 -30
  205. package/dist/utils/stylesheet/containerConfig.scss +7 -7
  206. package/dist/utils/stylesheet/stylesheet.scss +147 -147
  207. package/dist/utils/uses/sx4u/sx4uPreprocess.js +34 -34
  208. package/package.json +4 -4
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
+ }