Skip to content

Commit

Permalink
react focus trap component to focus trap - Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
darshangit committed Jun 13, 2022
0 parents commit 81138e3
Show file tree
Hide file tree
Showing 5 changed files with 5,231 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
dist
.parcel-cache
yarn-error.log
69 changes: 69 additions & 0 deletions README.md
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>
)
```

---------
Loading

0 comments on commit 81138e3

Please sign in to comment.