Skip to content

CODAP-1341: suppress focus outline on CFM menu list container (forward-port of #430) - #435

Merged
kswenson merged 1 commit into
masterfrom
CODAP-1341-forward-port-focus-outline
Aug 27, 2026
Merged

CODAP-1341: suppress focus outline on CFM menu list container (forward-port of #430)#435
kswenson merged 1 commit into
masterfrom
CODAP-1341-forward-port-focus-outline

Conversation

@kswenson

Copy link
Copy Markdown
Member

Forward-port of #430 (CODAP-1341) from v2.2.x to master.

Why

#430 merged to v2.2.x on 2026-05-21, shortly after #426 had swept the earlier v2.2.x hotfixes into master. It landed just past that sweep and was never picked up, so master has been missing the fix since.

Audit of everything currently on v2.2.x but not on master:

Commit on v2.2.x Status on master
CODAP-1216 (#424) already ported — 89c5a98
CODAP-141 (#425) already ported — c0799bc
CFM-16 (#427) already ported — 64deb0d
CFM-18 (#429) master was first — #428; v2.2.x got the backport
Release v2.2.12 (#431) n/a — release mechanics for the 2.2.x line
CODAP-1341 (#430) missing — this PR

So this closes the last remaining gap between the two branches.

Change

Cherry-picked cleanly with git cherry-pick -x, no conflicts. Seven added lines in src/style/components/dropdown-menu.styl:

.menu-list-container:focus
  outline none

React Aria gives the menu list container programmatic focus when a menu opens; it is never a meaningful keyboard focus target, since keyboard users navigate the menu items, which carry their own :focus-visible outline. The original commit message carries the full rationale, and the commit retains its (cherry picked from commit 1cced6c) trailer.

Verification

Check Result
npm test 28 suites, 232 tests passing
npm run lint clean
npm run build compiled successfully

Verified absent from master before the pick: the .menu-list-container:focus selector existed on v2.2.x but not in master's copy of the file.

Style-only change with no dependencies; independent of #434.

🤖 Generated with Claude Code

React Aria gives the menu list container (.menu-list-container)
programmatic keyboard focus when a menu opens. The browser's
:focus-visible heuristic resolves that focus inconsistently, and
when it resolves true the browser draws its default focus outline
around the whole menu container.

The container is never a meaningful keyboard focus target -- keyboard
users navigate the menu items, which carry their own :focus-visible
outline -- so suppress the outline on the container itself.

This is the CFM-side counterpart to CODAP PR #2585. That PR fixes the
menu drop shadow, which is broken by a CODAP-specific global box-shadow
reset and so must be fixed in CODAP. The stray focus outline, however,
is a CFM rendering artifact that appears in any host app, so the CFM
should own it. Once this ships, the matching outline rule in CODAP
PR #2585 becomes redundant.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit 1cced6c)
@kswenson
kswenson marked this pull request as ready for review August 27, 2026 00:08
@kswenson

Copy link
Copy Markdown
Member Author

Merging without additional review, as it was already reviewed/approved in #430.

@kswenson
kswenson merged commit 595c049 into master Aug 27, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant