Skip to content

Commit f0832df

Browse files
committed
fix(table): add missing rowgroup roles
The native cdk-table adds thead, tbody, and tfoot elements but was omitting the "rowgroup" role from these. This is necessary since we also specifically add roles to all of the other table elements.
1 parent d69bc45 commit f0832df

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

src/cdk/table/table.spec.ts

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,19 @@ describe('CdkTable', () => {
505505
]);
506506
});
507507

508+
it('should apply correct roles for native table elements', () => {
509+
const thisFixture = createComponent(NativeHtmlTableApp);
510+
const thisTableElement: HTMLTableElement = thisFixture.nativeElement.querySelector('table');
511+
thisFixture.detectChanges();
512+
513+
const rowGroups = Array.from(thisTableElement.querySelectorAll('thead, tbody, tfoot'));
514+
expect(rowGroups.length).toBe(3, 'Expected table to have a thead, tbody, and tfoot');
515+
for (const group of rowGroups) {
516+
expect(group.getAttribute('role'))
517+
.toBe('rowgroup', 'Expected thead, tbody, and tfoot to have role="rowgroup"');
518+
}
519+
});
520+
508521
it('should render cells even if row data is falsy', () => {
509522
setupTableTestApp(BooleanRowCdkTableApp);
510523
expectTableToMatchContent(tableElement, [
@@ -1591,27 +1604,27 @@ class MultipleHeaderFooterRowsCdkTableApp {
15911604
15921605
<ng-container cdkColumnDef="index1Column">
15931606
<cdk-header-cell *cdkHeaderCellDef> Column C</cdk-header-cell>
1594-
<cdk-cell *cdkCellDef="let row"> index_1_special_row</cdk-cell>
1607+
<cdk-cell *cdkCellDef> index_1_special_row</cdk-cell>
15951608
</ng-container>
15961609
15971610
<ng-container cdkColumnDef="c3Column">
15981611
<cdk-header-cell *cdkHeaderCellDef> Column C</cdk-header-cell>
1599-
<cdk-cell *cdkCellDef="let row"> c3_special_row</cdk-cell>
1612+
<cdk-cell *cdkCellDef> c3_special_row</cdk-cell>
16001613
</ng-container>
16011614
16021615
<ng-container cdkColumnDef="index">
16031616
<cdk-header-cell *cdkHeaderCellDef> Index</cdk-header-cell>
1604-
<cdk-cell *cdkCellDef="let row; let index = index"> {{index}}</cdk-cell>
1617+
<cdk-cell *cdkCellDef="let index = index"> {{index}}</cdk-cell>
16051618
</ng-container>
16061619
16071620
<ng-container cdkColumnDef="dataIndex">
16081621
<cdk-header-cell *cdkHeaderCellDef> Data Index</cdk-header-cell>
1609-
<cdk-cell *cdkCellDef="let row; let dataIndex = dataIndex"> {{dataIndex}}</cdk-cell>
1622+
<cdk-cell *cdkCellDef="let dataIndex = dataIndex"> {{dataIndex}}</cdk-cell>
16101623
</ng-container>
16111624
16121625
<ng-container cdkColumnDef="renderIndex">
16131626
<cdk-header-cell *cdkHeaderCellDef> Render Index</cdk-header-cell>
1614-
<cdk-cell *cdkCellDef="let row; let renderIndex = renderIndex"> {{renderIndex}}</cdk-cell>
1627+
<cdk-cell *cdkCellDef="let renderIndex = renderIndex"> {{renderIndex}}</cdk-cell>
16151628
</ng-container>
16161629
16171630
<cdk-header-row *cdkHeaderRowDef="columnsToRender"></cdk-header-row>
@@ -1662,12 +1675,12 @@ class WhenRowCdkTableApp {
16621675
16631676
<ng-container cdkColumnDef="index1Column">
16641677
<cdk-header-cell *cdkHeaderCellDef> Column C</cdk-header-cell>
1665-
<cdk-cell *cdkCellDef="let row"> index_1_special_row </cdk-cell>
1678+
<cdk-cell *cdkCellDef> index_1_special_row </cdk-cell>
16661679
</ng-container>
16671680
16681681
<ng-container cdkColumnDef="c3Column">
16691682
<cdk-header-cell *cdkHeaderCellDef> Column C</cdk-header-cell>
1670-
<cdk-cell *cdkCellDef="let row"> c3_special_row </cdk-cell>
1683+
<cdk-cell *cdkCellDef> c3_special_row </cdk-cell>
16711684
</ng-container>
16721685
16731686
<cdk-header-row *cdkHeaderRowDef="columnsToRender"></cdk-header-row>
@@ -1705,12 +1718,12 @@ class WhenRowWithoutDefaultCdkTableApp {
17051718
17061719
<ng-container cdkColumnDef="index1Column">
17071720
<cdk-header-cell *cdkHeaderCellDef> Column C</cdk-header-cell>
1708-
<cdk-cell *cdkCellDef="let row"> index_1_special_row </cdk-cell>
1721+
<cdk-cell *cdkCellDef> index_1_special_row </cdk-cell>
17091722
</ng-container>
17101723
17111724
<ng-container cdkColumnDef="c3Column">
17121725
<cdk-header-cell *cdkHeaderCellDef> Column C</cdk-header-cell>
1713-
<cdk-cell *cdkCellDef="let row"> c3_special_row </cdk-cell>
1726+
<cdk-cell *cdkCellDef> c3_special_row </cdk-cell>
17141727
</ng-container>
17151728
17161729
<cdk-header-row *cdkHeaderRowDef="columnsToRender"></cdk-header-row>
@@ -1790,7 +1803,7 @@ class TrackByCdkTableApp {
17901803
[sticky]="isStuck(stickyStartColumns, column)"
17911804
[stickyEnd]="isStuck(stickyEndColumns, column)">
17921805
<cdk-header-cell *cdkHeaderCellDef> Header {{column}} </cdk-header-cell>
1793-
<cdk-cell *cdkCellDef="let row"> {{column}} </cdk-cell>
1806+
<cdk-cell *cdkCellDef>{{column}}</cdk-cell>
17941807
<cdk-footer-cell *cdkFooterCellDef> Footer {{column}} </cdk-footer-cell>
17951808
</ng-container>
17961809

src/cdk/table/table.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -983,6 +983,7 @@ export class CdkTable<T> implements AfterContentChecked, CollectionViewer, OnDes
983983

984984
for (const section of sections) {
985985
const element = documentRef.createElement(section.tag);
986+
element.setAttribute('role', 'rowgroup');
986987
element.appendChild(section.outlet.elementRef.nativeElement);
987988
documentFragment.appendChild(element);
988989
}

0 commit comments

Comments
 (0)