From 54fbbd7e112f19c9600233eddfcf21ea3d25f05e Mon Sep 17 00:00:00 2001 From: zernonia <59365435+zernonia@users.noreply.github.com> Date: Tue, 3 Sep 2024 22:19:59 +0800 Subject: [PATCH 01/23] fix(Dialog): aria-description undefined still throwing warning (#1265) * fix(Dialog): aria-description undefined still throwing warning * fix: wrong condition * docs: update reference --- docs/content/components/dialog.md | 2 +- packages/radix-vue/src/Dialog/DialogContentImpl.vue | 2 +- packages/radix-vue/src/Dialog/utils.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/content/components/dialog.md b/docs/content/components/dialog.md index ea4179b5b..6f6de19f6 100644 --- a/docs/content/components/dialog.md +++ b/docs/content/components/dialog.md @@ -142,7 +142,7 @@ If you want to hide the title, wrap it inside our Visually Hidden utility like t An optional accessible description to be announced when the dialog is opened. -If you want to hide the description, wrap it inside our Visually Hidden utility like this ``. If you want to remove the description entirely, remove this part and pass `aria-describedby="undefined"` to `DialogContent`. +If you want to hide the description, wrap it inside our Visually Hidden utility like this ``. If you want to remove the description entirely, remove this part and pass `:aria-describedby="undefined"` to `DialogContent`. diff --git a/packages/radix-vue/src/Dialog/DialogContentImpl.vue b/packages/radix-vue/src/Dialog/DialogContentImpl.vue index 4f53abc3d..09050eed7 100644 --- a/packages/radix-vue/src/Dialog/DialogContentImpl.vue +++ b/packages/radix-vue/src/Dialog/DialogContentImpl.vue @@ -65,7 +65,7 @@ if (process.env.NODE_ENV !== 'production') { componentLink: 'dialog.html#title', titleId: rootContext.titleId, descriptionId: rootContext.descriptionId, - contentElement: rootContext.contentElement, + contentElement, }) } diff --git a/packages/radix-vue/src/Dialog/utils.ts b/packages/radix-vue/src/Dialog/utils.ts index b64eb98b1..4a6f3ea13 100644 --- a/packages/radix-vue/src/Dialog/utils.ts +++ b/packages/radix-vue/src/Dialog/utils.ts @@ -35,7 +35,7 @@ For more information, see https://www.radix-vue.com/components/${componentLink}` const describedById = contentElement.value?.getAttribute('aria-describedby') // if we have an id and the user hasn't set aria-describedby="undefined" - if (descriptionId && !describedById) { + if (descriptionId && describedById) { const hasDescription = document.getElementById(descriptionId) if (!hasDescription) console.warn(DESCRIPTION_MESSAGE) From 0cf2c062da678907914fbcce1c3e363bdda1ff4a Mon Sep 17 00:00:00 2001 From: "L." Date: Tue, 3 Sep 2024 16:41:51 +0200 Subject: [PATCH 02/23] fix(DismissableLayer): branch could be null (#1256) * fix(Toast): check if window exists to run startTimer in CSR only * use isClient to to test if it's CSR * fix(DismissableLayer): branch could be null --- packages/radix-vue/src/DismissableLayer/DismissableLayer.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/radix-vue/src/DismissableLayer/DismissableLayer.vue b/packages/radix-vue/src/DismissableLayer/DismissableLayer.vue index 27f4215d3..823b04ab8 100644 --- a/packages/radix-vue/src/DismissableLayer/DismissableLayer.vue +++ b/packages/radix-vue/src/DismissableLayer/DismissableLayer.vue @@ -103,7 +103,7 @@ const isPointerEventsEnabled = computed(() => { const pointerDownOutside = usePointerDownOutside(async (event) => { const isPointerDownOnBranch = [...context.branches].some(branch => - branch.contains(event.target as HTMLElement), + branch?.contains(event.target as HTMLElement), ) if (!isPointerEventsEnabled.value || isPointerDownOnBranch) @@ -117,7 +117,7 @@ const pointerDownOutside = usePointerDownOutside(async (event) => { const focusOutside = useFocusOutside((event) => { const isFocusInBranch = [...context.branches].some(branch => - branch.contains(event.target as HTMLElement), + branch?.contains(event.target as HTMLElement), ) if (isFocusInBranch) From b5c16d2b994789f5e265cfb13d08742ea4500564 Mon Sep 17 00:00:00 2001 From: zernonia <59365435+zernonia@users.noreply.github.com> Date: Wed, 4 Sep 2024 13:26:31 +0800 Subject: [PATCH 03/23] fix(RovingFocus): wrong focus on group instead of item (#1268) --- packages/radix-vue/src/RovingFocus/RovingFocusGroup.vue | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/radix-vue/src/RovingFocus/RovingFocusGroup.vue b/packages/radix-vue/src/RovingFocus/RovingFocusGroup.vue index 38bfebfb9..5dcfaf74d 100644 --- a/packages/radix-vue/src/RovingFocus/RovingFocusGroup.vue +++ b/packages/radix-vue/src/RovingFocus/RovingFocusGroup.vue @@ -102,10 +102,16 @@ function handleFocus(event: FocusEvent) { focusFirst(candidateItems, props.preventScrollOnEntryFocus) } } - isClickFocus.value = false } +function handleMouseUp() { + // reset `isClickFocus` after 1 tick because handleFocus might not triggered due to focused element + setTimeout(() => { + isClickFocus.value = false + }, 1) +} + defineExpose({ getItems, }) @@ -140,6 +146,7 @@ provideRovingFocusGroupContext({ :dir="dir" style="outline: none" @mousedown="isClickFocus = true" + @mouseup="handleMouseUp" @focus="handleFocus" @blur="isTabbingBackOut = false" > From 6dbf5805da20f585536fc8534a06a25956002dfa Mon Sep 17 00:00:00 2001 From: Dominique BILLET Date: Fri, 6 Sep 2024 08:59:18 +0200 Subject: [PATCH 04/23] feat: expose virtualizer and virtualized items via slot (#1271) * Update ListboxVirtualizer.vue Expose virtualizer and virtualized item on default slot * Update TreeVirtualizer.vue Expose virtualizer and virtualized item on default slot * fix: lint & generic types --- packages/radix-vue/src/Listbox/ListboxVirtualizer.vue | 6 +++++- packages/radix-vue/src/Tree/TreeVirtualizer.vue | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/radix-vue/src/Listbox/ListboxVirtualizer.vue b/packages/radix-vue/src/Listbox/ListboxVirtualizer.vue index a454b7b23..798a5ef1d 100644 --- a/packages/radix-vue/src/Listbox/ListboxVirtualizer.vue +++ b/packages/radix-vue/src/Listbox/ListboxVirtualizer.vue @@ -10,7 +10,7 @@ export interface ListboxVirtualizerProps