Package Exports
- focus-trap-lite
Readme
focus-trap-lite
Lightweight (≤2kB) focus trapping utility for implementing accessible keyboard navigation constraints in modal dialogs, sidebars, and other contained UI components.
Features
- ✅ Full WAI-ARIA compliance for accessibility
- ✅ Tiny footprint (ES6 module)
- ✅ Zero dependencies
- ✅ Flexible focus control
- ✅ Automatic cleanup
- ✅ TypeScript support
Installation
npm install focus-trap-lite
Usage
Basic Implementation
import { initFocusTrap } from 'focus-trap-lite'
// Initialize trap on modal open
function openModal() {
initFocusTrap(modalElement, '.focusable')
// Add your modal opening logic
}
// Trap automatically cleans up when:
// - User closes modal
// - Focus escapes trap boundaries
// - Component unmounts
Advanced Configuration
// Container element with custom selector
initFocusTrap(document.querySelector('#modal-container'), '.custom-focusable')
// Custom selector for focusable elements
initFocusTrap(null, '#modal .focusable')
// Container element with default selector
initFocusTrap(document.querySelector('.sidebar'))
// Default selector includes standard focusable elements:
// 'a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])'
API
initFocusTrap(container?, selector?)
Parameter | Type | Description |
---|---|---|
container | Element |
(Optional) DOM element to scope the focus trap. When omitted, uses document.body |
selector | string |
(Optional) CSS selector for focusable elements within container. Default: standard focusable elements |
Behavior:
- Creates keyboard navigation constraints
- Handles boundary focus wrapping
- Automatic cleanup triggers:
- When trapped container is removed from DOM
- When calling function returns
- On Escape key press
- Dynamic element support
- Focus restoration
- ARIA role management
Browser Support
Modern browsers with ES6 support:
![]() Chrome |
![]() Firefox |
![]() Safari |
---|---|---|
88+ | 78+ | 14.1+ |
For legacy browser support, add Array.prototype.at() polyfill.
Contributing
- Fork the repository
- Clone your fork
git clone https://github.com/your-username/focus-trap-lite.git
- Install dependencies
npm install
- Create feature branch
git checkout -b feature/your-feature
- Commit changes
- Push to branch
- Create Pull Request
License
MIT © Pipecraft
📝 Report issues on GitHub