From 14997d0e2bb942a39054f1fe86c89439e8fbc25d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B4=8B?= Date: Wed, 24 May 2023 23:02:43 +0800 Subject: [PATCH] fix: datePanel shouldn't be clicked with open and disabled --- src/hooks/useRangeDisabled.ts | 5 +++-- tests/range.spec.tsx | 10 +++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/hooks/useRangeDisabled.ts b/src/hooks/useRangeDisabled.ts index a201da5d7..c42a93c56 100644 --- a/src/hooks/useRangeDisabled.ts +++ b/src/hooks/useRangeDisabled.ts @@ -43,7 +43,7 @@ export default function useRangeDisabled( const disabledStartDate = React.useCallback( (date: DateType) => { - if (disabledDate && disabledDate(date)) { + if (disabled[0] || (disabledDate && disabledDate(date))) { return true; } @@ -75,7 +75,8 @@ export default function useRangeDisabled( const disabledEndDate = React.useCallback( (date: DateType) => { - if (disabledDate && disabledDate(date)) { + + if (disabled[1] || (disabledDate && disabledDate(date))) { return true; } diff --git a/tests/range.spec.tsx b/tests/range.spec.tsx index f56e4f84d..786adca4f 100644 --- a/tests/range.spec.tsx +++ b/tests/range.spec.tsx @@ -252,7 +252,7 @@ describe('Picker.Range', () => { }); it('should close panel when finish choose panel and next is disabled with disabled = [false, true]/[true,false]', () => { - const { baseElement, container } = render(); + const { baseElement } = render(); expect(baseElement.querySelectorAll('.rc-picker-input')).toHaveLength(2); fireEvent.click(baseElement.querySelectorAll('.rc-picker-input')[0]); expect(baseElement.querySelector('.rc-picker-dropdown-hidden')).toBeFalsy(); @@ -260,6 +260,14 @@ describe('Picker.Range', () => { expect(baseElement.querySelector('.rc-picker-dropdown-hidden')).toBeTruthy(); }); + it('panel can not be clicked with open and disabled', () => { + const onChange = jest.fn(); + const { baseElement } = render(); + expect(baseElement.querySelector('.rc-picker-cell')).toBeTruthy(); + fireEvent.click(baseElement.querySelector('.rc-picker-cell')); + expect(onChange).not.toBeCalled(); + }); + it('startDate will have disabledDate when endDate is not selectable', () => { const onChange = jest.fn(); const { container } = render(