@e-group/material-lab
Version:
EGroup Team Lab - Incubator for EGroup Team experimental React components.
110 lines (78 loc) • 2.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.inDateRange = exports.isAfterValid = exports.isBeforeValid = exports.isSameDayValid = exports.isWithinIntervalValid = exports.getValidatedMonths = exports.getValidDate = exports.getDaysInMonth = exports.chunks = exports.identity = void 0;
var _dateFns = require("date-fns");
const identity = x => x;
exports.identity = identity;
const chunks = (array, size) => Array.from({
length: Math.ceil(array.length / size)
}, (v, i) => array.slice(i * size, i * size + size));
exports.chunks = chunks;
const getDaysInMonth = date => {
const startWeek = (0, _dateFns.startOfWeek)((0, _dateFns.startOfMonth)(date));
const endWeek = (0, _dateFns.endOfWeek)((0, _dateFns.endOfMonth)(date));
const days = [];
for (let curr = startWeek; (0, _dateFns.isBefore)(curr, endWeek);) {
days.push(curr);
curr = (0, _dateFns.addDays)(curr, 1);
}
return days;
}; // Date
exports.getDaysInMonth = getDaysInMonth;
const getValidDate = (date, defaultValue) => {
if (date) {
const parsed = (0, _dateFns.toDate)(new Date(date));
if ((0, _dateFns.isValid)(parsed)) return parsed;
}
return defaultValue;
};
exports.getValidDate = getValidDate;
const getValidatedMonths = (minDate, maxDate, startDate, endDate) => {
if (startDate && endDate) {
const newStart = (0, _dateFns.max)([startDate, minDate]);
const newEnd = (0, _dateFns.min)([endDate, maxDate]);
return [newStart, (0, _dateFns.isSameMonth)(newStart, newEnd) ? (0, _dateFns.addMonths)(newStart, 1) : newEnd];
}
return [startDate, endDate];
};
exports.getValidatedMonths = getValidatedMonths;
const isWithinIntervalValid = (date, startDate, endDate) => {
if (startDate && endDate && (0, _dateFns.isBefore)(startDate, endDate)) {
return (0, _dateFns.isWithinInterval)(date, {
start: startDate,
end: endDate
});
}
return false;
};
exports.isWithinIntervalValid = isWithinIntervalValid;
const isSameDayValid = (dateLeft, dateRight) => {
if (dateLeft && dateRight) {
return (0, _dateFns.isSameDay)(dateLeft, dateRight);
}
return false;
};
exports.isSameDayValid = isSameDayValid;
const isBeforeValid = (date, dateToCompare) => {
if (date && dateToCompare) {
return (0, _dateFns.isBefore)(date, dateToCompare);
}
return false;
};
exports.isBeforeValid = isBeforeValid;
const isAfterValid = (date, dateToCompare) => {
if (date && dateToCompare) {
return (0, _dateFns.isAfter)(date, dateToCompare);
}
return false;
};
exports.isAfterValid = isAfterValid;
const inDateRange = (day, startDate, endDate) => {
if (startDate && endDate) {
return isWithinIntervalValid(day, startDate, endDate) || isSameDayValid(day, startDate) || isSameDayValid(day, endDate);
}
return false;
};
exports.inDateRange = inDateRange;