diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue index 0a011e25..026ceb1e 100644 --- a/app/javascript/submission_form/form.vue +++ b/app/javascript/submission_form/form.vue @@ -221,6 +221,7 @@ :key="currentField.uuid" v-model="values[currentField.uuid]" :field="currentField" + :previous-value="previousSignatureValue" :is-direct-upload="isDirectUpload" :attachments-index="attachmentsIndex" :submitter-slug="submitterSlug" @@ -234,6 +235,7 @@ :key="currentField.uuid" v-model="values[currentField.uuid]" :field="currentField" + :previous-value="previousInitialsValue" :is-direct-upload="isDirectUpload" :attachments-index="attachmentsIndex" :submitter-slug="submitterSlug" @@ -458,6 +460,16 @@ export default { submitterSlug () { return this.submitter.slug }, + previousSignatureValue () { + const signatureField = [...this.fields].reverse().find((field) => field.type === 'signature' && !!this.values[field.uuid]) + + return this.values[signatureField?.uuid] + }, + previousInitialsValue () { + const initialsField = [...this.fields].reverse().find((field) => field.type === 'initials' && !!this.values[field.uuid]) + + return this.values[initialsField?.uuid] + }, isAnonymousChecboxes () { return this.currentField.type === 'checkbox' && this.currentStepFields.every((e) => !e.name) && this.currentStepFields.length > 4 }, diff --git a/app/javascript/submission_form/initials_step.vue b/app/javascript/submission_form/initials_step.vue index 218b6f59..04a690f3 100644 --- a/app/javascript/submission_form/initials_step.vue +++ b/app/javascript/submission_form/initials_step.vue @@ -20,7 +20,7 @@ ({}) }, + previousValue: { + type: String, + required: false, + default: '' + }, modelValue: { type: String, required: false, @@ -120,10 +125,20 @@ export default { emits: ['attached', 'update:model-value', 'start', 'minimize', 'focus'], data () { return { - isInitialsStarted: false, + isInitialsStarted: !!this.previousValue, + isUsePreviousValue: true, isDrawInitials: false } }, + computed: { + computedPreviousValue () { + if (this.isUsePreviousValue) { + return this.previousValue + } else { + return null + } + } + }, async mounted () { this.$nextTick(() => { if (this.$refs.canvas) { @@ -151,6 +166,9 @@ export default { methods: { remove () { this.$emit('update:model-value', '') + + this.isUsePreviousValue = false + this.isInitialsStarted = false }, clear () { this.pad.clear() @@ -192,7 +210,11 @@ export default { } }, async submit () { - if (this.modelValue) { + if (this.modelValue || this.computedPreviousValue) { + if (this.computedPreviousValue) { + this.$emit('update:model-value', this.computedPreviousValue) + } + return Promise.resolve({}) } diff --git a/app/javascript/submission_form/signature_step.vue b/app/javascript/submission_form/signature_step.vue index 5a2b8f2d..7f62807e 100644 --- a/app/javascript/submission_form/signature_step.vue +++ b/app/javascript/submission_form/signature_step.vue @@ -9,14 +9,15 @@ class="tooltip" data-tip="Type text" > - + - - - + @@ -123,6 +127,11 @@ export default { required: false, default: () => ({}) }, + previousValue: { + type: String, + required: false, + default: '' + }, modelValue: { type: String, required: false, @@ -132,10 +141,20 @@ export default { emits: ['attached', 'update:model-value', 'start', 'minimize'], data () { return { - isSignatureStarted: false, + isSignatureStarted: !!this.previousValue, + isUsePreviousValue: true, isTextSignature: false } }, + computed: { + computedPreviousValue () { + if (this.isUsePreviousValue) { + return this.previousValue + } else { + return null + } + } + }, async mounted () { this.$nextTick(() => { if (this.$refs.canvas) { @@ -161,6 +180,9 @@ export default { methods: { remove () { this.$emit('update:model-value', '') + + this.isUsePreviousValue = false + this.isSignatureStarted = false }, clear () { this.pad.clear() @@ -249,7 +271,11 @@ export default { } }, async submit () { - if (this.modelValue) { + if (this.modelValue || this.computedPreviousValue) { + if (this.computedPreviousValue) { + this.$emit('update:model-value', this.computedPreviousValue) + } + return Promise.resolve({}) }