diff --git a/src-ts/lib/form/Form.tsx b/src-ts/lib/form/Form.tsx index 7def56566..fa7445cb1 100644 --- a/src-ts/lib/form/Form.tsx +++ b/src-ts/lib/form/Form.tsx @@ -62,8 +62,16 @@ const Form: (props: FormProps { + if (!formRef.current?.elements) { + return + } + + // so we repeat the validation when formValues changes, to support the parent component's async data loading validateForm(formRef.current?.elements, 'change', inputs) checkIfFormIsValid(inputs) }, [props.formValues]) diff --git a/src-ts/tools/work/work-self-service/intake-forms/bug-hunt/BugHuntIntakeForm.tsx b/src-ts/tools/work/work-self-service/intake-forms/bug-hunt/BugHuntIntakeForm.tsx index 8910c8c3b..066a695b0 100644 --- a/src-ts/tools/work/work-self-service/intake-forms/bug-hunt/BugHuntIntakeForm.tsx +++ b/src-ts/tools/work/work-self-service/intake-forms/bug-hunt/BugHuntIntakeForm.tsx @@ -5,8 +5,10 @@ import { Form, FormAction, FormDefinition, + formGetInputFields, formGetInputModel, FormInputModel, + formOnReset, IconOutline, InfoCard, LoadingSpinner, @@ -66,6 +68,11 @@ const BugHuntIntakeForm: React.FC = () => { const [selectedPackage, setSelectedPackage]: [PricePackageName, Dispatch>] = useState(formValues.packageType) + const formInputs: Array = formGetInputFields(formDef.groups) + if (!workId && !challenge) { + formOnReset(formInputs, formValues) + } + useEffect(() => { const useEffectAsync: () => Promise = async () => { if (!workId) {