DateBody.js 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import { createVNode as _createVNode } from "vue";
  3. import { WEEK_DAY_COUNT, getWeekStartDate, isSameDate, isSameMonth, formatValue } from '../../utils/dateUtil';
  4. import useCellClassName from '../../hooks/useCellClassName';
  5. import PanelBody from '../PanelBody';
  6. import { useInjectRange } from '../../RangeContext';
  7. import useMergeProps from '../../hooks/useMergeProps';
  8. function DateBody(_props) {
  9. var props = useMergeProps(_props);
  10. var prefixCls = props.prefixCls,
  11. generateConfig = props.generateConfig,
  12. prefixColumn = props.prefixColumn,
  13. locale = props.locale,
  14. rowCount = props.rowCount,
  15. viewDate = props.viewDate,
  16. value = props.value,
  17. dateRender = props.dateRender;
  18. var _useInjectRange = useInjectRange(),
  19. rangedValue = _useInjectRange.rangedValue,
  20. hoverRangedValue = _useInjectRange.hoverRangedValue;
  21. var baseDate = getWeekStartDate(locale.locale, generateConfig, viewDate);
  22. var cellPrefixCls = "".concat(prefixCls, "-cell");
  23. var weekFirstDay = generateConfig.locale.getWeekFirstDay(locale.locale);
  24. var today = generateConfig.getNow();
  25. // ============================== Header ==============================
  26. var headerCells = [];
  27. var weekDaysLocale = locale.shortWeekDays || (generateConfig.locale.getShortWeekDays ? generateConfig.locale.getShortWeekDays(locale.locale) : []);
  28. if (prefixColumn) {
  29. headerCells.push(_createVNode("th", {
  30. "key": "empty",
  31. "aria-label": "empty cell"
  32. }, null));
  33. }
  34. for (var i = 0; i < WEEK_DAY_COUNT; i += 1) {
  35. headerCells.push(_createVNode("th", {
  36. "key": i
  37. }, [weekDaysLocale[(i + weekFirstDay) % WEEK_DAY_COUNT]]));
  38. }
  39. // =============================== Body ===============================
  40. var getCellClassName = useCellClassName({
  41. cellPrefixCls: cellPrefixCls,
  42. today: today,
  43. value: value,
  44. generateConfig: generateConfig,
  45. rangedValue: prefixColumn ? null : rangedValue.value,
  46. hoverRangedValue: prefixColumn ? null : hoverRangedValue.value,
  47. isSameCell: function isSameCell(current, target) {
  48. return isSameDate(generateConfig, current, target);
  49. },
  50. isInView: function isInView(date) {
  51. return isSameMonth(generateConfig, date, viewDate);
  52. },
  53. offsetCell: function offsetCell(date, offset) {
  54. return generateConfig.addDate(date, offset);
  55. }
  56. });
  57. var getCellNode = dateRender ? function (date) {
  58. return dateRender({
  59. current: date,
  60. today: today
  61. });
  62. } : undefined;
  63. return _createVNode(PanelBody, _objectSpread(_objectSpread({}, props), {}, {
  64. "rowNum": rowCount,
  65. "colNum": WEEK_DAY_COUNT,
  66. "baseDate": baseDate,
  67. "getCellNode": getCellNode,
  68. "getCellText": generateConfig.getDate,
  69. "getCellClassName": getCellClassName,
  70. "getCellDate": generateConfig.addDate,
  71. "titleCell": function titleCell(date) {
  72. return formatValue(date, {
  73. locale: locale,
  74. format: 'YYYY-MM-DD',
  75. generateConfig: generateConfig
  76. });
  77. },
  78. "headerCells": headerCells
  79. }), null);
  80. }
  81. DateBody.displayName = 'DateBody';
  82. DateBody.inheritAttrs = false;
  83. DateBody.props = ['prefixCls', 'generateConfig', 'value?', 'viewDate', 'locale', 'rowCount', 'onSelect', 'dateRender?', 'disabledDate?',
  84. // Used for week panel
  85. 'prefixColumn?', 'rowClassName?'];
  86. export default DateBody;