UNPKG

@talend/react-components

Version:
51 lines (49 loc) 1.71 kB
import { addMonths } from 'date-fns/addMonths'; import { format } from 'date-fns/format'; import { getYear } from 'date-fns/getYear'; import { setDay } from 'date-fns/setDay'; import { date } from '@talend/utils'; import getLocale from '../i18n/DateFnsLocale/locale'; import { chunk, memoize } from "lodash"; function buildDateFnsLocale() { return { locale: getLocale() }; } export const getPickerLocale = memoize(buildDateFnsLocale); /** * Generate days of week, starting from the provided index */ export function buildDayNames(firstDayOfweek = 1, t) { const pickerLocale = getPickerLocale(t); return new Array(7).fill(0).map((_, i) => (i + firstDayOfweek) % 7).map(dayOfWeek => setDay(new Date(0), dayOfWeek)).map(headerDate => ({ abbr: format(headerDate, 'EEEEE', pickerLocale), full: format(headerDate, 'EEEE', pickerLocale) })); } export const buildWeeks = date.buildWeeks; /** * Generate th sets of months, each set has the size of provided "chunkSize" */ export function buildMonths(chunkSize, t) { const pickerLocale = getPickerLocale(t); const months = new Array(12).fill(0).map((_, i) => i).map(index => ({ index, name: format(addMonths(new Date(0), index), 'MMMM', pickerLocale) })); return chunk(months, chunkSize); } /** * Generate a years window, centered on the current year by default, or the provided one */ export function buildYears(middle, window = 3) { const middleYear = middle === undefined ? getYear(new Date()) : middle; const start = middleYear - window; const end = middleYear + window; const years = []; for (let i = start; i <= end; i += 1) { years.push(i); } return years; } //# sourceMappingURL=generator.js.map