import type { RendererProps, SchemaBoolean } from 'jamis-core'; import type { BaseSchema, ButtonLevel, SchemaClassName, SchemaExpression, SchemaIcon, SchemaObject, SchemaPopOverObject, SizeUnit, TooltipObject } from '../types'; export type DropdownItem = SchemaObject & { icon?: string; label?: string; children?: Array; onClick?: () => void; }; /** * 下拉按钮组件。 */ export interface DropdownButtonSchema extends BaseSchema { /** * 指定为 DropDown Button 类型 */ type: 'dropdown-button'; /** * 是否独占一行 `display: block` */ block?: boolean; /** * 弹出的menu设置 */ dropdown?: SchemaPopOverObject; /** * 点击外部是否关闭 * @deprecated 请使用`dropdown.closeOnOutside` */ closeOnOutside?: boolean; /** * 点击内容是否关闭 * @deprecated 请使用`dropdown.closeOnContainer`替代 */ closeOnClick?: boolean; /** 按钮隐藏就销毁, 默认是true */ unmountOnHide?: boolean; /** * 触发条件,默认是 click * @deprecated 请使用`dropdown.trigger` */ trigger?: 'click' | 'hover'; /** * 给 Button 配置 className。 */ btnClassName?: SchemaClassName; /** * 按钮文字的样式类 */ btnLabelClassName?: SchemaClassName; /** * icon 元素的 className */ iconClassName?: SchemaClassName; /** * 按钮集合,支持分组 * @deprecated 请使用body替代 */ buttons?: Array; body?: DropdownItem[]; /** * 按钮文字 */ label?: string; /** * 按钮级别,样式 */ level?: ButtonLevel | SchemaExpression; /** * 按钮提示文字,hover focus 时显示 */ tooltip?: string | TooltipObject; tooltipContainer?: any; disabledTip?: string | TooltipObject; /** * 按钮大小 */ size?: SizeUnit; /** * 对齐方式 */ align?: 'left' | 'right'; /** * 是否只显示图标。 */ iconOnly?: boolean; /** * 左侧图标 */ icon?: SchemaIcon; iconExpr?: SchemaExpression; /** * 右侧图标 */ rightIcon?: SchemaIcon; /** * 是否显示下拉按钮 */ hideCaret?: boolean; /** * 下拉菜单`.cxd-DropDown-menu` CSS 类名 * @deprecated 请使用`slots.DropDown-menu` */ menuClassName?: string; /** * `.cxd-DropDown-button`元素的样式类 * @deprecated 请使用`slots.DropDown-button` */ menuBtnClassName?: SchemaClassName; /** * 下拉打开状态, 包括初始状态, 及状态表达式 * @deprecated 请使用`dropdown.isOpened` */ isOpened?: boolean | SchemaBoolean; /** * @deprecated 使用 disabled 属性代替 */ btnDisabled?: boolean; /** * @deprecated 使用level属性代替 */ primary?: boolean; } export interface DropDownButtonProps extends Pick, Omit { label?: SchemaExpression; menuClassName?: string; level?: ButtonLevel; popOverContainer?: any; children?: any; } export interface DropDownButtonRendererProps extends DropDownButtonProps, RendererProps { }