bits-ui 0.0.33 → 0.5.1

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 (157) 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 +37 -5
  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 +45 -6
  12. package/dist/bits/alert-dialog/components/AlertDialogContent.svelte.d.ts +10 -6
  13. package/dist/bits/alert-dialog/components/AlertDialogOverlay.svelte +33 -5
  14. package/dist/bits/alert-dialog/components/AlertDialogPortal.svelte +7 -8
  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 +6 -3
  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 +58 -11
  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 +36 -4
  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 +45 -6
  50. package/dist/bits/dialog/components/DialogContent.svelte.d.ts +10 -6
  51. package/dist/bits/dialog/components/DialogOverlay.svelte +33 -5
  52. package/dist/bits/dialog/components/DialogPortal.svelte +8 -3
  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 +6 -2
  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 +57 -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 +29 -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 +57 -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 +12 -1
  145. package/dist/internal/helpers.js +65 -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/overlay.svelte +10 -0
  151. package/dist/internal/overlay.svelte.d.ts +14 -0
  152. package/dist/internal/types.d.ts +30 -0
  153. package/package.json +17 -10
  154. package/dist/bits/alert-dialog/components/AlertDialogOverlay.svelte.d.ts +0 -240
  155. package/dist/bits/dialog/components/DialogOverlay.svelte.d.ts +0 -240
  156. package/dist/bits/menubar/components/MenubarContent.svelte.d.ts +0 -229
  157. package/dist/bits/menubar/components/MenubarSubContent.svelte.d.ts +0 -230
@@ -19,7 +19,6 @@ export declare const ctx: {
19
19
  getRadioIndicator: typeof getRadioIndicator;
20
20
  getCheckboxIndicator: typeof getCheckboxIndicator;
21
21
  };
22
- declare function get(): MenubarReturn;
23
22
  declare function set(props: MenubarProps): {
24
23
  updateOption: <K extends string, V extends unknown>(key: K, value: V | undefined) => void;
25
24
  elements: {
@@ -210,7 +209,7 @@ declare function set(props: MenubarProps): {
210
209
  closeOnEscape: import("svelte/store").Writable<boolean>;
211
210
  };
212
211
  };
213
- declare function getMenu(): MenubarMenuReturn;
212
+ declare function get(): MenubarReturn;
214
213
  declare function setMenu(props: CreateMenubarMenuProps): {
215
214
  updateOption: <K extends string, V extends unknown>(key: K, value: V | undefined) => void;
216
215
  elements: {
@@ -381,6 +380,7 @@ declare function setMenu(props: CreateMenubarMenuProps): {
381
380
  forceVisible: import("svelte/store").Writable<boolean>;
382
381
  };
383
382
  };
383
+ declare function getMenu(): MenubarMenuReturn;
384
384
  declare function setSub(props: CreateMenubarSubmenuProps): {
385
385
  updateOption: <K extends string, V extends unknown>(key: K, value: V | undefined) => void;
386
386
  elements: {
@@ -26,9 +26,6 @@ export const ctx = {
26
26
  getRadioIndicator,
27
27
  getCheckboxIndicator
28
28
  };
29
- function get() {
30
- return getContext(NAME);
31
- }
32
29
  function set(props) {
33
30
  const menubar = createMenubar(removeUndefined(props));
34
31
  setContext(NAME, menubar);
@@ -37,8 +34,8 @@ function set(props) {
37
34
  updateOption: getOptionUpdater(menubar.options)
38
35
  };
39
36
  }
40
- function getMenu() {
41
- return getContext(MENU_NAME);
37
+ function get() {
38
+ return getContext(NAME);
42
39
  }
43
40
  function setMenu(props) {
44
41
  const { builders: { createMenu } } = get();
@@ -49,6 +46,9 @@ function setMenu(props) {
49
46
  updateOption: getOptionUpdater(menu.options)
50
47
  };
51
48
  }
49
+ function getMenu() {
50
+ return getContext(MENU_NAME);
51
+ }
52
52
  function setSub(props) {
53
53
  const { builders: { createSubmenu } } = getMenu();
54
54
  const sub = createSubmenu(removeUndefined(props));
@@ -1,6 +1,6 @@
1
- import type { AsChild, Expand, HTMLDivAttributes, OmitChecked, OmitOpen, OmitValue, OnChangeFn } from "../../internal/index.js";
2
- import type { DivEventHandler, ButtonEventHandler } from "../../index.js";
3
- import type { CreateMenubarProps, CreateMenubarMenuProps, CreateMenuCheckboxItemProps, CreateMenuRadioGroupProps, MenubarRadioItemProps, CreateMenubarSubmenuProps, MenubarComponentEvents } from "@melt-ui/svelte";
1
+ import type { AsChild, Expand, HTMLDivAttributes, OmitChecked, OmitOpen, OmitValue, OnChangeFn, Transition, TransitionProps } from "../../internal/index.js";
2
+ import type { CustomEventHandler } from "../../index.js";
3
+ import type { CreateMenubarProps, CreateMenubarMenuProps, CreateMenuCheckboxItemProps, CreateMenuRadioGroupProps, MenubarRadioItemProps, CreateMenubarSubmenuProps } from "@melt-ui/svelte";
4
4
  import type { HTMLButtonAttributes } from "svelte/elements";
5
5
  type Props = Expand<CreateMenubarProps & AsChild> & HTMLDivAttributes;
6
6
  type MenuProps = Expand<OmitOpen<CreateMenubarMenuProps> & {
@@ -16,9 +16,9 @@ type RadioGroupProps = Expand<OmitValue<CreateMenuRadioGroupProps> & {
16
16
  value?: CreateMenuRadioGroupProps["defaultValue"] & {};
17
17
  onValueChange?: OnChangeFn<CreateMenuRadioGroupProps["defaultValue"]>;
18
18
  } & AsChild> & HTMLDivAttributes;
19
- type ContentProps = Expand<{
19
+ type ContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<{
20
20
  sideOffset?: number;
21
- } & AsChild> & HTMLDivAttributes;
21
+ } & TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
22
22
  type GroupProps = AsChild & HTMLDivAttributes;
23
23
  type ItemProps = Expand<{
24
24
  disabled?: boolean;
@@ -28,7 +28,9 @@ type LabelProps = AsChild & HTMLDivAttributes;
28
28
  type RadioItemProps = Expand<MenubarRadioItemProps & AsChild> & HTMLDivAttributes;
29
29
  type SeparatorProps = AsChild & HTMLDivAttributes;
30
30
  type SubProps = Expand<CreateMenubarSubmenuProps>;
31
- type SubContentProps = AsChild & HTMLDivAttributes;
31
+ type SubContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<{
32
+ sideOffset?: number;
33
+ } & TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
32
34
  type SubTriggerProps = Expand<{
33
35
  disabled?: boolean;
34
36
  } & AsChild> & HTMLDivAttributes;
@@ -36,17 +38,29 @@ type TriggerProps = AsChild & HTMLButtonAttributes;
36
38
  type ArrowProps = Expand<{
37
39
  size?: number;
38
40
  } & AsChild> & HTMLDivAttributes;
39
- type ItemEvents = {
40
- "m-click": DivEventHandler<MouseEvent>;
41
- "m-keydown": DivEventHandler<KeyboardEvent>;
41
+ type ItemEvents<T extends Element = HTMLDivElement> = {
42
+ click: CustomEventHandler<PointerEvent, T>;
43
+ focusin: CustomEventHandler<FocusEvent, T>;
44
+ focusout: CustomEventHandler<FocusEvent, T>;
45
+ keydown: CustomEventHandler<KeyboardEvent, T>;
46
+ pointerdown: CustomEventHandler<PointerEvent, T>;
47
+ pointerleave: CustomEventHandler<PointerEvent, T>;
48
+ pointermove: CustomEventHandler<PointerEvent, T>;
42
49
  };
50
+ type SubTriggerEvents<T extends Element = HTMLDivElement> = Expand<Omit<ItemEvents<T>, "pointerdown">>;
43
51
  type CheckboxItemEvents = ItemEvents;
44
52
  type RadioItemEvents = ItemEvents;
45
- type SubTriggerEvents = ItemEvents;
46
- type TriggerEvents = {
47
- "m-click": ButtonEventHandler<MouseEvent>;
48
- "m-keydown": ButtonEventHandler<KeyboardEvent>;
53
+ type TriggerEvents<T extends Element = HTMLButtonElement> = {
54
+ keydown: CustomEventHandler<KeyboardEvent, T>;
55
+ click: CustomEventHandler<MouseEvent, T>;
56
+ pointerenter: CustomEventHandler<PointerEvent, T>;
57
+ };
58
+ type ContentEvents<T extends Element = HTMLDivElement> = {
59
+ keydown: CustomEventHandler<KeyboardEvent, T>;
60
+ };
61
+ type SubContentEvents<T extends Element = HTMLDivElement> = {
62
+ focusout: CustomEventHandler<FocusEvent, T>;
63
+ pointermove: CustomEventHandler<PointerEvent, T>;
64
+ keydown: CustomEventHandler<KeyboardEvent, T>;
49
65
  };
50
- type ContentEvents = MenubarComponentEvents["menu"];
51
- type SubContentEvents = MenubarComponentEvents["submenu"];
52
66
  export type { Props, SubProps, MenuProps, ItemProps, ArrowProps, GroupProps, LabelProps, TriggerProps, ContentProps, RadioItemProps, SeparatorProps, RadioGroupProps, SubContentProps, SubTriggerProps, CheckboxItemProps, CheckboxItemIndicatorProps, Props as MenubarProps, SubProps as MenubarSubProps, MenuProps as MenubarMenuProps, ItemProps as MenubarItemProps, ArrowProps as MenubarArrowProps, GroupProps as MenubarGroupProps, LabelProps as MenubarLabelProps, ContentProps as MenubarContentProps, TriggerProps as MenubarTriggerProps, RadioItemProps as MenubarRadioItemProps, SeparatorProps as MenubarSeparatorProps, SubContentProps as MenubarSubContentProps, SubTriggerProps as MenubarSubTriggerProps, RadioGroupProps as MenubarRadioGroupProps, CheckboxItemProps as MenubarCheckboxItemProps, CheckboxItemIndicatorProps as MenubarCheckboxItemIndicatorProps, TriggerEvents, ItemEvents, SubTriggerEvents, CheckboxItemEvents, RadioItemEvents, ContentEvents, SubContentEvents, TriggerEvents as MenubarTriggerEvents, ItemEvents as MenubarItemEvents, SubTriggerEvents as MenubarSubTriggerEvents, CheckboxItemEvents as MenubarCheckboxItemEvents, RadioItemEvents as MenubarRadioItemEvents, ContentEvents as MenubarContentEvents, SubContentEvents as MenubarSubContentEvents };
@@ -21,8 +21,10 @@ const {
21
21
  portal,
22
22
  defaultOpen: open,
23
23
  onOpenChange: ({ next }) => {
24
- onOpenChange?.(next);
25
- open = next;
24
+ if (open !== next) {
25
+ onOpenChange?.(next);
26
+ open = next;
27
+ }
26
28
  return next;
27
29
  }
28
30
  });
@@ -1,14 +1,18 @@
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 close = ctx.get().elements.close;
5
+ const {
6
+ elements: { close }
7
+ } = ctx.get();
8
+ const dispatch = createDispatcher();
5
9
  </script>
6
10
 
7
11
  {#if asChild}
8
12
  <slot builder={$close} />
9
13
  {:else}
10
14
  {@const builder = $close}
11
- <button {...builder} use:builder.action {...$$restProps} on:m-click on:m-keydown>
15
+ <button {...builder} use:builder.action {...$$restProps} on:m-click={dispatch} on:m-keydown={dispatch}>
12
16
  <slot {builder} />
13
17
  </button>
14
18
  {/if}
@@ -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}
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 {...$$restProps}>
15
47
  <slot {builder} />
16
- {:else if transition}
17
- <div {...$$restProps} {...builder} use:builder.action transition:transition={transitionConfig}>
18
- <slot {builder} />
19
- </div>
20
- {:else}
21
- <div {...builder} use:builder.action {...$$restProps}>
22
- <slot {builder} />
23
- </div>
24
- {/if}
48
+ </div>
25
49
  {/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 PopoverContentProps<T extends Transition> = ReturnType<__sveltets_Render<T>['props']>;
227
- export type PopoverContentEvents<T extends Transition> = ReturnType<__sveltets_Render<T>['events']>;
228
- export type PopoverContentSlots<T extends Transition> = ReturnType<__sveltets_Render<T>['slots']>;
229
- export default class PopoverContent<T extends Transition> extends SvelteComponent<PopoverContentProps<T>, PopoverContentEvents<T>, PopoverContentSlots<T>> {
230
+ export type PopoverContentProps<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['props']>;
231
+ export type PopoverContentEvents<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['events']>;
232
+ export type PopoverContentSlots<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['slots']>;
233
+ export default class PopoverContent<T extends Transition, In extends Transition, Out extends Transition> extends SvelteComponent<PopoverContentProps<T, In, Out>, PopoverContentEvents<T, In, Out>, PopoverContentSlots<T, In, Out>> {
230
234
  }
231
235
  export {};
@@ -1,14 +1,18 @@
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 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 on:m-keydown>
15
+ <button {...builder} use:builder.action {...$$restProps} on:m-click={dispatch} on:m-keydown={dispatch}>
12
16
  <slot {builder} />
13
17
  </button>
14
18
  {/if}
@@ -1,23 +1,20 @@
1
- import type { OmitOpen, Expand, HTMLDivAttributes, Transition, TransitionParams, OnChangeFn, AsChild } from "../../internal/index.js";
2
- import type { ButtonEventHandler } from "../../index.js";
1
+ import type { OmitOpen, Expand, HTMLDivAttributes, Transition, OnChangeFn, AsChild, TransitionProps } from "../../internal/index.js";
2
+ import type { CustomEventHandler } from "../../index.js";
3
3
  import type { CreatePopoverProps } from "@melt-ui/svelte";
4
4
  import type { HTMLButtonAttributes } from "svelte/elements";
5
5
  type Props = Expand<OmitOpen<CreatePopoverProps> & {
6
6
  open?: CreatePopoverProps["defaultOpen"];
7
7
  onOpenChange?: OnChangeFn<CreatePopoverProps["defaultOpen"]>;
8
8
  }>;
9
- type ContentProps<T extends Transition = Transition> = Expand<{
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 CloseProps = AsChild & HTMLButtonAttributes;
15
12
  type ArrowProps = Expand<{
16
13
  size?: number;
17
14
  } & AsChild> & HTMLDivAttributes;
18
- type TriggerEvents = {
19
- "m-click": ButtonEventHandler<MouseEvent>;
20
- "m-keydown": ButtonEventHandler<KeyboardEvent>;
15
+ type TriggerEvents<T extends Element = HTMLButtonElement> = {
16
+ click: CustomEventHandler<MouseEvent, T>;
17
+ keydown: CustomEventHandler<KeyboardEvent, T>;
21
18
  };
22
19
  type CloseEvents = TriggerEvents;
23
20
  export type { Props, CloseProps, ArrowProps, ContentProps, TriggerProps, Props as PopoverProps, ArrowProps as PopoverArrowProps, CloseProps as PopoverCloseProps, ContentProps as PopoverContentProps, TriggerProps as PopoverTriggerProps, TriggerEvents, CloseEvents, TriggerEvents as PopoverTriggerEvents, CloseEvents as PopoverCloseEvents };
@@ -18,8 +18,10 @@ const {
18
18
  loop,
19
19
  orientation,
20
20
  onValueChange: ({ next }) => {
21
- onValueChange?.(next);
22
- value = next;
21
+ if (value !== next) {
22
+ onValueChange?.(next);
23
+ value = next;
24
+ }
23
25
  return next;
24
26
  }
25
27
  });
@@ -1,11 +1,11 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
2
  import { ctx } from "../ctx.js";
3
3
  export let asChild = false;
4
- const itemInput = ctx.get().elements.itemInput;
4
+ const hiddenInput = ctx.get().elements.hiddenInput;
5
5
  </script>
6
6
 
7
7
  {#if asChild}
8
- <slot builder={$itemInput} />
8
+ <slot builder={$hiddenInput} />
9
9
  {:else}
10
- <input {...$itemInput} use:$itemInput.action hidden {...$$restProps} />
10
+ <input {...$hiddenInput} use:$hiddenInput.action {...$$restProps} />
11
11
  {/if}
@@ -251,19 +251,17 @@ declare const __propDef: {
251
251
  };
252
252
  slots: {
253
253
  default: {
254
- builder: ((props: import("@melt-ui/svelte/index.js").RadioGroupItemProps) => ((props: import("@melt-ui/svelte/index.js").RadioGroupItemProps) => {
255
- type: string;
254
+ builder: {
256
255
  'aria-hidden': boolean;
257
256
  tabindex: number;
258
- value: string;
259
- checked: boolean;
260
257
  disabled: boolean;
261
- }) & {
258
+ value: string;
259
+ required: boolean;
260
+ style: string;
261
+ } & {
262
262
  [x: `data-melt-${string}`]: "";
263
263
  } & {
264
- action: import("svelte/action").Action<any, any, Record<never, any>>;
265
- }) & {
266
- action: import("svelte/action").Action<any, any, Record<never, any>>;
264
+ action: (_node: HTMLInputElement) => void;
267
265
  };
268
266
  };
269
267
  };
@@ -1,16 +1,26 @@
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
- const item = ctx.setItem(value).elements.item;
7
+ const {
8
+ elements: { item }
9
+ } = ctx.setItem(value);
10
+ const dispatch = createDispatcher();
7
11
  </script>
8
12
 
9
13
  {#if asChild}
10
14
  <slot builder={$item} />
11
15
  {:else}
12
16
  {@const builder = $item({ value, disabled })}
13
- <button {...builder} use:builder.action {...$$restProps} on:m-click on:m-focus on:m-keydown>
17
+ <button
18
+ {...builder} use:builder.action
19
+ {...$$restProps}
20
+ on:m-click={dispatch}
21
+ on:m-focus={dispatch}
22
+ on:m-keydown={dispatch}
23
+ >
14
24
  <slot {builder} />
15
25
  </button>
16
26
  {/if}
@@ -30,17 +30,17 @@ declare function set(props: CreateRadioGroupProps): {
30
30
  readonly role: "radio";
31
31
  readonly tabindex: 0 | -1;
32
32
  }, string>;
33
- itemInput: import("@melt-ui/svelte/internal/helpers").ExplicitBuilderReturn<[import("svelte/store").Writable<boolean>, {
33
+ hiddenInput: import("@melt-ui/svelte/internal/helpers").ExplicitBuilderReturn<[import("svelte/store").Writable<boolean>, {
34
34
  update: (updater: import("svelte/store").Updater<string>, sideEffect?: ((newValue: string) => void) | undefined) => void;
35
35
  set: (this: void, value: string) => void;
36
36
  subscribe(this: void, run: import("svelte/store").Subscriber<string>, invalidate?: import("svelte/store").Invalidator<string> | undefined): import("svelte/store").Unsubscriber;
37
- }], import("svelte/action").Action<any, any, Record<never, any>>, ([$disabled, $value]: [boolean, string]) => (props: import("@melt-ui/svelte").RadioGroupItemProps) => {
38
- type: string;
37
+ }, import("svelte/store").Writable<boolean>], (_node: HTMLInputElement) => void, ([$disabled, $value, $required]: [boolean, string, boolean]) => {
39
38
  'aria-hidden': boolean;
40
39
  tabindex: number;
41
- value: string;
42
- checked: boolean;
43
40
  disabled: boolean;
41
+ value: string;
42
+ required: boolean;
43
+ style: string;
44
44
  }, string>;
45
45
  };
46
46
  states: {
@@ -1,5 +1,5 @@
1
1
  import type { Expand, HTMLDivAttributes, OmitValue, OnChangeFn, ObjectVariation, AsChild } from "../../internal/index.js";
2
- import type { ButtonEventHandler } from "../../index.js";
2
+ import type { CustomEventHandler } from "../../index.js";
3
3
  import type { CreateRadioGroupProps, RadioGroupItemProps } from "@melt-ui/svelte";
4
4
  import type { HTMLButtonAttributes, HTMLInputAttributes } from "svelte/elements";
5
5
  type Props = Expand<OmitValue<CreateRadioGroupProps> & {
@@ -8,8 +8,9 @@ type Props = Expand<OmitValue<CreateRadioGroupProps> & {
8
8
  } & AsChild> & HTMLDivAttributes;
9
9
  type InputProps = AsChild & HTMLInputAttributes;
10
10
  type ItemProps = Expand<ObjectVariation<RadioGroupItemProps> & AsChild> & HTMLButtonAttributes;
11
- type ItemEvents = {
12
- "m-click": ButtonEventHandler<MouseEvent>;
13
- "m-keydown": ButtonEventHandler<KeyboardEvent>;
11
+ type ItemEvents<T extends Element = HTMLButtonElement> = {
12
+ click: CustomEventHandler<MouseEvent, T>;
13
+ keydown: CustomEventHandler<KeyboardEvent, T>;
14
+ focus: CustomEventHandler<FocusEvent, T>;
14
15
  };
15
16
  export type { Props, InputProps, ItemProps, Props as RadioGroupProps, InputProps as RadioGroupInputProps, ItemProps as RadioGroupItemProps, ItemEvents, ItemEvents as RadioGroupItemEvents };
@@ -10,13 +10,13 @@ export let portal = void 0;
10
10
  export let positioning = void 0;
11
11
  export let name = void 0;
12
12
  export let multiple = void 0;
13
- export let value = void 0;
14
- export let onValueChange = void 0;
13
+ export let selected = void 0;
14
+ export let onSelectedChange = void 0;
15
15
  export let open = void 0;
16
16
  export let onOpenChange = void 0;
17
- export let label = void 0;
17
+ export let forceVisible = true;
18
18
  const {
19
- states: { open: localOpen, value: localValue },
19
+ states: { open: localOpen, selected: localSelected },
20
20
  updateOption
21
21
  } = ctx.set({
22
22
  required,
@@ -30,24 +30,28 @@ const {
30
30
  positioning,
31
31
  name,
32
32
  multiple,
33
- defaultValue: value,
33
+ forceVisible,
34
+ defaultSelected: selected,
34
35
  defaultOpen: open,
35
- defaultValueLabel: label,
36
- onValueChange: ({ next }) => {
37
- onValueChange?.(next);
38
- value = next;
36
+ onSelectedChange: ({ next }) => {
37
+ if (selected !== next) {
38
+ onSelectedChange?.(next);
39
+ selected = next;
40
+ }
39
41
  return next;
40
42
  },
41
43
  onOpenChange: ({ next }) => {
42
- onOpenChange?.(next);
43
- open = next;
44
+ if (open !== next) {
45
+ onOpenChange?.(next);
46
+ open = next;
47
+ }
44
48
  return next;
45
49
  }
46
50
  });
47
51
  $:
48
52
  open !== void 0 && localOpen.set(open);
49
53
  $:
50
- value !== void 0 && localValue.set(value);
54
+ selected !== void 0 && localSelected.set(selected);
51
55
  $:
52
56
  updateOption("required", required);
53
57
  $:
@@ -70,6 +74,8 @@ $:
70
74
  updateOption("name", name);
71
75
  $:
72
76
  updateOption("multiple", multiple);
77
+ $:
78
+ updateOption("forceVisible", forceVisible);
73
79
  </script>
74
80
 
75
81
  <slot />
@@ -2,6 +2,7 @@ import { SvelteComponent } from "svelte";
2
2
  import type { SelectProps } from "../types.js";
3
3
  declare const __propDef: {
4
4
  props: {
5
+ forceVisible?: boolean | undefined;
5
6
  multiple?: false | undefined;
6
7
  disabled?: boolean | undefined;
7
8
  preventScroll?: boolean | undefined;
@@ -13,11 +14,10 @@ declare const __propDef: {
13
14
  positioning?: import("@melt-ui/svelte/internal/actions").FloatingConfig | undefined;
14
15
  arrowSize?: number | undefined;
15
16
  loop?: boolean | undefined;
16
- value?: any;
17
- onValueChange?: import("../../../internal/types.js").OnChangeFn<any> | undefined;
17
+ selected?: import("@melt-ui/svelte/index.js").SelectOption<unknown> | undefined;
18
+ onSelectedChange?: import("../../../internal/types.js").OnChangeFn<import("@melt-ui/svelte/index.js").SelectOption<unknown> | undefined> | undefined;
18
19
  open?: boolean | undefined;
19
20
  onOpenChange?: import("../../../internal/types.js").OnChangeFn<boolean | undefined> | undefined;
20
- label?: string | undefined;
21
21
  };
22
22
  events: {
23
23
  [evt: string]: CustomEvent<any>;
@@ -1,27 +1,73 @@
1
- <script>import { melt } from "@melt-ui/svelte";
1
+ <script>import { createDispatcher } from "../../../internal/events.js";
2
+ import { melt } from "@melt-ui/svelte";
3
+ import Overlay from "../../../internal/overlay.svelte";
2
4
  import { ctx } from "../ctx.js";
3
5
  export let transition = void 0;
4
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;
5
11
  export let asChild = false;
6
12
  const {
7
13
  elements: { menu },
8
14
  states: { open }
9
15
  } = ctx.get();
16
+ const dispatch = createDispatcher();
10
17
  </script>
11
18
 
12
19
  <!-- svelte-ignore a11y-no-static-element-interactions / applied by melt's builder-->
13
20
 
14
21
  {#if $open}
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}
15
69
  {@const builder = $menu}
16
- {#if asChild}
70
+ <div {...builder} use:builder.action {...$$restProps} on:m-keydown={dispatch}>
17
71
  <slot {builder} />
18
- {:else if transition}
19
- <div {...builder} use:builder.action {...$$restProps} on:m-keydown transition:transition={transitionConfig}>
20
- <slot {builder} />
21
- </div>
22
- {:else}
23
- <div {...builder} use:builder.action {...$$restProps} on:m-keydown>
24
- <slot {builder} />
25
- </div>
26
- {/if}
72
+ </div>
27
73
  {/if}
@@ -1,9 +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
+ 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
  transition?: T | undefined;
6
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;
7
12
  asChild?: boolean | undefined;
8
13
  accesskey?: string | null | undefined;
9
14
  autofocus?: boolean | null | undefined;
@@ -214,18 +219,16 @@ declare class __sveltets_Render<T extends Transition> {
214
219
  'on:fullscreenchange'?: import("svelte/elements.js").EventHandler<Event, HTMLDivElement> | null | undefined;
215
220
  'on:fullscreenerror'?: import("svelte/elements.js").EventHandler<Event, HTMLDivElement> | null | undefined;
216
221
  };
217
- events(): {
218
- "m-keydown"?: import("@melt-ui/svelte/internal/types").MeltEventHandler<KeyboardEvent> | undefined;
219
- };
222
+ events(): ContentEvents;
220
223
  slots(): {
221
224
  default: {
222
225
  builder: any;
223
226
  };
224
227
  };
225
228
  }
226
- export type SelectContentProps<T extends Transition> = ReturnType<__sveltets_Render<T>['props']>;
227
- export type SelectContentEvents<T extends Transition> = ReturnType<__sveltets_Render<T>['events']>;
228
- export type SelectContentSlots<T extends Transition> = ReturnType<__sveltets_Render<T>['slots']>;
229
- export default class SelectContent<T extends Transition> extends SvelteComponent<SelectContentProps<T>, SelectContentEvents<T>, SelectContentSlots<T>> {
229
+ export type SelectContentProps<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['props']>;
230
+ export type SelectContentEvents<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['events']>;
231
+ export type SelectContentSlots<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['slots']>;
232
+ export default class SelectContent<T extends Transition, In extends Transition, Out extends Transition> extends SvelteComponent<SelectContentProps<T, In, Out>, SelectContentEvents<T, In, Out>, SelectContentSlots<T, In, Out>> {
230
233
  }
231
234
  export {};