From e7ef7b552f2e753bd97b197fe072593437f34a89 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Sat, 6 Jan 2024 17:21:15 +0200 Subject: [PATCH] show field area pages list inthe form --- app/javascript/submission_form/appears_on.vue | 51 +++++++++++++++++++ app/javascript/submission_form/areas.vue | 27 +++++----- app/javascript/submission_form/date_step.vue | 5 +- app/javascript/submission_form/form.vue | 34 ++++++++----- app/javascript/submission_form/i18n.js | 18 +++++++ .../submission_form/initials_step.vue | 3 ++ .../submission_form/signature_step.vue | 3 ++ app/javascript/submission_form/text_step.vue | 5 +- 8 files changed, 120 insertions(+), 26 deletions(-) create mode 100644 app/javascript/submission_form/appears_on.vue diff --git a/app/javascript/submission_form/appears_on.vue b/app/javascript/submission_form/appears_on.vue new file mode 100644 index 00000000..780d92f2 --- /dev/null +++ b/app/javascript/submission_form/appears_on.vue @@ -0,0 +1,51 @@ + + + diff --git a/app/javascript/submission_form/areas.vue b/app/javascript/submission_form/areas.vue index 2d92b781..a82ce7bf 100644 --- a/app/javascript/submission_form/areas.vue +++ b/app/javascript/submission_form/areas.vue @@ -83,22 +83,25 @@ export default { return (this.$root.$el?.parentNode?.getRootNode() || document).getElementById(`page-${area.attachment_uuid}-${area.page}`) }, scrollIntoField (field) { - this.areaRefs.find((area) => { - if (area.field === field) { - const root = this.$root.$el.parentNode.getRootNode() - const container = root.body || root.querySelector('div') + if (field?.areas) { + this.scrollIntoArea(field.areas[0]) + } + }, + scrollIntoArea (area) { + const areaRef = this.areaRefs.find((a) => a.area === area) - if (container.style.overflow === 'hidden') { - this.scrollInContainer(area.$el) - } else { - area.$refs.scrollToElem.scrollIntoView({ behavior: 'smooth', block: 'start' }) - } + if (areaRef) { + const root = this.$root.$el.parentNode.getRootNode() + const container = root.body || root.querySelector('div') - return true + if (container.style.overflow === 'hidden') { + this.scrollInContainer(areaRef.$el) } else { - return null + areaRef.$refs.scrollToElem.scrollIntoView({ behavior: 'smooth', block: 'start' }) } - }) + + return true + } }, scrollInContainer (target) { const root = this.$root.$el.parentNode.getRootNode() diff --git a/app/javascript/submission_form/date_step.vue b/app/javascript/submission_form/date_step.vue index 1f1de115..f25a4e8f 100644 --- a/app/javascript/submission_form/date_step.vue +++ b/app/javascript/submission_form/date_step.vue @@ -15,6 +15,7 @@ {{ t('set_today') }} +
import { IconCalendarCheck } from '@tabler/icons-vue' +import AppearsOn from './appears_on' export default { name: 'DateStep', components: { - IconCalendarCheck + IconCalendarCheck, + AppearsOn }, inject: ['t'], props: { diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue index a74ec8fc..d8a78dbb 100644 --- a/app/javascript/submission_form/form.vue +++ b/app/javascript/submission_form/form.vue @@ -65,7 +65,7 @@ :key="currentField.uuid" v-model="values[currentField.uuid]" :field="currentField" - @focus="$refs.areas.scrollIntoField(currentField)" + @focus="scrollIntoField(currentField)" />
+ +
import { IconAlignBoxLeftTop } from '@tabler/icons-vue' +import AppearsOn from './appears_on' export default { name: 'TextStep', components: { - IconAlignBoxLeftTop + IconAlignBoxLeftTop, + AppearsOn }, inject: ['t'], props: {