UNPKG

react-day-picker

Version:

Customizable Date Picker for React

65 lines 2.56 kB
import { defaultDateLib } from "../classes/DateLib.js"; import { rangeIncludesDate } from "./rangeIncludesDate.js"; import { isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, isDatesArray, isDayOfWeekType } from "./typeguards.js"; /** * Checks if a given date matches at least one of the specified {@link Matcher}. * * @param date - The date to check. * @param matchers - The matchers to check against. * @param dateLib - The date utility library instance. * @returns `true` if the date matches any of the matchers, otherwise `false`. * @group Utilities */ export function dateMatchModifiers(date, matchers, dateLib = defaultDateLib) { const matchersArr = !Array.isArray(matchers) ? [matchers] : matchers; const { isSameDay, differenceInCalendarDays, isAfter } = dateLib; return matchersArr.some((matcher) => { if (typeof matcher === "boolean") { return matcher; } if (dateLib.isDate(matcher)) { return isSameDay(date, matcher); } if (isDatesArray(matcher, dateLib)) { return matcher.includes(date); } if (isDateRange(matcher)) { return rangeIncludesDate(matcher, date, false, dateLib); } if (isDayOfWeekType(matcher)) { if (!Array.isArray(matcher.dayOfWeek)) { return matcher.dayOfWeek === date.getDay(); } return matcher.dayOfWeek.includes(date.getDay()); } if (isDateInterval(matcher)) { const diffBefore = differenceInCalendarDays(matcher.before, date); const diffAfter = differenceInCalendarDays(matcher.after, date); const isDayBefore = diffBefore > 0; const isDayAfter = diffAfter < 0; const isClosedInterval = isAfter(matcher.before, matcher.after); if (isClosedInterval) { return isDayAfter && isDayBefore; } else { return isDayBefore || isDayAfter; } } if (isDateAfterType(matcher)) { return differenceInCalendarDays(date, matcher.after) > 0; } if (isDateBeforeType(matcher)) { return differenceInCalendarDays(matcher.before, date) > 0; } if (typeof matcher === "function") { return matcher(date); } return false; }); } /** * @private * @deprecated Use {@link dateMatchModifiers} instead. */ export const isMatch = dateMatchModifiers; //# sourceMappingURL=dateMatchModifiers.js.map