2023-12-16 14:55:56 +00:00
|
|
|
import CalendarIcon from "@icons/CalendarIcon";
|
|
|
|
import { Typography, Box, SxProps, Theme, useMediaQuery, useTheme } from "@mui/material";
|
|
|
|
import { DatePicker } from "@mui/x-date-pickers";
|
2024-01-22 00:38:53 +00:00
|
|
|
import moment from "moment";
|
2023-12-16 14:55:56 +00:00
|
|
|
|
|
|
|
interface Props {
|
|
|
|
label?: string;
|
|
|
|
sx?: SxProps<Theme>;
|
2024-01-22 00:38:53 +00:00
|
|
|
value?: moment.Moment;
|
|
|
|
onChange?: (value: string | null) => void;
|
2023-12-16 14:55:56 +00:00
|
|
|
}
|
|
|
|
|
2024-01-22 00:38:53 +00:00
|
|
|
export default function LabeledDatePicker({ label, value = moment(), onChange, sx }: Props) {
|
2023-12-16 14:55:56 +00:00
|
|
|
const theme = useTheme();
|
|
|
|
const upLg = useMediaQuery(theme.breakpoints.up("md"));
|
|
|
|
|
|
|
|
return (
|
|
|
|
<Box
|
|
|
|
sx={{
|
|
|
|
...sx,
|
|
|
|
}}
|
|
|
|
>
|
|
|
|
{label && (
|
|
|
|
<Typography
|
|
|
|
sx={{
|
|
|
|
fontWeight: 500,
|
|
|
|
fontSize: "16px",
|
|
|
|
lineHeight: "20px",
|
|
|
|
color: "#4D4D4D",
|
|
|
|
mb: "10px",
|
|
|
|
}}
|
|
|
|
>
|
|
|
|
{label}
|
|
|
|
</Typography>
|
|
|
|
)}
|
|
|
|
<DatePicker
|
2024-01-23 20:55:48 +00:00
|
|
|
//@ts-ignore
|
2024-01-22 00:38:53 +00:00
|
|
|
value={value._d}
|
2023-12-16 14:55:56 +00:00
|
|
|
onChange={onChange}
|
|
|
|
slots={{
|
|
|
|
openPickerIcon: () => <CalendarIcon />,
|
|
|
|
}}
|
|
|
|
slotProps={{
|
|
|
|
openPickerButton: {
|
|
|
|
sx: {
|
|
|
|
p: 0,
|
|
|
|
},
|
|
|
|
"data-cy": "open-datepicker",
|
|
|
|
},
|
|
|
|
}}
|
|
|
|
sx={{
|
|
|
|
"& .MuiInputBase-root": {
|
|
|
|
backgroundColor: "#F2F3F7",
|
|
|
|
borderRadius: "10px",
|
|
|
|
pr: "22px",
|
|
|
|
"& input": {
|
|
|
|
py: "11px",
|
|
|
|
pl: upLg ? "20px" : "13px",
|
|
|
|
lineHeight: "19px",
|
|
|
|
},
|
|
|
|
"& fieldset": {
|
|
|
|
borderColor: "#9A9AAF",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
</Box>
|
|
|
|
);
|
|
|
|
}
|