File tree Expand file tree Collapse file tree 7 files changed +28
-10
lines changed Expand file tree Collapse file tree 7 files changed +28
-10
lines changed Original file line number Diff line number Diff line change @@ -241,12 +241,18 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
241
241
( ) => mergedMode ,
242
242
) ;
243
243
244
- const onInternalPanelChange = ( newMode : PanelMode , viewValue : DateType ) => {
245
- const nextMode = getInternalNextMode ( newMode ) ;
244
+ const onInternalPanelChange = (
245
+ newMode : PanelMode | null ,
246
+ viewValue : DateType ,
247
+ ) => {
248
+ const nextMode = getInternalNextMode ( newMode || mergedMode ) ;
246
249
setSourceMode ( mergedMode ) ;
247
250
setInnerMode ( nextMode ) ;
248
251
249
- if ( onPanelChange && mergedMode !== nextMode ) {
252
+ if (
253
+ onPanelChange &&
254
+ ( mergedMode !== nextMode || isEqual ( generateConfig , viewDate , viewDate ) )
255
+ ) {
250
256
onPanelChange ( viewValue , nextMode ) ;
251
257
}
252
258
} ;
Original file line number Diff line number Diff line change @@ -80,7 +80,7 @@ export interface PanelSharedProps<DateType> {
80
80
81
81
onSelect : OnSelect < DateType > ;
82
82
onViewDateChange : ( value : DateType ) => void ;
83
- onPanelChange : ( mode : PanelMode , viewValue : DateType ) => void ;
83
+ onPanelChange : ( mode : PanelMode | null , viewValue : DateType ) => void ;
84
84
}
85
85
86
86
export interface DisabledTimes {
Original file line number Diff line number Diff line change @@ -60,10 +60,14 @@ function DatePanel<DateType>(props: DatePanelProps<DateType>) {
60
60
61
61
// ==================== View Operation ====================
62
62
const onYearChange = ( diff : number ) => {
63
- onViewDateChange ( generateConfig . addYear ( viewDate , diff ) ) ;
63
+ const newDate = generateConfig . addYear ( viewDate , diff ) ;
64
+ onViewDateChange ( newDate ) ;
65
+ onPanelChange ( null , newDate ) ;
64
66
} ;
65
67
const onMonthChange = ( diff : number ) => {
66
- onViewDateChange ( generateConfig . addMonth ( viewDate , diff ) ) ;
68
+ const newDate = generateConfig . addMonth ( viewDate , diff ) ;
69
+ onViewDateChange ( newDate ) ;
70
+ onPanelChange ( null , newDate ) ;
67
71
} ;
68
72
69
73
return (
Original file line number Diff line number Diff line change @@ -55,9 +55,12 @@ function DecadePanel<DateType>(props: DecadePanelProps<DateType>) {
55
55
56
56
// ==================== View Operation ====================
57
57
const onDecadesChange = ( diff : number ) => {
58
- onViewDateChange (
59
- generateConfig . addYear ( viewDate , diff * DECADE_DISTANCE_COUNT ) ,
58
+ const newDate = generateConfig . addYear (
59
+ viewDate ,
60
+ diff * DECADE_DISTANCE_COUNT ,
60
61
) ;
62
+ onViewDateChange ( newDate ) ;
63
+ onPanelChange ( null , newDate ) ;
61
64
} ;
62
65
63
66
const onInternalSelect = ( date : DateType ) => {
Original file line number Diff line number Diff line change @@ -46,7 +46,9 @@ function MonthPanel<DateType>(props: MonthPanelProps<DateType>) {
46
46
47
47
// ==================== View Operation ====================
48
48
const onYearChange = ( diff : number ) => {
49
- onViewDateChange ( generateConfig . addYear ( viewDate , diff ) ) ;
49
+ const newDate = generateConfig . addYear ( viewDate , diff ) ;
50
+ onViewDateChange ( newDate ) ;
51
+ onPanelChange ( null , newDate ) ;
50
52
} ;
51
53
52
54
return (
Original file line number Diff line number Diff line change @@ -55,7 +55,9 @@ function YearPanel<DateType>(props: YearPanelProps<DateType>) {
55
55
56
56
// ==================== View Operation ====================
57
57
const onDecadeChange = ( diff : number ) => {
58
- onViewDateChange ( generateConfig . addYear ( viewDate , diff * 10 ) ) ;
58
+ const newDate = generateConfig . addYear ( viewDate , diff * 10 ) ;
59
+ onViewDateChange ( newDate ) ;
60
+ onPanelChange ( null , newDate ) ;
59
61
} ;
60
62
61
63
return (
Original file line number Diff line number Diff line change @@ -372,6 +372,7 @@ describe('Picker.Basic', () => {
372
372
373
373
// Next page
374
374
wrapper . find ( '.rc-picker-header-super-next-btn' ) . simulate ( 'click' ) ;
375
+ expectPanelChange ( '2090-09-03' , 'decade' ) ;
375
376
376
377
// Select decade
377
378
wrapper . selectCell ( '2010-2019' ) ;
You can’t perform that action at this time.
0 commit comments