import React from 'react'; export interface ActionParam { updatePosition: () => void; } /** * CSS3变换原点。 */ export interface TransitionOrigin { horizontal: number | 'left' | 'center' | 'right'; vertical: number | 'top' | 'center' | 'bottom'; } export interface PopoverProps { /** * 锚点元素。用于设置popover的显示位置。 * * @type {Element} */ anchorEl?: Element | null; /** * 锚点原点,这是锚点元素上的用来显示popover出来的元素起始位置。 * * 如果anchorReference是`anchorPosition`,则`anchorOrigin`不起作用。 * * @type {({ * vertical: 'top' | 'center' | 'bottom', * horizontal: 'left' | 'center' | 'right', * })} */ anchorOrigin?: { vertical: 'top' | 'center' | 'bottom'; horizontal: 'left' | 'center' | 'right'; }; /** * 锚点位置 * * @type {{ * left: number, * top: number, * }} */ anchorPosition?: { left: number; top: number; }; /** * 锚点类型。默认为`anchorEl`。 * * @type {('anchorEl' | 'anchorPosition')} */ anchorReference?: 'anchorEl' | 'anchorPosition'; children?: React.ReactNode; /** * popover的阴影程度。 * * @type {number=8} */ elevation?: number; /** * 指定popover能离window的最近距离。默认为16px。 * * @type {number = 16} */ marginThreshold?: number; /** * 如果设置为true,则显示popover * * @type {boolean} */ open: boolean; role?: string; /** * 指定CSS3 transform的变换原点。 * * @type {({ * horizontal: number | 'left' | 'center' | 'right', * vertical: number | 'left' | 'center' | 'right', * })} */ transformOrigin?: TransitionOrigin; /** * 指定过渡动画。默认为Grow。 * * @type {(string | Component<*>)} */ transition?: React.ElementType; /** * 指定过渡动画的时长。 * * @type {number} */ transitionDuration?: number; /** * 指定paper的属性。 * * @type {Record} */ PaperProps?: Record; /** * 在进入'entering'阶段之前调用的回调函数。 * * @type {(node: HTMLElement, isAppearing: boolean) => void} */ onEnter?: (node: HTMLElement, isAppearing: boolean) => void; /** * 在设置'entered'状态之后调用的回调函数。 * * @type {(node: HTMLElement, isAppearing: boolean) => void} */ onEntered?: (node: HTMLElement, isAppearing: boolean) => void; /** * 在设置'entering'状态之后调用的回调函数。 * * @type {(node: HTMLElement, isAppearing: boolean) => void} */ onEntering?: (node: HTMLElement, isAppearing: boolean) => void; /** * 在设置'exiting'状态之前调用的回调函数。 * * @type {(node: HTMLElement) => void} */ onExit?: (node: HTMLElement) => void; /** * 在设置'exited'状态之后调用的回调函数。 * * @type {(node: HTMLElement) => void} */ onExited?: (node: HTMLElement) => void; /** * 在设置'exiting'状态之后调用的回调函数。 * * @type {(node: HTMLElement) => void} */ onExiting?: (node: HTMLElement) => void; /** * 在组件挂载之后调用的回调函数。通过此回调函数获取到`updatePosition`动作,执行此动作可以更新popover位置。 * * ```javascript * let popoverAction; * const popover = {popoverAction = action;}} />; * popoverAction.updatePosition(); // 重新计算popover的位置。 * ``` * */ /** * 获取popover中作为锚点目标的元素的函数。这个方法与`anchorEl`属性是成对出现的。 * * `contentAnchorEl`会与`anchorEl`在位置上重叠,会让`contentAnchorEl`刚好在`anchorEl`之上。 * * @type {(popoverElement: HTMLElement) => HTMLElement} */ getContentAnchorEl?: (popoverElement?: HTMLElement) => HTMLElement; /** * 组件请求关闭的回调函数 * */ onRequestClose?: () => void; action?: (param: ActionParam) => void; /** * 是否有遮罩层 * * @type {boolean} * @memberof PopoverProps */ backdrop?: boolean; fixed?: boolean; } declare function Popover(props: PopoverProps): JSX.Element; export default Popover;