import { ReactNode } from 'react';
import { BaseProps } from '../../base/props';
import { FullPosition, SimpleValues, UITheme } from '../../base/atoms';
export interface PopoverList {
    key?: string;
    name: string;
    icon?: ReactNode;
    disabled?: boolean;
    className?: string;
    action?: {
        icon?: ReactNode;
        onClick?: (e: any) => void;
    };
}
export interface WrapperPosition {
    width: number;
    height: number;
    left: number;
    top: number;
    right: number;
}
export type BasePopover<POPUP_PROPS> = POPUP_PROPS & BaseProps & {
    theme: UITheme;
    /**
    * 弹出位置，里面具体的参数值可以参考上面的位置自定义例子
    */
    location: FullPosition
    /**
    * 选项列表
    */
    list: PopoverList[]
    /**
    * 是否展示气泡弹出层
    */
    visible: boolean
    /**
    * 出现位置的偏移量
    */
    offset: SimpleValues
    arrowOffset: number;
    /**
    * 自定义目标元素 id
    */
    targetId: string
    /**
    * 是否显示小箭头
    */
    showArrow: boolean
    /**
    * 是否在点击外部元素后关闭菜单
    */
    closeOnOutsideClick: boolean
    /**
    * 是否在点击选项后关闭
    */
    closeOnActionClick: boolean
    children?: ReactNode;
    /**
    * 点击切换 popover 展示状态
    */
    onClick: () => void
    /**
    * 点击菜单时触发
    */
    onOpen: () => void
    /**
    * 关闭菜单时触发
    */
    onClose: () => void
    /**
    * 点击选项时触发
    */
    onSelect: (item: PopoverList, index: number) => void
};
