import type { Props } from "../../common/props"; export interface OverlayableProps extends OverlayLifecycleProps { /** * Whether the overlay should acquire application focus when it first opens. * * @default true */ autoFocus?: boolean; /** * Whether pressing the `esc` key should invoke `onClose`. * * @default true */ canEscapeKeyClose?: boolean; /** * Whether the overlay should prevent focus from leaving itself. That is, if the user attempts * to focus an element outside the overlay and this prop is enabled, then the overlay will * immediately bring focus back to itself. If you are nesting overlay components, either disable * this prop on the "outermost" overlays or mark the nested ones `usePortal={false}`. * * @default true */ enforceFocus?: boolean; /** * If `true` and `usePortal={true}`, the `Portal` containing the children is created and attached * to the DOM when the overlay is opened for the first time; otherwise this happens when the * component mounts. Lazy mounting provides noticeable performance improvements if you have lots * of overlays at once, such as on each row of a table. * * @default true */ lazy?: boolean; /** * Whether the application should return focus to the last active element in the * document after this overlay closes. * * @default true */ shouldReturnFocusOnClose?: boolean; /** * Indicates how long (in milliseconds) the overlay's enter/leave transition takes. * This is used by React `CSSTransition` to know when a transition completes and must match * the duration of the animation in CSS. Only set this prop if you override Blueprint's default * transitions with new transitions of a different length. * * @default 300 */ transitionDuration?: number; /** * Whether the overlay should be wrapped in a `Portal`, which renders its contents in a new * element attached to `portalContainer` prop. * * This prop essentially determines which element is covered by the backdrop: if `false`, * then only its parent is covered; otherwise, the entire page is covered (because the parent * of the `Portal` is the `
` itself). * * Set this prop to `false` on nested overlays (such as `Dialog` or `Popover`) to ensure that they * are rendered above their parents. * * @default true */ usePortal?: boolean; /** * Space-delimited string of class names applied to the `Portal` element if * `usePortal={true}`. */ portalClassName?: string; /** * The container element into which the overlay renders its contents, when `usePortal` is `true`. * This prop is ignored if `usePortal` is `false`. * * @default document.body */ portalContainer?: HTMLElement; /** * A list of DOM events which should be stopped from propagating through the Portal. * This prop is ignored if `usePortal` is `false`. * * @deprecated this prop's implementation no longer works in React v17+ * @see https://legacy.reactjs.org/docs/portals.html#event-bubbling-through-portals * @see https://github.com/palantir/blueprint/issues/6124 * @see https://github.com/palantir/blueprint/issues/6580 */ portalStopPropagationEvents?: Array