@layui/layui-vue
Version:
a component library for Vue 3 base on layui-vue
53 lines (52 loc) • 2 kB
TypeScript
import type { OriginalTreeData, StringOrNumber, ReplaceFieldsOptions, SearchNodeMethodType } from "./tree.type";
import type { Nullable } from "../../types";
type CustomKey = string | number;
type CustomString = (() => string) | string;
export interface TreeData {
id: CustomKey;
title: CustomString;
children: TreeData[];
parentKey: Nullable<StringOrNumber>;
isRoot: boolean;
visible: boolean;
isChecked: boolean;
isDisabled: boolean;
isLeaf: boolean;
isLazy: boolean;
isLoading: boolean;
hasNextSibling: boolean;
parentNode: Nullable<TreeData>;
[key: string]: any;
}
interface TreeConfig {
checkStrictly: boolean | string;
showCheckbox: boolean;
checkedKeys: StringOrNumber[];
expandKeys: StringOrNumber[];
nodeMap: Map<StringOrNumber, TreeData>;
originMap: Map<StringOrNumber, OriginalTreeData>;
replaceFields: ReplaceFieldsOptions;
defaultExpandAll: boolean;
lazy: boolean;
searchNodeMethod: SearchNodeMethodType;
}
declare class Tree {
protected config: TreeConfig;
protected treeData: TreeData[];
constructor(config: TreeConfig, origin: OriginalTreeData | OriginalTreeData[]);
init(origin: OriginalTreeData | OriginalTreeData[]): void;
createTree(origin: OriginalTreeData | OriginalTreeData[], parentKey?: StringOrNumber): TreeData[];
getNode(origin: OriginalTreeData, parentKey: StringOrNumber, hasNextSibling: boolean): TreeData;
treeForeach(tree: TreeData[], func: Function): void;
setCheckedKeys(checked: boolean, checkStrictly: boolean | string, node: TreeData): void;
setParentChecked(parent: TreeData): void;
setChildrenChecked(checked: boolean, nodes: TreeData[]): boolean;
getData(): TreeData[];
getKeys(): {
checkedKeys: StringOrNumber[];
expandKeys: any[];
};
getOriginData(key: StringOrNumber): OriginalTreeData;
_filter(value: string): void;
}
export { Tree };