@opensig/opendesign
Version:
51 lines (50 loc) • 1.91 kB
TypeScript
import { CascaderValueT, CascaderOptionT } from './types';
export interface CascaderNodeT {
value: string | number;
label?: string;
depth: number;
parent: CascaderNodeT | null;
children: CascaderNodeT[];
isLeaf: boolean;
fullLabel: string;
fullPath: Array<string | number>;
disabled?: boolean;
}
export interface ColumnInfoT {
value: string | number;
label?: string;
depth: number;
isLeaf: boolean;
isActive?: boolean;
hasActiveChild?: boolean;
parent: CascaderNodeT | null;
fullLabel: string;
fullPath: Array<string | number>;
disabled?: boolean;
}
export default class CascaderTree {
root: CascaderNodeT;
map: Map<string | number, CascaderNodeT>;
leafNodes: Array<CascaderNodeT>;
constructor();
/** 更新树结构,生成CascaderNodeT类型的数据 */
updateTree(options: Array<CascaderOptionT>, lazy?: boolean): void;
/** 为指定父节点动态添加子节点(用于懒加载) */
addChildren(parentValue: string | number | null, children: Array<CascaderOptionT>, lazy?: boolean): void;
getNode(val: string | number): CascaderNodeT | undefined;
/**
* 根据选中的叶子节点值获取级联选择器每栏应该渲染的数据
* @param val 选中的叶子节点值
* @param lazy 是否懒加载模式,懒加载下选中非叶子节点时额外追加其子列
* @returns 级联选择器每栏的数据
*/
getPanelInfo(val: CascaderValueT | undefined, lazy?: boolean): ColumnInfoT[][];
/**
* 根据当前选中的节点,获取当前列的信息
* @param node 当前选中的节点的父节点
* @param activeVal 当前选中的节点的value
* @returns 当前节点的可选项数据
*/
getColumnInfo(node: CascaderNodeT, activeVal?: Array<string | number>): Array<ColumnInfoT>;
getLeafNodes(): CascaderNodeT[];
}