diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue index dc224fad..125ce6c0 100644 --- a/app/javascript/submission_form/form.vue +++ b/app/javascript/submission_form/form.vue @@ -554,14 +554,18 @@ class="flex justify-center mt-3 sm:mt-4 mb-0 sm:mb-1 select-none" >
- + > + +
f.required))) { indexesList.push(requiredEmptyStepIndex) } - if (lastFilledStepIndex !== -1) { + if (lastFilledStepIndex !== -1 && (!this.onlyRequiredFields || this.stepFields[lastFilledStepIndex].some((f) => f.required))) { indexesList.push(lastFilledStepIndex) } @@ -1329,6 +1344,13 @@ export default { return `${this.t('option')} ${index + 1}` } }, + findNextStep (currentStepIndex) { + if (this.onlyRequiredFields) { + return this.stepFields.find((step, index) => index > currentStepIndex && step.some((f) => f.required)) + } else { + return this.stepFields[currentStepIndex + 1] + } + }, maybeTrackEmailClick () { const { queryParams } = this @@ -1475,7 +1497,7 @@ export default { this.isSubmittingComplete = true } - const submitStep = this.currentStep + const submitStepIndex = this.currentStep const stepPromise = ['signature', 'phone', 'initials', 'payment', 'verification', 'kba'].includes(this.currentField.type) ? this.$refs.currentStep.submit @@ -1483,7 +1505,7 @@ export default { stepPromise().then(async () => { const emptyRequiredField = this.stepFields.find((fields, index) => { - if (forceComplete ? index === submitStep : index >= submitStep) { + if (forceComplete ? index === submitStepIndex : index >= submitStepIndex) { return false } @@ -1493,7 +1515,7 @@ export default { }) const formData = new FormData(this.$refs.form) - const isLastStep = (submitStep === this.stepFields.length - 1) || forceComplete + const isLastStep = (this.onlyRequiredFields ? !this.findNextStep(submitStepIndex) : (submitStepIndex === this.stepFields.length - 1)) || forceComplete if (isLastStep && !emptyRequiredField && !this.inviteSubmitters.length && !this.optionalInviteSubmitters.length) { formData.append('completed', 'true') @@ -1537,7 +1559,7 @@ export default { return Promise.reject(new Error(data.error)) } - const nextStep = (isLastStep && emptyRequiredField) || (forceComplete ? null : this.stepFields[submitStep + 1]) + const nextStep = (isLastStep && emptyRequiredField) || (forceComplete ? null : this.findNextStep(submitStepIndex)) if (nextStep) { if (this.alwaysMinimize) {