Skip to content

fix: Treat the flyout as a listbox with options#10059

Merged
gonfunko merged 1 commit into
RaspberryPiFoundation:mainfrom
microbit-matt-hillsdon:flyout-listbox
Jun 24, 2026
Merged

fix: Treat the flyout as a listbox with options#10059
gonfunko merged 1 commit into
RaspberryPiFoundation:mainfrom
microbit-matt-hillsdon:flyout-listbox

Conversation

@microbit-robert

@microbit-robert microbit-robert commented Jun 24, 2026

Copy link
Copy Markdown
Collaborator

The basics

The details

Resolves

Fixes #10058

Proposed Changes

Change the flyout from a list to listbox and flyout items from listitems to options.

Subsequently, clickable icons in the flyout need to be owned (using aria-owns) by their parent block to avoid inflating the number of options that the screen reader counts. This PR also introduces more safety with icons by making them inert in the flyout when they are not clickable.

Reason for Changes

This fixes compatibility with Windows narrator without regressing other screen readers (VoiceOver, NVDA, JAWS, ChromeVox)

Test Coverage

Updated one existing change to assert option instead of listitem.

Documentation

None

Additional Information

An alternative fix could be to avoid using aria-label in the flyout, and instead use a visually hidden element that contains the aria-label text, but I have not explored or test this version.

@microbit-robert microbit-robert requested a review from a team as a code owner June 24, 2026 10:58
@microbit-robert microbit-robert requested a review from gonfunko June 24, 2026 10:58
@github-actions github-actions Bot added PR: fix Fixes a bug and removed PR: fix Fixes a bug labels Jun 24, 2026
@gonfunko gonfunko merged commit 993fa90 into RaspberryPiFoundation:main Jun 24, 2026
10 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR: fix Fixes a bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Windows narrator does not read flyout blocks correctly

2 participants