/// <reference types="react" />

import * as React from 'react';

interface HTMLAttributesWeak extends React.HTMLAttributes<HTMLElement> {
    onSelect?: any;
}

export interface SplitButtonProps extends HTMLAttributesWeak {
    /**
     * 按钮的类型
     */
    type?: 'normal' | 'primary' | 'secondary';

    /**
     * 按钮组的尺寸
     */
    size?: 'small' | 'medium' | 'large';

    /**
     * 主按钮的文案
     */
    label?: React.ReactNode;

    /**
     * 设置标签类型
     */
    component?: 'button' | 'a';

    /**
     * 是否为幽灵按钮
     */
    ghost?: 'light' | 'dark' | false | true;

    /**
     * 默认激活的菜单项（用法同 Menu 非受控）
     */
    defaultSelectedKeys?: Array<any>;

    /**
     * 激活的菜单项（用法同 Menu 受控）
     */
    selectedKeys?: Array<any>;

    /**
     * 菜单的选择模式
     */
    selectMode?: 'single' | 'multiple';

    /**
     * 选择菜单项时的回调，参考 Menu
     */
    onSelect?: () => void;

    /**
     * 点击菜单项时的回调，参考 Menu
     */
    onItemClick?: () => void;

    /**
     * 触发按钮的属性（支持 Button 的所有属性透传）
     */
    triggerProps?: {};

    /**
     * 弹层菜单的宽度是否与按钮组一致
     */
    autoWidth?: boolean;

    /**
     * 弹层是否显示
     */
    visible?: boolean;

    /**
     * 弹层默认是否显示
     */
    defaultVisible?: boolean;

    /**
     * 弹层显示状态变化时的回调函数
     */
    onVisibleChange?: (visible: boolean, reason: string) => void;

    /**
     * 弹层的触发方式
     */
    popupTriggerType?: 'click' | 'hover';

    /**
     * 弹层对齐方式, 详情见Overlay align
     */
    popupAlign?: string;

    /**
     * 弹层自定义样式
     */
    popupStyle?: {};

    /**
     * 弹层自定义样式类
     */
    popupClassName?: string;

    /**
     * 透传给弹层的属性
     */
    popupProps?: {};

    /**
     * 透传给 Menu 的属性
     */
    menuProps?: {};

    /**
     * 透传给 左侧按钮 的属性
     */
    leftButtonProps?: {};
}

export default class SplitButton extends React.Component<
    SplitButtonProps,
    any
> {}
