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