Package Exports
- @accessible/button
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@accessible/button) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
<Button>
npm i @accessible/button
An accessible button component for React that provides interop between real <button>
elements and fake ones, e.g. <div role='button'>
.
To do so, this component attaches the onClick
handler from its child component to the keyboard
events for space
and enter
. It also adds role='button'
and tabIndex={0}
properties, though
this behavior can be overridden by providing those props to the child component e.g. <Button><div tabIndex={-1}></Button>
.
Why does this exist?
In designing accessible libraries, we just don't know if our users are going to do the right thing
i.e. using a <button>
for buttons, rather than a <div>
, <span>
, or <a>
. This component
provides interoperability between <button>
elements and those faux button elements.
Quick Start
Check out the example on CodeSandbox
import Button from '@accessible/button'
const ComponentA = () => (
// Adds `space` and `enter` keydown handlers to the div,
// also adds role='button' and tabIndex='0', both
// of which can be overridden by providing those
// props on your <div>
<Button>
<div onClick={console.log} />
</Button>
// <div role='button' tabindex='0'/>
)
const ComponentB = () => (
// Won't break real buttons
<Button>
<button onClick={console.log} />
</Button>
)
const MyButton = styled.button``
const ComponentC = () => (
// Won't break real buttons, period.
<Button>
<MyButton onClick={console.log} />
</Button>
)
API
Props
Prop | Type | Default | Required? | Description |
---|---|---|---|---|
children | React.ReactElement |
undefined |
Yes | The component you want to turn into a button that handles focus and space , enter keydown events. |
LICENSE
MIT