bits-ui 0.0.32 → 0.5.0

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 (155) hide show
  1. package/dist/bits/accordion/components/Accordion.svelte +5 -3
  2. package/dist/bits/accordion/components/AccordionContent.svelte +32 -11
  3. package/dist/bits/accordion/components/AccordionContent.svelte.d.ts +9 -5
  4. package/dist/bits/accordion/components/AccordionTrigger.svelte +3 -1
  5. package/dist/bits/accordion/types.d.ts +5 -8
  6. package/dist/bits/alert-dialog/components/AlertDialog.svelte +36 -4
  7. package/dist/bits/alert-dialog/components/AlertDialogAction.svelte +6 -2
  8. package/dist/bits/alert-dialog/components/AlertDialogAction.svelte.d.ts +2 -1
  9. package/dist/bits/alert-dialog/components/AlertDialogCancel.svelte +6 -2
  10. package/dist/bits/alert-dialog/components/AlertDialogCancel.svelte.d.ts +2 -1
  11. package/dist/bits/alert-dialog/components/AlertDialogContent.svelte +47 -12
  12. package/dist/bits/alert-dialog/components/AlertDialogContent.svelte.d.ts +10 -6
  13. package/dist/bits/alert-dialog/components/AlertDialogOverlay.svelte +29 -7
  14. package/dist/bits/alert-dialog/components/AlertDialogPortal.svelte +2 -1
  15. package/dist/bits/alert-dialog/components/AlertDialogTrigger.svelte +6 -2
  16. package/dist/bits/alert-dialog/ctx.d.ts +9 -6
  17. package/dist/bits/alert-dialog/ctx.js +5 -1
  18. package/dist/bits/alert-dialog/types.d.ts +7 -10
  19. package/dist/bits/button/types.d.ts +4 -0
  20. package/dist/bits/checkbox/components/Checkbox.svelte +7 -3
  21. package/dist/bits/checkbox/components/CheckboxIndicator.svelte +3 -1
  22. package/dist/bits/checkbox/ctx.d.ts +0 -35
  23. package/dist/bits/checkbox/ctx.js +2 -17
  24. package/dist/bits/checkbox/index.d.ts +2 -1
  25. package/dist/bits/checkbox/index.js +4 -1
  26. package/dist/bits/checkbox/types.d.ts +3 -3
  27. package/dist/bits/collapsible/components/Collapsible.svelte +4 -2
  28. package/dist/bits/collapsible/components/CollapsibleContent.svelte +36 -12
  29. package/dist/bits/collapsible/components/CollapsibleContent.svelte.d.ts +9 -5
  30. package/dist/bits/collapsible/components/CollapsibleTrigger.svelte +6 -2
  31. package/dist/bits/collapsible/types.d.ts +4 -7
  32. package/dist/bits/context-menu/components/ContextMenu.svelte +5 -3
  33. package/dist/bits/context-menu/components/ContextMenuCheckboxItem.svelte +9 -7
  34. package/dist/bits/context-menu/components/ContextMenuContent.svelte +55 -12
  35. package/dist/bits/context-menu/components/ContextMenuContent.svelte.d.ts +11 -8
  36. package/dist/bits/context-menu/components/ContextMenuItem.svelte +12 -8
  37. package/dist/bits/context-menu/components/ContextMenuRadioItem.svelte +9 -7
  38. package/dist/bits/context-menu/components/ContextMenuSubContent.svelte +68 -19
  39. package/dist/bits/context-menu/components/ContextMenuSubContent.svelte.d.ts +13 -12
  40. package/dist/bits/context-menu/components/ContextMenuSubTrigger.svelte +9 -6
  41. package/dist/bits/context-menu/components/ContextMenuTrigger.svelte +11 -6
  42. package/dist/bits/context-menu/ctx.d.ts +1 -1
  43. package/dist/bits/context-menu/ctx.js +3 -3
  44. package/dist/bits/context-menu/types.d.ts +26 -29
  45. package/dist/bits/dialog/components/Dialog.svelte +35 -3
  46. package/dist/bits/dialog/components/Dialog.svelte.d.ts +1 -1
  47. package/dist/bits/dialog/components/DialogClose.svelte +6 -2
  48. package/dist/bits/dialog/components/DialogClose.svelte.d.ts +2 -1
  49. package/dist/bits/dialog/components/DialogContent.svelte +49 -15
  50. package/dist/bits/dialog/components/DialogContent.svelte.d.ts +10 -6
  51. package/dist/bits/dialog/components/DialogOverlay.svelte +29 -7
  52. package/dist/bits/dialog/components/DialogPortal.svelte +12 -4
  53. package/dist/bits/dialog/components/DialogPortal.svelte.d.ts +3 -1
  54. package/dist/bits/dialog/components/DialogTrigger.svelte +6 -2
  55. package/dist/bits/dialog/ctx.d.ts +9 -6
  56. package/dist/bits/dialog/ctx.js +5 -1
  57. package/dist/bits/dialog/types.d.ts +8 -11
  58. package/dist/bits/dropdown-menu/components/DropdownMenu.svelte +4 -2
  59. package/dist/bits/dropdown-menu/components/DropdownMenuCheckboxItem.svelte +9 -7
  60. package/dist/bits/dropdown-menu/components/DropdownMenuCheckboxItem.svelte.d.ts +2 -1
  61. package/dist/bits/dropdown-menu/components/DropdownMenuContent.svelte +55 -11
  62. package/dist/bits/dropdown-menu/components/DropdownMenuContent.svelte.d.ts +11 -8
  63. package/dist/bits/dropdown-menu/components/DropdownMenuItem.svelte +13 -9
  64. package/dist/bits/dropdown-menu/components/DropdownMenuRadioItem.svelte +9 -7
  65. package/dist/bits/dropdown-menu/components/DropdownMenuRadioItem.svelte.d.ts +2 -1
  66. package/dist/bits/dropdown-menu/components/DropdownMenuSubContent.svelte +68 -20
  67. package/dist/bits/dropdown-menu/components/DropdownMenuSubContent.svelte.d.ts +12 -11
  68. package/dist/bits/dropdown-menu/components/DropdownMenuSubTrigger.svelte +12 -8
  69. package/dist/bits/dropdown-menu/components/DropdownMenuSubTrigger.svelte.d.ts +2 -1
  70. package/dist/bits/dropdown-menu/components/DropdownMenuTrigger.svelte +5 -3
  71. package/dist/bits/dropdown-menu/types.d.ts +27 -20
  72. package/dist/bits/label/components/Label.svelte +6 -2
  73. package/dist/bits/label/components/Label.svelte.d.ts +2 -3
  74. package/dist/bits/label/types.d.ts +4 -2
  75. package/dist/bits/link-preview/components/LinkPreview.svelte +4 -2
  76. package/dist/bits/link-preview/components/LinkPreviewContent.svelte +72 -26
  77. package/dist/bits/link-preview/components/LinkPreviewContent.svelte.d.ts +12 -12
  78. package/dist/bits/link-preview/components/LinkPreviewTrigger.svelte +9 -5
  79. package/dist/bits/link-preview/components/LinkPreviewTrigger.svelte.d.ts +2 -6
  80. package/dist/bits/link-preview/types.d.ts +17 -8
  81. package/dist/bits/menubar/components/Menubar.svelte +1 -1
  82. package/dist/bits/menubar/components/MenubarCheckboxItem.svelte +9 -7
  83. package/dist/bits/menubar/components/MenubarCheckboxItem.svelte.d.ts +2 -1
  84. package/dist/bits/menubar/components/MenubarContent.svelte +58 -10
  85. package/dist/bits/menubar/components/MenubarItem.svelte +13 -9
  86. package/dist/bits/menubar/components/MenubarMenu.svelte +4 -2
  87. package/dist/bits/menubar/components/MenubarRadioItem.svelte +12 -8
  88. package/dist/bits/menubar/components/MenubarRadioItem.svelte.d.ts +2 -1
  89. package/dist/bits/menubar/components/MenubarSubContent.svelte +74 -7
  90. package/dist/bits/menubar/components/MenubarSubTrigger.svelte +12 -8
  91. package/dist/bits/menubar/components/MenubarSubTrigger.svelte.d.ts +8 -1
  92. package/dist/bits/menubar/components/MenubarTrigger.svelte +12 -2
  93. package/dist/bits/menubar/ctx.d.ts +2 -2
  94. package/dist/bits/menubar/ctx.js +5 -5
  95. package/dist/bits/menubar/types.d.ts +30 -15
  96. package/dist/bits/popover/components/Popover.svelte +4 -2
  97. package/dist/bits/popover/components/PopoverClose.svelte +6 -2
  98. package/dist/bits/popover/components/PopoverContent.svelte +35 -11
  99. package/dist/bits/popover/components/PopoverContent.svelte.d.ts +9 -5
  100. package/dist/bits/popover/components/PopoverTrigger.svelte +6 -2
  101. package/dist/bits/popover/types.d.ts +6 -9
  102. package/dist/bits/radio-group/components/RadioGroup.svelte +4 -2
  103. package/dist/bits/radio-group/components/RadioGroupInput.svelte +3 -3
  104. package/dist/bits/radio-group/components/RadioGroupInput.svelte.d.ts +6 -8
  105. package/dist/bits/radio-group/components/RadioGroupItem.svelte +12 -2
  106. package/dist/bits/radio-group/ctx.d.ts +5 -5
  107. package/dist/bits/radio-group/types.d.ts +5 -4
  108. package/dist/bits/select/components/Select.svelte +18 -12
  109. package/dist/bits/select/components/Select.svelte.d.ts +3 -3
  110. package/dist/bits/select/components/SelectContent.svelte +55 -11
  111. package/dist/bits/select/components/SelectContent.svelte.d.ts +11 -8
  112. package/dist/bits/select/components/SelectInput.svelte.d.ts +1 -1
  113. package/dist/bits/select/components/SelectItem.svelte +11 -7
  114. package/dist/bits/select/components/SelectLabel.svelte.d.ts +2 -3
  115. package/dist/bits/select/components/SelectTrigger.svelte +3 -1
  116. package/dist/bits/select/components/SelectValue.svelte +5 -3
  117. package/dist/bits/select/components/SelectValue.svelte.d.ts +1 -1
  118. package/dist/bits/select/ctx.d.ts +15 -15
  119. package/dist/bits/select/ctx.js +1 -3
  120. package/dist/bits/select/types.d.ts +23 -19
  121. package/dist/bits/slider/components/Slider.svelte +4 -2
  122. package/dist/bits/slider/components/SliderThumb.svelte +3 -1
  123. package/dist/bits/slider/components/SliderThumb.svelte.d.ts +2 -4
  124. package/dist/bits/slider/ctx.d.ts +0 -1
  125. package/dist/bits/slider/types.d.ts +5 -2
  126. package/dist/bits/switch/components/Switch.svelte +7 -3
  127. package/dist/bits/switch/types.d.ts +4 -4
  128. package/dist/bits/tabs/components/Tabs.svelte +4 -2
  129. package/dist/bits/tabs/components/TabsTrigger.svelte +9 -1
  130. package/dist/bits/tabs/types.d.ts +5 -4
  131. package/dist/bits/toggle/components/Toggle.svelte +7 -3
  132. package/dist/bits/toggle/types.d.ts +4 -4
  133. package/dist/bits/tooltip/components/Tooltip.svelte +8 -2
  134. package/dist/bits/tooltip/components/Tooltip.svelte.d.ts +1 -0
  135. package/dist/bits/tooltip/components/TooltipContent.svelte +58 -18
  136. package/dist/bits/tooltip/components/TooltipContent.svelte.d.ts +13 -11
  137. package/dist/bits/tooltip/components/TooltipTrigger.svelte +8 -6
  138. package/dist/bits/tooltip/components/TooltipTrigger.svelte.d.ts +2 -8
  139. package/dist/bits/tooltip/ctx.js +1 -2
  140. package/dist/bits/tooltip/types.d.ts +18 -9
  141. package/dist/helpers/event-handlers.d.ts +3 -8
  142. package/dist/internal/events.d.ts +12 -0
  143. package/dist/internal/events.js +13 -0
  144. package/dist/internal/helpers.d.ts +10 -1
  145. package/dist/internal/helpers.js +55 -0
  146. package/dist/internal/index.d.ts +2 -0
  147. package/dist/internal/index.js +2 -0
  148. package/dist/internal/is.d.ts +1 -0
  149. package/dist/internal/is.js +1 -0
  150. package/dist/internal/types.d.ts +30 -0
  151. package/package.json +16 -10
  152. package/dist/bits/alert-dialog/components/AlertDialogOverlay.svelte.d.ts +0 -228
  153. package/dist/bits/dialog/components/DialogOverlay.svelte.d.ts +0 -228
  154. package/dist/bits/menubar/components/MenubarContent.svelte.d.ts +0 -229
  155. package/dist/bits/menubar/components/MenubarSubContent.svelte.d.ts +0 -230
@@ -1,26 +1,23 @@
1
- import type { AsChild, Expand, HTMLDivAttributes, HTMLHeadingAttributes, OmitOpen, OnChangeFn, Transition, TransitionParams } from "../../internal/index.js";
1
+ import type { AsChild, Expand, HTMLDivAttributes, HTMLHeadingAttributes, OmitOpen, OnChangeFn, Transition, TransitionProps } from "../../internal/index.js";
2
2
  import type { HTMLButtonAttributes } from "svelte/elements";
3
3
  import type { CreateDialogProps } from "@melt-ui/svelte";
4
- import type { ButtonEventHandler } from "../../index.js";
4
+ import type { CustomEventHandler } from "../../index.js";
5
5
  type Props = Expand<OmitOpen<Omit<CreateDialogProps, "role">> & {
6
6
  open?: CreateDialogProps["defaultOpen"] & {};
7
- onOpenChange?: OnChangeFn<CreateDialogProps["defaultOpen"]>;
7
+ onOpenChange?: OnChangeFn<boolean | undefined>;
8
8
  }>;
9
9
  type TriggerProps = AsChild & HTMLButtonAttributes;
10
10
  type CloseProps = TriggerProps;
11
- type ContentProps<T extends Transition = Transition> = Expand<{
12
- transition?: T;
13
- transitionConfig?: TransitionParams<T>;
14
- } & AsChild> & HTMLDivAttributes;
11
+ type ContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
15
12
  type DescriptionProps = AsChild & HTMLDivAttributes;
16
- type OverlayProps = AsChild & HTMLDivAttributes;
13
+ type OverlayProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
17
14
  type PortalProps = AsChild & HTMLDivAttributes;
18
15
  type TitleProps = Expand<{
19
16
  level?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
20
17
  } & AsChild> & HTMLHeadingAttributes;
21
- type TriggerEvents = {
22
- "m-click": ButtonEventHandler<MouseEvent>;
23
- "m-keydown": ButtonEventHandler<KeyboardEvent>;
18
+ type TriggerEvents<T extends Element = HTMLButtonElement> = {
19
+ click: CustomEventHandler<MouseEvent, T>;
20
+ keydown: CustomEventHandler<KeyboardEvent, T>;
24
21
  };
25
22
  type CloseEvents = TriggerEvents;
26
23
  export type { Props, CloseProps, TitleProps, PortalProps, ContentProps, TriggerProps, OverlayProps, DescriptionProps, Props as DialogProps, CloseProps as DialogCloseProps, TitleProps as DialogTitleProps, PortalProps as DialogPortalProps, ContentProps as DialogContentProps, TriggerProps as DialogTriggerProps, OverlayProps as DialogOverlayProps, DescriptionProps as DialogDescriptionProps, TriggerEvents, CloseEvents, TriggerEvents as DialogTriggerEvents, CloseEvents as DialogCloseEvents };
@@ -25,8 +25,10 @@ const {
25
25
  loop,
26
26
  dir,
27
27
  onOpenChange: ({ next }) => {
28
- open = next;
29
- onOpenChange?.(next);
28
+ if (open !== next) {
29
+ onOpenChange?.(next);
30
+ open = next;
31
+ }
30
32
  return next;
31
33
  }
32
34
  });
@@ -1,5 +1,6 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
2
  import { ctx } from "../ctx.js";
3
+ import { createDispatcher } from "../../../internal/events.js";
3
4
  export let checked = void 0;
4
5
  export let onCheckedChange = void 0;
5
6
  export let disabled = void 0;
@@ -17,6 +18,7 @@ const {
17
18
  return next;
18
19
  }
19
20
  });
21
+ const dispatch = createDispatcher();
20
22
  $:
21
23
  checked !== void 0 && localChecked.set(checked);
22
24
  $:
@@ -30,14 +32,14 @@ $:
30
32
  {@const builder = $checkboxItem}
31
33
  <div
32
34
  {...builder} use:builder.action
35
+ on:m-click={dispatch}
36
+ on:m-focusin={dispatch}
37
+ on:m-focusout={dispatch}
38
+ on:m-keydown={dispatch}
39
+ on:m-pointerdown={dispatch}
40
+ on:m-pointerleave={dispatch}
41
+ on:m-pointermove={dispatch}
33
42
  {...$$restProps}
34
- on:m-click
35
- on:m-focusin
36
- on:m-focusout
37
- on:m-keydown
38
- on:m-pointerdown
39
- on:m-pointerleave
40
- on:m-pointermove
41
43
  >
42
44
  <slot {builder} />
43
45
  </div>
@@ -1,4 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ import type { CheckboxItemEvents } from "../types.js";
2
3
  declare const __propDef: {
3
4
  props: {
4
5
  disabled?: boolean | undefined;
@@ -219,7 +220,7 @@ declare const __propDef: {
219
220
  builder: any;
220
221
  };
221
222
  };
222
- events: import("../types.js").ItemEvents;
223
+ events: CheckboxItemEvents;
223
224
  };
224
225
  export type DropdownMenuCheckboxItemProps = typeof __propDef.props;
225
226
  export type DropdownMenuCheckboxItemEvents = typeof __propDef.events;
@@ -1,29 +1,73 @@
1
- <script>import Overlay from "../../../internal/overlay.svelte";
1
+ <script>import { createDispatcher } from "../../../internal/events.js";
2
2
  import { melt } from "@melt-ui/svelte";
3
+ import Overlay from "../../../internal/overlay.svelte";
3
4
  import { ctx } from "../ctx.js";
4
5
  export let sideOffset = 5;
5
6
  export let transition = void 0;
6
7
  export let transitionConfig = void 0;
8
+ export let inTransition = void 0;
9
+ export let inTransitionConfig = void 0;
10
+ export let outTransition = void 0;
11
+ export let outTransitionConfig = void 0;
7
12
  export let asChild = false;
8
13
  const {
9
14
  elements: { menu },
10
15
  states: { open }
11
16
  } = ctx.getContent(sideOffset);
17
+ const dispatch = createDispatcher();
12
18
  </script>
13
19
 
14
20
  <!-- svelte-ignore a11y-no-static-element-interactions applied by melt's action/store -->
15
21
  {#if $open}
16
22
  <Overlay />
23
+ {/if}
24
+ {#if asChild && $open}
25
+ {@const builder = $menu}
26
+ <slot {builder} />
27
+ {:else if transition && $open}
28
+ {@const builder = $menu}
29
+ <div
30
+ transition:transition={transitionConfig}
31
+ {...builder} use:builder.action
32
+ {...$$restProps}
33
+ on:m-keydown={dispatch}
34
+ >
35
+ <slot {builder} />
36
+ </div>
37
+ {:else if inTransition && outTransition && $open}
38
+ {@const builder = $menu}
39
+ <div
40
+ in:inTransition={inTransitionConfig}
41
+ out:outTransition={outTransitionConfig}
42
+ {...builder} use:builder.action
43
+ {...$$restProps}
44
+ on:m-keydown={dispatch}
45
+ >
46
+ <slot {builder} />
47
+ </div>
48
+ {:else if inTransition && $open}
49
+ {@const builder = $menu}
50
+ <div
51
+ in:inTransition={inTransitionConfig}
52
+ {...builder} use:builder.action
53
+ {...$$restProps}
54
+ on:m-keydown={dispatch}
55
+ >
56
+ <slot {builder} />
57
+ </div>
58
+ {:else if outTransition && $open}
59
+ {@const builder = $menu}
60
+ <div
61
+ out:outTransition={outTransitionConfig}
62
+ {...builder} use:builder.action
63
+ {...$$restProps}
64
+ on:m-keydown={dispatch}
65
+ >
66
+ <slot {builder} />
67
+ </div>
68
+ {:else if $open}
17
69
  {@const builder = $menu}
18
- {#if asChild}
70
+ <div {...builder} use:builder.action {...$$restProps} on:m-keydown={dispatch}>
19
71
  <slot {builder} />
20
- {:else if transition}
21
- <div {...builder} use:builder.action {...$$restProps} on:m-keydown transition:transition={transitionConfig}>
22
- <slot {builder} />
23
- </div>
24
- {:else}
25
- <div {...builder} use:builder.action {...$$restProps} on:m-keydown>
26
- <slot {builder} />
27
- </div>
28
- {/if}
72
+ </div>
29
73
  {/if}
@@ -1,10 +1,15 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { Transition } from "../../../internal/types.js";
3
- declare class __sveltets_Render<T extends Transition> {
3
+ import type { ContentEvents } from "../types.js";
4
+ declare class __sveltets_Render<T extends Transition, In extends Transition, Out extends Transition> {
4
5
  props(): {
5
6
  sideOffset?: number | undefined;
6
7
  transition?: T | undefined;
7
8
  transitionConfig?: import("../../../internal/types.js").TransitionParams<T> | undefined;
9
+ inTransition?: In | undefined;
10
+ inTransitionConfig?: import("../../../internal/types.js").TransitionParams<In> | undefined;
11
+ outTransition?: Out | undefined;
12
+ outTransitionConfig?: import("../../../internal/types.js").TransitionParams<Out> | undefined;
8
13
  asChild?: boolean | undefined;
9
14
  accesskey?: string | null | undefined;
10
15
  autofocus?: boolean | null | undefined;
@@ -215,18 +220,16 @@ declare class __sveltets_Render<T extends Transition> {
215
220
  'on:fullscreenchange'?: import("svelte/elements.js").EventHandler<Event, HTMLDivElement> | null | undefined;
216
221
  'on:fullscreenerror'?: import("svelte/elements.js").EventHandler<Event, HTMLDivElement> | null | undefined;
217
222
  };
218
- events(): {
219
- "m-keydown"?: import("@melt-ui/svelte/internal/types").MeltEventHandler<KeyboardEvent> | undefined;
220
- };
223
+ events(): ContentEvents;
221
224
  slots(): {
222
225
  default: {
223
226
  builder: any;
224
227
  };
225
228
  };
226
229
  }
227
- export type DropdownMenuContentProps<T extends Transition> = ReturnType<__sveltets_Render<T>['props']>;
228
- export type DropdownMenuContentEvents<T extends Transition> = ReturnType<__sveltets_Render<T>['events']>;
229
- export type DropdownMenuContentSlots<T extends Transition> = ReturnType<__sveltets_Render<T>['slots']>;
230
- export default class DropdownMenuContent<T extends Transition> extends SvelteComponent<DropdownMenuContentProps<T>, DropdownMenuContentEvents<T>, DropdownMenuContentSlots<T>> {
230
+ export type DropdownMenuContentProps<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['props']>;
231
+ export type DropdownMenuContentEvents<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['events']>;
232
+ export type DropdownMenuContentSlots<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['slots']>;
233
+ export default class DropdownMenuContent<T extends Transition, In extends Transition, Out extends Transition> extends SvelteComponent<DropdownMenuContentProps<T, In, Out>, DropdownMenuContentEvents<T, In, Out>, DropdownMenuContentSlots<T, In, Out>> {
231
234
  }
232
235
  export {};
@@ -1,9 +1,13 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
- import { ctx } from "../ctx.js";
3
2
  import { disabledAttrs } from "../../../internal/helpers.js";
3
+ import { ctx } from "../ctx.js";
4
+ import { createDispatcher } from "../../../internal/events.js";
4
5
  export let asChild = false;
5
6
  export let disabled = false;
6
- const item = ctx.get().elements.item;
7
+ const {
8
+ elements: { item }
9
+ } = ctx.get();
10
+ const dispatch = createDispatcher();
7
11
  </script>
8
12
 
9
13
  <!-- svelte-ignore a11y-no-static-element-interactions applied by melt's action/store -->
@@ -14,13 +18,13 @@ const item = ctx.get().elements.item;
14
18
  <div
15
19
  {...builder} use:builder.action
16
20
  {...$$restProps}
17
- on:m-click
18
- on:m-focusin
19
- on:m-focusout
20
- on:m-keydown
21
- on:m-pointerdown
22
- on:m-pointerleave
23
- on:m-pointermove
21
+ on:m-click={dispatch}
22
+ on:m-focusin={dispatch}
23
+ on:m-focusout={dispatch}
24
+ on:m-keydown={dispatch}
25
+ on:m-pointerdown={dispatch}
26
+ on:m-pointerleave={dispatch}
27
+ on:m-pointermove={dispatch}
24
28
  {...disabledAttrs(disabled)}
25
29
  >
26
30
  <slot {builder} />
@@ -1,11 +1,13 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
2
  import { ctx } from "../ctx.js";
3
+ import { createDispatcher } from "../../../internal/events.js";
3
4
  export let value;
4
5
  export let disabled = false;
5
6
  export let asChild = false;
6
7
  const {
7
8
  elements: { radioItem }
8
9
  } = ctx.setRadioItem(value);
10
+ const dispatch = createDispatcher();
9
11
  </script>
10
12
 
11
13
  <!-- svelte-ignore a11y-no-static-element-interactions applied by melt's action/store -->
@@ -17,13 +19,13 @@ const {
17
19
  <div
18
20
  {...builder} use:builder.action
19
21
  {...$$restProps}
20
- on:m-click
21
- on:m-focusin
22
- on:m-focusout
23
- on:m-keydown
24
- on:m-pointerdown
25
- on:m-pointerleave
26
- on:m-pointermove
22
+ on:m-click={dispatch}
23
+ on:m-focusin={dispatch}
24
+ on:m-focusout={dispatch}
25
+ on:m-keydown={dispatch}
26
+ on:m-pointerdown={dispatch}
27
+ on:m-pointerleave={dispatch}
28
+ on:m-pointermove={dispatch}
27
29
  >
28
30
  <slot {builder} />
29
31
  </div>
@@ -1,4 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ import type { RadioItemEvents } from "../types.js";
2
3
  declare const __propDef: {
3
4
  props: {
4
5
  value: string;
@@ -218,7 +219,7 @@ declare const __propDef: {
218
219
  builder: any;
219
220
  };
220
221
  };
221
- events: import("../types.js").ItemEvents;
222
+ events: RadioItemEvents;
222
223
  };
223
224
  export type DropdownMenuRadioItemProps = typeof __propDef.props;
224
225
  export type DropdownMenuRadioItemEvents = typeof __propDef.events;
@@ -1,34 +1,82 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
+ import { createDispatcher } 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: { subMenu },
8
13
  states: { subOpen }
9
14
  } = ctx.getSubContent();
15
+ const dispatch = createDispatcher();
10
16
  </script>
11
17
 
12
- <!-- svelte-ignore a11y-no-static-element-interactions applied by melt's action/store -->
13
-
14
- {#if $subOpen}
18
+ <!-- svelte-ignore a11y-no-static-element-interactions / applied by melt store -->
19
+ {#if asChild && $subOpen}
20
+ {@const builder = $subMenu}
21
+ <slot {builder} />
22
+ {:else if transition && $subOpen}
23
+ {@const builder = $subMenu}
24
+ <div
25
+ transition:transition={transitionConfig}
26
+ {...builder} use:builder.action
27
+ {...$$restProps}
28
+ on:m-focusout={dispatch}
29
+ on:m-keydown={dispatch}
30
+ on:m-pointermove={dispatch}
31
+ >
32
+ <slot {builder} />
33
+ </div>
34
+ {:else if inTransition && outTransition && $subOpen}
35
+ {@const builder = $subMenu}
36
+ <div
37
+ in:inTransition={inTransitionConfig}
38
+ out:outTransition={outTransitionConfig}
39
+ {...builder} use:builder.action
40
+ {...$$restProps}
41
+ on:m-focusout={dispatch}
42
+ on:m-keydown={dispatch}
43
+ on:m-pointermove={dispatch}
44
+ >
45
+ <slot {builder} />
46
+ </div>
47
+ {:else if inTransition && $subOpen}
48
+ {@const builder = $subMenu}
49
+ <div
50
+ in:inTransition={inTransitionConfig}
51
+ {...builder} use:builder.action
52
+ {...$$restProps}
53
+ on:m-focusout={dispatch}
54
+ on:m-keydown={dispatch}
55
+ on:m-pointermove={dispatch}
56
+ >
57
+ <slot {builder} />
58
+ </div>
59
+ {:else if outTransition && $subOpen}
60
+ {@const builder = $subMenu}
61
+ <div
62
+ out:outTransition={outTransitionConfig}
63
+ {...builder} use:builder.action
64
+ {...$$restProps}
65
+ on:m-focusout={dispatch}
66
+ on:m-keydown={dispatch}
67
+ on:m-pointermove={dispatch}
68
+ >
69
+ <slot {builder} />
70
+ </div>
71
+ {:else if $subOpen}
15
72
  {@const builder = $subMenu}
16
- {#if asChild}
73
+ <div
74
+ {...builder} use:builder.action
75
+ {...$$restProps}
76
+ on:m-focusout={dispatch}
77
+ on:m-keydown={dispatch}
78
+ on:m-pointermove={dispatch}
79
+ >
17
80
  <slot {builder} />
18
- {:else if transition}
19
- <div
20
- {...builder} use:builder.action
21
- {...$$restProps}
22
- on:m-focusout
23
- on:m-keydown
24
- on:m-pointermove
25
- transition:transition={transitionConfig}
26
- >
27
- <slot {builder} />
28
- </div>
29
- {:else}
30
- <div {...builder} use:builder.action {...$$restProps} on:m-focusout on:m-keydown on:m-pointermove>
31
- <slot {builder} />
32
- </div>
33
- {/if}
81
+ </div>
34
82
  {/if}
@@ -1,10 +1,15 @@
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
+ import type { SubContentEvents } from "../types.js";
4
+ declare class __sveltets_Render<T extends Transition, In extends Transition, Out extends Transition> {
4
5
  props(): {
5
6
  sideOffset?: number | undefined;
6
7
  transition?: T | undefined;
7
8
  transitionConfig?: import("../../../internal/index.js").TransitionParams<T> | undefined;
9
+ inTransition?: In | undefined;
10
+ inTransitionConfig?: import("../../../internal/index.js").TransitionParams<In> | undefined;
11
+ outTransition?: Out | undefined;
12
+ outTransitionConfig?: import("../../../internal/index.js").TransitionParams<Out> | undefined;
8
13
  asChild?: boolean | undefined;
9
14
  accesskey?: string | null | undefined;
10
15
  autofocus?: boolean | null | undefined;
@@ -215,20 +220,16 @@ declare class __sveltets_Render<T extends Transition> {
215
220
  'on:fullscreenchange'?: import("svelte/elements.js").EventHandler<Event, HTMLDivElement> | null | undefined;
216
221
  'on:fullscreenerror'?: import("svelte/elements.js").EventHandler<Event, HTMLDivElement> | null | undefined;
217
222
  };
218
- events(): {
219
- "m-keydown"?: import("@melt-ui/svelte/internal/types").MeltEventHandler<KeyboardEvent> | undefined;
220
- "m-focusout"?: import("@melt-ui/svelte/internal/types").MeltEventHandler<FocusEvent> | undefined;
221
- "m-pointermove"?: import("@melt-ui/svelte/internal/types").MeltEventHandler<PointerEvent> | undefined;
222
- };
223
+ events(): SubContentEvents;
223
224
  slots(): {
224
225
  default: {
225
226
  builder: any;
226
227
  };
227
228
  };
228
229
  }
229
- export type DropdownMenuSubContentProps<T extends Transition> = ReturnType<__sveltets_Render<T>['props']>;
230
- export type DropdownMenuSubContentEvents<T extends Transition> = ReturnType<__sveltets_Render<T>['events']>;
231
- export type DropdownMenuSubContentSlots<T extends Transition> = ReturnType<__sveltets_Render<T>['slots']>;
232
- export default class DropdownMenuSubContent<T extends Transition> extends SvelteComponent<DropdownMenuSubContentProps<T>, DropdownMenuSubContentEvents<T>, DropdownMenuSubContentSlots<T>> {
230
+ export type DropdownMenuSubContentProps<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['props']>;
231
+ export type DropdownMenuSubContentEvents<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['events']>;
232
+ export type DropdownMenuSubContentSlots<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['slots']>;
233
+ export default class DropdownMenuSubContent<T extends Transition, In extends Transition, Out extends Transition> extends SvelteComponent<DropdownMenuSubContentProps<T, In, Out>, DropdownMenuSubContentEvents<T, In, Out>, DropdownMenuSubContentSlots<T, In, Out>> {
233
234
  }
234
235
  export {};
@@ -1,9 +1,13 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
- import { ctx } from "../ctx.js";
3
2
  import { disabledAttrs } from "../../../internal/helpers.js";
3
+ import { ctx } from "../ctx.js";
4
+ import { createDispatcher } from "../../../internal/events.js";
4
5
  export let disabled = false;
5
6
  export let asChild = false;
6
- const subTrigger = ctx.getSubTrigger().elements.subTrigger;
7
+ const {
8
+ elements: { subTrigger }
9
+ } = ctx.getSubTrigger();
10
+ const dispatch = createDispatcher();
7
11
  </script>
8
12
 
9
13
  <!-- svelte-ignore a11y-no-static-element-interactions applied by melt's action/store -->
@@ -14,12 +18,12 @@ const subTrigger = ctx.getSubTrigger().elements.subTrigger;
14
18
  <div
15
19
  {...builder} use:builder.action
16
20
  {...$$restProps}
17
- on:m-click
18
- on:m-focusin
19
- on:m-focusout
20
- on:m-keydown
21
- on:m-pointerleave
22
- on:m-pointermove
21
+ on:m-click={dispatch}
22
+ on:m-focusin={dispatch}
23
+ on:m-focusout={dispatch}
24
+ on:m-keydown={dispatch}
25
+ on:m-pointerleave={dispatch}
26
+ on:m-pointermove={dispatch}
23
27
  {...disabledAttrs(disabled)}
24
28
  >
25
29
  <slot {builder} />
@@ -1,4 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ import type { SubTriggerEvents } from "../types.js";
2
3
  declare const __propDef: {
3
4
  props: {
4
5
  disabled?: boolean | undefined;
@@ -217,7 +218,7 @@ declare const __propDef: {
217
218
  builder: any;
218
219
  };
219
220
  };
220
- events: import("../types.js").ItemEvents;
221
+ events: SubTriggerEvents;
221
222
  };
222
223
  export type DropdownMenuSubTriggerProps = typeof __propDef.props;
223
224
  export type DropdownMenuSubTriggerEvents = typeof __propDef.events;
@@ -1,16 +1,18 @@
1
- <script>import { ctx } from "../ctx.js";
2
- import { melt } from "@melt-ui/svelte";
1
+ <script>import { melt } from "@melt-ui/svelte";
2
+ import { ctx } from "../ctx.js";
3
+ import { createDispatcher } from "../../../internal/events.js";
3
4
  export let asChild = false;
4
5
  const {
5
6
  elements: { trigger }
6
7
  } = ctx.get();
8
+ const dispatch = createDispatcher();
7
9
  </script>
8
10
 
9
11
  {#if asChild}
10
12
  <slot builder={$trigger} />
11
13
  {:else}
12
14
  {@const builder = $trigger}
13
- <button {...builder} use:builder.action {...$$restProps} on:m-keydown on:m-pointerdown>
15
+ <button {...builder} use:builder.action {...$$restProps} on:m-keydown={dispatch} on:m-pointerdown={dispatch}>
14
16
  <slot {builder} />
15
17
  </button>
16
18
  {/if}
@@ -1,6 +1,6 @@
1
- import type { AsChild, Expand, HTMLDivAttributes, OmitChecked, OmitOpen, OmitValue, OnChangeFn, Transition, TransitionParams } from "../../internal/index.js";
2
- import type { ButtonEventHandler, DivEventHandler } from "../../index.js";
3
- import type { CreateDropdownMenuProps, CreateDropdownMenuCheckboxItemProps, CreateDropdownMenuRadioGroupProps, DropdownMenuRadioItemProps, CreateDropdownSubmenuProps, DropdownMenuComponentEvents } from "@melt-ui/svelte";
1
+ import type { TransitionProps, AsChild, Expand, HTMLDivAttributes, OmitChecked, OmitOpen, OmitValue, OnChangeFn, Transition } from "../../internal/index.js";
2
+ import type { CustomEventHandler } from "../../index.js";
3
+ import type { CreateDropdownMenuProps, CreateDropdownMenuCheckboxItemProps, CreateDropdownMenuRadioGroupProps, DropdownMenuRadioItemProps, CreateDropdownSubmenuProps } from "@melt-ui/svelte";
4
4
  import type { HTMLButtonAttributes } from "svelte/elements";
5
5
  type Props = Expand<OmitOpen<CreateDropdownMenuProps> & {
6
6
  open?: CreateDropdownMenuProps["defaultOpen"] & {};
@@ -15,11 +15,9 @@ type RadioGroupProps = Expand<OmitValue<CreateDropdownMenuRadioGroupProps> & {
15
15
  onValueChange?: OnChangeFn<CreateDropdownMenuRadioGroupProps["defaultValue"]>;
16
16
  } & AsChild> & HTMLDivAttributes;
17
17
  type RadioItemProps = Expand<DropdownMenuRadioItemProps & AsChild> & HTMLDivAttributes;
18
- type ContentProps<T extends Transition = Transition> = Expand<{
18
+ type ContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<{
19
19
  sideOffset?: number;
20
- transition?: T;
21
- transitionConfig?: TransitionParams<T>;
22
- } & AsChild> & HTMLDivAttributes;
20
+ } & TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
23
21
  type GroupProps = AsChild & HTMLDivAttributes;
24
22
  type ItemProps = Expand<{
25
23
  disabled?: boolean;
@@ -28,11 +26,9 @@ type CheckboxItemIndicatorProps = HTMLDivAttributes;
28
26
  type LabelProps = AsChild & HTMLDivAttributes;
29
27
  type SeparatorProps = AsChild & HTMLDivAttributes;
30
28
  type SubProps = Expand<CreateDropdownSubmenuProps>;
31
- type SubContentProps<T extends Transition = Transition> = Expand<{
29
+ type SubContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<{
32
30
  sideOffset?: number;
33
- transition?: T;
34
- transitionConfig?: TransitionParams<T>;
35
- } & AsChild> & HTMLDivAttributes;
31
+ } & TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
36
32
  type SubTriggerProps = Expand<{
37
33
  disabled?: boolean;
38
34
  } & AsChild> & HTMLDivAttributes;
@@ -40,17 +36,28 @@ type TriggerProps = AsChild & HTMLButtonAttributes;
40
36
  type ArrowProps = Expand<{
41
37
  size?: number;
42
38
  } & AsChild> & HTMLDivAttributes;
43
- type ItemEvents = {
44
- "m-click": DivEventHandler<MouseEvent>;
45
- "m-keydown": DivEventHandler<KeyboardEvent>;
39
+ type ItemEvents<T extends Element = HTMLDivElement> = {
40
+ click: CustomEventHandler<MouseEvent, T>;
41
+ keydown: CustomEventHandler<KeyboardEvent, T>;
42
+ focusin: CustomEventHandler<FocusEvent, T>;
43
+ focusout: CustomEventHandler<FocusEvent, T>;
44
+ pointerdown: CustomEventHandler<PointerEvent, T>;
45
+ pointerleave: CustomEventHandler<PointerEvent, T>;
46
+ pointermove: CustomEventHandler<PointerEvent, T>;
46
47
  };
47
48
  type CheckboxItemEvents = ItemEvents;
48
49
  type RadioItemEvents = ItemEvents;
49
- type SubTriggerEvents = ItemEvents;
50
- type TriggerEvents = {
51
- "m-click": ButtonEventHandler<MouseEvent>;
52
- "m-keydown": ButtonEventHandler<KeyboardEvent>;
50
+ type SubTriggerEvents = Omit<ItemEvents, "pointerdown">;
51
+ type TriggerEvents<T extends Element = HTMLButtonElement> = {
52
+ click: CustomEventHandler<MouseEvent, T>;
53
+ keydown: CustomEventHandler<KeyboardEvent, T>;
54
+ };
55
+ type ContentEvents<T extends Element = HTMLDivElement> = {
56
+ keydown: CustomEventHandler<KeyboardEvent, T>;
57
+ };
58
+ type SubContentEvents<T extends Element = HTMLDivElement> = {
59
+ keydown: CustomEventHandler<KeyboardEvent, T>;
60
+ focusout: CustomEventHandler<FocusEvent, T>;
61
+ pointermove: CustomEventHandler<PointerEvent, T>;
53
62
  };
54
- type ContentEvents = DropdownMenuComponentEvents["menu"];
55
- type SubContentEvents = DropdownMenuComponentEvents["submenu"];
56
63
  export type { Props, ArrowProps, CheckboxItemProps, ContentProps, GroupProps, ItemProps, CheckboxItemIndicatorProps, LabelProps, RadioGroupProps, RadioItemProps, SeparatorProps, SubProps, SubContentProps, SubTriggerProps, TriggerProps, Props as DropdownMenuProps, ArrowProps as DropdownMenuArrowProps, CheckboxItemProps as DropdownMenuCheckboxItemProps, ContentProps as DropdownMenuContentProps, GroupProps as DropdownMenuGroupProps, ItemProps as DropdownMenuItemProps, CheckboxItemIndicatorProps as DropdownMenuCheckboxItemIndicatorProps, LabelProps as DropdownMenuLabelProps, RadioGroupProps as DropdownMenuRadioGroupProps, RadioItemProps as DropdownMenuRadioItemProps, SeparatorProps as DropdownMenuSeparatorProps, SubProps as DropdownMenuSubProps, SubContentProps as DropdownMenuSubContentProps, SubTriggerProps as DropdownMenuSubTriggerProps, TriggerProps as DropdownMenuTriggerProps, TriggerEvents, CheckboxItemEvents, ContentEvents, RadioItemEvents, SubContentEvents, SubTriggerEvents, ItemEvents, TriggerEvents as DropdownMenuTriggerEvents, CheckboxItemEvents as DropdownMenuCheckboxItemEvents, ContentEvents as DropdownMenuContentEvents, RadioItemEvents as DropdownMenuRadioItemEvents, SubContentEvents as DropdownMenuSubContentEvents, SubTriggerEvents as DropdownMenuSubTriggerEvents, ItemEvents as DropdownMenuItemEvents };
@@ -1,7 +1,11 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
2
  import { ctx } from "../ctx.js";
3
+ import { createDispatcher } from "../../../internal/events.js";
3
4
  export let asChild = false;
4
- const root = ctx.get().elements.root;
5
+ const {
6
+ elements: { root }
7
+ } = ctx.get();
8
+ const dispatch = createDispatcher();
5
9
  </script>
6
10
 
7
11
  <!-- svelte-ignore a11y-no-static-element-interactions / applied by melt's builder-->
@@ -9,7 +13,7 @@ const root = ctx.get().elements.root;
9
13
  <slot builder={$root} />
10
14
  {:else}
11
15
  {@const builder = $root}
12
- <label {...builder} use:builder.action {...$$restProps} on:m-mousedown>
16
+ <label {...builder} use:builder.action {...$$restProps} on:m-mousedown={dispatch}>
13
17
  <slot {builder} />
14
18
  </label>
15
19
  {/if}
@@ -1,4 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ import type { Events } from "../types.js";
2
3
  declare const __propDef: {
3
4
  props: {
4
5
  asChild?: boolean | undefined;
@@ -218,9 +219,7 @@ declare const __propDef: {
218
219
  builder: any;
219
220
  };
220
221
  };
221
- events: {
222
- "m-mousedown"?: import("@melt-ui/svelte/internal/types").MeltEventHandler<MouseEvent> | undefined;
223
- };
222
+ events: Events;
224
223
  };
225
224
  export type LabelProps = typeof __propDef.props;
226
225
  export type LabelEvents = typeof __propDef.events;