9331c63c20f0c1f169d4ef07d28de2a5e87801981dfd5a8a8569ebd4bf8316cb21d9548bb9031c82d8ed83126f89cf595c4b78a1fd7b2ab4b6ff51d260c112 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import type { ComponentInternalInstance, ExtractPropTypes, SetupContext, __ExtractPublicPropTypes } from 'vue';
  2. import type { treeEmits, treeProps } from './virtual-tree';
  3. export type TreeNodeData = Record<string, any>;
  4. export type TreeData = TreeNodeData[];
  5. export type TreeKey = string | number;
  6. export interface TreeOptionProps {
  7. children?: string;
  8. label?: string;
  9. value?: string;
  10. disabled?: string;
  11. class?: (data: TreeNodeData, node: TreeNode) => string | {
  12. [key: string]: boolean;
  13. };
  14. }
  15. export type TreeProps = ExtractPropTypes<typeof treeProps>;
  16. export type TreePropsPublic = __ExtractPublicPropTypes<typeof treeProps>;
  17. export interface TreeNode {
  18. key: TreeKey;
  19. level: number;
  20. parent?: TreeNode;
  21. children?: TreeNode[];
  22. data: TreeNodeData;
  23. disabled?: boolean;
  24. label?: string;
  25. isLeaf?: boolean;
  26. expanded?: boolean;
  27. }
  28. export interface TreeContext {
  29. ctx: Omit<SetupContext<typeof treeEmits>, 'expose' | 'attrs'>;
  30. instance: ComponentInternalInstance;
  31. props: TreeProps;
  32. }
  33. export interface Tree {
  34. treeNodeMap: Map<TreeKey, TreeNode>;
  35. levelTreeNodeMap: Map<number, TreeNode[]>;
  36. treeNodes: TreeNode[];
  37. maxLevel: number;
  38. }
  39. export type FilterMethod = (query: string, data: TreeNodeData, node: TreeNode) => boolean;
  40. export interface CheckedInfo {
  41. checkedKeys: TreeKey[];
  42. checkedNodes: TreeData;
  43. halfCheckedKeys: TreeKey[];
  44. halfCheckedNodes: TreeData;
  45. }