From bfd5389e5b3ab7930d56f30293b4b56e57f62db7 Mon Sep 17 00:00:00 2001 From: 07akioni <07akioni2@gmail.com> Date: Mon, 10 Aug 2020 17:09:04 +0800 Subject: [PATCH] fix: RangePicker arrow keys do not start from current date --- examples/range.tsx | 9 +++++++++ src/PickerPanel.tsx | 2 +- tests/keyboard.spec.tsx | 21 +++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/examples/range.tsx b/examples/range.tsx index 0544f8151..471f88a1e 100644 --- a/examples/range.tsx +++ b/examples/range.tsx @@ -153,6 +153,15 @@ export default () => { renderExtraFooter={() =>
extra footer
} /> +
+

Uncontrolled2

+ + {...sharedProps} + value={undefined} + locale={zhCN} + placeholder={['start...', 'end...']} + /> +
); diff --git a/src/PickerPanel.tsx b/src/PickerPanel.tsx index 2c09f3a49..a1551aee1 100644 --- a/src/PickerPanel.tsx +++ b/src/PickerPanel.tsx @@ -313,7 +313,7 @@ function PickerPanel(props: PickerPanelProps) { } }; - if (operationRef) { + if (operationRef && panelPosition !== 'right') { operationRef.current = { onKeyDown: onInternalKeyDown, onClose: () => { diff --git a/tests/keyboard.spec.tsx b/tests/keyboard.spec.tsx index b1114622e..ad8fbfe4d 100644 --- a/tests/keyboard.spec.tsx +++ b/tests/keyboard.spec.tsx @@ -443,6 +443,27 @@ describe('Picker.Keyboard', () => { .props().value, ).toEqual(''); }); + + it('move based on current date on first keyboard event', () => { + jest.useFakeTimers(); + const onCalendarChange = jest.fn(); + const onChange = jest.fn(); + const wrapper = mount( + , + ); + + // Start Date + wrapper.openPicker(); + wrapper + .find('input') + .first() + .simulate('change', { target: { value: '' } }); + wrapper.keyDown(KeyCode.TAB); + wrapper.keyDown(KeyCode.RIGHT); + wrapper.keyDown(KeyCode.ENTER); + expect(onCalendarChange.mock.calls[0][1]).toEqual(['1990-09-04', '']); + expect(onChange).not.toHaveBeenCalled(); + }); }); it('enter should prevent default to avoid form submit', () => {