import * as React from 'react'; import { BaseProps } from '../../wui-core/src/iCore'; import { ButtonSize, ButtonHtmlType } from '../../wui-button/src/iButton'; export type Align = { points: [string, string]; offset?: [number, number]; targetOffset?: [number, number]; overflow?: { adjustX?: number; adjustY?: number; }; }; export type DropdownPlacement = 'topLeft' | 'topCenter' | 'topRight' | 'bottomLeft' | 'bottomCenter' | 'bottomRight' | Align; export interface DropDownProps extends Omit { animation?: any; align?: Align; disabled?: boolean | [boolean, boolean]; hideAction?: ('click' | 'mouseLeave')[]; showAction?: ('click' | 'mouseEnter')[]; trigger?: ('click' | 'hover') | ('click' | 'hover')[]; getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement; minOverlayWidthMatchTrigger?: boolean; overlayClassName?: string; overlayStyle?: React.CSSProperties; overlay: React.ReactElement | (() => React.ReactElement) | string; onVisibleChange?: (visible: boolean) => void; placement?: DropdownPlacement; transitionName?: string; visible?: boolean; defaultVisible?: boolean; getDocument?: (element?: HTMLElement) => HTMLDocument; delay?: number; delayShow?: number; delayHide?: number; overlayMaxHeight?: boolean | number; destroyPopupOnHide?: boolean; matchNode?: HTMLElement; children?: React.ReactChild; } export interface DropDownState { visible: boolean; popupAlign: Align | null; } export interface DropdownIndexProps extends DropDownProps { delayShow?: number; mouseEnterDelay?: number; delayHide?: number; mouseLeaveDelay?: number; } export interface DropdownButtonProps extends DropdownIndexProps { size?: ButtonSize; htmlType?: ButtonHtmlType; type?: 'primary' | 'ghost' | 'dashed' | 'default'; onClick?: React.MouseEventHandler; icon?: React.ReactNode; href?: string; title?: string; triggerType?: 'button' | 'icon'; /** * @title 自定义左右两个按钮 * @des 返回一个处理好的元素数组 (buttons: ReactNode[]) => ReactNode[] * @veIgnore */ buttonsRender?: (buttons: React.ReactNode[]) => React.ReactNode[]; id?: string; } export interface DropdownButtonState { rootNode: React.ReactNode; }