YearBody.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = exports.YEAR_COL_COUNT = void 0;
  7. var _vue = require("vue");
  8. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  9. var _ = require(".");
  10. var _useCellClassName = _interopRequireDefault(require("../../hooks/useCellClassName"));
  11. var _dateUtil = require("../../utils/dateUtil");
  12. var _RangeContext = require("../../RangeContext");
  13. var _PanelBody = _interopRequireDefault(require("../PanelBody"));
  14. var _useMergeProps = _interopRequireDefault(require("../../hooks/useMergeProps"));
  15. const YEAR_COL_COUNT = exports.YEAR_COL_COUNT = 3;
  16. const YEAR_ROW_COUNT = 4;
  17. function YearBody(_props) {
  18. const props = (0, _useMergeProps.default)(_props);
  19. const {
  20. prefixCls,
  21. value,
  22. viewDate,
  23. locale,
  24. generateConfig
  25. } = props;
  26. const {
  27. rangedValue,
  28. hoverRangedValue
  29. } = (0, _RangeContext.useInjectRange)();
  30. const yearPrefixCls = `${prefixCls}-cell`;
  31. // =============================== Year ===============================
  32. const yearNumber = generateConfig.getYear(viewDate);
  33. const startYear = Math.floor(yearNumber / _.YEAR_DECADE_COUNT) * _.YEAR_DECADE_COUNT;
  34. const endYear = startYear + _.YEAR_DECADE_COUNT - 1;
  35. const baseYear = generateConfig.setYear(viewDate, startYear - Math.ceil((YEAR_COL_COUNT * YEAR_ROW_COUNT - _.YEAR_DECADE_COUNT) / 2));
  36. const isInView = date => {
  37. const currentYearNumber = generateConfig.getYear(date);
  38. return startYear <= currentYearNumber && currentYearNumber <= endYear;
  39. };
  40. const getCellClassName = (0, _useCellClassName.default)({
  41. cellPrefixCls: yearPrefixCls,
  42. value,
  43. generateConfig,
  44. rangedValue: rangedValue.value,
  45. hoverRangedValue: hoverRangedValue.value,
  46. isSameCell: (current, target) => (0, _dateUtil.isSameYear)(generateConfig, current, target),
  47. isInView,
  48. offsetCell: (date, offset) => generateConfig.addYear(date, offset)
  49. });
  50. return (0, _vue.createVNode)(_PanelBody.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
  51. "rowNum": YEAR_ROW_COUNT,
  52. "colNum": YEAR_COL_COUNT,
  53. "baseDate": baseYear,
  54. "getCellText": generateConfig.getYear,
  55. "getCellClassName": getCellClassName,
  56. "getCellDate": generateConfig.addYear,
  57. "titleCell": date => (0, _dateUtil.formatValue)(date, {
  58. locale,
  59. format: 'YYYY',
  60. generateConfig
  61. })
  62. }), null);
  63. }
  64. YearBody.displayName = 'YearBody';
  65. YearBody.inheritAttrs = false;
  66. var _default = exports.default = YearBody;