UNPKG

zent

Version:

一套前端设计语言和基于React的实现

74 lines (73 loc) 3.56 kB
import { eachDayOfInterval, isAfter, isBefore, isSameDay } from 'date-fns'; import { Lunar } from 'pure-lunar-typescript'; export default function getPanelCellsData(_a) { var selected = _a.selected, rangeDate = _a.rangeDate, hoverRangeDate = _a.hoverRangeDate, disabledPanelDate = _a.disabledPanelDate, defaultPanelDate = _a.defaultPanelDate, row = _a.row, col = _a.col, dateConfig = _a.dateConfig, texts = _a.texts, _b = _a.offset, offset = _b === void 0 ? 0 : _b, inView = _a.inView, disableRangeOverView = _a.disableRangeOverView, showLunarDate = _a.showLunarDate; var isSame = dateConfig.isSame, startDate = dateConfig.startDate, endDate = dateConfig.endDate, offsetDate = dateConfig.offsetDate; var index = 0; var cells = []; for (var rowIndex = 0; rowIndex < row; rowIndex++) { for (var colIndex = 0; colIndex < col; colIndex++) { var currentDate = offsetDate(defaultPanelDate, index - offset); var text = texts ? texts[index] : currentDate.getDate(); var lunarText = ''; if (showLunarDate) { var date = currentDate; var d = Lunar.fromDate(date); var lunarDay = d.getDayInChinese(); var solarTerm = d.getJieQi(); if (1 === d.getDay()) { lunarText = d.getMonthInChinese() + '月'; } else { lunarText = solarTerm || lunarDay; } } var isCurrent = isSame(new Date(), currentDate); var isInView = inView ? inView(currentDate, defaultPanelDate) : true; var isDisabled = eachDayOfInterval({ start: startDate(currentDate), end: endDate(currentDate), }).every(function (date) { return disabledPanelDate(date); }); var isInHoverRange = false; var isRangeEndpoint = false; var isInRange = false; if (hoverRangeDate) { var isInHoverRangeDate = isDateInRangeInclusive(currentDate, hoverRangeDate); isInHoverRange = disableRangeOverView ? isInHoverRangeDate && isInView : isInHoverRangeDate; } if (rangeDate) { var isInRangeDate = isDateInRangeInclusive(currentDate, rangeDate); isInRange = disableRangeOverView ? isInRangeDate && isInView : isInRangeDate; var isRangeEndpointDate = isSame(currentDate, rangeDate[0]) || isSame(currentDate, rangeDate[1]); isRangeEndpoint = disableRangeOverView ? isRangeEndpointDate && isInView : isRangeEndpointDate; } var isSelected = !!selected && (rangeDate ? isRangeEndpoint : isSame(selected, currentDate)); cells[index] = { value: currentDate, text: text, lunarText: lunarText, isCurrent: isCurrent, isSelected: isSelected, isInView: isInView, isDisabled: isDisabled, isInHoverRange: isInHoverRange, isInRange: isInRange, }; index++; } } return cells; } function isDateInRangeInclusive(date, range) { return (isSameDay(date, range[0]) || isSameDay(date, range[1]) || (isAfter(date, range[0]) && isBefore(date, range[1]))); }