@marianmeres/stuic 1.125.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 +52 -37
- 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,94 +1,150 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { onClickOutside } from "runed";
|
|
3
|
+
import { onMount, tick, type Snippet } from "svelte";
|
|
4
|
+
import { focusTrap } from "../../actions/focus-trap.js";
|
|
5
|
+
import { stopPropagation } from "../../utils/event-modifiers.js";
|
|
6
|
+
import { twMerge } from "../../utils/tw-merge.js";
|
|
7
|
+
import { createClog } from "@marianmeres/clog";
|
|
8
|
+
import { waitForNextRepaint } from "../../utils/paint.js";
|
|
9
|
+
|
|
10
|
+
const clog = createClog("ModalDialog").debug;
|
|
11
|
+
|
|
12
|
+
interface Props {
|
|
13
|
+
// idea is, that the `dialog` element, should not be needed to customize
|
|
14
|
+
classDialog?: string;
|
|
15
|
+
class?: string;
|
|
16
|
+
children: Snippet;
|
|
17
|
+
noClickOutsideClose?: boolean;
|
|
18
|
+
noEscapeClose?: boolean;
|
|
19
|
+
// optional ui hint
|
|
20
|
+
type?: string;
|
|
21
|
+
// pre close hooks... escape is considered special close strategy which may be
|
|
22
|
+
// handled separately
|
|
23
|
+
preEscapeClose?: () => any;
|
|
24
|
+
preClose?: () => any;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
let {
|
|
28
|
+
class: classProp,
|
|
29
|
+
classDialog,
|
|
30
|
+
children,
|
|
31
|
+
noClickOutsideClose,
|
|
32
|
+
type,
|
|
33
|
+
noEscapeClose,
|
|
34
|
+
preEscapeClose,
|
|
35
|
+
preClose,
|
|
36
|
+
}: Props = $props();
|
|
5
37
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const _handleClick = (e) => {
|
|
49
|
-
if (_open) {
|
|
50
|
-
e.stopPropagation();
|
|
51
|
-
if (closeOnOutsideClick && e.target === _el)
|
|
52
|
-
return close();
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
_el.addEventListener("click", _handleClick);
|
|
56
|
-
_unsubs.push(() => _el.removeEventListener("click", _handleClick));
|
|
57
|
-
return () => _unsubs.forEach((fn) => fn());
|
|
58
|
-
});
|
|
38
|
+
let visible = $state(false);
|
|
39
|
+
let dialog = $state<HTMLDialogElement>()!;
|
|
40
|
+
let box = $state<HTMLDivElement>()!;
|
|
41
|
+
let _opener: undefined | null | HTMLElement = $state();
|
|
42
|
+
|
|
43
|
+
export function open(openerOrEvent?: null | HTMLElement | MouseEvent) {
|
|
44
|
+
visible = true;
|
|
45
|
+
setOpener(
|
|
46
|
+
(openerOrEvent as any)?.currentTarget ?? openerOrEvent ?? document.activeElement
|
|
47
|
+
);
|
|
48
|
+
// clog("will showModal");
|
|
49
|
+
// dialog must be rendered in the DOM before it can be opened...
|
|
50
|
+
waitForNextRepaint().then(() => {
|
|
51
|
+
// clog("dialog.showModal()");
|
|
52
|
+
dialog.showModal();
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function close() {
|
|
57
|
+
(async () => {
|
|
58
|
+
const allowed = await preClose?.();
|
|
59
|
+
// explicit false prevents close
|
|
60
|
+
if (allowed !== false) {
|
|
61
|
+
// clog("dialog.close()");
|
|
62
|
+
dialog?.close();
|
|
63
|
+
visible = false;
|
|
64
|
+
_opener?.focus();
|
|
65
|
+
_opener = null;
|
|
66
|
+
}
|
|
67
|
+
})();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function setOpener(opener?: null | HTMLElement) {
|
|
71
|
+
_opener = opener;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
onClickOutside(
|
|
75
|
+
() => box,
|
|
76
|
+
() => !noClickOutsideClose && close()
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
// $inspect("Modal dialog mounted, is visible:", visible).with(clog);
|
|
59
80
|
</script>
|
|
60
81
|
|
|
61
|
-
<!--
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
82
|
+
<!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
|
|
83
|
+
{#if visible}
|
|
84
|
+
<dialog
|
|
85
|
+
bind:this={dialog}
|
|
86
|
+
use:focusTrap
|
|
87
|
+
data-type={type}
|
|
88
|
+
class={twMerge(
|
|
89
|
+
"stuic-modal-dialog",
|
|
90
|
+
"fixed inset-4 m-auto size-auto",
|
|
91
|
+
"flex justify-center items-center",
|
|
92
|
+
"focus:outline-none focus-visible:outline-none",
|
|
93
|
+
"bg-transparent backdrop:bg-black/40",
|
|
94
|
+
classDialog
|
|
95
|
+
)}
|
|
96
|
+
onkeydown={async (e) => {
|
|
97
|
+
if (e.key === "Escape" && visible) {
|
|
98
|
+
clog("on Escape keydown, preventing default and stopping propagation");
|
|
99
|
+
|
|
100
|
+
// do not allow built-in close on escape
|
|
101
|
+
e.preventDefault();
|
|
102
|
+
// do not bubble
|
|
103
|
+
e.stopPropagation();
|
|
104
|
+
// ???: do not allow additional onkeydown listeners on this dialog (should there be any...)
|
|
105
|
+
e.stopImmediatePropagation();
|
|
106
|
+
|
|
107
|
+
if (!noEscapeClose) {
|
|
108
|
+
// explicit false prevents close
|
|
109
|
+
let allowed = await preEscapeClose?.();
|
|
110
|
+
if (allowed !== false) {
|
|
111
|
+
// `preClose` will be handled next
|
|
112
|
+
close();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}}
|
|
117
|
+
>
|
|
118
|
+
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
119
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
71
120
|
<!--
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
121
|
+
The `onpointerdown={stopPropagation()}` is for cases where we have
|
|
122
|
+
multiple dialogs on top of each other (which is questionable by itself) and we
|
|
123
|
+
do not want close the below ones just by interacting (clicking) on the top one
|
|
124
|
+
(the `onClickOutside` uses `onpointerdown` with potential `onclick`)
|
|
75
125
|
-->
|
|
76
|
-
<div
|
|
77
|
-
|
|
126
|
+
<div
|
|
127
|
+
bind:this={box}
|
|
128
|
+
onpointerdown={stopPropagation()}
|
|
129
|
+
onclick={stopPropagation()}
|
|
130
|
+
data-type={type}
|
|
131
|
+
class={twMerge(
|
|
132
|
+
`box relative size-full overflow-auto
|
|
133
|
+
text-black dark:text-white bg-white dark:bg-neutral-800`,
|
|
134
|
+
classProp
|
|
135
|
+
)}
|
|
136
|
+
>
|
|
137
|
+
{@render children?.()}
|
|
78
138
|
</div>
|
|
79
|
-
|
|
80
|
-
|
|
139
|
+
</dialog>
|
|
140
|
+
{/if}
|
|
81
141
|
|
|
82
142
|
<style>
|
|
83
|
-
dialog
|
|
84
|
-
animation:
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
dialog.slow[open]::backdrop {
|
|
88
|
-
animation: fade 0.5s ease-out;
|
|
143
|
+
dialog[open]::backdrop {
|
|
144
|
+
animation: fadeIn 0.15s ease-out;
|
|
89
145
|
}
|
|
90
146
|
|
|
91
|
-
@keyframes
|
|
147
|
+
@keyframes fadeIn {
|
|
92
148
|
from {
|
|
93
149
|
opacity: 0;
|
|
94
150
|
}
|
|
@@ -1,39 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
closeOnOutsideClick?: boolean;
|
|
12
|
-
closeOnEscape?: boolean;
|
|
13
|
-
class?: string;
|
|
14
|
-
style?: string;
|
|
15
|
-
backdropFadeIn?: false | "normal" | "slow";
|
|
16
|
-
toggle?: () => void;
|
|
17
|
-
open?: () => void;
|
|
18
|
-
close?: () => void;
|
|
19
|
-
isOpen?: Writable<boolean>;
|
|
20
|
-
};
|
|
21
|
-
events: {
|
|
22
|
-
[evt: string]: CustomEvent<any>;
|
|
23
|
-
};
|
|
24
|
-
slots: {
|
|
25
|
-
default: {};
|
|
26
|
-
};
|
|
27
|
-
exports?: {} | undefined;
|
|
28
|
-
bindings?: string | undefined;
|
|
29
|
-
};
|
|
30
|
-
export type ModalDialogProps = typeof __propDef.props;
|
|
31
|
-
export type ModalDialogEvents = typeof __propDef.events;
|
|
32
|
-
export type ModalDialogSlots = typeof __propDef.slots;
|
|
33
|
-
export default class ModalDialog extends SvelteComponent<ModalDialogProps, ModalDialogEvents, ModalDialogSlots> {
|
|
34
|
-
get toggle(): () => void;
|
|
35
|
-
get open(): () => void;
|
|
36
|
-
get close(): () => void;
|
|
37
|
-
get isOpen(): Writable<boolean>;
|
|
1
|
+
import { type Snippet } from "svelte";
|
|
2
|
+
interface Props {
|
|
3
|
+
classDialog?: string;
|
|
4
|
+
class?: string;
|
|
5
|
+
children: Snippet;
|
|
6
|
+
noClickOutsideClose?: boolean;
|
|
7
|
+
noEscapeClose?: boolean;
|
|
8
|
+
type?: string;
|
|
9
|
+
preEscapeClose?: () => any;
|
|
10
|
+
preClose?: () => any;
|
|
38
11
|
}
|
|
39
|
-
|
|
12
|
+
declare const ModalDialog: import("svelte").Component<Props, {
|
|
13
|
+
open: (openerOrEvent?: null | HTMLElement | MouseEvent) => void;
|
|
14
|
+
close: () => void;
|
|
15
|
+
setOpener: (opener?: null | HTMLElement) => void;
|
|
16
|
+
}, "">;
|
|
17
|
+
type ModalDialog = ReturnType<typeof ModalDialog>;
|
|
18
|
+
export default ModalDialog;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as ModalDialog } from "./ModalDialog.svelte";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as ModalDialog } from "./ModalDialog.svelte";
|