From b4a3dca2f70cbb89f95f19c92bbccf59360c692d Mon Sep 17 00:00:00 2001 From: Zyf665 <1246271707@qq.com> Date: Sun, 3 Nov 2024 23:02:37 +0800 Subject: [PATCH] fix: After the RangePicker sets disabledDate, the date cannot be modified. --- src/PickerInput/hooks/useRangeValue.ts | 5 ++--- tests/range.spec.tsx | 28 +++++++++++++++++++------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/PickerInput/hooks/useRangeValue.ts b/src/PickerInput/hooks/useRangeValue.ts index 8e1c8a52a..14814869f 100644 --- a/src/PickerInput/hooks/useRangeValue.ts +++ b/src/PickerInput/hooks/useRangeValue.ts @@ -270,10 +270,9 @@ export default function useRangeValue>> Invalid const validateDates = // Validate start - (!start || !isInvalidateDate(start, { activeIndex: 0 })) && + (disabled[0] || !start || !isInvalidateDate(start, { activeIndex: 0 })) && // Validate end - (!end || !isInvalidateDate(end, { from: start, activeIndex: 1 })); - + (disabled[1] || !end || !isInvalidateDate(end, { from: start, activeIndex: 1 })); // >>> Result const allPassed = // Null value is from clear button diff --git a/tests/range.spec.tsx b/tests/range.spec.tsx index db5660154..ab31b7c86 100644 --- a/tests/range.spec.tsx +++ b/tests/range.spec.tsx @@ -231,6 +231,25 @@ describe('Picker.Range', () => { expect(baseElement.querySelector('.rc-picker-dropdown-hidden')).toBeTruthy(); }); + it('should not be checked if the value is disabled', () => { + const onChange = jest.fn(); + const { container } = render( + date <= dayjs('2024-11-20').endOf('day')} + onChange={onChange} + />, + ); + + openPicker(container, 1); + selectCell('21', 1); + expect(onChange).toHaveBeenCalledWith( + [expect.anything(), expect.anything()], + ['2024-10-28', '2024-11-21'], + ); + }); + it('should close panel when finish first choose with showTime = true and disabled = [false, true]', () => { const { baseElement } = render(); expect(baseElement.querySelectorAll('.rc-picker-input')).toHaveLength(2); @@ -541,7 +560,7 @@ describe('Picker.Range', () => { it('pass tabIndex', () => { const { container } = render(
- +
, ); @@ -705,12 +724,7 @@ describe('Picker.Range', () => { }); it('prefix', () => { - render( - } - allowClear - />, - ); + render(} allowClear />); expect(document.querySelector('.prefix')).toBeInTheDocument(); });