UNPKG

@appearhere/bloom

Version:

Appear Here's pattern library and styleguide

51 lines (41 loc) 1.31 kB
import { generateArray, generateNumberFilledArray, reshapeArray, } from '../../../utils/array/array'; export const CALENDAR_MONTH_LENGTH = 42; export const DAYS_PER_WEEK = 7; export const CALENDAR_ROWS = CALENDAR_MONTH_LENGTH / DAYS_PER_WEEK; export const getPreDayCount = date => date.clone().startOf('month').weekday(); export const getPostDayCount = (date) => { const preDayCount = getPreDayCount(date); return CALENDAR_MONTH_LENGTH - date.daysInMonth() - preDayCount; }; const getCalendarMonth = (date, preDayCount, postDayCount) => { const month = date.clone().startOf('month'); const preDays = generateArray(preDayCount) .fill('') .map((_, i, { length }) => { const offset = length - i; return month.clone().subtract(offset, 'days'); }); const postDays = generateArray(postDayCount) .fill('') .map((_, i) => { const offset = i + 1; return month .clone() .endOf('month') .startOf('day') .add(offset, 'days'); }); const monthDays = generateNumberFilledArray(month.daysInMonth(), 1) .map(day => month.clone().date(day)); const calendarMonth = [ ...preDays, ...monthDays, ...postDays, ]; return reshapeArray(calendarMonth, CALENDAR_ROWS); }; export default getCalendarMonth;