import React from "react"; import { StyledProps } from "../_type"; import { PopoverProps, Trigger, TriggerWithProps } from "../popover"; import { SizeType } from "../_type/Size"; /** * 下拉类组件通用 Props */ export interface CommonDropdownProps extends Pick { /** * 是否默认展开 */ defaultOpen?: boolean; /** * 是否展开(受控) */ open?: boolean; /** * 展开变化回调(受控) */ onOpenChange?: (open: boolean) => void; /** * 下拉出现的位置 * @default "bottom-start"(从底部弹出,左侧对齐) */ placement?: PopoverProps["placement"]; /** * 弹出位置偏离参考位置的位移 * * 如: `10`、`"50%"`、`"10 + 10%"`、`[10, 10]` * @default 5 */ placementOffset?: PopoverProps["placementOffset"]; /** * 是否在父容器滚动时关闭 * @default true */ closeOnScroll?: PopoverProps["closeOnScroll"]; } export interface DropdownKeyDownContext { /** * 当前是否展开 */ open: boolean; } export interface DropdownProps extends Omit, StyledProps { /** * 下拉按钮文本 */ button: React.ReactNode; /** * 触发方式 * * - `2.7.0` 支持自定义 Trigger * * @default "click" */ trigger?: "click" | "hover" | Trigger | TriggerWithProps; /** * 下拉内容 * @docType React.ReactNode | ((close: () => void) => React.ReactNode) */ children: React.ReactNode | ((close: () => void) => React.ReactNode); /** * 弹出区域底部内容 * @since 2.6.3 */ footer?: React.ReactNode; /** * 下拉按钮的外观: * * - `default` 无边框,适用于页面标题和表格内 * - `button` 为按钮风格,有边框,多用于操作栏中 * - `link` 为超链接风格 * - `filter` 为过滤组件风格,多用于表头筛选 * - `pure` 无额外样式 * * 原有 `raw` 类型建议使用 `pure` 进行改造 * * @default "default" * @since 2.0.9 */ appearance?: "default" | "button" | "link" | "filter" | "pure"; /** * 下拉框尺寸,使用 `"full"` 撑满容器宽度 */ size?: SizeType | "auto"; /** * 是否在下拉内容点击时关闭 * @default true */ clickClose?: boolean; /** * 是否禁用 * @default false */ disabled?: boolean; /** * 弹出区域是否与下拉按钮同宽 * @default false */ matchButtonWidth?: boolean; /** * 弹出区域自定义类名 */ boxClassName?: string; /** * 弹出区域自定义样式 */ boxStyle?: React.CSSProperties; /** * 弹出区域是否自适应可视区域大小 * * 内容超出时可视区域大小出现内部滚动 * * @default false * @since 2.2.4 */ boxAdaptable?: boolean; /** * 是否支持清空 * @default false * @since 2.3.2 */ clearable?: boolean; /** * 点击清空回调 * @since 2.3.2 */ onClear?: (event: React.MouseEvent) => void; /** * 打开时回调 */ onOpen?: () => void; /** * 关闭时回调 */ onClose?: () => void; /** * 是否在 `children` 变化时更新下拉浮层位置 * * **更新位置可防止浮层溢出屏幕或产生偏移** * * @default false */ updateOnChildrenChange?: boolean; /** * 触发下拉浮层位置更新的变量依赖列表 * * **更新位置可防止浮层溢出屏幕或产生偏移** * * @since 2.6.14 * @default [] */ updateDeps?: any[]; /** * 当焦点在 Dropdown 按钮时的键盘事件,返回 `false` 禁用默认行为 */ onKeyDown?: (event: React.KeyboardEvent, context: DropdownKeyDownContext) => void | boolean; /** * 阻止下拉面板中 MouseDown 事件 * * **防止点击下拉面板触发 Dropdown 按钮 onBlur** * * @since 2.7.0 * @default false */ preventMouseDown?: boolean; /** * 元素聚焦事件 */ onFocus?: React.DOMAttributes["onFocus"]; /** * 元素失焦事件 * @since 2.7.0 */ onBlur?: React.DOMAttributes["onBlur"]; /** * **\[Deprecated\]** 请使用 `appearance` 属性 * @deprecated */ appearence?: "default" | "button" | "link" | "filter" | "pure"; /** * **\[Deprecated\]** 请使用 `matchButtonWidth` 属性 * @default false * @deprecated */ boxSizeSync?: boolean; } export declare const DropdownBox: React.ForwardRefExoticComponent<{ onClick?: (event: React.MouseEvent) => void; children?: React.ReactNode; footer?: React.ReactNode; adaptable?: boolean; preventMouseDown?: boolean; } & StyledProps & React.RefAttributes>; export declare const Dropdown: React.FunctionComponent> & { Footer: React.ForwardRefExoticComponent>; };