diff --git a/app/javascript/template_builder/field.vue b/app/javascript/template_builder/field.vue
index 28c0b9f6..6218bf36 100644
--- a/app/javascript/template_builder/field.vue
+++ b/app/javascript/template_builder/field.vue
@@ -4,6 +4,7 @@
>
+
@@ -162,6 +168,11 @@ export default {
}
},
emits: ['set-draw', 'set-drag', 'drag-end', 'scroll-to-area', 'change-submitter'],
+ data () {
+ return {
+ dragField: null
+ }
+ },
computed: {
fieldNames: FieldType.computed.fieldNames,
fieldIcons: FieldType.computed.fieldIcons,
@@ -173,6 +184,24 @@ export default {
onDragstart (fieldType) {
this.$emit('set-drag', fieldType)
},
+ onFieldDragover (e) {
+ const targetFieldUuid = e.target.closest('[data-uuid]')?.dataset?.uuid
+
+ if (this.dragField && targetFieldUuid && this.dragField.uuid !== targetFieldUuid) {
+ const field = this.fields.find((f) => f.uuid === targetFieldUuid)
+
+ const currentIndex = this.fields.indexOf(this.dragField)
+ const targetIndex = this.fields.indexOf(field)
+
+ if (currentIndex < targetIndex) {
+ this.fields.splice(targetIndex + 1, 0, this.dragField)
+ this.fields.splice(currentIndex, 1)
+ } else {
+ this.fields.splice(targetIndex, 0, this.dragField)
+ this.fields.splice(currentIndex + 1, 1)
+ }
+ }
+ },
removeSubmitter (submitter) {
[...this.fields].forEach((field) => {
if (field.submitter_uuid === submitter.uuid) {
@@ -188,26 +217,6 @@ export default {
this.save()
},
- move (field, direction) {
- const currentIndex = this.submitterFields.indexOf(field)
- const fieldsIndex = this.fields.indexOf(field)
-
- this.fields.splice(fieldsIndex, 1)
-
- if (currentIndex + direction > this.submitterFields.length) {
- const firstIndex = this.fields.indexOf(this.submitterFields[0])
-
- this.fields.splice(firstIndex, 0, field)
- } else if (currentIndex + direction < 0) {
- const lastIndex = this.fields.indexOf(this.submitterFields[this.submitterFields.length - 1])
-
- this.fields.splice(lastIndex + 1, 0, field)
- } else {
- this.fields.splice(fieldsIndex + direction, 0, field)
- }
-
- this.save()
- },
removeField (field) {
this.fields.splice(this.fields.indexOf(field), 1)