Scheduler Accessibility

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

The Scheduler 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 component is a single tab stop, so the arrows must be used for internal navigation. Notable exception is that scrollable containers in non-agenda views should be focusable too.

Scheduler Wrapping Element

SelectorAttributeUsage
.k-schedulerrole=applicationSpecifies the role of the component.
aria-activedescendant=.k-event.k-selected idPoints to the currently active appointment in the Scheduler.

Scheduler Toolbar

The Scheduler toolbar must implement the specification for a ToolBar component.

ToolBar accessibility specification

Below are listed the requirements for those components part of the ToolBar.

SelectorAttributeUsage
.k-nav-prev,.k-nav-nextaria-labelRequired as those buttons contain only icon (no text).
.k-nav-currentaria-live=politeThe new date of the Scheduler view will be announced upon navigation to new time span / view type.
.k-views-dropdownaria-labelSpecifies the purpose of the element. The <select> element visible on the toolbar on small screens must have its aria-label set.

Depending on the current view, The Scheduler component implements different roles. Below are described the three possible approaches:

Scheduler in Agenda view

In case of an Agenda view, the role assigned to the Scheduler layout table (k-scheduler-layout element) must be grid.

Table element

SelectorAttributeUsage
.k-scheduler-agendaviewrole=gridThe main table of the Agenda view must indicate it is a Data Grid.
.k-scheduler-agendaview>tbodyrole=none/presentationThe <tbody> element must have its semantics removed.
.k-scheduler-agendaview .k-scheduler-tablerole=none/presentationThose <table> elements within the Scheduler must have their semantic role removed.
.k-scheduler-agendaview .k-scheduler-table>tbodyrole=rowgroupThose elements must have their role explicitly set as it has been removed by the <table> role set (none/presentation).
.k-scheduler-agendaview .k-scheduler-table>tbody>trrole=rowThose elements must have their role explicitly set as it has been removed by the <table> role set (none/presentation).
.k-scheduler-agendaview .k-scheduler-table>tbody>tr>throle=columnheaderThose elements must have their role explicitly set as it has been removed by the <table> role set (none/presentation).
.k-scheduler-agendaview .k-scheduler-content tr .k-selectedaria-selectedaria-selected attribute must be used to signify the currently selected row. As in Agenda view the selection follows focus, that would be the current active descendant row.

Content table td.k-scheduler-groupcolumn and td.k-scheduler-datecolumn elements

SelectorAttributeUsage
.k-scheduler-content>.k-scheduler-table>tbody>tr>.k-scheduler-groupcolumn,.k-scheduler-content>.k-scheduler-table>tbody>tr>.k-scheduler-datecolumnrole=rowheaderThose elements must have their role explicitly set as it has been removed by the <table> role set (none/presentation).
.k-scheduler-content>.k-scheduler-table>tbody>tr>.k-scheduler-timecolumn,.k-scheduler-content>.k-scheduler-table>tbody>tr>.k-scheduler-timecolumn+tdrole=gridcellThose elements must have their role explicitly set as it has been removed by the <table> role set (none/presentation).

Scheduler in Year view

Scheduler in Year view implements the ARIA specification of the MultiViewCalendar.

Scheduler in all other views

For the rest of the views the role="none/presentation" must be used on all inner <table> elements in the widget. This way we could freely implement managed focused inside the component based on the arrow keys.

SelectorAttributeUsage
.k-scheduler-dayview,.k-scheduler-monthview,.k-scheduler-timelineviewrole=none/presentationAll <table> elements within the Scheduler must have their semantic role removed.
.k-eventrole=buttonIndicating that the events element is interactive.
aria-labelLabel containing the title, start, and end date of the appointment, so that all of them are announced upon navigation to an appointment.
.k-scheduler-layout:not(.k-scheduler-agendaview) .k-scheduler-contenttabindex=0Scrollable elements need to be focusable (does not apply to agenda view) to ensure scrolling with the arrow keys is available.

Resources

WAI-ARIA specification for grid

WAI-ARIA specification for application

Section 508

The Scheduler is fully compliant with the Section 508 requirements.

Testing

The Scheduler 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 Scheduler has been tested with the following screen readers and browsers combinations:

EnvironmentTool
FirefoxNVDA
ChromeJAWS
Microsoft EdgeJAWS

See Also