reka-ui 2.9.2 → 2.9.3

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 (76) hide show
  1. package/dist/Autocomplete/AutocompleteInput.cjs +25 -8
  2. package/dist/Autocomplete/AutocompleteInput.cjs.map +1 -1
  3. package/dist/Autocomplete/AutocompleteInput.js +26 -9
  4. package/dist/Autocomplete/AutocompleteInput.js.map +1 -1
  5. package/dist/ColorArea/ColorAreaRoot.cjs +0 -1
  6. package/dist/ColorArea/ColorAreaRoot.cjs.map +1 -1
  7. package/dist/ColorArea/ColorAreaRoot.js +0 -1
  8. package/dist/ColorArea/ColorAreaRoot.js.map +1 -1
  9. package/dist/ColorField/ColorFieldRoot.cjs +0 -1
  10. package/dist/ColorField/ColorFieldRoot.cjs.map +1 -1
  11. package/dist/ColorField/ColorFieldRoot.js +0 -1
  12. package/dist/ColorField/ColorFieldRoot.js.map +1 -1
  13. package/dist/Combobox/ComboboxItem.cjs +1 -1
  14. package/dist/Combobox/ComboboxItem.cjs.map +1 -1
  15. package/dist/Combobox/ComboboxItem.js +1 -1
  16. package/dist/Combobox/ComboboxItem.js.map +1 -1
  17. package/dist/FocusScope/FocusScope.cjs +5 -1
  18. package/dist/FocusScope/FocusScope.cjs.map +1 -1
  19. package/dist/FocusScope/FocusScope.js +5 -1
  20. package/dist/FocusScope/FocusScope.js.map +1 -1
  21. package/dist/HoverCard/HoverCardContentImpl.cjs +5 -0
  22. package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
  23. package/dist/HoverCard/HoverCardContentImpl.js +5 -0
  24. package/dist/HoverCard/HoverCardContentImpl.js.map +1 -1
  25. package/dist/Listbox/ListboxItem.cjs +1 -1
  26. package/dist/Listbox/ListboxItem.cjs.map +1 -1
  27. package/dist/Listbox/ListboxItem.js +1 -1
  28. package/dist/Listbox/ListboxItem.js.map +1 -1
  29. package/dist/Listbox/ListboxRoot.cjs +6 -5
  30. package/dist/Listbox/ListboxRoot.cjs.map +1 -1
  31. package/dist/Listbox/ListboxRoot.js +6 -5
  32. package/dist/Listbox/ListboxRoot.js.map +1 -1
  33. package/dist/PinInput/PinInputInput.cjs +12 -6
  34. package/dist/PinInput/PinInputInput.cjs.map +1 -1
  35. package/dist/PinInput/PinInputInput.js +12 -6
  36. package/dist/PinInput/PinInputInput.js.map +1 -1
  37. package/dist/TagsInput/TagsInputInput.cjs +3 -0
  38. package/dist/TagsInput/TagsInputInput.cjs.map +1 -1
  39. package/dist/TagsInput/TagsInputInput.js +3 -0
  40. package/dist/TagsInput/TagsInputInput.js.map +1 -1
  41. package/dist/Tooltip/TooltipContentImpl.cjs +1 -1
  42. package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
  43. package/dist/Tooltip/TooltipContentImpl.js +1 -1
  44. package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
  45. package/dist/constant.d.cts.map +1 -1
  46. package/dist/index.d.cts +2 -2
  47. package/dist/index.d.ts +2 -2
  48. package/dist/index2.d.ts.map +1 -1
  49. package/dist/index3.d.cts +1029 -1023
  50. package/dist/index3.d.cts.map +1 -1
  51. package/dist/index3.d.ts +1027 -1021
  52. package/dist/index3.d.ts.map +1 -1
  53. package/dist/internal.d.cts +2 -0
  54. package/dist/internal.d.ts +4 -2
  55. package/dist/internal.d.ts.map +1 -1
  56. package/dist/shared/useForwardProps.cjs.map +1 -1
  57. package/dist/shared/useForwardProps.js.map +1 -1
  58. package/dist/shared/useGraceArea.cjs +1 -0
  59. package/dist/shared/useGraceArea.cjs.map +1 -1
  60. package/dist/shared/useGraceArea.js +1 -0
  61. package/dist/shared/useGraceArea.js.map +1 -1
  62. package/package.json +3 -3
  63. package/src/Autocomplete/AutocompleteInput.vue +30 -8
  64. package/src/ColorArea/ColorAreaRoot.vue +0 -4
  65. package/src/ColorField/ColorFieldRoot.vue +0 -4
  66. package/src/Combobox/ComboboxItem.vue +3 -0
  67. package/src/FocusScope/FocusScope.vue +15 -1
  68. package/src/HoverCard/HoverCardContentImpl.vue +7 -0
  69. package/src/Listbox/ListboxItem.vue +2 -2
  70. package/src/Listbox/ListboxRoot.vue +8 -6
  71. package/src/PinInput/PinInputInput.vue +19 -8
  72. package/src/Select/index.ts +1 -0
  73. package/src/TagsInput/TagsInputInput.vue +10 -1
  74. package/src/Tooltip/TooltipContentImpl.vue +1 -1
  75. package/src/shared/useForwardProps.ts +13 -2
  76. package/src/shared/useGraceArea.ts +5 -3
@@ -15,6 +15,8 @@ type __VLS_WithSlots<T, S> = T & {
15
15
  $slots: S;
16
16
  };
17
17
  };
18
+ //# sourceMappingURL=MenuAnchor.vue.d.ts.map
19
+
18
20
  //#endregion
19
21
  export { _default$15 as MenuAnchor, _default$5 as MenuArrow, MenuArrowProps, _default$9 as MenuCheckboxItem, MenuCheckboxItemEmits, MenuCheckboxItemProps, _default$7 as MenuContent, MenuContentEmits, MenuContentProps, MenuEmits, _default$11 as MenuGroup, MenuGroupProps, _default$4 as MenuItem, MenuItemEmits, _default$1 as MenuItemIndicator, MenuItemIndicatorProps, MenuItemProps, _default$2 as MenuLabel, MenuLabelProps, _default$12 as MenuPortal, MenuPortalProps, MenuProps, _default$14 as MenuRadioGroup, MenuRadioGroupEmits, MenuRadioGroupProps, _default$3 as MenuRadioItem, MenuRadioItemEmits, MenuRadioItemProps, _default$10 as MenuRoot, _default$6 as MenuSeparator, MenuSeparatorProps, _default as MenuSub, _default$8 as MenuSubContent, MenuSubContentEmits, MenuSubContentProps, MenuSubEmits, MenuSubProps, _default$13 as MenuSubTrigger, MenuSubTriggerProps, injectMenuContext, injectMenuRootContext };
20
22
  //# sourceMappingURL=internal.d.cts.map
@@ -1,6 +1,6 @@
1
1
  import "./index2.js";
2
2
  import { MenuArrowProps, MenuCheckboxItemEmits, MenuCheckboxItemProps, MenuContentEmits, MenuContentProps, MenuEmits, MenuGroupProps, MenuItemEmits, MenuItemIndicatorProps, MenuItemProps, MenuLabelProps, MenuPortalProps, MenuProps, MenuRadioGroupEmits, MenuRadioGroupProps, MenuRadioItemEmits, MenuRadioItemProps, MenuSeparatorProps, MenuSubContentEmits, MenuSubContentProps, MenuSubEmits, MenuSubProps, MenuSubTriggerProps, PopperAnchorProps, _default$277 as _default$13, _default$278 as _default$8, _default$279 as _default, _default$280 as _default$6, _default$281 as _default$10, _default$282 as _default$3, _default$283 as _default$14, _default$284 as _default$12, _default$285 as _default$2, _default$286 as _default$1, _default$287 as _default$11, _default$288 as _default$7, _default$290 as _default$9, _default$291 as _default$4, _default$292 as _default$5, injectMenuContext, injectMenuRootContext } from "./index3.js";
3
- import * as vue57 from "vue";
3
+ import * as vue37 from "vue";
4
4
 
5
5
  //#region src/Menu/MenuAnchor.vue.d.ts
6
6
  interface MenuAnchorProps extends PopperAnchorProps {}
@@ -8,13 +8,15 @@ declare var __VLS_6: {};
8
8
  type __VLS_Slots = {} & {
9
9
  default?: (props: typeof __VLS_6) => any;
10
10
  };
11
- declare const __VLS_component: vue57.DefineComponent<MenuAnchorProps, {}, {}, {}, {}, vue57.ComponentOptionsMixin, vue57.ComponentOptionsMixin, {}, string, vue57.PublicProps, Readonly<MenuAnchorProps> & Readonly<{}>, {}, {}, {}, {}, string, vue57.ComponentProvideOptions, false, {}, any>;
11
+ declare const __VLS_component: vue37.DefineComponent<MenuAnchorProps, {}, {}, {}, {}, vue37.ComponentOptionsMixin, vue37.ComponentOptionsMixin, {}, string, vue37.PublicProps, Readonly<MenuAnchorProps> & Readonly<{}>, {}, {}, {}, {}, string, vue37.ComponentProvideOptions, false, {}, any>;
12
12
  declare const _default$15: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
13
13
  type __VLS_WithSlots<T, S> = T & {
14
14
  new (): {
15
15
  $slots: S;
16
16
  };
17
17
  };
18
+ //# sourceMappingURL=MenuAnchor.vue.d.ts.map
19
+
18
20
  //#endregion
19
21
  export { _default$15 as MenuAnchor, _default$5 as MenuArrow, MenuArrowProps, _default$9 as MenuCheckboxItem, MenuCheckboxItemEmits, MenuCheckboxItemProps, _default$7 as MenuContent, MenuContentEmits, MenuContentProps, MenuEmits, _default$11 as MenuGroup, MenuGroupProps, _default$4 as MenuItem, MenuItemEmits, _default$1 as MenuItemIndicator, MenuItemIndicatorProps, MenuItemProps, _default$2 as MenuLabel, MenuLabelProps, _default$12 as MenuPortal, MenuPortalProps, MenuProps, _default$14 as MenuRadioGroup, MenuRadioGroupEmits, MenuRadioGroupProps, _default$3 as MenuRadioItem, MenuRadioItemEmits, MenuRadioItemProps, _default$10 as MenuRoot, _default$6 as MenuSeparator, MenuSeparatorProps, _default as MenuSub, _default$8 as MenuSubContent, MenuSubContentEmits, MenuSubContentProps, MenuSubEmits, MenuSubProps, _default$13 as MenuSubTrigger, MenuSubTriggerProps, injectMenuContext, injectMenuRootContext };
20
22
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","names":[],"sources":["../src/Menu/MenuAnchor.vue"],"sourcesContent":[],"mappings":";;;;;UAkBU,eAAA,SAAwB;YA4B9B;KACC,WAAA;EA7BK,OAAA,CAAA,EAAA,CAAA,KAAA,EAAgB,OA8BG,OA9BK,EAAA,GAAA,GAAA;AAAiB,CAAA;AA4B7B,cAsBhB,eArBU,EAqBK,KAAA,CAAA,eApBe,CAoBf,eApBe,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAoBf,KAAA,CAAA,qBAAA,EAAA,KAAA,CAAA,qBAAA,EApBe,CAAA,CAAA,EAAA,MAAA,EAoBf,KAAA,CAAA,WAAA,EAAA,QApBe,CAoBf,eApBe,CAAA,GAoBf,QApBe,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAoBf,KAAA,CAAA,uBAAA,EApBe,KAAA,EAAA,CAAA,CAAA,EAAA,GAAA,CAAA;AAAA,cAoBf,WAMnB,EACmB,eADnB,CAAA,OAC0C,eAD1C,EAC2D,WAD3D,CAAA;KASG,eAfgB,CAAA,CAAA,EAAA,CAAA,CAAA,GAeQ,CAfR,GAAA;EAAA,MAAA,EAAA;IAAA,MAAA,EAiBX,CAjBW;EAAA,CAAA;CAAA"}
1
+ {"version":3,"file":"internal.d.ts","names":[],"sources":["../src/Menu/MenuAnchor.vue"],"sourcesContent":[],"mappings":";;;;;UAkBU,eAAA,SAAwB;YA4B9B;KACC,WAAA;EA7BK,OAAA,CAAA,EAAA,CAAA,KAAA,EAAgB,OA8BG,OA9BK,EAAA,GAAA,GAAA;AAAiB,CAAA;AA4B7B,cAsBhB,eApBuB,EAoBR,KAAA,CAAA,eApBe,CAoBf,eApBe,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAoBf,KAAA,CAAA,qBAAA,EAAA,KAAA,CAAA,qBAAA,EApBe,CAAA,CAAA,EAAA,MAAA,EAoBf,KAAA,CAAA,WAAA,EAAA,QApBe,CAoBf,eApBe,CAAA,GAoBf,QApBe,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAoBf,KAAA,CAAA,uBAAA,EApBe,KAAA,EAAA,CAAA,CAAA,EAAA,GAAA,CAAA;AAAA,cAoBf,WAMnB,EACmB,eADnB,CAAA,OAC0C,eAD1C,EAC2D,WAD3D,CAAA;KASG,eAfgB,CAAA,CAAA,EAAA,CAAA,CAAA,GAeQ,CAfR,GAAA;EAAA,MAAA,EAAA;IAAA,MAAA,EAiBX,CAjBW;EAAA,CAAA;CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useForwardProps.cjs","names":["props: MaybeRefOrGetter<T>"],"sources":["../../src/shared/useForwardProps.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;AAgBA,SAAgB,gBAA+CA,OAA4B;CACzF,MAAM,KAAK,6BAAoB;CAE/B,MAAM,eAAe,OAAO,KAAK,IAAI,KAAK,SAAS,CAAE,EAAC,CAAC,OAAO,CAAC,MAAM,SAAS;EAC5E,MAAM,gBAAgB,IAAI,KAAK,MAAM,OAAsB;AAC3D,MAAI,wBACF,MAAK,QAAmB;AAC1B,SAAO;CACR,GAAE,CAAE,EAAM;CAEX,MAAM,WAAW,eAAM,MAAM;AAC7B,QAAO,kBAAS,MAAM;EACpB,MAAM,iBAAiB,CAAE;EACzB,MAAM,gBAAgB,IAAI,MAAM,SAAS,CAAE;AAE3C,SAAO,KAAK,cAAc,CAAC,QAAQ,CAAC,QAAQ;AAC1C,kBAAe,kBAAS,IAAI,IAAe,cAAc;EAC1D,EAAC;AAGF,SAAO,OAAO,KAAK;GAAE,GAAG;GAAc,GAAG;EAAgB,EAAC,CAAC,OAAO,CAAC,MAAM,SAAS;AAChF,OAAI,SAAS,MAAM,iBACjB,MAAK,QAAmB,SAAS,MAAM;AACzC,UAAO;EACR,GAAE,CAAE,EAAM;CACZ,EAAC;AACH"}
1
+ {"version":3,"file":"useForwardProps.cjs","names":["props: MaybeRefOrGetter<T>"],"sources":["../../src/shared/useForwardProps.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;AA2BA,SAAgB,gBAA+CA,OAA4B;CACzF,MAAM,KAAK,6BAAoB;CAE/B,MAAM,eAAe,OAAO,KAAK,IAAI,KAAK,SAAS,CAAE,EAAC,CAAC,OAAO,CAAC,MAAM,SAAS;EAC5E,MAAM,gBAAgB,IAAI,KAAK,MAAM,OAAsB;AAC3D,MAAI,wBACF,MAAK,QAAmB;AAC1B,SAAO;CACR,GAAE,CAAE,EAAM;CAEX,MAAM,WAAW,eAAM,MAAM;AAC7B,QAAO,kBAAS,MAAM;EACpB,MAAM,iBAAiB,CAAE;EACzB,MAAM,gBAAgB,IAAI,MAAM,SAAS,CAAE;AAE3C,SAAO,KAAK,cAAc,CAAC,QAAQ,CAAC,QAAQ;AAC1C,kBAAe,kBAAS,IAAI,IAAe,cAAc;EAC1D,EAAC;AAGF,SAAO,OAAO,KAAK;GAAE,GAAG;GAAc,GAAG;EAAgB,EAAC,CAAC,OAAO,CAAC,MAAM,SAAS;AAChF,OAAI,SAAS,MAAM,iBACjB,CAAC,KAA6B,QAAQ,SAAS,MAAM;AACvD,UAAO;EACR,GAAE,CAAE,EAA4B;CAClC,EAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"useForwardProps.js","names":["props: MaybeRefOrGetter<T>"],"sources":["../../src/shared/useForwardProps.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AAgBA,SAAgB,gBAA+CA,OAA4B;CACzF,MAAM,KAAK,oBAAoB;CAE/B,MAAM,eAAe,OAAO,KAAK,IAAI,KAAK,SAAS,CAAE,EAAC,CAAC,OAAO,CAAC,MAAM,SAAS;EAC5E,MAAM,gBAAgB,IAAI,KAAK,MAAM,OAAsB;AAC3D,MAAI,wBACF,MAAK,QAAmB;AAC1B,SAAO;CACR,GAAE,CAAE,EAAM;CAEX,MAAM,WAAW,MAAM,MAAM;AAC7B,QAAO,SAAS,MAAM;EACpB,MAAM,iBAAiB,CAAE;EACzB,MAAM,gBAAgB,IAAI,MAAM,SAAS,CAAE;AAE3C,SAAO,KAAK,cAAc,CAAC,QAAQ,CAAC,QAAQ;AAC1C,kBAAe,SAAS,IAAI,IAAe,cAAc;EAC1D,EAAC;AAGF,SAAO,OAAO,KAAK;GAAE,GAAG;GAAc,GAAG;EAAgB,EAAC,CAAC,OAAO,CAAC,MAAM,SAAS;AAChF,OAAI,SAAS,MAAM,iBACjB,MAAK,QAAmB,SAAS,MAAM;AACzC,UAAO;EACR,GAAE,CAAE,EAAM;CACZ,EAAC;AACH"}
1
+ {"version":3,"file":"useForwardProps.js","names":["props: MaybeRefOrGetter<T>"],"sources":["../../src/shared/useForwardProps.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AA2BA,SAAgB,gBAA+CA,OAA4B;CACzF,MAAM,KAAK,oBAAoB;CAE/B,MAAM,eAAe,OAAO,KAAK,IAAI,KAAK,SAAS,CAAE,EAAC,CAAC,OAAO,CAAC,MAAM,SAAS;EAC5E,MAAM,gBAAgB,IAAI,KAAK,MAAM,OAAsB;AAC3D,MAAI,wBACF,MAAK,QAAmB;AAC1B,SAAO;CACR,GAAE,CAAE,EAAM;CAEX,MAAM,WAAW,MAAM,MAAM;AAC7B,QAAO,SAAS,MAAM;EACpB,MAAM,iBAAiB,CAAE;EACzB,MAAM,gBAAgB,IAAI,MAAM,SAAS,CAAE;AAE3C,SAAO,KAAK,cAAc,CAAC,QAAQ,CAAC,QAAQ;AAC1C,kBAAe,SAAS,IAAI,IAAe,cAAc;EAC1D,EAAC;AAGF,SAAO,OAAO,KAAK;GAAE,GAAG;GAAc,GAAG;EAAgB,EAAC,CAAC,OAAO,CAAC,MAAM,SAAS;AAChF,OAAI,SAAS,MAAM,iBACjB,CAAC,KAA6B,QAAQ,SAAS,MAAM;AACvD,UAAO;EACR,GAAE,CAAE,EAA4B;CAClC,EAAC;AACH"}
@@ -15,6 +15,7 @@ function useGraceArea(triggerElement, containerElement) {
15
15
  isPointerInTransit.value = false;
16
16
  }
17
17
  function handleCreateGraceArea(event, hoverTarget) {
18
+ if (!hoverTarget) return;
18
19
  const currentTarget = event.currentTarget;
19
20
  const exitPoint = {
20
21
  x: event.clientX,
@@ -1 +1 @@
1
- {"version":3,"file":"useGraceArea.cjs","names":["triggerElement: Ref<HTMLElement | undefined>","containerElement: Ref<HTMLElement | undefined>","event: PointerEvent","hoverTarget: HTMLElement","point: Point","rect: DOMRect","exitPoint: Point","exitSide: Side","paddedExitPoints: Point[]","polygon: Polygon","points: Readonly<Array<P>>","newPoints: Array<P>","a: Point","b: Point","upperHull: Array<P>","lowerHull: Array<P>"],"sources":["../../src/shared/useGraceArea.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"useGraceArea.cjs","names":["triggerElement: Ref<HTMLElement | undefined>","containerElement: Ref<HTMLElement | undefined>","event: PointerEvent","hoverTarget: HTMLElement | undefined","point: Point","rect: DOMRect","exitPoint: Point","exitSide: Side","paddedExitPoints: Point[]","polygon: Polygon","points: Readonly<Array<P>>","newPoints: Array<P>","a: Point","b: Point","upperHull: Array<P>","lowerHull: Array<P>"],"sources":["../../src/shared/useGraceArea.ts"],"sourcesContent":[],"mappings":"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"}
@@ -14,6 +14,7 @@ function useGraceArea(triggerElement, containerElement) {
14
14
  isPointerInTransit.value = false;
15
15
  }
16
16
  function handleCreateGraceArea(event, hoverTarget) {
17
+ if (!hoverTarget) return;
17
18
  const currentTarget = event.currentTarget;
18
19
  const exitPoint = {
19
20
  x: event.clientX,
@@ -1 +1 @@
1
- {"version":3,"file":"useGraceArea.js","names":["triggerElement: Ref<HTMLElement | undefined>","containerElement: Ref<HTMLElement | undefined>","event: PointerEvent","hoverTarget: HTMLElement","point: Point","rect: DOMRect","exitPoint: Point","exitSide: Side","paddedExitPoints: Point[]","polygon: Polygon","points: Readonly<Array<P>>","newPoints: Array<P>","a: Point","b: Point","upperHull: Array<P>","lowerHull: Array<P>"],"sources":["../../src/shared/useGraceArea.ts"],"sourcesContent":[],"mappings":";;;;AAKA,SAAgB,aAAaA,gBAA8CC,kBAAgD;CAEzH,MAAM,qBAAqB,aAAa,OAAO,IAAI;AAInD,mBAAkB,MAAM;AACtB,qBAAmB,QAAQ;CAC5B,EAAC;CAEF,MAAM,mBAAmB,IAAoB,KAAK;CAClD,MAAM,cAAc,iBAAuB;CAE3C,SAAS,wBAAwB;AAC/B,mBAAiB,QAAQ;AACzB,qBAAmB,QAAQ;CAC5B;CAED,SAAS,sBAAsBC,OAAqBC,aAA0B;EAC5E,MAAM,gBAAgB,MAAM;EAC5B,MAAM,YAAY;GAAE,GAAG,MAAM;GAAS,GAAG,MAAM;EAAS;EACxD,MAAM,WAAW,oBAAoB,WAAW,cAAc,uBAAuB,CAAC;EACtF,MAAM,mBAAmB,oBAAoB,WAAW,UAAU,EAAE;EACpE,MAAM,oBAAoB,kBAAkB,YAAY,uBAAuB,CAAC;EAChF,MAAM,YAAY,QAAQ,CAAC,GAAG,kBAAkB,GAAG,iBAAkB,EAAC;AACtE,mBAAiB,QAAQ;AACzB,qBAAmB,QAAQ;CAC5B;AAED,aAAY,CAAC,cAAc;AACzB,MAAI,eAAe,SAAS,iBAAiB,OAAO;GAClD,MAAM,qBAAqB,CAACD,UAAwB,sBAAsB,OAAO,iBAAiB,MAAO;GACzG,MAAM,qBAAqB,CAACA,UAAwB,sBAAsB,OAAO,eAAe,MAAO;AAEvG,kBAAe,MAAM,iBAAiB,gBAAgB,mBAAmB;AACzE,oBAAiB,MAAM,iBAAiB,gBAAgB,mBAAmB;AAE3E,aAAU,MAAM;AACd,mBAAe,OAAO,oBAAoB,gBAAgB,mBAAmB;AAC7E,qBAAiB,OAAO,oBAAoB,gBAAgB,mBAAmB;GAChF,EAAC;EACH;CACF,EAAC;AAEF,aAAY,CAAC,cAAc;AACzB,MAAI,iBAAiB,OAAO;GAC1B,MAAM,0BAA0B,CAACA,UAAwB;AACvD,SAAK,iBAAiB,WAAW,MAAM,kBAAkB,SACvD;IAEF,MAAM,SAAS,MAAM;IACrB,MAAM,kBAAkB;KAAE,GAAG,MAAM;KAAS,GAAG,MAAM;IAAS;IAC9D,MAAM,mBAAmB,eAAe,OAAO,SAAS,OAAO,IAAI,iBAAiB,OAAO,SAAS,OAAO;IAC3G,MAAM,6BAA6B,iBAAiB,iBAAiB,iBAAiB,MAAM;IAC5F,MAAM,8BAA8B,OAAO,QAAQ,4BAA4B;AAE/E,QAAI,iBACF,wBAAuB;aAEhB,6BAA6B,2BAA2B;AAC/D,4BAAuB;AACvB,iBAAY,SAAS;IACtB;GACF;AACD,kBAAe,OAAO,cAAc,iBAAiB,eAAe,wBAAwB;AAE5F,aAAU,MAAM,eAAe,OAAO,cAAc,oBAAoB,eAAe,wBAAwB,CAAC;EACjH;CACF,EAAC;AAEF,QAAO;EACL;EACA,eAAe,YAAY;CAC5B;AACF;AAKD,SAAS,oBAAoBE,OAAcC,MAAqB;CAC9D,MAAM,MAAM,KAAK,IAAI,KAAK,MAAM,MAAM,EAAE;CACxC,MAAM,SAAS,KAAK,IAAI,KAAK,SAAS,MAAM,EAAE;CAC9C,MAAM,QAAQ,KAAK,IAAI,KAAK,QAAQ,MAAM,EAAE;CAC5C,MAAM,OAAO,KAAK,IAAI,KAAK,OAAO,MAAM,EAAE;AAE1C,SAAQ,KAAK,IAAI,KAAK,QAAQ,OAAO,KAAK,EAA1C;EACE,KAAK,KACH,QAAO;EACT,KAAK,MACH,QAAO;EACT,KAAK,IACH,QAAO;EACT,KAAK,OACH,QAAO;EACT,QACE,OAAM,IAAI,MAAM;CACnB;AACF;AAED,SAAS,oBAAoBC,WAAkBC,UAAgB,UAAU,GAAG;CAC1E,MAAMC,mBAA4B,CAAE;AACpC,SAAQ,UAAR;EACE,KAAK;AACH,oBAAiB,KACf;IAAE,GAAG,UAAU,IAAI;IAAS,GAAG,UAAU,IAAI;GAAS,GACtD;IAAE,GAAG,UAAU,IAAI;IAAS,GAAG,UAAU,IAAI;GAAS,EACvD;AACD;EACF,KAAK;AACH,oBAAiB,KACf;IAAE,GAAG,UAAU,IAAI;IAAS,GAAG,UAAU,IAAI;GAAS,GACtD;IAAE,GAAG,UAAU,IAAI;IAAS,GAAG,UAAU,IAAI;GAAS,EACvD;AACD;EACF,KAAK;AACH,oBAAiB,KACf;IAAE,GAAG,UAAU,IAAI;IAAS,GAAG,UAAU,IAAI;GAAS,GACtD;IAAE,GAAG,UAAU,IAAI;IAAS,GAAG,UAAU,IAAI;GAAS,EACvD;AACD;EACF,KAAK;AACH,oBAAiB,KACf;IAAE,GAAG,UAAU,IAAI;IAAS,GAAG,UAAU,IAAI;GAAS,GACtD;IAAE,GAAG,UAAU,IAAI;IAAS,GAAG,UAAU,IAAI;GAAS,EACvD;AACD;CACH;AACD,QAAO;AACR;AAED,SAAS,kBAAkBH,MAAe;CACxC,MAAM,EAAE,KAAK,OAAO,QAAQ,MAAM,GAAG;AACrC,QAAO;EACL;GAAE,GAAG;GAAM,GAAG;EAAK;EACnB;GAAE,GAAG;GAAO,GAAG;EAAK;EACpB;GAAE,GAAG;GAAO,GAAG;EAAQ;EACvB;GAAE,GAAG;GAAM,GAAG;EAAQ;CACvB;AACF;AAID,SAAS,iBAAiBD,OAAcK,SAAkB;CACxD,MAAM,EAAE,GAAG,GAAG,GAAG;CACjB,IAAI,SAAS;AACb,MAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,SAAS,GAAG,IAAI,QAAQ,QAAQ,IAAI,KAAK;EACnE,MAAM,KAAK,QAAQ,GAAG;EACtB,MAAM,KAAK,QAAQ,GAAG;EACtB,MAAM,KAAK,QAAQ,GAAG;EACtB,MAAM,KAAK,QAAQ,GAAG;EAGtB,MAAM,YAAc,KAAK,MAAQ,KAAK,KAAQ,KAAK,KAAK,OAAO,IAAI,OAAO,KAAK,MAAM;AACrF,MAAI,UACF,WAAU;CACb;AAED,QAAO;AACR;AAID,SAAS,QAAyBC,QAAsC;CACtE,MAAMC,YAAsB,OAAO,OAAO;AAC1C,WAAU,KAAK,CAACC,GAAUC,MAAa;AACrC,MAAI,EAAE,IAAI,EAAE,EACV,QAAO;WACA,EAAE,IAAI,EAAE,EACf,QAAO;WACA,EAAE,IAAI,EAAE,EACf,QAAO;WACA,EAAE,IAAI,EAAE,EACf,QAAO;MACJ,QAAO;CACb,EAAC;AACF,QAAO,iBAAiB,UAAU;AACnC;AAGD,SAAS,iBAAkCH,QAAsC;AAC/E,KAAI,OAAO,UAAU,EACnB,QAAO,OAAO,OAAO;CAEvB,MAAMI,YAAsB,CAAE;AAC9B,MAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;EACtC,MAAM,IAAI,OAAO;AACjB,SAAO,UAAU,UAAU,GAAG;GAC5B,MAAM,IAAI,UAAU,UAAU,SAAS;GACvC,MAAM,IAAI,UAAU,UAAU,SAAS;AACvC,QAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GACtD,WAAU,KAAK;OACZ;EACN;AACD,YAAU,KAAK,EAAE;CAClB;AACD,WAAU,KAAK;CAEf,MAAMC,YAAsB,CAAE;AAC9B,MAAK,IAAI,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;EAC3C,MAAM,IAAI,OAAO;AACjB,SAAO,UAAU,UAAU,GAAG;GAC5B,MAAM,IAAI,UAAU,UAAU,SAAS;GACvC,MAAM,IAAI,UAAU,UAAU,SAAS;AACvC,QAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GACtD,WAAU,KAAK;OACZ;EACN;AACD,YAAU,KAAK,EAAE;CAClB;AACD,WAAU,KAAK;AAEf,KACE,UAAU,WAAW,KAClB,UAAU,WAAW,KACrB,UAAU,GAAG,MAAM,UAAU,GAAG,KAChC,UAAU,GAAG,MAAM,UAAU,GAAG,EAEnC,QAAO;KAIP,QAAO,UAAU,OAAO,UAAU;AAErC"}
1
+ {"version":3,"file":"useGraceArea.js","names":["triggerElement: Ref<HTMLElement | undefined>","containerElement: Ref<HTMLElement | undefined>","event: PointerEvent","hoverTarget: HTMLElement | undefined","point: Point","rect: DOMRect","exitPoint: Point","exitSide: Side","paddedExitPoints: Point[]","polygon: Polygon","points: Readonly<Array<P>>","newPoints: Array<P>","a: Point","b: Point","upperHull: Array<P>","lowerHull: Array<P>"],"sources":["../../src/shared/useGraceArea.ts"],"sourcesContent":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "reka-ui",
3
3
  "type": "module",
4
- "version": "2.9.2",
4
+ "version": "2.9.3",
5
5
  "description": "Vue port for Radix UI Primitives.",
6
6
  "author": "UnoVue Contributors (https://github.com/unovue)",
7
7
  "license": "MIT",
@@ -108,13 +108,13 @@
108
108
  "@tsconfig/node24": "^24.0.0",
109
109
  "@types/jsdom": "^28.0.0",
110
110
  "@types/node": "^24.0.13",
111
- "@vitejs/plugin-vue": "^6.0.4",
111
+ "@vitejs/plugin-vue": "^6.0.5",
112
112
  "@vitest/coverage-istanbul": "^3.2.4",
113
113
  "@vue/test-utils": "^2.4.6",
114
114
  "@vue/tsconfig": "^0.7.0",
115
115
  "jsdom": "^26.1.0",
116
116
  "tsdown": "^0.12.9",
117
- "vite": "^7.3.1",
117
+ "vite": "^8.0.3",
118
118
  "vitest": "^3.2.4",
119
119
  "vitest-axe": "0.1.0",
120
120
  "vitest-canvas-mock": "^0.3.3",
@@ -7,7 +7,7 @@ export interface AutocompleteInputProps extends ListboxFilterProps {}
7
7
 
8
8
  <script setup lang="ts">
9
9
  import { useVModel } from '@vueuse/core'
10
- import { nextTick, onMounted, watch } from 'vue'
10
+ import { nextTick, onMounted, ref, watch } from 'vue'
11
11
  import { injectComboboxRootContext } from '@/Combobox/ComboboxRoot.vue'
12
12
  import { ListboxFilter } from '@/Listbox'
13
13
  import { injectListboxRootContext } from '@/Listbox/ListboxRoot.vue'
@@ -37,27 +37,47 @@ onMounted(() => {
37
37
  rootContext.onInputElementChange(currentElement.value as HTMLInputElement)
38
38
  })
39
39
 
40
- function handleKeyDown(ev: KeyboardEvent) {
40
+ const isComposing = ref(false)
41
+ function onCompositionStart() {
42
+ isComposing.value = true
43
+ }
44
+ function onCompositionEnd() {
45
+ nextTick(() => {
46
+ isComposing.value = false
47
+ const el = currentElement.value as HTMLInputElement
48
+ if (el)
49
+ processInputValue(el.value)
50
+ })
51
+ }
52
+
53
+ function handleKeyDown(_ev: KeyboardEvent) {
54
+ if (isComposing.value)
55
+ return
41
56
  if (!rootContext.open.value)
42
57
  rootContext.onOpenChange(true)
43
58
  }
44
59
 
45
- function handleInput(event: InputEvent) {
46
- const target = event.target as HTMLInputElement
60
+ function processInputValue(value: string) {
47
61
  if (!rootContext.open.value) {
48
62
  rootContext.onOpenChange(true)
49
63
  nextTick(() => {
50
- if (target.value) {
51
- rootContext.filterSearch.value = target.value
64
+ if (value) {
65
+ rootContext.filterSearch.value = value
52
66
  listboxContext.highlightFirstItem()
53
67
  }
54
68
  })
55
69
  }
56
70
  else {
57
- rootContext.filterSearch.value = target.value
71
+ rootContext.filterSearch.value = value
58
72
  }
59
73
  // Autocomplete-specific: update root's modelValue with the typed text
60
- autocompleteContext.modelValue.value = target.value
74
+ autocompleteContext.modelValue.value = value
75
+ }
76
+
77
+ function handleInput(event: InputEvent) {
78
+ if (isComposing.value)
79
+ return
80
+ processInputValue((event.target as HTMLInputElement).value)
61
81
  }
62
82
 
63
83
  function handleFocus() {
@@ -106,6 +126,8 @@ watch(rootContext.filterState, (_newValue, oldValue) => {
106
126
  @input="handleInput"
107
127
  @keydown.down.up.prevent="handleKeyDown"
108
128
  @focus="handleFocus"
129
+ @compositionstart="onCompositionStart"
130
+ @compositionend="onCompositionEnd"
109
131
  >
110
132
  <slot />
111
133
  </ListboxFilter>
@@ -66,10 +66,6 @@ import {
66
66
  } from '@/shared/color'
67
67
  import { VisuallyHiddenInput } from '@/VisuallyHidden'
68
68
 
69
- defineOptions({
70
- inheritAttrs: false,
71
- })
72
-
73
69
  const props = withDefaults(defineProps<ColorAreaRootProps>(), {
74
70
  colorSpace: 'hsl',
75
71
  xChannel: 'hue',
@@ -73,10 +73,6 @@ import {
73
73
  } from '@/shared/color'
74
74
  import { VisuallyHiddenInput } from '@/VisuallyHidden'
75
75
 
76
- defineOptions({
77
- inheritAttrs: false,
78
- })
79
-
80
76
  const props = withDefaults(defineProps<ColorFieldRootProps>(), {
81
77
  colorSpace: 'hsl',
82
78
  disabled: false,
@@ -91,6 +91,9 @@ onUnmounted(() => {
91
91
  rootContext.onOpenChange(false)
92
92
  rootContext.modelValue.value = props.value
93
93
  }
94
+ else if (rootContext.multiple.value) {
95
+ rootContext.inputElement.value?.focus()
96
+ }
94
97
  }"
95
98
  >
96
99
  <slot>{{ value }}</slot>
@@ -117,7 +117,21 @@ watchEffect((cleanupFn) => {
117
117
  // if the element still exist inside the container,
118
118
  // if not then we focus to the container
119
119
  function handleMutations(mutations: MutationRecord[]) {
120
- const isLastFocusedElementExist = container.contains(lastFocusedElementRef.value)
120
+ const lastFocusedElement = lastFocusedElementRef.value
121
+
122
+ // Mutation may be triggered by something unrelated to focus, e.g. class is set on an element
123
+ // so we first check if we even have a previously focused element.
124
+ if (lastFocusedElement === null) {
125
+ return
126
+ }
127
+
128
+ // Ensure mutations removed nodes from the DOM at all.
129
+ const anyNodesRemoved = mutations.some(m => m.removedNodes.length > 0)
130
+ if (!anyNodesRemoved) {
131
+ return
132
+ }
133
+
134
+ const isLastFocusedElementExist = container.contains(lastFocusedElement)
121
135
  if (!isLastFocusedElementExist)
122
136
  focus(container)
123
137
  }
@@ -9,6 +9,7 @@ export interface HoverCardContentImplProps extends PopperContentProps {}
9
9
  </script>
10
10
 
11
11
  <script setup lang="ts">
12
+ import { useEventListener } from '@vueuse/core'
12
13
  import { nextTick, onMounted, onUnmounted, ref, watchEffect } from 'vue'
13
14
  import { DismissableLayer } from '@/DismissableLayer'
14
15
  import { PopperContent } from '@/Popper'
@@ -68,6 +69,12 @@ onMounted(() => {
68
69
  const tabbables = getTabbableNodes(contentElement.value)
69
70
  tabbables.forEach(tabbable => tabbable.setAttribute('tabindex', '-1'))
70
71
  }
72
+
73
+ useEventListener(window, 'scroll', (event: Event) => {
74
+ const target = event.target as HTMLElement
75
+ if (target?.contains(rootContext.triggerElement.value!))
76
+ rootContext.onDismiss()
77
+ }, { capture: true })
71
78
  })
72
79
 
73
80
  onUnmounted(() => {
@@ -92,8 +92,8 @@ provideListboxItemContext({
92
92
  if (rootContext.highlightedElement.value === currentElement)
93
93
  return
94
94
 
95
- if (rootContext.highlightOnHover.value && !rootContext.focusable.value)
96
- rootContext.changeHighlight(currentElement, false)
95
+ if (rootContext.highlightOnHover.value)
96
+ rootContext.changeHighlight(currentElement, false, false)
97
97
  }"
98
98
  >
99
99
  <slot />
@@ -27,7 +27,7 @@ type ListboxRootContext<T> = {
27
27
 
28
28
  onLeave: (event: Event) => void
29
29
  onEnter: (event: Event) => void
30
- changeHighlight: (el: HTMLElement, scrollIntoView?: boolean) => void
30
+ changeHighlight: (el: HTMLElement, scrollIntoView?: boolean, focus?: boolean) => void
31
31
  onKeydownNavigation: (event: KeyboardEvent) => void
32
32
  onKeydownEnter: (event: KeyboardEvent) => void
33
33
  onKeydownTypeAhead: (event: KeyboardEvent) => void
@@ -157,12 +157,12 @@ function getCollectionItem() {
157
157
  return getItems().map(i => i.ref).filter(i => i.dataset.disabled !== '')
158
158
  }
159
159
 
160
- function changeHighlight(el: HTMLElement, scrollIntoView = true) {
160
+ function changeHighlight(el: HTMLElement, scrollIntoView = true, focus?: boolean) {
161
161
  if (!el)
162
162
  return
163
163
 
164
164
  highlightedElement.value = el
165
- if (focusable.value)
165
+ if (focus ?? focusable.value)
166
166
  highlightedElement.value.focus()
167
167
  if (scrollIntoView)
168
168
  highlightedElement.value.scrollIntoView({ block: 'nearest' })
@@ -211,7 +211,9 @@ function onKeydownTypeAhead(event: KeyboardEvent) {
211
211
  const values = collection.map(i => i.value)
212
212
  modelValue.value = [...values]
213
213
  event.preventDefault()
214
- changeHighlight(collection[collection.length - 1].ref)
214
+ const lastItem = collection.at(-1)
215
+ if (lastItem)
216
+ changeHighlight(lastItem.ref)
215
217
  }
216
218
  else if (!isMetaKey) {
217
219
  const el = handleTypeaheadSearch(event.key, getItems())
@@ -309,9 +311,9 @@ function handleMultipleReplace(event: KeyboardEvent, targetEl: HTMLElement) {
309
311
  let lastValue = collection.find(i => i.ref === targetEl)?.value
310
312
 
311
313
  if (event.key === kbd.END)
312
- lastValue = collection[collection.length - 1].value
314
+ lastValue = collection.at(-1)?.value
313
315
  else if (event.key === kbd.HOME)
314
- lastValue = collection[0].value
316
+ lastValue = collection[0]?.value
315
317
 
316
318
  if (!lastValue || !firstValue.value)
317
319
  return
@@ -21,13 +21,16 @@ const props = withDefaults(defineProps<PinInputInputProps>(), {
21
21
  })
22
22
 
23
23
  const context = injectPinInputRootContext()
24
- const inputElements = computed(() => Array.from(context.inputElements!.value))
24
+ const inputElements = computed(() => [...context.inputElements!.value])
25
25
  const currentValue = computed(() => context.currentModelValue.value[props.index])
26
26
 
27
27
  const disabled = computed(() => props.disabled || context.disabled.value)
28
28
  const isOtpMode = computed(() => context.otp.value)
29
29
  const isPasswordMode = computed(() => context.mask.value)
30
30
 
31
+ const NUMBER_REG = /^\d*$/
32
+ const NON_NUMBER_REG = /\D/g
33
+
31
34
  const { primitiveElement, currentElement } = usePrimitiveElement()
32
35
  function handleInput(event: InputEvent) {
33
36
  const target = event.target as HTMLInputElement
@@ -37,8 +40,8 @@ function handleInput(event: InputEvent) {
37
40
  return
38
41
  }
39
42
 
40
- if (context.isNumericMode.value && !/^\d*$/.test(target.value)) {
41
- target.value = target.value.replace(/\D/g, '')
43
+ if (context.isNumericMode.value && !NUMBER_REG.test(target.value)) {
44
+ target.value = target.value.replace(NON_NUMBER_REG, '')
42
45
  return
43
46
  }
44
47
 
@@ -127,7 +130,10 @@ function handlePaste(event: ClipboardEvent) {
127
130
  if (!clipboardData)
128
131
  return
129
132
 
130
- const values = clipboardData.getData('text')
133
+ const rawValues = clipboardData.getData('text')
134
+ const values = context.isNumericMode.value
135
+ ? rawValues.replace(NON_NUMBER_REG, '')
136
+ : rawValues
131
137
  handleMultipleCharacter(values)
132
138
  }
133
139
 
@@ -138,10 +144,15 @@ function handleMultipleCharacter(values: string) {
138
144
  for (let i = initialIndex; i < lastIndex; i++) {
139
145
  const input = inputElements.value[i]
140
146
  const value = values[i - initialIndex]
141
- if (context.isNumericMode.value && !/^\d*$/.test(value))
142
- continue
143
-
144
- tempModelValue[i] = value
147
+ if (context.isNumericMode.value) {
148
+ const num = Number.parseInt(value)
149
+ if (Number.isNaN(num))
150
+ continue
151
+ tempModelValue[i] = num
152
+ }
153
+ else {
154
+ tempModelValue[i] = value
155
+ }
145
156
  input.focus()
146
157
  }
147
158
  context.modelValue.value = tempModelValue
@@ -19,6 +19,7 @@ export {
19
19
  export {
20
20
  injectSelectItemContext,
21
21
  default as SelectItem,
22
+ type SelectItemEmits,
22
23
  type SelectItemProps,
23
24
  type SelectEvent as SelectItemSelectEvent,
24
25
  } from './SelectItem.vue'
@@ -24,13 +24,22 @@ const props = withDefaults(defineProps<TagsInputInputProps>(), {
24
24
  const context = injectTagsInputRootContext()
25
25
  const { forwardRef, currentElement } = useForwardExpose()
26
26
 
27
- function handleBlur(event: Event) {
27
+ function handleBlur(event: FocusEvent) {
28
28
  context.selectedElement.value = undefined
29
29
 
30
30
  if (!context.addOnBlur.value)
31
31
  return
32
32
 
33
33
  const target = event.target as HTMLInputElement
34
+
35
+ // If the blur is caused by clicking an option within the content,
36
+ // we don't trigger the `addOnBlur` action,
37
+ // because the clicked option should be added instead of the input's current value.
38
+ const relatedTarget = event.relatedTarget as HTMLElement | null
39
+ const controlledId = target.getAttribute('aria-controls')
40
+ if (controlledId && relatedTarget?.closest(`#${CSS.escape(controlledId)}`))
41
+ return
42
+
34
43
  if (!target.value)
35
44
  return
36
45
 
@@ -85,7 +85,7 @@ onMounted(() => {
85
85
  const target = event.target as HTMLElement
86
86
  if (target?.contains(rootContext.trigger.value!))
87
87
  rootContext.onClose()
88
- })
88
+ }, { capture: true })
89
89
  // Close this tooltip if another one opens
90
90
  useEventListener(window, TOOLTIP_OPEN, rootContext.onClose)
91
91
  })
@@ -7,6 +7,17 @@ interface PropOptions {
7
7
  default?: any
8
8
  }
9
9
 
10
+ /**
11
+ * Vue coerces optional boolean props (e.g. `foo?: boolean`) to non-optional (`foo: boolean`)
12
+ * in the `defineProps` return type. Since `useForwardProps` only returns props that were
13
+ * explicitly assigned, boolean-typed props should remain optional in the return type.
14
+ */
15
+ type WithOptionalBooleans<T> = {
16
+ [K in keyof T as [T[K]] extends [boolean] ? K : never]?: T[K]
17
+ } & {
18
+ [K in keyof T as [T[K]] extends [boolean] ? never : K]: T[K]
19
+ }
20
+
10
21
  /**
11
22
  * The `useForwardProps` function in TypeScript takes in a set of props and returns a computed value
12
23
  * that combines default props with assigned props from the current instance.
@@ -36,8 +47,8 @@ export function useForwardProps<T extends Record<string, any>>(props: MaybeRefOr
36
47
  // Only return value from the props parameter
37
48
  return Object.keys({ ...defaultProps, ...preservedProps }).reduce((prev, curr) => {
38
49
  if (refProps.value[curr] !== undefined)
39
- prev[curr as keyof T] = refProps.value[curr]
50
+ (prev as Record<string, any>)[curr] = refProps.value[curr]
40
51
  return prev
41
- }, {} as T)
52
+ }, {} as WithOptionalBooleans<T>)
42
53
  })
43
54
  }
@@ -21,7 +21,9 @@ export function useGraceArea(triggerElement: Ref<HTMLElement | undefined>, conta
21
21
  isPointerInTransit.value = false
22
22
  }
23
23
 
24
- function handleCreateGraceArea(event: PointerEvent, hoverTarget: HTMLElement) {
24
+ function handleCreateGraceArea(event: PointerEvent, hoverTarget: HTMLElement | undefined) {
25
+ if (!hoverTarget)
26
+ return
25
27
  const currentTarget = event.currentTarget as HTMLElement
26
28
  const exitPoint = { x: event.clientX, y: event.clientY }
27
29
  const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect())
@@ -34,8 +36,8 @@ export function useGraceArea(triggerElement: Ref<HTMLElement | undefined>, conta
34
36
 
35
37
  watchEffect((cleanupFn) => {
36
38
  if (triggerElement.value && containerElement.value) {
37
- const handleTriggerLeave = (event: PointerEvent) => handleCreateGraceArea(event, containerElement.value!)
38
- const handleContentLeave = (event: PointerEvent) => handleCreateGraceArea(event, triggerElement.value!)
39
+ const handleTriggerLeave = (event: PointerEvent) => handleCreateGraceArea(event, containerElement.value)
40
+ const handleContentLeave = (event: PointerEvent) => handleCreateGraceArea(event, triggerElement.value)
39
41
 
40
42
  triggerElement.value.addEventListener('pointerleave', handleTriggerLeave)
41
43
  containerElement.value.addEventListener('pointerleave', handleContentLeave)