From f2c89cd593e9051cc5e30f198dc95a9ec7e4907e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Fri, 9 Jan 2026 03:15:24 -0300 Subject: [PATCH 1/2] feat: page modules generic component, test, adjusting formik inputs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- .../formik-inputs/mui-formik-datepicker.js | 8 +- .../formik-inputs/mui-formik-radio-group.js | 11 +- .../mui/formik-inputs/mui-formik-select.js | 16 +- .../mui/formik-inputs/mui-formik-upload.js | 83 ++- src/i18n/en.json | 21 +- .../page-template-module-form.test.js | 497 ++++++++++++++++++ .../page-template-modules-form.js | 349 ++++++++++++ src/utils/constants.js | 11 + 8 files changed, 969 insertions(+), 27 deletions(-) create mode 100644 src/pages/sponsors-global/page-templates/page-template-module-form.test.js create mode 100644 src/pages/sponsors-global/page-templates/page-template-modules-form.js diff --git a/src/components/mui/formik-inputs/mui-formik-datepicker.js b/src/components/mui/formik-inputs/mui-formik-datepicker.js index b950da55a..c27b5c702 100644 --- a/src/components/mui/formik-inputs/mui-formik-datepicker.js +++ b/src/components/mui/formik-inputs/mui-formik-datepicker.js @@ -5,7 +5,7 @@ import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider"; import { AdapterMoment } from "@mui/x-date-pickers/AdapterMoment"; import { useField } from "formik"; -const MuiFormikDatepicker = ({ name, label }) => { +const MuiFormikDatepicker = ({ name, label, ...props }) => { const [field, meta, helpers] = useField(name); return ( @@ -18,10 +18,12 @@ const MuiFormikDatepicker = ({ name, label }) => { label, error: meta.touched && Boolean(meta.error), helperText: meta.touched && meta.error, - fullWidth: true, - margin: "normal" + fullWidth: true } }} + margin="normal" + // eslint-disable-next-line react/jsx-props-no-spreading + {...props} /> ); diff --git a/src/components/mui/formik-inputs/mui-formik-radio-group.js b/src/components/mui/formik-inputs/mui-formik-radio-group.js index 01200434f..79cb82327 100644 --- a/src/components/mui/formik-inputs/mui-formik-radio-group.js +++ b/src/components/mui/formik-inputs/mui-formik-radio-group.js @@ -10,13 +10,19 @@ import { } from "@mui/material"; import { useField } from "formik"; -const MuiFormikRadioGroup = ({ name, label, options, ...props }) => { +const MuiFormikRadioGroup = ({ + name, + label, + margin = "normal", + options, + ...props +}) => { const [field, meta] = useField({ name }); return ( {label && {label}} @@ -56,6 +62,7 @@ const MuiFormikRadioGroup = ({ name, label, options, ...props }) => { MuiFormikRadioGroup.propTypes = { name: PropTypes.string.isRequired, label: PropTypes.string, + margin: PropTypes.string, options: PropTypes.array.isRequired }; diff --git a/src/components/mui/formik-inputs/mui-formik-select.js b/src/components/mui/formik-inputs/mui-formik-select.js index 226737a18..a50db2fa8 100644 --- a/src/components/mui/formik-inputs/mui-formik-select.js +++ b/src/components/mui/formik-inputs/mui-formik-select.js @@ -5,12 +5,13 @@ import { FormHelperText, FormControl, InputAdornment, - IconButton + IconButton, + InputLabel } from "@mui/material"; import ClearIcon from "@mui/icons-material/Clear"; import { useField } from "formik"; -const MuiFormikSelect = ({ name, children, isClearable, ...rest }) => { +const MuiFormikSelect = ({ name, label, children, isClearable, ...rest }) => { const [field, meta, helpers] = useField(name); const handleClear = (ev) => { @@ -18,13 +19,24 @@ const MuiFormikSelect = ({ name, children, isClearable, ...rest }) => { helpers.setValue(""); }; + const hasValue = + field.value !== "" && field.value !== undefined && field.value !== null; + return ( + {label && ( + + {label} + + )}