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', () => {