npm.io
1.1.2 • Published 1 year ago

@curiousmedia/keyboard-trap

Licence
MIT
Version
1.1.2
Deps
0
Size
14 kB
Vulns
0
Weekly
0

Keyboard Trap

Create a keyboard trap to enhance accessibility on UI components such as modals and toggled navigation.

Example

HTML

<div class="modal">
  <button class="close">Close</button>
  
  <form>
    <label>Name<input type="text" /></label>
    <button>Submit</button>
  </form>
</div>
<button class="toggle">Open modal</button>
Javascript
const trap = new KeyboardTrap(document.querySelector('.modal'));

document.querySelector('.toggle').addEventListener('click', (e) => {
  trap.setFocusVisibleByPointerType(e); // Determines visibility of focus based on event pointer type
  trap.enable = !trap.enable;
});

document.querySelector('.close').addEventListener('click', () => {
  trap.setFocusVisibleByPointerType(e); // Determines visibility of focus based on event pointer type
  trap.enable = false;
});