Skip to content

Commit abe0530

Browse files
authored
Fix grid roles for accessbility (bvaughn#1624)
* Fix grid roles for accessbility * Add test for gridcell role
1 parent d365098 commit abe0530

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

source/Grid/Grid.jest.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1102,7 +1102,7 @@ describe('Grid', () => {
11021102
});
11031103
});
11041104

1105-
describe('styles, classNames, and ids', () => {
1105+
describe('styles, classNames, ids, and roles', () => {
11061106
it('should use the expected global CSS classNames', () => {
11071107
const rendered = findDOMNode(render(getMarkup()));
11081108
expect(rendered.className).toEqual('ReactVirtualized__Grid');
@@ -1132,6 +1132,12 @@ describe('Grid', () => {
11321132
.style.backgroundColor,
11331133
).toEqual('red');
11341134
});
1135+
1136+
it('should have the gridcell role', () => {
1137+
const containerStyle = {backgroundColor: 'red'};
1138+
const rendered = findDOMNode(render(getMarkup({containerStyle})));
1139+
expect(rendered.querySelectorAll('[role="gridcell"]').length).toEqual(20);
1140+
});
11351141
});
11361142

11371143
describe('onScroll', () => {

source/Grid/Grid.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ class Grid extends React.PureComponent<Props, State> {
263263
autoHeight: false,
264264
autoWidth: false,
265265
cellRangeRenderer: defaultCellRangeRenderer,
266-
containerRole: 'rowgroup',
266+
containerRole: 'row',
267267
containerStyle: {},
268268
estimatedColumnSize: 100,
269269
estimatedRowSize: 30,

source/Grid/defaultCellRangeRenderer.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/** @flow */
22

33
import type {CellRangeRendererParams} from './types';
4+
import React from 'react';
45

56
/**
67
* Default implementation of cellRangeRenderer used by Grid.
@@ -138,6 +139,10 @@ export default function defaultCellRangeRenderer({
138139
warnAboutMissingStyle(parent, renderedCell);
139140
}
140141

142+
if (!renderedCell.props.role) {
143+
renderedCell = React.cloneElement(renderedCell, {role: 'gridcell'});
144+
}
145+
141146
renderedCells.push(renderedCell);
142147
}
143148
}

0 commit comments

Comments
 (0)