@mui/x-date-pickers-pro
Version:
The Pro plan edition of the MUI X Date and Time Picker components.
48 lines (47 loc) • 1.95 kB
JavaScript
'use client';
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import useSlotProps from '@mui/utils/useSlotProps';
import { PickersTextField } from '@mui/x-date-pickers/PickersTextField';
import { usePickerTranslations } from '@mui/x-date-pickers/hooks';
import { PickerFieldUIContext, useNullablePickerContext, mergeSlotProps } from '@mui/x-date-pickers/internals';
import { useNullablePickerRangePositionContext } from "../../hooks/useNullablePickerRangePositionContext.mjs";
export function useTextFieldProps({
slotProps,
ownerState,
position,
allowTriggerShifting
}) {
const pickerContext = useNullablePickerContext();
const translations = usePickerTranslations();
const pickerFieldUIContext = React.useContext(PickerFieldUIContext);
const rangePositionContext = useNullablePickerRangePositionContext();
const textFieldProps = useSlotProps({
elementType: PickersTextField,
externalSlotProps: mergeSlotProps(pickerFieldUIContext.slotProps.textField, slotProps?.textField),
additionalProps: {
// TODO: Decide if we also want to set the default labels on standalone fields.
label: pickerContext ? translations[position] : undefined,
focused: pickerContext?.open ? rangePositionContext?.rangePosition === position : undefined
},
ownerState: _extends({}, ownerState, {
position
})
});
if (!textFieldProps.slotProps) {
textFieldProps.slotProps = {};
}
const inputSlotProps = _extends({}, textFieldProps.slotProps.input);
if (pickerContext) {
if (!allowTriggerShifting) {
if (position === 'start') {
inputSlotProps.ref = pickerContext.triggerRef;
}
} else if (rangePositionContext?.rangePosition === position) {
inputSlotProps.ref = pickerContext.triggerRef;
}
}
inputSlotProps['data-multi-input'] = position;
textFieldProps.slotProps.input = inputSlotProps;
return textFieldProps;
}