From 8edfbe3434e738d1d06c66ec95680757f882cee4 Mon Sep 17 00:00:00 2001 From: Kermit Xuan Date: Mon, 10 Aug 2020 14:07:10 +0800 Subject: [PATCH] fix(range): panel keep open when nextValue is empty(#26024) (#122) * fix(range): panel keep open when nextValue is empty(#26024) * chore: udpate test case --- src/RangePicker.tsx | 2 +- tests/range.spec.tsx | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/RangePicker.tsx b/src/RangePicker.tsx index 468bf1fe78ed..8f19b89178b5 100644 --- a/src/RangePicker.tsx +++ b/src/RangePicker.tsx @@ -470,7 +470,7 @@ function InnerRangePicker(props: RangePickerProps) { if ( nextOpenIndex !== null && nextOpenIndex !== mergedActivePickerIndex && - !openRecordsRef.current[nextOpenIndex] && + (!openRecordsRef.current[nextOpenIndex] || !getValue(values, nextOpenIndex)) && getValue(values, sourceIndex) ) { // Delay to focus to avoid input blur trigger expired selectedValues diff --git a/tests/range.spec.tsx b/tests/range.spec.tsx index 2934d15a5fd0..fc0a134f5f1e 100644 --- a/tests/range.spec.tsx +++ b/tests/range.spec.tsx @@ -1696,4 +1696,40 @@ describe('Picker.Range', () => { ).toEqual('2020-07-24 06:00:00'); expect(wrapper.find('.rc-picker-ok button').props().disabled).toBeTruthy(); }); + + // https://github.com/ant-design/ant-design/issues/26024 + it('panel should keep open when nextValue is empty', () => { + const wrapper = mount(); + + wrapper.openPicker(0); + + wrapper.selectCell(7, 0); + expect( + wrapper + .find('input') + .first() + .prop('value'), + ).toBe('1990-09-07'); + + // back to first panel and clear input value + wrapper + .find('input') + .first() + .simulate('focus'); + wrapper.inputValue('', 0); + + // reselect date + wrapper.selectCell(9, 0); + expect( + wrapper + .find('input') + .first() + .prop('value'), + ).toBe('1990-09-09'); + + // end date + wrapper.selectCell(9, 1); + + matchValues(wrapper, '1990-09-09', '1990-10-09'); + }); });