@mui/x-date-pickers-pro
Version:
The Pro plan edition of the MUI X Date and Time Picker components.
41 lines (40 loc) • 2.11 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 { useApplyDefaultValuesToDateTimeValidationProps } from '@mui/x-date-pickers/internals';
import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
import { validateDateTimeRange } from "../validation/index.js";
import { formatRange } from "../internals/utils/date-utils.js";
export function useDateTimeRangeManager(parameters = {}) {
const {
enableAccessibleFieldDOMStructure = true,
dateSeparator
} = parameters;
return React.useMemo(() => ({
valueType: 'date-time',
validator: validateDateTimeRange,
internal_valueManager: rangeValueManager,
internal_fieldValueManager: getRangeFieldValueManager({
dateSeparator
}),
internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
internal_useApplyDefaultValuesToFieldInternalProps: useApplyDefaultValuesToDateTimeRangeFieldInternalProps,
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 useApplyDefaultValuesToDateTimeRangeFieldInternalProps(internalProps) {
const adapter = usePickerAdapter();
const validationProps = useApplyDefaultValuesToDateTimeValidationProps(internalProps);
const ampm = React.useMemo(() => internalProps.ampm ?? adapter.is12HourCycleInCurrentLocale(), [internalProps.ampm, adapter]);
return React.useMemo(() => _extends({}, internalProps, validationProps, {
format: internalProps.format ?? (ampm ? adapter.formats.keyboardDateTime12h : adapter.formats.keyboardDateTime24h)
}), [internalProps, validationProps, ampm, adapter]);
}