From 321c042eba683a4be5a8290ec9c15a4f0441bee5 Mon Sep 17 00:00:00 2001 From: Nathan Bierema Date: Thu, 26 Apr 2018 18:19:59 -0400 Subject: [PATCH] Add type for TreeNode that rc-tree generates internally (#25077) * Add type for TreeNode that rc-tree generates internally * Update test * Make InternalTreeNode an interface since it can't be instantiated --- types/rc-tree/index.d.ts | 55 +++++++++++++++++++-------------- types/rc-tree/rc-tree-tests.tsx | 8 ++--- 2 files changed, 35 insertions(+), 28 deletions(-) diff --git a/types/rc-tree/index.d.ts b/types/rc-tree/index.d.ts index 7cee0d8371..aac9e1ea9f 100644 --- a/types/rc-tree/index.d.ts +++ b/types/rc-tree/index.d.ts @@ -1,15 +1,26 @@ -// Type definitions for rc-tree 1.4 +// Type definitions for rc-tree 1.10 // Project: https://github.com/react-component/tree -// Definitions by: John Reilly +// Definitions by: John Reilly , Methuselah96 // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.6 +// TypeScript Version: 2.7 -import { - Component, - Props -} from "react"; +import { Component } from "react"; -export interface TreeNodeProps extends Props { +export interface InternalTreeNodeProps extends TreeNodeProps { + eventKey: string; + expanded: boolean; + selected: boolean; + checked: boolean; + halfChecked: boolean; + pos: string; + dragOver: boolean; + dragOverGapTop: boolean; + dragOverGapBottom: boolean; +} + +export interface InternalTreeNode extends Component { } + +export interface TreeNodeProps { /** * additional css class for treeNode */ @@ -26,10 +37,6 @@ export interface TreeNodeProps extends Props { * tree / subTree's title */ title?: string | JSX.Element; - /** - * it's used with tree props (default)ExpandedKeys / (default)CheckedKeys / (default)SelectedKeys. You'd better set it, and it must be unique in the tree's all treeNodes - */ - key?: string | number; /** * whether it is a leaf node */ @@ -40,43 +47,43 @@ export class TreeNode extends Component { } export interface ExpandData { expanded: boolean; - node: TreeNode; + node: InternalTreeNode; } export interface CheckData { checked: boolean; - checkedNodes: TreeNode[]; + checkedNodes: InternalTreeNode[]; halfCheckedKeys: string[]; - node: TreeNode; + node: InternalTreeNode; event: "check"; } export interface SelectData { selected: boolean; - selectedNodes: TreeNode[]; - node: TreeNode; + selectedNodes: InternalTreeNode[]; + node: InternalTreeNode; event: "select"; } export interface OnDragStartData { event: Event; - node: TreeNode; + node: InternalTreeNode; } export interface OnDragEnterData { event: Event; - node: TreeNode; + node: InternalTreeNode; expandedKeys: string[]; } export interface OnDropData { event: Event; - node: TreeNode; - dragNode: TreeNode; + node: InternalTreeNode; + dragNode: InternalTreeNode; dragNodesKeys: string[]; } -export interface TreeProps extends Props { +export interface TreeProps { /** * additional css class of root dom node */ @@ -158,11 +165,11 @@ export interface TreeProps extends Props { /** * filter some treeNodes as you need. */ - filterTreeNode?(node: TreeNode): boolean; + filterTreeNode?(node: InternalTreeNode): boolean; /** * load data asynchronously */ - loadData?(node: TreeNode): Promise; + loadData?(node: InternalTreeNode): Promise; /** * whether can drag treeNode. */ diff --git a/types/rc-tree/rc-tree-tests.tsx b/types/rc-tree/rc-tree-tests.tsx index 571465978d..99f67beca2 100644 --- a/types/rc-tree/rc-tree-tests.tsx +++ b/types/rc-tree/rc-tree-tests.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import Tree, { TreeNode, SelectData, CheckData } from 'rc-tree'; +import Tree, { TreeNode, SelectData, CheckData, InternalTreeNode } from 'rc-tree'; interface Props { keys: string[]; @@ -44,15 +44,15 @@ export class Demo extends React.Component { console.log('onCheck', checkedKeys, info); } - onDragStart(params: {event: Event, node: TreeNode}) { + onDragStart(params: {event: Event, node: InternalTreeNode}) { console.log('onDragStart', params.event, params.node); } - OnDragEnterData(params: {event: Event, node: TreeNode, expandedKeys: string[]}) { + OnDragEnterData(params: {event: Event, node: InternalTreeNode, expandedKeys: string[]}) { console.log('OnDragEnterData', params.event, params.node, params.expandedKeys); } - OnDropData(params: {event: Event, node: TreeNode, dragNode: TreeNode, dragNodesKeys: string[]}) { + OnDropData(params: {event: Event, node: InternalTreeNode, dragNode: InternalTreeNode, dragNodesKeys: string[]}) { console.log('OnDropData', params.event, params.node, params.dragNode, params.dragNodesKeys); }