PivotGrid Accessibility

Out of the box, the Kendo React PivotGrid provides extensive accessibility support and enables users with disabilities to acquire complete control over its features.

The PivotGrid is compliant with the Web Content Accessibility Guidelines (WCAG) 2.2 AA standards and Section 508 requirements, follows the Web Accessibility Initiative - Accessible Rich Internet Applications (WAI-ARIA) best practices for implementing the keyboard navigation for its component role, provides options for managing its focus and is tested against the most popular screen readers.

WAI-ARIA

This section lists the selectors, attributes, and behavior patterns supported by the component and its composite elements, if any.

The PivotGrid is a composite component that consists of two logically separated structural elements:

  • Data Grid (role="grid");
  • Configurator (role="dialog");

Data Grid

The element with role="grid" - includes the row headers, column headers, and data tables.

Grid element

SelectorAttributeUsage
.k-pivotgridrole=gridThe role specifies the element is a Data Grid.

Column Headers

SelectorAttributeUsage
.k-pivotgrid-column-headers>.k-pivotgrid-tablerole=presentation/noneNegates the default semantic role of the <table> element.
.k-pivotgrid-empty-cellrole=columnheaderAnnounces the empty cell role as a part of the programmatically constructed a11y tree.
aria-colspanSets the correct aria-colspan corresponding to the number of columns in the row headers table.
aria-rowspanSets the correct aria-rowspan corresponding to the number of rows in the column headers table.
idSets an unique identifier for the cell to be referenced from the first row in the column header table aria-owns attribute.
.k-pivotgrid-empty-cell>.k-sr-onlyundefinedThe empty cell should have a nested span.k-sr-only element containing the localizable text message that will be announced by screen readers when the empty cell is focused.
.k-pivotgrid-column-headers>.k-pivotgrid-table>tbodyrole=rowgroupRequired as the owner <table> element has its semantic role removed.
.k-pivotgrid-column-headers>.k-pivotgrid-table>tbody>.k-pivotgrid-rowrole=rowRequired as the owner <table> element has its semantic role removed.
.k-pivotgrid-column-headers>.k-pivotgrid-table>tbody>.k-pivotgrid-row:first-childaria-ownsLists the IDs of the .k-pivotgrid-empty-cell element AND all TD elements, children of the first column headers row (in the correct order - EmptyID td1ID td2ID ...), to construct the a11y tree.
.k-pivotgrid-column-headers>.k-pivotgrid-table>tbody>.k-pivotgrid-row>throle=columnheaderRequired as the owner <table> element has its semantic role removed.
aria-expanded=true/falseIndicates the current expanded state of the header.
idUnique and deterministic identifier, used to associate the header cell with respective data cells.
.k-i-arrow-chevron-up,.k-svg-i-arrow-chevron-uparia-hidden=trueExcludes the collapse icon from the screen reader output.
.k-i-arrow-chevron-down,.k-svg-i-arrow-chevron-downaria-hidden=trueExcludes the expand icon from the screen reader output.

Row Headers

SelectorAttributeUsage
.k-pivotgrid-row-headers>.k-pivotgrid-tablerole=none/presentationNegates the default semantic role of the <table> element.
.k-pivotgrid-row-headers>.k-pivotgrid-table>tbodyrole=rowgroupRequired as the owner <table> element has its semantic role removed.
.k-pivotgrid-row-headers>.k-pivotgrid-table>tbody>.k-pivotgrid-rowrole=rowRequired as the owner <table> element has its semantic role removed.
aria-owns=[IDs of corresponding data cells]Used to associate row header cells with the corresponding data cells.
.k-pivotgrid-row-headers>.k-pivotgrid-table>tbody>.k-pivotgrid-row>throle=rowheaderRequired as the owner <table> element has its semantic role removed.
aria-expanded=true/falseIndicates the current expanded state of the header.
.k-i-arrow-chevron-up,.k-svg-i-arrow-chevron-uparia-hidden=trueExcludes the collapse icon from the screen reader output.
.k-i-arrow-chevron-down,.k-svg-i-arrow-chevron-downaria-hidden=trueExcludes the expand icon from the screen reader output.

Grid Data Table

SelectorAttributeUsage
.k-pivotgrid-values>.k-pivotgrid-tablerole=none/presentationNegates the default semantic role of the <table> element.
.k-pivotgrid-values>.k-pivotgrid-table>tbodyrole=none/presentationThe contained rows are associated with their headers through alternative mechanics.
.k-pivotgrid-values>.k-pivotgrid-table>tbody>.k-pivotgrid-rowrole=none/presentationThe rows are associated with their headers through alternative mechanics.
.k-pivotgrid-values>.k-pivotgrid-table>tbody>.k-pivotgrid-row>tdrole=gridcellRequired as the owner <table> element has its semantic role removed.
idUnique and deterministic identifier, used to associate the data cell with respective row header cells.
aria-describedby=[IDs of corresponding column header cells]Used to associate the data cells with the respective column header cells.

Configurator

The element with role="dialog" - includes the configurator header, content (fields, columns, rows, and values sub-sections), and actions (cancel and apply buttons) sections.

Configurator Button Element

SelectorAttributeUsage
.k-pivotgrid-configurator-buttonaria-hidden=trueHide the element from the assistive technologies, as it is not focusable, and there are designated shortcuts for opening and closing the configurator.

Configurator Wrapping Element

SelectorAttributeUsage
.k-pivotgrid-configuratorrole=dialogThe role specifies the element is a dialog.
aria-hidden=true/falseSpecifies whether the configurator is visible if it is still in the DOM when closed.
aria-labelledby=.k-pivotgrid-configurator-header-text idAssociates the configurator wrapper with its internal header element.

Configurator Internal Elements

SelectorAttributeUsage
.k-pivotgrid-configurator-header-textidUnique and deterministic identifier, used to associate the header text with elements that need to use it as a label.
.k-pivotgrid-configurator-content .k-labelidUnique and deterministic identifier, used to associate the label text with elements that need to use it as a label.
.k-pivotgrid-configurator-actions .k-buttonaria-disabled=true/falseAnnounces the disabled state of the configurator Cancel and Apply buttons.
.k-fields-list-wrapper .k-treeviewaria-labelledbyAssociates the fields chooser TreeView with the Fields section and Configurator header texts by setting the aria-labelledby attribute to the id of the .k-pivotgrid-configurator-header-text element, followed by a space and the id of the Fields label element
.k-pivotgrid-configurator-content .k-chip-listaria-labelledbyAssociates the rows, columns and measures Chiplists with their respective section label and Configurator header texts by setting the aria-labelledby attribute to the id of the .k-pivotgrid-configurator-header-text element followed by a space and the id of the Rows/Columns/Values label element

Resources

WAI-ARIA specification for grid

WAI-ARIA specification for dialog

Section 508

The PivotGrid is fully compliant with the Section 508 requirements.

Testing

The PivotGrid has been extensively tested automatically with axe-core and manually with the most popular screen readers.

To report any accessibility issues, contact the team through the Telerik Support System.

Screen Readers

The PivotGrid has been tested with the following screen readers and browsers combinations:

EnvironmentTool
FirefoxNVDA
ChromeJAWS
Microsoft EdgeJAWS

See Also