diff --git a/CHANGELOG.md b/CHANGELOG.md
index 677f6bd7..ae429e2b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
# Letzte Änderungen
+### 1.12.26
+
+- Felder im Form-Builder können nun verschoben und kopiert werden
+
### 1.12.25
- Ein Bug wurde behoben, sodass nun wieder Bedingungen für Formular-Mails vergeben werden können
diff --git a/resources/js/views/formtemplate/FormBuilder.vue b/resources/js/views/formtemplate/FormBuilder.vue
index 10a807be..b1fb0ae8 100644
--- a/resources/js/views/formtemplate/FormBuilder.vue
+++ b/resources/js/views/formtemplate/FormBuilder.vue
@@ -11,6 +11,17 @@
+
+
+
@@ -59,6 +70,8 @@
@editFields="startReordering($event.detail[0])"
@deleteSection="deleteSection($event.detail[0])"
@active="updateActive($event.detail[0])"
+ @copy-field="copyField($event.detail[0], $event.detail[1])"
+ @move-field="moving = {section: $event.detail[0], field: $event.detail[1]}"
>
@@ -83,6 +96,7 @@ import Draggable from 'vuedraggable';
const singleSection = ref(null);
const singleField = ref(null);
+const moving = ref(null);
const active = ref(null);
async function onReorder() {
@@ -124,6 +138,29 @@ function editSection(sectionIndex) {
mode: 'edit',
};
}
+function moveFieldToSection(newSectionIndex) {
+ if (!moving.value) {
+ return;
+ }
+ singleField.value = {
+ model: JSON.parse(JSON.stringify(inner.value.sections[moving.value.section].fields[moving.value.field])),
+ sectionIndex: newSectionIndex,
+ index: null,
+ };
+ storeField();
+ deleteField(moving.value.section, moving.value.field);
+ moving.value = null;
+}
+
+function copyField(sectionIndex, fieldIndex) {
+ var field = JSON.parse(JSON.stringify(inner.value.sections[sectionIndex].fields[fieldIndex]));
+ field.name = field.name + ' - Kopie';
+ singleField.value = {
+ model: field,
+ sectionIndex: sectionIndex,
+ index: null,
+ };
+}
function startReordering(index) {
singleSection.value = {