@@ -34,6 +34,7 @@ import type {
34
34
DefaultValueType ,
35
35
FieldNames ,
36
36
LegacyDataNode ,
37
+ DefaultOptionType ,
37
38
} from './interface' ;
38
39
39
40
export interface TreeSelectProps < ValueType = any , OptionType extends DataNode = DataNode >
@@ -45,7 +46,11 @@ export interface TreeSelectProps<ValueType = any, OptionType extends DataNode =
45
46
// >>> Value
46
47
value ?: ValueType ;
47
48
defaultValue ?: ValueType ;
48
- onChange ?: ( value : ValueType , labelList : React . ReactNode [ ] , extra : ChangeEventExtra ) => void ;
49
+ onChange ?: (
50
+ value : ValueType ,
51
+ labelList : React . ReactNode [ ] ,
52
+ extra : ChangeEventExtra & { option ?: DefaultOptionType } ,
53
+ ) => void ;
49
54
50
55
// >>> Search
51
56
searchValue ?: string ;
@@ -410,7 +415,7 @@ const TreeSelect = React.forwardRef<BaseSelectRef, TreeSelectProps>((props, ref)
410
415
const triggerChange = useRefFunc (
411
416
(
412
417
newRawValues : SafeKey [ ] ,
413
- extra : { triggerValue ?: SafeKey ; selected ?: boolean } ,
418
+ extra : { triggerValue ?: SafeKey ; selected ?: boolean ; option ?: DefaultOptionType } ,
414
419
source : SelectSource ,
415
420
) => {
416
421
const labeledValues = convert2LabelValues ( newRawValues ) ;
@@ -456,7 +461,8 @@ const TreeSelect = React.forwardRef<BaseSelectRef, TreeSelectProps>((props, ref)
456
461
// [Legacy] Always return as array contains label & value
457
462
preValue : rawLabeledValues ,
458
463
triggerValue,
459
- } as ChangeEventExtra ;
464
+ option : extra . option ,
465
+ } as ChangeEventExtra & { option ?: DefaultOptionType } ;
460
466
461
467
// [Legacy] Fill legacy data if user query.
462
468
// This is expansive that we only fill when user query
@@ -505,7 +511,11 @@ const TreeSelect = React.forwardRef<BaseSelectRef, TreeSelectProps>((props, ref)
505
511
// Never be falsy but keep it safe
506
512
if ( ! mergedMultiple ) {
507
513
// Single mode always set value
508
- triggerChange ( [ selectedValue ] , { selected : true , triggerValue : selectedValue } , 'option' ) ;
514
+ triggerChange (
515
+ [ selectedValue ] ,
516
+ { selected : true , triggerValue : selectedValue , option : node as DefaultOptionType } ,
517
+ 'option' ,
518
+ ) ;
509
519
} else {
510
520
let newRawValues = selected
511
521
? [ ...rawValues , selectedValue ]
@@ -535,7 +545,11 @@ const TreeSelect = React.forwardRef<BaseSelectRef, TreeSelectProps>((props, ref)
535
545
...checkedKeys . map ( key => keyEntities [ key as SafeKey ] . node [ mergedFieldNames . value ] ) ,
536
546
] ;
537
547
}
538
- triggerChange ( newRawValues , { selected, triggerValue : selectedValue } , source || 'option' ) ;
548
+ triggerChange (
549
+ newRawValues ,
550
+ { selected, triggerValue : selectedValue , option : node as DefaultOptionType } ,
551
+ source || 'option' ,
552
+ ) ;
539
553
}
540
554
541
555
// Trigger select event
0 commit comments