1
0

index.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import React from 'react';
  2. import { DatePicker, Space } from '@douyinfe/semi-ui';
  3. import classNames from 'classnames';
  4. import '@douyinfe/semi-foundation/datePicker/datePicker.scss';
  5. import './index.scss';
  6. /**
  7. * 开启 Chromatic UI 测试
  8. */
  9. export default function Demo() {
  10. const dayStyle = {
  11. display: 'flex',
  12. alignItems: 'center',
  13. justifyContent: 'center',
  14. width: '100%',
  15. height: '100%',
  16. margin: '0 auto',
  17. boxSizing: 'border-box',
  18. borderRadius: '50%',
  19. };
  20. const renderFullDate = (dayNumber, fullDate, dayStatus) => {
  21. const { isToday, isInRange, isHover, isSelected, isSelectedStart, isSelectedEnd, isDisabled } = dayStatus;
  22. const prefix = 'components-datepicker-demo';
  23. const dateCls = classNames({
  24. [`${prefix}-day-today`]: isToday,
  25. [`${prefix}-day-inrange`]: isInRange,
  26. [`${prefix}-day-hover`]: isHover,
  27. [`${prefix}-day-selected`]: isSelected,
  28. [`${prefix}-day-selected-start`]: isSelectedStart,
  29. [`${prefix}-day-selected-end`]: isSelectedEnd,
  30. [`${prefix}-day-disabled`]: isDisabled,
  31. });
  32. return (
  33. <div style={dayStyle} className={dateCls}>
  34. {dayNumber}
  35. </div>
  36. );
  37. };
  38. const props = {
  39. defaultOpen: true,
  40. position: 'bottomLeft',
  41. autoAdjustOverflow: false,
  42. motion: false,
  43. };
  44. const singleDefaultValue = new Date('2021-01-08');
  45. const multipleDefaultValue = [new Date('2021-01-08'), new Date('2021-01-09'), new Date('2021-01-10'), new Date('2021-01-19')];
  46. const rangeDefaultValue = [new Date('2021-12-08'), new Date('2021-01-20')];
  47. return (
  48. <div style={{ height: '100vh' }}>
  49. <div>
  50. 通过 renderFullDate 可以自定义日期单元格子的渲染,API 提供日期的当前状态:是否被选中,是否是当前日等。
  51. </div>
  52. <Space wrap spacing={[12, 400]}>
  53. <div>
  54. 单选选中
  55. <DatePicker {...props} style={{ width: '230px' }} renderFullDate={renderFullDate} defaultValue={singleDefaultValue} />
  56. </div>
  57. <div>
  58. 多选选中
  59. <DatePicker {...props} style={{ width: '230px' }} multiple={true} renderFullDate={renderFullDate} defaultValue={multipleDefaultValue} />
  60. </div>
  61. <div>
  62. 范围选中
  63. <DatePicker {...props} style={{ width: '230px' }} type={'dateRange'} renderFullDate={renderFullDate} defaultValue={rangeDefaultValue} />
  64. </div>
  65. </Space>
  66. </div>
  67. );
  68. }
  69. Demo.parameters = {
  70. chromatic: {
  71. disableSnapshot: false,
  72. delay: 3000,
  73. viewports: [1800]
  74. },
  75. };