Me han dado una tarea para cambiar la validación del formulario. El requisito es validar el formulario cuando se haya respondido una de las N preguntas. Estoy compartiendo el código de cómo funciona la validación actualmente, es decir, valida el formulario cuando se responden todas las preguntas. Puede ver la clave questionValidation aquí que tiene la validación yup dentro.
{ companyName: 'ABC', policyName: 'ABCDEFG', questionValidation: { 'Question 1?': Yup.string() .matches('No', 'Plan ineligible') .required('Required'), 'Question 2?': Yup.string() .matches('No', 'Plan ineligible') .required('Required'), 'Question 3?': Yup.string() .matches('Yes', 'Plan ineligible') .required('Required'), }, questionInitialValues: { 'Question 1?': '', 'Question 2?': '', 'Question 3?': '', }, questionGroups: [ { validationType: 'every', questions: [ { label: 'Yes/No', question: 'Question 1?', questionType: 'select', answers: ['Yes', 'No'], knockoutAnswers: ['Yes'], questionID: 66, }, { label: 'Yes/No', question: 'Question 2?', questionType: 'select', answers: ['Yes', 'No'], knockoutAnswers: ['Yes'], questionID: 69, }, { label: 'Yes/No', question: 'Question 3?', questionType: 'select', answers: ['Yes', 'No'], knockoutAnswers: ['No'], questionID: 72, }, ], }, ],}
Es necesario cambiar el código en questionValidation para que se pueda realizar la validación cuando se responda uno de los N campos. Cómo validar el formulario está escrito a continuación
<FormDialog title="Test" ... validationSchema={knockoutQuestions?.questionValidation} />