UNPKG

@cainiaofe/cn-ui-m

Version:
169 lines (168 loc) 4.44 kB
import { ReactNode } from 'react'; import type { BasicComponentProps, BasicSizeType } from '../../types'; import type { CnSelectDrawerProps } from '../select-drawer/types'; export declare type SelectMode = 'single' | 'multiple'; export interface CnSelectOptionProps extends BasicComponentProps { /** * 选项值 */ value?: any; /** * 选项文本 */ label?: string; /** * 选项标题 */ title?: string; /** * 是否禁用 */ disabled?: boolean; /** * 是否选中 */ selected?: boolean; /** * 选项点击事件 */ onClick?: (value: any) => void; } export interface CnSelectProps extends BasicComponentProps, Omit<CnSelectDrawerProps, 'content'> { /** * 字段name */ name?: string; /** * 当前值,用于受控模式 */ value?: any; /** * 初始的默认值 */ defaultValue?: any; /** * value 使用对象类型 {value, label}, 同时 onChange 第一个参数返回也修改为 dataSource 中的对象 */ useDetailValue?: boolean; /** * 是否展示清除按钮 */ hasClear?: boolean; /** * 开启本地搜索过滤, 当 hasSearch=true 时,filterLocal 默认为 true ,如果要处理远程数据源,须关闭此项 */ filterLocal?: boolean; /** * 单选时自动确认 */ autoConfirm?: boolean; /** * 已选项置顶 */ stickyOnTop?: boolean; /** * 自定义本地搜索过滤函数,返回一个 boolean 确定是否保留当前值,仅当 filterLocal=true 时生效. val: 当前输入搜索值; item: 待渲染节点数据项 */ filter?: (key: string, item?: CnSelectOptionProps) => boolean; /** * 传入的数据源,可以动态渲染子项 */ dataSource?: CnSelectOptionProps[] | string[]; /** * 选择框类型 */ type?: 'normal' | 'inverse'; /** * 渲染类型。可选值:normal - 常规;tag-value - 仅展示选中值为 tag;tag - 选中值和选项皆为 tag */ displayType?: 'normal' | 'tag' | 'tag-value'; /** * 类型。单选还是多选 */ mode?: SelectMode; /** * 尺寸 */ size?: BasicSizeType; /** * 是否禁用 */ disabled?: boolean; /** * 是否为只读态 */ readOnly?: boolean; /** * 是否为 Search 模式 */ hasSearch?: boolean; /** * 是否为 Search 模式(已废弃,不建议使用) */ showSearch?: boolean; /** * 搜索框loading状态 */ searchLoading?: boolean; /** * 搜索框 Placeholder */ searchPlaceholder?: string; /** * 是否为预览态 */ isPreview?: boolean; /** * 预览模式下的css类 */ previewClassName?: string; /** * 预览模式下的样式 */ previewStyle?: any; /** * 搜索结果是否可转为选项 */ transferSearchToOption?: boolean; /** * 对齐方式 */ align?: 'left' | 'right'; /** * 预览态模式下渲染的内容 ,value 参数格式为 [{label:string,value:any}] */ renderPreview?: (values: any, props: CnSelectProps) => ReactNode; /** * 用户搜索时回调,仅当 hasSearch=true 时,触发 */ onSearch?: (value?: string) => void; /** * 值改变时触发回调,value(s) 当前选中项的值;actionType 区分值为 change、clear;item(s) 选中项对象数据 */ onChange?: (value?: any, actionType?: string, items?: any) => void; /** * 点击清除按钮回调 */ onClear?: () => void; /** * 点击取消按钮或遮罩层触发回调。reason 可选值:mask - 遮罩层;cancel-button - 取消按钮 */ onCancel?: (reason?: string) => void; /** * transferSearchToOption为true时,添加选项的回调 */ onSearchAdd?: (searchValue?: string) => void; /** * 下拉选项可见状态变化时的回调,返回可见状态和触发可见变化的来源 */ onVisibleChange?: (visible: boolean, reason: string | undefined) => void; /** * 自定义选中项目渲染内容 */ renderSelection?: (selectedOptions: any[]) => any; /** * 自定义选项的渲染方法 */ renderItem?: (item: any) => ReactNode; }