UNPKG

jamis

Version:

一种支持通过JSON配置方式生成页面的组件库

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