Repository navigation
fix: only set aria-controls on the active tab - #744
Open
smartcalsystems-sketch wants to merge 1 commit into
Open
smartcalsystems-sketch wants to merge 1 commit into
smartcalsystems-sketch wants to merge 1 commit into
Conversation
Every tab set aria-controls={`tabpanel-${tab.key}`}, but consumers like
ContributorDashboardClient render only the active panel (a single
id={`tabpanel-${tab}`}). Every inactive tab's aria-controls therefore
pointed at an id that doesn't exist in the DOM -- an ARIA reference
error flagged by axe and confusing for assistive tech following the
relationship.
Omit aria-controls entirely on inactive tabs rather than rendering
every panel and hiding the inactive ones, since no consumer of this
component currently renders more than the active panel.
|
@smartcalsystems-sketch is attempting to deploy a commit to the chonilius' projects Team on Vercel. A member of the Team first needs to authorize it. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Every tab sets
aria-controls={tabpanel-${tab.key}}, butContributorDashboardClientrenders only the active panel (id={tabpanel-${tab}}). The inactive tab'saria-controlspoints at a missing id, an ARIA reference error flagged by axe and confusing for assistive tech that follows the relationship.Fix
Took the issue's second suggested option — omit
aria-controlson inactive tabs — rather than rendering every panel and hiding inactive ones withhidden. No consumer ofTabstoday renders more than the active panel, so always-rendering every panel would be a bigger, unrelated change to introduce here just to keep a reference valid; omitting the attribute when there's nothing valid for it to point at is the more surgical fix.Testing
aria-controls, inactive tabs don't get it at all, and the attribute correctly moves when a different tab becomes active.Tabs.test.tsx: 19/19 passing (16 pre-existing + 3 new).ContributorDashboardClient.test.tsx: 5/5 passing, zero regressions.tsc --noEmitandeslintclean on both changed files.Closes #710