/* eslint-disable @typescript-eslint/naming-convention */ import * as React from 'react'; export interface TrapFocusProps { /** * If `true`, focus is locked. */ open: boolean; /** * Returns an array of ordered tabbable nodes (i.e. in tab order) within the root. * For instance, you can provide the "tabbable" npm dependency. * @param {HTMLElement} root */ getTabbable?: (root: HTMLElement) => string[]; /** * This prop extends the `open` prop. * It allows to toggle the open state without having to wait for a rerender when changing the `open` prop. * This prop should be memoized. * It can be used to support multiple trap focus mounted at the same time. * @default function defaultIsEnabled() { * return true; * } */ isEnabled?: () => boolean; /** * A single child content element. */ children: React.ReactElement; /** * If `true`, the trap focus will not automatically shift focus to itself when it opens, and * replace it to the last focused element when it closes. * This also works correctly with any trap focus children that have the `disableAutoFocus` prop. * * Generally this should never be set to `true` as it makes the trap focus less * accessible to assistive technologies, like screen readers. * @default false */ disableAutoFocus?: boolean; /** * If `true`, the trap focus will not prevent focus from leaving the trap focus while open. * * Generally this should never be set to `true` as it makes the trap focus less * accessible to assistive technologies, like screen readers. * @default false */ disableEnforceFocus?: boolean; /** * If `true`, the trap focus will not restore focus to previously focused element once * trap focus is hidden. * @default false */ disableRestoreFocus?: boolean; } /** * Utility component that locks focus inside the component. * * Demos: * * - [Trap Focus](https://mui.com/components/trap-focus/) * * API: * * - [Unstable_TrapFocus API](https://mui.com/api/unstable-trap-focus/) */ export default function Unstable_TrapFocus(props: TrapFocusProps): JSX.Element;