@mui/x-date-pickers-pro
Version:
The Pro plan edition of the MUI X Date and Time Picker components.
45 lines (44 loc) • 2.27 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 { useApplyDefaultValuesToTimeValidationProps } from '@mui/x-date-pickers/internals';
import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
import { validateTimeRange } from "../validation/index.js";
import { formatRange } from "../internals/utils/date-utils.js";
export function useTimeRangeManager(parameters = {}) {
const {
enableAccessibleFieldDOMStructure = true,
dateSeparator,
ampm
} = parameters;
return React.useMemo(() => ({
valueType: 'time',
validator: validateTimeRange,
internal_valueManager: rangeValueManager,
internal_fieldValueManager: getRangeFieldValueManager({
dateSeparator
}),
internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
internal_useApplyDefaultValuesToFieldInternalProps: useApplyDefaultValuesToTimeRangeFieldInternalProps,
internal_useOpenPickerButtonAriaLabel: createUseOpenPickerButtonAriaLabel(ampm)
}), [enableAccessibleFieldDOMStructure, dateSeparator, ampm]);
}
function createUseOpenPickerButtonAriaLabel(ampm) {
return function useOpenPickerButtonAriaLabel(value) {
const adapter = usePickerAdapter();
const translations = usePickerTranslations();
return React.useMemo(() => {
const formatKey = ampm ?? adapter.is12HourCycleInCurrentLocale() ? 'fullTime12h' : 'fullTime24h';
return translations.openRangePickerDialogue(formatRange(adapter, value, formatKey));
}, [value, translations, adapter]);
};
}
function useApplyDefaultValuesToTimeRangeFieldInternalProps(internalProps) {
const adapter = usePickerAdapter();
const validationProps = useApplyDefaultValuesToTimeValidationProps(internalProps);
const ampm = React.useMemo(() => internalProps.ampm ?? adapter.is12HourCycleInCurrentLocale(), [internalProps.ampm, adapter]);
return React.useMemo(() => _extends({}, internalProps, validationProps, {
format: internalProps.format ?? (ampm ? adapter.formats.fullTime12h : adapter.formats.fullTime24h)
}), [internalProps, validationProps, ampm, adapter]);
}