minor builder refactor

pull/105/head
Alex Turchyn 2 years ago
parent 24cb108e45
commit e227fe480e

@ -136,8 +136,6 @@ import { v4 } from 'uuid'
import i18n from './i18n' import i18n from './i18n'
import { ref, computed } from 'vue' import { ref, computed } from 'vue'
const selectedAreaRef = ref(null)
export default { export default {
name: 'TemplateBuilder', name: 'TemplateBuilder',
i18n, i18n,
@ -154,7 +152,7 @@ export default {
provide () { provide () {
return { return {
template: this.template, template: this.template,
selectedAreaRef: computed(() => selectedAreaRef) selectedAreaRef: computed(() => this.selectedAreaRef)
} }
}, },
props: { props: {
@ -173,6 +171,7 @@ export default {
} }
}, },
computed: { computed: {
selectedAreaRef: () => ref(),
fieldAreasIndex () { fieldAreasIndex () {
const areas = {} const areas = {}
@ -189,7 +188,7 @@ export default {
return areas return areas
}, },
selectedField () { selectedField () {
return this.template.fields.find((f) => f.areas?.includes(selectedAreaRef.value)) return this.template.fields.find((f) => f.areas?.includes(this.selectedAreaRef.value))
}, },
sortedDocuments () { sortedDocuments () {
return this.template.schema.map((item) => { return this.template.schema.map((item) => {
@ -223,16 +222,16 @@ export default {
onKeyUp (e) { onKeyUp (e) {
if (e.code === 'Escape') { if (e.code === 'Escape') {
this.drawField = null this.drawField = null
selectedAreaRef.value = null this.selectedAreaRef.value = null
} }
if (['Backspace', 'Delete'].includes(e.key) && selectedAreaRef.value && document.activeElement === document.body) { if (['Backspace', 'Delete'].includes(e.key) && this.selectedAreaRef.value && document.activeElement === document.body) {
this.removeArea({ area: selectedAreaRef.value }) this.removeArea(this.selectedAreaRef.value)
selectedAreaRef.value = null this.selectedAreaRef.value = null
} }
}, },
removeArea ({ area }) { removeArea (area) {
const field = this.template.fields.find((f) => f.areas?.includes(area)) const field = this.template.fields.find((f) => f.areas?.includes(area))
field.areas.splice(field.areas.indexOf(area), 1) field.areas.splice(field.areas.indexOf(area), 1)
@ -281,7 +280,7 @@ export default {
this.template.fields.push(field) this.template.fields.push(field)
} }
selectedAreaRef.value = area this.selectedAreaRef.value = area
}, },
onDropfield (area) { onDropfield (area) {
const field = { const field = {
@ -304,7 +303,7 @@ export default {
let baseArea let baseArea
if (this.selectedField?.type === this.dragFieldType) { if (this.selectedField?.type === this.dragFieldType) {
baseArea = selectedAreaRef.value baseArea = this.selectedAreaRef.value
} else if (previousField?.areas) { } else if (previousField?.areas) {
baseArea = previousField.areas[previousField.areas.length - 1] baseArea = previousField.areas[previousField.areas.length - 1]
} else { } else {
@ -332,7 +331,7 @@ export default {
field.areas = [fieldArea] field.areas = [fieldArea]
selectedAreaRef.value = fieldArea this.selectedAreaRef.value = fieldArea
this.template.fields.push(field) this.template.fields.push(field)
}, },
@ -389,7 +388,7 @@ export default {
documentRef.scrollToArea(area) documentRef.scrollToArea(area)
selectedAreaRef.value = area this.selectedAreaRef.value = area
}, },
save () { save () {
this.$el.closest('template-builder').dataset.template = JSON.stringify(this.template) this.$el.closest('template-builder').dataset.template = JSON.stringify(this.template)

@ -22,7 +22,7 @@
@stop-resize="[showMask = false, isResize = false]" @stop-resize="[showMask = false, isResize = false]"
@start-drag="[showMask = true, isMove = true]" @start-drag="[showMask = true, isMove = true]"
@stop-drag="[showMask = false, isMove = false]" @stop-drag="[showMask = false, isMove = false]"
@remove="$emit('remove-area', item)" @remove="$emit('remove-area', item.area)"
/> />
<FieldArea <FieldArea
v-if="newArea" v-if="newArea"

Loading…
Cancel
Save