@mui/x-date-pickers-pro
Version:
The Pro plan edition of the MUI X Date and Time Picker components.
44 lines • 1.85 kB
JavaScript
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.js";
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.InputProps) {
textFieldProps.InputProps = {};
}
if (pickerContext) {
if (!allowTriggerShifting) {
if (position === 'start') {
textFieldProps.InputProps.ref = pickerContext.triggerRef;
}
} else if (rangePositionContext?.rangePosition === position) {
textFieldProps.InputProps.ref = pickerContext.triggerRef;
}
}
textFieldProps.InputProps['data-multi-input'] = position;
return textFieldProps;
}