diff --git a/app/javascript/template_builder/builder.vue b/app/javascript/template_builder/builder.vue index 41d5db86..f561410e 100644 --- a/app/javascript/template_builder/builder.vue +++ b/app/javascript/template_builder/builder.vue @@ -6,7 +6,7 @@
@@ -194,28 +194,13 @@ @cancel="[drawField = null, drawOption = null]" @change-submitter="[selectedSubmitter = $event, drawField.submitter_uuid = $event.uuid]" /> - - - + :fields="template.fields" + :default-fields="defaultFields" + :selected-submitter="selectedSubmitter" + @select="startFieldDraw($event)" + />
ref(), fieldAreasIndex () { const areas = {} @@ -489,31 +470,38 @@ export default { this.documentRefs = [] }, methods: { - startFieldDraw (type) { - const field = { - name: '', - uuid: v4(), - required: type !== 'checkbox', - areas: [], - submitter_uuid: this.selectedSubmitter.uuid, - type - } + startFieldDraw ({ name, type }) { + const existingField = this.template.fields?.find((f) => f.submitter_uuid === this.selectedSubmitter.uuid && name && name === f.name) - if (['select', 'multiple', 'radio'].includes(type)) { - field.options = [{ value: '', uuid: v4() }] - } + if (existingField) { + this.drawField = existingField + } else { + const field = { + name: name || '', + uuid: v4(), + required: type !== 'checkbox', + areas: [], + submitter_uuid: this.selectedSubmitter.uuid, + type + } - if (type === 'stamp') { - field.readonly = true - } + if (['select', 'multiple', 'radio'].includes(type)) { + field.options = [{ value: '', uuid: v4() }] + } - if (type === 'date') { - field.preferences = { - format: Intl.DateTimeFormat().resolvedOptions().locale.endsWith('-US') ? 'MM/DD/YYYY' : 'DD/MM/YYYY' + if (type === 'stamp') { + field.readonly = true + } + + if (type === 'date') { + field.preferences = { + format: Intl.DateTimeFormat().resolvedOptions().locale.endsWith('-US') ? 'MM/DD/YYYY' : 'DD/MM/YYYY' + } } + + this.drawField = field } - this.drawField = field this.drawOption = null }, undo () { diff --git a/app/javascript/template_builder/field.vue b/app/javascript/template_builder/field.vue index ced9d919..6e0fd7dc 100644 --- a/app/javascript/template_builder/field.vue +++ b/app/javascript/template_builder/field.vue @@ -70,7 +70,7 @@ :field="field" />