Accessibility Support
Out of the box, the Telerik and Kendo UI MultiSelect provides extensive accessibility support and enables users with disabilities to acquire complete control over its features.
The MultiSelect is compliant with the Web Content Accessibility Guidelines (WCAG) 2.2 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.
MultiSelect Wrapping Element
The following table summarizes the selectors and attributes supported by the MultiSelect wrapper element:
Selector | Attribute | Usage |
---|---|---|
.k-input-inner | role=combobox | Announces the presence of a combobox as the inner element of the MultiSelect used for filtering. |
label for or aria-label or aria-labelledby | The input needs an accessible name that will be assigned to it. | |
aria-haspopup=listbox | Indicates the presence of a listbox popup. | |
aria-expanded=true/false | Announces the state of the popup visibility. | |
aria-controls=.k-list-ul id | Points to the listbox element. Signifies that the combobox element controls the listbox one. | |
aria-autocomplete=list | When the filtering feature is enabled, the attribute is rendered and the value is set to the list. | |
aria-describedby=.k-chip-list id | Points to the taglist element that contains the selected items. | |
aria-activedescendant=.k-list-item.k-focus id | Points to the focused item,which is either an item from the popup or a tag item from the selected items. The focused item is changed through keyboard navigation. If the focus is not currently on a tag item and the popup is not visible, the attribute must not point to any element or must be removed. | |
aria-readonly=true | The attribute is rendered only when the MultiSelect is read-only. | |
aria-invalid=true | The attribute is rendered only when the MultiSelect is in a form and announces the valid state of the component. | |
aria-busy=true | The attribute is rendered only when the MultiSelect is loading data. | |
tabindex=0 | The element must be focusable. | |
.k-disabled .k-input-inner | aria-disabled=true | The attribute is rendered only when the MultiSelect is disabled. |
.k-input-button | role=button or nodeName=button | The element must either be a <button> element or have the role="button" assigned. |
aria-label | The button needs an accessible name that will be assigned to it. | |
tabindex=-1 | The button element must not be focusable. |
Popup Listbox
The popup element of the MultiSelect must implement the WAI-ARIA specification for a Popup List component. The following table summarizes the selectors and attributes supported by the listbox popup of the MultiSelect:
Selector | Attribute | Usage |
---|---|---|
.k-list-ul | aria-multiselectable=true | Announces multiselection of the listbox popup. |
Selector | Attribute | Usage |
---|---|---|
.k-animation-container | role=region | When the component container is appended to the <body> element of the document, it requires you to assing a landmark role to it. Otherwise, append it to an element with an appropriate landmark role. |
aria-label or aria-labelledby | When the container has a region role assigned, povides a label. | |
.k-list-ul | role=listbox | Identifies the ul element as a listbox. |
aria-label or aria-labelledby | Provides a label for the listbox of the ComboBox. | |
.k-list-item | role=option | Identifies the li element as a listbox option. |
id | When grouped, the list items must have an id attribute specified, so that the aria-owns attribute of their group header elements (with role=group ) point to that ids. | |
aria-describedby | When grouped, the list items must have an aria-describedby attribute pointing to the id of the k-list-item-text element in their k-list-group-item . | |
.k-list-item.k-selected | aria-selected=true | Indicates the selected state of the item. |
.k-list-group-item | role=group | The group elements in the popup list must be have role=group . |
aria-owns | The group elements in the popup list must own the list items belonging to their group. | |
.k-list-group-item>.k-list-item-text | id | The k-list-item-text elements of the k-list-group-item must have an id specified. The aria-labelledby attribute of the list items in the group must point to that id. |
Keyboard Shortcuts
This section lists the keyboard shortcuts supported by the MultiSelect and its composite elements.
MultiSelect Wrapping Element
The following table summarizes the keyboard shortcuts and input behavior supported by the MultiSelect wrapper element:
Shortcut | Behavior |
---|---|
Typing in the input | Focuses the matched item. |
Alt (or Opt on Mac) + Down | Opens the popup. |
Alt (or Opt on Mac) + Up or Esc | Closes the popup. |
Left Arrow | Focuses the previous tag item in the selected list. |
Right Arrow | Focuses the next tag item in the selected list. |
Delete or Backspace | When the focused item is a tag list, removes the item from the selection. |
Esc | Clears the value when the popup is not open. |
Listbox Popup
Shortcut | Behavior |
---|---|
Down Arrow | Moves the focus to the next item. |
Up Arrow | Moves the focus to the previous item. |
Alt (or Opt on Mac) + Up Arrow or Esc | Closes the popup. |
Home | Moves the focus to the first item. Applicable only when the currently focused element is not an input. When an input is the focused element, the Home and End keys are used for the cursor position. |
End | Moves the focus to the last item. Applicable only when the currently focused element is not an input. When an input is the focused element, the Home and End keys are used for the cursor position. |
Enter | Selects the item. |
Page Up | Scrolls the popup list up. |
Page Down | Scrolls the popup list down. |
Tab | Closes the popup and focuses the next focusable element. |
The listbox placed in the popup element of the MultiSelect has to implement the keyboard navigation specification for a Popup List component. In addition to the above-mentioned combinations, the listbox also supports the shortcuts listed in the following table. Note that the combinations including the Shift
key are based on the behavior of the Windows File Explorer.
Shortcut | Behavior |
---|---|
Shift + Up Arrow | Creates a range selection between the last selected or deselected item and the item that is immediately before the currently focused one. All items outside that range are deselected. The last selected or deselected item is stored when using the mouse to click an item, or when using Enter to select or deselect an item. The last selected or deselected item is reset when the value of the MultiSelect is cleared. If the there is no previously selected item, selects only the currently focused and the previous one. At the end of the operation, the focus moves to the the item that is immediately before the currently focused one. |
Shift + Down Arrow | Creates a range selection between the last selected or deselected item and the item that is immediately after the currently focused one. All items outside that range are deselected. The last selected or deselected item is stored when using the mouse to click an item, or when using Enter to select or deselect an item. The last selected or deselected item is reset when the value of the MultiSelect is cleared. If the there is no previously selected item, selects only the currently focused and the next one. At the end of the operation, the focus moves to the the item that is immediately after the currently focused one. |
Ctrl (or Cmd on Mac) + Shift + Home | Creates a range selection from the currently focused item up to the beginning of the list. All items outside that range are deselected. |
Ctrl (or Cmd on Mac) + Shift + End | Creates a range selection from the currently focused item down to the end of the list. All items outside that range are deselected. |
Ctrl (or Cmd on Mac) + A | Selects all items present in the list. If all items are already selected, deselects them. |
Testing
The MultiSelect has been extensively tested automatically with axe-core and manually with the most popular screen readers.
Screen Readers
The MultiSelect has been tested with the following screen readers and browsers combinations:
Environment | Tool |
---|---|
Firefox | NVDA |
Chrome | JAWS |
Microsoft Edge | JAWS |