@medyll/idae-slotui-svelte 0.67.0 → 0.69.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 (156) 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/avatar/Avatar.demo.svelte +12 -8
  4. package/dist/base/avatar/Avatar.preview.svelte +3 -2
  5. package/dist/base/avatar/Avatar.svelte +24 -19
  6. package/dist/base/backdrop/Backdrop.demo.svelte +13 -9
  7. package/dist/base/backdrop/Backdrop.svelte +45 -37
  8. package/dist/base/badge/Badge.svelte +22 -18
  9. package/dist/base/box/Box.demo.svelte +12 -9
  10. package/dist/base/box/Box.svelte +44 -36
  11. package/dist/base/breadCrumb/BreadCrumb.svelte +12 -8
  12. package/dist/base/cartouche/Cartouche.demo.svelte +13 -9
  13. package/dist/base/cartouche/Cartouche.svelte +52 -44
  14. package/dist/base/chipper/Chipper.demo.svelte +14 -10
  15. package/dist/base/chipper/Chipper.svelte +19 -14
  16. package/dist/base/columner/Column.svelte +39 -31
  17. package/dist/base/columner/Columner.demo.svelte +4 -3
  18. package/dist/base/columner/Columner.svelte +12 -5
  19. package/dist/base/contentSwitcher/ContentSwitcher.demo.svelte +11 -8
  20. package/dist/base/contentSwitcher/ContentSwitcher.svelte +40 -30
  21. package/dist/base/debug/Debug.svelte +14 -11
  22. package/dist/base/demoer/DemoPage.svelte +18 -12
  23. package/dist/base/demoer/Demoer.svelte +20 -15
  24. package/dist/base/demoer/DemoerCode.svelte +28 -6
  25. package/dist/base/demoer/DemoerComponent.svelte +33 -13
  26. package/dist/base/divider/Divider.demo.svelte +12 -6
  27. package/dist/base/divider/Divider.svelte +58 -41
  28. package/dist/base/icon/Icon.demo.svelte +8 -5
  29. package/dist/base/icon/Icon.svelte +36 -27
  30. package/dist/base/icon/Icon.svelte.d.ts +1 -0
  31. package/dist/base/icon/types.d.ts +44 -9
  32. package/dist/base/paper/Paper.demo.svelte +12 -9
  33. package/dist/base/paper/Paper.svelte +13 -9
  34. package/dist/base/titleBar/TitleBar.demo.svelte +11 -9
  35. package/dist/base/titleBar/TitleBar.svelte +16 -12
  36. package/dist/controls/autocomplete/AutoComplete.demo.svelte +21 -16
  37. package/dist/controls/autocomplete/AutoComplete.svelte +81 -62
  38. package/dist/controls/button/Button.demo.svelte +50 -44
  39. package/dist/controls/button/Button.svelte +38 -33
  40. package/dist/controls/button/ButtonAction.svelte +32 -19
  41. package/dist/controls/button/ButtonMenu.svelte +22 -16
  42. package/dist/controls/button/IconButton.svelte +40 -13
  43. package/dist/controls/checkbox/Checkbox.demo.svelte +13 -9
  44. package/dist/controls/checkbox/Checkbox.svelte +18 -14
  45. package/dist/controls/confirm/Confirm.demo.svelte +12 -8
  46. package/dist/controls/confirm/Confirm.preview.svelte +3 -2
  47. package/dist/controls/confirm/Confirm.svelte +90 -67
  48. package/dist/controls/inplaceedit/InPlaceEdit.demo.svelte +12 -8
  49. package/dist/controls/inplaceedit/InPlaceEdit.svelte +74 -55
  50. package/dist/controls/progress/Progress.demo.svelte +14 -9
  51. package/dist/controls/progress/Progress.svelte +19 -13
  52. package/dist/controls/rating/Rating.demo.svelte +11 -8
  53. package/dist/controls/rating/Rating.svelte +21 -16
  54. package/dist/controls/select/Select.demo.svelte +46 -37
  55. package/dist/controls/select/Select.svelte +76 -29
  56. package/dist/controls/slider/Slider.demo.svelte +14 -7
  57. package/dist/controls/slider/Slider.svelte +104 -89
  58. package/dist/controls/stepper/Stepper.demo.svelte +9 -6
  59. package/dist/controls/stepper/Stepper.svelte +19 -13
  60. package/dist/controls/switch/Switch.demo.svelte +31 -24
  61. package/dist/controls/switch/Switch.svelte +20 -15
  62. package/dist/controls/textfield/TextField.demo.svelte +28 -23
  63. package/dist/controls/textfield/TextField.svelte +83 -75
  64. package/dist/controls/textfield/textfield.scss +15 -13
  65. package/dist/data/dataList/DataList.demo.svelte +44 -37
  66. package/dist/data/dataList/DataList.preview.svelte +8 -6
  67. package/dist/data/dataList/DataList.svelte +139 -115
  68. package/dist/data/dataList/DataListCell.svelte +146 -96
  69. package/dist/data/dataList/DataListHead.svelte +52 -36
  70. package/dist/data/dataList/DataListRow.svelte +57 -43
  71. package/dist/data/finder/Finder.demo.svelte +15 -11
  72. package/dist/data/finder/Finder.svelte +64 -46
  73. package/dist/data/grouper/Grouper.demo.svelte +14 -8
  74. package/dist/data/grouper/Grouper.svelte +62 -50
  75. package/dist/data/jsoner/Jsoner.svelte +14 -10
  76. package/dist/data/list/List.svelte +6 -2
  77. package/dist/data/list/ListItem.svelte +5 -2
  78. package/dist/data/list/ListTitle.svelte +5 -2
  79. package/dist/data/loader/Loader.demo.svelte +16 -8
  80. package/dist/data/loader/Loader.preview.svelte +2 -1
  81. package/dist/data/loader/Loader.svelte +56 -49
  82. package/dist/data/sorter/Sorter.demo.svelte +20 -17
  83. package/dist/data/sorter/Sorter.svelte +40 -33
  84. package/dist/data/sorter/Sorterer.svelte +17 -15
  85. package/dist/index.d.ts +1 -1
  86. package/dist/index.js +1 -1
  87. package/dist/navigation/drawer/Drawer.demo.svelte +11 -7
  88. package/dist/navigation/drawer/Drawer.svelte +92 -81
  89. package/dist/navigation/tabs/Tabs.demo.svelte +23 -18
  90. package/dist/navigation/tabs/Tabs.preview.svelte +17 -14
  91. package/dist/navigation/tabs/Tabs.svelte +73 -61
  92. package/dist/slotui-css/marquee.css +8 -8
  93. package/dist/slotui-css/marquee.min.css +8 -8
  94. package/dist/slotui-css/menu-list.css +47 -43
  95. package/dist/slotui-css/menu-list.min.css +47 -43
  96. package/dist/slotui-css/slotui-css.css +128 -124
  97. package/dist/slotui-css/slotui-min-css.css +128 -124
  98. package/dist/slotui-css/textfield.css +37 -37
  99. package/dist/slotui-css/textfield.min.css +37 -37
  100. package/dist/styles/slotuisheet/SlotuiSheet.svelte +14 -11
  101. package/dist/styles/slotuisheet/SlotyuiSheet.demo.svelte +21 -17
  102. package/dist/ui/bootstrapp/BootStrApp.svelte +21 -15
  103. package/dist/ui/chromeFrame/ChromeFrame.svelte +19 -10
  104. package/dist/ui/chromeFrame/ChromeFrameButtonList.svelte +6 -4
  105. package/dist/ui/chromeFrame/ChromeFrameList.svelte +97 -58
  106. package/dist/ui/frame/Frame.demo.svelte +6 -4
  107. package/dist/ui/frame/Frame.svelte +51 -44
  108. package/dist/ui/login/Login.demo.svelte +29 -21
  109. package/dist/ui/login/Login.svelte +49 -41
  110. package/dist/ui/marquee/Marquee.demo.svelte +11 -8
  111. package/dist/ui/marquee/Marquee.svelte +77 -35
  112. package/dist/ui/marquee/marquee.scss +11 -15
  113. package/dist/ui/menu/Menu.svelte +6 -2
  114. package/dist/ui/menu/MenuItem.svelte +6 -2
  115. package/dist/ui/menu/MenuTitle.svelte +5 -2
  116. package/dist/ui/menuList/MenuList.demo.svelte +14 -9
  117. package/dist/ui/menuList/MenuList.svelte +157 -140
  118. package/dist/ui/menuList/MenuListItem.svelte +132 -113
  119. package/dist/ui/menuList/MenuListTitle.svelte +52 -45
  120. package/dist/ui/menuList/menu-list.scss +65 -60
  121. package/dist/ui/panel/Panel.demo.svelte +37 -28
  122. package/dist/ui/panel/Panel.svelte +44 -34
  123. package/dist/ui/panel/PanelGrid.svelte +18 -14
  124. package/dist/ui/panel/PanelSlide.svelte +121 -79
  125. package/dist/ui/panel/Paneler.svelte +51 -24
  126. package/dist/ui/popper/Popper.demo.svelte +33 -25
  127. package/dist/ui/popper/Popper.svelte +105 -87
  128. package/dist/ui/preview/Preview.svelte +18 -14
  129. package/dist/ui/serviceBox/ServiceBox.svelte +8 -6
  130. package/dist/ui/startMenu/BootMenu.svelte +32 -24
  131. package/dist/ui/taskbar/TaskBarContent.svelte +8 -7
  132. package/dist/ui/taskbar/Taskbar.svelte +15 -10
  133. package/dist/ui/themeswitcher/ThemeSwitcher.svelte +9 -7
  134. package/dist/ui/toast/Toast.demo.svelte +15 -10
  135. package/dist/ui/toast/Toast.svelte +53 -41
  136. package/dist/ui/toast/Toaster.svelte +4 -2
  137. package/dist/ui/toggleBar/ToggleBar.demo.svelte +69 -60
  138. package/dist/ui/toggleBar/ToggleBar.svelte +27 -23
  139. package/dist/ui/toolBar/ToolBar.demo.svelte +48 -38
  140. package/dist/ui/toolBar/ToolBar.svelte +16 -11
  141. package/dist/ui/tree/Tree.demo.svelte +53 -42
  142. package/dist/ui/tree/Tree.preview.svelte +14 -11
  143. package/dist/ui/tree/Tree.svelte +120 -67
  144. package/dist/ui/window/Window.demo.svelte +27 -19
  145. package/dist/ui/window/Window.svelte +95 -85
  146. package/dist/utils/content/Content.svelte +49 -43
  147. package/dist/utils/contextRooter/ContextRooter.demo.svelte +12 -8
  148. package/dist/utils/contextRooter/ContextRooter.svelte +5 -3
  149. package/dist/utils/css/Css.demo.svelte +2 -1
  150. package/dist/utils/css/Css.svelte +2 -1
  151. package/dist/utils/looper/Looper.demo.svelte +8 -6
  152. package/dist/utils/looper/Looper.svelte +27 -22
  153. package/dist/utils/slotted/Slotted.svelte +10 -1
  154. package/dist/utils/stylesheet/StyleSheet.demo.svelte +21 -17
  155. package/dist/utils/stylesheet/StyleSheet.svelte +14 -11
  156. package/package.json +46 -46
@@ -1,44 +1,61 @@
1
- <script lang="ts">import { uiPresets } from "../../utils/engine/presets.js";
2
- let {
3
- class: className = "",
4
- style,
5
- element = null,
6
- dense: density = "default",
7
- orientation: direction = "horizontal",
8
- expansion = "full",
9
- shadowed: shadow = false,
10
- color
11
- } = $props();
12
- let extensionClass = {
13
- horizontal: {
14
- full: "",
15
- padded: "marg-ii-12",
16
- centered: "marg-ii-6"
17
- },
18
- vertical: {
19
- full: "",
20
- padded: "marg-ii-12",
21
- centered: "marg-ii-6"
22
- }
23
- };
24
- let addStyle = style ?? "";
25
- const shadowClass = $derived(shadow ? "shad-3" : "");
26
- if (color) addStyle += `--sld-color-border:${color};`;
27
- if (direction === "vertical" && (element?.nextElementSibling ?? element?.previousElementSibling)) {
28
- let maxHeight = (element?.previousElementSibling ?? element?.nextElementSibling)?.getBoundingClientRect()?.height;
29
- addStyle += `height:calc(${maxHeight}px - ${getDensity(density)});`;
30
- }
31
- function getDensity(density2) {
32
- return uiPresets.density?.[density2];
33
- }
34
- switch (direction) {
35
- case "horizontal":
36
- addStyle += `margin-top:${getDensity(density)};margin-bottom:${getDensity(density)};`;
37
- break;
38
- case "vertical":
39
- addStyle += `margin-left:${getDensity(density)};margin-right:${getDensity(density)};`;
40
- break;
41
- }
1
+ <script lang="ts">
2
+ /** extends button */
3
+ import type { ElementProps, ExpandProps } from '../../types/index.js';
4
+ import { uiPresets } from '../../utils/engine/presets.js';
5
+ import type { DividerProps } from './types.js';
6
+ let {
7
+ class: className = '',
8
+ style,
9
+ element = null,
10
+ dense: density = 'default',
11
+ orientation: direction = 'horizontal',
12
+ expansion = 'full',
13
+ shadowed: shadow = false,
14
+ color
15
+ }: ExpandProps<DividerProps> = $props();
16
+
17
+ let extensionClass = {
18
+ horizontal: {
19
+ full: '',
20
+ padded: 'marg-ii-12',
21
+ centered: 'marg-ii-6'
22
+ },
23
+ vertical: {
24
+ full: '',
25
+ padded: 'marg-ii-12',
26
+ centered: 'marg-ii-6'
27
+ }
28
+ };
29
+ let addStyle: string = (style as unknown as string) ?? ('' as unknown as string);
30
+
31
+ const shadowClass = $derived(shadow ? 'shad-3' : '');
32
+
33
+ if (color) addStyle += `--sld-color-border:${color};`;
34
+
35
+ // set height od divider when direction === vertical in a flex env
36
+ if (
37
+ direction === 'vertical' &&
38
+ (element?.nextElementSibling ?? element?.previousElementSibling)
39
+ ) {
40
+ let maxHeight = (
41
+ element?.previousElementSibling ?? element?.nextElementSibling
42
+ )?.getBoundingClientRect()?.height;
43
+
44
+ addStyle += `height:calc(${maxHeight}px - ${getDensity(density)});`;
45
+ }
46
+
47
+ function getDensity(density: ElementProps['density']) {
48
+ return uiPresets.density?.[density];
49
+ }
50
+
51
+ switch (direction) {
52
+ case 'horizontal':
53
+ addStyle += `margin-top:${getDensity(density)};margin-bottom:${getDensity(density)};`;
54
+ break;
55
+ case 'vertical':
56
+ addStyle += `margin-left:${getDensity(density)};margin-right:${getDensity(density)};`;
57
+ break;
58
+ }
42
59
  </script>
43
60
 
44
61
  <hr
@@ -1,8 +1,11 @@
1
- <script lang="ts">import ComponentDemo from "../demoer/DemoerComponent.svelte";
2
- import { DemoPage, Demoer } from "../../index.js";
3
- import Icon from "./Icon.svelte";
4
- import { parameters, componentArgs } from "./types.js";
5
- let code = `
1
+ <script lang="ts">
2
+ import ComponentDemo from '../demoer/DemoerComponent.svelte';
3
+ import { DemoPage, Demoer } from '../../index.js';
4
+ import Icon from './Icon.svelte';
5
+
6
+ import { parameters, componentArgs } from './types.js';
7
+
8
+ let code = `
6
9
  <Icon>
7
10
  mdi:tree
8
11
  </Icon>`;
@@ -1,30 +1,39 @@
1
- <script lang="ts">import { iconFontSize } from "../../types/index.js";
2
- import Iconify from "@iconify/svelte";
3
- let {
4
- icon = $bindable("question"),
5
- class: className,
6
- style,
7
- element = $bindable(),
8
- iconSize = $bindable(),
9
- rotate = false,
10
- color = $bindable(),
11
- rotation = 0,
12
- ico,
13
- ...rest
14
- } = $props();
15
- iconSize = iconSize || "small";
16
- const sizes = iconFontSize;
17
- let finalI = $derived(ico?.icon ?? (typeof icon === "object" ? icon.icon : icon));
18
- let finRot = $derived(ico?.rotate ?? (typeof icon === "object" ? icon.rotate : rotate));
19
- let finRotation = $derived(
20
- ico?.rotation ?? (typeof icon === "object" ? icon.rotation : rotation)
21
- );
22
- let finCol = $derived(ico?.color ?? (typeof icon === "object" ? icon.color : color));
23
- let finSize = $derived(ico?.iconSize ?? (typeof icon === "object" ? iconSize : iconSize));
24
- let iconName = $derived(finalI.includes(":") ? finalI : `mdi:${finalI}`);
25
- let finalStyle = $derived(
26
- `display:block;font-size:${sizes[finSize]};color:${finCol};transform: rotate(${finRotation}deg);${style};`
27
- );
1
+ <script lang="ts">
2
+ import { iconFontSize, type ElementProps, type ExpandProps } from '../../types/index.js';
3
+ import type { IconAppProps } from './types.js';
4
+ import Iconify from '@iconify/svelte';
5
+
6
+ let {
7
+ icon = $bindable('question'),
8
+ class: className,
9
+ style,
10
+ element = $bindable<HTMLDivElement>(),
11
+ iconSize = $bindable(),
12
+ rotate = false,
13
+ color = $bindable(),
14
+ rotation = 0,
15
+ ico,
16
+ display = 'inline-block',
17
+ ...rest
18
+ }: ExpandProps<IconAppProps> = $props();
19
+
20
+ iconSize = iconSize || 'small';
21
+
22
+ const sizes: Record<ElementProps['iconSize'], string> = iconFontSize;
23
+
24
+ let finalI = $derived(ico?.icon ?? (typeof icon === 'object' ? icon.icon : icon));
25
+ let finRot = $derived(ico?.rotate ?? (typeof icon === 'object' ? icon.rotate : rotate));
26
+ let finRotation = $derived(
27
+ ico?.rotation ?? (typeof icon === 'object' ? icon.rotation : rotation)
28
+ );
29
+ let finCol = $derived(ico?.color ?? (typeof icon === 'object' ? icon.color : color));
30
+ let finSize = $derived(ico?.iconSize ?? (typeof icon === 'object' ? iconSize : iconSize));
31
+ let iconName = $derived(finalI.includes(':') ? finalI : `mdi:${finalI}`);
32
+
33
+ let finalStyle = $derived(
34
+ `display:${display};font-size:${sizes[finSize]};color:${finCol};transform: rotate(${finRotation}deg);${style};`
35
+ );
36
+
28
37
  </script>
29
38
 
30
39
  {#key [icon, iconName, color, finalStyle]}
@@ -9,6 +9,7 @@ declare const Icon: import("svelte").Component<{
9
9
  rotate?: boolean | undefined;
10
10
  color?: string | undefined;
11
11
  rotation?: number | undefined;
12
+ display: "block" | "inline-block" | "inline";
12
13
  }, {}, "icon" | "iconSize" | "element" | "color">;
13
14
  type Icon = ReturnType<typeof Icon>;
14
15
  export default Icon;
@@ -1,24 +1,59 @@
1
1
  import type { ElementProps, IconObj } from "../../types/index.js";
2
2
  import type { DemoerStoryProps } from "../demoer/types.js";
3
+ /**
4
+ * Properties for the IconApp component.
5
+ */
3
6
  export type IconAppProps = {
4
- /** icon name for iconify */
7
+ /**
8
+ * Icon name for Iconify.
9
+ * @param icon
10
+ */
5
11
  icon?: ElementProps["icon"];
6
- /** className off the root component */
12
+ /**
13
+ * Class name of the root component.
14
+ * @param class
15
+ */
7
16
  class?: string;
8
- /** css style off the root component */
17
+ /**
18
+ * CSS style of the root component.
19
+ * @param style
20
+ */
9
21
  style?: string;
10
- /** element root HTMLDivElement props */
22
+ /**
23
+ * Root HTMLDivElement properties.
24
+ * @param element
25
+ */
11
26
  element?: HTMLDivElement | null | any;
12
- /** icon object for iconify, replace and invalidate props.icon */
27
+ /**
28
+ * Icon object for Iconify, replaces and invalidates `icon` prop.
29
+ * @param ico
30
+ */
13
31
  ico?: IconObj;
14
- /** icon size */
32
+ /**
33
+ * Icon size.
34
+ * @param iconSize
35
+ */
15
36
  iconSize?: ElementProps["iconSize"];
16
- /** rotate icon */
37
+ /**
38
+ * Rotate icon.
39
+ * @param rotate
40
+ */
17
41
  rotate?: boolean;
18
- /** icon color */
42
+ /**
43
+ * Icon color.
44
+ * @param color
45
+ */
19
46
  color?: string;
20
- /** icon rotation */
47
+ /**
48
+ * Icon rotation.
49
+ * @param rotation
50
+ */
21
51
  rotation?: number;
52
+ /**
53
+ * Display property for the icon.
54
+ * @param display
55
+ */
56
+ display: "block" | "inline-block" | "inline";
22
57
  };
23
58
  export declare const iconAppDemoValues: DemoerStoryProps<IconAppProps>;
24
59
  export declare let parameters: DemoerStoryProps<IconAppProps>, componentArgs: IconAppProps;
@@ -1,12 +1,15 @@
1
- <script lang="ts">import ComponentDemo from "../demoer/DemoerComponent.svelte";
2
- import DemoPage from "../demoer/DemoPage.svelte";
3
- import Demoer from "../demoer/Demoer.svelte";
4
- import { defaultsArgs } from "../demoer/demoer.utils.js";
5
- import Paper from "./Paper.svelte";
6
- import { paperDemoValues } from "./type.js";
7
- let parameters = paperDemoValues;
8
- let componentArgs = defaultsArgs(parameters);
9
- let code = `
1
+ <script lang="ts">
2
+ import ComponentDemo from '../demoer/DemoerComponent.svelte';
3
+ import DemoPage from '../demoer/DemoPage.svelte';
4
+ import Demoer from '../demoer/Demoer.svelte';
5
+ import { defaultsArgs } from '../demoer/demoer.utils.js';
6
+ import Paper from './Paper.svelte';
7
+ import { paperDemoValues, type PaperProps } from './type.js';
8
+
9
+ let parameters = paperDemoValues;
10
+ let componentArgs = defaultsArgs(parameters);
11
+
12
+ let code = `
10
13
  <Paper elevation="2" style="height:350px;width:250px" >
11
14
  paper content
12
15
  </Paper>`;
@@ -1,12 +1,16 @@
1
- <script lang="ts">import Slotted from "../../utils/slotted/Slotted.svelte";
2
- let {
3
- class: className = "",
4
- style,
5
- element = $bindable(),
6
- children,
7
- elevation = 0,
8
- ...rest
9
- } = $props();
1
+ <script lang="ts">
2
+ import type { ExpandProps } from '../../types/index.js';
3
+ import Slotted from '../../utils/slotted/Slotted.svelte';
4
+ import type { PaperProps } from './type.js';
5
+
6
+ let {
7
+ class: className = '',
8
+ style,
9
+ element = $bindable(),
10
+ children,
11
+ elevation = 0,
12
+ ...rest
13
+ }: ExpandProps<PaperProps> = $props();
10
14
  </script>
11
15
 
12
16
  <div bind:this={element} class="paper {className} elevation-{elevation}" {style} {...rest}>
@@ -1,12 +1,14 @@
1
- <script lang="ts">import { titleBarDemoValues } from "./types.js";
2
- import { defaultsArgs } from "../demoer/demoer.utils.js";
3
- import ComponentDemo from "../demoer/DemoerComponent.svelte";
4
- import DemoPage from "../demoer/DemoPage.svelte";
5
- import Demoer from "../demoer/Demoer.svelte";
6
- import TitleBar from "./TitleBar.svelte";
7
- let parameters = titleBarDemoValues;
8
- let componentArgs = defaultsArgs(parameters);
9
- let code = `
1
+ <script lang="ts">
2
+ import { titleBarDemoValues } from './types.js';
3
+ import { defaultsArgs } from '../demoer/demoer.utils.js';
4
+ import ComponentDemo from '../demoer/DemoerComponent.svelte';
5
+ import DemoPage from '../demoer/DemoPage.svelte';
6
+ import Demoer from '../demoer/Demoer.svelte';
7
+ import TitleBar from './TitleBar.svelte';
8
+ let parameters = titleBarDemoValues;
9
+ let componentArgs = defaultsArgs(parameters);
10
+
11
+ let code = `
10
12
  <TitleBar {...activeParams} class="marg-tb-1">
11
13
  {#snippet titleBarIcon()}
12
14
  <Icon fontSize="small" icon="circle" />
@@ -1,15 +1,19 @@
1
- <script lang="ts">import Icon from "../icon/Icon.svelte";
2
- import Button from "../../controls/button/Button.svelte";
3
- import IconButton from "../../controls/button/IconButton.svelte";
4
- import Slotted from "../../utils/slotted/Slotted.svelte";
5
- let {
6
- onClose,
7
- hasMenu = false,
8
- icon,
9
- title,
10
- titleBarIcon,
11
- titleBarTitle
12
- } = $props();
1
+ <script lang="ts">
2
+ import Icon from '../icon/Icon.svelte';
3
+ import Button from '../../controls/button/Button.svelte';
4
+ import IconButton from '../../controls/button/IconButton.svelte';
5
+ import type { ExpandProps } from '../../types/index.js';
6
+ import Slotted from '../../utils/slotted/Slotted.svelte';
7
+ import type { TitleBarProps } from './types.js';
8
+
9
+ let {
10
+ onClose,
11
+ hasMenu = false,
12
+ icon,
13
+ title,
14
+ titleBarIcon,
15
+ titleBarTitle
16
+ }: ExpandProps<TitleBarProps> = $props();
13
17
  </script>
14
18
 
15
19
  <div class="title-bar">
@@ -1,18 +1,22 @@
1
- <script lang="ts">import AutoComplete from "./AutoComplete.svelte";
2
- import MenuItem from "../../ui/menu/MenuItem.svelte";
3
- import ComponentDemo from "../../base/demoer/DemoerComponent.svelte";
4
- import Demoer from "../../base/demoer/Demoer.svelte";
5
- import DemoPage from "../../base/demoer/DemoPage.svelte";
6
- import { parameters, componentArgs } from "./types.js";
7
- let data = [
8
- { id: 1, name: "Wanda", surname: "Wand", lastname: "Groot", age: 23 },
9
- { id: 2, name: "John", surname: "Jo", lastname: "Doe", age: 33 },
10
- { id: 3, name: "Jane", surname: "Jay", lastname: "Doe", age: 43 },
11
- { id: 4, name: "Peter", surname: "Piotr", lastname: "Parker", age: 53 },
12
- { id: 5, name: "Mary", surname: "Ma", lastname: "Jane", age: 63 },
13
- { id: 6, name: "Bruce", surname: "Banner", lastname: "Wayne", age: 73 }
14
- ];
15
- let codeSlot = `
1
+ <script lang="ts">
2
+ import AutoComplete from './AutoComplete.svelte';
3
+ import MenuItem from '../../ui/menu/MenuItem.svelte';
4
+
5
+ import ComponentDemo from '../../base/demoer/DemoerComponent.svelte';
6
+ import Demoer from '../../base/demoer/Demoer.svelte';
7
+ import DemoPage from '../../base/demoer/DemoPage.svelte';
8
+ import { parameters, componentArgs } from './types.js';
9
+
10
+ let data = [
11
+ { id: 1, name: 'Wanda', surname: 'Wand', lastname: 'Groot', age: 23 },
12
+ { id: 2, name: 'John', surname: 'Jo', lastname: 'Doe', age: 33 },
13
+ { id: 3, name: 'Jane', surname: 'Jay', lastname: 'Doe', age: 43 },
14
+ { id: 4, name: 'Peter', surname: 'Piotr', lastname: 'Parker', age: 53 },
15
+ { id: 5, name: 'Mary', surname: 'Ma', lastname: 'Jane', age: 63 },
16
+ { id: 6, name: 'Bruce', surname: 'Banner', lastname: 'Wayne', age: 73 }
17
+ ];
18
+
19
+ let codeSlot = `
16
20
  <AutoComplete
17
21
  class="marg-b"
18
22
  placeholder="Search in list"
@@ -28,7 +32,8 @@ let codeSlot = `
28
32
  <div class="pad">No results found</div>
29
33
  {/snippet}
30
34
  </AutoComplete>`;
31
- let codeProps = `
35
+
36
+ let codeProps = `
32
37
  <AutoComplete
33
38
  let:menuItemData
34
39
  {data}
@@ -1,65 +1,84 @@
1
- <script lang="ts" generics="T">import TextField from "../textfield/TextField.svelte";
2
- import { dataOp } from "../../utils/engine/utils.js";
3
- import Popper from "../../ui/popper/Popper.svelte";
4
- import MenuList from "../../ui/menuList/MenuList.svelte";
5
- import MenuListItem from "../../ui/menuList/MenuListItem.svelte";
6
- import Icon from "../../base/icon/Icon.svelte";
7
- import Slotted from "../../utils/slotted/Slotted.svelte";
8
- let {
9
- class: className = "",
10
- element = $bindable(),
11
- data = $bindable([]),
12
- searchField = "*",
13
- dataFieldName,
14
- mode = "partial",
15
- filteredData = $bindable(data),
16
- selectedIndex = $bindable(-1),
17
- onchange = (args) => {
18
- },
19
- showAllOnEmpty = true,
20
- children,
21
- autoCompleteEmpty,
22
- autoCompleteNoResults,
23
- ...rest
24
- } = $props();
25
- let searchString = $state(void 0);
26
- let menuHTML = $state(null);
27
- let popperHTML = $state(void 0);
28
- let popperOpen = $state(false);
29
- let menuRef;
30
- let childs = children;
31
- $effect(() => {
32
- element?.addEventListener("keypress", (e) => {
33
- preNavigate(e);
34
- });
35
- });
36
- $effect(() => {
37
- filteredData = !searchString ? showAllOnEmpty ? data : [] : doFind(data, searchString, searchField);
38
- });
39
- const doFind = (list, kw, field) => {
40
- let results;
41
- if (!kw) {
42
- results = data;
43
- } else {
44
- results = mode === "exact" ? dataOp.filterList(list, kw, field) : dataOp.searchList(list, kw, field);
45
- }
46
- return results;
47
- };
48
- async function preNavigate(e) {
49
- if (e.keyCode === 13) {
50
- e.preventDefault();
51
- onSelect(filteredData[selectedIndex], selectedIndex);
52
- return;
53
- }
54
- }
55
- function onSelect(filteredData2, index) {
56
- searchString = getFieldName(filteredData2, dataFieldName);
57
- if (onchange) onchange(filteredData2);
58
- }
59
- function getFieldName(data2, fieldName) {
60
- let field = Array.isArray(fieldName) ? fieldName : [fieldName];
61
- return data2 ? field.map((field2) => data2[field2]).join(" ") : "";
62
- }
1
+ <script lang="ts" generics="T">
2
+ import type { AutoCompleteProps } from './types.js';
3
+
4
+ import TextField from '../textfield/TextField.svelte';
5
+ import { dataOp } from '../../utils/engine/utils.js';
6
+ import Popper from '../../ui/popper/Popper.svelte';
7
+ import MenuList from '../../ui/menuList/MenuList.svelte';
8
+ import MenuListItem from '../../ui/menuList/MenuListItem.svelte';
9
+ import Icon from '../../base/icon/Icon.svelte';
10
+ import type { Data, ExpandProps } from '../../types/index.js';
11
+ import Slotted from '../../utils/slotted/Slotted.svelte';
12
+
13
+ let {
14
+ class: className = '',
15
+ element = $bindable(),
16
+ data = $bindable([]),
17
+ searchField = '*',
18
+ dataFieldName,
19
+ mode = 'partial',
20
+ filteredData = $bindable<T[]>(data),
21
+ selectedIndex = $bindable(-1),
22
+ onchange = (args) => {},
23
+ showAllOnEmpty = true,
24
+ children,
25
+ autoCompleteEmpty,
26
+ autoCompleteNoResults,
27
+ ...rest
28
+ }: ExpandProps<AutoCompleteProps<T>> & Partial<Omit<HTMLInputElement, 'style'>> = $props();
29
+
30
+ let searchString: string | undefined = $state(undefined);
31
+ let menuHTML: HTMLElement | null = $state(null);
32
+ let popperHTML: HTMLElement | undefined = $state(undefined);
33
+ let popperOpen: boolean = $state(false);
34
+
35
+ let menuRef: MenuList<T>;
36
+
37
+ let childs = children;
38
+
39
+ $effect(() => {
40
+ element?.addEventListener('keypress', ((e: KeyboardEvent) => {
41
+ preNavigate(e);
42
+ }) as EventListener);
43
+ });
44
+ $effect(() => {
45
+ filteredData = !searchString
46
+ ? showAllOnEmpty
47
+ ? data
48
+ : []
49
+ : doFind(data, searchString, searchField);
50
+ });
51
+
52
+ const doFind = <T = Record<string, any>,>(list: T[], kw: string, field: string) => {
53
+ let results: any[];
54
+
55
+ if (!kw) {
56
+ results = data;
57
+ } else {
58
+ results =
59
+ mode === 'exact' ? dataOp.filterList(list, kw, field) : dataOp.searchList(list, kw, field);
60
+ }
61
+ return results;
62
+ };
63
+
64
+ async function preNavigate(e: KeyboardEvent) {
65
+ if (e.keyCode === 13) {
66
+ e.preventDefault();
67
+ onSelect(filteredData[selectedIndex], selectedIndex);
68
+ return;
69
+ }
70
+ }
71
+
72
+ function onSelect(filteredData: T, index: number) {
73
+ searchString = getFieldName(filteredData, dataFieldName as keyof T) as string;
74
+ if (onchange) onchange(filteredData);
75
+ }
76
+
77
+ function getFieldName(data: T, fieldName: keyof T | (keyof T)[]): string {
78
+ let field = Array.isArray(fieldName) ? fieldName : [fieldName];
79
+
80
+ return data ? field.map((field) => data[field]).join(' ') : '';
81
+ }
63
82
  </script>
64
83
 
65
84
  {popperOpen}