import { OptionProps } from '../interface'; import { ConfigType } from './store'; export interface NodeProps extends OptionProps { value: string; label: string; isLeaf?: boolean; /** 是否选中 */ _checked: boolean; /** 层级 */ _level?: number; /** 是否半选 */ _halfChecked: boolean; /** 当前选项节点的父节点 */ parent: NodeProps | null; /** 当前选项节点路径的所有节点的值 */ pathValue: string[]; /** 下一级选项 */ children?: NodeProps[]; /** 是否在加载中 */ loading?: boolean; /** 是否加载完成 */ loaded?: boolean; pathLabel: string[]; } declare class Node { value: string; label: string; disabled?: boolean; _level?: number; _index?: number; isLeaf?: boolean; disableCheckbox?: boolean; _checked: boolean; /** 是否半选 */ _halfChecked: boolean; /** 当前选项节点的父节点 */ parent: Node | null; /** 当前选项节点路径的所有节点的值 */ pathValue: string[]; pathLabel: string[]; /** 下一级选项 */ children?: Node[]; /** 是否在加载中 */ loading?: boolean; /** 是否加载完成 */ loaded?: boolean; config: ConfigType; _data?: NodeProps; constructor(data: T, config?: ConfigType, parent?: Node); private _initNode; /** * 根据this.children 计算是否当前node半选状态 * 假设半选是 0.5,全选是1,不选是0。 * 那么只有当前节点的所有children加起来等于children.length,才是全选,否则和大于0,就是半选。 */ private _isHalfChecked; /** * * @param checked 选中状态 * @param ignoreDisabled 是否忽略节点禁用设置选中状态,一般在初始化设置选中状态时传参为true */ private _setNodeChildrenChecked; getSelfChildrenValue: () => any[]; updateHalfState: (checked: boolean) => void; setCheckedProperty: (checked: boolean) => void; setCheckedState: (checked: boolean) => void; setCheckedStateIgnoreDisabled: (checked: boolean) => void; /** * 遍历节点的parent,获取当前节点的路径节点。 * node: { label: '1-1-1', parent: { label: '1-1', parent: { label: '1' }, ... }, ...} * @return [node.parent.parent, node.parent, node] * @memberof Store */ getPathNodes: () => Node[]; getChildren: () => Node[]; setLoading: (loading?: boolean) => void; } export default Node;