From 35886c67293908ffa0121ba37afd9d0b2e43bfdb Mon Sep 17 00:00:00 2001 From: zernonia <59365435+zernonia@users.noreply.github.com> Date: Tue, 13 Aug 2024 09:49:23 +0800 Subject: [PATCH] fix(NavigationMenu): client-side nav was prevented by RouterLink (#1221) * fix(NavigationMenu): client-side nav was prevented by RouterLink * chore: emit originalEvent --- .../src/NavigationMenu/NavigationMenuItem.vue | 4 ++++ .../src/NavigationMenu/NavigationMenuLink.vue | 20 +++++++++++-------- .../radix-vue/src/NavigationMenu/utils.ts | 1 + 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/packages/radix-vue/src/NavigationMenu/NavigationMenuItem.vue b/packages/radix-vue/src/NavigationMenu/NavigationMenuItem.vue index 9779ec4e3..5dc2f1cea 100644 --- a/packages/radix-vue/src/NavigationMenu/NavigationMenuItem.vue +++ b/packages/radix-vue/src/NavigationMenu/NavigationMenuItem.vue @@ -113,6 +113,10 @@ function handleKeydown(ev: KeyboardEvent) { i.parentElement?.hasAttribute('data-menu-item'), ) + // prevent triggering when the focus is on link + if (!itemsArray.includes(currentFocus)) + return + const newSelectedElement = useArrowNavigation(ev, currentFocus, undefined, { itemsArray, loop: false, diff --git a/packages/radix-vue/src/NavigationMenu/NavigationMenuLink.vue b/packages/radix-vue/src/NavigationMenu/NavigationMenuLink.vue index 7a0217c49..7290c41be 100644 --- a/packages/radix-vue/src/NavigationMenu/NavigationMenuLink.vue +++ b/packages/radix-vue/src/NavigationMenu/NavigationMenuLink.vue @@ -8,7 +8,7 @@ export type NavigationMenuLinkEmits = { * * Calling `event.preventDefault` in this handler will prevent the navigation menu from closing when selecting that link. */ - select: [payload: MouseEvent] + select: [payload: CustomEvent<{ originalEvent: Event }>] } export interface NavigationMenuLinkProps extends PrimitiveProps { /** Used to identify the link as the currently active page. */ @@ -17,11 +17,8 @@ export interface NavigationMenuLinkProps extends PrimitiveProps {