@@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react';
2
2
import { IProps } from '@uiw/utils' ;
3
3
import Card from '@uiw/react-card' ;
4
4
import Icon from '@uiw/react-icon' ;
5
- import Input from '@uiw/react-Input ' ;
5
+ import Input from '@uiw/react-input ' ;
6
6
import TreeChecked from '@uiw/react-tree-checked' ;
7
7
import { TreeData } from '@uiw/react-tree' ;
8
8
import './style/index.less' ;
@@ -17,7 +17,7 @@ interface TransferProps extends IProps {
17
17
bodyStyle ?: React . CSSProperties ;
18
18
19
19
onChange ?: ( transfer : string , selectedAll : Array < TransferOptionType > ) => void ;
20
- onSearch ?: ( seachValue : string ) => void ;
20
+ onSearch ?: ( transfer : string , seachValue : string ) => void ;
21
21
showSearch ?: boolean ;
22
22
value ?: Array < TransferOptionType > ;
23
23
options ?: TreeData [ ] ;
@@ -44,7 +44,7 @@ function Transfer(props: TransferProps) {
44
44
const [ selectOption , selectOptionSet ] = useState < Map < string | number , string > > ( new Map ( ) ) ;
45
45
const [ leftSelectedKeys , leftSelectedKeySet ] = useState < Array < string | number | undefined > > ( [ ] ) ;
46
46
const [ rightSelectedKeys , rightSelectedKeySet ] = useState < Array < string | number | undefined > > ( [ ] ) ;
47
- const [ rightOpions , rightOpionSet ] = useState < Array < TransferOptionType > > ( [ ] ) ;
47
+ const [ rightOpions , rightOpionSet ] = useState < Array < TreeData > > ( [ ] ) ;
48
48
49
49
useEffect ( ( ) => {
50
50
leftSelectedKeySet ( [ ] ) ;
@@ -86,7 +86,7 @@ function Transfer(props: TransferProps) {
86
86
const rightTreeOnSelected = (
87
87
selectedKeys : Array < string | number | undefined > ,
88
88
_1 : any ,
89
- isChecked : boolean ,
89
+ _2 : boolean ,
90
90
evn : TreeData ,
91
91
) => {
92
92
rightSelectedKeySet ( selectedKeys ) ;
@@ -129,18 +129,38 @@ function Transfer(props: TransferProps) {
129
129
props . onChange ?.( transferType , option ) ;
130
130
} ;
131
131
132
- const searchValueLeftChange = ( vlaue : string ) => {
133
- searchValueLeftSet ( vlaue ) ;
132
+ const searchValueLeftChange = ( searchValue : string ) => {
133
+ hiddenNode ( ( child : TreeData ) => {
134
+ let searchIsMatch = ! ( child . label as string ) . includes ( searchValue . trim ( ) ) ;
135
+ if ( ! searchIsMatch ) {
136
+ const isSekected = rightOpions . find ( ( selected ) => selected . key === child . key ) ;
137
+ searchIsMatch = ! ! isSekected ;
138
+ }
139
+ return searchIsMatch ;
140
+ } ) ;
141
+
142
+ searchValueLeftSet ( searchValue ) ;
143
+
144
+ props . onSearch ?.( 'left' , searchValue ) ;
134
145
} ;
135
146
136
- const searchValueRightChange = ( vlaue : string ) => {
137
- searchValueRightSet ( vlaue ) ;
147
+ const searchValueRightChange = ( searchValue : string ) => {
148
+ searchValueRightSet ( searchValue ) ;
149
+
150
+ rightOpions . forEach ( ( option ) => {
151
+ const isHide = ! ( option . label as string ) . includes ( searchValue . trim ( ) ) ;
152
+ option . hideNode = isHide ;
153
+ } ) ;
154
+ console . log ( 'rightOpions' , rightOpions ) ;
155
+ rightOpionSet ( rightOpions ) ;
156
+
157
+ props . onSearch ?.( 'right' , searchValue ) ;
138
158
} ;
139
159
140
160
return (
141
161
< div className = { cls } style = { { width : 400 , ...style } } >
142
162
< Card
143
- bodyStyle = { { padding : '5px 0px 5px 5px' } }
163
+ bodyStyle = { { padding : 5 } }
144
164
title = { `${ leftSelectedKeys . length } /${ selectedOptions . length } ` }
145
165
className = { `${ prefixCls } -card` }
146
166
>
@@ -153,6 +173,7 @@ function Transfer(props: TransferProps) {
153
173
) }
154
174
< div className = { `${ prefixCls } -cheked-content` } >
155
175
< TreeChecked
176
+ defaultExpandAll = { true }
156
177
placeholder = { placeholder || '搜索选项' }
157
178
data = { selectedOptions }
158
179
selectedKeys = { leftSelectedKeys }
@@ -175,13 +196,13 @@ function Transfer(props: TransferProps) {
175
196
/>
176
197
</ div >
177
198
< Card
178
- bodyStyle = { { padding : '5px 0px 5px 0px' } }
199
+ bodyStyle = { { padding : 5 } }
179
200
className = { `${ prefixCls } -card` }
180
201
title = { `${ rightSelectedKeys . length } /${ rightOpions . length } ` }
181
202
>
182
203
{ showSearch && (
183
204
< Input
184
- placeholder = { placeholder || '搜索选项' }
205
+ placeholder = { placeholder }
185
206
value = { searchValueRight }
186
207
onChange = { ( e : React . ChangeEvent < HTMLInputElement > ) => searchValueRightChange ( e . target . value ) }
187
208
/>
0 commit comments