Skip to content

fix(Table): name the row-status column header - #4693

Open
AKnassa wants to merge 1 commit into
facebook:mainfrom
AKnassa:rocky/issue-4681-empty-table-header
Open

fix(Table): name the row-status column header#4693
AKnassa wants to merge 1 commit into
facebook:mainfrom
AKnassa:rocky/issue-4681-empty-table-header

Conversation

@AKnassa

@AKnassa AKnassa commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Part of #4681 (weekly a11y scan). Clears both TableRowStatus::*::empty-table-header baseline entries.

What this does

The row-status plugin renders a narrow colored-gutter column whose <th> was intentionally blank, leaving screen reader users a nameless column header. The header now carries visually hidden text: sighted users still see a blank gutter, assistive technology announces "Row status".

What changed

  • useTableRowStatus renders <VisuallyHidden> text from a new i18n key (@astryx.table.rowStatus.columnHeader, default "Row status") instead of an empty header, with t added to the column memo deps (same shape as the rowExpansion plugin's strings).
  • Override goes through InternationalizationProvider like every other built-in Table plugin string; deliberately no new config prop.
  • "Row status" over plain "Status" avoids colliding with common visible column names (the stories themselves have a "State" column).
  • Tests pin both the accessible name and that it stays visually hidden (bare visible th text would fail).
  • Baseline: 2 entries removed, deletions only. Changeset (patch).

Known relatives, not in this PR

useTableRowExpansion has the identical blank-header pattern but zero baseline entries (its stories appear to fall outside the scan), and Table/types.ts documents header: '' as the example for action columns. Both are follow-up candidates.

Verification

9/9 plugin tests plus the i18n catalog guard (29/29 combined), eslint clean, and the repo's axe audit with --fail-on-new: 0 issues on both TableRowStatus stories.

axe empty-table-header (minor): the row-status gutter column
rendered a blank <th>, so AT users got a nameless column header. The
header now carries VisuallyHidden text from a new i18n key
(@astryx.table.rowStatus.columnHeader, default 'Row status') —
i18n-key-only override like the selection/rowExpansion plugin
strings, no new config prop. Tests pin both the accessible name and
that it stays visually hidden. Baseline: -2 entries.

Verified: 9/9 plugin tests + i18n catalog guard, eslint clean, axe
audit 0 issues on both TableRowStatus stories with --fail-on-new.

Part of facebook#4681.
@vercel

vercel Bot commented Aug 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
astryx Ready Ready Preview Aug 3, 2026 9:43pm

Request Review

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Meta Open Source bot. label Aug 3, 2026
@AKnassa
AKnassa marked this pull request as ready for review August 4, 2026 01:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Meta Open Source bot.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant