UNPKG

jamis

Version:

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

120 lines (119 loc) 3.96 kB
import type { ClassValue, Option, OptionValue, SchemaClassName, ThemeProps } from 'jamis-core'; import type { CSSProperties } from 'react'; import type { OptionsProps, PopOverPosition, TooltipObject } from '../../types'; import type { RenderMenuParams } from './types'; export interface SelectCompProps extends Omit<OptionsProps, 'onChange'>, ThemeProps { popoverClassName?: SchemaClassName; inputWrapClassName?: SchemaClassName; inputClassName?: SchemaClassName; arrowClassName?: SchemaClassName; showInvalidMatch?: boolean; creatable?: boolean; createBtnLabel?: string; multiple?: boolean; valuesNoWrap?: boolean; valueField?: string; labelField?: string; searchable?: boolean; /** * 开启搜索后, 搜索的字段名集合 */ searchFields?: string[]; options: Array<Option>; value: OptionValue | OptionValue[]; loadOptions?: Function; searchPromptText?: string; loadingPlaceholder?: string; spinnerClassName?: string; noResultsText?: string; clearable?: boolean; clearAllText?: string; clearValueText?: string; placeholder?: string; inline?: boolean; disabled?: boolean; popOverContainer?: any; popOverContainerSelector?: string; overlayPlacement?: PopOverPosition; checkAll?: boolean; checkAllLabel?: string; checkAllBySearch?: boolean; defaultCheckAll?: boolean; simpleValue?: boolean; defaultOpen?: boolean; /** * 边框模式,全边框或者没边框。 */ borderMode?: 'full' | 'half' | 'none'; /** * 是否隐藏已选项 */ hideSelected?: boolean; /** * 标签的最大展示数量,超出数量后以收纳浮层的方式展示,仅在多选模式开启后生效 */ maxTagCount?: number; /** * 收纳标签的Popover配置 */ overflowTagPopover?: TooltipObject; /** * 是否在选中值后自动清空搜索条件, 用于多选场景, 默认为true */ autoClearSearchValue?: boolean; valueWrapClassName?: SchemaClassName; valueWrapStyle?: React.CSSProperties; optionClassName?: ClassValue; valueClassName?: SchemaClassName; valueLabelClassName?: SchemaClassName; arrowIcon?: string; /** * 当前选中高亮的item */ highlightedIndex?: number; /** 在启用了虚拟列表时, 单项的高度 */ itemHeight?: number; /** 是否平铺开 */ tiled?: boolean; /** 顶部描述信息 */ topDescInfo?: string | JSX.Element; /** * 元素`.cxd-Select-menu`的样式类 */ menuClassName?: SchemaClassName; /** * 虚拟列表的高度, 必须是数值类型 */ virtualListHeight?: CSSProperties['height']; /** * 虚拟列表的样式类 */ virtualListClassName?: SchemaClassName; /** 虚拟列表的宽度, 必须是数值类型 */ virtualListWidth?: CSSProperties['width']; virtualListStyle?: CSSProperties; /** `.cxd-Select-wrap`元素的样式类 */ wrapClassName?: SchemaClassName; /** 多选搜索时, 是否可以通过删除键删除选中项 */ isBackspaceDelete?: Boolean; /** 搜索延迟 */ searchDelay?: boolean | number; /** 是否启用移动端样式支持, 默认是自适应, 可通过设置true或者false来指定 */ mobileUI?: boolean; /** * 渲染菜单项自定义函数 */ renderMenu?: (option: Option, props: RenderMenuParams) => JSX.Element; onChange: (value: void | string | Option | Array<Option>, changedOption?: { /** popover 是否打开 */ isOpen?: boolean; }) => void; /** * 比较搜索条件是否一致, 用于当组件内的搜索条件和父组件不一致的场景 */ checkInputValue?: (inputValue: string) => boolean; /** * 下拉弹窗变化通知函数 */ onChangeIsOpen?: (isOpen: boolean) => void; onClose?: () => void; }