reka-ui 2.6.1 → 2.6.2
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/Calendar/useCalendar.cjs.map +1 -1
- package/dist/Calendar/useCalendar.js.map +1 -1
- package/dist/Combobox/ComboboxCancel.cjs +1 -1
- package/dist/Combobox/ComboboxCancel.cjs.map +1 -1
- package/dist/Combobox/ComboboxCancel.js +1 -1
- package/dist/Combobox/ComboboxCancel.js.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.cjs +3 -1
- package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.js +3 -1
- package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
- package/dist/Combobox/ComboboxVirtualizer.cjs +1 -1
- package/dist/Combobox/ComboboxVirtualizer.js +1 -1
- package/dist/DatePicker/DatePickerRoot.cjs +0 -8
- package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
- package/dist/DatePicker/DatePickerRoot.js +0 -8
- package/dist/DatePicker/DatePickerRoot.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.cjs +0 -8
- package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.js +0 -8
- package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
- package/dist/DismissableLayer/DismissableLayer.cjs +4 -3
- package/dist/DismissableLayer/DismissableLayer.cjs.map +1 -1
- package/dist/DismissableLayer/DismissableLayer.js +4 -3
- package/dist/DismissableLayer/DismissableLayer.js.map +1 -1
- package/dist/Listbox/ListboxVirtualizer.cjs +3 -2
- package/dist/Listbox/ListboxVirtualizer.cjs.map +1 -1
- package/dist/Listbox/ListboxVirtualizer.js +3 -2
- package/dist/Listbox/ListboxVirtualizer.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +2 -2
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js +2 -2
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.cjs +10 -8
- package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.js +10 -8
- package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
- package/dist/Select/SelectArrow.cjs +1 -3
- package/dist/Select/SelectArrow.cjs.map +1 -1
- package/dist/Select/SelectArrow.js +1 -3
- package/dist/Select/SelectArrow.js.map +1 -1
- package/dist/Select/SelectContent.cjs +4 -0
- package/dist/Select/SelectContent.cjs.map +1 -1
- package/dist/Select/SelectContent.js +4 -0
- package/dist/Select/SelectContent.js.map +1 -1
- package/dist/Select/SelectContentImpl.cjs +7 -2
- package/dist/Select/SelectContentImpl.cjs.map +1 -1
- package/dist/Select/SelectContentImpl.js +7 -2
- package/dist/Select/SelectContentImpl.js.map +1 -1
- package/dist/Select/SelectItem.cjs.map +1 -1
- package/dist/Select/SelectItem.js.map +1 -1
- package/dist/Splitter/SplitterGroup.cjs.map +1 -1
- package/dist/Splitter/SplitterGroup.js.map +1 -1
- package/dist/Tabs/TabsIndicator.cjs +18 -12
- package/dist/Tabs/TabsIndicator.cjs.map +1 -1
- package/dist/Tabs/TabsIndicator.js +19 -13
- package/dist/Tabs/TabsIndicator.js.map +1 -1
- package/dist/Tooltip/TooltipContentImpl.cjs +2 -13
- package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
- package/dist/Tooltip/TooltipContentImpl.js +3 -14
- package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
- package/dist/Tree/TreeVirtualizer.cjs +3 -2
- package/dist/Tree/TreeVirtualizer.cjs.map +1 -1
- package/dist/Tree/TreeVirtualizer.js +3 -2
- package/dist/Tree/TreeVirtualizer.js.map +1 -1
- package/dist/index.d.cts +799 -797
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +788 -786
- package/dist/index.d.ts.map +1 -1
- package/dist/index2.d.cts.map +1 -1
- package/dist/shared/useForwardExpose.cjs +10 -1
- package/dist/shared/useForwardExpose.cjs.map +1 -1
- package/dist/shared/useForwardExpose.js +10 -1
- package/dist/shared/useForwardExpose.js.map +1 -1
- package/dist/shared/useGraceArea.cjs +3 -0
- package/dist/shared/useGraceArea.cjs.map +1 -1
- package/dist/shared/useGraceArea.js +4 -1
- package/dist/shared/useGraceArea.js.map +1 -1
- package/package.json +3 -3
- package/src/Calendar/useCalendar.ts +3 -3
- package/src/Combobox/ComboboxCancel.vue +4 -3
- package/src/Combobox/ComboboxContentImpl.vue +3 -2
- package/src/DatePicker/DatePickerRoot.vue +1 -1
- package/src/DateRangePicker/DateRangePickerRoot.vue +1 -1
- package/src/DismissableLayer/DismissableLayer.vue +5 -4
- package/src/Listbox/ListboxVirtualizer.vue +5 -2
- package/src/NavigationMenu/NavigationMenuContentImpl.vue +1 -1
- package/src/Presence/usePresence.ts +1 -1
- package/src/Primitive/Primitive.ts +19 -19
- package/src/RangeCalendar/RangeCalendarCellTrigger.vue +1 -1
- package/src/RangeCalendar/RangeCalendarRoot.vue +10 -27
- package/src/ScrollArea/ScrollAreaScrollbarVisible.vue +1 -1
- package/src/Select/SelectArrow.vue +1 -3
- package/src/Select/SelectContentImpl.vue +6 -5
- package/src/Select/SelectItem.vue +1 -1
- package/src/Splitter/SplitterGroup.vue +7 -7
- package/src/Splitter/SplitterPanel.vue +1 -1
- package/src/Splitter/utils/registry.ts +1 -1
- package/src/Tabs/TabsIndicator.vue +18 -12
- package/src/Tooltip/TooltipContentImpl.vue +3 -20
- package/src/Tooltip/TooltipTrigger.vue +4 -4
- package/src/Tree/TreeVirtualizer.vue +5 -2
- package/src/shared/useForwardExpose.ts +17 -1
- package/src/shared/useGraceArea.ts +8 -2
- package/src/shared/useId.ts +1 -1
- package/src/shared/useStateMachine.ts +1 -1
- package/src/shared/withDefault.ts +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { PrimitiveProps } from '@/Primitive'
|
|
3
|
-
import {
|
|
3
|
+
import { computed, ref, watch, watchPostEffect } from 'vue'
|
|
4
4
|
import { useForwardExpose } from '@/shared'
|
|
5
5
|
import { injectTabsRootContext } from './TabsRoot.vue'
|
|
6
6
|
|
|
@@ -13,41 +13,47 @@ import { Primitive } from '@/Primitive'
|
|
|
13
13
|
|
|
14
14
|
const props = defineProps<TabsIndicatorProps>()
|
|
15
15
|
const context = injectTabsRootContext()
|
|
16
|
+
defineExpose({
|
|
17
|
+
updateIndicatorStyle,
|
|
18
|
+
})
|
|
16
19
|
useForwardExpose()
|
|
17
20
|
|
|
18
21
|
interface IndicatorStyle {
|
|
19
22
|
size: number | null
|
|
20
23
|
position: number | null
|
|
21
24
|
}
|
|
22
|
-
const activeTab = ref<HTMLElement | null>()
|
|
23
25
|
const indicatorStyle = ref<IndicatorStyle>({
|
|
24
26
|
size: null,
|
|
25
27
|
position: null,
|
|
26
28
|
})
|
|
29
|
+
const tabs = ref<Array<HTMLElement>>([])
|
|
27
30
|
|
|
28
|
-
watch(() => [context.modelValue.value, context?.dir.value],
|
|
29
|
-
await nextTick()
|
|
31
|
+
watch(() => [context.modelValue.value, context?.dir.value], () => {
|
|
30
32
|
updateIndicatorStyle()
|
|
31
|
-
}, { immediate: true })
|
|
33
|
+
}, { immediate: true, flush: 'post' })
|
|
34
|
+
|
|
35
|
+
watchPostEffect(() => {
|
|
36
|
+
tabs.value = Array.from(context.tabsList.value?.querySelectorAll<HTMLElement>('[role="tab"]') || [])
|
|
37
|
+
})
|
|
32
38
|
|
|
33
|
-
useResizeObserver([context.tabsList,
|
|
39
|
+
useResizeObserver(computed(() => [context.tabsList.value, ...tabs.value]), updateIndicatorStyle)
|
|
34
40
|
|
|
35
41
|
function updateIndicatorStyle() {
|
|
36
|
-
activeTab
|
|
42
|
+
const activeTab = context.tabsList.value?.querySelector<HTMLButtonElement>('[role="tab"][data-state="active"]')
|
|
37
43
|
|
|
38
|
-
if (!activeTab
|
|
44
|
+
if (!activeTab)
|
|
39
45
|
return
|
|
40
46
|
|
|
41
47
|
if (context.orientation.value === 'horizontal') {
|
|
42
48
|
indicatorStyle.value = {
|
|
43
|
-
size: activeTab.
|
|
44
|
-
position: activeTab.
|
|
49
|
+
size: activeTab.offsetWidth,
|
|
50
|
+
position: activeTab.offsetLeft,
|
|
45
51
|
}
|
|
46
52
|
}
|
|
47
53
|
else {
|
|
48
54
|
indicatorStyle.value = {
|
|
49
|
-
size: activeTab.
|
|
50
|
-
position: activeTab.
|
|
55
|
+
size: activeTab.offsetHeight,
|
|
56
|
+
position: activeTab.offsetTop,
|
|
51
57
|
}
|
|
52
58
|
}
|
|
53
59
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import type { VNode } from 'vue'
|
|
3
2
|
import type { PopperContentProps } from '@/Popper'
|
|
4
3
|
import type { PrimitiveProps } from '@/Primitive'
|
|
5
4
|
import { useForwardExpose } from '@/shared'
|
|
@@ -42,7 +41,7 @@ export interface TooltipContentImplProps
|
|
|
42
41
|
|
|
43
42
|
<script setup lang="ts">
|
|
44
43
|
import { useEventListener } from '@vueuse/core'
|
|
45
|
-
import {
|
|
44
|
+
import { computed, onMounted } from 'vue'
|
|
46
45
|
import { DismissableLayer } from '@/DismissableLayer'
|
|
47
46
|
import { PopperContent } from '@/Popper'
|
|
48
47
|
import { VisuallyHidden } from '@/VisuallyHidden'
|
|
@@ -64,24 +63,8 @@ const emits = defineEmits<TooltipContentImplEmits>()
|
|
|
64
63
|
|
|
65
64
|
const rootContext = injectTooltipRootContext()
|
|
66
65
|
|
|
67
|
-
const { forwardRef } = useForwardExpose()
|
|
68
|
-
const
|
|
69
|
-
const defaultSlot = computed(() => slot.default?.({}))
|
|
70
|
-
const ariaLabel = computed(() => {
|
|
71
|
-
if (props.ariaLabel)
|
|
72
|
-
return props.ariaLabel
|
|
73
|
-
let content = ''
|
|
74
|
-
|
|
75
|
-
function recursiveTextSearch(node: VNode) {
|
|
76
|
-
if (typeof node.children === 'string' && node.type !== Comment)
|
|
77
|
-
content += node.children
|
|
78
|
-
else if (Array.isArray(node.children))
|
|
79
|
-
node.children.forEach(child => recursiveTextSearch(child as VNode))
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
defaultSlot.value?.forEach((node: VNode) => recursiveTextSearch(node))
|
|
83
|
-
return content
|
|
84
|
-
})
|
|
66
|
+
const { forwardRef, currentElement } = useForwardExpose()
|
|
67
|
+
const ariaLabel = computed(() => props.ariaLabel || currentElement.value?.textContent)
|
|
85
68
|
|
|
86
69
|
const popperContentProps = computed(() => {
|
|
87
70
|
const { ariaLabel: _, ...restProps } = props
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { useForwardExpose, useId } from '@/shared'
|
|
3
3
|
|
|
4
|
-
export type TooltipTriggerDataState
|
|
5
|
-
| 'closed'
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
export type TooltipTriggerDataState
|
|
5
|
+
= | 'closed'
|
|
6
|
+
| 'delayed-open'
|
|
7
|
+
| 'instant-open'
|
|
8
8
|
|
|
9
9
|
export interface TooltipTriggerProps extends PopperAnchorProps {}
|
|
10
10
|
</script>
|
|
@@ -3,7 +3,7 @@ export interface TreeVirtualizerProps {
|
|
|
3
3
|
/** Number of items rendered outside the visible area */
|
|
4
4
|
overscan?: number
|
|
5
5
|
/** Estimated size (in px) of each item */
|
|
6
|
-
estimateSize?: number
|
|
6
|
+
estimateSize?: number | ((index: number) => number)
|
|
7
7
|
/** Text content for each item to achieve type-ahead feature */
|
|
8
8
|
textContent?: (item: Record<string, any>) => string
|
|
9
9
|
}
|
|
@@ -79,7 +79,10 @@ const virtualizer = useVirtualizer(
|
|
|
79
79
|
getItemKey(index) {
|
|
80
80
|
return index + rootContext.getKey(rootContext.expandedItems.value[index].value)
|
|
81
81
|
},
|
|
82
|
-
estimateSize() {
|
|
82
|
+
estimateSize(index) {
|
|
83
|
+
if (typeof props.estimateSize === 'function')
|
|
84
|
+
return props.estimateSize(index)
|
|
85
|
+
|
|
83
86
|
return props.estimateSize ?? 28
|
|
84
87
|
},
|
|
85
88
|
getScrollElement() { return parentEl.value },
|
|
@@ -59,7 +59,23 @@ export function useForwardExpose<T extends ComponentPublicInstance>() {
|
|
|
59
59
|
get: () => (ref instanceof Element ? ref : ref.$el),
|
|
60
60
|
})
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
// ref not is Element
|
|
63
|
+
// and `useForwardExpose.test.ts > useForwardRef > should forward plain DOM element ref - 2` Passing in `$el`
|
|
64
|
+
if (!(ref instanceof Element) && !Object.hasOwn(ref, '$el')) {
|
|
65
|
+
// Retrieves the `exposed` data that has not been unwrapped by `vue` from `$.exposed`.
|
|
66
|
+
const childExposed = ref.$.exposed
|
|
67
|
+
const merged = Object.assign({}, ret)
|
|
68
|
+
|
|
69
|
+
for (const key in childExposed) {
|
|
70
|
+
Object.defineProperty(merged, key, {
|
|
71
|
+
enumerable: true,
|
|
72
|
+
configurable: true,
|
|
73
|
+
get: () => childExposed[key],
|
|
74
|
+
})
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
instance.exposed = merged
|
|
78
|
+
}
|
|
63
79
|
}
|
|
64
80
|
|
|
65
81
|
return { forwardRef, currentRef, currentElement }
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import type { Ref } from 'vue'
|
|
2
2
|
import type { Side } from '@/Popper/utils'
|
|
3
|
-
import { createEventHook, refAutoReset } from '@vueuse/shared'
|
|
3
|
+
import { createEventHook, refAutoReset, tryOnScopeDispose } from '@vueuse/shared'
|
|
4
4
|
import { ref, watchEffect } from 'vue'
|
|
5
5
|
|
|
6
6
|
export function useGraceArea(triggerElement: Ref<HTMLElement | undefined>, containerElement: Ref<HTMLElement | undefined>) {
|
|
7
7
|
// Reset the inTransit state if idle/scrolled.
|
|
8
8
|
const isPointerInTransit = refAutoReset(false, 300)
|
|
9
|
+
// `refAutoReset` will clear timeout-based resets on scope dispose (e.g., component unmount),
|
|
10
|
+
// thus leaving the state as-is without resetting it.
|
|
11
|
+
// So we need to manually reset it in such cases.
|
|
12
|
+
tryOnScopeDispose(() => {
|
|
13
|
+
isPointerInTransit.value = false
|
|
14
|
+
})
|
|
9
15
|
|
|
10
16
|
const pointerGraceArea = ref<Polygon | null>(null)
|
|
11
17
|
const pointerExit = createEventHook<void>()
|
|
@@ -74,7 +80,7 @@ export function useGraceArea(triggerElement: Ref<HTMLElement | undefined>, conta
|
|
|
74
80
|
}
|
|
75
81
|
|
|
76
82
|
interface Point { x: number, y: number }
|
|
77
|
-
|
|
83
|
+
type Polygon = Point[]
|
|
78
84
|
|
|
79
85
|
function getExitSideFromRect(point: Point, rect: DOMRect): Side {
|
|
80
86
|
const top = Math.abs(rect.top - point.y)
|
package/src/shared/useId.ts
CHANGED
|
@@ -21,7 +21,7 @@ export function useId(deterministicId?: string | null | undefined, prefix = 'rek
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
const configProviderContext = injectConfigProviderContext({ useId: undefined })
|
|
24
|
-
|
|
24
|
+
|
|
25
25
|
if (configProviderContext.useId) {
|
|
26
26
|
return `${prefix}-${configProviderContext.useId()}`
|
|
27
27
|
}
|
|
@@ -9,7 +9,7 @@ type MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>
|
|
|
9
9
|
|
|
10
10
|
// 🤯 https://fettblog.eu/typescript-union-to-intersection/
|
|
11
11
|
type UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (
|
|
12
|
-
x: infer R
|
|
12
|
+
x: infer R,
|
|
13
13
|
) => any
|
|
14
14
|
? R
|
|
15
15
|
: never
|
|
@@ -41,7 +41,7 @@ export function withDefault<
|
|
|
41
41
|
P extends ComponentProps<C> = ComponentProps<C>,
|
|
42
42
|
>(
|
|
43
43
|
originalComponent: T,
|
|
44
|
-
options?: MountingOptions<P
|
|
44
|
+
options?: MountingOptions<P>,
|
|
45
45
|
): T
|
|
46
46
|
|
|
47
47
|
export function withDefault<T extends ComponentOptionsBase<{}, {}, {}, any, any, any, any, any>>(WrappedComponent: T, options?: MountingOptions<any>) {
|