UNPKG

@blueprintjs/core

Version:

Core styles & components

86 lines (85 loc) 3.3 kB
/// <reference types="react" /> import type { State as PopperState } from "@popperjs/core"; import { AbstractPureComponent } from "../../common"; import { type PopoverProps } from "./popoverProps"; import type { DefaultPopoverTargetHTMLProps } from "./popoverSharedProps"; export interface PopoverState { hasDarkParent: boolean; isClosingViaEscapeKeypress: boolean; isOpen: boolean; } /** * Popover component, used to display a floating UI next to and tethered to a target element. * * @template T target element props interface. Consumers wishing to stay in sync with Blueprint's default target HTML * props interface should use the `DefaultPopoverTargetHTMLProps` type (although this is already the default type for * this type param). * @see https://blueprintjs.com/docs/#core/components/popover */ export declare class Popover<T extends DefaultPopoverTargetHTMLProps = DefaultPopoverTargetHTMLProps> extends AbstractPureComponent<PopoverProps<T>, PopoverState> { static displayName: string; static defaultProps: PopoverProps; state: PopoverState; /** * DOM element that contains the popover. * When `usePortal={true}`, this element will be portaled outside the usual DOM flow, * so this reference can be very useful for testing. * * @public for testing */ popoverElement: HTMLElement | null; /** Popover ref handler */ private popoverRef; /** * Target DOM element ref. * * N.B. this must be a ref object since we pass it to `<ResizeSensor>`, which needs to know about the target * DOM element in order to observe its dimensions. * * @public for testing */ targetRef: import("react").RefObject<HTMLElement>; /** * Overlay2 transition container element ref. */ private transitionContainerElement; private cancelOpenTimeout?; private isMouseInTargetOrPopover; private lostFocusOnSamePage; private popperScheduleUpdate?; private isControlled; private isArrowEnabled; private isHoverInteractionKind; private getPopoverElement; private getIsOpen; render(): import("react/jsx-runtime").JSX.Element | null; componentDidMount(): void; componentDidUpdate(props: PopoverProps<T>, state: PopoverState): void; protected validateProps(props: PopoverProps<T>): void; /** * Instance method to instruct the `Popover` to recompute its position. * * This method should only be used if you are updating the target in a way * that does not cause it to re-render, such as changing its _position_ * without changing its _size_ (since `Popover` already repositions when it * detects a resize). */ reposition: () => Promise<Partial<PopperState> | null> | undefined; private renderTarget; private renderPopover; private getPopperModifiers; private handleTargetFocus; private handleTargetBlur; private handleTargetContextMenu; private handleMouseEnter; private handleMouseLeave; private handlePopoverClick; private handleOverlayClose; private handleKeyDown; private handleTargetClick; private isSimulatedButtonClick; private setOpenState; private updateDarkParent; private isElementInPopover; private getIsContentEmpty; }