Files
ETB/ETB-FrontEnd/node_modules/@mui/x-date-pickers/DateField/useDateField.js
Iliyan Angelov 306b20e24a Frontend start
2025-09-14 00:54:48 +03:00

77 lines
2.6 KiB
JavaScript

import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
import _extends from "@babel/runtime/helpers/esm/extends";
const _excluded = ["value", "defaultValue", "format", "onChange", "readOnly", "onError", "shouldDisableDate", "minDate", "maxDate", "disableFuture", "disablePast"];
import { datePickerValueManager } from '../DatePicker/shared';
import { useField, splitFormatIntoSections, addPositionPropertiesToSections, createDateStrFromSections } from '../internals/hooks/useField';
import { isSameDateError, validateDate } from '../internals/hooks/validation/useDateValidation';
import { parseNonNullablePickerDate } from '../internals/utils/date-utils';
import { useUtils, useDefaultDates } from '../internals/hooks/useUtils';
const dateRangeFieldValueManager = {
getSectionsFromValue: (utils, prevSections, date, format) => addPositionPropertiesToSections(splitFormatIntoSections(utils, format, date)),
getValueStrFromSections: sections => createDateStrFromSections(sections),
getValueFromSections: (utils, prevSections, sections, format) => {
const dateStr = createDateStrFromSections(sections);
const value = utils.parse(dateStr, format);
return {
value,
shouldPublish: utils.isValid(value)
};
},
getActiveDateFromActiveSection: value => ({
value,
update: newActiveDate => newActiveDate
}),
hasError: error => error != null,
isSameError: isSameDateError
};
const useDefaultizedDateField = props => {
const utils = useUtils();
const defaultDates = useDefaultDates();
return _extends({
disablePast: false,
disableFuture: false
}, props, {
minDate: parseNonNullablePickerDate(utils, props.minDate, defaultDates.minDate),
maxDate: parseNonNullablePickerDate(utils, props.maxDate, defaultDates.maxDate)
});
};
export const useDateField = inProps => {
const _useDefaultizedDateFi = useDefaultizedDateField(inProps),
{
value,
defaultValue,
format,
onChange,
readOnly,
onError,
shouldDisableDate,
minDate,
maxDate,
disableFuture,
disablePast
} = _useDefaultizedDateFi,
other = _objectWithoutPropertiesLoose(_useDefaultizedDateFi, _excluded);
return useField({
forwardedProps: other,
internalProps: {
value,
defaultValue,
format,
onChange,
readOnly,
onError,
shouldDisableDate,
minDate,
maxDate,
disableFuture,
disablePast
},
valueManager: datePickerValueManager,
fieldValueManager: dateRangeFieldValueManager,
// TODO: Support time validation.
validator: validateDate
});
};