@navikt/ds-react
Version:
React components from the Norwegian Labour and Welfare Administration.
64 lines (52 loc) • 1.24 kB
text/typescript
import { isAfter, isBefore, startOfMonth, startOfYear } from "date-fns";
/**
* Makes sure the month is within the min and max daterange to avoid showing disabled months
* @note We do not warn the user if start > end now
*/
const clampDisplayMonth = ({
month,
start,
end,
}: {
month?: Date;
start?: Date;
end?: Date;
}): Date | undefined => {
if (!month) {
return undefined;
}
let monthToShow = month;
if (start && isBefore(monthToShow, start)) {
monthToShow = start;
}
if (end && isAfter(monthToShow, end)) {
monthToShow = end;
}
return startOfMonth(monthToShow);
};
/**
* Makes sure the month is within the min and max daterange to avoid showing disabled months
* @note We do not warn the user if start > end now
*/
const clampDisplayYear = ({
month,
start,
end,
}: {
month?: Date;
start?: Date;
end?: Date;
}): Date | undefined => {
if (!month) {
return undefined;
}
let monthToShow = month;
if (start && monthToShow.getFullYear() < start.getFullYear()) {
monthToShow = start;
}
if (end && monthToShow.getFullYear() > end.getFullYear()) {
monthToShow = end;
}
return startOfYear(monthToShow);
};
export { clampDisplayYear, clampDisplayMonth };