From f2cadf0b23ed55ecd5ee19ef819168e149df4be0 Mon Sep 17 00:00:00 2001 From: rhenck <richard.henck@iqb.hu-berlin.de> Date: Wed, 23 Mar 2022 14:08:08 +0100 Subject: [PATCH] [editor] Refactor elementSelected logic --- .../unit-view/page-view/canvas/canvas.component.html | 1 + .../canvas/overlays/canvas-element-overlay.ts | 10 +++++++++- .../overlays/dynamic-canvas-overlay.component.ts | 2 +- .../canvas/overlays/static-canvas-overlay.component.ts | 8 -------- .../page-view/canvas/section-dynamic.component.ts | 2 ++ 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/projects/editor/src/app/components/unit-view/page-view/canvas/canvas.component.html b/projects/editor/src/app/components/unit-view/page-view/canvas/canvas.component.html index d54c509fd..5c13febe6 100644 --- a/projects/editor/src/app/components/unit-view/page-view/canvas/canvas.component.html +++ b/projects/editor/src/app/components/unit-view/page-view/canvas/canvas.component.html @@ -39,6 +39,7 @@ [section]="section" [sectionIndex]="i" [isSelected]="selectionService.selectedPageSectionIndex === i" [dropListList]="dropListList" + (elementSelected)="selectionService.selectedPageSectionIndex = i" (transferElement)="moveElementsBetweenSections(selectionService.getSelectedElements(), $event.previousSectionIndex, $event.newSectionIndex)" diff --git a/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/canvas-element-overlay.ts b/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/canvas-element-overlay.ts index d36fd41a1..2a79f11e1 100644 --- a/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/canvas-element-overlay.ts +++ b/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/canvas-element-overlay.ts @@ -19,7 +19,7 @@ import { UIElement } from '../../../../../../../../common/interfaces/elements'; export abstract class CanvasElementOverlay implements OnInit, OnDestroy { @Input() element!: UIElement; @Input() viewMode: boolean = false; - @Output() elementSelected = new EventEmitter<unknown>(); + @Output() elementSelected = new EventEmitter(); @ViewChild('elementContainer', { read: ViewContainerRef, static: true }) private elementContainer!: ViewContainerRef; isSelected = false; protected childComponent!: ComponentRef<ElementComponent | CompoundElementComponent>; @@ -74,6 +74,14 @@ export abstract class CanvasElementOverlay implements OnInit, OnDestroy { } } + elementClicked(event: MouseEvent): void { + if (!this.isSelected) { + this.selectElement(event.shiftKey); + } + event.stopPropagation(); + this.elementSelected.emit(); + } + openEditDialog(): void { this.unitService.showDefaultEditDialog(this.element); } diff --git a/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/dynamic-canvas-overlay.component.ts b/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/dynamic-canvas-overlay.component.ts index 66a8c297a..14cadff2b 100644 --- a/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/dynamic-canvas-overlay.component.ts +++ b/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/dynamic-canvas-overlay.component.ts @@ -17,7 +17,7 @@ import { UIElement } from '../../../../../../../../common/interfaces/elements'; [style.display]="dragging ? 'none' : ''" tabindex="-1" cdkDrag [cdkDragData]="{dragType: 'move', element: element}" - (click)="selectElement($event.shiftKey); $event.stopPropagation()" (dblclick)="openEditDialog()" + (click)="elementClicked($event)" (dblclick)="openEditDialog()" (cdkDragStarted)="moveDragStart()" (cdkDragEnded)="moveDragEnd()" [style.outline]="isSelected ? 'purple solid 1px' : ''" diff --git a/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/static-canvas-overlay.component.ts b/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/static-canvas-overlay.component.ts index 5c48bfbfa..94f6e84db 100644 --- a/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/static-canvas-overlay.component.ts +++ b/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/static-canvas-overlay.component.ts @@ -86,12 +86,4 @@ export class StaticCanvasOverlayComponent extends CanvasElementOverlay { }) .unsubscribe(); } - - elementClicked(event: any): void { - if (!this.isSelected) { - this.selectElement(event.shiftKey); - } - event.stopPropagation(); - this.elementSelected.emit(); - } } diff --git a/projects/editor/src/app/components/unit-view/page-view/canvas/section-dynamic.component.ts b/projects/editor/src/app/components/unit-view/page-view/canvas/section-dynamic.component.ts index 2f0c602e3..68b7f17c6 100644 --- a/projects/editor/src/app/components/unit-view/page-view/canvas/section-dynamic.component.ts +++ b/projects/editor/src/app/components/unit-view/page-view/canvas/section-dynamic.component.ts @@ -55,6 +55,7 @@ import { DynamicSectionHelperGridComponent } from './dynamic-section-helper-grid [gridRowRange]="element.position.gridRowRange" (dragStart)="dragging = true" (dragEnd)="dragging = false" + (elementSelected)="elementSelected.emit()" (elementChanged)="helperGrid?.refresh()"> </aspect-dynamic-canvas-overlay> </div> @@ -66,6 +67,7 @@ export class SectionDynamicComponent { @Input() dropListList!: string[]; @Input() isSelected!: boolean; @Output() transferElement = new EventEmitter<{ previousSectionIndex: number, newSectionIndex: number }>(); + @Output() elementSelected = new EventEmitter(); @ViewChild(DynamicSectionHelperGridComponent) helperGrid!: DynamicSectionHelperGridComponent; @ViewChildren('elementComponent') childElementComponents!: QueryList<CanvasElementOverlay>; -- GitLab