@zag-js/date-utils
Version:
Date utilities for zag.js
31 lines (30 loc) • 1.25 kB
JavaScript
// src/assertion.ts
import { isSameDay, toCalendarDateTime } from "@internationalized/date";
function isDateEqual(dateA, dateB) {
if (dateA == null || dateB == null) return dateA === dateB;
if (!("hour" in dateA) && !("hour" in dateB)) return isSameDay(dateA, dateB);
return toCalendarDateTime(dateA).compare(toCalendarDateTime(dateB)) === 0;
}
function isDateUnavailable(date, isUnavailable, locale, minValue, maxValue) {
if (!date) return false;
if (isUnavailable?.(date, locale)) return true;
return isDateOutsideRange(date, minValue, maxValue);
}
function isDateOutsideRange(date, startDate, endDate) {
return startDate != null && date.compare(startDate) < 0 || endDate != null && date.compare(endDate) > 0;
}
function isPreviousRangeInvalid(startDate, minValue, maxValue) {
const prevDate = startDate.subtract({ days: 1 });
return isSameDay(prevDate, startDate) || isDateOutsideRange(prevDate, minValue, maxValue);
}
function isNextRangeInvalid(endDate, minValue, maxValue) {
const nextDate = endDate.add({ days: 1 });
return isSameDay(nextDate, endDate) || isDateOutsideRange(nextDate, minValue, maxValue);
}
export {
isDateEqual,
isDateOutsideRange,
isDateUnavailable,
isNextRangeInvalid,
isPreviousRangeInvalid
};