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>) {
241241 ( ) => mergedMode ,
242242 ) ;
243243
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 ) ;
246249 setSourceMode ( mergedMode ) ;
247250 setInnerMode ( nextMode ) ;
248251
249- if ( onPanelChange && mergedMode !== nextMode ) {
252+ if (
253+ onPanelChange &&
254+ ( mergedMode !== nextMode || isEqual ( generateConfig , viewDate , viewDate ) )
255+ ) {
250256 onPanelChange ( viewValue , nextMode ) ;
251257 }
252258 } ;
Original file line number Diff line number Diff line change @@ -80,7 +80,7 @@ export interface PanelSharedProps<DateType> {
8080
8181 onSelect : OnSelect < DateType > ;
8282 onViewDateChange : ( value : DateType ) => void ;
83- onPanelChange : ( mode : PanelMode , viewValue : DateType ) => void ;
83+ onPanelChange : ( mode : PanelMode | null , viewValue : DateType ) => void ;
8484}
8585
8686export interface DisabledTimes {
Original file line number Diff line number Diff line change @@ -60,10 +60,14 @@ function DatePanel<DateType>(props: DatePanelProps<DateType>) {
6060
6161 // ==================== View Operation ====================
6262 const onYearChange = ( diff : number ) => {
63- onViewDateChange ( generateConfig . addYear ( viewDate , diff ) ) ;
63+ const newDate = generateConfig . addYear ( viewDate , diff ) ;
64+ onViewDateChange ( newDate ) ;
65+ onPanelChange ( null , newDate ) ;
6466 } ;
6567 const onMonthChange = ( diff : number ) => {
66- onViewDateChange ( generateConfig . addMonth ( viewDate , diff ) ) ;
68+ const newDate = generateConfig . addMonth ( viewDate , diff ) ;
69+ onViewDateChange ( newDate ) ;
70+ onPanelChange ( null , newDate ) ;
6771 } ;
6872
6973 return (
Original file line number Diff line number Diff line change @@ -55,9 +55,12 @@ function DecadePanel<DateType>(props: DecadePanelProps<DateType>) {
5555
5656 // ==================== View Operation ====================
5757 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 ,
6061 ) ;
62+ onViewDateChange ( newDate ) ;
63+ onPanelChange ( null , newDate ) ;
6164 } ;
6265
6366 const onInternalSelect = ( date : DateType ) => {
Original file line number Diff line number Diff line change @@ -46,7 +46,9 @@ function MonthPanel<DateType>(props: MonthPanelProps<DateType>) {
4646
4747 // ==================== View Operation ====================
4848 const onYearChange = ( diff : number ) => {
49- onViewDateChange ( generateConfig . addYear ( viewDate , diff ) ) ;
49+ const newDate = generateConfig . addYear ( viewDate , diff ) ;
50+ onViewDateChange ( newDate ) ;
51+ onPanelChange ( null , newDate ) ;
5052 } ;
5153
5254 return (
Original file line number Diff line number Diff line change @@ -55,7 +55,9 @@ function YearPanel<DateType>(props: YearPanelProps<DateType>) {
5555
5656 // ==================== View Operation ====================
5757 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 ) ;
5961 } ;
6062
6163 return (
Original file line number Diff line number Diff line change @@ -372,6 +372,7 @@ describe('Picker.Basic', () => {
372372
373373 // Next page
374374 wrapper . find ( '.rc-picker-header-super-next-btn' ) . simulate ( 'click' ) ;
375+ expectPanelChange ( '2090-09-03' , 'decade' ) ;
375376
376377 // Select decade
377378 wrapper . selectCell ( '2010-2019' ) ;
You can’t perform that action at this time.
0 commit comments