Close on escape

This commit is contained in:
Eric Bailey
2023-12-28 10:55:00 -06:00
parent 12f5f76040
commit e1eab6bb29
+11 -3
View File
@@ -72,7 +72,7 @@ export function NativeDropdown({
theme.colorScheme === 'dark' ? pal.borderDark : pal.border
React.useEffect(() => {
const handler = (e: MouseEvent) => {
function clickHandler(e: MouseEvent) {
const t = e.target
if (!open) return
@@ -95,9 +95,17 @@ export function NativeDropdown({
}
}
document.addEventListener('click', handler, true)
function keydownHandler(e: KeyboardEvent) {
if (e.key === 'Escape' && open) {
setOpen(false)
}
}
document.addEventListener('click', clickHandler, true)
window.addEventListener('keydown', keydownHandler, true)
return () => {
document.removeEventListener('click', handler, true)
document.removeEventListener('click', clickHandler, true)
window.removeEventListener('keydown', keydownHandler, true)
}
}, [open, setOpen])