dynamicDisabledDate.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. import React from 'react';
  2. import { DatePicker } from '@douyinfe/semi-ui';
  3. import * as dateFns from 'date-fns';
  4. /**
  5. * test with cypress, please do not modify
  6. */
  7. export default function App() {
  8. const today = new Date();
  9. const disabledDate = (date, options) => {
  10. const { rangeInputFocus } = options;
  11. const baseDate = dateFns.set(today, { hours: 0, minutes: 0, seconds: 0, milliseconds: 0 });
  12. if (rangeInputFocus === 'rangeStart') {
  13. const endDate = new Date(options.rangeEnd);
  14. const disabledStart = dateFns.subDays(endDate, 20);
  15. return date <= disabledStart;
  16. } else if (rangeInputFocus === 'rangeEnd') {
  17. const startDate = new Date(options.rangeStart);
  18. const disabledEnd = dateFns.addDays(startDate, 20);
  19. return date >= disabledEnd;
  20. } else {
  21. return false;
  22. }
  23. };
  24. return (
  25. <div>
  26. <DatePicker motion={false} type='dateRange' disabledDate={disabledDate} defaultPickerValue={today} />
  27. </div>
  28. );
  29. }
  30. App.storyName = 'fix dynamic disabledDate';