Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const onKeyDown: React.KeyboardEventHandler = e => {
if ([keyMap.ArrowUp, keyMap.ArrowDown].includes(e.keyCode)) {
e.preventDefault();
}
};
function handleKeyDown(e: KeyboardEvent) {
const filteredRefs = refs.filter(ref => ref !== null);
let refToFocus: HTMLElement;
switch (e.keyCode) {
case keyMap.ArrowDown:
refToFocus = refs[(refs.indexOf(focused!) + 1) % refs.length];
refToFocus.focus();
setFocused(refToFocus);
break;
case keyMap.ArrowUp:
refToFocus =
refs[(refs.indexOf(focused!) - 1 + refs.length) % refs.length];
setFocused(refToFocus);
refToFocus.focus();
break;
case keyMap.Tab:
if (!e.shiftKey && trapLastMenuItem(filteredRefs)) {
e.preventDefault();
setFocused(refs[0]);
refs[0].focus();
}
if (e.shiftKey && trapFirstMenuItem()) {
e.preventDefault();
filteredRefs[filteredRefs.length - 1].focus();