jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
52 lines (51 loc) • 1.74 kB
TypeScript
import type { LocaleProps, Option, Options, SchemaClassName, SchemaRenderFn, ThemeProps } from 'jamis-core';
import type { SchemaObject, SchemaTpl } from '../../types';
export * from './Select.types';
export * from './UserSelect.types';
export * from './UserTabSelect.types';
export interface RenderMenuParams {
index?: number;
checked?: boolean;
multiple?: boolean;
checkAll?: boolean;
title?: string;
inputValue?: string;
searchable?: boolean;
[key: string]: any;
}
export interface RenderMenuProps extends RenderMenuParams {
render: SchemaRenderFn;
data: Record<string, any>;
menuTpl: SchemaTpl | SchemaObject;
}
export interface ItemRenderStates {
index: number;
multiple?: boolean;
/** 搜索时匹配到的高亮的文本 */
highlightTxt?: string;
checked: boolean;
onChange: () => void;
disabled?: boolean;
className?: SchemaClassName;
}
export interface BaseSelectionProps extends ThemeProps, LocaleProps {
className?: SchemaClassName;
clearable?: boolean;
disabled?: boolean;
inline?: boolean;
itemClassName?: SchemaClassName;
valueField?: string;
labelField?: string;
itemRender: (option: Option, states: ItemRenderStates) => JSX.Element;
labelClassName?: SchemaClassName;
multiple?: boolean;
onChange?: (value: Array<any> | any) => void | boolean | Promise<boolean>;
onClick?: (e: React.MouseEvent) => void;
onDeferLoad?: (option: Option) => void;
onLeftDeferLoad?: (option: Option, leftOptions: Option) => void;
option2value?: (option: Option) => any;
options: Options;
placeholder?: string;
placeholderRender?: (props: any) => JSX.Element | null;
value?: any | Array<any>;
}