diff --git a/src/PickerInput/SinglePicker.tsx b/src/PickerInput/SinglePicker.tsx index 9fe862d84..bb9ebed55 100644 --- a/src/PickerInput/SinglePicker.tsx +++ b/src/PickerInput/SinglePicker.tsx @@ -444,7 +444,9 @@ function Picker( const nextValues = multiple ? toggleDates(getCalendarValue(), date) : [date]; // Only trigger calendar event but not update internal `calendarValue` state - triggerCalendarChange(nextValues); + if(internalPicker === internalMode) { + triggerCalendarChange(nextValues); + } // >>> Trigger next active if !needConfirm // Fully logic check `useRangeValue` hook diff --git a/tests/picker.spec.tsx b/tests/picker.spec.tsx index d6751c775..e2eec004b 100644 --- a/tests/picker.spec.tsx +++ b/tests/picker.spec.tsx @@ -478,6 +478,20 @@ describe('Picker.Basic', () => { expect(document.querySelector('.rc-picker-date-panel')).toBeTruthy(); }); + it('date -> year -> month -> date: Selecting date when panel is different than the picker typ shouldn\'t auto-select dates: date -> year -> month -> date', () => { + const { container } = render(); + openPicker(container); + fireEvent.click(document.querySelector('.rc-picker-year-btn')); + + expect(document.querySelector('input').value).toEqual(''); + selectCell(1990); + expect(document.querySelector('input').value).toEqual(''); + selectCell('Jan'); + expect(document.querySelector('input').value).toEqual(''); + selectCell(3); + expect(document.querySelector('input').value).toEqual('1990-01-03'); + }); + it('time', () => { const onChange = jest.fn(); const onOk = jest.fn();