QuarterBody.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import { createVNode as _createVNode } from "vue";
  3. import { formatValue, isSameQuarter } from '../../utils/dateUtil';
  4. import { useInjectRange } from '../../RangeContext';
  5. import useCellClassName from '../../hooks/useCellClassName';
  6. import PanelBody from '../PanelBody';
  7. import useMergeProps from '../../hooks/useMergeProps';
  8. export const QUARTER_COL_COUNT = 4;
  9. const QUARTER_ROW_COUNT = 1;
  10. function QuarterBody(_props) {
  11. const props = useMergeProps(_props);
  12. const {
  13. prefixCls,
  14. locale,
  15. value,
  16. viewDate,
  17. generateConfig
  18. } = props;
  19. const {
  20. rangedValue,
  21. hoverRangedValue
  22. } = useInjectRange();
  23. const cellPrefixCls = `${prefixCls}-cell`;
  24. const getCellClassName = useCellClassName({
  25. cellPrefixCls,
  26. value,
  27. generateConfig,
  28. rangedValue: rangedValue.value,
  29. hoverRangedValue: hoverRangedValue.value,
  30. isSameCell: (current, target) => isSameQuarter(generateConfig, current, target),
  31. isInView: () => true,
  32. offsetCell: (date, offset) => generateConfig.addMonth(date, offset * 3)
  33. });
  34. const baseQuarter = generateConfig.setDate(generateConfig.setMonth(viewDate, 0), 1);
  35. return _createVNode(PanelBody, _objectSpread(_objectSpread({}, props), {}, {
  36. "rowNum": QUARTER_ROW_COUNT,
  37. "colNum": QUARTER_COL_COUNT,
  38. "baseDate": baseQuarter,
  39. "getCellText": date => formatValue(date, {
  40. locale,
  41. format: locale.quarterFormat || '[Q]Q',
  42. generateConfig
  43. }),
  44. "getCellClassName": getCellClassName,
  45. "getCellDate": (date, offset) => generateConfig.addMonth(date, offset * 3),
  46. "titleCell": date => formatValue(date, {
  47. locale,
  48. format: 'YYYY-[Q]Q',
  49. generateConfig
  50. })
  51. }), null);
  52. }
  53. QuarterBody.displayName = 'QuarterBody';
  54. QuarterBody.inheritAttrs = false;
  55. export default QuarterBody;