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
@@ -3,9 +3,6 @@ import { type Checkbox as CheckboxReturn, type CreateCheckboxProps } from "@melt
3
3
  export declare const ctx: {
4
4
  set: typeof set;
5
5
  get: typeof get;
6
- getIndicator: typeof getIndicator;
7
- getInput: typeof getInput;
8
- getCheckbox: typeof getCheckbox;
9
6
  };
10
7
  declare function set(props: CreateCheckboxProps): {
11
8
  updateOption: <K extends string, V extends unknown>(key: K, value: V | undefined) => void;
@@ -59,36 +56,4 @@ declare function set(props: CreateCheckboxProps): {
59
56
  };
60
57
  };
61
58
  declare function get(): CheckboxReturn;
62
- declare function getCheckbox(): import("@melt-ui/svelte/internal/helpers").ExplicitBuilderReturn<[{
63
- update: (updater: import("svelte/store").Updater<boolean | "indeterminate">, sideEffect?: ((newValue: boolean | "indeterminate") => void) | undefined) => void;
64
- set: (this: void, value: boolean | "indeterminate") => void;
65
- subscribe(this: void, run: import("svelte/store").Subscriber<boolean | "indeterminate">, invalidate?: import("svelte/store").Invalidator<boolean | "indeterminate"> | undefined): import("svelte/store").Unsubscriber;
66
- }, import("svelte/store").Writable<boolean>, import("svelte/store").Writable<boolean>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"keydown" | "click">, ([$checked, $disabled, $required]: [boolean | "indeterminate", boolean, boolean]) => {
67
- readonly 'data-disabled': boolean;
68
- readonly 'data-state': "checked" | "indeterminate" | "unchecked";
69
- readonly type: "button";
70
- readonly role: "checkbox";
71
- readonly 'aria-checked': boolean | "mixed";
72
- readonly 'aria-required': boolean;
73
- }, "checkbox">;
74
- declare function getIndicator(): {
75
- isChecked: import("svelte/store").Readable<boolean>;
76
- isIndeterminate: import("svelte/store").Readable<boolean>;
77
- };
78
- declare function getInput(): import("@melt-ui/svelte/internal/helpers").ExplicitBuilderReturn<[{
79
- update: (updater: import("svelte/store").Updater<boolean | "indeterminate">, sideEffect?: ((newValue: boolean | "indeterminate") => void) | undefined) => void;
80
- set: (this: void, value: boolean | "indeterminate") => void;
81
- subscribe(this: void, run: import("svelte/store").Subscriber<boolean | "indeterminate">, invalidate?: import("svelte/store").Invalidator<boolean | "indeterminate"> | undefined): import("svelte/store").Unsubscriber;
82
- }, import("svelte/store").Writable<string | undefined>, import("svelte/store").Writable<string>, import("svelte/store").Writable<boolean>, import("svelte/store").Writable<boolean>], import("svelte/action").Action<any, any, Record<never, any>>, ([$checked, $name, $value, $required, $disabled]: [boolean | "indeterminate", string | undefined, string, boolean, boolean]) => {
83
- readonly type: "checkbox";
84
- readonly 'aria-hidden': true;
85
- readonly hidden: true;
86
- readonly tabindex: -1;
87
- readonly name: string | undefined;
88
- readonly value: string;
89
- readonly checked: boolean;
90
- readonly required: boolean;
91
- readonly disabled: boolean;
92
- readonly style: string;
93
- }, "checkbox-input">;
94
59
  export {};
@@ -4,14 +4,11 @@ import { removeUndefined, getOptionUpdater } from "../../internal/index.js";
4
4
  const NAME = "Checkbox";
5
5
  export const ctx = {
6
6
  set,
7
- get,
8
- getIndicator,
9
- getInput,
10
- getCheckbox
7
+ get
11
8
  };
12
9
  function set(props) {
13
10
  const checkbox = createCheckbox(removeUndefined(props));
14
- setContext(NAME, checkbox);
11
+ setContext(NAME, { ...checkbox });
15
12
  return {
16
13
  ...checkbox,
17
14
  updateOption: getOptionUpdater(checkbox.options)
@@ -20,15 +17,3 @@ function set(props) {
20
17
  function get() {
21
18
  return getContext(NAME);
22
19
  }
23
- function getCheckbox() {
24
- return get().elements.root;
25
- }
26
- function getIndicator() {
27
- return {
28
- isChecked: get().helpers.isChecked,
29
- isIndeterminate: get().helpers.isIndeterminate
30
- };
31
- }
32
- function getInput() {
33
- return get().elements.input;
34
- }
@@ -1,4 +1,5 @@
1
1
  import Root from "./components/Checkbox.svelte";
2
2
  import Indicator from "./components/CheckboxIndicator.svelte";
3
- export { Root, Indicator, Root as Checkbox, Indicator as CheckboxIndicator };
3
+ import Input from "./components/CheckboxInput.svelte";
4
+ export { Root, Indicator, Input, Root as Checkbox, Indicator as CheckboxIndicator, Input as CheckboxInput };
4
5
  export * from "./types.js";
@@ -1,4 +1,7 @@
1
1
  import Root from "./components/Checkbox.svelte";
2
2
  import Indicator from "./components/CheckboxIndicator.svelte";
3
- export { Root, Indicator, Root as Checkbox, Indicator as CheckboxIndicator };
3
+ import Input from "./components/CheckboxInput.svelte";
4
+ export { Root, Indicator, Input,
5
+ //
6
+ Root as Checkbox, Indicator as CheckboxIndicator, Input as CheckboxInput };
4
7
  export * from "./types.js";
@@ -1,5 +1,5 @@
1
1
  import type { Expand, HTMLDivAttributes, OmitChecked, OnChangeFn, AsChild } from "../../internal/index.js";
2
- import type { ButtonEventHandler } from "../../index.js";
2
+ import type { CustomEventHandler } from "../../index.js";
3
3
  import type { CreateCheckboxProps } from "@melt-ui/svelte";
4
4
  import type { HTMLButtonAttributes, HTMLInputAttributes } from "svelte/elements";
5
5
  type Props = Expand<OmitChecked<CreateCheckboxProps> & {
@@ -9,7 +9,7 @@ type Props = Expand<OmitChecked<CreateCheckboxProps> & {
9
9
  type IndicatorProps = HTMLDivAttributes;
10
10
  type InputProps = Omit<HTMLInputAttributes, "value">;
11
11
  type Events = {
12
- "m-click": ButtonEventHandler<MouseEvent>;
13
- "m-keydown": ButtonEventHandler<KeyboardEvent>;
12
+ click: CustomEventHandler<MouseEvent, HTMLButtonElement>;
13
+ keydown: CustomEventHandler<KeyboardEvent, HTMLButtonElement>;
14
14
  };
15
15
  export type { Props, IndicatorProps, InputProps, Props as CheckboxProps, IndicatorProps as CheckboxIndicatorProps, InputProps as CheckboxInputProps, Events, Events as CheckboxEvents };
@@ -14,8 +14,10 @@ const {
14
14
  forceVisible,
15
15
  defaultOpen: open,
16
16
  onOpenChange: ({ next }) => {
17
- open = next;
18
- onOpenChange?.(next);
17
+ if (open !== next) {
18
+ onOpenChange?.(next);
19
+ open = next;
20
+ }
19
21
  return next;
20
22
  }
21
23
  });
@@ -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 },
@@ -9,17 +13,37 @@ const {
9
13
  } = ctx.get();
10
14
  </script>
11
15
 
12
- {#if $open}
16
+ {#if asChild && $open}
13
17
  {@const builder = $content}
14
- {#if asChild}
15
- <slot builder={$content} />
16
- {:else if transition}
17
- <div {...builder} use:builder.action transition:transition={transitionConfig} {...$$restProps}>
18
- <slot {builder} />
19
- </div>
20
- {:else}
21
- <div {...builder} use:builder.action {...$$restProps}>
22
- <slot {builder} />
23
- </div>
24
- {/if}
18
+ <slot {builder} />
19
+ {:else if transition && $open}
20
+ {@const builder = $content}
21
+ <div transition:transition={transitionConfig} {...builder} use:builder.action {...$$restProps}>
22
+ <slot {builder} />
23
+ </div>
24
+ {:else if inTransition && outTransition && $open}
25
+ {@const builder = $content}
26
+ <div
27
+ in:inTransition={inTransitionConfig}
28
+ out:outTransition={outTransitionConfig}
29
+ {...builder} use:builder.action
30
+ {...$$restProps}
31
+ >
32
+ <slot {builder} />
33
+ </div>
34
+ {:else if inTransition && $open}
35
+ {@const builder = $content}
36
+ <div in:inTransition={inTransitionConfig} {...builder} use:builder.action {...$$restProps}>
37
+ <slot {builder} />
38
+ </div>
39
+ {:else if outTransition && $open}
40
+ {@const builder = $content}
41
+ <div out:outTransition={outTransitionConfig} {...builder} use:builder.action {...$$restProps}>
42
+ <slot {builder} />
43
+ </div>
44
+ {:else if $open}
45
+ {@const builder = $content}
46
+ <div {...builder} use:builder.action {...$$restProps}>
47
+ <slot {builder} />
48
+ </div>
25
49
  {/if}
@@ -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,14 +1,18 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
+ import { createDispatcher } from "../../../internal/events.js";
2
3
  import { ctx } from "../ctx.js";
3
4
  export let asChild = false;
4
- const trigger = ctx.get().elements.trigger;
5
+ const {
6
+ elements: { trigger }
7
+ } = ctx.get();
8
+ const dispatch = createDispatcher();
5
9
  </script>
6
10
 
7
11
  {#if asChild}
8
12
  <slot builder={$trigger} />
9
13
  {:else}
10
14
  {@const builder = $trigger}
11
- <button {...builder} use:builder.action {...$$restProps} on:m-click>
15
+ <button {...builder} use:builder.action {...$$restProps} on:m-click={dispatch}>
12
16
  <slot {builder} />
13
17
  </button>
14
18
  {/if}
@@ -1,17 +1,14 @@
1
- import type { HTMLDivAttributes, Transition, TransitionParams, OmitOpen, Expand, OnChangeFn, AsChild } from "../../internal/index.js";
2
- import type { ButtonEventHandler } from "../../index.js";
1
+ import type { HTMLDivAttributes, Transition, OmitOpen, Expand, OnChangeFn, AsChild, TransitionProps } from "../../internal/index.js";
2
+ import type { CustomEventHandler } from "../../index.js";
3
3
  import type { CreateCollapsibleProps } from "@melt-ui/svelte";
4
4
  import type { HTMLButtonAttributes } from "svelte/elements";
5
5
  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
- "m-click": ButtonEventHandler<MouseEvent>;
12
+ click: CustomEventHandler<MouseEvent, HTMLButtonElement>;
16
13
  };
17
14
  export type { Props, ContentProps, TriggerProps, Props as CollapsibleProps, ContentProps as CollapsibleContentProps, TriggerProps as CollapsibleTriggerProps, TriggerEvents, TriggerEvents as CollapsibleTriggerEvents };
@@ -2,7 +2,7 @@
2
2
  export let closeOnOutsideClick = void 0;
3
3
  export let closeOnEscape = void 0;
4
4
  export let portal = void 0;
5
- export let forceVisible = void 0;
5
+ export let forceVisible = true;
6
6
  export let open = void 0;
7
7
  export let onOpenChange = void 0;
8
8
  export let preventScroll = void 0;
@@ -25,8 +25,10 @@ const {
25
25
  loop,
26
26
  dir,
27
27
  onOpenChange: ({ next }) => {
28
- onOpenChange?.(next);
29
- open = 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 disabled = void 0;
5
6
  export let onCheckedChange = 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
  $:
@@ -31,13 +33,13 @@ $:
31
33
  <div
32
34
  {...builder} use:builder.action
33
35
  {...$$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
36
+ on:m-click={dispatch}
37
+ on:m-focusin={dispatch}
38
+ on:m-focusout={dispatch}
39
+ on:m-keydown={dispatch}
40
+ on:m-pointerdown={dispatch}
41
+ on:m-pointerleave={dispatch}
42
+ on:m-pointermove={dispatch}
41
43
  >
42
44
  <slot {builder} />
43
45
  </div>
@@ -1,30 +1,73 @@
1
1
  <script>import Overlay from "../../../internal/overlay.svelte";
2
+ import { createDispatcher } from "../../../internal/events.js";
2
3
  import { melt } from "@melt-ui/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
  {#if $open}
15
21
  <Overlay />
22
+ {/if}
23
+
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}
16
69
  {@const builder = $menu}
17
- {#if asChild}
70
+ <div {...builder} use:builder.action {...$$restProps} on:m-keydown={dispatch}>
18
71
  <slot {builder} />
19
- {:else if transition}
20
- <Overlay />
21
- <div {...builder} use:builder.action {...$$restProps} on:m-keydown transition:transition={transitionConfig}>
22
- <slot {builder} />
23
- </div>
24
- {:else}
25
- <Overlay />
26
- <div {...builder} use:builder.action {...$$restProps} on:m-keydown>
27
- <slot {builder} />
28
- </div>
29
- {/if}
72
+ </div>
30
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 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>> {
230
+ export type ContextMenuContentProps<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['props']>;
231
+ export type ContextMenuContentEvents<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['events']>;
232
+ export type ContextMenuContentSlots<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['slots']>;
233
+ 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
234
  }
232
235
  export {};
@@ -1,9 +1,13 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
2
  import { ctx } from "../ctx.js";
3
3
  import { disabledAttrs } from "../../../internal/helpers.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 / role applied by melt 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 -->
@@ -16,13 +18,13 @@ const {
16
18
  <div
17
19
  {...builder} use:builder.action
18
20
  {...$$restProps}
19
- on:m-click
20
- on:m-focusin
21
- on:m-focusout
22
- on:m-keydown
23
- on:m-pointerdown
24
- on:m-pointerleave
25
- 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}
26
28
  >
27
29
  <slot {builder} />
28
30
  </div>
@@ -1,33 +1,82 @@
1
- <script>import { melt } from "@melt-ui/svelte";
1
+ <script>import { createDispatcher } from "../../../internal/index.js";
2
+ import { melt } from "@melt-ui/svelte";
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
18
  <!-- svelte-ignore a11y-no-static-element-interactions / applied by melt store -->
13
- {#if $subOpen}
19
+ {#if asChild && $subOpen}
14
20
  {@const builder = $subMenu}
15
- {#if asChild}
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}
72
+ {@const builder = $subMenu}
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
+ >
16
80
  <slot {builder} />
17
- {:else if transition}
18
- <div
19
- {...builder} use:builder.action
20
- {...$$restProps}
21
- on:m-focusout
22
- on:m-keydown
23
- on:m-pointermove
24
- transition:transition={transitionConfig}
25
- >
26
- <slot {builder} />
27
- </div>
28
- {:else}
29
- <div {...builder} use:builder.action {...$$restProps} on:m-focusout on:m-keydown on:m-pointermove>
30
- <slot {builder} />
31
- </div>
32
- {/if}
81
+ </div>
33
82
  {/if}