@medyll/idae-slotui-svelte 0.26.0 → 0.28.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 (187) hide show
  1. package/dist/base/alert/Alert.demo.svelte +10 -8
  2. package/dist/base/alert/Alert.svelte +56 -48
  3. package/dist/base/alert/types.d.ts +4 -4
  4. package/dist/base/alert/types.js +11 -11
  5. package/dist/base/avatar/Avatar.demo.svelte +12 -8
  6. package/dist/base/avatar/Avatar.preview.svelte +3 -2
  7. package/dist/base/avatar/Avatar.svelte +24 -19
  8. package/dist/base/avatar/types.d.ts +5 -5
  9. package/dist/base/avatar/types.js +9 -9
  10. package/dist/base/backdrop/Backdrop.demo.svelte +13 -9
  11. package/dist/base/backdrop/Backdrop.svelte +45 -37
  12. package/dist/base/backdrop/types.d.ts +7 -7
  13. package/dist/base/backdrop/types.js +10 -10
  14. package/dist/base/badge/Badge.svelte +22 -18
  15. package/dist/base/box/Box.demo.svelte +12 -9
  16. package/dist/base/box/Box.svelte +44 -36
  17. package/dist/base/box/types.d.ts +3 -3
  18. package/dist/base/box/types.js +16 -16
  19. package/dist/base/breadCrumb/BreadCrumb.svelte +12 -8
  20. package/dist/base/cartouche/Cartouche.demo.svelte +13 -9
  21. package/dist/base/cartouche/Cartouche.svelte +50 -43
  22. package/dist/base/cartouche/types.d.ts +7 -7
  23. package/dist/base/cartouche/types.js +20 -20
  24. package/dist/base/chipper/Chipper.demo.svelte +14 -10
  25. package/dist/base/chipper/Chipper.svelte +19 -14
  26. package/dist/base/chipper/types.d.ts +5 -5
  27. package/dist/base/chipper/types.js +10 -10
  28. package/dist/base/columner/Column.svelte +39 -31
  29. package/dist/base/columner/Columner.demo.svelte +4 -3
  30. package/dist/base/columner/Columner.svelte +12 -5
  31. package/dist/base/contentSwitcher/ContentSwitcher.demo.svelte +11 -8
  32. package/dist/base/contentSwitcher/ContentSwitcher.svelte +40 -30
  33. package/dist/base/contentSwitcher/types.d.ts +3 -3
  34. package/dist/base/contentSwitcher/types.js +6 -6
  35. package/dist/base/debug/Debug.svelte +14 -11
  36. package/dist/base/demoer/DemoPage.svelte +18 -12
  37. package/dist/base/demoer/Demoer.svelte +20 -16
  38. package/dist/base/demoer/DemoerCode.svelte +28 -6
  39. package/dist/base/demoer/DemoerComponent.svelte +33 -13
  40. package/dist/base/demoer/demoer.utils.d.ts +2 -1
  41. package/dist/base/demoer/demoer.utils.js +4 -1
  42. package/dist/base/divider/Divider.demo.svelte +12 -6
  43. package/dist/base/divider/Divider.svelte +58 -41
  44. package/dist/base/divider/types.d.ts +5 -5
  45. package/dist/base/divider/types.js +10 -10
  46. package/dist/base/icon/Icon.demo.svelte +8 -5
  47. package/dist/base/icon/Icon.svelte +34 -27
  48. package/dist/base/icon/types.d.ts +4 -4
  49. package/dist/base/icon/types.js +9 -9
  50. package/dist/base/paper/Paper.demo.svelte +12 -9
  51. package/dist/base/paper/Paper.svelte +13 -9
  52. package/dist/base/paper/type.d.ts +3 -3
  53. package/dist/base/paper/type.js +4 -4
  54. package/dist/base/titleBar/TitleBar.demo.svelte +11 -9
  55. package/dist/base/titleBar/TitleBar.svelte +16 -12
  56. package/dist/base/titleBar/types.d.ts +4 -4
  57. package/dist/base/titleBar/types.js +8 -8
  58. package/dist/controls/autocomplete/AutoComplete.demo.svelte +21 -16
  59. package/dist/controls/autocomplete/AutoComplete.svelte +81 -62
  60. package/dist/controls/button/Button.demo.svelte +71 -45
  61. package/dist/controls/button/Button.svelte +130 -155
  62. package/dist/controls/button/Button.svelte.d.ts +2 -27
  63. package/dist/controls/button/ButtonAction.svelte +122 -133
  64. package/dist/controls/button/ButtonAction.svelte.d.ts +3 -2
  65. package/dist/controls/button/ButtonMenu.svelte +22 -16
  66. package/dist/controls/button/IconButton.svelte +40 -14
  67. package/dist/controls/button/button-action.scss +1 -1
  68. package/dist/controls/button/button.scss +22 -47
  69. package/dist/controls/button/types.d.ts +19 -16
  70. package/dist/controls/button/types.js +26 -24
  71. package/dist/controls/checkbox/Checkbox.demo.svelte +13 -9
  72. package/dist/controls/checkbox/Checkbox.svelte +18 -14
  73. package/dist/controls/confirm/Confirm.demo.svelte +12 -8
  74. package/dist/controls/confirm/Confirm.preview.svelte +3 -2
  75. package/dist/controls/confirm/Confirm.svelte +87 -64
  76. package/dist/controls/inplaceedit/InPlaceEdit.demo.svelte +12 -8
  77. package/dist/controls/inplaceedit/InPlaceEdit.svelte +74 -55
  78. package/dist/controls/progress/Progress.demo.svelte +14 -9
  79. package/dist/controls/progress/Progress.svelte +19 -13
  80. package/dist/controls/rating/Rating.demo.svelte +11 -8
  81. package/dist/controls/rating/Rating.svelte +21 -16
  82. package/dist/controls/select/Select.demo.svelte +46 -37
  83. package/dist/controls/select/Select.svelte +76 -29
  84. package/dist/controls/slider/Slider.demo.svelte +14 -7
  85. package/dist/controls/slider/Slider.svelte +104 -89
  86. package/dist/controls/stepper/Stepper.demo.svelte +9 -6
  87. package/dist/controls/stepper/Stepper.svelte +19 -13
  88. package/dist/controls/switch/Switch.demo.svelte +31 -24
  89. package/dist/controls/switch/Switch.svelte +20 -15
  90. package/dist/controls/textfield/TextField.demo.svelte +28 -23
  91. package/dist/controls/textfield/TextField.svelte +42 -34
  92. package/dist/data/dataList/DataList.demo.svelte +44 -37
  93. package/dist/data/dataList/DataList.preview.svelte +8 -6
  94. package/dist/data/dataList/DataList.svelte +139 -115
  95. package/dist/data/dataList/DataList.svelte.d.ts +7 -8
  96. package/dist/data/dataList/DataListCell.svelte +146 -96
  97. package/dist/data/dataList/DataListHead.svelte +52 -36
  98. package/dist/data/dataList/DataListRow.svelte +57 -43
  99. package/dist/data/dataList/types.d.ts +16 -14
  100. package/dist/data/dataList/types.js +33 -33
  101. package/dist/data/finder/Finder.demo.svelte +15 -11
  102. package/dist/data/finder/Finder.svelte +64 -46
  103. package/dist/data/grouper/Grouper.demo.svelte +14 -8
  104. package/dist/data/grouper/Grouper.svelte +62 -50
  105. package/dist/data/jsoner/Jsoner.svelte +14 -10
  106. package/dist/data/list/List.svelte +6 -2
  107. package/dist/data/list/ListItem.svelte +5 -2
  108. package/dist/data/list/ListTitle.svelte +5 -2
  109. package/dist/data/loader/Loader.demo.svelte +16 -8
  110. package/dist/data/loader/Loader.preview.svelte +2 -1
  111. package/dist/data/loader/Loader.svelte +56 -49
  112. package/dist/data/sorter/Sorter.demo.svelte +20 -17
  113. package/dist/data/sorter/Sorter.svelte +40 -33
  114. package/dist/data/sorter/Sorterer.svelte +17 -15
  115. package/dist/index.d.ts +4 -4
  116. package/dist/index.js +4 -4
  117. package/dist/navigation/drawer/Drawer.demo.svelte +11 -7
  118. package/dist/navigation/drawer/Drawer.svelte +92 -81
  119. package/dist/navigation/tabs/Tabs.demo.svelte +23 -18
  120. package/dist/navigation/tabs/Tabs.preview.svelte +17 -14
  121. package/dist/navigation/tabs/Tabs.svelte +73 -61
  122. package/dist/slotui-css/button-action.css +1 -0
  123. package/dist/slotui-css/button-action.min.css +1 -0
  124. package/dist/slotui-css/button.css +83 -108
  125. package/dist/slotui-css/button.min.css +83 -108
  126. package/dist/slotui-css/slotui-combined.css +111 -135
  127. package/dist/styles/slotuisheet/SlotuiSheet.svelte +14 -11
  128. package/dist/styles/slotuisheet/SlotyuiSheet.demo.svelte +21 -17
  129. package/dist/ui/bootstrapp/BootStrApp.svelte +21 -15
  130. package/dist/ui/chromeFrame/ChromeFrame.svelte +19 -10
  131. package/dist/ui/chromeFrame/ChromeFrameButtonList.svelte +6 -4
  132. package/dist/ui/chromeFrame/ChromeFrameList.svelte +97 -58
  133. package/dist/ui/frame/Frame.demo.svelte +6 -4
  134. package/dist/ui/frame/Frame.svelte +51 -44
  135. package/dist/ui/frame/types.d.ts +5 -4
  136. package/dist/ui/frame/types.js +6 -5
  137. package/dist/ui/login/Login.demo.svelte +29 -21
  138. package/dist/ui/login/Login.svelte +49 -41
  139. package/dist/ui/marquee/Marque.demo.svelte +9 -6
  140. package/dist/ui/marquee/Marquee.svelte +69 -27
  141. package/dist/ui/menu/Menu.svelte +6 -2
  142. package/dist/ui/menu/MenuItem.svelte +6 -2
  143. package/dist/ui/menu/MenuTitle.svelte +5 -2
  144. package/dist/ui/menuList/MenuList.demo.svelte +14 -9
  145. package/dist/ui/menuList/MenuList.svelte +109 -96
  146. package/dist/ui/menuList/MenuListItem.svelte +85 -70
  147. package/dist/ui/menuList/MenuListTitle.svelte +5 -2
  148. package/dist/ui/panel/Panel.demo.svelte +37 -28
  149. package/dist/ui/panel/Panel.svelte +44 -34
  150. package/dist/ui/panel/PanelGrid.svelte +18 -14
  151. package/dist/ui/panel/PanelSlide.svelte +121 -79
  152. package/dist/ui/panel/Paneler.svelte +51 -24
  153. package/dist/ui/popper/Popper.demo.svelte +33 -25
  154. package/dist/ui/popper/Popper.svelte +105 -87
  155. package/dist/ui/popper/usePopper.d.ts +2 -2
  156. package/dist/ui/popper/usePopper.js +6 -6
  157. package/dist/ui/preview/Preview.svelte +18 -14
  158. package/dist/ui/serviceBox/ServiceBox.svelte +8 -6
  159. package/dist/ui/startMenu/BootMenu.svelte +32 -24
  160. package/dist/ui/taskbar/TaskBarContent.svelte +8 -7
  161. package/dist/ui/taskbar/Taskbar.svelte +15 -10
  162. package/dist/ui/themeswitcher/ThemeSwitcher.svelte +9 -7
  163. package/dist/ui/toast/Toast.demo.svelte +15 -10
  164. package/dist/ui/toast/Toast.svelte +57 -45
  165. package/dist/ui/toast/Toaster.svelte +4 -2
  166. package/dist/ui/toggleBar/ToggleBar.demo.svelte +69 -60
  167. package/dist/ui/toggleBar/ToggleBar.svelte +27 -23
  168. package/dist/ui/toolBar/ToolBar.demo.svelte +48 -38
  169. package/dist/ui/toolBar/ToolBar.svelte +16 -11
  170. package/dist/ui/tree/Tree.demo.svelte +53 -42
  171. package/dist/ui/tree/Tree.preview.svelte +14 -11
  172. package/dist/ui/tree/Tree.svelte +120 -67
  173. package/dist/ui/window/Window.demo.svelte +27 -19
  174. package/dist/ui/window/Window.svelte +95 -85
  175. package/dist/utils/content/Content.svelte +49 -43
  176. package/dist/utils/contextRooter/ContextRooter.demo.svelte +12 -8
  177. package/dist/utils/contextRooter/ContextRooter.svelte +5 -3
  178. package/dist/utils/css/Css.demo.svelte +2 -1
  179. package/dist/utils/css/Css.svelte +2 -1
  180. package/dist/utils/looper/Looper.demo.svelte +8 -6
  181. package/dist/utils/looper/Looper.svelte +27 -22
  182. package/dist/utils/slotted/Slotted.svelte +10 -1
  183. package/dist/utils/stylesheet/StyleSheet.demo.svelte +21 -17
  184. package/dist/utils/stylesheet/StyleSheet.svelte +14 -11
  185. package/package.json +3 -3
  186. package/dist/base/cartouche/Cartouche.preview.svelte +0 -25
  187. package/dist/base/cartouche/Cartouche.preview.svelte.d.ts +0 -27
@@ -1,99 +1,112 @@
1
- <script lang="ts" generics="T= Data">import { navigation } from "../../utils/uses/navigation.js";
2
- import { setContext } from "svelte";
3
- import MenuListItem from "./MenuListItem.svelte";
4
- import { tallPreset, widthPreset } from "../../types/index.js";
5
- import Slotted from "../../utils/slotted/Slotted.svelte";
6
- import Looper from "../../utils/looper/Looper.svelte";
7
- export const actions = {
8
- navigate(e) {
9
- element?.dispatchEvent(new CustomEvent("menu:navigate", { detail: e }));
10
- },
11
- gotoIndex: (idx) => {
12
- if (element && idx > -1) {
13
- element.dispatchEvent(new CustomEvent("menu:gotoIndex", { detail: { index: idx } }));
14
- selectedIndex = idx;
15
- if (menuStore) menuStore.selectedIndex = idx;
16
- const target = element.querySelector("[aria-selected=true]");
17
- if (target) {
18
- scrollToElement(target);
19
- }
20
- }
21
- }
22
- };
23
- let {
24
- class: className = "",
25
- tall = tallPreset.small,
26
- width = widthPreset.full,
27
- style,
28
- selectorField,
29
- role = "menu",
30
- grid,
31
- showLastOnSelected = true,
32
- presentationField,
33
- onclick,
34
- data = $bindable(),
35
- selectedData = $bindable(),
36
- selectedIndex = $bindable(),
37
- element = $bindable(),
38
- menuListItems = $bindable(),
39
- menuListItemProps = $bindable(),
40
- children,
41
- menuListItem,
42
- listItemBottom,
43
- ...rest
44
- } = $props();
45
- menuListItemProps = {
46
- tall,
47
- width,
48
- selectorField,
49
- presentationField,
50
- ...menuListItemProps
51
- };
52
- let defaultStoreValues = {
53
- menuListItems,
54
- menuItemsInstances: [],
55
- tall,
56
- width,
57
- data,
58
- selectorField,
59
- selectedIndex,
60
- actions,
61
- presentationField,
62
- ...menuListItemProps
63
- };
64
- let menuStore = $state(defaultStoreValues);
65
- setContext("menuStateContext", menuStore);
66
- $effect(() => {
67
- menuStore.selectedIndex = selectedIndex;
68
- });
69
- $effect(() => {
70
- menuStore.tall = tall;
71
- });
72
- $effect(() => {
73
- if (element) {
74
- element.addEventListener("menu:item:clicked", onMenuItemClick);
75
- element.addEventListener("click", () => {
76
- element?.focus();
77
- });
78
- element.addEventListener("menu:onnavigate", (event) => {
79
- if (event?.detail?.selectedIndex) selectedIndex = event.detail.selectedIndex;
80
- });
81
- }
82
- });
83
- function onMenuItemClick(e) {
84
- if (onclick) onclick(e.detail, 2);
85
- }
86
- function scrollToElement(target) {
87
- if (target) {
88
- const tD = target.getBoundingClientRect();
89
- const sD = element?.getBoundingClientRect();
90
- if (sD) {
91
- if (tD.top - 10 <= sD.top || tD.bottom >= sD.bottom) {
92
- target.scrollIntoView({ behavior: "smooth", block: "center" });
93
- }
94
- }
95
- }
96
- }
1
+ <script lang="ts" generics="T= Data">
2
+ import { navigation } from '../../utils/uses/navigation.js';
3
+
4
+ import { setContext } from 'svelte';
5
+ import type { MenuListProps } from './types.js';
6
+ import MenuListItem from './MenuListItem.svelte';
7
+ import { tallPreset, widthPreset, type Data, type ExpandProps } from '../../types/index.js';
8
+ import Slotted from '../../utils/slotted/Slotted.svelte';
9
+ import Looper from '../../utils/looper/Looper.svelte';
10
+
11
+ export const actions = {
12
+ navigate(e: KeyboardEvent) {
13
+ element?.dispatchEvent(new CustomEvent('menu:navigate', { detail: e }));
14
+ },
15
+ gotoIndex: (idx: number) => {
16
+ if (element && idx > -1) {
17
+ element.dispatchEvent(new CustomEvent('menu:gotoIndex', { detail: { index: idx } }));
18
+ selectedIndex = idx;
19
+ if (menuStore) menuStore.selectedIndex = idx;
20
+ const target = element.querySelector('[aria-selected=true]');
21
+ if (target) {
22
+ scrollToElement(target as HTMLElement);
23
+ }
24
+ }
25
+ }
26
+ };
27
+ let {
28
+ class: className = '',
29
+ tall = tallPreset.small,
30
+ width = widthPreset.full,
31
+ style,
32
+ selectorField,
33
+ role = 'menu',
34
+ grid,
35
+ showLastOnSelected = true,
36
+ presentationField,
37
+ onclick,
38
+ data = $bindable(),
39
+ selectedData = $bindable(),
40
+ selectedIndex = $bindable(),
41
+ element = $bindable(),
42
+ menuListItems = $bindable(),
43
+ menuListItemProps = $bindable(),
44
+ children,
45
+ menuListItem,
46
+ listItemBottom,
47
+ ...rest
48
+ }: MenuListProps = $props();
49
+
50
+ menuListItemProps = {
51
+ tall,
52
+ width,
53
+ selectorField,
54
+ presentationField,
55
+ ...menuListItemProps
56
+ };
57
+
58
+ let defaultStoreValues = {
59
+ menuListItems,
60
+ menuItemsInstances: [],
61
+ tall,
62
+ width,
63
+ data,
64
+ selectorField,
65
+ selectedIndex,
66
+ actions,
67
+ presentationField,
68
+ ...menuListItemProps
69
+ };
70
+
71
+ let menuStore = $state(defaultStoreValues);
72
+ setContext('menuStateContext', menuStore);
73
+
74
+ $effect(() => {
75
+ menuStore.selectedIndex = selectedIndex;
76
+ });
77
+ $effect(() => {
78
+ menuStore.tall = tall;
79
+ });
80
+ $effect(() => {
81
+ if (element) {
82
+ element.addEventListener<any>('menu:item:clicked', onMenuItemClick);
83
+
84
+ element.addEventListener('click', () => {
85
+ element?.focus();
86
+ });
87
+ element.addEventListener('menu:onnavigate', ((
88
+ event: CustomEvent<{ selectedIndex: number }>
89
+ ) => {
90
+ if (event?.detail?.selectedIndex) selectedIndex = event.detail.selectedIndex;
91
+ }) as EventListener);
92
+ }
93
+ });
94
+
95
+ function onMenuItemClick(e: CustomEvent<any>) {
96
+ if (onclick) onclick(e.detail, 2);
97
+ }
98
+
99
+ function scrollToElement(target: HTMLElement) {
100
+ if (target) {
101
+ const tD = target.getBoundingClientRect();
102
+ const sD = element?.getBoundingClientRect();
103
+ if (sD) {
104
+ if (tD.top - 10 <= sD.top || tD.bottom >= sD.bottom) {
105
+ target.scrollIntoView({ behavior: 'smooth', block: 'center' });
106
+ }
107
+ }
108
+ }
109
+ }
97
110
  </script>
98
111
 
99
112
  <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
@@ -1,73 +1,88 @@
1
- <script lang="ts" generics="T= Data">import { getContext } from "svelte";
2
- import Divider from "../../base/divider/Divider.svelte";
3
- import Icon from "../../base/icon/Icon.svelte";
4
- import Slotted from "../../utils/slotted/Slotted.svelte";
5
- let menuStateContext = getContext("menuStateContext");
6
- let {
7
- class: className = "",
8
- text,
9
- action = void 0,
10
- iconFirst = {},
11
- iconLast = {},
12
- icon,
13
- iconColor = void 0,
14
- iconSize = "small",
15
- divider = false,
16
- dividerBefore = false,
17
- presentationField,
18
- href,
19
- selectable = true,
20
- data = $bindable(),
21
- selected = $bindable(),
22
- element = $bindable(),
23
- onMenuItemClick,
24
- onclick,
25
- itemIndex = void 0,
26
- tall = menuStateContext?.tall,
27
- width = menuStateContext?.width,
28
- children,
29
- menuItemFirst,
30
- menuItemLast,
31
- wrap,
32
- role = "menuitem",
33
- tag = "li",
34
- ...rest
35
- } = $props();
36
- $effect(() => {
37
- if (icon ?? iconFirst?.icon ?? menuItemFirst) {
38
- menuStateContext.hasIcon = true;
39
- }
40
- });
41
- $effect(() => {
42
- if (selected) {
43
- menuStateContext.selectedIndex = itemIndex;
44
- }
45
- element?.addEventListener("click", handleClick);
46
- });
47
- $effect(() => {
48
- if (itemIndex === void 0 && element?.parentElement) {
49
- itemIndex = [
50
- ...element?.parentElement?.querySelectorAll(".menu-list-item:not(.menu-list-title)")
51
- ].indexOf(element);
52
- }
53
- });
54
- const handleClick = (event) => {
55
- event.stopPropagation();
56
- event.stopImmediatePropagation;
57
- const cevent = new CustomEvent("menu:item:clicked", { detail: data, bubbles: true });
58
- if (element) element.dispatchEvent(cevent);
59
- if (selectable) setSelected();
60
- if (onMenuItemClick) onMenuItemClick(data);
61
- if (onclick) {
62
- onclick(data, itemIndex);
63
- } else if (menuStateContext?.onclick) {
64
- menuStateContext?.onclick(data, itemIndex);
65
- }
66
- };
67
- const setSelected = () => {
68
- menuStateContext.selectedIndex = itemIndex;
69
- menuStateContext.selectedData = data;
70
- };
1
+ <script lang="ts" generics="T= Data">
2
+ import { getContext } from 'svelte';
3
+
4
+ import Divider from '../../base/divider/Divider.svelte';
5
+ import Icon from '../../base/icon/Icon.svelte';
6
+ import type { MenuListItemProps, MenuListProps } from './types.js';
7
+ import type { Data, IconObj } from '../../types/index.js';
8
+ import Slotted from '../../utils/slotted/Slotted.svelte';
9
+
10
+ let menuStateContext = getContext<MenuListProps>('menuStateContext');
11
+
12
+ let {
13
+ class: className = '',
14
+ text,
15
+ action = undefined,
16
+ iconFirst = {} as IconObj,
17
+ iconLast = {} as IconObj,
18
+ icon,
19
+ iconColor = undefined,
20
+ iconSize = 'small',
21
+ divider = false,
22
+ dividerBefore = false,
23
+ presentationField,
24
+ href,
25
+ selectable = true,
26
+ data = $bindable(),
27
+ selected = $bindable(),
28
+ element = $bindable(),
29
+ onMenuItemClick,
30
+ onclick,
31
+ itemIndex = undefined,
32
+ tall = menuStateContext?.tall,
33
+ width = menuStateContext?.width,
34
+ children,
35
+ menuItemFirst,
36
+ menuItemLast,
37
+ wrap,
38
+ role = 'menuitem',
39
+ tag = 'li',
40
+ ...rest
41
+ }: MenuListItemProps = $props();
42
+
43
+ $effect(() => {
44
+ if (icon ?? iconFirst?.icon ?? menuItemFirst) {
45
+ menuStateContext.hasIcon = true;
46
+ }
47
+ });
48
+
49
+ $effect(() => {
50
+ if (selected) {
51
+ menuStateContext.selectedIndex = itemIndex;
52
+ }
53
+ element?.addEventListener('click', handleClick);
54
+ });
55
+
56
+ $effect(() => {
57
+ if (itemIndex === undefined && element?.parentElement) {
58
+ itemIndex = [
59
+ ...element?.parentElement?.querySelectorAll('.menu-list-item:not(.menu-list-title)')
60
+ ].indexOf(element);
61
+ }
62
+ });
63
+
64
+ const handleClick = (event: Event) => {
65
+ event.stopPropagation();
66
+ event.stopImmediatePropagation;
67
+
68
+ const cevent = new CustomEvent('menu:item:clicked', { detail: data, bubbles: true });
69
+ if (element) element.dispatchEvent(cevent);
70
+ // set selectedIndex if we have index
71
+ // set selected style
72
+ if (selectable) setSelected();
73
+ if (onMenuItemClick) onMenuItemClick(data);
74
+
75
+ if (onclick) {
76
+ onclick(data, itemIndex);
77
+ } else if (menuStateContext?.onclick) {
78
+ menuStateContext?.onclick(data, itemIndex);
79
+ }
80
+ };
81
+
82
+ const setSelected = () => {
83
+ menuStateContext.selectedIndex = itemIndex;
84
+ menuStateContext.selectedData = data;
85
+ };
71
86
  </script>
72
87
 
73
88
  {#if dividerBefore}
@@ -1,5 +1,8 @@
1
- <script lang="ts">import MenuListItem from "./MenuListItem.svelte";
2
- let { class: className, ...rest } = $props();
1
+ <script lang="ts">
2
+ import MenuListItem from './MenuListItem.svelte';
3
+ import type { MenuListItemProps } from './types.js';
4
+
5
+ let { class: className, ...rest }: MenuListItemProps = $props();
3
6
  </script>
4
7
 
5
8
  <MenuListItem {...rest} selectable={false} class="menu-list-title {className}" />
@@ -1,30 +1,38 @@
1
- <script lang="ts">import Paneler from "./Paneler.svelte";
2
- import PanelSlide from "./PanelSlide.svelte";
3
- import Panel from "./Panel.svelte";
4
- import PanelGrid from "./PanelGrid.svelte";
5
- import { defaultsArgs } from "../../base/demoer/demoer.utils.js";
6
- import ComponentDemo from "../../base/demoer/DemoerComponent.svelte";
7
- import Demoer from "../../base/demoer/Demoer.svelte";
8
- import DemoPage from "../../base/demoer/DemoPage.svelte";
9
- let parametersSlot = {
10
- isOpen: {
11
- type: "boolean",
12
- values: [true, false]
13
- }
14
- };
15
- $: componentArgsSlot = {
16
- ...defaultsArgs(parametersSlot),
17
- onClose: () => {
18
- componentArgsSlot.open = !componentArgsSlot.open;
19
- },
20
- data: [
21
- { id: 1, name: "name" },
22
- { id: 2, name: "name" },
23
- { id: 3, name: "name" },
24
- { id: 4, name: "name" }
25
- ]
26
- };
27
- let codeSlot = `
1
+ <script lang="ts">
2
+ import Paneler from './Paneler.svelte';
3
+ import PanelSlide from './PanelSlide.svelte';
4
+ import Panel from './Panel.svelte';
5
+ import PanelGrid from './PanelGrid.svelte';
6
+
7
+ /* demo */
8
+ import { defaultsArgs } from '../../base/demoer/demoer.utils.js';
9
+ import ComponentDemo from '../../base/demoer/DemoerComponent.svelte';
10
+ import Demoer from '../../base/demoer/Demoer.svelte';
11
+ import DemoPage from '../../base/demoer/DemoPage.svelte';
12
+ /* demo */
13
+
14
+ let parametersSlot: any = {
15
+ isOpen: {
16
+ type: 'boolean',
17
+ values: [true, false]
18
+ }
19
+ };
20
+
21
+ $: componentArgsSlot = {
22
+ ...defaultsArgs(parametersSlot),
23
+ onClose: () => {
24
+ componentArgsSlot.open = !componentArgsSlot.open;
25
+ },
26
+ data: [
27
+ { id: 1, name: 'name' },
28
+ { id: 2, name: 'name' },
29
+ { id: 3, name: 'name' },
30
+ { id: 4, name: 'name' }
31
+ ]
32
+ };
33
+
34
+ //
35
+ let codeSlot = `
28
36
  <script>
29
37
  import Paneler from "./Paneler.svelte";
30
38
  import PanelSlide from "./PanelSlide.svelte";
@@ -72,7 +80,8 @@ let codeSlot = `
72
80
  </PanelSlide>
73
81
  </Paneler>
74
82
  `;
75
- let codeProps = `
83
+
84
+ let codeProps = `
76
85
  <Button
77
86
  onclick={() => {
78
87
  openWindow("html", {
@@ -1,37 +1,47 @@
1
- <script lang="ts" generics="T=Data">import { run } from "svelte/legacy";
2
- import { onMount, getContext } from "svelte";
3
- import Button from "../../controls/button/Button.svelte";
4
- let {
5
- title = "not set",
6
- panelId = crypto.randomUUID(),
7
- data = void 0,
8
- showNavigation = true,
9
- panelButtonPrevious,
10
- panelButtonNext,
11
- children
12
- } = $props();
13
- export const actions = {
14
- load: (args) => {
15
- }
16
- };
17
- let ref = $state(void 0);
18
- let panelSlideId = getContext("PanelSlide");
19
- let panelerContext = getContext("Paneler");
20
- let currentIdx = $state(), hasNext = $state(), hasPrev = $state();
21
- $effect(() => {
22
- if ($panelerContext.panelSlides) {
23
- currentIdx = Object.keys($panelerContext.panelSlides).indexOf(panelSlideId);
24
- hasNext = Boolean(Object.keys($panelerContext.panelSlides)[currentIdx + 1]);
25
- hasPrev = Boolean(Object.keys($panelerContext.panelSlides)[currentIdx - 1]);
26
- }
27
- });
28
- function prevNextPanel(page) {
29
- const event = new CustomEvent("panel:button:clicked", {
30
- detail: { panelId, page, data },
31
- bubbles: true
32
- });
33
- ref?.dispatchEvent(event);
34
- }
1
+ <script lang="ts" generics="T=Data">
2
+ import { run } from 'svelte/legacy';
3
+
4
+ import { onMount, getContext } from 'svelte';
5
+ import Button from '../../controls/button/Button.svelte';
6
+ import type { PanelContextType, PanelProps } from './types.js';
7
+ import type { Data } from '../../types/index.js';
8
+
9
+ let {
10
+ title = 'not set',
11
+ panelId = crypto.randomUUID() as string,
12
+ data = undefined,
13
+ showNavigation = true,
14
+ panelButtonPrevious,
15
+ panelButtonNext,
16
+ children
17
+ }: PanelProps<T> = $props();
18
+ export const actions = {
19
+ load: (args: any) => {}
20
+ };
21
+
22
+ let ref: HTMLDivElement | undefined = $state(undefined);
23
+ let panelSlideId = getContext<string>('PanelSlide');
24
+ let panelerContext = getContext<PanelContextType>('Paneler');
25
+
26
+ let currentIdx = $state(),
27
+ hasNext = $state(),
28
+ hasPrev = $state();
29
+
30
+ $effect(() => {
31
+ if ($panelerContext.panelSlides) {
32
+ currentIdx = Object.keys($panelerContext.panelSlides).indexOf(panelSlideId);
33
+ hasNext = Boolean(Object.keys($panelerContext.panelSlides)[currentIdx + 1]);
34
+ hasPrev = Boolean(Object.keys($panelerContext.panelSlides)[currentIdx - 1]);
35
+ }
36
+ });
37
+
38
+ function prevNextPanel(page: 'next' | 'prev') {
39
+ const event = new CustomEvent('panel:button:clicked', {
40
+ detail: { panelId, page, data },
41
+ bubbles: true
42
+ });
43
+ ref?.dispatchEvent(event);
44
+ }
35
45
  </script>
36
46
 
37
47
  <div class="panel" bind:this={ref}>
@@ -1,17 +1,21 @@
1
- <script lang="ts">import Button from "../../controls/button/Button.svelte";
2
- import Slotted from "../../utils/slotted/Slotted.svelte";
3
- import { fade } from "svelte/transition";
4
- let {
5
- class: className = "",
6
- element = $bindable(),
7
- style = "",
8
- data = [],
9
- columns = 3,
10
- isExpanded = $bindable(false),
11
- children,
12
- panelGridZoom,
13
- ...rest
14
- } = $props();
1
+ <script lang="ts">
2
+ import Button from '../../controls/button/Button.svelte';
3
+ import Slotted from '../../utils/slotted/Slotted.svelte';
4
+
5
+ import { fade } from 'svelte/transition';
6
+ import type { PanelGridProps } from './types.js';
7
+
8
+ let {
9
+ class: className = '',
10
+ element = $bindable(),
11
+ style = '',
12
+ data = [],
13
+ columns = 3,
14
+ isExpanded = $bindable(false),
15
+ children,
16
+ panelGridZoom,
17
+ ...rest
18
+ }: PanelGridProps = $props();
15
19
  </script>
16
20
 
17
21
  {#if data}