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) {