react-use-focus-trap
Version:
A react hook to trap the focus within a reference
59 lines (39 loc) • 1.67 kB
Markdown
# React Focus Trap (`react-use-focus-trap`)
[](https://github.com/activenode/react-use-focus-trap/actions/workflows/ci.yml)
An extremely helpful React Hook to trap the focusable elements.
(The underlying Guideline: https://www.w3.org/TR/wai-aria-practices-1.1/examples/dialog-modal/dialog.html)
_Improvement or feedback of any kind is **always** appreciated!_
## The Issue with Modals
When implementing Modals, people tend to forget that pro-users and users that are permanently or temporarily restricted will use other inputs than the mouse - e.g., a keyboard.

Now tabbing through a modal most often leads to the focus going z- or y-wise below the Modal. Good luck finding your way back then! It's a **horror show**.
That's the point where this library comes into play. Add this hook, and lock ("trap") the focus into the modal.

## Installation
```shell
npm install react-use-focus-trap
```
## Usage
```jsx
import React from "react";
import { useFocusTrap } from "react-use-focus-trap";
export function NiceModal() {
const [trapRef] = useFocusTrap();
return (
<div class="my-weird-modal" ref={trapRef}>
Foobar
</div>
);
}
```
## Developing
There is a demo application for easy debugging included. To start developing, simply execute these commands:
```shell
npm install
npm run build
npm link
cd demo
npm install
npm start
```
This opens up a dev-server with a silly modal to test your code in.