@blueprintjs/core
Version:
Core styles & components
86 lines (85 loc) • 3.3 kB
TypeScript
/// <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;
}