From 7758c4ace272d50feee4eada9790d7de2f624c14 Mon Sep 17 00:00:00 2001 From: hamza221 Date: Thu, 18 May 2023 22:09:12 +0200 Subject: [PATCH] Remember input in LocalStorage Signed-off-by: hamza221 --- src/views/Submit.vue | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/views/Submit.vue b/src/views/Submit.vue index 11417c681..bb2450c53 100644 --- a/src/views/Submit.vue +++ b/src/views/Submit.vue @@ -89,7 +89,8 @@ v-bind="question" :values.sync="answers[question.id]" @keydown.enter="onKeydownEnter" - @keydown.ctrl.enter="onKeydownCtrlEnter" /> + @keydown.ctrl.enter="onKeydownCtrlEnter" + @update:values="addFormFieldToLocalStorage(question)" /> { + if (answer) { + switch (answer?.type) { + case 'QuestionMultiple': + const answers = [] + answer.value.forEach(num => { + answers.push(num.toString()) + }) + this.answers[answer.id] = answers + break + default: + this.answers[answer.id] = answer.value + break + } + } + }) + } }, methods: { @@ -261,11 +283,23 @@ export default { // Using button-click event to not bypass validity-checks and use our specified behaviour this.$refs.submitButton.click() }, + addFormFieldToLocalStorage(question) { + + this.formValuesForLocalStorage[question.id] = { id: question.id, value: this.answers[question.id], type:answerTypes[question.type].component.name } + const parsed = JSON.stringify(this.formValuesForLocalStorage) + localStorage.setItem(`${this.shareHash}`, parsed) + }, + deleteFormFieldFromLocalStorage() { + this.formValuesForLocalStorage = [] + const parsed = JSON.stringify(this.formValuesForLocalStorage) + localStorage.setItem(`${this.shareHash}`, parsed) + }, /** * Submit the form after the browser validated it 🚀 */ async onSubmit() { + this.deleteFormFieldFromLocalStorage() this.loading = true try {