treeContext.tsx 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import React, { ReactNode, MouseEvent, DragEvent, KeyboardEvent } from 'react';
  2. import { Virtualize, ExpandAction } from '@douyinfe/semi-foundation/tree/foundation';
  3. import {
  4. TreeNodeData,
  5. KeyEntities,
  6. TreeNodeProps,
  7. FlattenNode,
  8. RenderFullLabelProps
  9. } from './interface';
  10. export interface TreeContextValue {
  11. treeDisabled?: boolean;
  12. treeIcon?: ReactNode;
  13. motion?: boolean;
  14. motionKeys?: Set<string>;
  15. motionType?: string;
  16. filterTreeNode?: boolean | ((inputValue: string, treeNodeString: string) => void);
  17. keyEntities?: KeyEntities;
  18. onNodeClick?: any;
  19. onNodeExpand?: (e: MouseEvent | KeyboardEvent, treeNode: TreeNodeProps) => void;
  20. onNodeSelect?: (e: MouseEvent | KeyboardEvent, treeNode: TreeNodeProps) => void;
  21. onNodeCheck?: (e: MouseEvent | KeyboardEvent, treeNode: TreeNodeProps) => void;
  22. onNodeRightClick?: (e: MouseEvent, treeNode: TreeNodeProps) => void;
  23. onNodeDoubleClick?: (e: MouseEvent, treeNode: TreeNodeProps) => void;
  24. renderTreeNode?: (treeNode: FlattenNode, ind?: number, style?: React.CSSProperties) => ReactNode;
  25. onNodeDragStart?: (e: DragEvent<HTMLLIElement>, treeNode: TreeNodeProps) => void;
  26. onNodeDragEnter?: (e: DragEvent<HTMLLIElement>, treeNode: TreeNodeProps) => void;
  27. onNodeDragOver?: (e: DragEvent<HTMLLIElement>, treeNode: TreeNodeProps) => void;
  28. onNodeDragLeave?: (e: DragEvent<HTMLLIElement>, treeNode: TreeNodeProps) => void;
  29. onNodeDragEnd?: (e: DragEvent<HTMLLIElement>, treeNode: TreeNodeProps) => void;
  30. onNodeDrop?: (e: DragEvent<HTMLLIElement>, treeNode: TreeNodeProps) => void;
  31. expandAction?: ExpandAction;
  32. directory?: boolean;
  33. multiple?: boolean;
  34. showFilteredOnly?: boolean;
  35. isSearching?: boolean;
  36. loadData?: (treeNode?: TreeNodeData) => Promise<void>;
  37. onNodeLoad?: (data: TreeNodeData) => Promise<unknown>;
  38. renderLabel?: (label?: ReactNode, treeNode?: TreeNodeData) => ReactNode;
  39. draggable?: boolean;
  40. renderFullLabel?: (renderFullLabelProps: RenderFullLabelProps) => React.ReactNode;
  41. dragOverNodeKey?: string | string[];
  42. dropPosition?: number | null;
  43. labelEllipsis?: boolean | Virtualize
  44. }
  45. const TreeContext = React.createContext<TreeContextValue>(null);
  46. export default TreeContext;