1.0.1 • Published 7 years ago

focus-ring v1.0.1

Weekly downloads
2
License
ISC
Repository
github
Last release
7 years ago

focus-ring

Detect if a focus ring should be displayed

  • Tiny: less than 500 bytes gzipped
  • Flexible: let focus-ring add and remove a body class or write your own event handler
  • Unambiguous: always falls back to displaying focus rings when in doubt
  • Simple API: works with the call of only one function

focus-ring was made for the browser, but works in any JavaScript runtime if provided with a target that implements EventTarget. It supports IE9+.

Table of Contents

Install

This project uses node and npm. Go check them out if you don't have them locally installed.

$ npm install focus-ring

Then with a module bundler like rollup or webpack, use as you would anything else:

// using ES6 modules
import focusRing from 'focus-ring';

// using CommonJS modules
const focusRing = require('focus-ring');

The UMD build is also available on unpkg:

<script src="https://unpkg.co/focus-ring"></script>

You can find the library on window.focusRing.

Usage

Custom implementation

import focusRing from 'focus-ring';

const fr = focusRing();

// Specify a target other than `document.body`
focusRing(document.querySelector('#target'));

// Listen to individual focus ring events
fr.on(true, () => console.log('Display focus rings'));

// Remove event listeners
const listener = fr.on(false, () => console.log('Hide focus rings'));

fr.off(false, listener);

// Listen to both events
fr.on('*', e => console.log('Focus rings updated. New value: ' + e.value));

Default implementation

This implementation adds a class to the focus-ring target when focus rings should be displayed and removes it if they can be hidden.

import focusRing from 'focus-ring';

// Adds `.focus-ring` class to `document.body`
focusRing.addClass();

// Adds `.custom` class to element with ID `target`
focusRing.addClass('custom', document.querySelector('#target'));

// Still supports custom event handlers so you can add additional logic
focusRing.addClass().on('*', console.log);

License

ISC License © Jonas Gierer

1.0.1

7 years ago

1.0.0

7 years ago