UNPKG

fullcalendar

Version:

FullCalendar Vanilla JS package for rendering a calendar

43 lines (40 loc) 1.82 kB
import { D as DateProfileGenerator } from './ad0c00be.js'; import { addWeeks, addDays, diffWeeks } from '@full-ui/headless-calendar'; class TableDateProfileGenerator extends DateProfileGenerator { // Computes the date range that will be rendered buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay) { let renderRange = super.buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay); let { props } = this; return buildDayTableRenderRange({ currentRange: renderRange, // ??? snapToWeek: /^(year|month)$/.test(currentRangeUnit), fixedWeekCount: props.fixedWeekCount, dateEnv: props.dateEnv, }); } } function buildDayTableRenderRange(props) { let { dateEnv, currentRange } = props; let { start, end } = currentRange; let endOfWeek; // year and month views should be aligned with weeks. this is already done for week if (props.snapToWeek) { start = dateEnv.startOfWeek(start); // make end-of-week if not already endOfWeek = dateEnv.startOfWeek(end); if (endOfWeek.valueOf() !== end.valueOf()) { end = addWeeks(endOfWeek, 1); } } // ensure 6 weeks if (props.fixedWeekCount) { // TODO: instead of these date-math gymnastics (for multimonth view), // compute dateprofiles of all months, then use start of first and end of last. let lastMonthRenderStart = dateEnv.startOfWeek(dateEnv.startOfMonth(addDays(currentRange.end, -1))); let rowCount = Math.ceil(// could be partial weeks due to hiddenDays diffWeeks(lastMonthRenderStart, end)); end = addWeeks(end, 6 - rowCount); } return { start, end }; } export { TableDateProfileGenerator as T, buildDayTableRenderRange as b };