diff --git a/src/RangePicker.tsx b/src/RangePicker.tsx index 4bc2d132d..804c89f21 100644 --- a/src/RangePicker.tsx +++ b/src/RangePicker.tsx @@ -648,7 +648,11 @@ function InnerRangePicker(props: RangePickerProps) { updateValues(selectedValue, date, mergedActivePickerIndex), ); - setViewDate(date, mergedActivePickerIndex); + let viewDate = date; + if (panelPosition === 'right') { + viewDate = getClosingViewDate(viewDate, newMode as any, generateConfig, -1); + } + setViewDate(viewDate, mergedActivePickerIndex); }} onOk={null} onSelect={undefined} @@ -725,12 +729,21 @@ function InnerRangePicker(props: RangePickerProps) { }, }); - panels = ( - <> - {direction === 'rtl' ? rightPanel : leftPanel} - {direction === 'rtl' ? showDoublePanel && leftPanel : showDoublePanel && rightPanel} - - ); + if (direction === 'rtl') { + panels = ( + <> + {rightPanel} + {showDoublePanel && leftPanel} + + ); + } else { + panels = ( + <> + {leftPanel} + {showDoublePanel && rightPanel} + + ); + } } else { panels = renderPanel(); } diff --git a/tests/range.spec.tsx b/tests/range.spec.tsx index a9bda21c9..0c625b261 100644 --- a/tests/range.spec.tsx +++ b/tests/range.spec.tsx @@ -933,6 +933,28 @@ describe('Picker.Range', () => { }); }, ); + + // https://github.com/ant-design/ant-design/issues/22991 + it('click switch 1 offset', () => { + const wrapper = mount(); + wrapper.openPicker(); + expect( + wrapper + .find('.rc-picker-header-view') + .first() + .text(), + ).toEqual('Sep1990'); + wrapper + .find('.rc-picker-header-next-btn') + .last() + .simulate('click'); + expect( + wrapper + .find('.rc-picker-header-view') + .first() + .text(), + ).toEqual('Oct1990'); + }); }); // https://github.com/ant-design/ant-design/issues/20868