@drivy/cobalt
Version:
Opinionated design system for Drivy's projects.
32 lines (29 loc) • 1.21 kB
JavaScript
import setISODay from 'date-fns/setISODay';
import startOfMonth from 'date-fns/startOfMonth';
import getDay from 'date-fns/getDay';
import endOfMonth from 'date-fns/endOfMonth';
import eachDayOfInterval from 'date-fns/eachDayOfInterval';
const getWeekDays = (isSundayFirstDayOfWeek = false) => {
const extraIndex = isSundayFirstDayOfWeek ? 0 : 1;
const now = new Date().setHours(0, 0, 0, 0);
return [...Array(7).keys()].map((index) => setISODay(now, index + extraIndex));
};
const getMonthDaysByWeeks = (monthDate, isSundayFirstDayOfWeek = false) => {
const extraOffset = isSundayFirstDayOfWeek ? 0 : 1;
const firstDayOfMonth = startOfMonth(monthDate);
const firstDayOfMonthOffset = getDay(firstDayOfMonth) - extraOffset;
const lastDayOfMonth = endOfMonth(monthDate);
const days = eachDayOfInterval({
start: firstDayOfMonth,
end: lastDayOfMonth,
});
return days.reduce((acc, day, index) => {
if (index === 0 || (index + firstDayOfMonthOffset) % 7 === 0) {
acc.push([]);
}
acc[acc.length - 1].push(day);
return acc;
}, []);
};
export { getMonthDaysByWeeks, getWeekDays };
//# sourceMappingURL=utils.js.map