Accessibility in EJ2 JavaScript Toolbar control
2 May 20236 minutes to read
The JavaScript Toolbar component has been designed, keeping in mind the WAI-ARIA specifications, and applying the WAI-ARIA roles, states and properties along with keyboard support for people who use assistive devices. WAI-ARIA accessibility support is achieved through attributes like aria-label
, and aria-orientation
. It provides information about elements in a document for assistive technology. The component implements keyboard navigation support by following the WAI-ARIA practices, and has been tested in major screen readers.
ARIA attributes
The Toolbar element is assigned the role of toolbar
.
Property | Functionalities |
---|---|
role=”toolbar” | Attribute is set to the ToolBar element describes the actual role of the element. |
aria-orientation | Attribute is set to the ToolBar element to indicates the ToolBar orientation. Default value is horizontal . |
aria-label | Attribute is set to ToolBar element describes the purpose of the set of toolbar. |
aria-expanded | Attribute is set to the ToolBar Popup element to indicates the expanded state of the popup. |
aria-haspopup | Attribute is set to the popup element to indicates the popup mode of the Toolbar. Default value is false. When popup mode is enabled, attribute value has to be changed to true . |
aria-disabled | Attribute set to the ToolBar element to indicates the disabled state of the ToolBar. |
Keyboard interaction
Keyboard navigation is enabled, by default. Possible keys are:
Key | Description |
---|---|
Left | Focuses the previous element. |
Right | Focuses the next element. |
Enter | When focused on a ToolBar command, clicking the key triggers the click of Toolbar element. When popup drop-down icon is focused, the popup opens. |
Esc(Escape) | Closes popup. |
Down | Focuses the next popup element. |
Up | Focuses the previous popup element. |
ej.base.enableRipple(true);
//Initialize Toolbar component
var toolbar = new ej.navigations.Toolbar({
width: 300,
overflowMode: 'Popup',
items: [
{ type: 'Button', prefixIcon: 'e-cut-icon', text:'Cut', showTextOn:'Overflow' },
{ type: 'Button', prefixIcon: 'e-copy-icon', text:'Copy', showTextOn:'Overflow' },
{ type: 'Button', prefixIcon: 'e-paste-icon', text:'Paste', showTextOn:'Overflow' },
{ type: 'Separator'},
{ type: 'Button', prefixIcon: 'e-bold-icon', text:'Bold', showTextOn:'Overflow' },
{ type: 'Button', prefixIcon: 'e-underline-icon', text:'Underline', showTextOn:'Overflow' },
{ type: 'Button', prefixIcon: 'e-italic-icon', text:'Italic', showTextOn:'Overflow' },
{ type: 'Separator'},
{ type: 'Button', prefixIcon: 'e-ascending-icon', text:'A-Z Sort', showTextOn:'Overflow' },
{ type: 'Button', prefixIcon: 'e-descending-icon', text:'Z-A Sort', showTextOn:'Overflow' },
]
});
//Render initialized Toolbar component
toolbar.appendTo('#element');
document.onkeyup = function (e) {
if (e.altKey && e.keyCode === 84 /* t */) {
// press alt+t to focus the component.
toolbar.element.focus();
}
};
<!DOCTYPE html><html lang="en"><head>
<title>Essential JS 2 Toolbar</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Typescript Toolbar Controls">
<meta name="author" content="Syncfusion">
<link href="index.css" rel="stylesheet">
<link href="https://cdn.syncfusion.com/ej2/23.2.4/material.css" rel="stylesheet">
<link href="https://ej2.syncfusion.com/angular/demos/src/toolbar/toolbar.component.css" rel="stylesheet">
<script src="https://cdn.syncfusion.com/ej2/23.2.4/dist/ej2.min.js" type="text/javascript"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id="container">
<div id="element"></div>
<br><br>
<div id="result"></div>
</div>
<script>
var ele = document.getElementById('container');
if(ele) {
ele.style.visibility = "visible";
}
</script>
<script src="index.js" type="text/javascript"></script>
</body></html>