@pajohns/flowbite-svelte 0.1.2 → 0.1.3
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/modal/Modal.svelte +64 -5
- package/dist/modal/Modal.svelte.d.ts +11 -0
- package/dist/types.d.ts +11 -0
- package/package.json +1 -1
package/dist/modal/Modal.svelte
CHANGED
|
@@ -23,28 +23,74 @@
|
|
|
23
23
|
footerClass,
|
|
24
24
|
size = "md",
|
|
25
25
|
placement,
|
|
26
|
-
class:
|
|
26
|
+
class: classNameProp,
|
|
27
27
|
classes,
|
|
28
28
|
transitionParams,
|
|
29
29
|
transition = fade,
|
|
30
30
|
fullscreen = false,
|
|
31
|
+
// Custom passm8 props
|
|
32
|
+
zIndexLayer,
|
|
33
|
+
toggle,
|
|
34
|
+
classDialog,
|
|
35
|
+
classBody,
|
|
36
|
+
classHeader,
|
|
37
|
+
classFooter,
|
|
38
|
+
className,
|
|
39
|
+
centered = false,
|
|
40
|
+
returnFocusAfterClose = true,
|
|
41
|
+
onclose,
|
|
42
|
+
onopen,
|
|
31
43
|
...restProps
|
|
32
44
|
}: ModalProps = $props();
|
|
33
45
|
|
|
46
|
+
// Handle className alias for class
|
|
47
|
+
const resolvedClassName = $derived(classNameProp ?? className);
|
|
48
|
+
|
|
49
|
+
// Handle centered as alias for placement="center"
|
|
50
|
+
const resolvedPlacement = $derived(centered ? "center" : placement);
|
|
51
|
+
|
|
52
|
+
// Handle class aliases (classBody -> bodyClass, etc.)
|
|
53
|
+
const resolvedBodyClass = $derived(bodyClass ?? classBody);
|
|
54
|
+
const resolvedHeaderClass = $derived(headerClass ?? classHeader);
|
|
55
|
+
const resolvedFooterClass = $derived(footerClass ?? classFooter);
|
|
56
|
+
|
|
34
57
|
warnThemeDeprecation(
|
|
35
58
|
"Modal",
|
|
36
|
-
untrack(() => ({ headerClass, bodyClass, footerClass, closeBtnClass })),
|
|
59
|
+
untrack(() => ({ headerClass: resolvedHeaderClass, bodyClass: resolvedBodyClass, footerClass: resolvedFooterClass, closeBtnClass })),
|
|
37
60
|
{ bodyClass: "body", headerClass: "header", footerClass: "footer", closeBtnClass: "close" }
|
|
38
61
|
);
|
|
39
62
|
|
|
40
|
-
const styling = $derived(classes ?? { header:
|
|
63
|
+
const styling = $derived(classes ?? { header: resolvedHeaderClass, body: resolvedBodyClass, footer: resolvedFooterClass, close: closeBtnClass });
|
|
41
64
|
|
|
42
65
|
const theme = $derived(getTheme("modal"));
|
|
43
66
|
|
|
44
67
|
const paramsDefault = { duration: 100, easing: sineIn };
|
|
45
68
|
const paramsOptions = $derived(transitionParams ?? paramsDefault);
|
|
46
69
|
|
|
47
|
-
const { base, header: headerCls, footer: footerCls, body } = $derived(modalStyle({ placement, size }));
|
|
70
|
+
const { base, header: headerCls, footer: footerCls, body } = $derived(modalStyle({ placement: resolvedPlacement, size }));
|
|
71
|
+
|
|
72
|
+
// Z-index layer styling
|
|
73
|
+
const zIndexStyle = $derived(zIndexLayer ? `z-index: ${zIndexLayer * 10};` : undefined);
|
|
74
|
+
|
|
75
|
+
// Track open state changes for callbacks
|
|
76
|
+
let prevOpen = $state(open);
|
|
77
|
+
$effect(() => {
|
|
78
|
+
if (open !== prevOpen) {
|
|
79
|
+
if (open) {
|
|
80
|
+
onopen?.();
|
|
81
|
+
} else {
|
|
82
|
+
onclose?.();
|
|
83
|
+
}
|
|
84
|
+
prevOpen = open;
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// Handle toggle prop - if provided, use it to close the modal
|
|
89
|
+
function handleCancel() {
|
|
90
|
+
if (toggle) {
|
|
91
|
+
toggle();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
48
94
|
</script>
|
|
49
95
|
|
|
50
96
|
<Dialog
|
|
@@ -54,8 +100,10 @@
|
|
|
54
100
|
transitionParams={paramsOptions}
|
|
55
101
|
{classes}
|
|
56
102
|
{permanent}
|
|
103
|
+
oncancel={toggle ? handleCancel : undefined}
|
|
57
104
|
{...restProps}
|
|
58
|
-
class={base({ fullscreen, class: clsx(theme?.base,
|
|
105
|
+
class={base({ fullscreen, class: clsx(theme?.base, resolvedClassName, classDialog) })}
|
|
106
|
+
style={zIndexStyle}
|
|
59
107
|
>
|
|
60
108
|
{#if title || header}
|
|
61
109
|
<div class={headerCls({ class: clsx(theme?.header, styling.header) })}>
|
|
@@ -103,5 +151,16 @@
|
|
|
103
151
|
@prop transitionParams
|
|
104
152
|
@prop transition = fade
|
|
105
153
|
@prop fullscreen = false
|
|
154
|
+
@prop zIndexLayer - Controls z-index layering (multiplied by 10)
|
|
155
|
+
@prop toggle - Function to toggle modal open/close state
|
|
156
|
+
@prop classDialog - Additional class for the dialog element
|
|
157
|
+
@prop classBody - Alias for bodyClass
|
|
158
|
+
@prop classHeader - Alias for headerClass
|
|
159
|
+
@prop classFooter - Alias for footerClass
|
|
160
|
+
@prop className - Alias for class
|
|
161
|
+
@prop centered - Shorthand for placement="center"
|
|
162
|
+
@prop returnFocusAfterClose - Whether to return focus after close (default: true)
|
|
163
|
+
@prop onclose - Callback when modal closes
|
|
164
|
+
@prop onopen - Callback when modal opens
|
|
106
165
|
@prop ...restProps
|
|
107
166
|
-->
|
|
@@ -22,6 +22,17 @@ import type { ModalProps } from "..";
|
|
|
22
22
|
* @prop transitionParams
|
|
23
23
|
* @prop transition = fade
|
|
24
24
|
* @prop fullscreen = false
|
|
25
|
+
* @prop zIndexLayer - Controls z-index layering (multiplied by 10)
|
|
26
|
+
* @prop toggle - Function to toggle modal open/close state
|
|
27
|
+
* @prop classDialog - Additional class for the dialog element
|
|
28
|
+
* @prop classBody - Alias for bodyClass
|
|
29
|
+
* @prop classHeader - Alias for headerClass
|
|
30
|
+
* @prop classFooter - Alias for footerClass
|
|
31
|
+
* @prop className - Alias for class
|
|
32
|
+
* @prop centered - Shorthand for placement="center"
|
|
33
|
+
* @prop returnFocusAfterClose - Whether to return focus after close (default: true)
|
|
34
|
+
* @prop onclose - Callback when modal closes
|
|
35
|
+
* @prop onopen - Callback when modal opens
|
|
25
36
|
* @prop ...restProps
|
|
26
37
|
*/
|
|
27
38
|
declare const Modal: import("svelte").Component<ModalProps, {}, "open">;
|
package/dist/types.d.ts
CHANGED
|
@@ -975,6 +975,17 @@ export interface ModalProps extends ModalVariants, Omit<DialogProps, "classes">
|
|
|
975
975
|
footerClass?: ClassValue;
|
|
976
976
|
closeBtnClass?: ClassValue;
|
|
977
977
|
fullscreen?: boolean;
|
|
978
|
+
zIndexLayer?: number;
|
|
979
|
+
toggle?: () => void;
|
|
980
|
+
classDialog?: ClassValue;
|
|
981
|
+
classBody?: ClassValue;
|
|
982
|
+
classHeader?: ClassValue;
|
|
983
|
+
classFooter?: ClassValue;
|
|
984
|
+
className?: ClassValue;
|
|
985
|
+
centered?: boolean;
|
|
986
|
+
returnFocusAfterClose?: boolean;
|
|
987
|
+
onclose?: () => void;
|
|
988
|
+
onopen?: () => void;
|
|
978
989
|
}
|
|
979
990
|
export interface MenuProps extends SVGAttributes<SVGSVGElement> {
|
|
980
991
|
size?: string;
|