You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
DataViewFilters: MenuToggle for filter category selector has no accessible name #680
The DataViewFilters component renders a MenuToggle as the filter category selector (e.g., to switch between "Name" and "Label" filters). This button has no accessible name, causing a critical button-name axe violation (WCAG 4.1.2).
activeAttributeMenu is initialized as '' (line 46)
It's only populated via useEffect after the first render (lines 63–65)
The MenuToggle has no aria-label prop (lines 80–88)
On the initial render, the button has no text content, no aria-label, no aria-labelledby, and no title — making it completely invisible to screen readers.
// Line 46 — empty initial stateconst[activeAttributeMenu,setActiveAttributeMenu]=useState<string>('');// Lines 80-88 — no aria-label, children is '' on first renderconstattributeToggle=(<MenuToggleref={attributeToggleRef}onClick={()=>setIsAttributeMenuOpen(!isAttributeMenuOpen)}isExpanded={isAttributeMenuOpen}icon={toggleIcon}>{activeAttributeMenu}</MenuToggle>);
Suggested fix
Two changes:
Initialize activeAttributeMenu from the first child's title prop synchronously instead of via useEffect, so it's never empty:
Picked this up. Confirmed the category toggle has no accessible name because it's icon-only until activeAttributeMenu is set post-render. PR adds the fallback aria-label plus a synchronous initial category, with a regression test. Flagged one option in the PR re: static vs dynamic label, happy to go whichever way you prefer. PR: #687
Activity
aloktomarr commentedon Jul 26, 2026
Picked this up. Confirmed the category toggle has no accessible name because it's icon-only until activeAttributeMenu is set post-render. PR adds the fallback aria-label plus a synchronous initial category, with a regression test. Flagged one option in the PR re: static vs dynamic label, happy to go whichever way you prefer. PR: #687