diff --git a/src/components/forms/sponsor-general-form/add-extra-question-popup.js b/src/components/forms/sponsor-general-form/add-extra-question-popup.js index 4c0d4fa4f..97b852da1 100644 --- a/src/components/forms/sponsor-general-form/add-extra-question-popup.js +++ b/src/components/forms/sponsor-general-form/add-extra-question-popup.js @@ -1,7 +1,7 @@ import React, { useEffect } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; -import { FormikProvider, useFormik } from "formik"; +import { FieldArray, FormikProvider, useFormik } from "formik"; import * as yup from "yup"; import PropTypes from "prop-types"; import { @@ -61,16 +61,16 @@ const AddSponsorExtraQuestionPopup = ({ }, validationSchema: yup.object({ id: yup.number(), - name: yup.string().required(), - label: yup.string().required(), - type: yup.string().required(), + name: yup.string().required(T.translate("validation.required")), + label: yup.string().required(T.translate("validation.required")), + type: yup.string().required(T.translate("validation.required")), mandatory: yup.boolean(), placeholder: yup.string(), max_selected_values: yup.number(), values: yup.array().of( yup.object().shape({ - value: yup.string().required(), - label: yup.string().required(), + value: yup.string().required(T.translate("validation.required")), + label: yup.string().required(T.translate("validation.required")), is_default: yup.boolean(), order: yup.number(), _shouldSave: yup.boolean() @@ -111,29 +111,6 @@ const AddSponsorExtraQuestionPopup = ({ } }, [formik.values]); - const handleAddValue = () => { - const newValue = { - value: "", - label: "", - is_default: false, - _shouldSave: true - }; - - const updatedValues = [...formik.values.values, newValue]; - formik.setFieldValue("values", updatedValues); - }; - - const handleRemoveValue = async (index) => { - const valueToRemove = formik.values.values[index]; - - if (valueToRemove.id) { - deleteSponsorExtraQuestionValue(formik.values.id, valueToRemove.id); - } - - const updatedValues = formik.values.values.filter((_, i) => i !== index); - formik.setFieldValue("values", updatedValues); - }; - const handleValueChange = (index, field, value) => { if (field === "is_default" && value === true) { const updatedValues = formik.values.values.map((v, i) => { @@ -205,7 +182,14 @@ const AddSponsorExtraQuestionPopup = ({ } }; - const renderValueItem = (valueItem, index, provided, snapshot) => ( + const areExtraQuestionsIncomplete = () => { + if (formik.errors.values) return true; + return formik.values.values.some( + (eq) => eq.name?.trim() === "" || eq.label?.trim() === "" + ); + }; + + const renderValueItem = (valueItem, index, provided, snapshot, remove) => ( handleRemoveValue(index)} - edge="end" - sx={{ color: "#666" }} - disableRipple + onClick={() => { + const valueToRemove = formik.values.values[index]; + if (valueToRemove.id) { + deleteSponsorExtraQuestionValue( + formik.values.id, + valueToRemove.id + ); + } + remove(index); + }} > @@ -315,7 +305,12 @@ const AddSponsorExtraQuestionPopup = ({ autoComplete="off" > - + - - a.order - b.order - )} - onReorder={handleReorder} - renderItem={renderValueItem} - idKey="id" - updateOrderKey="order" - droppableId="sponsor-extra-question-values" - /> - - - + + {({ push, remove }) => ( + <> + + a.order - b.order + )} + onReorder={handleReorder} + renderItem={(valueItem, index, provided, snapshot) => + renderValueItem( + valueItem, + index, + provided, + snapshot, + remove + ) + } + idKey="id" + updateOrderKey="order" + droppableId="sponsor-extra-question-values" + /> + + + + )} + )}