Open In App

React Suite Modal Accessibility

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 roledialog, aria-modal set to true, aria-labelledby, aria-describedby for title and description of modal respectively that is defined by WAI-ARIA.



Modal Props:

Modal.Header Props:



 

Modal.Title Props:

Modal.Footer Props:

Modal.Body Props:

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’.




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>GeeksforGeeks</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.




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>GeeksforGeeks</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">
                                    GeeksforGeeks
                                 </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


Article Tags :