import * as React from 'react';
import dayjs, { Dayjs } from 'dayjs';
import { useForkRef } from '@mui/material/utils';
import Button from '@mui/material/Button';
import CalendarTodayRoundedIcon from '@mui/icons-material/CalendarTodayRounded';
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { DatePicker, DatePickerFieldProps } from '@mui/x-date-pickers/DatePicker';
import {
useParsedFormat,
usePickerContext,
useSplitFieldProps,
} from '@mui/x-date-pickers';
interface ButtonFieldProps extends DatePickerFieldProps {}
function ButtonField(props: ButtonFieldProps) {
const { forwardedProps } = useSplitFieldProps(props, 'date');
const pickerContext = usePickerContext();
const handleRef = useForkRef(pickerContext.triggerRef, pickerContext.rootRef);
const parsedFormat = useParsedFormat();
const valueStr =
pickerContext.value == null
? parsedFormat
: pickerContext.value.format(pickerContext.fieldFormat);
return (
}
sx={{ minWidth: 'fit-content' }}
onClick={() => pickerContext.setOpen((prev) => !prev)}
>
{pickerContext.label ?? valueStr}
);
}
export default function CustomDatePicker() {
const [value, setValue] = React.useState(dayjs('2023-04-17'));
return (
setValue(newValue)}
slots={{ field: ButtonField }}
slotProps={{
nextIconButton: { size: 'small' },
previousIconButton: { size: 'small' },
}}
views={['day', 'month', 'year']}
/>
);
}