diff --git a/docs/examples/range.tsx b/docs/examples/range.tsx index 1b137c8b0..85da79106 100644 --- a/docs/examples/range.tsx +++ b/docs/examples/range.tsx @@ -202,6 +202,20 @@ export default () => { disabledDate={disabledDate} /> +
+

Limit Date

+ + generateConfig={momentGenerateConfig} + locale={zhCN} + defaultValue={[moment('2021-06-01'), moment('2021-06-02')]} + disabledDate={(current, { from }) => { + if (from) { + return Math.abs(current.diff(from, 'days')) >= 2; + } + return false; + }} + /> +
); diff --git a/tests/demo.spec.tsx b/tests/demo.spec.tsx new file mode 100644 index 000000000..2b74ef6a9 --- /dev/null +++ b/tests/demo.spec.tsx @@ -0,0 +1,41 @@ +import { fireEvent, render } from '@testing-library/react'; +import React from 'react'; +import { closePicker, DayRangePicker, getDay, openPicker } from './util/commonUtil'; + +const fakeTime = getDay('1990-09-03 00:00:00').valueOf(); + +describe('Picker.DisabledTime', () => { + beforeEach(() => { + jest.useFakeTimers().setSystemTime(fakeTime); + }); + + afterEach(() => { + jest.clearAllTimers(); + jest.useRealTimers(); + }); + + it('limit', async () => { + const wrapper = render( + { + if (from) { + return Math.abs(current.diff(from, 'days')) >= 2; + } + return false; + }} + />, + ); + + openPicker(wrapper.container); + fireEvent.click(wrapper.getByTitle('2021-06-21')); + fireEvent.click(wrapper.getByTitle('2021-06-26')); + closePicker(wrapper.container); + expect( + [ + wrapper.container.querySelectorAll('input')?.[0]?.value, + wrapper.container.querySelectorAll('input')?.[0]?.value, + ].join(' '), + ).toBe(['2021-06-21', '2021-06-21'].join(' ')); + }); +});