diff --git a/src/components/ui/Dialog.jsx b/src/components/ui/Dialog.jsx index 8cd8cb0..a159d26 100644 --- a/src/components/ui/Dialog.jsx +++ b/src/components/ui/Dialog.jsx @@ -2,10 +2,14 @@ import { useEffect, useId, useRef } from 'react' import { useDialogFocus } from '../../hooks/useDialogFocus' import { shouldCloseOnKey } from '../../lib/dialogKeys' +// Alle gerade offenen Dialoge, der zuletzt geöffnete steht hinten: nur er reagiert auf Esc (sonst schlösse ein Esc auch die darunter liegenden) +const openDialogs = [] + /** * Dialog: weiße Box auf abgedunkeltem Hintergrund, auf dem Handy als Bottom-Sheet (Regeln in global.css, .overlay/.dialog). * Schließen geht nur über × und Esc, ein Klick auf den Hintergrund tut nichts (lange Eingaben sollen nicht verloren gehen). - * Solange `busy` gilt, wirken × und Esc nicht. Esc greift nur, wenn kein innerer Baustein die Taste schon behandelt hat + * Solange `busy` gilt, wirken × und Esc nicht. Liegen mehrere Dialoge übereinander, schließt Esc nur den obersten. + * Esc greift nur, wenn kein innerer Baustein die Taste schon behandelt hat * (z. B. schließt eine offene Vorschlagsliste zuerst sich selbst): React 18 verteilt seine Ereignisse am Wurzelelement, also vor * dem Listener auf `document`, und ein dortiges preventDefault() ist hier als `defaultPrevented` sichtbar. * Mit `as="form"` ist die Box ein