minor builder refactor
This commit is contained in:
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user