UNPKG

@jnoodle/rc-picker

Version:
78 lines (69 loc) 2.83 kB
import * as React from 'react'; import { WEEK_DAY_COUNT, getWeekStartDate, isSameDate, isSameMonth } from '../../utils/dateUtil'; import RangeContext from '../../RangeContext'; import useCellClassName from '../../hooks/useCellClassName'; import PanelBody from '../PanelBody'; function DateBody(props) { var prefixCls = props.prefixCls, generateConfig = props.generateConfig, prefixColumn = props.prefixColumn, locale = props.locale, rowCount = props.rowCount, viewDate = props.viewDate, value = props.value, dateRender = props.dateRender; var _React$useContext = React.useContext(RangeContext), rangedValue = _React$useContext.rangedValue, hoverRangedValue = _React$useContext.hoverRangedValue; var baseDate = getWeekStartDate(locale.locale, generateConfig, viewDate); var cellPrefixCls = "".concat(prefixCls, "-cell"); var weekFirstDay = generateConfig.locale.getWeekFirstDay(locale.locale); var today = generateConfig.getNow(); // ============================== Header ============================== var headerCells = []; var weekDaysLocale = locale.shortWeekDays || (generateConfig.locale.getShortWeekDays ? generateConfig.locale.getShortWeekDays(locale.locale) : []); if (prefixColumn) { headerCells.push(React.createElement("th", { key: "empty", "aria-label": "empty cell" })); } for (var i = 0; i < WEEK_DAY_COUNT; i += 1) { headerCells.push(React.createElement("th", { key: i }, weekDaysLocale[(i + weekFirstDay) % WEEK_DAY_COUNT])); } // =============================== Body =============================== var getCellClassName = useCellClassName({ cellPrefixCls: cellPrefixCls, today: today, value: value, generateConfig: generateConfig, rangedValue: prefixColumn ? null : rangedValue, hoverRangedValue: prefixColumn ? null : hoverRangedValue, isSameCell: function isSameCell(current, target) { return isSameDate(generateConfig, current, target); }, isInView: function isInView(date) { return isSameMonth(generateConfig, date, viewDate); }, offsetCell: function offsetCell(date, offset) { return generateConfig.addDate(date, offset); } }); var getCellNode = dateRender ? function (date) { return dateRender(date, today); } : undefined; return React.createElement(PanelBody, Object.assign({}, props, { rowNum: rowCount, colNum: WEEK_DAY_COUNT, baseDate: baseDate, getCellNode: getCellNode, getCellText: generateConfig.getDate, getCellClassName: getCellClassName, getCellDate: generateConfig.addDate, titleCell: function titleCell(date) { return generateConfig.locale.format(locale.locale, date, 'YYYY-MM-DD'); }, headerCells: headerCells })); } export default DateBody;