Skip to content

Commit 682a642

Browse files
fix: Ignore escape when dialog open (#487)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
1 parent b4ed2ad commit 682a642

1 file changed

Lines changed: 14 additions & 4 deletions

File tree

packages/workshop-app/app/routes/_app+/_layout.tsx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1553,13 +1553,23 @@ function NavToggle({
15531553
React.useEffect(() => {
15541554
if (!isMenuOpened) return
15551555

1556-
function handleKeyUp(event: KeyboardEvent) {
1557-
if (event.key === 'Escape') {
1556+
function handleKeyDown(event: KeyboardEvent) {
1557+
if (event.key !== 'Escape' || event.defaultPrevented) {
1558+
return
1559+
}
1560+
1561+
const hasOpenDialog = Boolean(
1562+
document.querySelector(
1563+
'[role="dialog"][data-state="open"], [role="alertdialog"][data-state="open"]',
1564+
),
1565+
)
1566+
1567+
if (!hasOpenDialog) {
15581568
menuButtonRef.current?.click()
15591569
}
15601570
}
1561-
document.addEventListener('keyup', handleKeyUp)
1562-
return () => document.removeEventListener('keyup', handleKeyUp)
1571+
document.addEventListener('keydown', handleKeyDown)
1572+
return () => document.removeEventListener('keydown', handleKeyDown)
15631573
}, [isMenuOpened])
15641574

15651575
return (

0 commit comments

Comments
 (0)