Skip to content

Instantly share code, notes, and snippets.

@ryanflorence
Created June 7, 2019 06:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ryanflorence/d8b61b19b4c3541a08792f9e1c7e94a6 to your computer and use it in GitHub Desktop.
Save ryanflorence/d8b61b19b4c3541a08792f9e1c7e94a6 to your computer and use it in GitHub Desktop.
function handleKeyDown(event) {
if (event.key === "Tab" && event.shiftKey) {
if (shiftTabbedFromElementAfterTrigger(event)) {
focusLastTabbableInPopover(event);
} else if (shiftTabbedOutOfPopover(event)) {
focusTriggerRef(event);
} else if (shiftTabbedToBrowserChrome(event)) {
disableTabbablesInPopover(event);
}
} else if (event.key === "Tab") {
if (tabbedFromTriggerToPopover(event)) {
focusFirstPopoverTabbable(event);
} else if (tabbedOutOfPopover(event)) {
focusTabbableAfterTrigger(event);
} else if (tabbedToBrowserChrome(event)) {
disableTabbablesInPopover(event);
}
}
}
useEffect(() => {
doc.addEventListener("keydown", handleKeyDown);
return () => doc.removeEventListener("keydown", handleKeyDown);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment