@talend/react-components
Version:
Set of react components.
51 lines (49 loc) • 1.71 kB
JavaScript
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