diff --git a/src/components/VersionSelector/Option.tsx b/src/components/VersionSelector/Option.tsx index 62b750fe..d6a3642c 100644 --- a/src/components/VersionSelector/Option.tsx +++ b/src/components/VersionSelector/Option.tsx @@ -3,9 +3,9 @@ import { StyledLi, StyledOptionText, StyledPlaceholder } from './styled.elements import Checkmark from './CheckmarkSvg'; import { OptionProps } from './types'; -export const Option = ({ option, value, selected, onClick }: OptionProps) => { - const KEY_ENTER = 'ENTER'; - const KEY_SPACE = 'SPACE'; +export const Option = ({ option, value, selected, onClick, focused }: OptionProps) => { + const KEY_ENTER = 'Enter'; + const KEY_SPACE = ' '; const handleKeyPress = (event: React.KeyboardEvent) => { if (event.key === KEY_ENTER || event.key === KEY_SPACE) { @@ -14,7 +14,12 @@ export const Option = ({ option, value, selected, onClick }: OptionProps) => { }; return ( - onClick(value)} onKeyPress={handleKeyPress} selected={selected}> + onClick(value)} + onKeyPress={handleKeyPress} + selected={selected} + focused={focused} + > {selected ? : } {option} diff --git a/src/components/VersionSelector/VersionSelector.tsx b/src/components/VersionSelector/VersionSelector.tsx index 53e0008b..50e6284d 100644 --- a/src/components/VersionSelector/VersionSelector.tsx +++ b/src/components/VersionSelector/VersionSelector.tsx @@ -21,16 +21,32 @@ import { useOutsideClick } from './use-outside-click'; const VersionSelectorComponent = ({ resourceVersions, active, - rootUrl, description, + rootUrl, }: VersionSelectorProps): JSX.Element => { - const [selectedIdx, setSelectedIdx] = React.useState( - resourceVersions.indexOf(active.resourceVersion), - ); + const initialSelectedIdx = resourceVersions.indexOf(active.resourceVersion); const [open, setOpen] = React.useState(false); + const [focusedIdx, setFocusedIdx] = React.useState(-1); + const [selectedIdx, setSelectedIdx] = React.useState(initialSelectedIdx); + const menuListRef = React.useRef(null); + + const options = resourceVersions.map((option, i) => { + return ( +