@marianmeres/stuic 1.126.0 → 2.0.0-next.2
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 +2 -8
- package/dist/_shared.css +2 -0
- package/dist/actions/autogrow.svelte.d.ts +6 -0
- package/dist/actions/autogrow.svelte.js +19 -0
- package/dist/actions/highlight-dragover.svelte.d.ts +7 -0
- package/dist/actions/highlight-dragover.svelte.js +38 -0
- package/dist/actions/index.d.ts +7 -0
- package/dist/actions/index.js +7 -0
- package/dist/actions/on-submit-validity-check.svelte.d.ts +15 -0
- package/dist/actions/on-submit-validity-check.svelte.js +58 -0
- package/dist/actions/tooltip/index.css +34 -0
- package/dist/actions/tooltip/tooltip.svelte.d.ts +13 -0
- package/dist/actions/tooltip/tooltip.svelte.js +203 -0
- package/dist/actions/trim.svelte.d.ts +4 -0
- package/dist/actions/trim.svelte.js +17 -0
- package/dist/actions/{validate.d.ts → validate.svelte.d.ts} +8 -8
- package/dist/actions/validate.svelte.js +90 -0
- package/dist/components/AlertConfirmPrompt/AlertConfirmPrompt.svelte +59 -385
- package/dist/components/AlertConfirmPrompt/AlertConfirmPrompt.svelte.d.ts +9 -101
- package/dist/components/AlertConfirmPrompt/Current.svelte +202 -0
- package/dist/components/AlertConfirmPrompt/Current.svelte.d.ts +22 -0
- package/dist/components/AlertConfirmPrompt/acp-icons.d.ts +7 -2
- package/dist/components/AlertConfirmPrompt/acp-icons.js +8 -8
- package/dist/components/AlertConfirmPrompt/alert-confirm-prompt-stack.svelte.d.ts +63 -0
- package/dist/components/AlertConfirmPrompt/alert-confirm-prompt-stack.svelte.js +144 -0
- package/dist/components/AlertConfirmPrompt/index.d.ts +2 -0
- package/dist/components/AlertConfirmPrompt/index.js +2 -0
- package/dist/components/AnimatedElipsis/AnimatedEllipsis.svelte +47 -0
- package/dist/components/AnimatedElipsis/AnimatedEllipsis.svelte.d.ts +7 -0
- package/dist/components/AnimatedElipsis/index.d.ts +1 -0
- package/dist/components/AnimatedElipsis/index.js +1 -0
- package/dist/components/AppShell/AppShell.svelte +188 -127
- package/dist/components/AppShell/AppShell.svelte.d.ts +62 -43
- package/dist/components/AppShell/index.d.ts +1 -0
- package/dist/components/AppShell/index.js +1 -0
- package/dist/components/Backdrop/Backdrop.svelte +149 -49
- package/dist/components/Backdrop/Backdrop.svelte.d.ts +22 -37
- package/dist/components/Backdrop/index.d.ts +1 -0
- package/dist/components/Backdrop/index.js +1 -0
- package/dist/components/Button/Button.svelte +122 -146
- package/dist/components/Button/Button.svelte.d.ts +22 -80
- package/dist/components/Button/index.css +16 -0
- package/dist/components/Button/index.d.ts +1 -0
- package/dist/components/Button/index.js +1 -0
- package/dist/components/ColResize/ColResize.svelte +0 -0
- package/dist/components/ColResize/ColResize.svelte.d.ts +26 -0
- package/dist/components/ColorScheme/{LocalColorScheme.svelte → ColorSchemeLocal.svelte} +2 -2
- package/dist/components/ColorScheme/ColorSchemeLocal.svelte.d.ts +26 -0
- package/dist/components/ColorScheme/{SystemAwareColorScheme.svelte → ColorSchemeSystemAware.svelte} +4 -4
- package/dist/components/ColorScheme/ColorSchemeSystemAware.svelte.d.ts +26 -0
- package/dist/components/ColorScheme/color-scheme.d.ts +26 -8
- package/dist/components/ColorScheme/color-scheme.js +40 -16
- package/dist/components/ColorScheme/index.d.ts +3 -0
- package/dist/components/ColorScheme/index.js +3 -0
- package/dist/components/DismissibleMessage/DismissibleMessage.svelte +76 -83
- package/dist/components/DismissibleMessage/DismissibleMessage.svelte.d.ts +16 -37
- package/dist/components/DismissibleMessage/index.css +13 -0
- package/dist/components/DismissibleMessage/index.d.ts +1 -0
- package/dist/components/DismissibleMessage/index.js +1 -0
- package/dist/components/Drawer/Drawer.svelte +155 -84
- package/dist/components/Drawer/Drawer.svelte.d.ts +24 -35
- package/dist/components/Drawer/index.d.ts +1 -0
- package/dist/components/Drawer/index.js +1 -0
- package/dist/components/HoverExpandableWidth/HoverExpandableWidth.svelte +150 -111
- package/dist/components/HoverExpandableWidth/HoverExpandableWidth.svelte.d.ts +16 -29
- package/dist/components/HoverExpandableWidth/index.d.ts +1 -0
- package/dist/components/HoverExpandableWidth/index.js +1 -0
- package/dist/components/Input/FieldCheckbox.svelte +174 -132
- package/dist/components/Input/FieldCheckbox.svelte.d.ts +28 -64
- package/dist/components/Input/FieldFile.svelte +166 -0
- package/dist/components/Input/FieldFile.svelte.d.ts +41 -0
- package/dist/components/Input/FieldInput.svelte +143 -0
- package/dist/components/Input/FieldInput.svelte.d.ts +41 -0
- package/dist/components/Input/FieldLikeButton.svelte +206 -0
- package/dist/components/Input/FieldLikeButton.svelte.d.ts +41 -0
- package/dist/components/Input/FieldOptions.svelte +646 -0
- package/dist/components/Input/FieldOptions.svelte.d.ts +58 -0
- package/dist/components/Input/FieldRadios.svelte +126 -77
- package/dist/components/Input/FieldRadios.svelte.d.ts +23 -61
- package/dist/components/Input/FieldSelect.svelte +160 -239
- package/dist/components/Input/FieldSelect.svelte.d.ts +40 -88
- package/dist/components/Input/FieldSwitch.svelte +132 -0
- package/dist/components/Input/FieldSwitch.svelte.d.ts +41 -0
- package/dist/components/Input/FieldTextarea.svelte +146 -0
- package/dist/components/Input/FieldTextarea.svelte.d.ts +44 -0
- package/dist/components/Input/Fieldset.svelte +21 -17
- package/dist/components/Input/Fieldset.svelte.d.ts +10 -27
- package/dist/components/Input/_internal/FieldRadioInternal.svelte +186 -0
- package/dist/components/Input/_internal/FieldRadioInternal.svelte.d.ts +30 -0
- package/dist/components/Input/_internal/InputWrap.svelte +216 -0
- package/dist/components/Input/_internal/InputWrap.svelte.d.ts +36 -0
- package/dist/components/Input/index.css +134 -0
- package/dist/components/Input/index.d.ts +11 -0
- package/dist/components/Input/index.js +11 -0
- package/dist/components/Input/types.d.ts +11 -0
- package/dist/components/KbdShortcut/KbdShortcut.svelte +89 -0
- package/dist/components/KbdShortcut/KbdShortcut.svelte.d.ts +17 -0
- package/dist/components/KbdShortcut/index.d.ts +1 -0
- package/dist/components/KbdShortcut/index.js +1 -0
- package/dist/components/Modal/Modal.svelte +127 -0
- package/dist/components/Modal/Modal.svelte.d.ts +32 -0
- package/dist/components/Modal/index.d.ts +1 -0
- package/dist/components/Modal/index.js +1 -0
- package/dist/components/ModalDialog/ModalDialog.svelte +137 -81
- package/dist/components/ModalDialog/ModalDialog.svelte.d.ts +17 -38
- package/dist/components/ModalDialog/index.d.ts +1 -0
- package/dist/components/ModalDialog/index.js +1 -0
- package/dist/components/Notifications/Notifications.svelte +259 -173
- package/dist/components/Notifications/Notifications.svelte.d.ts +32 -60
- package/dist/components/Notifications/index.css +12 -0
- package/dist/components/Notifications/index.d.ts +2 -0
- package/dist/components/Notifications/index.js +2 -0
- package/dist/components/Notifications/notifications-icons.d.ts +1 -1
- package/dist/components/Notifications/notifications-icons.js +4 -4
- package/dist/components/Notifications/notifications-stack.svelte.d.ts +89 -0
- package/dist/components/Notifications/notifications-stack.svelte.js +161 -0
- package/dist/components/Progress/Progress.svelte +26 -0
- package/dist/components/Progress/Progress.svelte.d.ts +10 -0
- package/dist/components/Progress/_internal/Bar.svelte +31 -0
- package/dist/components/Progress/_internal/Bar.svelte.d.ts +10 -0
- package/dist/components/Progress/_internal/Circle.svelte +10 -0
- package/dist/components/Progress/_internal/Circle.svelte.d.ts +7 -0
- package/dist/components/Progress/index.css +7 -0
- package/dist/components/Progress/index.d.ts +1 -0
- package/dist/components/Progress/index.js +1 -0
- package/dist/components/Spinner/Spinner.svelte +56 -41
- package/dist/components/Spinner/Spinner.svelte.d.ts +10 -22
- package/dist/components/Spinner/index.d.ts +1 -0
- package/dist/components/Spinner/index.js +1 -0
- package/dist/components/Switch/Switch.svelte +158 -118
- package/dist/components/Switch/Switch.svelte.d.ts +25 -66
- package/dist/components/Switch/SwitchButton.svelte +131 -0
- package/dist/components/Switch/SwitchButton.svelte.d.ts +21 -0
- package/dist/components/Switch/index.css +7 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Switch/index.js +2 -0
- package/dist/components/Thc/Thc.svelte +67 -10
- package/dist/components/Thc/Thc.svelte.d.ts +18 -22
- package/dist/components/Thc/index.d.ts +1 -0
- package/dist/components/Thc/index.js +1 -0
- package/dist/components/TwCheck/TwCheck.svelte +34 -0
- package/dist/components/TwCheck/TwCheck.svelte.d.ts +10 -0
- package/dist/components/TwCheck/index.css +5 -0
- package/dist/components/TwCheck/index.d.ts +1 -0
- package/dist/components/TwCheck/index.js +1 -0
- package/dist/components/X/X.svelte +12 -5
- package/dist/components/X/X.svelte.d.ts +6 -18
- package/dist/components/X/index.d.ts +1 -0
- package/dist/components/X/index.js +1 -0
- package/dist/index.css +26 -0
- package/dist/index.d.ts +21 -39
- package/dist/index.js +23 -54
- package/dist/types.d.ts +251 -2
- package/dist/types.js +248 -0
- package/dist/utils/breakpoint.svelte.d.ts +19 -0
- package/dist/utils/breakpoint.svelte.js +42 -0
- package/dist/utils/debounce.d.ts +13 -0
- package/dist/utils/debounce.js +22 -0
- package/dist/utils/device-pointer.svelte.d.ts +11 -0
- package/dist/utils/device-pointer.svelte.js +26 -0
- package/dist/utils/event-modifiers.d.ts +4 -0
- package/dist/utils/event-modifiers.js +29 -0
- package/dist/utils/get-id.d.ts +1 -1
- package/dist/utils/get-id.js +3 -1
- package/dist/utils/index.d.ts +21 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/is-browser.d.ts +1 -0
- package/dist/utils/is-browser.js +5 -0
- package/dist/utils/is-mac.d.ts +1 -0
- package/dist/utils/is-mac.js +11 -0
- package/dist/utils/maybe-json-parse.d.ts +1 -0
- package/dist/utils/maybe-json-parse.js +12 -0
- package/dist/utils/maybe-json-stringify.d.ts +1 -0
- package/dist/utils/maybe-json-stringify.js +11 -0
- package/dist/utils/move-array-item.d.ts +4 -0
- package/dist/utils/move-array-item.js +20 -0
- package/dist/utils/omit-pick.d.ts +2 -2
- package/dist/utils/omit-pick.js +10 -8
- package/dist/utils/paint.d.ts +18 -0
- package/dist/utils/paint.js +32 -0
- package/dist/utils/persistent-state.svelte.d.ts +23 -0
- package/dist/utils/persistent-state.svelte.js +48 -0
- package/dist/utils/prefers-reduced-motion.svelte.d.ts +2 -0
- package/dist/utils/prefers-reduced-motion.svelte.js +4 -0
- package/dist/utils/qsa.d.ts +1 -0
- package/dist/utils/qsa.js +3 -0
- package/dist/utils/sleep.d.ts +28 -0
- package/dist/utils/sleep.js +33 -0
- package/dist/utils/storage-abstraction.d.ts +35 -0
- package/dist/utils/storage-abstraction.js +136 -0
- package/dist/utils/str-hash.d.ts +7 -0
- package/dist/utils/str-hash.js +35 -0
- package/dist/utils/throttle.d.ts +1 -0
- package/dist/utils/throttle.js +47 -0
- package/dist/utils/to-integer.d.ts +1 -0
- package/dist/utils/to-integer.js +11 -0
- package/dist/utils/tr.d.ts +5 -0
- package/dist/utils/tr.js +13 -0
- package/dist/utils/tw-merge.d.ts +10 -0
- package/dist/utils/tw-merge.js +16 -0
- package/dist/utils/ucfirst.d.ts +1 -0
- package/dist/utils/ucfirst.js +6 -0
- package/package.json +66 -73
- package/dist/actions/autogrow.d.ts +0 -8
- package/dist/actions/autogrow.js +0 -22
- package/dist/actions/autoscroll.d.ts +0 -21
- package/dist/actions/autoscroll.js +0 -60
- package/dist/actions/drag-drop.d.ts +0 -28
- package/dist/actions/drag-drop.js +0 -152
- package/dist/actions/on-outside.d.ts +0 -9
- package/dist/actions/on-outside.js +0 -27
- package/dist/actions/pre-submit-validity-check.d.ts +0 -3
- package/dist/actions/pre-submit-validity-check.js +0 -21
- package/dist/actions/tooltip/_make-visible.d.ts +0 -3
- package/dist/actions/tooltip/_make-visible.js +0 -25
- package/dist/actions/tooltip/_maybe-pick-safe-placement.d.ts +0 -3
- package/dist/actions/tooltip/_maybe-pick-safe-placement.js +0 -86
- package/dist/actions/tooltip/_set-position.d.ts +0 -2
- package/dist/actions/tooltip/_set-position.js +0 -125
- package/dist/actions/tooltip/tooltip.d.ts +0 -42
- package/dist/actions/tooltip/tooltip.js +0 -299
- package/dist/actions/trim.d.ts +0 -4
- package/dist/actions/trim.js +0 -18
- package/dist/actions/validate.js +0 -80
- package/dist/components/AlertConfirmPrompt/alert-confirm-prompt.d.ts +0 -58
- package/dist/components/AlertConfirmPrompt/alert-confirm-prompt.js +0 -141
- package/dist/components/ColorScheme/LocalColorScheme.svelte.d.ts +0 -25
- package/dist/components/ColorScheme/SystemAwareColorScheme.svelte.d.ts +0 -25
- package/dist/components/Input/Field.svelte +0 -315
- package/dist/components/Input/Field.svelte.d.ts +0 -102
- package/dist/components/Input/PinInput.svelte +0 -151
- package/dist/components/Input/PinInput.svelte.d.ts +0 -51
- package/dist/components/Input/XFieldRadioInternal.svelte +0 -143
- package/dist/components/Input/XFieldRadioInternal.svelte.d.ts +0 -45
- package/dist/components/Notifications/notifications.d.ts +0 -78
- package/dist/components/Notifications/notifications.js +0 -215
- package/dist/components/Popover/Popover.svelte +0 -24
- package/dist/components/Popover/Popover.svelte.d.ts +0 -22
- package/dist/components/Spinner/Spinner.v5.svelte +0 -114
- package/dist/components/Spinner/Spinner.v5.svelte.d.ts +0 -16
- package/dist/utils/calculate-alignment.d.ts +0 -68
- package/dist/utils/calculate-alignment.js +0 -183
- package/dist/utils/device-pointer.d.ts +0 -5
- package/dist/utils/device-pointer.js +0 -10
- package/dist/utils/prefers-reduced-motion.d.ts +0 -6
- package/dist/utils/prefers-reduced-motion.js +0 -26
- package/dist/utils/tw-merge2.d.ts +0 -3
- package/dist/utils/tw-merge2.js +0 -9
- package/dist/utils/tw-types.d.ts +0 -1
- package/dist/utils/window-size.d.ts +0 -22
- package/dist/utils/window-size.js +0 -35
- /package/dist/{utils/tw-types.js → components/Input/types.js} +0 -0
|
@@ -1,206 +1,267 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
export const MAIN_WIDTH = Symbol("MAIN_WIDTH");
|
|
3
|
+
/**
|
|
4
|
+
* Helper utility function which sets document.body height to 100vh, and overflow: hidden.
|
|
5
|
+
* It also returns a function which unsets the full height. So we can write:
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* onMount(appShellSetHtmlBodyHeight)
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* From: https://www.skeleton.dev/components/app-shell
|
|
12
|
+
*
|
|
13
|
+
* The App Shell will need to expand to fill all available space within your app's body tag.
|
|
14
|
+
* Open /src/app.html and add the following classes. This wrapping element is required
|
|
15
|
+
* and the style of display: contents should remain.
|
|
16
|
+
*
|
|
17
|
+
* <body>
|
|
18
|
+
* <div style="display: contents" class="h-full overflow-hidden">%sveltekit.body%</div>
|
|
19
|
+
* </body>
|
|
20
|
+
*
|
|
21
|
+
* Then update your global stylesheet with the following. This will disable overflow for
|
|
22
|
+
* html and body tags to prevent duplicate scroll bars.
|
|
23
|
+
*
|
|
24
|
+
* html, body { @apply h-full overflow-hidden; }
|
|
25
|
+
*/
|
|
26
|
+
export function appShellSetHtmlBodyHeight(): () => any {
|
|
27
|
+
const _set = (flag: boolean) => {
|
|
28
|
+
document.body.style.height = flag ? "100vh" : "auto";
|
|
29
|
+
document.body.style.overflow = flag ? "hidden" : "visible";
|
|
30
|
+
};
|
|
31
|
+
_set(true);
|
|
32
|
+
return () => _set(false);
|
|
33
|
+
}
|
|
9
34
|
</script>
|
|
10
35
|
|
|
11
|
-
<script
|
|
12
|
-
import {
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
36
|
+
<script lang="ts">
|
|
37
|
+
import { setContext, type Snippet } from "svelte";
|
|
38
|
+
import { twMerge } from "../../utils/tw-merge.js";
|
|
39
|
+
|
|
40
|
+
// idea copied from https://www.skeleton.dev/components/app-shell
|
|
41
|
+
// adjusted and tweaked to personal opinion and taste...
|
|
42
|
+
|
|
43
|
+
/* Layout:
|
|
44
|
+
<shell>
|
|
45
|
+
<rail />
|
|
46
|
+
<div>
|
|
47
|
+
<header />
|
|
48
|
+
<content>
|
|
49
|
+
<sidebar-left />
|
|
50
|
+
<page>
|
|
51
|
+
<page-header />
|
|
52
|
+
<page-main />
|
|
53
|
+
<page-footer />
|
|
54
|
+
<page/>
|
|
55
|
+
<sidebar-right />
|
|
56
|
+
</content>
|
|
57
|
+
<footer />
|
|
58
|
+
</div>
|
|
59
|
+
</shell>
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
interface Props {
|
|
63
|
+
id?: string;
|
|
64
|
+
class?: string;
|
|
65
|
+
railClass?: string;
|
|
66
|
+
headerClass?: string;
|
|
67
|
+
contentClass?: string;
|
|
68
|
+
sidebarLeftClass?: string;
|
|
69
|
+
pageClass?: string;
|
|
70
|
+
pageHeaderClass?: string;
|
|
71
|
+
pageMainClass?: string;
|
|
72
|
+
pageFooterClass?: string;
|
|
73
|
+
sidebarRightClass?: string;
|
|
74
|
+
footerClass?: string;
|
|
75
|
+
scrollbarGutter?: "auto" | "stable" | "both-edges";
|
|
76
|
+
pageFlexGrow?: 0 | 1 | 2 | 3 | 4 | 5;
|
|
77
|
+
//
|
|
78
|
+
rail?: Snippet;
|
|
79
|
+
header?: Snippet;
|
|
80
|
+
sidebarLeft?: Snippet;
|
|
81
|
+
pageHeader?: Snippet;
|
|
82
|
+
children?: Snippet;
|
|
83
|
+
pageFooter?: Snippet;
|
|
84
|
+
sidebarRight?: Snippet;
|
|
85
|
+
footer?: Snippet;
|
|
86
|
+
//
|
|
87
|
+
elShell?: HTMLElement;
|
|
88
|
+
elRail?: HTMLElement;
|
|
89
|
+
elHeader?: HTMLElement;
|
|
90
|
+
elSidebarLeft?: HTMLElement;
|
|
91
|
+
elPage?: HTMLElement;
|
|
92
|
+
elPageHeader?: HTMLElement;
|
|
93
|
+
elPageMain?: HTMLElement;
|
|
94
|
+
elPageFooter?: HTMLElement;
|
|
95
|
+
elSidebarRight?: HTMLElement;
|
|
96
|
+
elFooter?: HTMLElement;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
let {
|
|
100
|
+
id = "shell",
|
|
101
|
+
class: classProp,
|
|
102
|
+
railClass,
|
|
103
|
+
headerClass,
|
|
104
|
+
contentClass,
|
|
105
|
+
sidebarLeftClass,
|
|
106
|
+
pageClass,
|
|
107
|
+
pageHeaderClass,
|
|
108
|
+
pageMainClass,
|
|
109
|
+
pageFooterClass,
|
|
110
|
+
sidebarRightClass,
|
|
111
|
+
footerClass,
|
|
112
|
+
scrollbarGutter = "auto",
|
|
113
|
+
pageFlexGrow = 3,
|
|
114
|
+
//
|
|
115
|
+
rail,
|
|
116
|
+
header,
|
|
117
|
+
sidebarLeft,
|
|
118
|
+
pageHeader,
|
|
119
|
+
children,
|
|
120
|
+
pageFooter,
|
|
121
|
+
sidebarRight,
|
|
122
|
+
footer,
|
|
123
|
+
//
|
|
124
|
+
elShell = $bindable(),
|
|
125
|
+
elRail = $bindable(),
|
|
126
|
+
elHeader = $bindable(),
|
|
127
|
+
elSidebarLeft = $bindable(),
|
|
128
|
+
elPage = $bindable(),
|
|
129
|
+
elPageHeader = $bindable(),
|
|
130
|
+
elPageMain = $bindable(),
|
|
131
|
+
elPageFooter = $bindable(),
|
|
132
|
+
elSidebarRight = $bindable(),
|
|
133
|
+
elFooter = $bindable(),
|
|
134
|
+
}: Props = $props();
|
|
135
|
+
|
|
136
|
+
let _sidebarFlexCls = $derived(pageFlexGrow ? "flex-1" : "flex-none");
|
|
137
|
+
|
|
138
|
+
const flexMap = ["flex-1", "flex-1", "flex-[2]", "flex-[3]", "flex-[4]", "flex-[5]"];
|
|
139
|
+
let _pageFlexCls = $derived(flexMap[pageFlexGrow] || "flex-1");
|
|
140
|
+
|
|
141
|
+
// pragmatic use case...
|
|
142
|
+
let mainWidth: number = $state(0);
|
|
143
|
+
setContext(MAIN_WIDTH, {
|
|
144
|
+
get current() {
|
|
145
|
+
return mainWidth;
|
|
146
|
+
},
|
|
147
|
+
});
|
|
74
148
|
</script>
|
|
75
149
|
|
|
76
|
-
<!-- shell -->
|
|
77
150
|
<div
|
|
78
|
-
bind:this={
|
|
151
|
+
bind:this={elShell}
|
|
79
152
|
{id}
|
|
80
153
|
data-shell="shell"
|
|
81
|
-
class={
|
|
154
|
+
class={twMerge("w-full h-full flex overflow-hidden", classProp)}
|
|
82
155
|
>
|
|
83
156
|
<!-- shell > rail -->
|
|
84
|
-
{#if
|
|
157
|
+
{#if rail}
|
|
85
158
|
<div
|
|
86
|
-
bind:this={
|
|
159
|
+
bind:this={elRail}
|
|
87
160
|
data-shell="rail"
|
|
88
|
-
class={
|
|
161
|
+
class={twMerge("flex-none overflow-x-hidden overflow-y-auto", railClass)}
|
|
89
162
|
>
|
|
90
|
-
|
|
163
|
+
{@render rail()}
|
|
91
164
|
</div>
|
|
92
165
|
{/if}
|
|
93
166
|
|
|
94
167
|
<!-- shell > div-->
|
|
95
168
|
<div class="h-full flex-1 flex flex-col overflow-hidden">
|
|
96
169
|
<!-- shell > div > header -->
|
|
97
|
-
{#if
|
|
170
|
+
{#if header}
|
|
98
171
|
<header
|
|
99
|
-
bind:this={
|
|
172
|
+
bind:this={elHeader}
|
|
100
173
|
data-shell="header"
|
|
101
|
-
class={
|
|
174
|
+
class={twMerge("flex-none", headerClass)}
|
|
102
175
|
>
|
|
103
|
-
|
|
176
|
+
{@render header()}
|
|
104
177
|
</header>
|
|
105
178
|
{/if}
|
|
106
179
|
|
|
107
180
|
<!-- shell > div > content -->
|
|
108
181
|
<div
|
|
109
182
|
data-shell="content"
|
|
110
|
-
class={
|
|
183
|
+
class={twMerge("flex-auto w-full h-full flex overflow-hidden", contentClass)}
|
|
111
184
|
>
|
|
112
185
|
<!-- shell > div > content > sidebar-left -->
|
|
113
|
-
{#if
|
|
186
|
+
{#if sidebarLeft}
|
|
114
187
|
<aside
|
|
115
|
-
bind:this={
|
|
188
|
+
bind:this={elSidebarLeft}
|
|
116
189
|
data-shell="sidebar-left"
|
|
117
|
-
class={
|
|
118
|
-
|
|
190
|
+
class={twMerge(
|
|
191
|
+
_sidebarFlexCls,
|
|
192
|
+
"overflow-x-hidden overflow-y-auto w-auto",
|
|
193
|
+
sidebarLeftClass
|
|
119
194
|
)}
|
|
120
195
|
>
|
|
121
|
-
|
|
196
|
+
{@render sidebarLeft()}
|
|
122
197
|
</aside>
|
|
123
198
|
{/if}
|
|
124
199
|
|
|
125
200
|
<!-- shell > div > content > page -->
|
|
126
201
|
<div
|
|
127
|
-
bind:this={
|
|
202
|
+
bind:this={elPage}
|
|
128
203
|
data-shell="page"
|
|
129
|
-
class={
|
|
204
|
+
class={twMerge(_pageFlexCls, "overflow-x-hidden flex flex-col", pageClass)}
|
|
130
205
|
style:scrollbar-gutter={scrollbarGutter}
|
|
131
|
-
on:scroll
|
|
132
206
|
>
|
|
133
207
|
<!-- shell > div > content > page > page-header -->
|
|
134
|
-
{#if
|
|
208
|
+
{#if pageHeader}
|
|
135
209
|
<header
|
|
136
|
-
bind:this={
|
|
210
|
+
bind:this={elPageHeader}
|
|
137
211
|
data-shell="page-header"
|
|
138
|
-
class={
|
|
212
|
+
class={twMerge("flex-none", pageHeaderClass)}
|
|
139
213
|
>
|
|
140
|
-
|
|
214
|
+
{@render pageHeader()}
|
|
141
215
|
</header>
|
|
142
216
|
{/if}
|
|
143
217
|
|
|
144
218
|
<!-- shell > div > content > page > page-main -->
|
|
145
219
|
<main
|
|
146
|
-
bind:this={
|
|
220
|
+
bind:this={elPageMain}
|
|
147
221
|
data-shell="page-main"
|
|
148
|
-
class={
|
|
222
|
+
class={twMerge("flex-auto", pageMainClass)}
|
|
223
|
+
bind:offsetWidth={mainWidth}
|
|
149
224
|
>
|
|
150
|
-
|
|
225
|
+
{@render children?.()}
|
|
151
226
|
</main>
|
|
152
227
|
|
|
153
228
|
<!-- shell > div > content > page > page-footer -->
|
|
154
|
-
{#if
|
|
229
|
+
{#if pageFooter}
|
|
155
230
|
<footer
|
|
156
|
-
bind:this={
|
|
231
|
+
bind:this={elPageFooter}
|
|
157
232
|
data-shell="page-footer"
|
|
158
|
-
class={
|
|
233
|
+
class={twMerge("flex-none", pageFooterClass)}
|
|
159
234
|
>
|
|
160
|
-
|
|
235
|
+
{@render pageFooter()}
|
|
161
236
|
</footer>
|
|
162
237
|
{/if}
|
|
163
238
|
</div>
|
|
164
239
|
|
|
165
240
|
<!-- shell > div > content > sidebar-right -->
|
|
166
|
-
{#if
|
|
241
|
+
{#if sidebarRight}
|
|
167
242
|
<aside
|
|
168
|
-
bind:this={
|
|
243
|
+
bind:this={elSidebarRight}
|
|
169
244
|
data-shell="sidebar-right"
|
|
170
|
-
class={
|
|
171
|
-
|
|
245
|
+
class={twMerge(
|
|
246
|
+
_sidebarFlexCls,
|
|
247
|
+
"overflow-x-hidden overflow-y-auto",
|
|
248
|
+
sidebarRightClass
|
|
172
249
|
)}
|
|
173
250
|
>
|
|
174
|
-
|
|
251
|
+
{@render sidebarRight()}
|
|
175
252
|
</aside>
|
|
176
253
|
{/if}
|
|
177
254
|
</div>
|
|
178
255
|
|
|
179
256
|
<!-- shell > div > footer -->
|
|
180
|
-
{#if
|
|
257
|
+
{#if footer}
|
|
181
258
|
<footer
|
|
182
|
-
bind:this={
|
|
259
|
+
bind:this={elFooter}
|
|
183
260
|
data-shell="footer"
|
|
184
|
-
class={
|
|
261
|
+
class={twMerge("flex-none", footerClass)}
|
|
185
262
|
>
|
|
186
|
-
|
|
263
|
+
{@render footer()}
|
|
187
264
|
</footer>
|
|
188
265
|
{/if}
|
|
189
266
|
</div>
|
|
190
267
|
</div>
|
|
191
|
-
|
|
192
|
-
<style>/* from: https://www.skeleton.dev/components/app-shell
|
|
193
|
-
|
|
194
|
-
The App Shell will need to expand to fill all available space within your app's body tag.
|
|
195
|
-
Open /src/app.html and add the following classes. This wrapping element is required
|
|
196
|
-
and the style of display: contents should remain.
|
|
197
|
-
|
|
198
|
-
<body>
|
|
199
|
-
<div style="display: contents" class="h-full overflow-hidden">%sveltekit.body%</div>
|
|
200
|
-
</body>
|
|
201
|
-
|
|
202
|
-
Then update your global stylesheet with the following. This will disable overflow for
|
|
203
|
-
html and body tags to prevent duplicate scroll bars.
|
|
204
|
-
|
|
205
|
-
html, body { @apply h-full overflow-hidden; }
|
|
206
|
-
*/</style>
|
|
@@ -1,44 +1,63 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
42
|
-
|
|
1
|
+
export declare const MAIN_WIDTH: unique symbol;
|
|
2
|
+
/**
|
|
3
|
+
* Helper utility function which sets document.body height to 100vh, and overflow: hidden.
|
|
4
|
+
* It also returns a function which unsets the full height. So we can write:
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* onMount(appShellSetHtmlBodyHeight)
|
|
8
|
+
* ```
|
|
9
|
+
*
|
|
10
|
+
* From: https://www.skeleton.dev/components/app-shell
|
|
11
|
+
*
|
|
12
|
+
* The App Shell will need to expand to fill all available space within your app's body tag.
|
|
13
|
+
* Open /src/app.html and add the following classes. This wrapping element is required
|
|
14
|
+
* and the style of display: contents should remain.
|
|
15
|
+
*
|
|
16
|
+
* <body>
|
|
17
|
+
* <div style="display: contents" class="h-full overflow-hidden">%sveltekit.body%</div>
|
|
18
|
+
* </body>
|
|
19
|
+
*
|
|
20
|
+
* Then update your global stylesheet with the following. This will disable overflow for
|
|
21
|
+
* html and body tags to prevent duplicate scroll bars.
|
|
22
|
+
*
|
|
23
|
+
* html, body { @apply h-full overflow-hidden; }
|
|
24
|
+
*/
|
|
25
|
+
export declare function appShellSetHtmlBodyHeight(): () => any;
|
|
26
|
+
import { type Snippet } from "svelte";
|
|
27
|
+
interface Props {
|
|
28
|
+
id?: string;
|
|
29
|
+
class?: string;
|
|
30
|
+
railClass?: string;
|
|
31
|
+
headerClass?: string;
|
|
32
|
+
contentClass?: string;
|
|
33
|
+
sidebarLeftClass?: string;
|
|
34
|
+
pageClass?: string;
|
|
35
|
+
pageHeaderClass?: string;
|
|
36
|
+
pageMainClass?: string;
|
|
37
|
+
pageFooterClass?: string;
|
|
38
|
+
sidebarRightClass?: string;
|
|
39
|
+
footerClass?: string;
|
|
40
|
+
scrollbarGutter?: "auto" | "stable" | "both-edges";
|
|
41
|
+
pageFlexGrow?: 0 | 1 | 2 | 3 | 4 | 5;
|
|
42
|
+
rail?: Snippet;
|
|
43
|
+
header?: Snippet;
|
|
44
|
+
sidebarLeft?: Snippet;
|
|
45
|
+
pageHeader?: Snippet;
|
|
46
|
+
children?: Snippet;
|
|
47
|
+
pageFooter?: Snippet;
|
|
48
|
+
sidebarRight?: Snippet;
|
|
49
|
+
footer?: Snippet;
|
|
50
|
+
elShell?: HTMLElement;
|
|
51
|
+
elRail?: HTMLElement;
|
|
52
|
+
elHeader?: HTMLElement;
|
|
53
|
+
elSidebarLeft?: HTMLElement;
|
|
54
|
+
elPage?: HTMLElement;
|
|
55
|
+
elPageHeader?: HTMLElement;
|
|
56
|
+
elPageMain?: HTMLElement;
|
|
57
|
+
elPageFooter?: HTMLElement;
|
|
58
|
+
elSidebarRight?: HTMLElement;
|
|
59
|
+
elFooter?: HTMLElement;
|
|
43
60
|
}
|
|
44
|
-
|
|
61
|
+
declare const AppShell: import("svelte").Component<Props, {}, "elShell" | "elRail" | "elHeader" | "elSidebarLeft" | "elPage" | "elPageHeader" | "elPageMain" | "elPageFooter" | "elSidebarRight" | "elFooter">;
|
|
62
|
+
type AppShell = ReturnType<typeof AppShell>;
|
|
63
|
+
export default AppShell;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as AppShell, appShellSetHtmlBodyHeight, MAIN_WIDTH, } from "./AppShell.svelte";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as AppShell, appShellSetHtmlBodyHeight, MAIN_WIDTH, } from "./AppShell.svelte";
|