@@ -36,6 +36,7 @@ import type {
36
36
BaseSelectProps ,
37
37
BaseSelectPropsWithoutPrivate ,
38
38
BaseSelectRef ,
39
+ DisplayInfoType ,
39
40
DisplayValueType ,
40
41
RenderNode ,
41
42
} from './BaseSelect' ;
@@ -455,7 +456,7 @@ const Select = React.forwardRef(
455
456
) ;
456
457
457
458
// ========================= OptionList =========================
458
- const triggerSelect = ( val : RawValueType , selected : boolean ) => {
459
+ const triggerSelect = ( val : RawValueType , selected : boolean , type ?: DisplayInfoType ) => {
459
460
const getSelectEnt = ( ) : [ RawValueType | LabelInValueType , DefaultOptionType ] => {
460
461
const option = getMixedOption ( val ) ;
461
462
return [
@@ -473,7 +474,7 @@ const Select = React.forwardRef(
473
474
if ( selected && onSelect ) {
474
475
const [ wrappedValue , option ] = getSelectEnt ( ) ;
475
476
onSelect ( wrappedValue , option ) ;
476
- } else if ( ! selected && onDeselect ) {
477
+ } else if ( ! selected && onDeselect && type !== 'clear' ) {
477
478
const [ wrappedValue , option ] = getSelectEnt ( ) ;
478
479
onDeselect ( wrappedValue , option ) ;
479
480
}
@@ -509,10 +510,11 @@ const Select = React.forwardRef(
509
510
// BaseSelect display values change
510
511
const onDisplayValuesChange : BaseSelectProps [ 'onDisplayValuesChange' ] = ( nextValues , info ) => {
511
512
triggerChange ( nextValues ) ;
513
+ const { type, values } = info ;
512
514
513
- if ( info . type === 'remove' || info . type === 'clear' ) {
514
- info . values . forEach ( ( item ) => {
515
- triggerSelect ( item . value , false ) ;
515
+ if ( type === 'remove' || type === 'clear' ) {
516
+ values . forEach ( ( item ) => {
517
+ triggerSelect ( item . value , false , type ) ;
516
518
} ) ;
517
519
}
518
520
} ;
0 commit comments