| 123456789101112131415161718192021222324252627282930313233 |
- import { useRef } from 'react'
- import {
- FocusTrap as FocusTrapReact,
- FocusTrapProps as FocusTrapReactProps,
- } from 'focus-trap-react'
- export type FocusTrapProps = {
- active: FocusTrapReactProps['active']
- children: React.ReactNode
- focusTrapOptions?: FocusTrapReactProps['focusTrapOptions']
- }
- export default function FocusTrap({
- active,
- focusTrapOptions,
- children,
- }: FocusTrapProps) {
- const containerRef = useRef<HTMLDivElement>(null)
- return (
- <FocusTrapReact
- active={active}
- focusTrapOptions={{
- ...focusTrapOptions,
- fallbackFocus: () => containerRef.current as HTMLElement,
- }}
- >
- <div ref={containerRef} className="focus-trap-container" tabIndex={-1}>
- {children}
- </div>
- </FocusTrapReact>
- )
- }
|