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