bits-ui 0.0.27 → 0.0.28

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.
Files changed (62) hide show
  1. package/dist/bits/accordion/components/AccordionContent.svelte +30 -12
  2. package/dist/bits/accordion/components/AccordionContent.svelte.d.ts +9 -5
  3. package/dist/bits/accordion/types.d.ts +2 -5
  4. package/dist/bits/alert-dialog/components/AlertDialog.svelte +34 -4
  5. package/dist/bits/alert-dialog/components/AlertDialogContent.svelte +35 -3
  6. package/dist/bits/alert-dialog/components/AlertDialogContent.svelte.d.ts +10 -6
  7. package/dist/bits/alert-dialog/components/AlertDialogOverlay.svelte +21 -2
  8. package/dist/bits/alert-dialog/ctx.d.ts +5 -2
  9. package/dist/bits/alert-dialog/ctx.js +1 -1
  10. package/dist/bits/alert-dialog/types.d.ts +3 -6
  11. package/dist/bits/collapsible/components/CollapsibleContent.svelte +22 -1
  12. package/dist/bits/collapsible/components/CollapsibleContent.svelte.d.ts +9 -5
  13. package/dist/bits/collapsible/types.d.ts +2 -5
  14. package/dist/bits/context-menu/components/ContextMenu.svelte +4 -1
  15. package/dist/bits/context-menu/components/ContextMenuContent.svelte +38 -4
  16. package/dist/bits/context-menu/components/ContextMenuContent.svelte.d.ts +9 -5
  17. package/dist/bits/context-menu/components/ContextMenuSubContent.svelte +39 -1
  18. package/dist/bits/context-menu/components/ContextMenuSubContent.svelte.d.ts +9 -5
  19. package/dist/bits/context-menu/components/ContextMenuTrigger.svelte +11 -1
  20. package/dist/bits/context-menu/ctx.d.ts +1 -1
  21. package/dist/bits/context-menu/ctx.js +3 -3
  22. package/dist/bits/context-menu/types.d.ts +4 -9
  23. package/dist/bits/dialog/components/Dialog.svelte +32 -2
  24. package/dist/bits/dialog/components/DialogContent.svelte +37 -6
  25. package/dist/bits/dialog/components/DialogContent.svelte.d.ts +10 -6
  26. package/dist/bits/dialog/components/DialogOverlay.svelte +21 -2
  27. package/dist/bits/dialog/ctx.d.ts +5 -2
  28. package/dist/bits/dialog/ctx.js +1 -1
  29. package/dist/bits/dialog/types.d.ts +3 -6
  30. package/dist/bits/dropdown-menu/components/DropdownMenuContent.svelte +38 -1
  31. package/dist/bits/dropdown-menu/components/DropdownMenuContent.svelte.d.ts +9 -5
  32. package/dist/bits/dropdown-menu/components/DropdownMenuSubContent.svelte +40 -3
  33. package/dist/bits/dropdown-menu/components/DropdownMenuSubContent.svelte.d.ts +9 -5
  34. package/dist/bits/dropdown-menu/types.d.ts +5 -9
  35. package/dist/bits/link-preview/components/LinkPreviewContent.svelte +42 -1
  36. package/dist/bits/link-preview/components/LinkPreviewContent.svelte.d.ts +9 -5
  37. package/dist/bits/link-preview/types.d.ts +2 -5
  38. package/dist/bits/menubar/components/Menubar.svelte +3 -2
  39. package/dist/bits/menubar/components/MenubarContent.svelte +45 -2
  40. package/dist/bits/menubar/components/MenubarSubContent.svelte +63 -7
  41. package/dist/bits/menubar/ctx.d.ts +83 -83
  42. package/dist/bits/menubar/ctx.js +3 -3
  43. package/dist/bits/menubar/types.d.ts +6 -4
  44. package/dist/bits/popover/components/PopoverContent.svelte +23 -2
  45. package/dist/bits/popover/components/PopoverContent.svelte.d.ts +9 -5
  46. package/dist/bits/popover/types.d.ts +2 -5
  47. package/dist/bits/select/components/Select.svelte +3 -0
  48. package/dist/bits/select/components/Select.svelte.d.ts +1 -0
  49. package/dist/bits/select/components/SelectContent.svelte +38 -1
  50. package/dist/bits/select/components/SelectContent.svelte.d.ts +9 -5
  51. package/dist/bits/select/types.d.ts +3 -6
  52. package/dist/bits/tooltip/components/TooltipContent.svelte +37 -2
  53. package/dist/bits/tooltip/components/TooltipContent.svelte.d.ts +10 -6
  54. package/dist/bits/tooltip/types.d.ts +3 -5
  55. package/dist/internal/helpers.d.ts +10 -1
  56. package/dist/internal/helpers.js +55 -0
  57. package/dist/internal/types.d.ts +20 -0
  58. package/package.json +1 -1
  59. package/dist/bits/alert-dialog/components/AlertDialogOverlay.svelte.d.ts +0 -228
  60. package/dist/bits/dialog/components/DialogOverlay.svelte.d.ts +0 -228
  61. package/dist/bits/menubar/components/MenubarContent.svelte.d.ts +0 -229
  62. package/dist/bits/menubar/components/MenubarSubContent.svelte.d.ts +0 -230
@@ -2,24 +2,42 @@
2
2
  import { ctx } from "../ctx.js";
3
3
  export let transition = void 0;
4
4
  export let transitionConfig = void 0;
5
+ export let inTransition = void 0;
6
+ export let inTransitionConfig = void 0;
7
+ export let outTransition = void 0;
8
+ export let outTransitionConfig = void 0;
5
9
  export let asChild = false;
6
10
  const { content, isSelected, props } = ctx.getContent();
7
11
  </script>
8
12
 
9
- {#if asChild}
10
- {#if $isSelected(props)}
11
- <slot builder={$content(props)} />
12
- {/if}
13
- {:else if transition}
13
+ {#if $isSelected(props)}
14
14
  {@const builder = $content(props)}
15
- {#if $isSelected(props)}
16
- <div {...builder} use:builder.action transition:transition={transitionConfig} {...$$restProps}>
15
+ {#if asChild}
16
+ <slot {builder} />
17
+ {:else if transition}
18
+ <div transition:transition|global={transitionConfig} {...builder} use:builder.action {...$$restProps}>
19
+ <slot {builder} />
20
+ </div>
21
+ {:else if inTransition && outTransition}
22
+ <div
23
+ in:inTransition|global={inTransitionConfig}
24
+ out:outTransition|global={outTransitionConfig}
25
+ {...builder} use:builder.action
26
+ {...$$restProps}
27
+ >
28
+ <slot {builder} />
29
+ </div>
30
+ {:else if inTransition}
31
+ <div in:inTransition|global={inTransitionConfig} {...builder} use:builder.action {...$$restProps}>
32
+ <slot {builder} />
33
+ </div>
34
+ {:else if outTransition}
35
+ <div out:outTransition|global={outTransitionConfig} {...builder} use:builder.action {...$$restProps}>
36
+ <slot {builder} />
37
+ </div>
38
+ {:else}
39
+ <div {...$$restProps}>
17
40
  <slot {builder} />
18
41
  </div>
19
42
  {/if}
20
- {:else if $isSelected(props)}
21
- {@const builder = $content(props)}
22
- <div {...builder} use:builder.action {...$$restProps}>
23
- <slot {builder} />
24
- </div>
25
43
  {/if}
@@ -1,9 +1,13 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { Transition } from "../../../internal/index.js";
3
- declare class __sveltets_Render<T extends Transition> {
3
+ declare class __sveltets_Render<T extends Transition, In extends Transition, Out extends Transition> {
4
4
  props(): {
5
5
  transition?: T | undefined;
6
6
  transitionConfig?: import("../../../internal/index.js").TransitionParams<T> | undefined;
7
+ inTransition?: In | undefined;
8
+ inTransitionConfig?: import("../../../internal/index.js").TransitionParams<In> | undefined;
9
+ outTransition?: Out | undefined;
10
+ outTransitionConfig?: import("../../../internal/index.js").TransitionParams<Out> | undefined;
7
11
  asChild?: boolean | undefined;
8
12
  accesskey?: string | null | undefined;
9
13
  autofocus?: boolean | null | undefined;
@@ -223,9 +227,9 @@ declare class __sveltets_Render<T extends Transition> {
223
227
  };
224
228
  };
225
229
  }
226
- export type AccordionContentProps<T extends Transition> = ReturnType<__sveltets_Render<T>['props']>;
227
- export type AccordionContentEvents<T extends Transition> = ReturnType<__sveltets_Render<T>['events']>;
228
- export type AccordionContentSlots<T extends Transition> = ReturnType<__sveltets_Render<T>['slots']>;
229
- export default class AccordionContent<T extends Transition> extends SvelteComponent<AccordionContentProps<T>, AccordionContentEvents<T>, AccordionContentSlots<T>> {
230
+ export type AccordionContentProps<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['props']>;
231
+ export type AccordionContentEvents<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['events']>;
232
+ export type AccordionContentSlots<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['slots']>;
233
+ export default class AccordionContent<T extends Transition, In extends Transition, Out extends Transition> extends SvelteComponent<AccordionContentProps<T, In, Out>, AccordionContentEvents<T, In, Out>, AccordionContentSlots<T, In, Out>> {
230
234
  }
231
235
  export {};
@@ -1,4 +1,4 @@
1
- import type { HTMLDivAttributes, ObjectVariation, Transition, TransitionParams, OmitValue, Expand, OnChangeFn, AsChild } from "../../internal/index.js";
1
+ import type { HTMLDivAttributes, ObjectVariation, Transition, OmitValue, Expand, OnChangeFn, AsChild, TransitionProps } from "../../internal/index.js";
2
2
  import type { ButtonEventHandler } from "../../index.js";
3
3
  import type { CreateAccordionProps, AccordionItemProps as _ItemProps, AccordionHeadingProps as _HeadingProps } from "@melt-ui/svelte";
4
4
  import type { HTMLButtonAttributes } from "svelte/elements";
@@ -11,10 +11,7 @@ type HeaderProps = Expand<{
11
11
  level?: ObjectVariation<_HeadingProps>["level"];
12
12
  } & AsChild> & HTMLDivAttributes;
13
13
  type TriggerProps = AsChild & HTMLButtonAttributes;
14
- type ContentProps<T extends Transition = Transition> = Expand<{
15
- transition?: T;
16
- transitionConfig?: TransitionParams<T>;
17
- } & AsChild> & HTMLDivAttributes;
14
+ type ContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
18
15
  type TriggerEvents = {
19
16
  "m-click": ButtonEventHandler<MouseEvent>;
20
17
  "m-keydown": ButtonEventHandler<KeyboardEvent>;
@@ -1,27 +1,57 @@
1
- <script>import { ctx } from "../ctx.js";
1
+ <script>import { writable } from "svelte/store";
2
+ import { ctx } from "../ctx.js";
3
+ import { onDestroy } from "svelte";
4
+ import { isBrowser } from "@/utils/is.js";
2
5
  export let preventScroll = void 0;
3
6
  export let closeOnEscape = void 0;
4
- export let closeOnOutsideClick = void 0;
7
+ export let closeOnOutsideClick = false;
5
8
  export let portal = void 0;
6
9
  export let forceVisible = true;
7
10
  export let open = void 0;
8
11
  export let onOpenChange = void 0;
12
+ const transitionTimes = writable({});
13
+ const tOpen = writable(open);
14
+ let timeout = 0;
9
15
  const {
10
16
  states: { open: localOpen },
11
17
  updateOption
12
18
  } = ctx.set({
13
- preventScroll,
14
19
  closeOnEscape,
20
+ preventScroll,
15
21
  closeOnOutsideClick,
16
22
  portal,
17
23
  forceVisible,
18
24
  defaultOpen: open,
25
+ transitionTimes,
26
+ tOpen,
19
27
  onOpenChange: ({ next }) => {
20
- open = next;
21
28
  onOpenChange?.(next);
29
+ if (next !== $tOpen) {
30
+ tOpen.set(next);
31
+ if (!next) {
32
+ window.clearTimeout(timeout);
33
+ timeout = window.setTimeout(
34
+ () => {
35
+ localOpen.set(next);
36
+ },
37
+ $transitionTimes.out ? $transitionTimes.out * 0.5 : 0
38
+ );
39
+ open = !next;
40
+ return !next;
41
+ } else {
42
+ open = next;
43
+ return next;
44
+ }
45
+ }
46
+ open = next;
22
47
  return next;
23
48
  }
24
49
  });
50
+ onDestroy(() => {
51
+ if (isBrowser) {
52
+ window.clearTimeout(timeout);
53
+ }
54
+ });
25
55
  $:
26
56
  open !== void 0 && localOpen.set(open);
27
57
  $:
@@ -1,20 +1,52 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
+ import { setTransitionTimes } from "../../../internal/index.js";
2
3
  import { ctx } from "../ctx.js";
3
4
  export let transition = void 0;
4
5
  export let transitionConfig = void 0;
6
+ export let inTransition = void 0;
7
+ export let inTransitionConfig = void 0;
8
+ export let outTransition = void 0;
9
+ export let outTransitionConfig = void 0;
5
10
  export let asChild = false;
6
11
  const {
7
12
  elements: { content },
8
- states: { open }
13
+ transitionTimes,
14
+ tOpen
9
15
  } = ctx.get();
16
+ $:
17
+ setTransitionTimes(transitionTimes, {
18
+ transition,
19
+ transitionConfig,
20
+ inTransition,
21
+ inTransitionConfig,
22
+ outTransition,
23
+ outTransitionConfig
24
+ });
10
25
  </script>
11
26
 
12
- {#if $open}
27
+ {#if $tOpen}
13
28
  {@const builder = $content}
14
29
  {#if asChild}
15
30
  <slot {builder} />
16
31
  {:else if transition}
17
- <div {...builder} use:builder.action {...$$restProps} transition:transition={transitionConfig}>
32
+ <div transition:transition|global={transitionConfig} {...builder} use:builder.action {...$$restProps}>
33
+ <slot {builder} />
34
+ </div>
35
+ {:else if inTransition && outTransition}
36
+ <div
37
+ in:inTransition|global={inTransitionConfig}
38
+ out:outTransition|global={outTransitionConfig}
39
+ {...builder} use:builder.action
40
+ {...$$restProps}
41
+ >
42
+ <slot {builder} />
43
+ </div>
44
+ {:else if inTransition}
45
+ <div in:inTransition|global={inTransitionConfig} {...builder} use:builder.action {...$$restProps}>
46
+ <slot {builder} />
47
+ </div>
48
+ {:else if outTransition}
49
+ <div out:outTransition|global={outTransitionConfig} {...builder} use:builder.action {...$$restProps}>
18
50
  <slot {builder} />
19
51
  </div>
20
52
  {:else}
@@ -1,9 +1,13 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { Transition } from "../../../internal/index.js";
3
- declare class __sveltets_Render<T extends Transition> {
2
+ import { type Transition } from "../../../internal/index.js";
3
+ declare class __sveltets_Render<T extends Transition, In extends Transition, Out extends Transition> {
4
4
  props(): {
5
5
  transition?: T | undefined;
6
6
  transitionConfig?: import("../../../internal/index.js").TransitionParams<T> | undefined;
7
+ inTransition?: In | undefined;
8
+ inTransitionConfig?: import("../../../internal/index.js").TransitionParams<In> | undefined;
9
+ outTransition?: Out | undefined;
10
+ outTransitionConfig?: import("../../../internal/index.js").TransitionParams<Out> | undefined;
7
11
  asChild?: boolean | undefined;
8
12
  accesskey?: string | null | undefined;
9
13
  autofocus?: boolean | null | undefined;
@@ -223,9 +227,9 @@ declare class __sveltets_Render<T extends Transition> {
223
227
  };
224
228
  };
225
229
  }
226
- export type AlertDialogContentProps<T extends Transition> = ReturnType<__sveltets_Render<T>['props']>;
227
- export type AlertDialogContentEvents<T extends Transition> = ReturnType<__sveltets_Render<T>['events']>;
228
- export type AlertDialogContentSlots<T extends Transition> = ReturnType<__sveltets_Render<T>['slots']>;
229
- export default class AlertDialogContent<T extends Transition> extends SvelteComponent<AlertDialogContentProps<T>, AlertDialogContentEvents<T>, AlertDialogContentSlots<T>> {
230
+ export type AlertDialogContentProps<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['props']>;
231
+ export type AlertDialogContentEvents<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['events']>;
232
+ export type AlertDialogContentSlots<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['slots']>;
233
+ export default class AlertDialogContent<T extends Transition, In extends Transition, Out extends Transition> extends SvelteComponent<AlertDialogContentProps<T, In, Out>, AlertDialogContentEvents<T, In, Out>, AlertDialogContentSlots<T, In, Out>> {
230
234
  }
231
235
  export {};
@@ -1,16 +1,35 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
2
  import { ctx } from "../ctx.js";
3
+ export let transition = void 0;
4
+ export let transitionConfig = void 0;
5
+ export let inTransition = void 0;
6
+ export let inTransitionConfig = void 0;
7
+ export let outTransition = void 0;
8
+ export let outTransitionConfig = void 0;
3
9
  export let asChild = false;
4
10
  const {
5
11
  elements: { overlay },
6
- states: { open }
12
+ tOpen
7
13
  } = ctx.get();
8
14
  </script>
9
15
 
10
- {#if $open}
16
+ {#if $tOpen}
11
17
  {@const builder = $overlay}
12
18
  {#if asChild}
13
19
  <slot {builder} />
20
+ {:else if transition}
21
+ <div transition:transition|global={transitionConfig} {...builder} use:builder.action {...$$restProps} />
22
+ {:else if inTransition && outTransition}
23
+ <div
24
+ in:inTransition|global={inTransitionConfig}
25
+ out:outTransition|global={outTransitionConfig}
26
+ {...builder} use:builder.action
27
+ {...$$restProps}
28
+ />
29
+ {:else if inTransition}
30
+ <div in:inTransition|global={inTransitionConfig} {...builder} use:builder.action {...$$restProps} />
31
+ {:else if outTransition}
32
+ <div out:outTransition|global={outTransitionConfig} {...builder} use:builder.action {...$$restProps} />
14
33
  {:else}
15
34
  <div {...builder} use:builder.action {...$$restProps} />
16
35
  {/if}
@@ -1,6 +1,9 @@
1
1
  /// <reference types="svelte" />
2
2
  import { type Dialog as AlertDialogReturn, type CreateDialogProps as CreateAlertDialogProps } from "@melt-ui/svelte";
3
- declare function set(props: CreateAlertDialogProps): {
3
+ import { type TOpen, type TransitionTimesProp } from "../../internal/index.js";
4
+ type SetProps = CreateAlertDialogProps & TransitionTimesProp & TOpen;
5
+ type CtxReturn = AlertDialogReturn & TransitionTimesProp & TOpen;
6
+ declare function set(props: SetProps): {
4
7
  updateOption: <K extends string, V extends unknown>(key: K, value: V | undefined) => void;
5
8
  elements: {
6
9
  content: import("@melt-ui/svelte/internal/helpers").ExplicitBuilderReturn<[import("svelte/store").Readable<boolean>], <Node_1 extends unknown>(node: HTMLElement) => {
@@ -69,7 +72,7 @@ declare function set(props: CreateAlertDialogProps): {
69
72
  forceVisible: import("svelte/store").Writable<boolean>;
70
73
  };
71
74
  };
72
- declare function get(): AlertDialogReturn;
75
+ declare function get(): CtxReturn;
73
76
  export declare const ctx: {
74
77
  set: typeof set;
75
78
  get: typeof get;
@@ -7,7 +7,7 @@ function set(props) {
7
7
  ...removeUndefined(props),
8
8
  role: "alertdialog"
9
9
  });
10
- setContext(NAME, alertDialog);
10
+ setContext(NAME, { ...alertDialog, transitionTimes: props.transitionTimes, tOpen: props.tOpen });
11
11
  return {
12
12
  ...alertDialog,
13
13
  updateOption: getOptionUpdater(alertDialog.options)
@@ -1,4 +1,4 @@
1
- import type { HTMLDivAttributes, OmitOpen, Expand, HTMLHeadingAttributes, OnChangeFn, Transition, TransitionParams, AsChild } from "../../internal/index.js";
1
+ import type { HTMLDivAttributes, OmitOpen, Expand, HTMLHeadingAttributes, OnChangeFn, Transition, AsChild, TransitionProps } from "../../internal/index.js";
2
2
  import type { HTMLButtonAttributes } from "svelte/elements";
3
3
  import type { CreateDialogProps } from "@melt-ui/svelte";
4
4
  import type { ButtonEventHandler } from "../../index.js";
@@ -9,12 +9,9 @@ type Props = Expand<OmitOpen<Omit<CreateDialogProps, "role">> & {
9
9
  type TriggerProps = AsChild & HTMLButtonAttributes;
10
10
  type ActionProps = TriggerProps;
11
11
  type CancelProps = TriggerProps;
12
- type ContentProps<T extends Transition = Transition> = Expand<{
13
- transition?: T;
14
- transitionConfig?: TransitionParams<T>;
15
- } & AsChild> & HTMLDivAttributes;
12
+ type ContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
16
13
  type DescriptionProps = AsChild & HTMLDivAttributes;
17
- type OverlayProps = AsChild & HTMLDivAttributes;
14
+ type OverlayProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
18
15
  type PortalProps = AsChild & HTMLDivAttributes;
19
16
  type TitleProps = Expand<{
20
17
  level?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
@@ -2,6 +2,10 @@
2
2
  import { ctx } from "../ctx.js";
3
3
  export let transition = void 0;
4
4
  export let transitionConfig = void 0;
5
+ export let inTransition = void 0;
6
+ export let inTransitionConfig = void 0;
7
+ export let outTransition = void 0;
8
+ export let outTransitionConfig = void 0;
5
9
  export let asChild = false;
6
10
  const {
7
11
  elements: { content },
@@ -14,7 +18,24 @@ const {
14
18
  {#if asChild}
15
19
  <slot builder={$content} />
16
20
  {:else if transition}
17
- <div {...builder} use:builder.action transition:transition={transitionConfig} {...$$restProps}>
21
+ <div transition:transition|global={transitionConfig} {...builder} use:builder.action {...$$restProps}>
22
+ <slot {builder} />
23
+ </div>
24
+ {:else if inTransition && outTransition}
25
+ <div
26
+ in:inTransition|global={inTransitionConfig}
27
+ out:outTransition|global={outTransitionConfig}
28
+ {...builder} use:builder.action
29
+ {...$$restProps}
30
+ >
31
+ <slot {builder} />
32
+ </div>
33
+ {:else if inTransition}
34
+ <div in:inTransition|global={inTransitionConfig} {...builder} use:builder.action {...$$restProps}>
35
+ <slot {builder} />
36
+ </div>
37
+ {:else if outTransition}
38
+ <div out:outTransition|global={outTransitionConfig} {...builder} use:builder.action {...$$restProps}>
18
39
  <slot {builder} />
19
40
  </div>
20
41
  {:else}
@@ -1,9 +1,13 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { Transition } from "../../../internal/types.js";
3
- declare class __sveltets_Render<T extends Transition> {
3
+ declare class __sveltets_Render<T extends Transition, In extends Transition, Out extends Transition> {
4
4
  props(): {
5
5
  transition?: T | undefined;
6
6
  transitionConfig?: import("../../../internal/types.js").TransitionParams<T> | undefined;
7
+ inTransition?: In | undefined;
8
+ inTransitionConfig?: import("../../../internal/types.js").TransitionParams<In> | undefined;
9
+ outTransition?: Out | undefined;
10
+ outTransitionConfig?: import("../../../internal/types.js").TransitionParams<Out> | undefined;
7
11
  asChild?: boolean | undefined;
8
12
  accesskey?: string | null | undefined;
9
13
  autofocus?: boolean | null | undefined;
@@ -223,9 +227,9 @@ declare class __sveltets_Render<T extends Transition> {
223
227
  };
224
228
  };
225
229
  }
226
- export type CollapsibleContentProps<T extends Transition> = ReturnType<__sveltets_Render<T>['props']>;
227
- export type CollapsibleContentEvents<T extends Transition> = ReturnType<__sveltets_Render<T>['events']>;
228
- export type CollapsibleContentSlots<T extends Transition> = ReturnType<__sveltets_Render<T>['slots']>;
229
- export default class CollapsibleContent<T extends Transition> extends SvelteComponent<CollapsibleContentProps<T>, CollapsibleContentEvents<T>, CollapsibleContentSlots<T>> {
230
+ export type CollapsibleContentProps<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['props']>;
231
+ export type CollapsibleContentEvents<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['events']>;
232
+ export type CollapsibleContentSlots<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['slots']>;
233
+ export default class CollapsibleContent<T extends Transition, In extends Transition, Out extends Transition> extends SvelteComponent<CollapsibleContentProps<T, In, Out>, CollapsibleContentEvents<T, In, Out>, CollapsibleContentSlots<T, In, Out>> {
230
234
  }
231
235
  export {};
@@ -1,4 +1,4 @@
1
- import type { HTMLDivAttributes, Transition, TransitionParams, OmitOpen, Expand, OnChangeFn, AsChild } from "../../internal/index.js";
1
+ import type { HTMLDivAttributes, Transition, OmitOpen, Expand, OnChangeFn, AsChild, TransitionProps } from "../../internal/index.js";
2
2
  import type { ButtonEventHandler } from "../../index.js";
3
3
  import type { CreateCollapsibleProps } from "@melt-ui/svelte";
4
4
  import type { HTMLButtonAttributes } from "svelte/elements";
@@ -6,10 +6,7 @@ type Props = Expand<OmitOpen<CreateCollapsibleProps> & {
6
6
  open?: CreateCollapsibleProps["defaultOpen"] & {};
7
7
  onOpenChange?: OnChangeFn<CreateCollapsibleProps["defaultOpen"]> & {};
8
8
  }> & AsChild & HTMLDivAttributes;
9
- type ContentProps<T extends Transition = Transition> = {
10
- transition?: T;
11
- transitionConfig?: TransitionParams<T>;
12
- } & AsChild & HTMLDivAttributes;
9
+ type ContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
13
10
  type TriggerProps = AsChild & HTMLButtonAttributes;
14
11
  type TriggerEvents = {
15
12
  "m-click": ButtonEventHandler<MouseEvent>;
@@ -1,8 +1,11 @@
1
1
  <script>import { ctx } from "../ctx.js";
2
+ import { writable } from "svelte/store";
3
+ import { onDestroy } from "svelte";
4
+ import { isBrowser } from "@/utils/is.js";
2
5
  export let closeOnOutsideClick = void 0;
3
6
  export let closeOnEscape = void 0;
4
7
  export let portal = void 0;
5
- export let forceVisible = void 0;
8
+ export let forceVisible = true;
6
9
  export let open = void 0;
7
10
  export let onOpenChange = void 0;
8
11
  export let preventScroll = void 0;
@@ -4,6 +4,10 @@ import { ctx } from "../ctx.js";
4
4
  export let sideOffset = 5;
5
5
  export let transition = void 0;
6
6
  export let transitionConfig = void 0;
7
+ export let inTransition = void 0;
8
+ export let inTransitionConfig = void 0;
9
+ export let outTransition = void 0;
10
+ export let outTransitionConfig = void 0;
7
11
  export let asChild = false;
8
12
  const {
9
13
  elements: { menu },
@@ -12,17 +16,47 @@ const {
12
16
  </script>
13
17
 
14
18
  {#if $open}
15
- <Overlay />
16
19
  {@const builder = $menu}
17
20
  {#if asChild}
18
21
  <slot {builder} />
19
22
  {:else if transition}
20
- <Overlay />
21
- <div {...builder} use:builder.action {...$$restProps} on:m-keydown transition:transition={transitionConfig}>
23
+ <div
24
+ transition:transition|global={transitionConfig}
25
+ {...builder} use:builder.action
26
+ {...$$restProps}
27
+ on:m-keydown
28
+ >
29
+ <slot {builder} />
30
+ </div>
31
+ {:else if inTransition && outTransition}
32
+ <div
33
+ in:inTransition|global={inTransitionConfig}
34
+ out:outTransition|global={outTransitionConfig}
35
+ {...builder} use:builder.action
36
+ {...$$restProps}
37
+ on:m-keydown
38
+ >
39
+ <slot {builder} />
40
+ </div>
41
+ {:else if inTransition}
42
+ <div
43
+ in:inTransition|global={inTransitionConfig}
44
+ {...builder} use:builder.action
45
+ {...$$restProps}
46
+ on:m-keydown
47
+ >
48
+ <slot {builder} />
49
+ </div>
50
+ {:else if outTransition}
51
+ <div
52
+ out:outTransition|global={outTransitionConfig}
53
+ {...builder} use:builder.action
54
+ {...$$restProps}
55
+ on:m-keydown
56
+ >
22
57
  <slot {builder} />
23
58
  </div>
24
59
  {:else}
25
- <Overlay />
26
60
  <div {...builder} use:builder.action {...$$restProps} on:m-keydown>
27
61
  <slot {builder} />
28
62
  </div>
@@ -1,10 +1,14 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { Transition } from "../../../internal/types.js";
3
- declare class __sveltets_Render<T extends Transition> {
3
+ declare class __sveltets_Render<T extends Transition, In extends Transition, Out extends Transition> {
4
4
  props(): {
5
5
  sideOffset?: number | undefined;
6
6
  transition?: T | undefined;
7
7
  transitionConfig?: import("../../../internal/types.js").TransitionParams<T> | undefined;
8
+ inTransition?: In | undefined;
9
+ inTransitionConfig?: import("../../../internal/types.js").TransitionParams<In> | undefined;
10
+ outTransition?: Out | undefined;
11
+ outTransitionConfig?: import("../../../internal/types.js").TransitionParams<Out> | undefined;
8
12
  asChild?: boolean | undefined;
9
13
  accesskey?: string | null | undefined;
10
14
  autofocus?: boolean | null | undefined;
@@ -224,9 +228,9 @@ declare class __sveltets_Render<T extends Transition> {
224
228
  };
225
229
  };
226
230
  }
227
- export type ContextMenuContentProps<T extends Transition> = ReturnType<__sveltets_Render<T>['props']>;
228
- export type ContextMenuContentEvents<T extends Transition> = ReturnType<__sveltets_Render<T>['events']>;
229
- export type ContextMenuContentSlots<T extends Transition> = ReturnType<__sveltets_Render<T>['slots']>;
230
- export default class ContextMenuContent<T extends Transition> extends SvelteComponent<ContextMenuContentProps<T>, ContextMenuContentEvents<T>, ContextMenuContentSlots<T>> {
231
+ export type ContextMenuContentProps<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['props']>;
232
+ export type ContextMenuContentEvents<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['events']>;
233
+ export type ContextMenuContentSlots<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['slots']>;
234
+ export default class ContextMenuContent<T extends Transition, In extends Transition, Out extends Transition> extends SvelteComponent<ContextMenuContentProps<T, In, Out>, ContextMenuContentEvents<T, In, Out>, ContextMenuContentSlots<T, In, Out>> {
231
235
  }
232
236
  export {};
@@ -2,6 +2,10 @@
2
2
  import { ctx } from "../ctx.js";
3
3
  export let transition = void 0;
4
4
  export let transitionConfig = void 0;
5
+ export let inTransition = void 0;
6
+ export let inTransitionConfig = void 0;
7
+ export let outTransition = void 0;
8
+ export let outTransitionConfig = void 0;
5
9
  export let asChild = false;
6
10
  const {
7
11
  elements: { subMenu },
@@ -16,12 +20,46 @@ const {
16
20
  <slot {builder} />
17
21
  {:else if transition}
18
22
  <div
23
+ transition:transition|global={transitionConfig}
24
+ {...builder} use:builder.action
25
+ {...$$restProps}
26
+ on:m-focusout
27
+ on:m-keydown
28
+ on:m-pointermove
29
+ >
30
+ <slot {builder} />
31
+ </div>
32
+ {:else if inTransition && outTransition}
33
+ <div
34
+ in:inTransition|global={inTransitionConfig}
35
+ out:outTransition|global={outTransitionConfig}
36
+ {...builder} use:builder.action
37
+ {...$$restProps}
38
+ on:m-focusout
39
+ on:m-keydown
40
+ on:m-pointermove
41
+ >
42
+ <slot {builder} />
43
+ </div>
44
+ {:else if inTransition}
45
+ <div
46
+ in:inTransition|global={inTransitionConfig}
47
+ {...builder} use:builder.action
48
+ {...$$restProps}
49
+ on:m-focusout
50
+ on:m-keydown
51
+ on:m-pointermove
52
+ >
53
+ <slot {builder} />
54
+ </div>
55
+ {:else if outTransition}
56
+ <div
57
+ out:outTransition|global={outTransitionConfig}
19
58
  {...builder} use:builder.action
20
59
  {...$$restProps}
21
60
  on:m-focusout
22
61
  on:m-keydown
23
62
  on:m-pointermove
24
- transition:transition={transitionConfig}
25
63
  >
26
64
  <slot {builder} />
27
65
  </div>
@@ -1,9 +1,13 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { Transition } from "../../../internal/types.js";
3
- declare class __sveltets_Render<T extends Transition> {
3
+ declare class __sveltets_Render<T extends Transition, In extends Transition, Out extends Transition> {
4
4
  props(): {
5
5
  transition?: T | undefined;
6
6
  transitionConfig?: import("../../../internal/types.js").TransitionParams<T> | undefined;
7
+ inTransition?: In | undefined;
8
+ inTransitionConfig?: import("../../../internal/types.js").TransitionParams<In> | undefined;
9
+ outTransition?: Out | undefined;
10
+ outTransitionConfig?: import("../../../internal/types.js").TransitionParams<Out> | undefined;
7
11
  asChild?: boolean | undefined;
8
12
  accesskey?: string | null | undefined;
9
13
  autofocus?: boolean | null | undefined;
@@ -225,9 +229,9 @@ declare class __sveltets_Render<T extends Transition> {
225
229
  };
226
230
  };
227
231
  }
228
- export type ContextMenuSubContentProps<T extends Transition> = ReturnType<__sveltets_Render<T>['props']>;
229
- export type ContextMenuSubContentEvents<T extends Transition> = ReturnType<__sveltets_Render<T>['events']>;
230
- export type ContextMenuSubContentSlots<T extends Transition> = ReturnType<__sveltets_Render<T>['slots']>;
231
- export default class ContextMenuSubContent<T extends Transition> extends SvelteComponent<ContextMenuSubContentProps<T>, ContextMenuSubContentEvents<T>, ContextMenuSubContentSlots<T>> {
232
+ export type ContextMenuSubContentProps<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['props']>;
233
+ export type ContextMenuSubContentEvents<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['events']>;
234
+ export type ContextMenuSubContentSlots<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['slots']>;
235
+ export default class ContextMenuSubContent<T extends Transition, In extends Transition, Out extends Transition> extends SvelteComponent<ContextMenuSubContentProps<T, In, Out>, ContextMenuSubContentEvents<T, In, Out>, ContextMenuSubContentSlots<T, In, Out>> {
232
236
  }
233
237
  export {};
@@ -1,13 +1,23 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
2
  import { ctx } from "../ctx.js";
3
+ import Overlay from "../../../internal/overlay.svelte";
3
4
  export let asChild = false;
4
- const trigger = ctx.get().elements.trigger;
5
+ const {
6
+ elements: { trigger },
7
+ states: { open }
8
+ } = ctx.get();
5
9
  </script>
6
10
 
7
11
  <!-- svelte-ignore a11y-no-static-element-interactions applied by melt's action/store -->
8
12
  {#if asChild}
13
+ {#if $open}
14
+ <Overlay />
15
+ {/if}
9
16
  <slot builder={$trigger} />
10
17
  {:else}
18
+ {#if $open}
19
+ <Overlay />
20
+ {/if}
11
21
  {@const builder = $trigger}
12
22
  <div
13
23
  {...builder} use:builder.action