React suite is a library of React components, sensible UI design, and a friendly development experience. It is supported in all major browsers. It provides pre-built components of React which can be used easily in any web application.
In this article, we’ll learn about React suite Modal Accessibility. Accessibility is a tool or a way that enables a website accessible easily by the user by providing features like buttons, breadcrumbs, checkboxes or dropdowns, etc. Modal accessibility describes how a modal is accessible like a keyboard, states, properties, etc. The modal component has default role–dialog, aria-modal set to true, aria-labelledby, aria-describedby for title and description of modal respectively that is defined by WAI-ARIA.
Modal Props:
- autoFocus: The Modal is opened and is automatically focused on its own when this is set to true.
- backdrop: The Modal will display the background in its opened state when this is set to true.
- backdropClassName: It is used to add an optional extra class name to .modal-backdrop.
- classPrefix: It denotes the prefix of the component CSS class.
- dialogClassName: It is used for the CSS class applied to Dialog DOM nodes.
- enforceFocus: The Modal will prevent the focus from leaving when opened when this is set to true.
- keyboard: It closes a modal when the ESC key is pressed.
- onClose: It is a callback function fired when Modal hides.
- onEnter: It is a callback function that is triggered before the Modal transitions in.
- onEntered: It is a callback function that is triggered after the Modal finishes transitioning in.
- onEntering: It is a callback function that is triggered as the Modal begins to transition in.
- onExit: It is a callback function that is triggered right before the Modal transitions out.
- onExited: It is a callback function that is triggered after the Modal finishes transitioning out.
- onExiting: It is a callback function that is triggered as the Modal begins to transition out.
- onOpen: It is a callback function that is triggered when Modal displays.
- overflow: It automatically sets the height when the body content is too long.
- size: It sets the Modal size.
Modal.Header Props:
- as: It is used to add a custom element for this component.
- classPrefix: It denotes the prefix of the component CSS class.
- closeButton: It displays the close button.
- onHide: It is a callback function that is triggered when Modal is hidden.
Modal.Title Props:
- as: It is used to add a custom element for this component.
- classPrefix: It denotes the prefix of the component CSS class.
Modal.Footer Props:
- as: It is used to add a custom element for this component.
- classPrefix: It denotes the prefix of the component CSS class.
Modal.Body Props:
- as: It is used to add a custom element for this component.
- classPrefix: It denotes the prefix of the component CSS class.
Syntax:
import { Modal } from "rsuite"; export default function App() { return ( <Modal keyboard={false} aria-labelledby="modal-title" aria-describedby="modal-description" > ... </Modal> ); }
Creating React Application And Installing Module:
Step 1: Create a React application using the given command:
npm create-react-app projectname
Step 2: After creating your project, move to it using the given command:
cd projectname
Step 3: Now Install the rsuite node package using the given command:
npm install rsuite
Project Structure: Now your project structure should look like the following:
Step to Run Application: Run the application using the following command from the root directory of the project:
npm start
Example 1: Below example demonstrates the modal when the keyboard interaction is ‘true’.
App.js
import { useState } from "react" ; import { Button, Modal } from "rsuite" ; import "rsuite/dist/rsuite.min.css" ; export default function App() { const [open, setOpen] = useState( false ); const handleOpen = () => setOpen( true ); const handleClose = () => setOpen( false ); return ( <center> <div> <h2>neveropen</h2> <h4 style={{ color: "green" }}> React Suite Modal Accessibility</h4> <div style={{ marginTop: 20, width: 400 }}> <div className= "modal-container" > <Button onClick={handleOpen} appearance= "primary" color= "blue" > Open </Button> <Modal open={open} onClose={handleClose} keyboard={ true }> <Modal.Header> <Modal.Title>Error</Modal.Title> </Modal.Header> <Modal.Body> <div> <h3> Close the Modal using ESC key. </h3> </div> </Modal.Body> <Modal.Footer> <Button onClick={handleClose} appearance= "primary" color= "blue" > Done </Button> <Button onClick={handleClose} appearance= "subtle" > Cancel </Button> </Modal.Footer> </Modal> </div> </div> </div> </center> ); } |
Output:
Note: In the above example, the modal is closed using the ‘Esc’ key.
Example 2: Below example demonstrates the usage of aria-labelledby and aria-described in the modal.
App.js
import { useState } from "react" ; import { Button, ButtonToolbar, Modal } from "rsuite" ; import "rsuite/dist/rsuite.min.css" ; export default function App() { const [open, setOpen] = useState( false ); const handleOpen = () => setOpen( true ); const handleClose = () => setOpen( false ); return ( <center> <div> <h2>neveropen</h2> <h4 style={{ color: "green" }}> React Suite Modal Accessibility</h4> <div style={{ marginTop: 20, width: 400 }}> <div> <ButtonToolbar> <Button onClick={handleOpen}> Open </Button> </ButtonToolbar> <Modal open={open} onClose={handleClose} aria-labelledby= "modal-title" aria-describedby= "modal-description" > <Modal.Header> <Modal.Title id= "modal-title" > neveropen </Modal.Title> </Modal.Header> <Modal.Body id= "modal-description" > Welcome to world of Coding. </Modal.Body> </Modal> </div> </div> </div> </center> ); } |
Output:
Reference: https://rsuitejs.com/components/modal/#accessibility