UNPKG

@mui/x-date-pickers

Version:

The community edition of the Date and Time Picker components (MUI X).

43 lines 1.52 kB
import { applyDefaultDate } from "../internals/utils/date-utils.js"; import { singleItemValueManager } from "../internals/utils/valueManagers.js"; export const validateDate = ({ props, value, timezone, adapter }) => { if (value === null) { return null; } const { shouldDisableDate, shouldDisableMonth, shouldDisableYear, disablePast, disableFuture } = props; const now = adapter.utils.date(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; } }; validateDate.valueManager = singleItemValueManager;