@navikt/ds-react
Version:
React components from the Norwegian Labour and Welfare Administration.
61 lines • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isMatch = isMatch;
exports.isDateInRange = isDateInRange;
const date_fns_1 = require("date-fns");
const Date_typeutils_1 = require("../Date.typeutils");
function isDateType(value) {
return (0, date_fns_1.isDate)(value);
}
function isArrayOfDates(value) {
return Array.isArray(value) && value.every(date_fns_1.isDate);
}
function isMatch(day, matchers) {
return matchers.some((matcher) => {
if (isDateType(matcher)) {
return (0, date_fns_1.isSameMonth)(day, matcher);
}
if (isArrayOfDates(matcher)) {
return matcher.some((matcherDay) => {
return (0, date_fns_1.isSameMonth)(matcherDay, day);
});
}
if ((0, Date_typeutils_1.isDateRange)(matcher)) {
return isDateInRange(day, matcher);
}
if ((0, Date_typeutils_1.isDateAfterType)(matcher)) {
return ((0, date_fns_1.isSameMonth)(day, matcher.after) ||
(0, date_fns_1.differenceInCalendarDays)(day, matcher.after) > 0);
}
if ((0, Date_typeutils_1.isDateBeforeType)(matcher)) {
return ((0, date_fns_1.isSameMonth)(day, matcher.before) ||
(0, date_fns_1.differenceInCalendarDays)(matcher.before, day) > 0);
}
if (typeof matcher === "function") {
return matcher(day);
}
return false;
});
}
function isDateInRange(date, range) {
let { from, to } = range;
if (!from) {
return false;
}
if (!to && (0, date_fns_1.isSameDay)(from, date)) {
return true;
}
if (!to) {
return false;
}
const isToBeforeFrom = (0, date_fns_1.differenceInCalendarDays)(to, from) < 0;
if (to && isToBeforeFrom) {
[from, to] = [to, from];
}
if ((0, date_fns_1.isSameMonth)(from, date) || (0, date_fns_1.isSameMonth)(to, date)) {
return true;
}
return ((0, date_fns_1.differenceInCalendarDays)(date, from) >= 0 &&
(0, date_fns_1.differenceInCalendarDays)(to, date) >= 0);
}
//# sourceMappingURL=is-match.js.map