bits-ui 0.0.33 → 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 (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 +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 +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
@@ -254,7 +254,7 @@ declare const __propDef: {
254
254
  builder: {
255
255
  type: string;
256
256
  name: string | undefined;
257
- value: unknown;
257
+ value: import("@melt-ui/svelte/index.js").SelectOption<unknown> | import("@melt-ui/svelte/index.js").SelectOption<unknown>[] | undefined;
258
258
  'aria-hidden': boolean;
259
259
  hidden: boolean;
260
260
  tabIndex: number;
@@ -1,10 +1,14 @@
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 = void 0;
5
6
  export let label = void 0;
6
7
  export let asChild = false;
7
- const option = ctx.setItem(value).elements.option;
8
+ const {
9
+ elements: { option }
10
+ } = ctx.setItem(value);
11
+ const dispatch = createDispatcher();
8
12
  </script>
9
13
 
10
14
  <!-- svelte-ignore a11y-no-static-element-interactions / applied by melt's builder-->
@@ -16,12 +20,12 @@ const option = ctx.setItem(value).elements.option;
16
20
  <div
17
21
  {...builder} use:builder.action
18
22
  {...$$restProps}
19
- on:m-click
20
- on:m-focusin
21
- on:m-focusout
22
- on:m-keydown
23
- on:m-pointerleave
24
- on:m-pointermove
23
+ on:m-click={dispatch}
24
+ on:m-focusin={dispatch}
25
+ on:m-focusout={dispatch}
26
+ on:m-keydown={dispatch}
27
+ on:m-pointerleave={dispatch}
28
+ on:m-pointermove={dispatch}
25
29
  >
26
30
  <slot {builder}>
27
31
  {label ? label : value}
@@ -1,4 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ import type { LabelEvents } from "../types.js";
2
3
  declare const __propDef: {
3
4
  props: {
4
5
  asChild?: boolean | undefined;
@@ -216,9 +217,7 @@ declare const __propDef: {
216
217
  builder: any;
217
218
  };
218
219
  };
219
- events: {
220
- "m-click"?: import("@melt-ui/svelte/internal/types").MeltEventHandler<MouseEvent> | undefined;
221
- };
220
+ events: LabelEvents;
222
221
  };
223
222
  export type SelectLabelProps = typeof __propDef.props;
224
223
  export type SelectLabelEvents = typeof __propDef.events;
@@ -1,16 +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
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-click on:m-keydown>
15
+ <button {...builder} use:builder.action {...$$restProps} on:m-click={dispatch} on:m-keydown={dispatch}>
14
16
  <slot {builder} />
15
17
  </button>
16
18
  {/if}
@@ -1,13 +1,15 @@
1
1
  <script>import { ctx } from "../ctx.js";
2
2
  export let placeholder = "";
3
3
  export let asChild = false;
4
- const valueLabel = ctx.get().states.valueLabel;
4
+ const {
5
+ states: { selectedLabel }
6
+ } = ctx.get();
5
7
  </script>
6
8
 
7
9
  {#if asChild}
8
- <slot valueLabel={$valueLabel} />
10
+ <slot label={$selectedLabel} />
9
11
  {:else}
10
12
  <span {...$$restProps}>
11
- {$valueLabel ? $valueLabel : placeholder}
13
+ {$selectedLabel ? $selectedLabel : placeholder}
12
14
  </span>
13
15
  {/if}
@@ -216,7 +216,7 @@ declare const __propDef: {
216
216
  };
217
217
  slots: {
218
218
  default: {
219
- valueLabel: string | null;
219
+ label: string;
220
220
  };
221
221
  };
222
222
  };
@@ -27,6 +27,7 @@ declare function set(props: CreateSelectProps): {
27
27
  subscribe(this: void, run: import("svelte/store").Subscriber<boolean>, invalidate?: import("svelte/store").Invalidator<boolean> | undefined): import("svelte/store").Unsubscriber;
28
28
  }, import("svelte/store").Writable<boolean>, import("svelte/store").Writable<boolean>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"keydown" | "click">, ([$open, $disabled, $required]: [boolean, boolean, boolean]) => {
29
29
  readonly role: "combobox";
30
+ readonly type: "button";
30
31
  readonly 'aria-autocomplete': "none";
31
32
  readonly 'aria-haspopup': "listbox";
32
33
  readonly 'aria-controls': string;
@@ -40,10 +41,10 @@ declare function set(props: CreateSelectProps): {
40
41
  readonly tabindex: 0;
41
42
  }, string>;
42
43
  option: import("@melt-ui/svelte/internal/helpers").ExplicitBuilderReturn<{
43
- update: (updater: import("svelte/store").Updater<any>, sideEffect?: ((newValue: any) => void) | undefined) => void;
44
- set: (this: void, value: any) => void;
45
- subscribe(this: void, run: import("svelte/store").Subscriber<any>, invalidate?: import("svelte/store").Invalidator<any> | undefined): import("svelte/store").Unsubscriber;
46
- }, (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"keydown" | "click" | "focusin" | "focusout" | "pointerleave" | "pointermove">, ($value: any) => (props: import("@melt-ui/svelte").SelectOptionProps<any>) => {
44
+ update: (updater: import("svelte/store").Updater<import("@melt-ui/svelte").SelectOption<unknown> | undefined>, sideEffect?: ((newValue: import("@melt-ui/svelte").SelectOption<unknown> | undefined) => void) | undefined) => void;
45
+ set: (this: void, value: import("@melt-ui/svelte").SelectOption<unknown> | undefined) => void;
46
+ subscribe(this: void, run: import("svelte/store").Subscriber<import("@melt-ui/svelte").SelectOption<unknown> | undefined>, invalidate?: import("svelte/store").Invalidator<import("@melt-ui/svelte").SelectOption<unknown> | undefined> | undefined): import("svelte/store").Unsubscriber;
47
+ }, (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"keydown" | "click" | "focusin" | "focusout" | "pointerleave" | "pointermove">, ($selected: import("@melt-ui/svelte").SelectOption<unknown> | undefined) => (props: import("@melt-ui/svelte").SelectOptionProps<unknown>) => {
47
48
  readonly role: "option";
48
49
  readonly 'aria-selected': boolean;
49
50
  readonly 'data-selected': "" | undefined;
@@ -53,13 +54,13 @@ declare function set(props: CreateSelectProps): {
53
54
  readonly tabindex: -1;
54
55
  }, string>;
55
56
  input: import("@melt-ui/svelte/internal/helpers").ExplicitBuilderReturn<[{
56
- update: (updater: import("svelte/store").Updater<any>, sideEffect?: ((newValue: any) => void) | undefined) => void;
57
- set: (this: void, value: any) => void;
58
- subscribe(this: void, run: import("svelte/store").Subscriber<any>, invalidate?: import("svelte/store").Invalidator<any> | undefined): import("svelte/store").Unsubscriber;
59
- }, import("svelte/store").Writable<boolean>, import("svelte/store").Writable<boolean>, import("svelte/store").Writable<string | undefined>], import("svelte/action").Action<any, any, Record<never, any>>, ([$value, $required, $disabled, $nameStore]: [any, boolean, boolean, string | undefined]) => {
57
+ update: (updater: import("svelte/store").Updater<import("@melt-ui/svelte").SelectOption<unknown> | undefined>, sideEffect?: ((newValue: import("@melt-ui/svelte").SelectOption<unknown> | undefined) => void) | undefined) => void;
58
+ set: (this: void, value: import("@melt-ui/svelte").SelectOption<unknown> | undefined) => void;
59
+ subscribe(this: void, run: import("svelte/store").Subscriber<import("@melt-ui/svelte").SelectOption<unknown> | undefined>, invalidate?: import("svelte/store").Invalidator<import("@melt-ui/svelte").SelectOption<unknown> | undefined> | undefined): import("svelte/store").Unsubscriber;
60
+ }, import("svelte/store").Writable<boolean>, import("svelte/store").Writable<boolean>, import("svelte/store").Writable<string | undefined>], import("svelte/action").Action<any, any, Record<never, any>>, ([$value, $required, $disabled, $nameStore]: [import("@melt-ui/svelte").SelectOption<unknown> | undefined, boolean, boolean, string | undefined]) => {
60
61
  type: string;
61
62
  name: string | undefined;
62
- value: any;
63
+ value: import("@melt-ui/svelte").SelectOption<unknown> | undefined;
63
64
  'aria-hidden': boolean;
64
65
  hidden: boolean;
65
66
  tabIndex: number;
@@ -95,12 +96,12 @@ declare function set(props: CreateSelectProps): {
95
96
  set: (this: void, value: boolean) => void;
96
97
  subscribe(this: void, run: import("svelte/store").Subscriber<boolean>, invalidate?: import("svelte/store").Invalidator<boolean> | undefined): import("svelte/store").Unsubscriber;
97
98
  };
98
- value: {
99
- update: (updater: import("svelte/store").Updater<any>, sideEffect?: ((newValue: any) => void) | undefined) => void;
100
- set: (this: void, value: any) => void;
101
- subscribe(this: void, run: import("svelte/store").Subscriber<any>, invalidate?: import("svelte/store").Invalidator<any> | undefined): import("svelte/store").Unsubscriber;
99
+ selected: {
100
+ update: (updater: import("svelte/store").Updater<import("@melt-ui/svelte").SelectOption<unknown> | undefined>, sideEffect?: ((newValue: import("@melt-ui/svelte").SelectOption<unknown> | undefined) => void) | undefined) => void;
101
+ set: (this: void, value: import("@melt-ui/svelte").SelectOption<unknown> | undefined) => void;
102
+ subscribe(this: void, run: import("svelte/store").Subscriber<import("@melt-ui/svelte").SelectOption<unknown> | undefined>, invalidate?: import("svelte/store").Invalidator<import("@melt-ui/svelte").SelectOption<unknown> | undefined> | undefined): import("svelte/store").Unsubscriber;
102
103
  };
103
- valueLabel: import("svelte/store").Readable<string | null>;
104
+ selectedLabel: import("svelte/store").Readable<string>;
104
105
  };
105
106
  helpers: {
106
107
  isSelected: import("svelte/store").Readable<(value: unknown) => boolean>;
@@ -110,7 +111,6 @@ declare function set(props: CreateSelectProps): {
110
111
  disabled: import("svelte/store").Writable<boolean>;
111
112
  forceVisible: import("svelte/store").Writable<boolean>;
112
113
  name: import("svelte/store").Writable<string | undefined>;
113
- defaultValue?: import("svelte/store").Writable<any> | undefined;
114
114
  required: import("svelte/store").Writable<boolean>;
115
115
  preventScroll: import("svelte/store").Writable<boolean>;
116
116
  portal: import("svelte/store").Writable<string | HTMLElement | null | undefined>;
@@ -17,9 +17,7 @@ function get() {
17
17
  return getContext(NAME);
18
18
  }
19
19
  function set(props) {
20
- const select = createSelect({
21
- ...removeUndefined(props)
22
- });
20
+ const select = createSelect(removeUndefined(props));
23
21
  setContext(NAME, select);
24
22
  return {
25
23
  ...select,
@@ -1,18 +1,14 @@
1
- import type { CreateSelectProps, SelectComponentEvents, SelectOptionProps } from "@melt-ui/svelte";
2
- import type { AsChild, Expand, HTMLDivAttributes, OmitOpen, OmitValue, OnChangeFn, Transition, TransitionParams } from "../../internal/index.js";
1
+ import type { CreateSelectProps, SelectOptionProps } from "@melt-ui/svelte";
2
+ import type { AsChild, Expand, HTMLDivAttributes, OmitOpen, OnChangeFn, Transition, TransitionProps } from "../../internal/index.js";
3
3
  import type { HTMLAttributes, HTMLButtonAttributes, HTMLInputAttributes } from "svelte/elements";
4
- import type { ButtonEventHandler, DivEventHandler } from "../../index.js";
5
- type Props = Expand<OmitOpen<OmitValue<Omit<CreateSelectProps, "defaultValueLabel" | "forceVisible">>> & {
6
- value?: CreateSelectProps["defaultValue"] & {};
7
- onValueChange?: OnChangeFn<CreateSelectProps["defaultValue"]>;
4
+ import type { CustomEventHandler } from "../../index.js";
5
+ type Props = Expand<OmitOpen<Omit<CreateSelectProps, "selected" | "defaultSelected" | "onSelectedChange">> & {
6
+ selected?: CreateSelectProps["defaultSelected"] & {};
7
+ onSelectedChange?: OnChangeFn<CreateSelectProps["defaultSelected"]>;
8
8
  open?: CreateSelectProps["defaultOpen"] & {};
9
9
  onOpenChange?: OnChangeFn<CreateSelectProps["defaultOpen"]>;
10
- label?: CreateSelectProps["defaultValueLabel"] & {};
11
10
  }>;
12
- type ContentProps<T extends Transition = Transition> = Expand<{
13
- transition?: T;
14
- transitionConfig?: TransitionParams<T>;
15
- } & AsChild> & HTMLDivAttributes;
11
+ type ContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
16
12
  type GroupProps = AsChild & HTMLDivAttributes;
17
13
  type InputProps = AsChild & HTMLInputAttributes;
18
14
  type LabelProps = AsChild & HTMLDivAttributes;
@@ -25,14 +21,22 @@ type ValueProps = Expand<{
25
21
  type ArrowProps = Expand<{
26
22
  size?: number;
27
23
  } & AsChild> & HTMLDivAttributes;
28
- type ItemEvents = {
29
- "m-click": DivEventHandler<MouseEvent>;
30
- "m-keydown": DivEventHandler<KeyboardEvent>;
24
+ type ItemEvents<T extends Element = HTMLDivElement> = {
25
+ click: CustomEventHandler<MouseEvent, T>;
26
+ keydown: CustomEventHandler<KeyboardEvent, T>;
27
+ focusin: CustomEventHandler<FocusEvent, T>;
28
+ focusout: CustomEventHandler<FocusEvent, T>;
29
+ pointerleave: CustomEventHandler<MouseEvent, T>;
30
+ pointermove: CustomEventHandler<MouseEvent, T>;
31
+ };
32
+ type TriggerEvents<T extends Element = HTMLButtonElement> = {
33
+ click: CustomEventHandler<MouseEvent, T>;
34
+ keydown: CustomEventHandler<KeyboardEvent, T>;
35
+ };
36
+ type LabelEvents<T extends Element = HTMLSpanElement> = {
37
+ click: CustomEventHandler<MouseEvent, T>;
31
38
  };
32
- type TriggerEvents = {
33
- "m-click": ButtonEventHandler<MouseEvent>;
34
- "m-keydown": ButtonEventHandler<KeyboardEvent>;
39
+ type ContentEvents<T extends Element = HTMLDivElement> = {
40
+ keydown: CustomEventHandler<KeyboardEvent, T>;
35
41
  };
36
- type LabelEvents = SelectComponentEvents["label"];
37
- type ContentEvents = SelectComponentEvents["menu"];
38
42
  export type { Props, ArrowProps, ContentProps, GroupProps, InputProps, LabelProps, ItemProps, SeparatorProps, TriggerProps, ValueProps, Props as SelectProps, ArrowProps as SelectArrowProps, ContentProps as SelectContentProps, GroupProps as SelectGroupProps, InputProps as SelectInputProps, LabelProps as SelectLabelProps, ItemProps as SelectItemProps, SeparatorProps as SelectSeparatorProps, TriggerProps as SelectTriggerProps, ValueProps as SelectValueProps, ItemEvents, ContentEvents, TriggerEvents, LabelEvents, ItemEvents as SelectItemEvents, ContentEvents as SelectContentEvents, TriggerEvents as SelectTriggerEvents, LabelEvents as SelectLabelEvents };
@@ -20,8 +20,10 @@ const {
20
20
  orientation,
21
21
  defaultValue: value,
22
22
  onValueChange: ({ next }) => {
23
- value = next;
24
- onValueChange?.(next);
23
+ if (value !== next) {
24
+ onValueChange?.(next);
25
+ value = next;
26
+ }
25
27
  return next;
26
28
  }
27
29
  });
@@ -1,7 +1,9 @@
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
5
  const thumb = ctx.get().elements.thumb;
6
+ const dispatch = createDispatcher();
5
7
  $:
6
8
  __MELTUI_BUILDER_0__ = $thumb();
7
9
  </script>
@@ -10,5 +12,5 @@ $:
10
12
  {#if asChild}
11
13
  <slot builder={$thumb()} />
12
14
  {:else}
13
- <span {...__MELTUI_BUILDER_0__} use:__MELTUI_BUILDER_0__.action {...$$restProps} on:m-keydown />
15
+ <span {...__MELTUI_BUILDER_0__} use:__MELTUI_BUILDER_0__.action {...$$restProps} on:m-keydown={dispatch} />
14
16
  {/if}
@@ -1,4 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ import type { ThumbEvents } from "../types.js";
2
3
  declare const __propDef: {
3
4
  props: {
4
5
  asChild?: boolean | undefined;
@@ -215,7 +216,6 @@ declare const __propDef: {
215
216
  default: {
216
217
  builder: (() => {
217
218
  readonly role: "slider";
218
- readonly 'aria-label': "Volume";
219
219
  readonly 'aria-valuemin': number;
220
220
  readonly 'aria-valuemax': number;
221
221
  readonly 'aria-valuenow': number;
@@ -229,9 +229,7 @@ declare const __propDef: {
229
229
  };
230
230
  };
231
231
  };
232
- events: {
233
- "m-keydown"?: import("@melt-ui/svelte/internal/types").MeltEventHandler<KeyboardEvent> | undefined;
234
- };
232
+ events: ThumbEvents;
235
233
  };
236
234
  export type SliderThumbProps = typeof __propDef.props;
237
235
  export type SliderThumbEvents = typeof __propDef.events;
@@ -19,7 +19,6 @@ declare function set(props: CreateSliderProps): {
19
19
  subscribe(this: void, run: import("svelte/store").Subscriber<number[]>, invalidate?: import("svelte/store").Invalidator<number[]> | undefined): import("svelte/store").Unsubscriber;
20
20
  }, import("svelte/store").Readable<(val: number) => number>, import("svelte/store").Writable<number>, import("svelte/store").Writable<number>, import("svelte/store").Writable<boolean>, import("svelte/store").Writable<"horizontal" | "vertical">], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"keydown">, ([$value, $position, $min, $max, $disabled, $orientation]: [number[], (val: number) => number, number, number, boolean, "horizontal" | "vertical"]) => () => {
21
21
  readonly role: "slider";
22
- readonly 'aria-label': "Volume";
23
22
  readonly 'aria-valuemin': number;
24
23
  readonly 'aria-valuemax': number;
25
24
  readonly 'aria-valuenow': number;
@@ -1,5 +1,6 @@
1
- import type { CreateSliderProps, SliderComponentEvents } from "@melt-ui/svelte";
1
+ import type { CreateSliderProps } from "@melt-ui/svelte";
2
2
  import type { Expand, OmitValue, HTMLSpanAttributes, OnChangeFn, AsChild } from "../../internal/index.js";
3
+ import type { CustomEventHandler } from "../../index.js";
3
4
  import type { HTMLInputAttributes } from "svelte/elements";
4
5
  type Props = Expand<OmitValue<CreateSliderProps> & {
5
6
  value?: CreateSliderProps["defaultValue"] & {};
@@ -7,6 +8,8 @@ type Props = Expand<OmitValue<CreateSliderProps> & {
7
8
  } & AsChild> & HTMLSpanAttributes;
8
9
  type RangeProps = AsChild & HTMLSpanAttributes;
9
10
  type ThumbProps = AsChild & HTMLSpanAttributes;
10
- type ThumbEvents = SliderComponentEvents["thumb"];
11
+ type ThumbEvents<T extends Element = HTMLSpanElement> = {
12
+ keydown: CustomEventHandler<KeyboardEvent, T>;
13
+ };
11
14
  type InputProps = Omit<HTMLInputAttributes, "value">;
12
15
  export type { Props, RangeProps, ThumbProps, InputProps, Props as SliderProps, RangeProps as SliderRangeProps, ThumbProps as SliderThumbProps, InputProps as SliderInputProps, ThumbEvents, ThumbEvents as SliderThumbEvents };
@@ -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;
@@ -16,11 +17,14 @@ const {
16
17
  value,
17
18
  defaultChecked: checked,
18
19
  onCheckedChange: ({ next }) => {
19
- onCheckedChange?.(next);
20
- checked = next;
20
+ if (checked !== next) {
21
+ onCheckedChange?.(next);
22
+ checked = next;
23
+ }
21
24
  return next;
22
25
  }
23
26
  });
27
+ const dispatch = createDispatcher();
24
28
  $:
25
29
  checked !== void 0 && localChecked.set(checked);
26
30
  $:
@@ -35,7 +39,7 @@ $:
35
39
  <slot builder={$root} />
36
40
  {:else}
37
41
  {@const builder = $root}
38
- <button {...builder} use:builder.action {...$$restProps} on:m-click on:m-keydown>
42
+ <button {...builder} use:builder.action {...$$restProps} on:m-click={dispatch} on:m-keydown={dispatch}>
39
43
  <slot {builder} />
40
44
  </button>
41
45
  {/if}
@@ -1,15 +1,15 @@
1
1
  import type { CreateSwitchProps } from "@melt-ui/svelte";
2
2
  import type { AsChild, Expand, HTMLSpanAttributes, OmitChecked, OnChangeFn } from "../../internal/index.js";
3
3
  import type { HTMLButtonAttributes, HTMLInputAttributes } from "svelte/elements";
4
- import type { ButtonEventHandler } from "../../index.js";
4
+ import type { CustomEventHandler } from "../../index.js";
5
5
  type Props = Expand<OmitChecked<CreateSwitchProps> & {
6
6
  checked?: CreateSwitchProps["defaultChecked"] & {};
7
7
  onCheckedChange?: OnChangeFn<CreateSwitchProps["defaultChecked"]>;
8
8
  } & AsChild> & HTMLButtonAttributes;
9
9
  type ThumbProps = AsChild & HTMLSpanAttributes;
10
10
  type InputProps = HTMLInputAttributes;
11
- type Events = {
12
- "m-click": ButtonEventHandler<MouseEvent>;
13
- "m-keydown": ButtonEventHandler<KeyboardEvent>;
11
+ type Events<T extends Element = HTMLButtonElement> = {
12
+ click: CustomEventHandler<MouseEvent, T>;
13
+ keydown: CustomEventHandler<KeyboardEvent, T>;
14
14
  };
15
15
  export type { Props, ThumbProps, InputProps, Props as SwitchProps, ThumbProps as SwitchThumbProps, InputProps as SwitchInputProps, Events, Events as SwitchEvents };
@@ -18,8 +18,10 @@ const {
18
18
  autoSet,
19
19
  defaultValue: value,
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,16 +1,24 @@
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 = void 0;
5
6
  export let asChild = false;
6
7
  const trigger = ctx.get().elements.trigger;
8
+ const dispatch = createDispatcher();
7
9
  </script>
8
10
 
9
11
  {#if asChild}
10
12
  <slot builder={$trigger({ value, disabled })} />
11
13
  {:else}
12
14
  {@const builder = $trigger({ value, disabled })}
13
- <button {...builder} use:builder.action {...$$restProps} on:m-click on:m-focus on:m-keydown>
15
+ <button
16
+ {...builder} use:builder.action
17
+ {...$$restProps}
18
+ on:m-click={dispatch}
19
+ on:m-focus={dispatch}
20
+ on:m-keydown={dispatch}
21
+ >
14
22
  <slot {builder} />
15
23
  </button>
16
24
  {/if}
@@ -1,6 +1,6 @@
1
1
  import type { CreateTabsProps, TabsTriggerProps } from "@melt-ui/svelte";
2
2
  import type { AsChild, Expand, HTMLDivAttributes, ObjectVariation, OmitValue, OnChangeFn } from "../../internal/index.js";
3
- import type { ButtonEventHandler } from "../../index.js";
3
+ import type { CustomEventHandler } from "../../index.js";
4
4
  type Props = Expand<OmitValue<CreateTabsProps> & {
5
5
  orientation?: CreateTabsProps["orientation"] & {};
6
6
  value?: CreateTabsProps["defaultValue"] & {};
@@ -11,8 +11,9 @@ type ContentProps = Expand<{
11
11
  } & AsChild> & HTMLDivAttributes;
12
12
  type TriggerProps = Expand<ObjectVariation<TabsTriggerProps> & AsChild> & HTMLDivAttributes;
13
13
  type ListProps = AsChild & HTMLDivAttributes;
14
- type TriggerEvents = {
15
- "m-click": ButtonEventHandler<MouseEvent>;
16
- "m-keydown": ButtonEventHandler<KeyboardEvent>;
14
+ type TriggerEvents<T extends Element = HTMLButtonElement> = {
15
+ click: CustomEventHandler<MouseEvent, T>;
16
+ keydown: CustomEventHandler<KeyboardEvent, T>;
17
+ focus: CustomEventHandler<FocusEvent, T>;
17
18
  };
18
19
  export type { Props, ContentProps, TriggerProps, ListProps, Props as TabsProps, ContentProps as TabsContentProps, TriggerProps as TabsTriggerProps, ListProps as TabsListProps, TriggerEvents, TriggerEvents as TabsTriggerEvents };
@@ -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 disabled = void 0;
4
5
  export let pressed = void 0;
5
6
  export let onPressedChange = void 0;
@@ -12,11 +13,14 @@ const {
12
13
  disabled,
13
14
  defaultPressed: pressed,
14
15
  onPressedChange: ({ next }) => {
15
- onPressedChange?.(next);
16
- pressed = next;
16
+ if (pressed !== next) {
17
+ onPressedChange?.(next);
18
+ pressed = next;
19
+ }
17
20
  return next;
18
21
  }
19
22
  });
23
+ const dispatch = createDispatcher();
20
24
  $:
21
25
  pressed !== void 0 && localPressed.set(pressed);
22
26
  $:
@@ -27,7 +31,7 @@ $:
27
31
  <slot builder={$root} />
28
32
  {:else}
29
33
  {@const builder = $root}
30
- <button {...builder} use:builder.action {...$$restProps} on:m-click on:m-keydown>
34
+ <button {...builder} use:builder.action {...$$restProps} on:m-click={dispatch} on:m-keydown={dispatch}>
31
35
  <slot {builder} />
32
36
  </button>
33
37
  {/if}
@@ -1,14 +1,14 @@
1
1
  import type { CreateToggleProps } from "@melt-ui/svelte";
2
2
  import type { AsChild, Expand, OmitPressed, OnChangeFn } from "../../internal/index.js";
3
3
  import type { HTMLButtonAttributes, HTMLInputAttributes } from "svelte/elements";
4
- import type { ButtonEventHandler } from "../../index.js";
4
+ import type { CustomEventHandler } from "../../index.js";
5
5
  type Props = Expand<OmitPressed<CreateToggleProps> & {
6
6
  pressed?: CreateToggleProps["defaultPressed"];
7
7
  onPressedChange?: OnChangeFn<CreateToggleProps["defaultPressed"]>;
8
8
  } & AsChild> & HTMLButtonAttributes;
9
- type Events = {
10
- "m-click": ButtonEventHandler<MouseEvent>;
11
- "m-keydown": ButtonEventHandler<KeyboardEvent>;
9
+ type Events<T extends Element = HTMLButtonElement> = {
10
+ click: CustomEventHandler<MouseEvent, T>;
11
+ keydown: CustomEventHandler<KeyboardEvent, T>;
12
12
  };
13
13
  type InputProps = Omit<HTMLInputAttributes, "value">;
14
14
  export type { Props, InputProps, Props as ToggleProps, InputProps as ToggleInputProps, Events, Events as ToggleEvents };
@@ -8,6 +8,7 @@ export let openDelay = void 0;
8
8
  export let closeDelay = void 0;
9
9
  export let open = void 0;
10
10
  export let onOpenChange = void 0;
11
+ export let forceVisible = true;
11
12
  const {
12
13
  states: { open: localOpen },
13
14
  updateOption
@@ -19,10 +20,13 @@ const {
19
20
  closeOnPointerDown,
20
21
  openDelay,
21
22
  closeDelay,
23
+ forceVisible,
22
24
  defaultOpen: open,
23
25
  onOpenChange: ({ next }) => {
24
- onOpenChange?.(next);
25
- open = next;
26
+ if (open !== next) {
27
+ onOpenChange?.(next);
28
+ open = next;
29
+ }
26
30
  return next;
27
31
  }
28
32
  });
@@ -42,6 +46,8 @@ $:
42
46
  updateOption("openDelay", openDelay);
43
47
  $:
44
48
  updateOption("closeDelay", closeDelay);
49
+ $:
50
+ updateOption("forceVisible", forceVisible);
45
51
  </script>
46
52
 
47
53
  <slot />
@@ -1,6 +1,7 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
+ forceVisible?: boolean | undefined;
4
5
  closeOnEscape?: boolean | undefined;
5
6
  portal?: string | HTMLElement | null | undefined;
6
7
  positioning?: import("@melt-ui/svelte/internal/actions").FloatingConfig | undefined;
@@ -1,32 +1,72 @@
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;
5
- export let sideOffset = 4;
6
+ export let inTransition = void 0;
7
+ export let inTransitionConfig = void 0;
8
+ export let outTransition = void 0;
9
+ export let outTransitionConfig = void 0;
6
10
  export let asChild = false;
11
+ export let sideOffset = 4;
7
12
  const {
8
13
  elements: { content },
9
14
  states: { open }
10
15
  } = ctx.get(sideOffset);
16
+ const dispatch = createDispatcher();
11
17
  </script>
12
18
 
13
- {#if $open}
19
+ {#if asChild && $open}
20
+ {@const builder = $content}
21
+ <slot {builder} />
22
+ {:else if transition && $open}
23
+ {@const builder = $content}
24
+ <div
25
+ {...builder} use:builder.action
26
+ transition:transition={transitionConfig}
27
+ {...$$restProps}
28
+ on:m-pointerdown={dispatch}
29
+ on:m-pointerenter={dispatch}
30
+ >
31
+ <slot {builder} />
32
+ </div>
33
+ {:else if inTransition && outTransition && $open}
34
+ {@const builder = $content}
35
+ <div
36
+ {...builder} use:builder.action
37
+ in:inTransition={inTransitionConfig}
38
+ out:outTransition={outTransitionConfig}
39
+ {...$$restProps}
40
+ on:m-pointerdown={dispatch}
41
+ on:m-pointerenter={dispatch}
42
+ >
43
+ <slot {builder} />
44
+ </div>
45
+ {:else if inTransition && $open}
46
+ {@const builder = $content}
47
+ <div
48
+ {...builder} use:builder.action
49
+ in:inTransition={inTransitionConfig}
50
+ {...$$restProps}
51
+ on:m-pointerdown={dispatch}
52
+ on:m-pointerenter={dispatch}
53
+ >
54
+ <slot {builder} />
55
+ </div>
56
+ {:else if outTransition && $open}
57
+ {@const builder = $content}
58
+ <div
59
+ {...builder} use:builder.action
60
+ out:outTransition={outTransitionConfig}
61
+ {...$$restProps}
62
+ on:m-pointerdown={dispatch}
63
+ on:m-pointerenter={dispatch}
64
+ >
65
+ <slot {builder} />
66
+ </div>
67
+ {:else if $open}
14
68
  {@const builder = $content}
15
- {#if asChild}
69
+ <div {...builder} use:builder.action {...$$restProps} on:m-pointerdown={dispatch} on:m-pointerenter={dispatch}>
16
70
  <slot {builder} />
17
- {:else if transition}
18
- <div
19
- {...builder} use:builder.action
20
- transition:transition={transitionConfig}
21
- {...$$restProps}
22
- on:m-pointerdown
23
- on:m-pointerenter
24
- >
25
- <slot {builder} />
26
- </div>
27
- {:else}
28
- <div {...builder} use:builder.action {...$$restProps} on:m-pointerdown on:m-pointerenter>
29
- <slot {builder} />
30
- </div>
31
- {/if}
71
+ </div>
32
72
  {/if}