sard-uniapp
Version:
sard-uniapp 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库
502 lines (501 loc) • 18.3 kB
TypeScript
import { type StyleValue } from 'vue';
import { type NodeRect } from '../../utils';
export interface TreeNode {
title?: string | number;
key?: any;
children?: TreeNode[];
disabled?: boolean;
isLeaf?: boolean;
[prop: string]: any;
}
export interface TreeCleanNode {
title: string | number;
key: string | number;
children?: TreeCleanNode[];
}
export interface TreeStateNode {
title: string | number;
key: string | number;
expanded: boolean;
checked: boolean;
children?: TreeStateNode[];
parent: TreeStateNode | null;
indeterminate: boolean;
level: number;
offsetLevel: number;
visible: boolean;
disabled: boolean;
isLeaf: boolean;
loadStatus: 'idle' | 'loading' | 'loaded';
depth: number;
}
export interface TreeNodeKeys {
title?: string;
key?: string;
children?: string;
isLeaf?: string;
}
export declare const defaultNodeKeys: {
title: string;
key: string;
children: string;
isLeaf: string;
};
export interface TreeProps {
rootStyle?: StyleValue;
rootClass?: string;
data?: TreeNode[];
nodeKeys?: TreeNodeKeys;
defaultExpandAll?: boolean;
defaultExpandedKeys?: (string | number)[];
accordion?: boolean;
selectable?: boolean;
checkStrictly?: boolean;
singleSelectable?: boolean;
leafOnly?: boolean;
current?: string | number;
defaultCheckedKeys?: (string | number)[];
draggable?: boolean;
editable?: boolean;
filterMode?: 'lenient' | 'strict';
filterMethod?: (value: string, node: TreeStateNode) => boolean;
lazy?: boolean;
load?: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}
export declare const defaultTreeProps: () => {
data: () => never[];
rootStyle?: (string | false | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => string | false | import("vue").CSSProperties | StyleValue[]) | null) | undefined;
rootClass?: (string | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => string)) | undefined;
nodeKeys?: ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => TreeNodeKeys) | undefined;
defaultExpandAll?: (boolean | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => boolean)) | undefined;
defaultExpandedKeys?: ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => (string | number)[]) | undefined;
accordion?: (boolean | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => boolean)) | undefined;
selectable?: (boolean | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => boolean)) | undefined;
checkStrictly?: (boolean | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => boolean)) | undefined;
singleSelectable?: (boolean | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => boolean)) | undefined;
leafOnly?: (boolean | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => boolean)) | undefined;
current?: (string | number | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => string | number)) | undefined;
defaultCheckedKeys?: ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => (string | number)[]) | undefined;
draggable?: (boolean | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => boolean)) | undefined;
editable?: (boolean | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => boolean)) | undefined;
filterMode?: ("lenient" | "strict" | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => "lenient" | "strict")) | undefined;
filterMethod?: (((value: string, node: TreeStateNode) => boolean) | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => (value: string, node: TreeStateNode) => boolean)) | undefined;
lazy?: (boolean | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => boolean)) | undefined;
load?: (((node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[]) | ((props: {
rootStyle: StyleValue;
rootClass: string;
data: TreeNode[];
nodeKeys: TreeNodeKeys;
defaultExpandAll: boolean;
defaultExpandedKeys: (string | number)[];
accordion: boolean;
selectable: boolean;
checkStrictly: boolean;
singleSelectable: boolean;
leafOnly: boolean;
current: string | number;
defaultCheckedKeys: (string | number)[];
draggable: boolean;
editable: boolean;
filterMode: "lenient" | "strict";
filterMethod: (value: string, node: TreeStateNode) => boolean;
lazy: boolean;
load: (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[];
}) => (node?: TreeStateNode) => Promise<TreeNode[]> | TreeNode[])) | undefined;
};
export interface TreeEmits {
(e: 'update:current', key: string | number, node: TreeStateNode): void;
(e: 'select', key: string | number, node: TreeStateNode): void;
(e: 'check', event: {
checked: boolean;
node: TreeStateNode;
}): void;
(e: 'node-click', event: {
event: any;
node: TreeStateNode;
}): void;
}
export interface TreeExpose {
setExpanded: (key: string | number, expanded: boolean) => void;
toggleExpanded: (key: string | number) => void;
setExpandedKeys: (keys: (string | number)[]) => void;
getExpandedKeys: () => (string | number)[];
getCheckedKeys: () => (string | number)[];
getHalfCheckedKeys: () => (string | number)[];
setCheckedKeys: (keys: (string | number)[]) => void;
setChecked: (key: string | number, checked: boolean) => void;
addRootNode: () => void;
getCleanTreeData: () => TreeCleanNode[];
filter: (searchString: string) => void;
}
export interface TreeNodeProps {
node: TreeStateNode;
index: number;
}
export interface TreeBranchProps {
nodes: TreeStateNode[];
}
export interface TreeContext {
selectable: TreeProps['selectable'];
draggable: TreeProps['draggable'];
editable: TreeProps['editable'];
singleSelectable: TreeProps['singleSelectable'];
leafOnly: TreeProps['leafOnly'];
treeData: TreeStateNode[];
setExpandedByNode: (node: TreeStateNode, expanded: boolean) => void;
toggleExpandedByNode: (node: TreeStateNode) => void;
setCheckedByNode: (node: TreeStateNode, checked: boolean) => void;
toggleCheck: (node: TreeStateNode, checked: boolean) => void;
levelup: (node: TreeStateNode) => void;
leveldown: (node: TreeStateNode) => void;
edit: (node: TreeStateNode, getEditRect: () => Promise<NodeRect>) => void;
drop: (dropOriginNode: TreeStateNode, dropTargetNode: TreeStateNode, position: number) => void;
currentKey: string | number | undefined;
singleSelect: (node: TreeStateNode) => void;
nodeClick: (node: TreeStateNode, event: any) => void;
load: TreeProps['load'];
lazy: boolean;
toTreeStateNodes: (nodes: TreeNode[], parent: TreeStateNode | null) => TreeStateNode[];
setRenderPosition: () => void;
}
export declare const treeContextSymbol: unique symbol;