Docs
useFocusTrap
Trap focus within a specific element, useful for modals and accessibility.
Loading...
Installation
pnpm dlx shadcn@latest add https://usekit.kiron.dev/k/use-focus-trap
Usage
"use client"
import * as React from "react"
import { useFocusTrap } from "@/hooks/use-focus-trap"
export function Component() {
const [isModalOpen, setIsModalOpen] = React.useState(false)
const modalRef = useFocusTrap<HTMLDivElement>(
isModalOpen,
'input[name="name"]'
)
const openModal = () => setIsModalOpen(true)
const closeModal = () => setIsModalOpen(false)
return (
<div>
<button onClick={openModal}>Open Modal</button>
{isModalOpen && (
<div
ref={modalRef}
className="fixed inset-0 flex items-center justify-center bg-black/50"
>
<div className="rounded bg-white p-4">
<h2>Modal Title</h2>
<input name="name" placeholder="Enter your name" />
<button onClick={closeModal}>Close Modal</button>
</div>
</div>
)}
</div>
)
}
API Reference
Parameters
Name | Type | Description | Default Value | Optional |
---|---|---|---|---|
isActive | boolean | Whether the focus trap is active. | false | No |
autoFocusSelector | string | Selector for the element to focus. | undefined | Yes |
Return Values
Name | Type | Description |
---|---|---|
ref | React.RefObject<HTMLElement> | Ref to the element that should trap focus. |