jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
120 lines (119 loc) • 3.96 kB
TypeScript
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;
}