@mantine/dates
Version:
Calendars, date and time pickers based on Mantine components
38 lines (37 loc) • 1.37 kB
JavaScript
"use client";
import { getEndOfWeek } from "../get-end-of-week/get-end-of-week.mjs";
import { getStartOfWeek } from "../get-start-of-week/get-start-of-week.mjs";
import dayjs from "dayjs";
//#region packages/@mantine/dates/src/components/Month/get-month-days/get-month-days.ts
function getMonthDays({ month, firstDayOfWeek = 1, consistentWeeks }) {
const start = dayjs(dayjs(month).subtract(dayjs(month).date() - 1, "day").format("YYYY-M-D"));
const startOfMonth = start.format("YYYY-MM-DD");
const endDate = getEndOfWeek(start.add(+start.daysInMonth() - 1, "day").format("YYYY-MM-DD"), firstDayOfWeek);
const weeks = [];
let date = dayjs(getStartOfWeek(startOfMonth, firstDayOfWeek));
while (dayjs(date).isBefore(endDate, "day")) {
const days = [];
for (let i = 0; i < 7; i += 1) {
days.push(date.format("YYYY-MM-DD"));
date = date.add(1, "day");
}
weeks.push(days);
}
if (consistentWeeks && weeks.length < 6) {
const lastWeek = weeks[weeks.length - 1];
const lastDay = lastWeek[lastWeek.length - 1];
let nextDay = dayjs(lastDay).add(1, "day");
while (weeks.length < 6) {
const days = [];
for (let i = 0; i < 7; i += 1) {
days.push(nextDay.format("YYYY-MM-DD"));
nextDay = nextDay.add(1, "day");
}
weeks.push(days);
}
}
return weeks;
}
//#endregion
export { getMonthDays };
//# sourceMappingURL=get-month-days.mjs.map