11import React from 'react' ;
22import { Empty , Tree } from 'antd' ;
3+ import { TreeProps } from 'antd/lib/tree/Tree' ;
34import { observer } from 'mobx-react' ;
45import { Key } from 'rc-tree/lib/interface' ;
56
67import { IDragInfo } from '../../../types/IDragInfo' ;
7- import { ITreeItem } from '../../../types/ITreeItem' ;
8- import { TreeProps } from 'antd/lib/tree/Tree' ;
8+ import { ITreeItemWithParent } from '../../../types/ITreeItem' ;
99
1010interface TreeListProps {
1111 onSelect ?: ( selectedKeys : Key [ ] ) => void ;
@@ -19,7 +19,7 @@ interface TreePropsExtended<T>
1919 isDraggable ?: ( ) => boolean ;
2020}
2121
22- export default function TreeList < T extends ITreeItem < any > > (
22+ export default function TreeList < T extends ITreeItemWithParent < any > > (
2323 getData : ( ) => T [ ] ,
2424 updateData : ( items : T [ ] ) => void ,
2525 options : TreePropsExtended < T >
@@ -37,24 +37,24 @@ export default function TreeList<T extends ITreeItem<any>>(
3737 info . dropPosition - Number ( dropPos [ dropPos . length - 1 ] ) ;
3838
3939 const loop = (
40- items : ITreeItem [ ] ,
40+ items : T [ ] ,
4141 key : string | number ,
42- callback : ( item : ITreeItem , key : number , items : ITreeItem [ ] ) => void
42+ callback : ( item : T , key : number , items : T [ ] ) => void
4343 ) => {
4444 for ( let i = 0 ; i < items . length ; i ++ ) {
4545 if ( items [ i ] . key === key ) {
4646 return callback ( items [ i ] , i , items ) ;
4747 }
4848 if ( items [ i ] . children ) {
49- loop ( items [ i ] . children as ITreeItem [ ] , key , callback ) ;
49+ loop ( items [ i ] . children || [ ] , key , callback ) ;
5050 }
5151 }
5252 return undefined ;
5353 } ;
5454 const dataCopy = [ ...data ] ;
5555
5656 // Find dragObject
57- let dragObj : ITreeItem ;
57+ let dragObj : T ;
5858 loop ( dataCopy , dragKey , ( item , index , arr ) => {
5959 arr . splice ( index , 1 ) ;
6060 dragObj = item ;
@@ -64,6 +64,7 @@ export default function TreeList<T extends ITreeItem<any>>(
6464 // Drop on the content
6565 loop ( dataCopy , dropKey , ( item ) => {
6666 item . children = item . children || [ ] ;
67+ dragObj . parent = item ;
6768 // where to insert
6869 item . children . unshift ( dragObj ) ;
6970 } ) ;
@@ -74,17 +75,19 @@ export default function TreeList<T extends ITreeItem<any>>(
7475 ) {
7576 loop ( dataCopy , dropKey , ( item ) => {
7677 item . children = item . children || [ ] ;
78+ dragObj . parent = item ;
7779 // where to insert
7880 item . children . unshift ( dragObj ) ;
7981 // in previous version, we use item.children.push(dragObj) to insert the
8082 // item to the tail of the children
8183 } ) ;
8284 } else {
83- let ar : ITreeItem [ ] ;
85+ let ar : T [ ] ;
8486 let i : number ;
8587 loop ( dataCopy , dropKey , ( _item , index , arr ) => {
8688 ar = arr ;
8789 i = index ;
90+ dragObj . parent = undefined ;
8891 } ) ;
8992 if ( dropPosition === - 1 ) {
9093 // @ts -ignore
0 commit comments