@drivy/cobalt
Version:
Opinionated design system for Drivy's projects.
30 lines (29 loc) • 1.19 kB
JavaScript
import eachDayOfInterval from "date-fns/eachDayOfInterval";
import endOfMonth from "date-fns/endOfMonth";
import getDay from "date-fns/getDay";
import setISODay from "date-fns/setISODay";
import startOfMonth from "date-fns/startOfMonth";
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 (0 === index || (index + firstDayOfMonthOffset) % 7 === 0) acc.push([]);
acc[acc.length - 1].push(day);
return acc;
}, []);
};
export { getMonthDaysByWeeks, getWeekDays };
//# sourceMappingURL=utils.js.map