Files
Iliyan Angelov 306b20e24a Frontend start
2025-09-14 00:54:48 +03:00

85 lines
3.3 KiB
JavaScript

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