4.1.2 • Published 4 years ago

react-button-a11y v4.1.2

Weekly downloads
358
License
BSD-3
Repository
github
Last release
4 years ago

react-button-a11y

All Contributors npm version npm downloads Build Status Coverage Status Maintainability

Make non-button elements accessible in React. This component applies the following to an element that wants to be a "button":

  • role="button"
  • tabIndex="0"
  • onKeyDown listener for enter and spacebar (like normal <button>s) that will trigger an onClick callback
  • enforced labelling via either aria-label or children

Links

Installation

npm i react-button-a11y

or

yarn add react-button-a11y

Usage

With aria-label

import ButtonA11y from 'react-button-a11y'

// ...

<ButtonA11y
  aria-label="Click this to do X"
  className="some-className"
  onClick={evt => { console.log('press happened: ', evt) }}
/>

Without aria-label

If you don't provide an aria-label, you need to provide children so that there is something to describe what clicking / tapping this button does.

import ButtonA11y from 'react-button-a11y'

// ...

<ButtonA11y
  className="some-className"
  onClick={evt => { console.log('press happened: ', evt) }}
>
  Click this to do X
</ButtonA11y>

API

PropTypeRequiredDefaultDetails
aria-labelStringyes if children absentnonePass an aria-label if you don't pass children with descriptive text
childrenNodeyes if aria-label absentnonePass children with descriptive text if you don't pass an aria-label
elementStringno'span'The default element is a div, but you can pass a span, e.g., if you like
onClickFunctionyesFunction.prototypeWhen the button is "pressed" (via Enter or Spacebar or click), this callback will be triggered with the event
strictModeBoolnotrueAn error will be thrown if enabled and you fail to pass both an aria-label and children

Contributors

Thanks goes to these wonderful people (emoji key):

Robert Pearce💻 📖 💡 🤔 ⚠️

This project follows the all-contributors specification. Contributions of any kind welcome!

4.1.2

4 years ago

4.1.1

4 years ago

4.1.0

4 years ago

4.0.0

5 years ago

3.0.1

5 years ago

3.0.0

5 years ago

2.0.0

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.1.0

5 years ago

0.0.1-security

5 years ago