41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
import { applyDefaultDate } from '../date-utils';
|
|
export const validateDate = ({
|
|
props,
|
|
value,
|
|
adapter
|
|
}) => {
|
|
if (value === null) {
|
|
return null;
|
|
}
|
|
const {
|
|
shouldDisableDate,
|
|
shouldDisableMonth,
|
|
shouldDisableYear,
|
|
disablePast,
|
|
disableFuture,
|
|
timezone
|
|
} = props;
|
|
const now = adapter.utils.dateWithTimezone(undefined, timezone);
|
|
const minDate = applyDefaultDate(adapter.utils, props.minDate, adapter.defaultDates.minDate);
|
|
const maxDate = applyDefaultDate(adapter.utils, props.maxDate, adapter.defaultDates.maxDate);
|
|
switch (true) {
|
|
case !adapter.utils.isValid(value):
|
|
return 'invalidDate';
|
|
case Boolean(shouldDisableDate && shouldDisableDate(value)):
|
|
return 'shouldDisableDate';
|
|
case Boolean(shouldDisableMonth && shouldDisableMonth(value)):
|
|
return 'shouldDisableMonth';
|
|
case Boolean(shouldDisableYear && shouldDisableYear(value)):
|
|
return 'shouldDisableYear';
|
|
case Boolean(disableFuture && adapter.utils.isAfterDay(value, now)):
|
|
return 'disableFuture';
|
|
case Boolean(disablePast && adapter.utils.isBeforeDay(value, now)):
|
|
return 'disablePast';
|
|
case Boolean(minDate && adapter.utils.isBeforeDay(value, minDate)):
|
|
return 'minDate';
|
|
case Boolean(maxDate && adapter.utils.isAfterDay(value, maxDate)):
|
|
return 'maxDate';
|
|
default:
|
|
return null;
|
|
}
|
|
}; |