[do not review] Fix popup tab focus navigation - #17793
[do not review] Fix popup tab focus navigation#17793Adam Ratzman (adamint) wants to merge 6 commits into
Conversation
Add opt-in Aspire popup focus navigation for menus and filter/URL popovers so Tab and Shift+Tab close or move focus predictably instead of resetting to the first page control. Cover JS interop wiring and lifecycle behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 17793Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 17793" |
|
I verified the View options repro in a real browser with Playwright against Steps: open Resources > View options, press Tab to move to Proof: {"pr":"17793","phase":"base","active":{"aria":"Aspire","title":"Aspire","menuText":""}}
{"pr":"17793","phase":"pr","active":{"aria":"Aspire","title":"Aspire","menuText":"Collapse child resources Show resource types Show hidden resources"}}One thing I'm not fully convinced on: focus still lands on the Aspire logo in this View options path. The popup disappearing part is fixed, but if the intended behavior is also to avoid resetting focus to the first interactive control, this may still need another tweak. |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Re-running the failed jobs in the CI workflow for this pull request because 2 jobs were identified as retry-safe transient failures in the CI run attempt.
Matched test failure patterns (1 test)
|
|
Updated browser verification after the latest fix. Steps I used:
Main branch behavior: after those two Tabs, the popup is dismissed and focus resets to Aspire. This PR behavior: after those two Tabs, the popup is dismissed and focus moves predictably to Resources, which is the next logical control after the View options trigger. That matches the issue expectation: focus no longer falls back to the first interactive control on the page. Proof:
Before: After: |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Condensed into #17926 to keep the related Resources a11y changes together. Closing this smaller draft. |


Description
Fixes #17469.
Adds opt-in Aspire popup keyboard navigation for menu and filter/URL popover surfaces so Tab, Shift+Tab, and Escape move focus predictably instead of relying on Fluent UI's shadow-DOM anchored focus calculation. The fix is scoped to Aspire-owned popups used by View options and filter/overflow popovers.
Evidence: https://github.com/adamint/aspire/tree/a11y-artifacts-20260601042635/17469
Checklist
<remarks />and<code />elements on your triple slash comments?