@talend/react-components
Version:
Set of react components.
75 lines (70 loc) • 2.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.buildDayNames = buildDayNames;
exports.buildMonths = buildMonths;
exports.buildWeeks = buildWeeks;
exports.buildYears = buildYears;
exports.getPickerLocale = void 0;
var _addDays = require("date-fns/addDays");
var _addMonths = require("date-fns/addMonths");
var _format = require("date-fns/format");
var _getYear = require("date-fns/getYear");
var _setDay = require("date-fns/setDay");
var _startOfWeek = require("date-fns/startOfWeek");
var _locale = _interopRequireDefault(require("../../i18n/DateFnsLocale/locale"));
var _lodash = require("lodash");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function buildDateFnsLocale() {
return {
locale: (0, _locale.default)()
};
}
const getPickerLocale = exports.getPickerLocale = (0, _lodash.memoize)(buildDateFnsLocale);
/**
* Generate days of week, starting from the provided index
*/
function buildDayNames(firstDayOfweek = 1, t) {
const pickerLocale = getPickerLocale(t);
return new Array(7).fill(0).map((_, i) => (i + firstDayOfweek) % 7).map(dayOfWeek => (0, _setDay.setDay)(new Date(0), dayOfWeek)).map(headerDate => ({
abbr: (0, _format.format)(headerDate, 'EEEEE', pickerLocale),
full: (0, _format.format)(headerDate, 'EEEE', pickerLocale)
}));
}
/**
* Generate the set of weeks for a specific month
*/
function buildWeeks(year, monthIndex, firstDayOfWeek = 1) {
const firstDateOfMonth = new Date(year, monthIndex);
const firstDateOfCalendar = (0, _startOfWeek.startOfWeek)(firstDateOfMonth, {
weekStartsOn: firstDayOfWeek
});
const dates = new Array(7 * 6).fill(0).map((_, i) => (0, _addDays.addDays)(firstDateOfCalendar, i));
return (0, _lodash.chunk)(dates, 7);
}
/**
* Generate th sets of months, each set has the size of provided "chunkSize"
*/
function buildMonths(chunkSize, t) {
const pickerLocale = getPickerLocale(t);
const months = new Array(12).fill(0).map((_, i) => i).map(index => ({
index,
name: (0, _format.format)((0, _addMonths.addMonths)(new Date(0), index), 'MMMM', pickerLocale)
}));
return (0, _lodash.chunk)(months, chunkSize);
}
/**
* Generate a years window, centered on the current year by default, or the provided one
*/
function buildYears(middle, window = 3) {
const middleYear = middle === undefined ? (0, _getYear.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