Skip to content

Commit 126dbe5

Browse files
BoyYangzai洋
andauthored
fix: disabled panel still open when finish choose and next is disabled (#639)
Co-authored-by: 洋 <[email protected]>
1 parent 85a8c5b commit 126dbe5

File tree

3 files changed

+25
-4
lines changed

3 files changed

+25
-4
lines changed

src/RangePicker.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1102,7 +1102,12 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
11021102
}
11031103

11041104
// Switch
1105-
triggerOpen(false, mergedActivePickerIndex, 'confirm');
1105+
const nextActivePickerIndex = mergedActivePickerIndex === 0 ? 1 : 0;
1106+
if (mergedDisabled[nextActivePickerIndex]) {
1107+
triggerOpen(false, false, 'confirm');
1108+
} else {
1109+
triggerOpen(false, mergedActivePickerIndex, 'confirm');
1110+
}
11061111
} else {
11071112
setSelectedValue(values);
11081113
}

tests/__snapshots__/range.spec.tsx.snap

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ exports[`Picker.Range panelRender 1`] = `
136136
<div>
137137
<div
138138
class="rc-picker-dropdown rc-picker-dropdown-range rc-picker-dropdown-placement-bottomLeft"
139-
style="left: -1000vw; top: -1000vh; box-sizing: border-box;"
139+
style="--arrow-x: 0px; --arrow-y: 0px; left: -1000vw; top: -1000vh; box-sizing: border-box;"
140140
>
141141
<div
142142
class="rc-picker-range-wrapper rc-picker-date-range-wrapper"
@@ -201,7 +201,7 @@ exports[`Picker.Range use dateRender and monthCellRender in date range picker 1`
201201
<div>
202202
<div
203203
class="rc-picker-dropdown rc-picker-dropdown-range rc-picker-dropdown-placement-bottomLeft"
204-
style="left: -1000vw; top: -1000vh; box-sizing: border-box;"
204+
style="--arrow-x: 0px; --arrow-y: 0px; left: -1000vw; top: -1000vh; box-sizing: border-box;"
205205
>
206206
<div
207207
class="rc-picker-range-wrapper rc-picker-date-range-wrapper"
@@ -1161,7 +1161,7 @@ exports[`Picker.Range use dateRender and monthCellRender in month range picker 1
11611161
<div>
11621162
<div
11631163
class="rc-picker-dropdown rc-picker-dropdown-range rc-picker-dropdown-placement-bottomLeft"
1164-
style="left: -1000vw; top: -1000vh; box-sizing: border-box;"
1164+
style="--arrow-x: 0px; --arrow-y: 0px; left: -1000vw; top: -1000vh; box-sizing: border-box;"
11651165
>
11661166
<div
11671167
class="rc-picker-range-wrapper rc-picker-month-range-wrapper"

tests/range.spec.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,12 +238,28 @@ describe('Picker.Range', () => {
238238
});
239239

240240
describe('disabled', () => {
241+
it('should no panel open with disabled', () => {
242+
const { baseElement } = render(<MomentRangePicker disabled />);
243+
expect(baseElement.querySelectorAll('.rc-picker-input')).toHaveLength(2);
244+
fireEvent.click(baseElement.querySelector('.rc-picker-input'));
245+
expect(baseElement.querySelector('.rc-picker-dropdown')).toBeFalsy();
246+
});
247+
241248
it('basic disabled check', () => {
242249
const { container } = render(<MomentRangePicker disabled={[true, false]} />);
243250
expect(container.querySelectorAll('input')[0].disabled).toBeTruthy();
244251
expect(container.querySelectorAll('input')[1].disabled).toBeFalsy();
245252
});
246253

254+
it('should close panel when finish choose panel and next is disabled with disabled = [false, true]/[true,false]', () => {
255+
const { baseElement, container } = render(<MomentRangePicker disabled={[false, true]} />);
256+
expect(baseElement.querySelectorAll('.rc-picker-input')).toHaveLength(2);
257+
fireEvent.click(baseElement.querySelectorAll('.rc-picker-input')[0]);
258+
expect(baseElement.querySelector('.rc-picker-dropdown-hidden')).toBeFalsy();
259+
fireEvent.click(baseElement.querySelector('.rc-picker-cell-inner'));
260+
expect(baseElement.querySelector('.rc-picker-dropdown-hidden')).toBeTruthy();
261+
});
262+
247263
it('startDate will have disabledDate when endDate is not selectable', () => {
248264
const onChange = jest.fn();
249265
const { container } = render(

0 commit comments

Comments
 (0)