FixDisabledDate.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import React from 'react';
  2. import { DatePicker } from '@douyinfe/semi-ui';
  3. import * as dateFns from 'date-fns';
  4. App.storyName = 'fix disabled date';
  5. /**
  6. * test with cypress, please do not modify
  7. * @returns
  8. */
  9. export default function App() {
  10. const today = new Date('2023-05-06');
  11. const disabledDate = (date, options) => {
  12. const { rangeInputFocus } = options;
  13. const baseDate = dateFns.set(today, { hours: 0, minutes: 0, seconds: 0, milliseconds: 0 });
  14. if (rangeInputFocus === 'rangeStart') {
  15. const disabledStart = dateFns.subDays(baseDate, 2);
  16. const disabledEnd = dateFns.addDays(baseDate, 2);
  17. return disabledStart <= date && date <= disabledEnd;
  18. } else if (rangeInputFocus === 'rangeEnd') {
  19. const disabledStart = dateFns.subDays(baseDate, 3);
  20. const disabledEnd = dateFns.addDays(baseDate, 3);
  21. const result = disabledStart <= date && date <= disabledEnd;
  22. console.log('date', date, options, result);
  23. return result;
  24. } else {
  25. return false;
  26. }
  27. };
  28. return (
  29. <div>
  30. <h4>{`开始日期禁用今天前2日和后2日,结束日期禁用今天前3天和后3天`}</h4>
  31. <DatePicker motion={false} type='dateRange' disabledDate={disabledDate} defaultPickerValue={today} />
  32. </div>
  33. );
  34. }