DecadeBody.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import { createVNode as _createVNode } from "vue";
  3. import { DECADE_DISTANCE_COUNT, DECADE_UNIT_DIFF } from '.';
  4. import PanelBody from '../PanelBody';
  5. import useMergeProps from '../../hooks/useMergeProps';
  6. export const DECADE_COL_COUNT = 3;
  7. const DECADE_ROW_COUNT = 4;
  8. function DecadeBody(_props) {
  9. const props = useMergeProps(_props);
  10. const DECADE_UNIT_DIFF_DES = DECADE_UNIT_DIFF - 1;
  11. const {
  12. prefixCls,
  13. viewDate,
  14. generateConfig
  15. } = props;
  16. const cellPrefixCls = `${prefixCls}-cell`;
  17. const yearNumber = generateConfig.getYear(viewDate);
  18. const decadeYearNumber = Math.floor(yearNumber / DECADE_UNIT_DIFF) * DECADE_UNIT_DIFF;
  19. const startDecadeYear = Math.floor(yearNumber / DECADE_DISTANCE_COUNT) * DECADE_DISTANCE_COUNT;
  20. const endDecadeYear = startDecadeYear + DECADE_DISTANCE_COUNT - 1;
  21. const baseDecadeYear = generateConfig.setYear(viewDate, startDecadeYear - Math.ceil((DECADE_COL_COUNT * DECADE_ROW_COUNT * DECADE_UNIT_DIFF - DECADE_DISTANCE_COUNT) / 2));
  22. const getCellClassName = date => {
  23. const startDecadeNumber = generateConfig.getYear(date);
  24. const endDecadeNumber = startDecadeNumber + DECADE_UNIT_DIFF_DES;
  25. return {
  26. [`${cellPrefixCls}-in-view`]: startDecadeYear <= startDecadeNumber && endDecadeNumber <= endDecadeYear,
  27. [`${cellPrefixCls}-selected`]: startDecadeNumber === decadeYearNumber
  28. };
  29. };
  30. return _createVNode(PanelBody, _objectSpread(_objectSpread({}, props), {}, {
  31. "rowNum": DECADE_ROW_COUNT,
  32. "colNum": DECADE_COL_COUNT,
  33. "baseDate": baseDecadeYear,
  34. "getCellText": date => {
  35. const startDecadeNumber = generateConfig.getYear(date);
  36. return `${startDecadeNumber}-${startDecadeNumber + DECADE_UNIT_DIFF_DES}`;
  37. },
  38. "getCellClassName": getCellClassName,
  39. "getCellDate": (date, offset) => generateConfig.addYear(date, offset * DECADE_UNIT_DIFF)
  40. }), null);
  41. }
  42. DecadeBody.displayName = 'DecadeBody';
  43. DecadeBody.inheritAttrs = false;
  44. export default DecadeBody;