@cainiaofe/cn-ui-m
Version:
169 lines (168 loc) • 4.44 kB
TypeScript
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;
}