@@ -5,23 +5,26 @@ import { Key } from 'rc-tree/lib/interface';
55
66import { IDragInfo } from '../../../types/IDragInfo' ;
77import { ITreeItem } from '../../../types/ITreeItem' ;
8+ import { TreeProps } from 'antd/lib/tree/Tree' ;
89
910interface TreeListProps {
1011 onSelect ?: ( selectedKeys : Key [ ] ) => void ;
1112}
1213
14+ interface TreePropsExtended < T >
15+ extends Omit < TreeProps , 'onDrop' | 'onSelect' | 'titleRender' > {
16+ getCheckedKeys ?: ( ) => Key [ ] ;
17+ titleRender ?: ( item : T ) => React . ReactNode ;
18+ }
19+
1320export default function TreeList < T extends ITreeItem < any > > (
1421 getData : ( ) => T [ ] ,
1522 updateData : ( items : T [ ] ) => void ,
16- options ?: {
17- checkable ?: boolean ;
18- selectable ?: boolean ;
19- onCheck ?: ( checkedKeys : React . Key [ ] ) => void ;
20- getCheckedKeys ?: ( ) => React . Key [ ] ;
21- titleRender ?: ( nodeData : T ) => React . ReactNode ;
22- }
23+ options : TreePropsExtended < T >
2324) {
24- return observer ( function TreeList ( { onSelect } : TreeListProps ) {
25+ const { getCheckedKeys, ...rest } = options ;
26+
27+ return observer ( ( { onSelect } : TreeListProps ) => {
2528 const data = getData ( ) ;
2629
2730 function onDrop ( info : IDragInfo ) {
@@ -76,14 +79,16 @@ export default function TreeList<T extends ITreeItem<any>>(
7679 } ) ;
7780 } else {
7881 let ar : ITreeItem [ ] ;
79- let i ;
80- loop ( dataCopy , dropKey , ( item , index , arr ) => {
82+ let i : number ;
83+ loop ( dataCopy , dropKey , ( _item , index , arr ) => {
8184 ar = arr ;
8285 i = index ;
8386 } ) ;
8487 if ( dropPosition === - 1 ) {
88+ // @ts -ignore
8589 ar ?. splice ( i , 0 , dragObj ) ;
8690 } else {
91+ // @ts -ignore
8792 ar ?. splice ( i + 1 , 0 , dragObj ) ;
8893 }
8994 }
@@ -94,16 +99,13 @@ export default function TreeList<T extends ITreeItem<any>>(
9499 return (
95100 < Tree
96101 className = "draggable-tree"
97- checkedKeys = { options ?. getCheckedKeys ?.( ) }
98- checkable = { options ?. checkable }
102+ checkedKeys = { getCheckedKeys ?.( ) }
99103 draggable
100- selectable = { options ?. selectable }
101104 blockNode
102105 treeData = { data }
103106 onDrop = { onDrop }
104107 onSelect = { onSelect }
105- onCheck = { options ?. checkable ? options ?. onCheck : undefined }
106- titleRender = { options ?. titleRender }
108+ { ...rest }
107109 />
108110 ) ;
109111 } ) ;
0 commit comments