Skip to content

Commit fedfc0c

Browse files
committed
ensure to prevent the default behaviour of keyboard navigation
1 parent 93e8b8f commit fedfc0c

File tree

2 files changed

+12
-0
lines changed
  • packages
    • @headlessui-react/src/components/menu
    • @headlessui-vue/src/components/menu

2 files changed

+12
-0
lines changed

packages/@headlessui-react/src/components/menu/menu.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,7 @@ const Items = forwardRefWithAs(function Items<
398398
// Ref: https://www.w3.org/TR/wai-aria-practices-1.2/#keyboard-interaction-12
399399

400400
case Key.Enter:
401+
event.preventDefault()
401402
dispatch({ type: ActionTypes.CloseMenu })
402403
if (state.activeItemIndex !== null) {
403404
const { id } = state.items[state.activeItemIndex]
@@ -407,20 +408,25 @@ const Items = forwardRefWithAs(function Items<
407408
break
408409

409410
case Key.ArrowDown:
411+
event.preventDefault()
410412
return dispatch({ type: ActionTypes.GoToItem, focus: Focus.NextItem })
411413

412414
case Key.ArrowUp:
415+
event.preventDefault()
413416
return dispatch({ type: ActionTypes.GoToItem, focus: Focus.PreviousItem })
414417

415418
case Key.Home:
416419
case Key.PageUp:
420+
event.preventDefault()
417421
return dispatch({ type: ActionTypes.GoToItem, focus: Focus.FirstItem })
418422

419423
case Key.End:
420424
case Key.PageDown:
425+
event.preventDefault()
421426
return dispatch({ type: ActionTypes.GoToItem, focus: Focus.LastItem })
422427

423428
case Key.Escape:
429+
event.preventDefault()
424430
dispatch({ type: ActionTypes.CloseMenu })
425431
d.nextFrame(() => state.buttonRef.current?.focus())
426432
break

packages/@headlessui-vue/src/components/menu/menu.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,7 @@ export const MenuItems = defineComponent({
336336
// Ref: https://www.w3.org/TR/wai-aria-practices-1.2/#keyboard-interaction-12
337337

338338
case Key.Enter:
339+
event.preventDefault()
339340
api.closeMenu()
340341
if (api.activeItemIndex.value !== null) {
341342
const { id } = api.items.value[api.activeItemIndex.value]
@@ -345,20 +346,25 @@ export const MenuItems = defineComponent({
345346
break
346347

347348
case Key.ArrowDown:
349+
event.preventDefault()
348350
return api.goToItem(Focus.NextItem)
349351

350352
case Key.ArrowUp:
353+
event.preventDefault()
351354
return api.goToItem(Focus.PreviousItem)
352355

353356
case Key.Home:
354357
case Key.PageUp:
358+
event.preventDefault()
355359
return api.goToItem(Focus.FirstItem)
356360

357361
case Key.End:
358362
case Key.PageDown:
363+
event.preventDefault()
359364
return api.goToItem(Focus.LastItem)
360365

361366
case Key.Escape:
367+
event.preventDefault()
362368
api.closeMenu()
363369
nextTick(() => api.buttonRef.value?.focus())
364370
break

0 commit comments

Comments
 (0)