diff --git a/app/javascript/template_builder/area.vue b/app/javascript/template_builder/area.vue index e15bf2f8..88253fa2 100644 --- a/app/javascript/template_builder/area.vue +++ b/app/javascript/template_builder/area.vue @@ -319,7 +319,7 @@ export default { default: false } }, - emits: ['start-resize', 'stop-resize', 'start-drag', 'stop-drag', 'remove', 'scroll-to', 'add-custom-field', 'click-title'], + emits: ['start-resize', 'stop-resize', 'start-drag', 'stop-drag', 'remove', 'scroll-to', 'add-custom-field', 'click-title', 'multi-select'], data () { return { isContenteditable: false, @@ -798,6 +798,8 @@ export default { this.selectedAreasRef.value.splice(this.selectedAreasRef.value.indexOf(this.area), 1) } + this.$emit('multi-select', e) + return } diff --git a/app/javascript/template_builder/page.vue b/app/javascript/template_builder/page.vue index 163a386f..1248cfe7 100644 --- a/app/javascript/template_builder/page.vue +++ b/app/javascript/template_builder/page.vue @@ -57,6 +57,7 @@ @scroll-to="$emit('scroll-to', $event)" @add-custom-field="$emit('add-custom-field', $event)" @contextmenu="openAreaContextMenu($event, item.area, item.field)" + @multi-select="openMultiSelectContextMenu" @click-title="closeContextMenu" /> = 2) { + this.openSelectionContextMenu(event) + + return + } + event.preventDefault() event.stopPropagation() @@ -443,6 +450,13 @@ export default { areas: this.selectedAreasRef.value } }, + openMultiSelectContextMenu (event) { + if (this.selectedAreasRef.value.length >= 2) { + this.openSelectionContextMenu(event) + } else { + this.closeContextMenu() + } + }, handleSelectionCopy () { this.$emit('copy-selected-areas') diff --git a/app/javascript/template_builder/selection_context_menu.vue b/app/javascript/template_builder/selection_context_menu.vue index 4649e011..fb275271 100644 --- a/app/javascript/template_builder/selection_context_menu.vue +++ b/app/javascript/template_builder/selection_context_menu.vue @@ -9,6 +9,62 @@ @mousedown.stop @pointerdown.stop > + + +
+ + +
{{ t('height') }} -
- -