zent
Version:
一套前端设计语言和基于React的实现
110 lines (88 loc) • 2.4 kB
text/typescript
export interface ICascaderBaseProps {
options: IPublicCascaderItem[];
placeholder?: string;
className?: string;
popupClassName?: string;
disabled?: boolean;
clearable?: boolean;
visible?: boolean;
onVisibleChange?: (visible: boolean) => void;
/**
* Customize rendering of select value
*/
renderValue?: (selectedOptions: ICascaderItem[]) => React.ReactNode;
/**
* Customize rendering of item
*/
renderItemContent?: (node: ICascaderItem) => React.ReactNode;
/**
* Customize tooltip for item.
*
* Return `undefined` to disabled tooltip
*/
getItemTooltip?: (node: ICascaderItem) => string | undefined;
/**
* Customize rendering of item list
*/
renderList?: (
nodes: ICascaderItem[],
renderItem: (node: ICascaderItem) => React.ReactNode
) => React.ReactNode;
}
export type CascaderValue = string | number;
export type CascaderItemSelectionState = 'on' | 'off' | 'partial';
export type CascaderSimplifySelectionMode =
| 'excludeDisabled'
| 'includeDisabled';
/**
* 外部节点数据结构
*/
export interface IPublicCascaderItem {
value: CascaderValue;
label: string;
children?: IPublicCascaderItem[];
disabled?: boolean;
// 下一级展开时加载
loadChildrenOnExpand?: boolean;
// 滚动到底部时加载
loadChildrenOnScroll?: boolean;
// custom properties
[key: string]: unknown;
}
export interface ICascaderItem extends IPublicCascaderItem {
children: ICascaderItem[];
parent: ICascaderItem | null;
}
export type CascaderTabsClickHandler = (
node: ICascaderItem,
closePopup: () => void
) => void;
export type CascaderMenuClickHandler = (
node: ICascaderItem,
closePopup: () => void
) => void;
export type CascaderMenuHoverHandler = (node: ICascaderItem) => void;
export type CascaderSearchClickHandler = (
path: ICascaderItem[],
closePopup: () => void
) => void;
export enum CascaderChangeAction {
Clear = 'clear',
Change = 'change',
}
export interface ICascaderChangeMeta {
action: CascaderChangeAction;
}
export interface ICascaderMultipleChangeMeta extends ICascaderChangeMeta {
simplify(
options: Array<ICascaderItem[]>,
mode: CascaderSimplifySelectionMode
): Array<ICascaderItem[]>;
}
export enum CascaderLoadAction {
LoadChildren = 'loadChildren',
Scroll = 'scroll',
}
export interface ICascaderLoadMeta {
action: CascaderLoadAction;
}