UNPKG

@navikt/ds-react

Version:

React components from the Norwegian Labour and Welfare Administration.

57 lines 1.82 kB
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