diff --git a/resources/js/components/blueprints/Fields.vue b/resources/js/components/blueprints/Fields.vue index a721b7ce15..ed896ef098 100644 --- a/resources/js/components/blueprints/Fields.vue +++ b/resources/js/components/blueprints/Fields.vue @@ -21,6 +21,7 @@ @updated="$emit('field-updated', i, $event)" @deleted="$emit('field-deleted', i)" @editor-closed="$emit('editor-closed')" + @duplicate="duplicateField(field)" /> @@ -140,7 +141,24 @@ export default { this.$toast.success(__('Field added')); this.pendingCreatedField = null; - } + }, + + duplicateField(field) { + let handle = `${field.handle}_duplicate`; + let display = field.config.display ? `${field.config.display} (Duplicate)` : `${field.handle} (Duplicate)`; + + let pending = { + ...field, + _id: uniqid(), + handle: handle, + config: { + ...field.config, + display, + } + }; + + this.$nextTick(() => this.pendingCreatedField = pending); + }, } diff --git a/resources/js/components/blueprints/RegularField.vue b/resources/js/components/blueprints/RegularField.vue index 4142a56a42..2057317f6d 100644 --- a/resources/js/components/blueprints/RegularField.vue +++ b/resources/js/components/blueprints/RegularField.vue @@ -24,7 +24,10 @@ > - + diff --git a/resources/svg/icons/light/duplicate.svg b/resources/svg/icons/light/duplicate.svg new file mode 100644 index 0000000000..1c65ad140a --- /dev/null +++ b/resources/svg/icons/light/duplicate.svg @@ -0,0 +1 @@ +