UNPKG

jamis

Version:

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

122 lines (121 loc) 4.79 kB
import type { Option, Options, SchemaClassName, ThemeProps } from 'jamis-core'; import type { BaseSelectionProps, ItemRenderStates, ResultItemRenderStates, TooltipObject, TreeCompProps } from '../../types'; type SelectMode = 'table' | 'group' | 'list' | 'tree' | 'chained' | 'associated'; export interface TransferProps extends ThemeProps, Omit<BaseSelectionProps, 'itemRender'> { inline?: boolean; statistics?: boolean; showArrow?: boolean; multiple?: boolean; selectTitle?: string; selectMode?: SelectMode; groupConfig?: Partial<BaseSelectionProps>; listConfig?: Partial<BaseSelectionProps>; treeConfig?: Partial<TreeCompProps>; tableConfig?: Partial<TableSelectionProps>; associatedConfig?: Partial<AssociatedSelectionProps>; chainedConfig?: Partial<ChainedSelectionProps>; columns?: Array<{ name: string; label: string; [propName: string]: any; }>; hasError?: boolean; leftOptions?: Array<Option>; leftMode?: 'tree' | 'list' | 'group'; /** * selectMode为associated时才有用 * @deprecated */ leftDefaultValue?: any; rightMode?: 'table' | 'list' | 'group' | 'tree' | 'chained'; searchResultMode?: 'table' | 'list' | 'group' | 'tree' | 'chained'; searchResultColumns?: Array<{ name: string; label: string; [propName: string]: any; }>; searchPlaceholder?: string; noResultsText?: string; cellRender?: (column: { name: string; label: string; [propName: string]: any; }, option: Option, colIndex: number, rowIndex: number) => JSX.Element; resultTitle?: string; resultListModeFollowSelect?: boolean; resultSearchPlaceholder?: string; resultSearchable?: boolean; sortable?: boolean; titleClassName?: SchemaClassName; leftWrapClassName?: SchemaClassName; optionItemRender?: (option: Option, states: ItemRenderStates) => JSX.Element; resultItemRender?: (option: Option, states: ResultItemRenderStates) => JSX.Element; selectRender?: (props: Omit<TransferProps, 'onSearch'> & { onSearch: (text: string) => void; onSearchCancel: () => void; searchResult: Options | null; }) => JSX.Element; onChange?: (value: Array<Option>, optionModified?: boolean) => void | boolean | Promise<boolean>; onSearch?: (term: string, setCancel?: (cancel: () => void) => void) => Promise<Options | void>; onResultSearch?: (text: string, item: Option) => boolean; onRef?: (ref: any) => void; onSelectAll?: (options: Options) => void; } export interface TabsTransferProps extends Omit<TransferProps, 'selectMode' | 'columns' | 'selectRender' | 'statistics' | 'onSearch' | 'optionItemRender'> { onSearch: (term: string, option: Option, setCancel: (cancel: () => void) => void) => Promise<Options | void>; optionItemRender?: (option: Option, states: ItemRenderStates, tab: Option) => JSX.Element; cellRender?: (column: { name: string; label: string; [propName: string]: any; }, option: Option, colIndex: number, rowIndex: number) => JSX.Element; onTabChange: (key: number) => void; activeKey: number; } export interface TransferDropDownProps extends TransferProps { multiple?: boolean; borderMode?: 'full' | 'half' | 'none'; popOverContainer?: any; popoverClassName?: SchemaClassName; maxTagCount?: number; overflowTagPopover?: TooltipObject; /** 是否平铺 */ tiled?: boolean; /** 多选时, 是否自动清除搜索条件 */ autoClearSearchValue?: boolean; itemRender: (option: Option) => JSX.Element | string; } export interface AssociatedSelectionProps extends BaseSelectionProps { leftOptions: Options; leftDefaultValue?: any; leftClassName?: SchemaClassName; rightClassName?: SchemaClassName; leftMode?: 'tree' | 'list' | 'group'; rightMode?: 'table' | 'list' | 'group' | 'tree' | 'chained'; columns?: Array<any>; cellRender?: (column: { name: string; label: string; [propName: string]: any; }, option: Option, colIndex: number, rowIndex: number) => JSX.Element; } export interface ChainedSelectionProps extends BaseSelectionProps { defaultSelectedIndex?: string; colClassName?: SchemaClassName; subTitleClassName?: SchemaClassName; } export interface TableSelectionProps extends BaseSelectionProps { /** 是否为结果渲染列表 */ resultMode?: boolean; columns: Array<{ name: string; label: string; [propName: string]: any; }>; cellRender: (column: { name: string; label: string; [propName: string]: any; }, option: Option, colIndex: number, rowIndex: number) => JSX.Element; } export {};