Skip to content

Focus Trap

Overview

FocusTrap constrains keyboard Tab/Shift+Tab navigation within a container element. Essential for accessible modal dialogs, drawers, and other overlays that require focus management per WAI-ARIA dialog pattern.

Usage

import { createFocusTrap } from "@paramanu/utilities-js"
const trap = createFocusTrap(dialogElement, {
onEscapeKey: () => closeDialog(),
returnFocusOnDeactivate: true,
})
trap.activate()
// Later: trap.deactivate()

Guidelines

  • Always use focus trapping with modal dialogs and overlays
  • Set returnFocusOnDeactivate to restore focus to the trigger element
  • Use onEscapeKey to handle Escape key dismissal
  • The useFocusTrap hook provides more granular control for custom use cases

API

PropTypeDefaultDescription
activebooleantrueWhether the focus trap is active
initialFocusHTMLElement | string-Element or selector to receive initial focus
returnFocusOnDeactivatebooleantrueRestore focus on deactivation
onEscapeKey() => void-Callback when Escape is pressed