Copilot/fix accessibility issues 21.2.x#17265
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR addresses WCAG 1.3.1 (aria-required-children) violations in Ignite UI Angular grid variants by adjusting the ARIA role hierarchy so role="grid" elements own only allowed roles (row / rowgroup) and by ensuring action wrappers inside rows have appropriate cell roles.
Changes:
- Update grid body/foot/scroll/footer containers across grid, tree grid, hierarchical grid, and pivot grid to use
role="presentation"wrappers androle="rowgroup"focus hosts. - Fix row/group-row action areas (drag indicator, row selectors, grouping toggle/content) to expose
role="gridcell"/role="columnheader"where required. - Add/adjust ARIA-focused tests to validate the new role structure.
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| projects/igniteui-angular/grids/tree-grid/src/tree-grid.component.spec.ts | Updates/extends tests to assert tbody/tfoot ARIA role structure. |
| projects/igniteui-angular/grids/tree-grid/src/tree-grid.component.html | Moves rowgroup semantics to focus host; makes wrappers presentational; updates scroll/footer roles. |
| projects/igniteui-angular/grids/tree-grid/src/tree-grid-row.component.html | Ensures row action wrappers expose role="gridcell". |
| projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.component.html | Applies presentational wrappers and rowgroup roles in pivot grid body/scroll/footer (contains a merge conflict to resolve). |
| projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-row.component.html | Ensures row action wrappers expose role="gridcell". |
| projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.spec.ts | Updates/extends tests to assert tbody/tfoot ARIA role structure. |
| projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.component.html | Moves rowgroup semantics to focus host; makes wrappers presentational; updates scroll/footer roles. |
| projects/igniteui-angular/grids/grid/src/groupby-row.component.ts | Moves role/expanded semantics to align group row with grid ARIA structure. |
| projects/igniteui-angular/grids/grid/src/groupby-row.component.html | Adds role="gridcell" to group row action wrappers; moves aria-expanded to toggle cell. |
| projects/igniteui-angular/grids/grid/src/grid.groupby.spec.ts | Updates/adds tests for group-row role and aria-expanded location/updates. |
| projects/igniteui-angular/grids/grid/src/grid.component.spec.ts | Updates/extends tests to assert tbody/tfoot ARIA role structure. |
| projects/igniteui-angular/grids/grid/src/grid.component.html | Moves rowgroup semantics to focus host; makes wrappers presentational; updates scroll/footer roles. |
| projects/igniteui-angular/grids/grid/src/grid-row.component.html | Ensures row action wrappers expose role="gridcell". |
| projects/igniteui-angular/grids/grid/src/grid-row-selection.spec.ts | Extends row selector tests to assert correct roles on selector wrappers. |
| projects/igniteui-angular/grids/core/src/toolbar/grid-toolbar.component.ts | Sets toolbar host to role="presentation" to avoid invalid grid-owned children. |
| projects/igniteui-angular/grids/core/src/headers/grid-header-row.component.ts | Sets header row host to role="rowgroup". |
| projects/igniteui-angular/grids/core/src/headers/grid-header-row.component.html | Adjusts header wrapper roles and assigns role="columnheader" to action containers. |
| projects/igniteui-angular/grids/core/src/grouping/group-by-area.directive.ts | Sets group-by area host to role="presentation". |
| projects/igniteui-angular/grids/core/src/filtering/base/grid-filtering-cell.component.ts | Sets filtering cell host to role="gridcell". |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
ChronosSF
approved these changes
May 7, 2026
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.
Fix ARIA accessibility issues in igx-grid component
Summary
This PR fixes WCAG 1.3.1 accessibility violations (aria-required-children) in all grid components. The changes ensure that elements with
role="grid"only have direct children with allowed ARIA roles (roworrowgroup) per the ARIA specification.Changes:
role="rowgroup"to header row componentsrole="presentation"to baseIgxGroupByAreaDirective(inherited by grid and tree-grid variants)role="presentation"to toolbar componentrole="presentation"to scroll and footer containersOriginal prompt
Known limitations (deferred — require structural refactoring):
igx-grid-toolbar, igx-group-by-area and igx-paginator are projected via
ng-content inside the grid host (role="grid"), making them owned
children of the grid in the accessibility tree. Full compliance would
require them to be siblings of role="grid".