import { forwardRef, useEffect, useImperativeHandle, useState } from 'react'; import { useTranslation } from 'react-i18next'; export default forwardRef((props, ref) => { const { t } = useTranslation(['auth', 'core', 'group']); const [selectedIndex, setSelectedIndex] = useState(0); const selectItem = (index) => { const item = props.items[index]; if (item) { props.command(item); } }; const upHandler = () => { setSelectedIndex( (selectedIndex + props.items.length - 1) % props.items.length ); }; const downHandler = () => { setSelectedIndex((selectedIndex + 1) % props.items.length); }; const enterHandler = () => { selectItem(selectedIndex); }; useEffect(() => setSelectedIndex(0), [props.items]); useImperativeHandle(ref, () => ({ onKeyDown: ({ event }) => { if (event.key === 'ArrowUp') { upHandler(); return true; } if (event.key === 'ArrowDown') { downHandler(); return true; } if (event.key === 'Enter') { enterHandler(); return true; } return false; }, })); return (