fix: Fixed issue about note UUID not being selectable in menu

This commit is contained in:
Aman Harwara
2022-12-07 18:01:07 +05:30
parent 45cdab6f6c
commit 5a0c005e8c
2 changed files with 13 additions and 14 deletions

View File

@@ -1,4 +1,4 @@
import { CSSProperties, forwardRef, KeyboardEventHandler, ReactNode, Ref, useCallback, useEffect, useRef } from 'react' import { CSSProperties, forwardRef, KeyboardEventHandler, ReactNode, Ref, useCallback, useRef } from 'react'
import { KeyboardKey } from '@standardnotes/ui-services' import { KeyboardKey } from '@standardnotes/ui-services'
import { useListKeyboardNavigation } from '@/Hooks/useListKeyboardNavigation' import { useListKeyboardNavigation } from '@/Hooks/useListKeyboardNavigation'
import { mergeRefs } from '@/Hooks/mergeRefs' import { mergeRefs } from '@/Hooks/mergeRefs'
@@ -23,7 +23,6 @@ const Menu = forwardRef(
style, style,
a11yLabel, a11yLabel,
closeMenu, closeMenu,
isOpen,
initialFocus, initialFocus,
onKeyDown, onKeyDown,
shouldAutoFocus = true, shouldAutoFocus = true,
@@ -44,15 +43,7 @@ const Menu = forwardRef(
[closeMenu, onKeyDown], [closeMenu, onKeyDown],
) )
useListKeyboardNavigation(menuElementRef, initialFocus) useListKeyboardNavigation(menuElementRef, initialFocus, shouldAutoFocus)
useEffect(() => {
if (isOpen && shouldAutoFocus) {
setTimeout(() => {
menuElementRef.current?.focus()
}, 5)
}
}, [isOpen, shouldAutoFocus])
return ( return (
<menu <menu

View File

@@ -2,7 +2,11 @@ import { KeyboardKey } from '@standardnotes/ui-services'
import { FOCUSABLE_BUT_NOT_TABBABLE } from '@/Constants/Constants' import { FOCUSABLE_BUT_NOT_TABBABLE } from '@/Constants/Constants'
import { useCallback, useEffect, RefObject, useRef } from 'react' import { useCallback, useEffect, RefObject, useRef } from 'react'
export const useListKeyboardNavigation = (container: RefObject<HTMLElement | null>, initialFocus = 0) => { export const useListKeyboardNavigation = (
container: RefObject<HTMLElement | null>,
initialFocus = 0,
shouldAutoFocus = false,
) => {
const listItems = useRef<HTMLButtonElement[]>([]) const listItems = useRef<HTMLButtonElement[]>([])
const focusedItemIndex = useRef<number>(initialFocus) const focusedItemIndex = useRef<number>(initialFocus)
@@ -69,13 +73,17 @@ export const useListKeyboardNavigation = (container: RefObject<HTMLElement | nul
}, FIRST_ITEM_FOCUS_TIMEOUT) }, FIRST_ITEM_FOCUS_TIMEOUT)
}, [container, focusItemWithIndex, initialFocus]) }, [container, focusItemWithIndex, initialFocus])
useEffect(() => {
if (shouldAutoFocus) {
containerFocusHandler()
}
}, [containerFocusHandler, shouldAutoFocus])
useEffect(() => { useEffect(() => {
const containerElement = container.current const containerElement = container.current
containerElement?.addEventListener('focus', containerFocusHandler)
containerElement?.addEventListener('keydown', keyDownHandler) containerElement?.addEventListener('keydown', keyDownHandler)
return () => { return () => {
containerElement?.removeEventListener('focus', containerFocusHandler)
containerElement?.removeEventListener('keydown', keyDownHandler) containerElement?.removeEventListener('keydown', keyDownHandler)
} }
}, [container, containerFocusHandler, keyDownHandler]) }, [container, containerFocusHandler, keyDownHandler])