@@ -55,13 +55,24 @@ const MultiplePickerGroup: FC<IMultiplePickerGroupProps> = (props) => {
5555 changeValLink : ChangeValLink ,
5656 hasValue : ( string | number ) [ ] ,
5757 oldValue : ( string | number ) [ ] ,
58+ currentValue ?: IDataItem ,
5859 ) : ( string | number ) [ ] => {
5960 let valueArr : ( string | number ) [ ] = hasValue ;
6061 if ( changeValLink && Object . keys ( changeValLink ) . length > 0 ) {
6162 if ( changeValLink ?. linkVals ) {
62- valueArr = Array . from (
63- new Set ( [ ...valueArr , ...( changeValLink ?. linkVals || [ ] ) ] ) ,
64- ) ;
63+ if (
64+ currentValue ?. value &&
65+ oldValue . some ( ( item ) => item === currentValue ?. value )
66+ ) {
67+ let oldValueList = oldValue . filter ( ( item ) => {
68+ return ! changeValLink . linkVals ?. some ( ( it ) => it === item ) ;
69+ } ) ;
70+ valueArr = Array . from ( new Set ( [ ...oldValueList ] ) ) ;
71+ } else {
72+ valueArr = Array . from (
73+ new Set ( [ ...valueArr , ...( changeValLink ?. linkVals || [ ] ) ] ) ,
74+ ) ;
75+ }
6576 }
6677 if ( changeValLink ?. unLlinkVals ) {
6778 changeValLink ?. unLlinkVals ?. forEach ( ( it : string | number ) => {
@@ -115,11 +126,10 @@ const MultiplePickerGroup: FC<IMultiplePickerGroupProps> = (props) => {
115126 const pickerClick = ( val : IDataItem ) => {
116127 let list = JSON . parse ( JSON . stringify ( selValueList ) ) ;
117128 if (
118- ! list . some ( ( i : string | number ) => i === val . value ) &&
119129 valueLinks [ val ?. value ] &&
120130 Object . keys ( valueLinks [ val ?. value ] ) . length > 0
121131 ) {
122- list = setValueList ( valueLinks [ val ?. value ] , list , list ) ;
132+ list = setValueList ( valueLinks [ val ?. value ] , list , list , val ) ;
123133 }
124134 if ( list . indexOf ( val . value ) !== - 1 ) {
125135 list . splice ( list . indexOf ( val . value ) , 1 ) ;
0 commit comments