@mui/x-date-pickers-pro
Version:
The Pro plan edition of the MUI X Date and Time Picker components.
40 lines (39 loc) • 1.89 kB
JavaScript
'use client';
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import { usePickerAdapter, usePickerTranslations } from '@mui/x-date-pickers/hooks';
import { useApplyDefaultValuesToDateValidationProps } from '@mui/x-date-pickers/internals';
import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
import { validateDateRange } from "../validation/index.js";
import { formatRange } from "../internals/utils/date-utils.js";
export function useDateRangeManager(parameters = {}) {
const {
enableAccessibleFieldDOMStructure = true,
dateSeparator
} = parameters;
return React.useMemo(() => ({
valueType: 'date',
validator: validateDateRange,
internal_valueManager: rangeValueManager,
internal_fieldValueManager: getRangeFieldValueManager({
dateSeparator
}),
internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
internal_useApplyDefaultValuesToFieldInternalProps: useApplyDefaultValuesToDateRangeFieldInternalProps,
internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel
}), [enableAccessibleFieldDOMStructure, dateSeparator]);
}
function useOpenPickerButtonAriaLabel(value) {
const adapter = usePickerAdapter();
const translations = usePickerTranslations();
return React.useMemo(() => {
return translations.openRangePickerDialogue(formatRange(adapter, value, 'fullDate'));
}, [value, translations, adapter]);
}
function useApplyDefaultValuesToDateRangeFieldInternalProps(internalProps) {
const adapter = usePickerAdapter();
const validationProps = useApplyDefaultValuesToDateValidationProps(internalProps);
return React.useMemo(() => _extends({}, internalProps, validationProps, {
format: internalProps.format ?? adapter.formats.keyboardDate
}), [internalProps, validationProps, adapter]);
}