@medyll/idae-slotui-svelte 0.122.1 → 0.124.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -47
- package/dist/base/alert/Alert.demo.svelte +62 -62
- package/dist/base/alert/Alert.svelte +121 -121
- package/dist/base/alert/alert.scss +93 -93
- package/dist/base/avatar/Avatar.demo.svelte +41 -41
- package/dist/base/avatar/Avatar.preview.svelte +6 -6
- package/dist/base/avatar/Avatar.svelte +65 -65
- package/dist/base/avatar/avatar.scss +17 -17
- package/dist/base/backdrop/Backdrop.demo.svelte +49 -49
- package/dist/base/backdrop/Backdrop.svelte +78 -78
- package/dist/base/backdrop/backdrop.scss +34 -34
- package/dist/base/badge/Badge.svelte +31 -31
- package/dist/base/badge/badge.scss +19 -19
- package/dist/base/box/Box.demo.svelte +54 -54
- package/dist/base/box/Box.svelte +72 -72
- package/dist/base/box/box.scss +33 -33
- package/dist/base/breadCrumb/BreadCrumb.svelte +23 -23
- package/dist/base/breadCrumb/breadcrumb.scss +11 -11
- package/dist/base/cartouche/Cartouche.demo.svelte +108 -108
- package/dist/base/cartouche/Cartouche.svelte +114 -114
- package/dist/base/cartouche/cartouche.scss +114 -114
- package/dist/base/chipper/Chipper.demo.svelte +45 -45
- package/dist/base/chipper/Chipper.svelte +36 -36
- package/dist/base/chipper/chipper.scss +65 -65
- package/dist/base/columner/Column.svelte +62 -62
- package/dist/base/columner/Columner.demo.svelte +15 -15
- package/dist/base/columner/Columner.svelte +21 -21
- package/dist/base/contentSwitcher/ContentSwitcher.demo.svelte +45 -45
- package/dist/base/contentSwitcher/ContentSwitcher.svelte +63 -63
- package/dist/base/contentSwitcher/content-switcher.scss +22 -22
- package/dist/base/debug/Debug.svelte +21 -21
- package/dist/base/demoer/DemoPage.svelte +40 -40
- package/dist/base/demoer/Demoer.svelte +170 -170
- package/dist/base/demoer/DemoerCode.svelte +45 -45
- package/dist/base/demoer/DemoerComponent.svelte +50 -50
- package/dist/base/divider/Divider.demo.svelte +34 -34
- package/dist/base/divider/Divider.svelte +68 -68
- package/dist/base/divider/divider.scss +19 -19
- package/dist/base/icon/Icon.demo.svelte +24 -24
- package/dist/base/icon/Icon.svelte +117 -117
- package/dist/base/icon/icon.scss +17 -17
- package/dist/base/paper/Paper.demo.svelte +31 -31
- package/dist/base/paper/Paper.svelte +20 -20
- package/dist/base/paper/paper.scss +15 -15
- package/dist/base/titleBar/TitleBar.demo.svelte +30 -30
- package/dist/base/titleBar/TitleBar.svelte +40 -40
- package/dist/base/titleBar/title-bar.scss +29 -29
- package/dist/controls/autocomplete/AutoComplete.demo.svelte +88 -88
- package/dist/controls/autocomplete/AutoComplete.svelte +152 -152
- package/dist/controls/autocomplete/auto-complete.scss +15 -15
- package/dist/controls/button/Button.demo.svelte +165 -165
- package/dist/controls/button/Button.svelte +95 -95
- package/dist/controls/button/ButtonAction.svelte +55 -55
- package/dist/controls/button/ButtonMenu.svelte +55 -55
- package/dist/controls/button/IconButton.svelte +45 -45
- package/dist/controls/button/button-action.scss +8 -8
- package/dist/controls/button/button-menu.scss +36 -36
- package/dist/controls/button/button.scss +293 -293
- package/dist/controls/checkbox/Checkbox.demo.svelte +29 -29
- package/dist/controls/checkbox/Checkbox.svelte +59 -59
- package/dist/controls/checkbox/checkbox.scss +115 -115
- package/dist/controls/confirm/Confirm.demo.svelte +60 -60
- package/dist/controls/confirm/Confirm.preview.svelte +14 -14
- package/dist/controls/confirm/Confirm.svelte +156 -156
- package/dist/controls/confirm/confirm.scss +12 -12
- package/dist/controls/inplaceedit/InPlaceEdit.demo.svelte +41 -41
- package/dist/controls/inplaceedit/InPlaceEdit.svelte +109 -109
- package/dist/controls/progress/Progress.demo.svelte +30 -30
- package/dist/controls/progress/Progress.svelte +26 -26
- package/dist/controls/progress/progress.scss +23 -23
- package/dist/controls/rating/Rating.demo.svelte +45 -45
- package/dist/controls/rating/Rating.svelte +44 -44
- package/dist/controls/rating/rating.scss +9 -9
- package/dist/controls/select/Select.demo.svelte +101 -101
- package/dist/controls/select/Select.svelte +125 -125
- package/dist/controls/select/select.scss +13 -13
- package/dist/controls/slider/Slider.demo.svelte +34 -34
- package/dist/controls/slider/Slider.svelte +153 -153
- package/dist/controls/slider/slider.scss +51 -51
- package/dist/controls/stepper/Stepper.demo.svelte +32 -32
- package/dist/controls/stepper/Stepper.svelte +30 -30
- package/dist/controls/stepper/stepper.scss +23 -23
- package/dist/controls/switch/Switch.demo.svelte +61 -61
- package/dist/controls/switch/Switch.svelte +45 -45
- package/dist/controls/switch/switch.scss +73 -73
- package/dist/controls/textfield/TextField.demo.svelte +79 -79
- package/dist/controls/textfield/TextField.svelte +86 -86
- package/dist/controls/textfield/textfield.scss +68 -68
- package/dist/csss/csss.scss +10 -10
- package/dist/data/dataList/DataList.demo.svelte +151 -151
- package/dist/data/dataList/DataList.preview.svelte +23 -23
- package/dist/data/dataList/DataList.svelte +233 -233
- package/dist/data/dataList/DataListCell.svelte +212 -212
- package/dist/data/dataList/DataListHead.svelte +75 -75
- package/dist/data/dataList/DataListRow.svelte +93 -93
- package/dist/data/dataList/datalist.scss +157 -157
- package/dist/data/finder/Finder.demo.svelte +55 -55
- package/dist/data/finder/Finder.svelte +166 -166
- package/dist/data/finder/finder.scss +14 -14
- package/dist/data/grouper/Grouper.demo.svelte +36 -36
- package/dist/data/grouper/Grouper.svelte +85 -85
- package/dist/data/jsoner/Jsoner.svelte +40 -40
- package/dist/data/list/List.svelte +16 -16
- package/dist/data/list/ListItem.svelte +10 -10
- package/dist/data/list/ListTitle.svelte +8 -8
- package/dist/data/loader/Loader.demo.svelte +95 -95
- package/dist/data/loader/Loader.preview.svelte +7 -7
- package/dist/data/loader/Loader.svelte +99 -99
- package/dist/data/loader/loader.scss +50 -50
- package/dist/data/sorter/Sorter.demo.svelte +62 -62
- package/dist/data/sorter/Sorter.svelte +80 -80
- package/dist/data/sorter/Sorterer.svelte +27 -27
- package/dist/data/sorter/sorterer.scss +11 -11
- package/dist/index.d.ts +58 -57
- package/dist/index.js +58 -57
- package/dist/navigation/drawer/Drawer.demo.svelte +52 -52
- package/dist/navigation/drawer/Drawer.svelte +163 -163
- package/dist/navigation/drawer/drawer.scss +69 -69
- package/dist/navigation/tabs/Tabs.demo.svelte +83 -83
- package/dist/navigation/tabs/Tabs.preview.svelte +22 -22
- package/dist/navigation/tabs/Tabs.svelte +158 -158
- package/dist/navigation/tabs/tabs.scss +92 -92
- package/dist/slotui-css/slotui-css.css +141 -141
- package/dist/slotui-css/slotui-min-css.css +141 -141
- package/dist/styles/slotui-mixins.scss +168 -168
- package/dist/styles/slotui-presets.scss +56 -56
- package/dist/styles/slotuisheet/SlotuiSheet.svelte +36 -36
- package/dist/styles/slotuisheet/SlotyuiSheet.demo.svelte +28 -28
- package/dist/styles/slotuisheet/sheetConfig.scss +7 -7
- package/dist/styles/slotuisheet/slotui-sheet.scss +192 -192
- package/dist/styles/slotuisheet/stylesheet-container.scss +147 -147
- package/dist/styles/slotuisheet/stylesheet.scss +156 -156
- package/dist/types/slotui-ambient.d.ts +27 -27
- package/dist/ui/bootstrapp/BootStrApp.svelte +92 -92
- package/dist/ui/chromeFrame/ChromeFrame.svelte +43 -43
- package/dist/ui/chromeFrame/ChromeFrameButtonList.svelte +33 -33
- package/dist/ui/chromeFrame/ChromeFrameList.svelte +106 -106
- package/dist/ui/chromeFrame/chrome-frame.scss +34 -34
- package/dist/ui/frame/Frame.demo.svelte +48 -48
- package/dist/ui/frame/Frame.svelte +90 -90
- package/dist/ui/frame/frame.scss +46 -46
- package/dist/ui/login/Login.demo.svelte +62 -62
- package/dist/ui/login/Login.svelte +102 -102
- package/dist/ui/marquee/Marquee.demo.svelte +33 -33
- package/dist/ui/marquee/Marquee.svelte +97 -97
- package/dist/ui/marquee/marquee.scss +34 -34
- package/dist/ui/menu/Menu.svelte +9 -9
- package/dist/ui/menu/MenuItem.svelte +9 -9
- package/dist/ui/menu/MenuTitle.svelte +10 -10
- package/dist/ui/menu/menu.scss +61 -61
- package/dist/ui/menuList/MenuList.demo.svelte +73 -73
- package/dist/ui/menuList/MenuList.svelte +143 -143
- package/dist/ui/menuList/MenuListItem.svelte +134 -134
- package/dist/ui/menuList/MenuListTitle.svelte +10 -10
- package/dist/ui/menuList/menu-list.scss +120 -120
- package/dist/ui/panel/Panel.demo.svelte +169 -169
- package/dist/ui/panel/Panel.svelte +96 -96
- package/dist/ui/panel/PanelGrid.svelte +62 -62
- package/dist/ui/panel/PanelSlide.svelte +156 -156
- package/dist/ui/panel/Paneler.svelte +63 -63
- package/dist/ui/panel/panel.scss +32 -32
- package/dist/ui/popper/Popper.demo.svelte +92 -92
- package/dist/ui/popper/Popper.svelte +160 -160
- package/dist/ui/popper/popper.scss +108 -108
- package/dist/ui/preview/Preview.svelte +41 -41
- package/dist/ui/serviceBox/ServiceBox.svelte +24 -24
- package/dist/ui/startMenu/BootMenu.svelte +102 -102
- package/dist/ui/startMenu/boot-menu.scss +86 -86
- package/dist/ui/taskbar/TaskBarContent.svelte +20 -20
- package/dist/ui/taskbar/Taskbar.svelte +26 -26
- package/dist/ui/taskbar/taskbar.scss +28 -28
- package/dist/ui/themeswitcher/ThemeSwitcher.svelte +18 -18
- package/dist/ui/toast/Toast.demo.svelte +19 -19
- package/dist/ui/toast/Toast.svelte +60 -60
- package/dist/ui/toast/Toaster.svelte +18 -18
- package/dist/ui/toggleBar/ToggleBar.demo.svelte +114 -114
- package/dist/ui/toggleBar/ToggleBar.svelte +58 -58
- package/dist/ui/toggleBar/toggle-bar.scss +45 -45
- package/dist/ui/toolBar/ToolBar.demo.svelte +98 -98
- package/dist/ui/toolBar/ToolBar.svelte +30 -30
- package/dist/ui/toolBar/toolbar.scss +32 -32
- package/dist/ui/tree/Tree.demo.svelte +84 -84
- package/dist/ui/tree/Tree.preview.svelte +19 -19
- package/dist/ui/tree/Tree.svelte +182 -182
- package/dist/ui/tree/tree.scss +38 -38
- package/dist/ui/window/Window.demo.svelte +111 -111
- package/dist/ui/window/Window.svelte +177 -177
- package/dist/ui/window/window.scss +66 -66
- package/dist/utils/content/Content.svelte +78 -78
- package/dist/utils/contextRooter/ContextRooter.demo.svelte +33 -33
- package/dist/utils/contextRooter/ContextRooter.svelte +6 -6
- package/dist/utils/css/Css.demo.svelte +5 -5
- package/dist/utils/css/Css.svelte +64 -64
- package/dist/utils/effects/transitions.js +6 -6
- package/dist/utils/looper/Looper.demo.svelte +36 -36
- package/dist/utils/looper/Looper.svelte +47 -47
- package/dist/utils/slotted/Slotted.svelte +21 -21
- package/dist/utils/stylesheet/StyleSheet.demo.svelte +28 -28
- package/dist/utils/stylesheet/StyleSheet.svelte +30 -30
- package/dist/utils/stylesheet/containerConfig.scss +7 -7
- package/dist/utils/stylesheet/stylesheet.scss +147 -147
- package/dist/utils/uses/sx4u/sx4uPreprocess.js +34 -34
- package/package.json +3 -3
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import Popper from './Popper.svelte';
|
|
3
|
-
import Button from '../../controls/button/Button.svelte';
|
|
4
|
-
/* demo */
|
|
5
|
-
import { defaultsArgs, defaultsArgsFromProps } 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
|
-
import { uiPresets } from '../../utils/engine/presets.js';
|
|
10
|
-
/* demo */
|
|
11
|
-
|
|
12
|
-
let parametersSlot: any = {
|
|
13
|
-
autoClose: {
|
|
14
|
-
type: 'boolean',
|
|
15
|
-
values: [true, false]
|
|
16
|
-
},
|
|
17
|
-
stickToHookWidth: {
|
|
18
|
-
type: 'boolean',
|
|
19
|
-
values: [true, false]
|
|
20
|
-
},
|
|
21
|
-
position: {
|
|
22
|
-
type: 'string',
|
|
23
|
-
values: uiPresets.stickyPosition
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
let componentArgsSlot = defaultsArgs(parametersSlot);
|
|
28
|
-
|
|
29
|
-
let codeSlot = `
|
|
30
|
-
<Popper bind:isOpen position="BC" autoClose class="w-large">
|
|
31
|
-
{#snippet popperHolder()}
|
|
32
|
-
<Button
|
|
33
|
-
onclick={() => (isOpen = !isOpen)}
|
|
34
|
-
class="border text-center pointer {isOpen ? 'theme-bg-paper shad-3' : ''}"
|
|
35
|
-
>
|
|
36
|
-
popper
|
|
37
|
-
</Button>
|
|
38
|
-
{/snippet}
|
|
39
|
-
<div class="pad-4">Popper content</div>
|
|
40
|
-
</Popper>`;
|
|
41
|
-
|
|
42
|
-
let codeProps = `
|
|
43
|
-
<Loader
|
|
44
|
-
status={"loading"}
|
|
45
|
-
messages={{
|
|
46
|
-
loading: 'Loading dataset',
|
|
47
|
-
error : 'An error occurred',
|
|
48
|
-
empty : 'Empty results',
|
|
49
|
-
success: 'Success !'
|
|
50
|
-
}}
|
|
51
|
-
emptyIcon="mdi:database-search-outline"
|
|
52
|
-
errorIcon="mdi:alert-circle-outline"
|
|
53
|
-
loadingIcon="mdi:loading"
|
|
54
|
-
successIcon="clarity:success-standard-line" />`;
|
|
55
|
-
|
|
56
|
-
let isOpen = false;
|
|
57
|
-
</script>
|
|
58
|
-
|
|
59
|
-
<ComponentDemo component="Popper" cite="This Popper is the base of all the flyout stuff: it pops">
|
|
60
|
-
<div class="flex-v gap-large">
|
|
61
|
-
<DemoPage code={codeSlot} component="Popper">
|
|
62
|
-
<Demoer componentArgs={componentArgsSlot} parameters={parametersSlot}>
|
|
63
|
-
{#snippet children({ activeParams })}
|
|
64
|
-
<div class="pos-rel">
|
|
65
|
-
<Popper
|
|
66
|
-
bind:isOpen
|
|
67
|
-
position="BC"
|
|
68
|
-
anchor="popper"
|
|
69
|
-
{...activeParams}
|
|
70
|
-
class="w-large marg-t-1"
|
|
71
|
-
>
|
|
72
|
-
{#snippet popperHolder()}
|
|
73
|
-
<Button
|
|
74
|
-
anchor-for="popper"
|
|
75
|
-
onclick={() => (isOpen = !isOpen)}
|
|
76
|
-
style="cursor:pointer"
|
|
77
|
-
class="border text-center pointer {isOpen ? 'theme-bg-paper shad-3' : ''}"
|
|
78
|
-
>
|
|
79
|
-
popper
|
|
80
|
-
</Button>
|
|
81
|
-
{/snippet}
|
|
82
|
-
<div class="pad-4">Popper content</div>
|
|
83
|
-
{#snippet popperRight()}
|
|
84
|
-
cdscdscd
|
|
85
|
-
{/snippet}
|
|
86
|
-
</Popper>
|
|
87
|
-
</div>
|
|
88
|
-
{/snippet}
|
|
89
|
-
</Demoer>
|
|
90
|
-
</DemoPage>
|
|
91
|
-
</div>
|
|
92
|
-
</ComponentDemo>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import Popper from './Popper.svelte';
|
|
3
|
+
import Button from '../../controls/button/Button.svelte';
|
|
4
|
+
/* demo */
|
|
5
|
+
import { defaultsArgs, defaultsArgsFromProps } 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
|
+
import { uiPresets } from '../../utils/engine/presets.js';
|
|
10
|
+
/* demo */
|
|
11
|
+
|
|
12
|
+
let parametersSlot: any = {
|
|
13
|
+
autoClose: {
|
|
14
|
+
type: 'boolean',
|
|
15
|
+
values: [true, false]
|
|
16
|
+
},
|
|
17
|
+
stickToHookWidth: {
|
|
18
|
+
type: 'boolean',
|
|
19
|
+
values: [true, false]
|
|
20
|
+
},
|
|
21
|
+
position: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
values: uiPresets.stickyPosition
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
let componentArgsSlot = defaultsArgs(parametersSlot);
|
|
28
|
+
|
|
29
|
+
let codeSlot = `
|
|
30
|
+
<Popper bind:isOpen position="BC" autoClose class="w-large">
|
|
31
|
+
{#snippet popperHolder()}
|
|
32
|
+
<Button
|
|
33
|
+
onclick={() => (isOpen = !isOpen)}
|
|
34
|
+
class="border text-center pointer {isOpen ? 'theme-bg-paper shad-3' : ''}"
|
|
35
|
+
>
|
|
36
|
+
popper
|
|
37
|
+
</Button>
|
|
38
|
+
{/snippet}
|
|
39
|
+
<div class="pad-4">Popper content</div>
|
|
40
|
+
</Popper>`;
|
|
41
|
+
|
|
42
|
+
let codeProps = `
|
|
43
|
+
<Loader
|
|
44
|
+
status={"loading"}
|
|
45
|
+
messages={{
|
|
46
|
+
loading: 'Loading dataset',
|
|
47
|
+
error : 'An error occurred',
|
|
48
|
+
empty : 'Empty results',
|
|
49
|
+
success: 'Success !'
|
|
50
|
+
}}
|
|
51
|
+
emptyIcon="mdi:database-search-outline"
|
|
52
|
+
errorIcon="mdi:alert-circle-outline"
|
|
53
|
+
loadingIcon="mdi:loading"
|
|
54
|
+
successIcon="clarity:success-standard-line" />`;
|
|
55
|
+
|
|
56
|
+
let isOpen = false;
|
|
57
|
+
</script>
|
|
58
|
+
|
|
59
|
+
<ComponentDemo component="Popper" cite="This Popper is the base of all the flyout stuff: it pops">
|
|
60
|
+
<div class="flex-v gap-large">
|
|
61
|
+
<DemoPage code={codeSlot} component="Popper">
|
|
62
|
+
<Demoer componentArgs={componentArgsSlot} parameters={parametersSlot}>
|
|
63
|
+
{#snippet children({ activeParams })}
|
|
64
|
+
<div class="pos-rel">
|
|
65
|
+
<Popper
|
|
66
|
+
bind:isOpen
|
|
67
|
+
position="BC"
|
|
68
|
+
anchor="popper"
|
|
69
|
+
{...activeParams}
|
|
70
|
+
class="w-large marg-t-1"
|
|
71
|
+
>
|
|
72
|
+
{#snippet popperHolder()}
|
|
73
|
+
<Button
|
|
74
|
+
anchor-for="popper"
|
|
75
|
+
onclick={() => (isOpen = !isOpen)}
|
|
76
|
+
style="cursor:pointer"
|
|
77
|
+
class="border text-center pointer {isOpen ? 'theme-bg-paper shad-3' : ''}"
|
|
78
|
+
>
|
|
79
|
+
popper
|
|
80
|
+
</Button>
|
|
81
|
+
{/snippet}
|
|
82
|
+
<div class="pad-4">Popper content</div>
|
|
83
|
+
{#snippet popperRight()}
|
|
84
|
+
cdscdscd
|
|
85
|
+
{/snippet}
|
|
86
|
+
</Popper>
|
|
87
|
+
</div>
|
|
88
|
+
{/snippet}
|
|
89
|
+
</Demoer>
|
|
90
|
+
</DemoPage>
|
|
91
|
+
</div>
|
|
92
|
+
</ComponentDemo>
|
|
@@ -1,162 +1,162 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { stickTo } from '../../utils/uses/stickTo/stickTo.js';
|
|
3
|
-
import { clickAway } from '../../utils/uses/clickAway/clickAway.js';
|
|
4
|
-
import Slotted from '../../utils/slotted/Slotted.svelte';
|
|
5
|
-
import type { PopperProps } from './types.js';
|
|
6
|
-
import Button from '../../controls/button/Button.svelte';
|
|
7
|
-
|
|
8
|
-
export const toggle = function () {};
|
|
9
|
-
export const hide = function () {
|
|
10
|
-
console.log('hide');
|
|
11
|
-
};
|
|
12
|
-
export const show = function () {
|
|
13
|
-
console.log('show');
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
/** actions for the popper */
|
|
17
|
-
export const actions = {
|
|
18
|
-
toggle: () => {
|
|
19
|
-
console.log('toggle');
|
|
20
|
-
},
|
|
21
|
-
show: () => {
|
|
22
|
-
console.log('show');
|
|
23
|
-
},
|
|
24
|
-
hide: () => {
|
|
25
|
-
console.log('hide');
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
let {
|
|
30
|
-
class: className = '',
|
|
31
|
-
element = $bindable(),
|
|
32
|
-
code = crypto.randomUUID(),
|
|
33
|
-
parentNode,
|
|
34
|
-
stickToHookWidth = false,
|
|
35
|
-
component,
|
|
36
|
-
componentProps = {},
|
|
37
|
-
position = 'BC',
|
|
38
|
-
content,
|
|
39
|
-
autoClose = $bindable(),
|
|
40
|
-
isOpen = $bindable(),
|
|
41
|
-
buttonProps,
|
|
42
|
-
anchor,
|
|
43
|
-
children,
|
|
44
|
-
popperHolder,
|
|
45
|
-
popperLeft,
|
|
46
|
-
popperRight,
|
|
47
|
-
...rest
|
|
48
|
-
}: PopperProps = $props();
|
|
49
|
-
|
|
50
|
-
export const clickedAway = function () {
|
|
51
|
-
const event = new CustomEvent('clickAway', { bubbles: true });
|
|
52
|
-
parentNode?.dispatchEvent(event);
|
|
53
|
-
if (autoClose) isOpen = false;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
export const useStickTo = (node: HTMLElement) => {
|
|
57
|
-
if (position && parentNode) {
|
|
58
|
-
stickTo(node, { parentNode, position, stickToHookWidth });
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
let holderSlotRef: HTMLElement = $state<HTMLElement>() as HTMLElement;
|
|
63
|
-
let zIndex = $state(0);
|
|
64
|
-
let mounted: boolean = $state(false);
|
|
65
|
-
|
|
66
|
-
$effect(() => {
|
|
67
|
-
parentNode;
|
|
68
|
-
anchor;
|
|
69
|
-
if (!anchor) {
|
|
70
|
-
// who is the parent for stickTo ??
|
|
71
|
-
if (parentNode) {
|
|
72
|
-
} else if (popperHolder) {
|
|
73
|
-
// if holderSlot, then make it the stickTo parentNode
|
|
74
|
-
parentNode = holderSlotRef.firstElementChild ?? document.body;
|
|
75
|
-
} else {
|
|
76
|
-
// if no props parentNode, use element.parentNode
|
|
77
|
-
parentNode = element?.parentElement ?? document.body;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
if (anchor) {
|
|
81
|
-
parentNode =
|
|
82
|
-
typeof anchor == 'string'
|
|
83
|
-
? document.querySelector<HTMLElement>(`[anchor-for="${anchor}"]`)
|
|
84
|
-
: anchor;
|
|
85
|
-
}
|
|
86
|
-
mounted = true;
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
$effect(() => {
|
|
90
|
-
let siblings = Array.prototype.slice.call(element?.parentElement?.children ?? []) ?? [];
|
|
91
|
-
zIndex = siblings?.reduce((prev, val) => {
|
|
92
|
-
return val?.style?.zIndex >= prev ? val?.style?.zIndex + 1 : prev;
|
|
93
|
-
}, 0);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
$effect(() => {
|
|
97
|
-
isOpen;
|
|
98
|
-
if (!isOpen) {
|
|
99
|
-
if (element.matches(':popover-open')) {
|
|
100
|
-
element.hidePopover();
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
let hidden = $derived(!(parentNode && ((isOpen && autoClose) || !autoClose)));
|
|
106
|
-
</script>
|
|
107
|
-
|
|
108
|
-
{#if popperHolder}
|
|
109
|
-
<div bind:this={holderSlotRef} style="position:relative;display:contents">
|
|
110
|
-
{@render popperHolder()}
|
|
111
|
-
</div>
|
|
112
|
-
{/if}
|
|
113
|
-
{#if buttonProps}
|
|
114
|
-
<!-- @ts-ignore -->
|
|
115
|
-
<Button bind:element={holderSlotRef} onclick={() => (isOpen = true)} {...buttonProps} />
|
|
116
|
-
{/if}
|
|
117
|
-
<!-- {#if parentNode && ((isOpen && autoClose) || !autoClose)} -->
|
|
118
|
-
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
119
|
-
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
120
|
-
<!-- @ts-ignore -->
|
|
121
|
-
<dialog
|
|
122
|
-
open={isOpen}
|
|
123
|
-
bind:this={element}
|
|
124
|
-
class="popper {className}"
|
|
125
|
-
use:stickTo={{ parentNode, position, stickToHookWidth }}
|
|
126
|
-
use:clickAway={{ action: clickedAway }}
|
|
127
|
-
{...rest}
|
|
128
|
-
style={rest.style}
|
|
129
|
-
style:contentVisibility={!isOpen ? 'hidden' : 'auto'}
|
|
130
|
-
style:display={!isOpen ? 'none' : ''}
|
|
131
|
-
>
|
|
132
|
-
<div style="display:flex;width:100%;height:100%;max-width:100%;max-height:100%;overflow:hidden">
|
|
133
|
-
{#if popperLeft}
|
|
134
|
-
<div style="height:100%;max-height:100%;overflow:hidden;" class="popper-left">
|
|
135
|
-
{@render popperLeft()}
|
|
136
|
-
</div>
|
|
137
|
-
{/if}
|
|
138
|
-
{#if children || component || content}
|
|
139
|
-
<div style="flex:1">
|
|
140
|
-
<Slotted child={children}>
|
|
141
|
-
{#if mounted}
|
|
142
|
-
{#if component}
|
|
143
|
-
<svelte:component this={component} {...componentProps} />
|
|
144
|
-
{/if}
|
|
145
|
-
{#if content}
|
|
146
|
-
{content}
|
|
147
|
-
{/if}
|
|
148
|
-
{/if}
|
|
149
|
-
</Slotted>
|
|
150
|
-
</div>
|
|
151
|
-
{/if}
|
|
152
|
-
{#if popperRight}
|
|
153
|
-
<div class="popper-right">{@render popperRight()}</div>
|
|
154
|
-
{/if}
|
|
155
|
-
</div>
|
|
156
|
-
</dialog>
|
|
157
|
-
|
|
158
|
-
<!-- {/if} -->
|
|
159
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { stickTo } from '../../utils/uses/stickTo/stickTo.js';
|
|
3
|
+
import { clickAway } from '../../utils/uses/clickAway/clickAway.js';
|
|
4
|
+
import Slotted from '../../utils/slotted/Slotted.svelte';
|
|
5
|
+
import type { PopperProps } from './types.js';
|
|
6
|
+
import Button from '../../controls/button/Button.svelte';
|
|
7
|
+
|
|
8
|
+
export const toggle = function () {};
|
|
9
|
+
export const hide = function () {
|
|
10
|
+
console.log('hide');
|
|
11
|
+
};
|
|
12
|
+
export const show = function () {
|
|
13
|
+
console.log('show');
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
/** actions for the popper */
|
|
17
|
+
export const actions = {
|
|
18
|
+
toggle: () => {
|
|
19
|
+
console.log('toggle');
|
|
20
|
+
},
|
|
21
|
+
show: () => {
|
|
22
|
+
console.log('show');
|
|
23
|
+
},
|
|
24
|
+
hide: () => {
|
|
25
|
+
console.log('hide');
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
let {
|
|
30
|
+
class: className = '',
|
|
31
|
+
element = $bindable(),
|
|
32
|
+
code = crypto.randomUUID(),
|
|
33
|
+
parentNode,
|
|
34
|
+
stickToHookWidth = false,
|
|
35
|
+
component,
|
|
36
|
+
componentProps = {},
|
|
37
|
+
position = 'BC',
|
|
38
|
+
content,
|
|
39
|
+
autoClose = $bindable(),
|
|
40
|
+
isOpen = $bindable(),
|
|
41
|
+
buttonProps,
|
|
42
|
+
anchor,
|
|
43
|
+
children,
|
|
44
|
+
popperHolder,
|
|
45
|
+
popperLeft,
|
|
46
|
+
popperRight,
|
|
47
|
+
...rest
|
|
48
|
+
}: PopperProps = $props();
|
|
49
|
+
|
|
50
|
+
export const clickedAway = function () {
|
|
51
|
+
const event = new CustomEvent('clickAway', { bubbles: true });
|
|
52
|
+
parentNode?.dispatchEvent(event);
|
|
53
|
+
if (autoClose) isOpen = false;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export const useStickTo = (node: HTMLElement) => {
|
|
57
|
+
if (position && parentNode) {
|
|
58
|
+
stickTo(node, { parentNode, position, stickToHookWidth });
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
let holderSlotRef: HTMLElement = $state<HTMLElement>() as HTMLElement;
|
|
63
|
+
let zIndex = $state(0);
|
|
64
|
+
let mounted: boolean = $state(false);
|
|
65
|
+
|
|
66
|
+
$effect(() => {
|
|
67
|
+
parentNode;
|
|
68
|
+
anchor;
|
|
69
|
+
if (!anchor) {
|
|
70
|
+
// who is the parent for stickTo ??
|
|
71
|
+
if (parentNode) {
|
|
72
|
+
} else if (popperHolder) {
|
|
73
|
+
// if holderSlot, then make it the stickTo parentNode
|
|
74
|
+
parentNode = holderSlotRef.firstElementChild ?? document.body;
|
|
75
|
+
} else {
|
|
76
|
+
// if no props parentNode, use element.parentNode
|
|
77
|
+
parentNode = element?.parentElement ?? document.body;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (anchor) {
|
|
81
|
+
parentNode =
|
|
82
|
+
typeof anchor == 'string'
|
|
83
|
+
? document.querySelector<HTMLElement>(`[anchor-for="${anchor}"]`)
|
|
84
|
+
: anchor;
|
|
85
|
+
}
|
|
86
|
+
mounted = true;
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
$effect(() => {
|
|
90
|
+
let siblings = Array.prototype.slice.call(element?.parentElement?.children ?? []) ?? [];
|
|
91
|
+
zIndex = siblings?.reduce((prev, val) => {
|
|
92
|
+
return val?.style?.zIndex >= prev ? val?.style?.zIndex + 1 : prev;
|
|
93
|
+
}, 0);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
$effect(() => {
|
|
97
|
+
isOpen;
|
|
98
|
+
if (!isOpen) {
|
|
99
|
+
if (element.matches(':popover-open')) {
|
|
100
|
+
element.hidePopover();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
let hidden = $derived(!(parentNode && ((isOpen && autoClose) || !autoClose)));
|
|
106
|
+
</script>
|
|
107
|
+
|
|
108
|
+
{#if popperHolder}
|
|
109
|
+
<div bind:this={holderSlotRef} style="position:relative;display:contents">
|
|
110
|
+
{@render popperHolder()}
|
|
111
|
+
</div>
|
|
112
|
+
{/if}
|
|
113
|
+
{#if buttonProps}
|
|
114
|
+
<!-- @ts-ignore -->
|
|
115
|
+
<Button bind:element={holderSlotRef} onclick={() => (isOpen = true)} {...buttonProps} />
|
|
116
|
+
{/if}
|
|
117
|
+
<!-- {#if parentNode && ((isOpen && autoClose) || !autoClose)} -->
|
|
118
|
+
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
119
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
120
|
+
<!-- @ts-ignore -->
|
|
121
|
+
<dialog
|
|
122
|
+
open={isOpen}
|
|
123
|
+
bind:this={element}
|
|
124
|
+
class="popper {className}"
|
|
125
|
+
use:stickTo={{ parentNode, position, stickToHookWidth }}
|
|
126
|
+
use:clickAway={{ action: clickedAway }}
|
|
127
|
+
{...rest}
|
|
128
|
+
style={rest.style}
|
|
129
|
+
style:contentVisibility={!isOpen ? 'hidden' : 'auto'}
|
|
130
|
+
style:display={!isOpen ? 'none' : ''}
|
|
131
|
+
>
|
|
132
|
+
<div style="display:flex;width:100%;height:100%;max-width:100%;max-height:100%;overflow:hidden">
|
|
133
|
+
{#if popperLeft}
|
|
134
|
+
<div style="height:100%;max-height:100%;overflow:hidden;" class="popper-left">
|
|
135
|
+
{@render popperLeft()}
|
|
136
|
+
</div>
|
|
137
|
+
{/if}
|
|
138
|
+
{#if children || component || content}
|
|
139
|
+
<div style="flex:1">
|
|
140
|
+
<Slotted child={children}>
|
|
141
|
+
{#if mounted}
|
|
142
|
+
{#if component}
|
|
143
|
+
<svelte:component this={component} {...componentProps} />
|
|
144
|
+
{/if}
|
|
145
|
+
{#if content}
|
|
146
|
+
{content}
|
|
147
|
+
{/if}
|
|
148
|
+
{/if}
|
|
149
|
+
</Slotted>
|
|
150
|
+
</div>
|
|
151
|
+
{/if}
|
|
152
|
+
{#if popperRight}
|
|
153
|
+
<div class="popper-right">{@render popperRight()}</div>
|
|
154
|
+
{/if}
|
|
155
|
+
</div>
|
|
156
|
+
</dialog>
|
|
157
|
+
|
|
158
|
+
<!-- {/if} -->
|
|
159
|
+
|
|
160
160
|
<style global>:root {
|
|
161
161
|
--popper-border-radius: var(--sld-radius-tiny);
|
|
162
162
|
--popper-box-shadow: var(--sld-elevation-4);
|
|
@@ -241,4 +241,4 @@
|
|
|
241
241
|
:global(dialog.popper) {
|
|
242
242
|
padding-block: 0;
|
|
243
243
|
padding-inline: 0;
|
|
244
|
-
}</style>
|
|
244
|
+
}</style>
|