From 66ab0059bb15b8bc6904d095bbbf270909437fd3 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Sat, 13 Jan 2024 13:15:08 +0200 Subject: [PATCH] accept field title and description --- .eslintrc | 3 ++- app/controllers/api/submissions_controller.rb | 3 ++- app/javascript/submission_form/appears_on.vue | 2 +- app/javascript/submission_form/form.vue | 12 +++++++-- app/javascript/submission_form/text_step.vue | 11 ++++++-- lib/submissions/create_from_submitters.rb | 27 ++++++++++++------- 6 files changed, 42 insertions(+), 16 deletions(-) diff --git a/.eslintrc b/.eslintrc index e7045bb5..d0836600 100644 --- a/.eslintrc +++ b/.eslintrc @@ -8,7 +8,8 @@ }, "rules": { "vue/no-deprecated-html-element-is": 0, - "vue/no-mutating-props": 0 + "vue/no-mutating-props": 0, + "vue/no-v-html": 0 }, "parserOptions": { "ecmaVersion": 2022, diff --git a/app/controllers/api/submissions_controller.rb b/app/controllers/api/submissions_controller.rb index 4116c03a..0e45a75f 100644 --- a/app/controllers/api/submissions_controller.rb +++ b/app/controllers/api/submissions_controller.rb @@ -141,7 +141,8 @@ module Api submitters: [[:send_email, :send_sms, :uuid, :name, :email, :role, :completed, :phone, :application_key, { values: {}, readonly_fields: [], message: %i[subject body], - fields: [%i[name default_value readonly validation_pattern invalid_message]] }]] + fields: [%i[name default_value title description + readonly validation_pattern invalid_message]] }]] }] ] ).fetch(key, []) diff --git a/app/javascript/submission_form/appears_on.vue b/app/javascript/submission_form/appears_on.vue index ee639b76..48bdb028 100644 --- a/app/javascript/submission_form/appears_on.vue +++ b/app/javascript/submission_form/appears_on.vue @@ -41,7 +41,7 @@ export default { uniqueAreas () { const areas = {} - this.field.areas.forEach((area) => { + this.field.areas?.forEach((area) => { areas[area.attachment_uuid + area.page] ||= area }) diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue index bae7ba44..d076f404 100644 --- a/app/javascript/submission_form/form.vue +++ b/app/javascript/submission_form/form.vue @@ -204,7 +204,15 @@ :checked="!!values[field.uuid]" @click="[scrollIntoField(field), values[field.uuid] = !values[field.uuid]]" > - + + {{ field.name || field.type + ' ' + (index + 1) }} @@ -737,7 +745,7 @@ export default { stepPromise().then(async () => { const emptyRequiredField = this.stepFields.find((fields, index) => { - return index < this.currentStep && fields[0].required && (fields[0].type === 'phone' || !this.allowToSkip) && !this.submittedValues[fields[0].uuid]?.length + return index < this.currentStep && fields[0].required && (fields[0].type === 'phone' || !this.allowToSkip) && (this.submittedValues[fields[0].uuid] === true ? false : !this.submittedValues[fields[0].uuid]?.length) }) const formData = new FormData(this.$refs.form) diff --git a/app/javascript/submission_form/text_step.vue b/app/javascript/submission_form/text_step.vue index 503a7ca5..f9a1712f 100644 --- a/app/javascript/submission_form/text_step.vue +++ b/app/javascript/submission_form/text_step.vue @@ -3,14 +3,21 @@ v-if="field.name" :for="field.uuid" dir="auto" - class="label text-2xl mb-2" - >{{ field.name }} + class="label text-2xl" + :class="{ 'mb-2': !field.description }" + > +
+
field_configs['validation_pattern'], - 'message' => field_configs['invalid_message'] - }.compact_blank - end + return field if attrs['validation_pattern'].blank? + + field['validation'] = { + 'pattern' => attrs['validation_pattern'], + 'message' => attrs['invalid_message'] + }.compact_blank + + field end def find_submitter_uuid(template, attrs, index)