import * as React from 'react'; import IconButton, { IconButtonProps } from '@mui/material/IconButton'; import { InputAdornmentProps } from '@mui/material/InputAdornment'; import TextField from '@mui/material/TextField'; import { SlotComponentProps } from '@mui/base/utils'; import { BaseNonStaticPickerProps, BasePickerProps, BaseNonRangeNonStaticPickerProps } from '../../models/props/basePickerProps'; import { PickersPopperSlots, PickersPopperSlotProps } from '../../components/PickersPopper'; import { UsePickerParams, UsePickerProps } from '../usePicker'; import { BaseSingleInputFieldProps, FieldSection, MuiPickersAdapter, PickerValidDate } from '../../../models'; import { ExportedPickersLayoutSlots, ExportedPickersLayoutSlotProps, PickersLayoutSlotProps } from '../../../PickersLayout/PickersLayout.types'; import { UsePickerValueNonStaticProps } from '../usePicker/usePickerValue.types'; import { UsePickerViewsNonStaticProps, UsePickerViewsProps } from '../usePicker/usePickerViews'; import { DateOrTimeViewWithMeridiem } from '../../models'; import { UseClearableFieldSlots, UseClearableFieldSlotProps } from '../../../hooks/useClearableField'; import { SlotComponentPropsFromProps } from '../../models/helpers'; export interface UseDesktopPickerSlots extends Pick, ExportedPickersLayoutSlots, UseClearableFieldSlots { /** * Component used to enter the date with the keyboard. */ field: React.ElementType; /** * Form control with an input to render the value inside the default field. * @default TextField from '@mui/material' or PickersTextField if `enableAccessibleFieldDOMStructure` is `true`. */ textField?: React.ElementType; /** * Component displayed on the start or end input adornment used to open the picker on desktop. * @default InputAdornment */ inputAdornment?: React.ElementType; /** * Button to open the picker on desktop. * @default IconButton */ openPickerButton?: React.ElementType; /** * Icon displayed in the open picker button on desktop. */ openPickerIcon: React.ElementType; } export interface UseDesktopPickerSlotProps extends ExportedUseDesktopPickerSlotProps, Pick, 'toolbar'> { } export interface ExportedUseDesktopPickerSlotProps extends PickersPopperSlotProps, ExportedPickersLayoutSlotProps, UseClearableFieldSlotProps { field?: SlotComponentPropsFromProps, {}, UsePickerProps>; textField?: SlotComponentProps>; inputAdornment?: Partial; openPickerButton?: SlotComponentProps>; openPickerIcon?: Record; } export interface DesktopOnlyPickerProps extends BaseNonStaticPickerProps, BaseNonRangeNonStaticPickerProps, UsePickerValueNonStaticProps, UsePickerViewsNonStaticProps { /** * If `true`, the `input` element is focused during the first mount. * @default false */ autoFocus?: boolean; } export interface UseDesktopPickerProps> extends BasePickerProps, DesktopOnlyPickerProps { /** * Overridable component slots. * @default {} */ slots: UseDesktopPickerSlots; /** * The props used for each component slot. * @default {} */ slotProps?: UseDesktopPickerSlotProps; } export interface UseDesktopPickerParams> extends Pick, 'valueManager' | 'valueType' | 'validator' | 'rendererInterceptor'> { props: TExternalProps; getOpenDialogAriaText: (date: TDate | null, utils: MuiPickersAdapter) => string; }