-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
react focus trap component to focus trap - Initial commit
- Loading branch information
0 parents
commit 81138e3
Showing
5 changed files
with
5,231 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
node_modules | ||
dist | ||
.parcel-cache | ||
yarn-error.log |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
# React Focus Trap ![npm](https://img.shields.io/npm/v/react-trap-focus?color=lightgreen&label=react-trap-focus&logo=react) | ||
|
||
A react component to trap your focus for keyboard events. | ||
|
||
It is as simple as wrapping your component with the FocusTrap and rest will be be taken care of. | ||
|
||
----- | ||
|
||
## Installation | ||
|
||
Using npm: | ||
|
||
``` | ||
$ npm i react-trap-focus | ||
``` | ||
|
||
Using yarn: | ||
|
||
``` | ||
$ yarn add react-trap-focus | ||
``` | ||
---- | ||
## Usage | ||
|
||
There are 2 ways in which you can use it. | ||
|
||
### <b>1) Wrapping any component in it.</b> | ||
|
||
|
||
>The default query selector is `[role="button"]` but you can pass whatever your application sees fit. | ||
```javascript | ||
import { FocusTrap } from 'react-trap-focus' | ||
|
||
<FocusTrap> | ||
<Modal.Body> | ||
// Do Something | ||
</Modal.Body> | ||
</FocusTrap> | ||
``` | ||
|
||
```javascript | ||
import { FocusTrap } from 'react-trap-focus' | ||
|
||
<FocusTrap querySelector={'div.highlighted > p'}> | ||
// Do something / wrap any component | ||
</FocusTrap> | ||
``` | ||
|
||
|
||
### <b>2) Directly calling the method on keyboard events.</b> | ||
|
||
The package also exposes `focusTrap = (event: KeyboardEvent, elements: HTMLElement[])` function which can be used directly on keyboard events. | ||
|
||
>Pass the event and the elements list you want to be focus trapped. | ||
```javascript | ||
import { focusTrap } from 'react-trap-focus' | ||
|
||
const allButtonEls = document.querySelectorAll('[role="button"]') | ||
const onKeyDown = event => focusTrap(event, allButtonEls) | ||
return ( | ||
<div onKeyDown={onKeyDown}> | ||
// Do something | ||
</div> | ||
) | ||
``` | ||
|
||
--------- |
Oops, something went wrong.