YearBody.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import { createVNode as _createVNode } from "vue";
  3. import { YEAR_DECADE_COUNT } from '.';
  4. import useCellClassName from '../../hooks/useCellClassName';
  5. import { formatValue, isSameYear } from '../../utils/dateUtil';
  6. import { useInjectRange } from '../../RangeContext';
  7. import PanelBody from '../PanelBody';
  8. import useMergeProps from '../../hooks/useMergeProps';
  9. export var YEAR_COL_COUNT = 3;
  10. var YEAR_ROW_COUNT = 4;
  11. function YearBody(_props) {
  12. var props = useMergeProps(_props);
  13. var prefixCls = props.prefixCls,
  14. value = props.value,
  15. viewDate = props.viewDate,
  16. locale = props.locale,
  17. generateConfig = props.generateConfig;
  18. var _useInjectRange = useInjectRange(),
  19. rangedValue = _useInjectRange.rangedValue,
  20. hoverRangedValue = _useInjectRange.hoverRangedValue;
  21. var yearPrefixCls = "".concat(prefixCls, "-cell");
  22. // =============================== Year ===============================
  23. var yearNumber = generateConfig.getYear(viewDate);
  24. var startYear = Math.floor(yearNumber / YEAR_DECADE_COUNT) * YEAR_DECADE_COUNT;
  25. var endYear = startYear + YEAR_DECADE_COUNT - 1;
  26. var baseYear = generateConfig.setYear(viewDate, startYear - Math.ceil((YEAR_COL_COUNT * YEAR_ROW_COUNT - YEAR_DECADE_COUNT) / 2));
  27. var isInView = function isInView(date) {
  28. var currentYearNumber = generateConfig.getYear(date);
  29. return startYear <= currentYearNumber && currentYearNumber <= endYear;
  30. };
  31. var getCellClassName = useCellClassName({
  32. cellPrefixCls: yearPrefixCls,
  33. value: value,
  34. generateConfig: generateConfig,
  35. rangedValue: rangedValue.value,
  36. hoverRangedValue: hoverRangedValue.value,
  37. isSameCell: function isSameCell(current, target) {
  38. return isSameYear(generateConfig, current, target);
  39. },
  40. isInView: isInView,
  41. offsetCell: function offsetCell(date, offset) {
  42. return generateConfig.addYear(date, offset);
  43. }
  44. });
  45. return _createVNode(PanelBody, _objectSpread(_objectSpread({}, props), {}, {
  46. "rowNum": YEAR_ROW_COUNT,
  47. "colNum": YEAR_COL_COUNT,
  48. "baseDate": baseYear,
  49. "getCellText": generateConfig.getYear,
  50. "getCellClassName": getCellClassName,
  51. "getCellDate": generateConfig.addYear,
  52. "titleCell": function titleCell(date) {
  53. return formatValue(date, {
  54. locale: locale,
  55. format: 'YYYY',
  56. generateConfig: generateConfig
  57. });
  58. }
  59. }), null);
  60. }
  61. YearBody.displayName = 'YearBody';
  62. YearBody.inheritAttrs = false;
  63. export default YearBody;