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.
- package/dist/Autocomplete/AutocompleteInput.cjs +25 -8
- package/dist/Autocomplete/AutocompleteInput.cjs.map +1 -1
- package/dist/Autocomplete/AutocompleteInput.js +26 -9
- package/dist/Autocomplete/AutocompleteInput.js.map +1 -1
- package/dist/ColorArea/ColorAreaRoot.cjs +0 -1
- package/dist/ColorArea/ColorAreaRoot.cjs.map +1 -1
- package/dist/ColorArea/ColorAreaRoot.js +0 -1
- package/dist/ColorArea/ColorAreaRoot.js.map +1 -1
- package/dist/ColorField/ColorFieldRoot.cjs +0 -1
- package/dist/ColorField/ColorFieldRoot.cjs.map +1 -1
- package/dist/ColorField/ColorFieldRoot.js +0 -1
- package/dist/ColorField/ColorFieldRoot.js.map +1 -1
- package/dist/Combobox/ComboboxItem.cjs +1 -1
- package/dist/Combobox/ComboboxItem.cjs.map +1 -1
- package/dist/Combobox/ComboboxItem.js +1 -1
- package/dist/Combobox/ComboboxItem.js.map +1 -1
- package/dist/FocusScope/FocusScope.cjs +5 -1
- package/dist/FocusScope/FocusScope.cjs.map +1 -1
- package/dist/FocusScope/FocusScope.js +5 -1
- package/dist/FocusScope/FocusScope.js.map +1 -1
- package/dist/HoverCard/HoverCardContentImpl.cjs +5 -0
- package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
- package/dist/HoverCard/HoverCardContentImpl.js +5 -0
- package/dist/HoverCard/HoverCardContentImpl.js.map +1 -1
- package/dist/Listbox/ListboxItem.cjs +1 -1
- package/dist/Listbox/ListboxItem.cjs.map +1 -1
- package/dist/Listbox/ListboxItem.js +1 -1
- package/dist/Listbox/ListboxItem.js.map +1 -1
- package/dist/Listbox/ListboxRoot.cjs +6 -5
- package/dist/Listbox/ListboxRoot.cjs.map +1 -1
- package/dist/Listbox/ListboxRoot.js +6 -5
- package/dist/Listbox/ListboxRoot.js.map +1 -1
- package/dist/PinInput/PinInputInput.cjs +12 -6
- package/dist/PinInput/PinInputInput.cjs.map +1 -1
- package/dist/PinInput/PinInputInput.js +12 -6
- package/dist/PinInput/PinInputInput.js.map +1 -1
- package/dist/TagsInput/TagsInputInput.cjs +3 -0
- package/dist/TagsInput/TagsInputInput.cjs.map +1 -1
- package/dist/TagsInput/TagsInputInput.js +3 -0
- package/dist/TagsInput/TagsInputInput.js.map +1 -1
- package/dist/Tooltip/TooltipContentImpl.cjs +1 -1
- package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
- package/dist/Tooltip/TooltipContentImpl.js +1 -1
- package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
- package/dist/constant.d.cts.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index2.d.ts.map +1 -1
- package/dist/index3.d.cts +1029 -1023
- package/dist/index3.d.cts.map +1 -1
- package/dist/index3.d.ts +1027 -1021
- package/dist/index3.d.ts.map +1 -1
- package/dist/internal.d.cts +2 -0
- package/dist/internal.d.ts +4 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/shared/useForwardProps.cjs.map +1 -1
- package/dist/shared/useForwardProps.js.map +1 -1
- package/dist/shared/useGraceArea.cjs +1 -0
- package/dist/shared/useGraceArea.cjs.map +1 -1
- package/dist/shared/useGraceArea.js +1 -0
- package/dist/shared/useGraceArea.js.map +1 -1
- package/package.json +3 -3
- package/src/Autocomplete/AutocompleteInput.vue +30 -8
- package/src/ColorArea/ColorAreaRoot.vue +0 -4
- package/src/ColorField/ColorFieldRoot.vue +0 -4
- package/src/Combobox/ComboboxItem.vue +3 -0
- package/src/FocusScope/FocusScope.vue +15 -1
- package/src/HoverCard/HoverCardContentImpl.vue +7 -0
- package/src/Listbox/ListboxItem.vue +2 -2
- package/src/Listbox/ListboxRoot.vue +8 -6
- package/src/PinInput/PinInputInput.vue +19 -8
- package/src/Select/index.ts +1 -0
- package/src/TagsInput/TagsInputInput.vue +10 -1
- package/src/Tooltip/TooltipContentImpl.vue +1 -1
- package/src/shared/useForwardProps.ts +13 -2
- package/src/shared/useGraceArea.ts +5 -3
package/dist/internal.d.cts
CHANGED
|
@@ -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
|
package/dist/internal.d.ts
CHANGED
|
@@ -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
|
|
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:
|
|
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
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -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,
|
|
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":";;;;;;;;;;;
|
|
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":";;;;;;;;;;
|
|
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":";;;;;AAKA,SAAgB,aAAaA,gBAA8CC,kBAAgD;CAEzH,MAAM,qBAAqB,kCAAa,OAAO,IAAI;AAInD,wCAAkB,MAAM;AACtB,qBAAmB,QAAQ;CAC5B,EAAC;CAEF,MAAM,mBAAmB,aAAoB,KAAK;CAClD,MAAM,cAAc,sCAAuB;CAE3C,SAAS,wBAAwB;AAC/B,mBAAiB,QAAQ;AACzB,qBAAmB,QAAQ;CAC5B;CAED,SAAS,sBAAsBC,OAAqBC,
|
|
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,
|
|
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.
|
|
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.
|
|
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": "^
|
|
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
|
-
|
|
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
|
|
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 (
|
|
51
|
-
rootContext.filterSearch.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 =
|
|
71
|
+
rootContext.filterSearch.value = value
|
|
58
72
|
}
|
|
59
73
|
// Autocomplete-specific: update root's modelValue with the typed text
|
|
60
|
-
autocompleteContext.modelValue.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,
|
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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
|
|
314
|
+
lastValue = collection.at(-1)?.value
|
|
313
315
|
else if (event.key === kbd.HOME)
|
|
314
|
-
lastValue = collection[0]
|
|
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(() =>
|
|
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 &&
|
|
41
|
-
target.value = target.value.replace(
|
|
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
|
|
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
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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
|
package/src/Select/index.ts
CHANGED
|
@@ -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:
|
|
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
|
|
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)
|