From cf3b02002f830957a74162b1017bcd6ba50b679e Mon Sep 17 00:00:00 2001
From: rhenck <richard.henck@iqb.hu-berlin.de>
Date: Mon, 20 Sep 2021 15:16:02 +0200
Subject: [PATCH] [editor] Fix page selection

New elements are now put on the current(/newly created) page or section.
---
 .../unit-view/page-view/canvas/page-canvas.component.ts      | 1 +
 .../src/app/components/unit-view/unit-view.component.ts      | 5 ++++-
 projects/editor/src/app/selection.service.ts                 | 4 ++++
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/projects/editor/src/app/components/unit-view/page-view/canvas/page-canvas.component.ts b/projects/editor/src/app/components/unit-view/page-view/canvas/page-canvas.component.ts
index 0c285290a..bdf73b71a 100644
--- a/projects/editor/src/app/components/unit-view/page-view/canvas/page-canvas.component.ts
+++ b/projects/editor/src/app/components/unit-view/page-view/canvas/page-canvas.component.ts
@@ -107,6 +107,7 @@ export class PageCanvasComponent implements OnInit, OnDestroy {
 
   addSection(index: number | null = null): void {
     this.unitService.addSection(this.page, index);
+    this.selectionService.setSelectedPageSection(this.page.sections[this.page.sections.length - 1]);
   }
 
   sectionDrop(event: CdkDragDrop<UnitPageSection[]>): void {
diff --git a/projects/editor/src/app/components/unit-view/unit-view.component.ts b/projects/editor/src/app/components/unit-view/unit-view.component.ts
index d9087fd59..9498d031b 100644
--- a/projects/editor/src/app/components/unit-view/unit-view.component.ts
+++ b/projects/editor/src/app/components/unit-view/unit-view.component.ts
@@ -56,11 +56,13 @@ export class UnitViewComponent implements OnInit, OnDestroy {
 
   selectPage(newIndex: number): void {
     this.selectedPageIndex = newIndex;
+    this.selectionService.setSelectedPageSection(this.unit.pages[this.selectedPageIndex].sections[0]);
   }
 
   addPage(): void {
     this.unitService.addPage();
-    this.selectedPageIndex -= 1;
+    this.selectedPageIndex += 1;
+    this.selectionService.setSelectedPageSection(this.unit.pages[this.selectedPageIndex].sections[0]);
   }
 
   movePage(page: UnitPage, direction: 'up' | 'down'): void {
@@ -76,6 +78,7 @@ export class UnitViewComponent implements OnInit, OnDestroy {
           this.selectedPageIndex -= 1;
         }
       });
+    this.selectionService.setSelectedPageSection(this.unit.pages[this.selectedPageIndex].sections[0]);
   }
 
   updateModel(page: UnitPage, property: string, value: number | boolean, isInputValid: boolean | null = true): void {
diff --git a/projects/editor/src/app/selection.service.ts b/projects/editor/src/app/selection.service.ts
index 566ece458..9b1f21214 100644
--- a/projects/editor/src/app/selection.service.ts
+++ b/projects/editor/src/app/selection.service.ts
@@ -41,6 +41,10 @@ export class SelectionService {
   get selectedPageSection(): Observable<UnitPageSection> {
     return this._selectedPageSection.asObservable();
   }
+
+  setSelectedPageSection(section: UnitPageSection): void {
+    this._selectedPageSection.next(section);
+  }
   // ### SECTION ######
 
   get selectedElements(): Observable<UnitUIElement[]> {
-- 
GitLab