fix(a11y): Dialog-Vorrang in Fokusfalle, eindeutige Dialog-IDs, Bookmark nur Enter
- settings.js: _makeTrap bricht ab, wenn ein .dialog-overlay offen ist, damit der Dialog-keydown-Handler Escape/Tab allein behandelt (kein Doppelschluss, Fokusfalle bleibt dicht) - dialog.js: aria-labelledby/-describedby zeigen auf instanz-eindeutige IDs (Date.now + Modul-Zaehler) statt feste dialogTitle/dialogBody, damit kurz gestapelte Dialoge dem Screenreader nicht den falschen Titel liefern - boards.js: Bookmark-keydown reagiert bei role=link nur noch auf Enter, Space entfernt (Space ist Button-Semantik)
This commit is contained in:
@@ -18,6 +18,10 @@ function _focusable(container) {
|
||||
/** Tab/Shift+Tab im Container einfangen + Escape schliesst. */
|
||||
function _makeTrap(container, closeFn) {
|
||||
return function trap(e) {
|
||||
// Ein offener HellionDialog (z.B. Reset-All-Confirm oder BG-URL-Alert aus
|
||||
// dem Panel) hat Vorrang: sein eigener keydown-Handler uebernimmt Escape/Tab.
|
||||
// Sonst schloessen beide Listener gleichzeitig und die Dialog-Fokusfalle wird loechrig.
|
||||
if (document.querySelector('.dialog-overlay')) return;
|
||||
if (e.key === 'Escape') { e.preventDefault(); closeFn(); return; }
|
||||
if (e.key !== 'Tab') return;
|
||||
const items = _focusable(container);
|
||||
|
||||
Reference in New Issue
Block a user