import { ReactElement, ReactNode, Ref } from 'react'; import { DivProps, DefineElement, Placement } from '../../types'; export type Trigger = 'click' | 'hover' | 'focus' | 'enter' | 'contextMenu'; export interface PopperProps extends Omit { /** 默认的ref会传递至`children` */ popperRef?: Ref; /** 若不指定anchorElement,默认使用{@link children}作为目标锚点元素 */ anchorElement?: DefineElement; /** 弹框渲染的容器元素,默认为{@link document.body} */ container?: DefineElement; /** 同{@link container},但会在useEffect后取值,且只会执行一次 */ effectContainer?: DefineElement; /** 汽泡里的内容 */ content?: ReactNode; /** 弹框偏离元素的距离 */ offset?: number; /** 自动打开弹框的触发方法,默认为`hover` */ trigger?: Trigger | Trigger[] | false; /** 点击元素时关闭,主要用于某元素同时存在tooltip与其他popper的情况,点击时打开popper同时关闭tooltip */ clickToClose?: boolean; placement?: Placement; variant?: 'zoom' | 'collapse'; /** * 限制弹框的宽度或高度与children的一致 * @enum {@link variant}为`zoom`时,默认为`false` * @enum {@link variant}为`collapse`时,默认为`true` */ sizeAdaptable?: boolean; /** trigger{@link trigger}包含"hover"时,鼠标移入移的延迟时间,默认为`150(ms)` */ mouseEnterDelay?: number; /** 默认为`150(ms)` */ mouseLeaveDelay?: number; defaultOpen?: boolean; open?: boolean; onOpenChange?(open: boolean): void; onOpenChangeEnd?(open: boolean): void; disabled?: boolean; /** 点击内部选项是否自动关闭popper */ autoClose?: boolean; /** * @enum {true} 跟随父组件强制渲染; * @enum {false} 只有打开状态渲染,关闭后销毁; * @enum {undefined} 第一次打开时渲染,跟随父组件销毁。 */ forceRender?: boolean; /** 打开与关闭是否渲染过度动画,默认为`true` */ animation?: boolean; children?: ReactElement; } export interface PopperRef extends HTMLDivElement { fit(options?: { forcePlacement?: Placement; openAnimation?: boolean; }, beforeOpen?: () => void): void; } export declare function Popper({ ref, popperRef, anchorElement, container, effectContainer, content, offset, trigger, clickToClose, placement, variant, sizeAdaptable, mouseEnterDelay, mouseLeaveDelay, defaultOpen, open, onOpenChange, onOpenChangeEnd, disabled, autoClose, forceRender, animation, children, ...props }: PopperProps): import("@emotion/react/jsx-runtime").JSX.Element;