svelte-focus-trap
TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published

svelte-focus-trap

npm

A svelte directive that will trap focus within an element. You can navigate child focusable elements with up, down, tab, shift + tab, alt + tab. I have attempted to match the accesibility best practices listed here.

This could be useful if you wanted to trap focus within something like a modal. When you gotta... focus-trap and focus-wrap.

  • Does not auto focus the first item.
  • When pressing down or tab:
    • When the known focusables are not focused, gives focus to the first item.
    • If focus is on the last known focusable, it gives focus to the first item.
    • Gives focus to the next item.
  • When pressing up or shift+tab or alt+tab:
    • When the known focusables are not focused, gives focus to the last item.
    • If focus is on the first known focuable, it gives focus to the last item.
    • Gives focus to the previous item.
  • When pressing home:
    • Gives focus to the first item.
  • When pressing end:
    • Gives focus to the last item.
  • Attempts to skip hidden items and items with display none of tabindex="-1".

Todos:

  • [ ] Demo
  • [ ] Tests + Ci

Installation

npm install --save-dev svelte-focus-trap

Usage

<script>
  import { focusTrap } from 'svelte-focus-trap'
</script>

{#if showing}
  <div
    use:focusTrap
  > 
    <!-- ...modal contents -->
  </div>
{/if}

License

This project is licensed under the MIT License.

Readme

Keywords

none

Package Sidebar

Install

npm i svelte-focus-trap

Weekly Downloads

1,168

Version

1.2.0

License

MIT

Unpacked Size

9.03 kB

Total Files

8

Last publish

Collaborators

  • greglarrenaga