diff --git a/src/test/year_picker_test.test.tsx b/src/test/year_picker_test.test.tsx index 6721abcd2..e5085a04e 100644 --- a/src/test/year_picker_test.test.tsx +++ b/src/test/year_picker_test.test.tsx @@ -910,6 +910,29 @@ describe("YearPicker", () => { expect(selectedDay ? getYear(selectedDay) : selectedDay).toBe(2021); }); + it("should select a year when Enter is pressed without a selected date", () => { + const onDayClickMock = jest.fn(); + const date = newDate("2024-01-01"); + const { container } = render( + {}} + onYearMouseLeave={() => {}} + />, + ); + + const target = safeQuerySelector( + container, + ".react-datepicker__year-2024", + ); + fireEvent.keyDown(target, getKey(KeyType.Enter)); + + expect(onDayClickMock).toHaveBeenCalledTimes(1); + expect(getYear(onDayClickMock.mock.calls[0][0])).toBe(2024); + }); + it("should call onKeyDown handler on any key press", () => { const onKeyDownSpy = jest.fn(); @@ -1039,9 +1062,7 @@ describe("YearPicker", () => { fireEvent.keyDown(currentYear, getKey(KeyType.Enter)); - // When selected is null and Enter is pressed, onDayClick should not be called - // because of the early return at line 297 - expect(onDayClickMock).not.toHaveBeenCalled(); + expect(onDayClickMock).toHaveBeenCalledTimes(1); }); it("should handle keyboard navigation with null preSelection (Arrow keys)", () => { diff --git a/src/year.tsx b/src/year.tsx index 36b363d43..cba8b72f8 100644 --- a/src/year.tsx +++ b/src/year.tsx @@ -292,11 +292,10 @@ export default class Year extends Component { if (!this.props.disabledKeyboardNavigation) { switch (key) { case KeyType.Enter: - if (this.props.selected == null) { - break; - } this.onYearClick(event, y); - this.props.setPreSelection?.(this.props.selected); + if (this.props.selected != null) { + this.props.setPreSelection?.(this.props.selected); + } break; case KeyType.ArrowRight: if (this.props.preSelection == null) {