import Vue from 'vue';
import { PopupProps } from '../popup';
import { LNode } from '../../common.type';
export interface TypeDropdownProps {
    direction?: 'left' | 'right';
    disabled?: boolean;
    hideAfterItemClick?: boolean;
    maxColumnWidth?: string | number;
    maxHeight?: number | string;
    minColumnWidth?: string | number;
    options?: Array<DropdownOption>;
    placement?: 'top' | 'left' | 'right' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom';
    popupProps?: PopupProps;
    trigger?: 'hover' | 'click' | 'focus' | 'context-menu';
    onClick?: (dropdownItem: DropdownOption, context: {
        e: MouseEvent;
    }) => void;
}
export interface TypeDropdownItemProps {
    active?: boolean;
    content?: string | LNode;
    disabled?: boolean;
    divider?: boolean;
    value?: string | number | {
        [key: string]: any;
    };
    path?: string;
    hasChildren?: boolean;
    onClick?: (dropdownItem: DropdownOption, context: {
        e: MouseEvent;
    }) => void;
}
export declare type DropdownOption = {
    children?: Array<TypeDropdownItemProps>;
} & TypeDropdownItemProps & Record<string, any>;
export interface DropdownItemInstance extends Vue {
    dropdown: {
        handleMenuClick: (data: DropdownOption, context: {
            e: MouseEvent;
        }) => void;
    };
}
export interface DropdownMenuInstance extends Vue {
    dropdown: {
        options: DropdownOption[];
        maxHeight: number;
        minColumnWidth: number;
        maxColumnWidth: number;
    };
}
