From 76de12d99f9a0595c1e9a00fd272c00972be1bb6 Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 14 Oct 2024 23:48:04 +0000 Subject: [PATCH] Add new checkbox component --- .../SurveyComponent/HeatPumpCheckbox.js | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 frontend/front/src/components/SurveyComponent/HeatPumpCheckbox.js diff --git a/frontend/front/src/components/SurveyComponent/HeatPumpCheckbox.js b/frontend/front/src/components/SurveyComponent/HeatPumpCheckbox.js new file mode 100644 index 00000000..af053ff0 --- /dev/null +++ b/frontend/front/src/components/SurveyComponent/HeatPumpCheckbox.js @@ -0,0 +1,79 @@ +import { useController, Controller } from "react-hook-form"; +import { + Checkbox, + FormControl, + FormControlLabel, + FormGroup, + FormLabel, + FormHelperText, + Stack, + Typography, +} from "@mui/material"; + +export const HeatPumpCheckbox = ({ + name, + control, + options, + label, + disabled, + styles = {}, + required, +}) => { + const { formState } = useController({ name, control }); + const fieldError = formState.errors[name]; + return ( + + + {label} + + + + {options.map((option) => ( + ( + { + const newValue = e.target.checked + ? [...(field.value || []), option.value] + : field.value.filter((v) => v !== option.value); + field.onChange(newValue); + }} + value={option.value} + inputProps={{ "aria-label": "controlled" }} + /> + } + label={ + + {option.label} + + } + /> + )} + /> + ))} + + + {!!fieldError && required && ( + {fieldError?.message} + )} + + ); +};