Dialogs: focus traps, focus restore and keyboard navigation of menus
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 42/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- react, tauri, typescript
- Ambito
- accessibility, frontend, testing
Direzione di ricerca
Start with ConfirmRunDialog.tsx, SettingsDialog.tsx, Dialogs.tsx and TabList.tsx, then inspect the context menu in src/features/grid/ and the linked follow-up notes for the referenced tasks. Trace how dialogs capture their opener and handle Tab, then run the existing dialog and menu tests to locate the relevant behavior. Done means the listed focus, keyboard, menu, status notice and popup issues meet the acceptance criteria, with the requested tests and checks passing.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Context
ConfirmRunDialog's Tab trap only works while focus is inside the overlay: after a click on a non-focusable area (focus on <body>), Tab moves to the first focusable element of the page, possibly behind the dialog. SettingsDialog has the same gap. Global shortcuts stay inert (the dialog is aria-modal), so nothing unsafe follows. Other dialogs and menus have small focus issues.
To do
- Make one shared focus-trap helper/hook used by ConfirmRunDialog, SettingsDialog and
Dialogs.tsx(Tab trap that survives focus on<body>). Dialogs.tsx: focus is never restored (the opener is captured afterautoFocus).- NameDialog never receives
busy(double submit); Clear history is disabled when the filtered list is empty. - Context menu (grid and sidebar): clamp to the viewport, arrow-key navigation, restore focus.
- TabList: outside-click duplicates
close(), focus not returned to the dropdown button,aria-controlsid absent when empty,activedescendanton the search input. role=statusnotice is mounted with content (live region should exist first).- Completion popup stays visible over the Save-query modal until an editor click (Task 8 manual #3).
Acceptance criteria
- Tab and Shift+Tab never leave an open dialog, even after a click on its background.
- Closing any dialog returns focus to its opener.
- Menus open inside the viewport and are keyboard operable.
- Tests for the shared trap and each fixed dialog.
-
pnpm test && pnpm lintgreen (pluscargo clippy --all-targets -- -D warningsandpnpm test:rustwhen Rust changes)
Likely files touched
src/features/workspace/ConfirmRunDialog.tsx,src/features/settings/SettingsDialog.tsx,src/components/Dialogs.tsxsrc/features/grid/(context menu),src/features/workspace/TabList.tsx
Linked docs
docs/notes/plan-05-followups.md(Safe mode, Task 3)docs/notes/plan-03-followups.md(Task 4)docs/notes/plan-04-followups.md(Task 3, Task 8 minors)
- Lingua principale
- TypeScript
- Stelle
- 0
- Fork
- 0
- Merge medio
- 1h 2m
- PR unite (30g)
- 41
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Cemoche/tablemax
-
accessibility area:frontend size:S status:ready type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
area:backend size:S status:ready type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
area:infra good first issue size:S status:ready type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
area:docs good first issue size:S status:ready type:task
Difficoltà 1/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
area:infra size:S status:ready type:task
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Cemoche/tablemax
Issue simili
-
level/task type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
wazuh/wazuh-dashboard-plugins#9508 ·
I maintainer di solito rispondono entro 1 giorno
-
Testnet EOL page links Zonescan mainnetForse già presa @napelvs l’ha presa oggi. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 76/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Azure-Samples/azure-search-openai-demo#3249 ·
I maintainer di solito rispondono entro 1 giorno
-
[Docs] docs/architecture.mermaid leaves out 21 of the 51 src/ directoriesForse già presa @uyg7x l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement status:needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
dongdongbh/Mindwtr#1438 ·
I maintainer di solito rispondono entro 1 giorno