@pajohns/flowbite-svelte 0.1.1 → 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.
@@ -23,28 +23,74 @@
23
23
  footerClass,
24
24
  size = "md",
25
25
  placement,
26
- class: className,
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: headerClass, body: bodyClass, footer: footerClass, close: closeBtnClass });
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, className) })}
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">;
@@ -13,7 +13,9 @@
13
13
  animate = false,
14
14
  size = "h-2.5",
15
15
  labelInside = false,
16
+ labelInsideClass,
16
17
  labelOutside = "",
18
+ outsideSpanClass,
17
19
  easing = cubicOut,
18
20
  color = "primary",
19
21
  class: className,
@@ -50,13 +52,13 @@
50
52
 
51
53
  {#if labelOutside}
52
54
  <div {...restProps} class={outside({ class: clsx(theme?.outside, classes?.outside) })}>
53
- <span class={span({ class: clsx(theme?.span, classes?.span) })}>{labelOutside}</span>
55
+ <span class={span({ class: clsx(theme?.span, classes?.span, outsideSpanClass) })}>{labelOutside}</span>
54
56
  <span class={progressCls({ class: clsx(theme?.progressCls, classes?.progressCls) })}>{progress}%</span>
55
57
  </div>
56
58
  {/if}
57
59
  <div {...restProps} class={base({ class: clsx(size, theme?.base, className) })}>
58
60
  {#if labelInside}
59
- <div class={labelInsideCls({ class: clsx(size, theme?.label, classes?.label) })} style="width: {_progress.current}%">
61
+ <div class={labelInsideCls({ class: clsx(size, theme?.label, classes?.label, labelInsideClass) })} style="width: {_progress.current}%">
60
62
  {_progress.current.toFixed(precision)}%
61
63
  </div>
62
64
  {:else}
@@ -76,7 +78,9 @@
76
78
  @prop animate = false
77
79
  @prop size = "h-2.5"
78
80
  @prop labelInside = false
81
+ @prop labelInsideClass - Custom classes for the label inside the progress bar
79
82
  @prop labelOutside = ""
83
+ @prop outsideSpanClass - Custom classes for the outside label span
80
84
  @prop easing = cubicOut
81
85
  @prop color = "primary"
82
86
  @prop class: className
@@ -10,7 +10,9 @@ import type { ProgressbarProps } from "../types";
10
10
  * @prop animate = false
11
11
  * @prop size = "h-2.5"
12
12
  * @prop labelInside = false
13
+ * @prop labelInsideClass - Custom classes for the label inside the progress bar
13
14
  * @prop labelOutside = ""
15
+ * @prop outsideSpanClass - Custom classes for the outside label span
14
16
  * @prop easing = cubicOut
15
17
  * @prop color = "primary"
16
18
  * @prop class: className
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;
@@ -1103,7 +1114,9 @@ export interface ProgressbarProps extends ProgressbarVariants, Omit<HTMLAttribut
1103
1114
  animate?: boolean;
1104
1115
  size?: string;
1105
1116
  labelInside?: boolean;
1117
+ labelInsideClass?: string;
1106
1118
  labelOutside?: string;
1119
+ outsideSpanClass?: string;
1107
1120
  easing?: EasingFunction;
1108
1121
  }
1109
1122
  export interface ProgressradialProps extends ProgressradialVariants, Omit<HTMLAttributes<HTMLDivElement>, "color"> {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pajohns/flowbite-svelte",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Webapps global fork of flow-bite-svelte with customisation changes",
5
5
  "main": "dist/index.js",
6
6
  "author": {