Socket
Socket
Sign inDemoInstall

@daniel.husar/babel-plugin-react-add-a11y-props

Package Overview
Dependencies
0
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @daniel.husar/babel-plugin-react-add-a11y-props

Add accessibility attributes to react elements when there is onClick handler on them


Version published
Weekly downloads
2
Maintainers
1
Install size
6.88 kB
Created
Weekly downloads
 

Readme

Source

babel-plugin-react-add-a11y-props https://travis-ci.org/danielhusar/babel-plugin-react-add-a11y-props NpmLicense npm

Add accessibility attributes to react dom elements

This plugin will add onKeyUp, role="button" and tabIndex="0" to all html react elements that have onClick handler. It will not override those attributes if they are already defined, and onKeyUp will not be added to anchors with href, inputs, buttons and selects. onKeyUp will fire onClick event when pressed enter or space.

Install

npm install --save-dev @daniel.husar/babel-plugin-react-add-a11y-props
yarn add @daniel.husar/babel-plugin-react-add-a11y-props --dev

Usage

Add @daniel.husar/babel-plugin-react-add-a11y-props to your plugins array in .babelrc

See the examples for what comes in and out:

In:

<span onClick={cb} />
<div onClick={cb} />
<article onClick={cb} />
<a onClick={() => foo()} />

Out:

<span onClick={cb} onKeyUp={e => (e.keyCode === 13 || e.keyCode === 32) && cb(e)} tabIndex="0" role="button" />
<div onClick={cb} onKeyUp={e => (e.keyCode === 13 || e.keyCode === 32) && cb(e)} tabIndex="0" role="button" />
<article onClick={cb} onKeyUp={e => (e.keyCode === 13 || e.keyCode === 32) && cb(e)} tabIndex="0" role="button" />
<a onClick={() => foo()} onKeyUp={e => (e.keyCode === 13 || e.keyCode === 32) && (() => foo())(e)} tabIndex="0" role="button" />

In:

<input type="submit" onClick={cb} />
<button onClick={cb} />
<select onClick={() => foo()} />

Out:

<input type="submit" onClick={cb} tabIndex="0" />
<button onClick={cb} tabIndex="0" />
<select onClick={() => foo()} tabIndex="0" />

In:

<div tabIndex="-1" onClick={cb} />
<div tabIndex="1" onClick={cb} />
<div role="foo" onClick={cb} />

Out:

<div tabIndex="-1" onClick={cb} />
<div tabIndex="1" onClick={cb} onKeyUp={e => (e.keyCode === 13 || e.keyCode === 32) && cb(e)} role="button" />
<div role="foo" onClick={cb} onKeyUp={e => (e.keyCode === 13 || e.keyCode === 32) && cb(e)} tabIndex="0" />

Disclaimer

The event passed into the onClick callback from keyUp event is not click but keyboard event which is sligtly different so you should account for both.

Right now this plugin will not take into account onClick added via spread objects.

License

MIT © Daniel Husar

Keywords

FAQs

Last updated on 04 Dec 2018

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc