Search results

Accessibility in React RadioButton component

30 Sep 2022 / 2 minutes to read

The web accessibility makes web content and web applications more accessible for people with disabilities. It especially helps in dynamic content change and development of advanced user interface controls with AJAX, HTML, JavaScript, and related technologies. RadioButton provides built-in compliance with WAI-ARIA specifications. WAI-ARIA support is achieved through the attributes like aria-checked and aria-disabled. It helps the people with disabilities by providing information about the widget for assistive technology in the screen readers. RadioButton component contains the radiobutton role.

Properties Functionality
role Indicates the type of input element.
aria-checked Indicates whether the input is checked, unchecked, or represents mixture of checked and unchecked values.
aria-disabled Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.

Keyboard interaction

Keyboard shortcuts Actions
Up/Left arrow Move and select the previous options.
Down/Right arrow Move and select the next options.
Source
Preview
app.jsx
index.html
index.css
app.tsx
Copied to clipboard
import { enableRipple } from '@syncfusion/ej2-base';
import { RadioButtonComponent } from '@syncfusion/ej2-react-buttons';
import * as React from 'react';
import * as ReactDom from 'react-dom';
enableRipple(true);
// To render RadioButton.
class App extends React.Component {
    render() {
        return (<ul>
            <li><RadioButtonComponent class="radiobutton" label="Option 1" name="state" checked={true}/></li>
            <li><RadioButtonComponent class="radiobutton" label="Option 2" name="state"/></li>
            <li>
                <RadioButtonComponent class="radiobutton" label="Option 3" name="state"/>
                <RadioButtonComponent class="radiobutton" label="Option 4" name="state"/>
            </li>
        </ul>);
    }
}
ReactDom.render(<App />, document.getElementById('radio-button'));
Copied to clipboard
<!DOCTYPE html>
<html lang="en">

<head>
    <title>Syncfusion React Button</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="description" content="Essential JS 2 for React Components" />
    <meta name="author" content="Syncfusion" />
    <link href="//cdn.syncfusion.com/ej2/20.3.47/ej2-base/styles/material.css" rel="stylesheet" />
    <link href="//cdn.syncfusion.com/ej2/20.3.47/ej2-buttons/styles/material.css" rel="stylesheet" />
	<link href="index.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
    <script src="systemjs.config.js"></script>
</head>

<body>
        <div id='radio-button'>
            <div id='loader'>Loading....</div>
        </div>
</body>

</html>
Copied to clipboard
#loader {
	color: #008cff;
	height: 40px;
	left: 45%;
	position: absolute;
	top: 45%;
	width: 30%;
}

.e-radio-wrap {
  margin-top: 18px;
}

li {
  list-style: none;
  margin: 25px auto;
}

#text {
  font-size: 16px;
}

.e-radio-wrapper{
	margin-right: 2rem;
}
Copied to clipboard
import { enableRipple } from '@syncfusion/ej2-base';
import { RadioButtonComponent } from '@syncfusion/ej2-react-buttons';
import * as React from 'react';
import * as ReactDom from 'react-dom';

enableRipple(true);

// To render RadioButton.
class App extends React.Component<{}, {}> {
  public render() {
    return (
      <ul>
            <li><RadioButtonComponent  class="radiobutton" label="Option 1" name="state" checked={true} /></li>
            <li><RadioButtonComponent  class="radiobutton" label="Option 2" name="state" /></li>
            <li>
                <RadioButtonComponent  class="radiobutton" label="Option 3" name="state" />
                <RadioButtonComponent  class="radiobutton"label="Option 4" name="state" />
            </li>
        </ul>
    );
  }
}
ReactDom.render(<App />, document.getElementById('radio-button'));