@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.
- package/dist/base/alert/Alert.demo.svelte +10 -8
- package/dist/base/alert/Alert.svelte +56 -48
- package/dist/base/avatar/Avatar.demo.svelte +12 -8
- package/dist/base/avatar/Avatar.preview.svelte +3 -2
- package/dist/base/avatar/Avatar.svelte +24 -19
- package/dist/base/backdrop/Backdrop.demo.svelte +13 -9
- package/dist/base/backdrop/Backdrop.svelte +45 -37
- package/dist/base/badge/Badge.svelte +22 -18
- package/dist/base/box/Box.demo.svelte +12 -9
- package/dist/base/box/Box.svelte +44 -36
- package/dist/base/breadCrumb/BreadCrumb.svelte +12 -8
- package/dist/base/cartouche/Cartouche.demo.svelte +13 -9
- package/dist/base/cartouche/Cartouche.svelte +52 -44
- package/dist/base/chipper/Chipper.demo.svelte +14 -10
- package/dist/base/chipper/Chipper.svelte +19 -14
- package/dist/base/columner/Column.svelte +39 -31
- package/dist/base/columner/Columner.demo.svelte +4 -3
- package/dist/base/columner/Columner.svelte +12 -5
- package/dist/base/contentSwitcher/ContentSwitcher.demo.svelte +11 -8
- package/dist/base/contentSwitcher/ContentSwitcher.svelte +40 -30
- package/dist/base/debug/Debug.svelte +14 -11
- package/dist/base/demoer/DemoPage.svelte +18 -12
- package/dist/base/demoer/Demoer.svelte +20 -15
- package/dist/base/demoer/DemoerCode.svelte +28 -6
- package/dist/base/demoer/DemoerComponent.svelte +33 -13
- package/dist/base/divider/Divider.demo.svelte +12 -6
- package/dist/base/divider/Divider.svelte +58 -41
- package/dist/base/icon/Icon.demo.svelte +8 -5
- package/dist/base/icon/Icon.svelte +36 -27
- package/dist/base/icon/Icon.svelte.d.ts +1 -0
- package/dist/base/icon/types.d.ts +44 -9
- package/dist/base/paper/Paper.demo.svelte +12 -9
- package/dist/base/paper/Paper.svelte +13 -9
- package/dist/base/titleBar/TitleBar.demo.svelte +11 -9
- package/dist/base/titleBar/TitleBar.svelte +16 -12
- package/dist/controls/autocomplete/AutoComplete.demo.svelte +21 -16
- package/dist/controls/autocomplete/AutoComplete.svelte +81 -62
- package/dist/controls/button/Button.demo.svelte +50 -44
- package/dist/controls/button/Button.svelte +38 -33
- package/dist/controls/button/ButtonAction.svelte +32 -19
- package/dist/controls/button/ButtonMenu.svelte +22 -16
- package/dist/controls/button/IconButton.svelte +40 -13
- package/dist/controls/checkbox/Checkbox.demo.svelte +13 -9
- package/dist/controls/checkbox/Checkbox.svelte +18 -14
- package/dist/controls/confirm/Confirm.demo.svelte +12 -8
- package/dist/controls/confirm/Confirm.preview.svelte +3 -2
- package/dist/controls/confirm/Confirm.svelte +90 -67
- package/dist/controls/inplaceedit/InPlaceEdit.demo.svelte +12 -8
- package/dist/controls/inplaceedit/InPlaceEdit.svelte +74 -55
- package/dist/controls/progress/Progress.demo.svelte +14 -9
- package/dist/controls/progress/Progress.svelte +19 -13
- package/dist/controls/rating/Rating.demo.svelte +11 -8
- package/dist/controls/rating/Rating.svelte +21 -16
- package/dist/controls/select/Select.demo.svelte +46 -37
- package/dist/controls/select/Select.svelte +76 -29
- package/dist/controls/slider/Slider.demo.svelte +14 -7
- package/dist/controls/slider/Slider.svelte +104 -89
- package/dist/controls/stepper/Stepper.demo.svelte +9 -6
- package/dist/controls/stepper/Stepper.svelte +19 -13
- package/dist/controls/switch/Switch.demo.svelte +31 -24
- package/dist/controls/switch/Switch.svelte +20 -15
- package/dist/controls/textfield/TextField.demo.svelte +28 -23
- package/dist/controls/textfield/TextField.svelte +83 -75
- package/dist/controls/textfield/textfield.scss +15 -13
- package/dist/data/dataList/DataList.demo.svelte +44 -37
- package/dist/data/dataList/DataList.preview.svelte +8 -6
- package/dist/data/dataList/DataList.svelte +139 -115
- package/dist/data/dataList/DataListCell.svelte +146 -96
- package/dist/data/dataList/DataListHead.svelte +52 -36
- package/dist/data/dataList/DataListRow.svelte +57 -43
- package/dist/data/finder/Finder.demo.svelte +15 -11
- package/dist/data/finder/Finder.svelte +64 -46
- package/dist/data/grouper/Grouper.demo.svelte +14 -8
- package/dist/data/grouper/Grouper.svelte +62 -50
- package/dist/data/jsoner/Jsoner.svelte +14 -10
- package/dist/data/list/List.svelte +6 -2
- package/dist/data/list/ListItem.svelte +5 -2
- package/dist/data/list/ListTitle.svelte +5 -2
- package/dist/data/loader/Loader.demo.svelte +16 -8
- package/dist/data/loader/Loader.preview.svelte +2 -1
- package/dist/data/loader/Loader.svelte +56 -49
- package/dist/data/sorter/Sorter.demo.svelte +20 -17
- package/dist/data/sorter/Sorter.svelte +40 -33
- package/dist/data/sorter/Sorterer.svelte +17 -15
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/navigation/drawer/Drawer.demo.svelte +11 -7
- package/dist/navigation/drawer/Drawer.svelte +92 -81
- package/dist/navigation/tabs/Tabs.demo.svelte +23 -18
- package/dist/navigation/tabs/Tabs.preview.svelte +17 -14
- package/dist/navigation/tabs/Tabs.svelte +73 -61
- package/dist/slotui-css/marquee.css +8 -8
- package/dist/slotui-css/marquee.min.css +8 -8
- package/dist/slotui-css/menu-list.css +47 -43
- package/dist/slotui-css/menu-list.min.css +47 -43
- package/dist/slotui-css/slotui-css.css +128 -124
- package/dist/slotui-css/slotui-min-css.css +128 -124
- package/dist/slotui-css/textfield.css +37 -37
- package/dist/slotui-css/textfield.min.css +37 -37
- package/dist/styles/slotuisheet/SlotuiSheet.svelte +14 -11
- package/dist/styles/slotuisheet/SlotyuiSheet.demo.svelte +21 -17
- package/dist/ui/bootstrapp/BootStrApp.svelte +21 -15
- package/dist/ui/chromeFrame/ChromeFrame.svelte +19 -10
- package/dist/ui/chromeFrame/ChromeFrameButtonList.svelte +6 -4
- package/dist/ui/chromeFrame/ChromeFrameList.svelte +97 -58
- package/dist/ui/frame/Frame.demo.svelte +6 -4
- package/dist/ui/frame/Frame.svelte +51 -44
- package/dist/ui/login/Login.demo.svelte +29 -21
- package/dist/ui/login/Login.svelte +49 -41
- package/dist/ui/marquee/Marquee.demo.svelte +11 -8
- package/dist/ui/marquee/Marquee.svelte +77 -35
- package/dist/ui/marquee/marquee.scss +11 -15
- package/dist/ui/menu/Menu.svelte +6 -2
- package/dist/ui/menu/MenuItem.svelte +6 -2
- package/dist/ui/menu/MenuTitle.svelte +5 -2
- package/dist/ui/menuList/MenuList.demo.svelte +14 -9
- package/dist/ui/menuList/MenuList.svelte +157 -140
- package/dist/ui/menuList/MenuListItem.svelte +132 -113
- package/dist/ui/menuList/MenuListTitle.svelte +52 -45
- package/dist/ui/menuList/menu-list.scss +65 -60
- package/dist/ui/panel/Panel.demo.svelte +37 -28
- package/dist/ui/panel/Panel.svelte +44 -34
- package/dist/ui/panel/PanelGrid.svelte +18 -14
- package/dist/ui/panel/PanelSlide.svelte +121 -79
- package/dist/ui/panel/Paneler.svelte +51 -24
- package/dist/ui/popper/Popper.demo.svelte +33 -25
- package/dist/ui/popper/Popper.svelte +105 -87
- package/dist/ui/preview/Preview.svelte +18 -14
- package/dist/ui/serviceBox/ServiceBox.svelte +8 -6
- package/dist/ui/startMenu/BootMenu.svelte +32 -24
- package/dist/ui/taskbar/TaskBarContent.svelte +8 -7
- package/dist/ui/taskbar/Taskbar.svelte +15 -10
- package/dist/ui/themeswitcher/ThemeSwitcher.svelte +9 -7
- package/dist/ui/toast/Toast.demo.svelte +15 -10
- package/dist/ui/toast/Toast.svelte +53 -41
- package/dist/ui/toast/Toaster.svelte +4 -2
- package/dist/ui/toggleBar/ToggleBar.demo.svelte +69 -60
- package/dist/ui/toggleBar/ToggleBar.svelte +27 -23
- package/dist/ui/toolBar/ToolBar.demo.svelte +48 -38
- package/dist/ui/toolBar/ToolBar.svelte +16 -11
- package/dist/ui/tree/Tree.demo.svelte +53 -42
- package/dist/ui/tree/Tree.preview.svelte +14 -11
- package/dist/ui/tree/Tree.svelte +120 -67
- package/dist/ui/window/Window.demo.svelte +27 -19
- package/dist/ui/window/Window.svelte +95 -85
- package/dist/utils/content/Content.svelte +49 -43
- package/dist/utils/contextRooter/ContextRooter.demo.svelte +12 -8
- package/dist/utils/contextRooter/ContextRooter.svelte +5 -3
- package/dist/utils/css/Css.demo.svelte +2 -1
- package/dist/utils/css/Css.svelte +2 -1
- package/dist/utils/looper/Looper.demo.svelte +8 -6
- package/dist/utils/looper/Looper.svelte +27 -22
- package/dist/utils/slotted/Slotted.svelte +10 -1
- package/dist/utils/stylesheet/StyleSheet.demo.svelte +21 -17
- package/dist/utils/stylesheet/StyleSheet.svelte +14 -11
- package/package.json +46 -46
|
@@ -1,44 +1,61 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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">
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
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">
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
let
|
|
25
|
-
let
|
|
26
|
-
|
|
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
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Icon name for Iconify.
|
|
9
|
+
* @param icon
|
|
10
|
+
*/
|
|
5
11
|
icon?: ElementProps["icon"];
|
|
6
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Class name of the root component.
|
|
14
|
+
* @param class
|
|
15
|
+
*/
|
|
7
16
|
class?: string;
|
|
8
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* CSS style of the root component.
|
|
19
|
+
* @param style
|
|
20
|
+
*/
|
|
9
21
|
style?: string;
|
|
10
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Root HTMLDivElement properties.
|
|
24
|
+
* @param element
|
|
25
|
+
*/
|
|
11
26
|
element?: HTMLDivElement | null | any;
|
|
12
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Icon object for Iconify, replaces and invalidates `icon` prop.
|
|
29
|
+
* @param ico
|
|
30
|
+
*/
|
|
13
31
|
ico?: IconObj;
|
|
14
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Icon size.
|
|
34
|
+
* @param iconSize
|
|
35
|
+
*/
|
|
15
36
|
iconSize?: ElementProps["iconSize"];
|
|
16
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* Rotate icon.
|
|
39
|
+
* @param rotate
|
|
40
|
+
*/
|
|
17
41
|
rotate?: boolean;
|
|
18
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* Icon color.
|
|
44
|
+
* @param color
|
|
45
|
+
*/
|
|
19
46
|
color?: string;
|
|
20
|
-
/**
|
|
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">
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
let
|
|
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">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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">
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
let
|
|
9
|
-
let
|
|
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">
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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">
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
35
|
+
|
|
36
|
+
let codeProps = `
|
|
32
37
|
<AutoComplete
|
|
33
38
|
let:menuItemData
|
|
34
39
|
{data}
|
|
@@ -1,65 +1,84 @@
|
|
|
1
|
-
<script lang="ts" generics="T">
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
let
|
|
31
|
-
$
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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}
|