@fluentui/react-northstar
Version:
A themable React component library.
50 lines (49 loc) • 1.97 kB
JavaScript
import { addMonths, findAvailableDate, addDays, addWeeks, isAfterMaxDate, isBeforeMinDate } from '../../utils/date-time-utilities';
export var contstraintNavigatedDate = function contstraintNavigatedDate(initialDate, targetDate, direction, restrictedDatesOptions, navigateToDisabledDates) {
if (!targetDate) {
// if we couldn't find a target date at all, do nothing
return undefined;
}
var findAvailableDateOptions = Object.assign({
initialDate: initialDate,
targetDate: targetDate,
direction: direction
}, !navigateToDisabledDates && restrictedDatesOptions);
var newNavigatedDate = findAvailableDate(findAvailableDateOptions);
if (!newNavigatedDate) {
// if no dates available in initial direction, try going backwards
findAvailableDateOptions.direction = -direction;
newNavigatedDate = findAvailableDate(findAvailableDateOptions);
}
if (!navigateToDisabledDates && isAfterMaxDate(targetDate, restrictedDatesOptions)) {
newNavigatedDate = restrictedDatesOptions.maxDate;
} else if (!navigateToDisabledDates && isBeforeMinDate(targetDate, restrictedDatesOptions)) {
newNavigatedDate = restrictedDatesOptions.minDate;
}
return newNavigatedDate;
};
export var navigateToNewDate = function navigateToNewDate(originalDate, kind, step, restrictedDatesOptions, navigateToDisabledDates) {
var targetDate = null;
var targetDayDirection = step > 0 ? 1 : -1;
switch (kind) {
case 'Month':
{
targetDate = addMonths(originalDate, targetDayDirection);
break;
}
case 'Week':
{
targetDate = addWeeks(originalDate, targetDayDirection);
break;
}
case 'Day':
{
targetDate = addDays(originalDate, targetDayDirection);
break;
}
default:
break;
}
return contstraintNavigatedDate(originalDate, targetDate, step, restrictedDatesOptions, navigateToDisabledDates);
};
//# sourceMappingURL=navigateToNewDate.js.map