bits-ui 0.11.8 → 0.12.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 (213) hide show
  1. package/dist/bits/accordion/_types.d.ts +6 -6
  2. package/dist/bits/accordion/components/accordion-content.svelte +11 -2
  3. package/dist/bits/accordion/components/accordion-header.svelte +2 -1
  4. package/dist/bits/accordion/components/accordion-item.svelte +2 -1
  5. package/dist/bits/accordion/components/accordion-trigger.svelte +2 -0
  6. package/dist/bits/accordion/components/accordion.svelte +2 -1
  7. package/dist/bits/alert-dialog/_types.d.ts +6 -6
  8. package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +2 -0
  9. package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +2 -0
  10. package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +11 -2
  11. package/dist/bits/alert-dialog/components/alert-dialog-description.svelte +2 -1
  12. package/dist/bits/alert-dialog/components/alert-dialog-overlay.svelte +6 -1
  13. package/dist/bits/alert-dialog/components/alert-dialog-portal.svelte +2 -1
  14. package/dist/bits/alert-dialog/components/alert-dialog-title.svelte +7 -1
  15. package/dist/bits/alert-dialog/components/alert-dialog-trigger.svelte +2 -0
  16. package/dist/bits/aspect-ratio/_types.d.ts +2 -1
  17. package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +2 -0
  18. package/dist/bits/avatar/_types.d.ts +4 -4
  19. package/dist/bits/avatar/components/avatar-fallback.svelte +2 -1
  20. package/dist/bits/avatar/components/avatar-image.svelte +2 -1
  21. package/dist/bits/avatar/components/avatar.svelte +2 -1
  22. package/dist/bits/button/components/button.svelte +2 -0
  23. package/dist/bits/button/types.d.ts +3 -2
  24. package/dist/bits/calendar/_types.d.ts +14 -14
  25. package/dist/bits/calendar/components/calendar-cell.svelte +2 -1
  26. package/dist/bits/calendar/components/calendar-day.svelte +2 -1
  27. package/dist/bits/calendar/components/calendar-grid-body.svelte +2 -1
  28. package/dist/bits/calendar/components/calendar-grid-head.svelte +2 -1
  29. package/dist/bits/calendar/components/calendar-grid-row.svelte +2 -1
  30. package/dist/bits/calendar/components/calendar-grid.svelte +2 -1
  31. package/dist/bits/calendar/components/calendar-head-cell.svelte +2 -1
  32. package/dist/bits/calendar/components/calendar-header.svelte +2 -1
  33. package/dist/bits/calendar/components/calendar-heading.svelte +2 -1
  34. package/dist/bits/calendar/components/calendar-next-button.svelte +2 -0
  35. package/dist/bits/calendar/components/calendar-prev-button.svelte +2 -0
  36. package/dist/bits/calendar/components/calendar.svelte +1 -1
  37. package/dist/bits/calendar/types.d.ts +2 -2
  38. package/dist/bits/checkbox/_types.d.ts +3 -3
  39. package/dist/bits/checkbox/components/checkbox-indicator.svelte +2 -1
  40. package/dist/bits/checkbox/components/checkbox-input.svelte +7 -1
  41. package/dist/bits/checkbox/components/checkbox-input.svelte.d.ts +2 -3
  42. package/dist/bits/checkbox/components/checkbox.svelte +2 -0
  43. package/dist/bits/checkbox/types.d.ts +2 -2
  44. package/dist/bits/collapsible/_types.d.ts +4 -4
  45. package/dist/bits/collapsible/components/collapsible-content.svelte +11 -2
  46. package/dist/bits/collapsible/components/collapsible-trigger.svelte +2 -0
  47. package/dist/bits/collapsible/components/collapsible.svelte +2 -1
  48. package/dist/bits/context-menu/_types.d.ts +2 -2
  49. package/dist/bits/context-menu/components/context-menu-content.svelte +11 -1
  50. package/dist/bits/context-menu/components/context-menu-trigger.svelte +2 -0
  51. package/dist/bits/date-field/_types.d.ts +5 -5
  52. package/dist/bits/date-field/components/date-field-input.svelte +2 -1
  53. package/dist/bits/date-field/components/date-field-label.svelte +2 -1
  54. package/dist/bits/date-field/components/date-field-segment.svelte +2 -0
  55. package/dist/bits/date-picker/_types.d.ts +7 -7
  56. package/dist/bits/date-picker/components/date-picker-arrow.svelte +2 -1
  57. package/dist/bits/date-picker/components/date-picker-calendar.svelte +7 -1
  58. package/dist/bits/date-picker/components/date-picker-cell.svelte +2 -1
  59. package/dist/bits/date-picker/components/date-picker-close.svelte +2 -0
  60. package/dist/bits/date-picker/components/date-picker-content.svelte +11 -2
  61. package/dist/bits/date-picker/components/date-picker-day.svelte +2 -1
  62. package/dist/bits/date-picker/components/date-picker-field.svelte.d.ts +0 -1
  63. package/dist/bits/date-picker/components/date-picker-grid.svelte +2 -1
  64. package/dist/bits/date-picker/components/date-picker-heading.svelte +2 -1
  65. package/dist/bits/date-picker/components/date-picker-input.svelte +2 -1
  66. package/dist/bits/date-picker/components/date-picker-label.svelte +2 -1
  67. package/dist/bits/date-picker/components/date-picker-next-button.svelte +2 -0
  68. package/dist/bits/date-picker/components/date-picker-prev-button.svelte +2 -0
  69. package/dist/bits/date-picker/components/date-picker-segment.svelte +2 -0
  70. package/dist/bits/date-picker/components/date-picker-trigger.svelte +2 -0
  71. package/dist/bits/date-picker/components/date-picker.svelte.d.ts +0 -1
  72. package/dist/bits/date-picker/types.d.ts +1 -1
  73. package/dist/bits/date-range-field/_types.d.ts +4 -4
  74. package/dist/bits/date-range-field/components/date-range-field-input.svelte +2 -1
  75. package/dist/bits/date-range-field/components/date-range-field-label.svelte +2 -1
  76. package/dist/bits/date-range-field/components/date-range-field-segment.svelte +2 -0
  77. package/dist/bits/date-range-picker/_types.d.ts +7 -7
  78. package/dist/bits/date-range-picker/components/date-range-picker-arrow.svelte +2 -1
  79. package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +2 -1
  80. package/dist/bits/date-range-picker/components/date-range-picker-cell.svelte +2 -1
  81. package/dist/bits/date-range-picker/components/date-range-picker-close.svelte +2 -0
  82. package/dist/bits/date-range-picker/components/date-range-picker-content.svelte +11 -2
  83. package/dist/bits/date-range-picker/components/date-range-picker-day.svelte +2 -1
  84. package/dist/bits/date-range-picker/components/date-range-picker-field.svelte.d.ts +0 -1
  85. package/dist/bits/date-range-picker/components/date-range-picker-grid.svelte +2 -1
  86. package/dist/bits/date-range-picker/components/date-range-picker-heading.svelte +2 -1
  87. package/dist/bits/date-range-picker/components/date-range-picker-input.svelte +2 -1
  88. package/dist/bits/date-range-picker/components/date-range-picker-label.svelte +2 -1
  89. package/dist/bits/date-range-picker/components/date-range-picker-next-button.svelte +2 -1
  90. package/dist/bits/date-range-picker/components/date-range-picker-prev-button.svelte +2 -1
  91. package/dist/bits/date-range-picker/components/date-range-picker-segment.svelte +2 -1
  92. package/dist/bits/date-range-picker/components/date-range-picker-trigger.svelte +2 -0
  93. package/dist/bits/date-range-picker/components/date-range-picker.svelte.d.ts +0 -1
  94. package/dist/bits/date-range-picker/types.d.ts +1 -1
  95. package/dist/bits/dialog/_types.d.ts +7 -7
  96. package/dist/bits/dialog/components/dialog-close.svelte +2 -0
  97. package/dist/bits/dialog/components/dialog-content.svelte +11 -2
  98. package/dist/bits/dialog/components/dialog-description.svelte +2 -1
  99. package/dist/bits/dialog/components/dialog-overlay.svelte +6 -1
  100. package/dist/bits/dialog/components/dialog-portal.svelte +2 -1
  101. package/dist/bits/dialog/components/dialog-title.svelte +7 -1
  102. package/dist/bits/dialog/components/dialog-trigger.svelte +2 -0
  103. package/dist/bits/floating/_types.d.ts +3 -3
  104. package/dist/bits/label/_types.d.ts +2 -2
  105. package/dist/bits/label/components/label.svelte +7 -1
  106. package/dist/bits/label/types.d.ts +1 -1
  107. package/dist/bits/link-preview/_types.d.ts +2 -2
  108. package/dist/bits/link-preview/components/link-preview-arrow.svelte +2 -1
  109. package/dist/bits/link-preview/components/link-preview-content.svelte +6 -0
  110. package/dist/bits/link-preview/components/link-preview-trigger.svelte +2 -0
  111. package/dist/bits/menu/_types.d.ts +12 -12
  112. package/dist/bits/menu/components/menu-arrow.svelte +2 -1
  113. package/dist/bits/menu/components/menu-checkbox-indicator.svelte +2 -1
  114. package/dist/bits/menu/components/menu-checkbox-item.svelte +2 -0
  115. package/dist/bits/menu/components/menu-content.svelte +11 -1
  116. package/dist/bits/menu/components/menu-group.svelte +2 -1
  117. package/dist/bits/menu/components/menu-item.svelte +2 -0
  118. package/dist/bits/menu/components/menu-label.svelte +2 -1
  119. package/dist/bits/menu/components/menu-radio-group.svelte +2 -1
  120. package/dist/bits/menu/components/menu-radio-indicator.svelte +2 -1
  121. package/dist/bits/menu/components/menu-radio-item.svelte +2 -0
  122. package/dist/bits/menu/components/menu-separator.svelte +2 -1
  123. package/dist/bits/menu/components/menu-sub-content.svelte +6 -0
  124. package/dist/bits/menu/components/menu-sub-trigger.svelte +2 -0
  125. package/dist/bits/menu/components/menu-sub-trigger.svelte.d.ts +1 -0
  126. package/dist/bits/menu/components/menu-trigger.svelte +2 -0
  127. package/dist/bits/menu/types.d.ts +6 -6
  128. package/dist/bits/menubar/_types.d.ts +2 -2
  129. package/dist/bits/menubar/components/menubar-trigger.svelte +2 -0
  130. package/dist/bits/menubar/components/menubar.svelte +2 -1
  131. package/dist/bits/pagination/_types.d.ts +5 -5
  132. package/dist/bits/pagination/components/pagination-next-button.svelte +2 -0
  133. package/dist/bits/pagination/components/pagination-page.svelte +2 -0
  134. package/dist/bits/pagination/components/pagination-prev-button.svelte +2 -0
  135. package/dist/bits/pagination/components/pagination.svelte +2 -1
  136. package/dist/bits/pin-input/_types.d.ts +4 -4
  137. package/dist/bits/pin-input/components/pin-input-hidden-input.svelte +2 -1
  138. package/dist/bits/pin-input/components/pin-input-input.svelte +2 -0
  139. package/dist/bits/pin-input/components/pin-input.svelte +2 -1
  140. package/dist/bits/pin-input/types.d.ts +1 -1
  141. package/dist/bits/popover/_types.d.ts +3 -3
  142. package/dist/bits/popover/components/popover-arrow.svelte +2 -1
  143. package/dist/bits/popover/components/popover-close.svelte +2 -0
  144. package/dist/bits/popover/components/popover-content.svelte +11 -2
  145. package/dist/bits/popover/components/popover-trigger.svelte +2 -0
  146. package/dist/bits/popover/types.d.ts +1 -1
  147. package/dist/bits/progress/_types.d.ts +2 -2
  148. package/dist/bits/progress/components/progress.svelte +2 -1
  149. package/dist/bits/radio-group/_types.d.ts +5 -5
  150. package/dist/bits/radio-group/components/radio-group-input.svelte +2 -1
  151. package/dist/bits/radio-group/components/radio-group-item-indicator.svelte +2 -1
  152. package/dist/bits/radio-group/components/radio-group-item.svelte +2 -0
  153. package/dist/bits/radio-group/components/radio-group.svelte +2 -1
  154. package/dist/bits/range-calendar/_types.d.ts +14 -14
  155. package/dist/bits/range-calendar/components/range-calendar-cell.svelte +2 -1
  156. package/dist/bits/range-calendar/components/range-calendar-day.svelte +2 -0
  157. package/dist/bits/range-calendar/components/range-calendar-grid-body.svelte +2 -1
  158. package/dist/bits/range-calendar/components/range-calendar-grid-head.svelte +2 -1
  159. package/dist/bits/range-calendar/components/range-calendar-grid-row.svelte +2 -1
  160. package/dist/bits/range-calendar/components/range-calendar-grid.svelte +2 -1
  161. package/dist/bits/range-calendar/components/range-calendar-head-cell.svelte +2 -1
  162. package/dist/bits/range-calendar/components/range-calendar-header.svelte +2 -1
  163. package/dist/bits/range-calendar/components/range-calendar-heading.svelte +2 -1
  164. package/dist/bits/range-calendar/components/range-calendar-next-button.svelte +2 -0
  165. package/dist/bits/range-calendar/components/range-calendar-prev-button.svelte +2 -0
  166. package/dist/bits/range-calendar/components/range-calendar.svelte +1 -1
  167. package/dist/bits/select/_types.d.ts +9 -9
  168. package/dist/bits/select/components/select-arrow.svelte +2 -1
  169. package/dist/bits/select/components/select-content.svelte +6 -0
  170. package/dist/bits/select/components/select-group.svelte +2 -1
  171. package/dist/bits/select/components/select-input.svelte +2 -1
  172. package/dist/bits/select/components/select-item-indicator.svelte +2 -1
  173. package/dist/bits/select/components/select-item.svelte +2 -0
  174. package/dist/bits/select/components/select-label.svelte +2 -1
  175. package/dist/bits/select/components/select-trigger.svelte +2 -0
  176. package/dist/bits/select/components/select-value.svelte +2 -1
  177. package/dist/bits/separator/_types.d.ts +2 -2
  178. package/dist/bits/separator/components/separator.svelte +2 -1
  179. package/dist/bits/slider/_types.d.ts +5 -5
  180. package/dist/bits/slider/components/slider-input.svelte +2 -1
  181. package/dist/bits/slider/components/slider-range.svelte +2 -1
  182. package/dist/bits/slider/components/slider-thumb.svelte +7 -1
  183. package/dist/bits/slider/components/slider-tick.svelte +2 -1
  184. package/dist/bits/slider/components/slider.svelte +2 -1
  185. package/dist/bits/slider/types.d.ts +2 -2
  186. package/dist/bits/switch/_types.d.ts +3 -3
  187. package/dist/bits/switch/components/switch-input.svelte +2 -0
  188. package/dist/bits/switch/components/switch-input.svelte.d.ts +2 -1
  189. package/dist/bits/switch/components/switch-thumb.svelte +2 -1
  190. package/dist/bits/switch/components/switch.svelte +2 -0
  191. package/dist/bits/switch/types.d.ts +2 -2
  192. package/dist/bits/tabs/_types.d.ts +5 -5
  193. package/dist/bits/tabs/components/tabs-content.svelte +2 -1
  194. package/dist/bits/tabs/components/tabs-list.svelte +2 -1
  195. package/dist/bits/tabs/components/tabs-trigger.svelte +2 -0
  196. package/dist/bits/tabs/components/tabs.svelte +2 -1
  197. package/dist/bits/toggle/_types.d.ts +2 -2
  198. package/dist/bits/toggle/components/toggle.svelte +2 -0
  199. package/dist/bits/toggle-group/_types.d.ts +3 -3
  200. package/dist/bits/toggle-group/components/toggle-group-item.svelte +2 -0
  201. package/dist/bits/toggle-group/components/toggle-group.svelte +2 -1
  202. package/dist/bits/toolbar/_types.d.ts +6 -6
  203. package/dist/bits/toolbar/components/toolbar-button.svelte +2 -0
  204. package/dist/bits/toolbar/components/toolbar-group-item.svelte +2 -0
  205. package/dist/bits/toolbar/components/toolbar-group.svelte +2 -1
  206. package/dist/bits/toolbar/components/toolbar-link.svelte +2 -0
  207. package/dist/bits/toolbar/components/toolbar.svelte +2 -1
  208. package/dist/bits/tooltip/_types.d.ts +2 -2
  209. package/dist/bits/tooltip/components/tooltip-arrow.svelte +2 -1
  210. package/dist/bits/tooltip/components/tooltip-content.svelte +6 -0
  211. package/dist/bits/tooltip/components/tooltip-trigger.svelte +2 -0
  212. package/dist/internal/types.d.ts +19 -0
  213. package/package.json +1 -1
@@ -2,6 +2,7 @@
2
2
  import { getCtx, getAttrs } from "../ctx.js";
3
3
  export let asChild = false;
4
4
  export let id = void 0;
5
+ export let el = void 0;
5
6
  const {
6
7
  elements: { description },
7
8
  ids
@@ -20,7 +21,7 @@ $:
20
21
  {#if asChild}
21
22
  <slot {builder} />
22
23
  {:else}
23
- <div {...builder} use:builder.action {...$$restProps}>
24
+ <div bind:this={el} {...builder} use:builder.action {...$$restProps}>
24
25
  <slot {builder} />
25
26
  </div>
26
27
  {/if}
@@ -7,6 +7,7 @@ export let inTransitionConfig = void 0;
7
7
  export let outTransition = void 0;
8
8
  export let outTransitionConfig = void 0;
9
9
  export let asChild = false;
10
+ export let el = void 0;
10
11
  const {
11
12
  elements: { overlay },
12
13
  states: { open }
@@ -22,12 +23,14 @@ $:
22
23
  <slot {builder} />
23
24
  {:else if transition && $open}
24
25
  <div
26
+ bind:this={el}
25
27
  transition:transition={transitionConfig}
26
28
  {...builder} use:builder.action
27
29
  {...$$restProps}
28
30
  />
29
31
  {:else if inTransition && outTransition && $open}
30
32
  <div
33
+ bind:this={el}
31
34
  in:inTransition={inTransitionConfig}
32
35
  out:outTransition={outTransitionConfig}
33
36
  {...builder} use:builder.action
@@ -35,16 +38,18 @@ $:
35
38
  />
36
39
  {:else if inTransition && $open}
37
40
  <div
41
+ bind:this={el}
38
42
  in:inTransition={inTransitionConfig}
39
43
  {...builder} use:builder.action
40
44
  {...$$restProps}
41
45
  />
42
46
  {:else if outTransition && $open}
43
47
  <div
48
+ bind:this={el}
44
49
  out:outTransition={outTransitionConfig}
45
50
  {...builder} use:builder.action
46
51
  {...$$restProps}
47
52
  />
48
53
  {:else if $open}
49
- <div {...builder} use:builder.action {...$$restProps} />
54
+ <div bind:this={el} {...builder} use:builder.action {...$$restProps} />
50
55
  {/if}
@@ -1,6 +1,7 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
2
  import { getCtx, getAttrs } from "../ctx.js";
3
3
  export let asChild = false;
4
+ export let el = void 0;
4
5
  const {
5
6
  elements: { portalled }
6
7
  } = getCtx();
@@ -14,7 +15,7 @@ $:
14
15
  {#if asChild}
15
16
  <slot {builder} />
16
17
  {:else}
17
- <div {...builder} use:builder.action {...$$restProps}>
18
+ <div bind:this={el} {...builder} use:builder.action {...$$restProps}>
18
19
  <slot {builder} />
19
20
  </div>
20
21
  {/if}
@@ -3,6 +3,7 @@ import { getCtx, getAttrs } from "../ctx.js";
3
3
  export let level = "h2";
4
4
  export let asChild = false;
5
5
  export let id = void 0;
6
+ export let el = void 0;
6
7
  const {
7
8
  elements: { title },
8
9
  ids
@@ -21,7 +22,12 @@ $:
21
22
  {#if asChild}
22
23
  <slot {builder} />
23
24
  {:else}
24
- <svelte:element this={level} {...builder} use:builder.action {...$$restProps}>
25
+ <svelte:element
26
+ this={level}
27
+ bind:this={el}
28
+ {...builder} use:builder.action
29
+ {...$$restProps}
30
+ >
25
31
  <slot {builder} />
26
32
  </svelte:element>
27
33
  {/if}
@@ -2,6 +2,7 @@
2
2
  import { getCtx, getAttrs } from "../ctx.js";
3
3
  import { createDispatcher } from "../../../internal/events.js";
4
4
  export let asChild = false;
5
+ export let el = void 0;
5
6
  const {
6
7
  elements: { trigger }
7
8
  } = getCtx();
@@ -17,6 +18,7 @@ $:
17
18
  <slot {builder} />
18
19
  {:else}
19
20
  <button
21
+ bind:this={el}
20
22
  {...builder} use:builder.action
21
23
  type="button"
22
24
  {...$$restProps}
@@ -1,7 +1,7 @@
1
- import type { AsChild, Transition, TransitionProps } from "../../internal/index.js";
1
+ import type { DOMElement, Transition, TransitionProps } from "../../internal/index.js";
2
2
  export type ArrowProps = Expand<{
3
3
  size?: number;
4
- } & AsChild>;
4
+ } & DOMElement>;
5
5
  export type Boundary = "clippingAncestors" | Element | Array<Element> | Rect;
6
6
  export type Rect = {
7
7
  x: number;
@@ -82,4 +82,4 @@ export type FloatingProps = {
82
82
  */
83
83
  overlap?: boolean;
84
84
  };
85
- export type ContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<FloatingProps & TransitionProps<T, In, Out> & AsChild>;
85
+ export type ContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<FloatingProps & TransitionProps<T, In, Out> & DOMElement>;
@@ -1,3 +1,3 @@
1
- import type { AsChild } from "../../internal/types.js";
2
- type Props = AsChild;
1
+ import type { DOMElement } from "../../internal/types.js";
2
+ type Props = DOMElement<HTMLLabelElement>;
3
3
  export type { Props };
@@ -2,6 +2,7 @@
2
2
  import { getAttrs } from "../ctx.js";
3
3
  import { createDispatcher } from "../../../internal/events.js";
4
4
  export let asChild = false;
5
+ export let el = void 0;
5
6
  const {
6
7
  elements: { root }
7
8
  } = createLabel();
@@ -16,7 +17,12 @@ $:
16
17
  {#if asChild}
17
18
  <slot {builder} />
18
19
  {:else}
19
- <label {...builder} use:builder.action {...$$restProps} on:m-mousedown={dispatch}>
20
+ <label
21
+ bind:this={el}
22
+ {...builder} use:builder.action
23
+ {...$$restProps}
24
+ on:m-mousedown={dispatch}
25
+ >
20
26
  <slot {builder} />
21
27
  </label>
22
28
  {/if}
@@ -1,4 +1,4 @@
1
- import type { CustomEventHandler } from "../..";
1
+ import type { CustomEventHandler } from "../../index.js";
2
2
  import type { HTMLLabelAttributes } from "svelte/elements";
3
3
  import type * as I from "./_types.js";
4
4
  type Props = I.Props & HTMLLabelAttributes;
@@ -3,7 +3,7 @@
3
3
  * to type-check our API documentation, which requires we document each prop,
4
4
  * but we don't want to document the HTML attributes.
5
5
  */
6
- import type { Expand, OnChangeFn, AsChild, OmitFloating } from "../../internal/index.js";
6
+ import type { Expand, OnChangeFn, OmitFloating, DOMElement } from "../../internal/index.js";
7
7
  import type { ArrowProps, ContentProps } from "../floating/_types.js";
8
8
  import type { CreateLinkPreviewProps } from "@melt-ui/svelte";
9
9
  type Props = Expand<OmitFloating<CreateLinkPreviewProps> & {
@@ -19,5 +19,5 @@ type Props = Expand<OmitFloating<CreateLinkPreviewProps> & {
19
19
  */
20
20
  onOpenChange?: OnChangeFn<boolean>;
21
21
  }>;
22
- type TriggerProps = AsChild;
22
+ type TriggerProps = DOMElement<HTMLAnchorElement>;
23
23
  export type { Props, ArrowProps, ContentProps, TriggerProps };
@@ -1,6 +1,7 @@
1
1
  <script>import { setArrow, getAttrs } from "../ctx.js";
2
2
  import { melt } from "@melt-ui/svelte";
3
3
  export let asChild = false;
4
+ export let el = void 0;
4
5
  export let size = 8;
5
6
  const {
6
7
  elements: { arrow }
@@ -15,5 +16,5 @@ $:
15
16
  {#if asChild}
16
17
  <slot {builder} />
17
18
  {:else}
18
- <div {...builder} use:builder.action {...$$restProps} />
19
+ <div bind:this={el} {...builder} use:builder.action {...$$restProps} />
19
20
  {/if}
@@ -20,6 +20,7 @@ export let sameWidth = false;
20
20
  export let fitViewport = false;
21
21
  export let strategy = "absolute";
22
22
  export let overlap = false;
23
+ export let el = void 0;
23
24
  const {
24
25
  elements: { content },
25
26
  states: { open },
@@ -55,6 +56,7 @@ $:
55
56
  <slot {builder} />
56
57
  {:else if transition && $open}
57
58
  <div
59
+ bind:this={el}
58
60
  transition:transition={transitionConfig}
59
61
  {...builder} use:builder.action
60
62
  {...$$restProps}
@@ -67,6 +69,7 @@ $:
67
69
  </div>
68
70
  {:else if inTransition && outTransition && $open}
69
71
  <div
72
+ bind:this={el}
70
73
  in:inTransition={inTransitionConfig}
71
74
  out:outTransition={outTransitionConfig}
72
75
  {...builder} use:builder.action
@@ -80,6 +83,7 @@ $:
80
83
  </div>
81
84
  {:else if inTransition && $open}
82
85
  <div
86
+ bind:this={el}
83
87
  in:inTransition={inTransitionConfig}
84
88
  {...builder} use:builder.action
85
89
  {...$$restProps}
@@ -92,6 +96,7 @@ $:
92
96
  </div>
93
97
  {:else if outTransition && $open}
94
98
  <div
99
+ bind:this={el}
95
100
  out:outTransition={outTransitionConfig}
96
101
  {...builder} use:builder.action
97
102
  {...$$restProps}
@@ -104,6 +109,7 @@ $:
104
109
  </div>
105
110
  {:else if $open}
106
111
  <div
112
+ bind:this={el}
107
113
  {...builder} use:builder.action
108
114
  {...$$restProps}
109
115
  on:m-focusout={dispatch}
@@ -3,6 +3,7 @@ import { getCtx, getAttrs } from "../ctx.js";
3
3
  import { createDispatcher } from "../../../internal/events.js";
4
4
  export let asChild = false;
5
5
  export let id = void 0;
6
+ export let el = void 0;
6
7
  const {
7
8
  elements: { trigger },
8
9
  ids
@@ -24,6 +25,7 @@ $:
24
25
  {:else}
25
26
  <svelte:element
26
27
  this={"a"}
28
+ bind:this={el}
27
29
  {...builder} use:builder.action
28
30
  {...$$restProps}
29
31
  {...attrs}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Shared internal types for the various menu components.
3
3
  */
4
- import type { AsChild, OmitChecked, OmitFloating, OnChangeFn } from "../../internal/index.js";
4
+ import type { DOMElement, OmitChecked, OmitFloating, OnChangeFn } from "../../internal/index.js";
5
5
  import type { CreateContextMenuCheckboxItemProps, CreateContextMenuRadioGroupProps, ContextMenuRadioItemProps, CreateContextSubmenuProps, CreateContextMenuProps } from "@melt-ui/svelte";
6
6
  import type { ArrowProps as FloatingArrowProps, ContentProps } from "../floating/_types.js";
7
7
  export type Props = Expand<OmitFloating<CreateContextMenuProps> & {
@@ -24,7 +24,7 @@ export type SubTriggerProps = Expand<{
24
24
  * @defaultValue false;
25
25
  */
26
26
  disabled?: boolean;
27
- } & AsChild>;
27
+ } & DOMElement>;
28
28
  export type CheckboxItemProps = Expand<OmitChecked<CreateContextMenuCheckboxItemProps> & {
29
29
  /**
30
30
  * The checked state of the checkbox item.
@@ -37,7 +37,7 @@ export type CheckboxItemProps = Expand<OmitChecked<CreateContextMenuCheckboxItem
37
37
  * A callback function called when the checked state changes.
38
38
  */
39
39
  onCheckedChange?: OnChangeFn<boolean | "indeterminate">;
40
- } & AsChild>;
40
+ } & DOMElement>;
41
41
  export type RadioGroupProps = Expand<{
42
42
  /**
43
43
  * The value of the radio group.
@@ -49,8 +49,8 @@ export type RadioGroupProps = Expand<{
49
49
  * A callback function called when the value changes.
50
50
  */
51
51
  onValueChange?: OnChangeFn<CreateContextMenuRadioGroupProps["defaultValue"]>;
52
- } & AsChild>;
53
- export type RadioItemProps = Expand<ContextMenuRadioItemProps & AsChild>;
52
+ } & DOMElement>;
53
+ export type RadioItemProps = Expand<ContextMenuRadioItemProps & DOMElement>;
54
54
  export type SubProps = Expand<OmitFloating<CreateContextSubmenuProps> & {
55
55
  /**
56
56
  * The open state of the submenu.
@@ -71,12 +71,12 @@ export type ItemProps = Expand<{
71
71
  * @defaultValue false
72
72
  */
73
73
  disabled?: boolean;
74
- } & AsChild>;
74
+ } & DOMElement>;
75
75
  export type ArrowProps = FloatingArrowProps;
76
- export type GroupProps = AsChild;
77
- export type CheckboxIndicatorProps = AsChild;
78
- export type RadioIndicatorProps = AsChild;
79
- export type LabelProps = AsChild;
80
- export type SeparatorProps = AsChild;
81
- export type TriggerProps = AsChild;
76
+ export type GroupProps = DOMElement;
77
+ export type CheckboxIndicatorProps = DOMElement;
78
+ export type RadioIndicatorProps = DOMElement;
79
+ export type LabelProps = DOMElement;
80
+ export type SeparatorProps = DOMElement;
81
+ export type TriggerProps = DOMElement<HTMLElement>;
82
82
  export { ContentProps, ContentProps as SubContentProps };
@@ -2,6 +2,7 @@
2
2
  import { setArrow, getAttrs } from "../ctx.js";
3
3
  export let size = 8;
4
4
  export let asChild = false;
5
+ export let el = void 0;
5
6
  const {
6
7
  elements: { arrow }
7
8
  } = setArrow(size);
@@ -15,5 +16,5 @@ $:
15
16
  {#if asChild}
16
17
  <slot {builder} />
17
18
  {:else}
18
- <div {...builder} use:builder.action {...$$restProps} />
19
+ <div bind:this={el} {...builder} use:builder.action {...$$restProps} />
19
20
  {/if}
@@ -1,5 +1,6 @@
1
1
  <script>import { getAttrs, getCheckboxIndicator } from "../ctx.js";
2
2
  export let asChild = false;
3
+ export let el = void 0;
3
4
  const checked = getCheckboxIndicator();
4
5
  const attrs = getAttrs("checkbox-indicator");
5
6
  </script>
@@ -7,7 +8,7 @@ const attrs = getAttrs("checkbox-indicator");
7
8
  {#if asChild}
8
9
  <slot {attrs} checked={$checked} />
9
10
  {:else}
10
- <div {...$$restProps} {...attrs}>
11
+ <div bind:this={el} {...$$restProps} {...attrs}>
11
12
  {#if $checked}
12
13
  <slot {attrs} checked={$checked} />
13
14
  {/if}
@@ -5,6 +5,7 @@ export let checked = void 0;
5
5
  export let onCheckedChange = void 0;
6
6
  export let disabled = void 0;
7
7
  export let asChild = false;
8
+ export let el = void 0;
8
9
  const {
9
10
  elements: { checkboxItem },
10
11
  states: { checked: localChecked },
@@ -36,6 +37,7 @@ $:
36
37
  <slot {builder} />
37
38
  {:else}
38
39
  <div
40
+ bind:this={el}
39
41
  {...builder} use:builder.action
40
42
  {...$$restProps}
41
43
  on:m-click={dispatch}
@@ -20,6 +20,7 @@ export let sameWidth = false;
20
20
  export let fitViewport = false;
21
21
  export let strategy = "absolute";
22
22
  export let overlap = false;
23
+ export let el = void 0;
23
24
  const {
24
25
  elements: { menu },
25
26
  states: { open },
@@ -55,6 +56,7 @@ $:
55
56
  <slot {builder} />
56
57
  {:else if transition && $open}
57
58
  <div
59
+ bind:this={el}
58
60
  transition:transition={transitionConfig}
59
61
  {...builder} use:builder.action
60
62
  {...$$restProps}
@@ -64,6 +66,7 @@ $:
64
66
  </div>
65
67
  {:else if inTransition && outTransition && $open}
66
68
  <div
69
+ bind:this={el}
67
70
  in:inTransition={inTransitionConfig}
68
71
  out:outTransition={outTransitionConfig}
69
72
  {...builder} use:builder.action
@@ -74,6 +77,7 @@ $:
74
77
  </div>
75
78
  {:else if inTransition && $open}
76
79
  <div
80
+ bind:this={el}
77
81
  in:inTransition={inTransitionConfig}
78
82
  {...builder} use:builder.action
79
83
  {...$$restProps}
@@ -83,6 +87,7 @@ $:
83
87
  </div>
84
88
  {:else if outTransition && $open}
85
89
  <div
90
+ bind:this={el}
86
91
  out:outTransition={outTransitionConfig}
87
92
  {...builder} use:builder.action
88
93
  {...$$restProps}
@@ -91,7 +96,12 @@ $:
91
96
  <slot {builder} />
92
97
  </div>
93
98
  {:else if $open}
94
- <div {...builder} use:builder.action {...$$restProps} on:m-keydown={dispatch}>
99
+ <div
100
+ bind:this={el}
101
+ {...builder} use:builder.action
102
+ {...$$restProps}
103
+ on:m-keydown={dispatch}
104
+ >
95
105
  <slot {builder} />
96
106
  </div>
97
107
  {/if}
@@ -1,6 +1,7 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
2
  import { setGroupCtx, getAttrs } from "../ctx.js";
3
3
  export let asChild = false;
4
+ export let el = void 0;
4
5
  const { group, id } = setGroupCtx();
5
6
  const attrs = getAttrs("group");
6
7
  $:
@@ -12,7 +13,7 @@ $:
12
13
  {#if asChild}
13
14
  <slot {builder} />
14
15
  {:else}
15
- <div {...builder} use:builder.action {...$$restProps}>
16
+ <div bind:this={el} {...builder} use:builder.action {...$$restProps}>
16
17
  <slot {builder} />
17
18
  </div>
18
19
  {/if}
@@ -5,6 +5,7 @@ import { getCtx, getAttrs } from "../ctx.js";
5
5
  export let href = void 0;
6
6
  export let asChild = false;
7
7
  export let disabled = false;
8
+ export let el = void 0;
8
9
  const {
9
10
  elements: { item }
10
11
  } = getCtx();
@@ -22,6 +23,7 @@ $:
22
23
  {:else}
23
24
  <svelte:element
24
25
  this={href ? "a" : "div"}
26
+ bind:this={el}
25
27
  {href}
26
28
  {...builder} use:builder.action
27
29
  {...$$restProps}
@@ -1,6 +1,7 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
2
  import { getGroupLabel, getAttrs } from "../ctx.js";
3
3
  export let asChild = false;
4
+ export let el = void 0;
4
5
  const { groupLabel, id } = getGroupLabel();
5
6
  const attrs = getAttrs("label");
6
7
  $:
@@ -12,7 +13,7 @@ $:
12
13
  {#if asChild}
13
14
  <slot {builder} />
14
15
  {:else}
15
- <div {...builder} use:builder.action {...$$restProps}>
16
+ <div bind:this={el} {...builder} use:builder.action {...$$restProps}>
16
17
  <slot {builder} />
17
18
  </div>
18
19
  {/if}
@@ -3,6 +3,7 @@ import { setRadioGroupCtx, getAttrs } from "../ctx.js";
3
3
  export let value = void 0;
4
4
  export let onValueChange = void 0;
5
5
  export let asChild = false;
6
+ export let el = void 0;
6
7
  const {
7
8
  elements: { radioGroup },
8
9
  states: { value: localValue }
@@ -28,7 +29,7 @@ $:
28
29
  {#if asChild}
29
30
  <slot {builder} />
30
31
  {:else}
31
- <div {...builder} use:builder.action {...$$restProps}>
32
+ <div bind:this={el} {...builder} use:builder.action {...$$restProps}>
32
33
  <slot {builder} />
33
34
  </div>
34
35
  {/if}
@@ -1,5 +1,6 @@
1
1
  <script>import { getAttrs, getRadioIndicator } from "../ctx.js";
2
2
  export let asChild = false;
3
+ export let el = void 0;
3
4
  const { isChecked, value } = getRadioIndicator();
4
5
  const attrs = getAttrs("radio-indicator");
5
6
  $:
@@ -9,7 +10,7 @@ $:
9
10
  {#if asChild}
10
11
  <slot {attrs} {checked} />
11
12
  {:else}
12
- <div {...$$restProps} {...attrs}>
13
+ <div bind:this={el} {...$$restProps} {...attrs}>
13
14
  {#if checked}
14
15
  <slot {attrs} {checked} />
15
16
  {/if}
@@ -4,6 +4,7 @@ import { createDispatcher } from "../../../internal/events.js";
4
4
  export let value;
5
5
  export let disabled = false;
6
6
  export let asChild = false;
7
+ export let el = void 0;
7
8
  const {
8
9
  elements: { radioItem }
9
10
  } = setRadioItem(value);
@@ -19,6 +20,7 @@ $:
19
20
  <slot {builder} />
20
21
  {:else}
21
22
  <div
23
+ bind:this={el}
22
24
  {...builder} use:builder.action
23
25
  {...$$restProps}
24
26
  on:m-click={dispatch}
@@ -1,6 +1,7 @@
1
1
  <script>import { melt } from "@melt-ui/svelte";
2
2
  import { getCtx, getAttrs } from "../ctx.js";
3
3
  export let asChild = false;
4
+ export let el = void 0;
4
5
  const {
5
6
  elements: { separator }
6
7
  } = getCtx();
@@ -14,5 +15,5 @@ $:
14
15
  {#if asChild}
15
16
  <slot {builder} />
16
17
  {:else}
17
- <div {...$separator} use:$separator.action {...$$restProps} />
18
+ <div bind:this={el} {...$separator} use:$separator.action {...$$restProps} />
18
19
  {/if}
@@ -20,6 +20,7 @@ export let sameWidth = false;
20
20
  export let fitViewport = false;
21
21
  export let strategy = "absolute";
22
22
  export let overlap = false;
23
+ export let el = void 0;
23
24
  const {
24
25
  elements: { subMenu },
25
26
  states: { subOpen },
@@ -55,6 +56,7 @@ $:
55
56
  <slot {builder} />
56
57
  {:else if transition && $subOpen}
57
58
  <div
59
+ bind:this={el}
58
60
  transition:transition={transitionConfig}
59
61
  {...builder} use:builder.action
60
62
  {...$$restProps}
@@ -66,6 +68,7 @@ $:
66
68
  </div>
67
69
  {:else if inTransition && outTransition && $subOpen}
68
70
  <div
71
+ bind:this={el}
69
72
  in:inTransition={inTransitionConfig}
70
73
  out:outTransition={outTransitionConfig}
71
74
  {...builder} use:builder.action
@@ -78,6 +81,7 @@ $:
78
81
  </div>
79
82
  {:else if inTransition && $subOpen}
80
83
  <div
84
+ bind:this={el}
81
85
  in:inTransition={inTransitionConfig}
82
86
  {...builder} use:builder.action
83
87
  {...$$restProps}
@@ -89,6 +93,7 @@ $:
89
93
  </div>
90
94
  {:else if outTransition && $subOpen}
91
95
  <div
96
+ bind:this={el}
92
97
  out:outTransition={outTransitionConfig}
93
98
  {...builder} use:builder.action
94
99
  {...$$restProps}
@@ -100,6 +105,7 @@ $:
100
105
  </div>
101
106
  {:else if $subOpen}
102
107
  <div
108
+ bind:this={el}
103
109
  {...builder} use:builder.action
104
110
  {...$$restProps}
105
111
  on:m-focusout={dispatch}
@@ -5,6 +5,7 @@ import { createDispatcher } from "../../../internal/events.js";
5
5
  export let disabled = false;
6
6
  export let asChild = false;
7
7
  export let id = void 0;
8
+ export let el = void 0;
8
9
  const {
9
10
  elements: { subTrigger },
10
11
  ids
@@ -26,6 +27,7 @@ $:
26
27
  <slot {builder} />
27
28
  {:else}
28
29
  <div
30
+ bind:this={el}
29
31
  {...builder} use:builder.action
30
32
  {...$$restProps}
31
33
  on:m-click={dispatch}
@@ -4,6 +4,7 @@ declare const __propDef: {
4
4
  props: {
5
5
  disabled?: boolean | undefined;
6
6
  asChild?: boolean | undefined;
7
+ el?: HTMLDivElement | undefined;
7
8
  } & import("../../../internal/index.js").HTMLDivAttributes & {
8
9
  disabled?: boolean | undefined;
9
10
  };
@@ -3,6 +3,7 @@ import { getCtx, getAttrs } from "../ctx.js";
3
3
  import { createDispatcher } from "../../../internal/events.js";
4
4
  export let asChild = false;
5
5
  export let id = void 0;
6
+ export let el = void 0;
6
7
  const {
7
8
  elements: { trigger },
8
9
  ids
@@ -23,6 +24,7 @@ $:
23
24
  <slot {builder} />
24
25
  {:else}
25
26
  <button
27
+ bind:this={el}
26
28
  {...builder} use:builder.action
27
29
  type="button"
28
30
  {...$$restProps}
@@ -2,7 +2,7 @@
2
2
  * These types are shared between the various menu components,
3
3
  * such as `DropdownMenu`, `Menubar` & `ContextMenu`.
4
4
  */
5
- import type { HTMLDivAttributes } from "../../internal/index.js";
5
+ import type { DOMEl, HTMLDivAttributes } from "../../internal/index.js";
6
6
  import type { CustomEventHandler } from "../..";
7
7
  import type { HTMLAnchorAttributes, HTMLButtonAttributes } from "svelte/elements";
8
8
  import type * as I from "./_types.js";
@@ -14,19 +14,19 @@ type RadioItemProps = I.RadioItemProps & HTMLDivAttributes;
14
14
  type GroupProps = I.GroupProps & HTMLDivAttributes;
15
15
  type AnchorElement = HTMLAnchorAttributes & {
16
16
  href?: HTMLAnchorAttributes["href"];
17
- };
17
+ } & DOMEl<HTMLAnchorElement>;
18
18
  type DivElement = HTMLDivAttributes & {
19
19
  href?: never;
20
- };
21
- type ItemProps = I.ItemProps & (AnchorElement | DivElement);
20
+ } & DOMEl;
21
+ type ItemProps = Omit<I.ItemProps, "el"> & (AnchorElement | DivElement);
22
22
  type CheckboxIndicatorProps = I.CheckboxIndicatorProps & HTMLDivAttributes;
23
23
  type RadioIndicatorProps = I.RadioIndicatorProps & HTMLDivAttributes;
24
24
  type LabelProps = I.LabelProps & HTMLDivAttributes;
25
25
  type SeparatorProps = I.SeparatorProps & HTMLDivAttributes;
26
26
  type SubProps = I.SubProps;
27
27
  type SubTriggerProps = I.SubTriggerProps & HTMLDivAttributes;
28
- type ContextTriggerProps = I.TriggerProps & HTMLDivAttributes;
29
- type DropdownTriggerProps = I.TriggerProps & HTMLButtonAttributes;
28
+ type ContextTriggerProps = Omit<I.TriggerProps, "el"> & HTMLDivAttributes & DOMEl;
29
+ type DropdownTriggerProps = Omit<I.TriggerProps, "el"> & HTMLButtonAttributes & DOMEl<HTMLButtonElement>;
30
30
  type ArrowProps = I.ArrowProps & HTMLDivAttributes;
31
31
  type ItemEvents<T extends Element = HTMLDivElement> = {
32
32
  click: CustomEventHandler<MouseEvent, T>;