Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | 8x 8x 8x 8x 8x 8x 1071x 8x 831x 232x 232x 661x | import { InputProps } from "@mui/material";
import { DatePicker } from "@mui/x-date-pickers";
import { useTranslation } from "i18n";
import { Control, Controller, UseControllerProps } from "react-hook-form";
import dayjs, { Dayjs } from "utils/dayjs";
import { dateFormats } from "./constants";
const getLocaleFormat = () => {
return navigator.language in dateFormats
? dateFormats[navigator.language as keyof typeof dateFormats]
: "DD/MM/YYYY";
};
interface DatepickerProps {
className?: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
control: Control<any>;
defaultValue?: Dayjs | null;
error: boolean;
helperText: React.ReactNode;
id: string;
rules?: UseControllerProps["rules"];
label?: string;
name: string;
minDate?: Dayjs;
maxDate?: Dayjs;
openTo?: "year" | "month" | "day";
onPostChange?(date: Dayjs | null): void;
testId?: string;
variant?: "standard" | "outlined" | "filled";
inputProps?: InputProps;
}
const Datepicker = ({
className,
control,
defaultValue,
error,
helperText,
id,
rules,
label,
minDate = dayjs(),
maxDate,
name,
openTo = "day",
onPostChange,
testId,
variant = "standard",
inputProps = {},
}: DatepickerProps) => {
const { t } = useTranslation();
return (
<Controller
control={control}
defaultValue={defaultValue}
name={name}
rules={rules}
render={({ field }) => (
<DatePicker
data-testid={testId}
{...field}
label={label}
value={field.value}
minDate={minDate}
maxDate={maxDate}
onChange={(date) => {
field.onChange(date);
onPostChange?.(date);
}}
openTo={openTo}
views={["year", "month", "day"]}
format={getLocaleFormat()}
slotProps={{
textField: {
fullWidth: true,
id,
error,
helperText: (
<span data-testid={`${name}-helper-text`}>{helperText}</span>
),
variant,
InputLabelProps: { shrink: true },
InputProps: {
...(inputProps || {}),
className,
"aria-label": t("components.datepicker.change_date"),
},
},
}}
/>
)}
/>
);
};
export default Datepicker;
|