import { EventEmitter } from 'eventemitter3'; /** * 气泡位置枚举 */ export type PopperPlacement = 'top-start' | 'top' | 'top-end' | 'left-start' | 'left' | 'left-end' | 'bottom-start' | 'bottom' | 'bottom-end' | 'right-start' | 'right' | 'right-end'; /** * 气泡触发类型,当前支持 click 和 hover 两种类型 */ export type PopperTrigger = 'click' | 'hover'; /** * 气泡内容类型 */ export type PopperContent = string | HTMLElement | null; export interface IPopperOption { placement: PopperPlacement; trigger: PopperTrigger; content?: PopperContent; offset?: [number, number]; className?: string; container: HTMLElement; unique?: boolean; } export declare class Popper extends EventEmitter<'show' | 'hide'> { protected get buttonRect(): DOMRect; protected static conflictPopperList: Popper[]; popperDOM: HTMLElement; contentDOM: HTMLElement; /** * 按钮实体 * @protected */ protected button: HTMLElement; /** * Popper 配置 * @protected */ protected option: IPopperOption; /** * 当前是否展示 * @protected */ protected isShow: boolean; /** * 当前气泡展示的内容 * @protected */ protected content: PopperContent; /** * 关闭气泡的定时器 * @protected */ protected timeout: number | null; constructor(button: HTMLElement, option: IPopperOption); getPopperDOM(): HTMLElement; getIsShow(): boolean; getContent(): PopperContent; setContent(content: PopperContent): void; show: () => this; hide: () => this; /** * 设置隐藏气泡的定时器 */ setHideTimeout: () => void; /** * 销毁隐藏气泡的定时器 */ clearHideTimeout: () => void; init(): void; destroy(): void; resetPopperPosition(): void; protected createPopper(): HTMLElement; protected onBtnClick: () => void; protected onPopperUnClick: (e: MouseEvent) => void; protected onBtnMouseLeave: () => void; protected onBtnMouseMove: () => void; }