From e744b8a76cf1265ab2a287d67b36c5bd5bb9922c Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 28 Sep 2021 14:48:03 +0200
Subject: [PATCH] OZG-643 scrolling via keyboard

---
 .../apps/goofy/src/app/app.component.html       |  2 +-
 .../apps/goofy/src/app/app.component.scss       | 17 ++++++++++++++++-
 .../apps/goofy/src/app/app.component.ts         |  6 +++++-
 .../apps/goofy/src/styles/layout/_main.scss     | 13 +++++++++++--
 .../lib/build-info/build-info.component.scss    |  1 +
 .../header/header.component.scss                |  1 +
 .../lib/navigation/navigation.component.scss    |  5 +++++
 .../postfach-page/postfach-page.component.html  |  4 ++--
 .../subnavigation/subnavigation.component.scss  |  6 ++----
 .../vorgang-detail-area.component.scss          |  1 +
 .../vorgang-detail-page.component.html          |  4 ++--
 .../vorgang-list-page.component.html            |  2 +-
 .../wiedervorlage-page.component.html           |  4 ++--
 13 files changed, 50 insertions(+), 16 deletions(-)

diff --git a/goofy-client/apps/goofy/src/app/app.component.html b/goofy-client/apps/goofy/src/app/app.component.html
index 0e1b8beb00..d5df7d2504 100644
--- a/goofy-client/apps/goofy/src/app/app.component.html
+++ b/goofy-client/apps/goofy/src/app/app.component.html
@@ -5,7 +5,7 @@
 
 		<div class="container">
 			<goofy-client-navigation></goofy-client-navigation>
-			<main><router-outlet></router-outlet></main>
+			<main [ngClass]="{ small: navigationCollapse$ | async }"><router-outlet></router-outlet></main>
 			<section>
 				<goofy-client-build-info *ngIf="apiRoot.resource" [apiRoot]="apiRoot.resource"></goofy-client-build-info>
 			</section>
diff --git a/goofy-client/apps/goofy/src/app/app.component.scss b/goofy-client/apps/goofy/src/app/app.component.scss
index de26de1a5d..5d42337c5f 100644
--- a/goofy-client/apps/goofy/src/app/app.component.scss
+++ b/goofy-client/apps/goofy/src/app/app.component.scss
@@ -13,17 +13,32 @@
 	justify-content: space-between;
 	align-items: flex-start;
 	flex-grow: 1;
+	margin-top: 64px;
 }
 
 main {
 	position: relative;
 	flex-grow: 1;
-	overflow-x: hidden;
+	max-width: calc(100vw - (40px + 256px));
+	//overflow-x: hidden;
+	transition: max-width 0.3s ease-in-out;
+	transition-delay: 0s;
+	background-color: #fff;
+
+	&.small {
+		max-width: calc(100vw - (40px + 72px));
+		transition-delay: 0.2s;
+	}
 }
 
 section {
 	width: 40px;
 	flex-shrink: 0;
+	position: sticky;
+	right: 0;
+	top: 64px;
+	z-index: 1;
+	height: calc(100vh - 64px);
 
 	@include media('>largeDesktop') {
 		//width: 360px;
diff --git a/goofy-client/apps/goofy/src/app/app.component.ts b/goofy-client/apps/goofy/src/app/app.component.ts
index 7453c803e7..bbd18e5366 100644
--- a/goofy-client/apps/goofy/src/app/app.component.ts
+++ b/goofy-client/apps/goofy/src/app/app.component.ts
@@ -9,6 +9,7 @@ import { AuthConfig, OAuthService } from 'angular-oauth2-oidc';
 import { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';
 import { Environment } from 'libs/environment-shared/src/lib/environment.model';
 import { Observable } from 'rxjs';
+import { AppService } from '@goofy-client/app-shared';
 
 @Component({
 	selector: 'goofy-client-root',
@@ -25,14 +26,17 @@ export class AppComponent implements OnInit {
 	title = 'goofy';
 
 	apiRoot$: Observable<StateResource<ApiRootResource>>;
+	navigationCollapse$: Observable<boolean>;
 
 	constructor(
 		private apiRootService: ApiRootService,
 		private iconService: IconService,
 		private oAuthService: OAuthService,
-		@Inject(ENVIRONMENT_CONFIG) private envConfig: Environment,
+		private appService: AppService,
+		@Inject(ENVIRONMENT_CONFIG) private envConfig: Environment
 	) {
 		this.iconService.registerIcons();
+		this.navigationCollapse$ = this.appService.getNavigationCollapse();
 	}
 
 	ngOnInit(): void {
diff --git a/goofy-client/apps/goofy/src/styles/layout/_main.scss b/goofy-client/apps/goofy/src/styles/layout/_main.scss
index 266cff8f1d..34648ec9cc 100644
--- a/goofy-client/apps/goofy/src/styles/layout/_main.scss
+++ b/goofy-client/apps/goofy/src/styles/layout/_main.scss
@@ -5,8 +5,17 @@
 	overflow: auto;
 	padding-bottom: 40px;
 	outline: 0;
+
+	&--full {
+		//background-color: #fff;
+		box-shadow: inset 0 -1px 0 0 rgba(0, 0, 0, 0.08), inset 1px 0 0 rgba(0, 0, 0, 0.08), inset -1px 0 0 rgba(0, 0, 0, 0.08);
+		position: relative;
+	}
 }
 
-body.dark .l-scroll-area {
-	background-color: rgb(40, 40, 40);
+body.dark {
+	.l-scroll-area,
+	.l-scroll-area--full {
+		background-color: rgb(40, 40, 40);
+	}
 }
diff --git a/goofy-client/libs/navigation/src/lib/build-info/build-info.component.scss b/goofy-client/libs/navigation/src/lib/build-info/build-info.component.scss
index 454bef4b83..206a83d14d 100644
--- a/goofy-client/libs/navigation/src/lib/build-info/build-info.component.scss
+++ b/goofy-client/libs/navigation/src/lib/build-info/build-info.component.scss
@@ -19,4 +19,5 @@
 p {
 	margin: 0;
 	line-height: 1;
+	white-space: nowrap;
 }
diff --git a/goofy-client/libs/navigation/src/lib/header-container/header/header.component.scss b/goofy-client/libs/navigation/src/lib/header-container/header/header.component.scss
index fc9c594f7e..281bcac46a 100644
--- a/goofy-client/libs/navigation/src/lib/header-container/header/header.component.scss
+++ b/goofy-client/libs/navigation/src/lib/header-container/header/header.component.scss
@@ -12,6 +12,7 @@ header {
 	display: flex;
 	align-items: center;
 	justify-content: space-between;
+	position: fixed;
 
 	.title {
 		font-size: 24px;
diff --git a/goofy-client/libs/navigation/src/lib/navigation/navigation.component.scss b/goofy-client/libs/navigation/src/lib/navigation/navigation.component.scss
index f129e02825..e99d86ce1d 100644
--- a/goofy-client/libs/navigation/src/lib/navigation/navigation.component.scss
+++ b/goofy-client/libs/navigation/src/lib/navigation/navigation.component.scss
@@ -2,6 +2,11 @@
 @use '~@angular/material' as mat;
 @import "variables";
 
+:host {
+	position: sticky;
+	top: 64px;
+}
+
 nav {
 	width: 256px;
 	background-color: inherit;
diff --git a/goofy-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page.component.html b/goofy-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page.component.html
index 099a4892a0..be8ab61299 100644
--- a/goofy-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page.component.html
+++ b/goofy-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page.component.html
@@ -1,10 +1,10 @@
-<goofy-client-subnavigation>
+<goofy-client-subnavigation class="mat-app-background">
 	<a routerLink="../" mat-icon-button data-test-id="back-button" class="back-button" aria-label="back button with arrow icon" matTooltip="zurück zur Detailseite">
 		<mat-icon>arrow_back</mat-icon>
 	</a>
 </goofy-client-subnavigation>
 
-<div class="l-scroll-area" tabindex="0" autofocus>
+<div class="l-scroll-area--full">
 	<goofy-client-vorgang-in-postfach-breadcrumb-container></goofy-client-vorgang-in-postfach-breadcrumb-container>
 	<goofy-client-postfach-page-mail-list [postfachMailListStateResource]="postfachMailListStateResource" data-test-id="postfach-mail-list"></goofy-client-postfach-page-mail-list>
 </div>
diff --git a/goofy-client/libs/ui/src/lib/ui/subnavigation/subnavigation.component.scss b/goofy-client/libs/ui/src/lib/ui/subnavigation/subnavigation.component.scss
index 0ec3a5b02c..f2831aab4a 100644
--- a/goofy-client/libs/ui/src/lib/ui/subnavigation/subnavigation.component.scss
+++ b/goofy-client/libs/ui/src/lib/ui/subnavigation/subnavigation.component.scss
@@ -2,9 +2,8 @@
 
 :host {
 	position: sticky;
-	top: 0;
+	top: 64px;
 	height: 48px;
-	background-color: inherit;
 	width: 100%;
 	z-index: 2;
 	box-shadow: $shadow-bottom;
@@ -13,9 +12,8 @@
 	align-items: center;
 	padding: 4px 16px;
 
-
 	&.shadow {
-		overflow-x: hidden;
+		//overflow-x: hidden;
 		box-shadow: $shadow-bottom, 0 2px 2px -2px rgba(#000, 0.16);
 	}
 }
diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.scss b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.scss
index 8295aadf7f..3b2a0f7fae 100644
--- a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.scss
+++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.scss
@@ -4,6 +4,7 @@
 :host {
 	position: relative;
 	display: block;
+	background-color: inherit;
 }
 
 .header-spinner {
diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.html b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.html
index f79e4f209b..98eab02716 100644
--- a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.html
+++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.html
@@ -1,13 +1,13 @@
 <ng-container *ngIf="vorgangStateResource$ | async as vorgangStateResource">
 
-	<goofy-client-subnavigation>
+	<goofy-client-subnavigation class="mat-app-background">
 		<a routerLink="/" mat-icon-button data-test-id="back-button" class="back-button" aria-label="back button with arrow icon" matTooltip="zurück zur Vorgangsliste">
 			<mat-icon>arrow_back</mat-icon>
 		</a>
 		<goofy-client-vorgang-detail-action-buttons [vorgangWithEingang]="vorgangStateResource.resource"></goofy-client-vorgang-detail-action-buttons>
 	</goofy-client-subnavigation>
 
-	<div class="l-scroll-area" tabindex="0" autofocus>
+	<div class="l-scroll-area--full">
 		<goofy-client-vorgang-detail-area [vorgangStateResource]="vorgangStateResource"></goofy-client-vorgang-detail-area>
 	</div>
 
diff --git a/goofy-client/libs/vorgang/src/lib/vorgang-list-page/vorgang-list-page.component.html b/goofy-client/libs/vorgang/src/lib/vorgang-list-page/vorgang-list-page.component.html
index 3964469edd..2bf1a8ddb3 100644
--- a/goofy-client/libs/vorgang/src/lib/vorgang-list-page/vorgang-list-page.component.html
+++ b/goofy-client/libs/vorgang/src/lib/vorgang-list-page/vorgang-list-page.component.html
@@ -1,2 +1,2 @@
-<goofy-client-subnavigation></goofy-client-subnavigation>
+<goofy-client-subnavigation class="mat-app-background"></goofy-client-subnavigation>
 <goofy-client-vorgang-list-container></goofy-client-vorgang-list-container>
diff --git a/goofy-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-page.component.html b/goofy-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-page.component.html
index 267b6f94f5..878fbd3db9 100644
--- a/goofy-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-page.component.html
+++ b/goofy-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-page.component.html
@@ -1,11 +1,11 @@
 <goofy-client-spinner [stateResource]="wiedervorlageStateResource">
 
-	<goofy-client-subnavigation data-test-id="subnavigation-wiedervorlage">
+	<goofy-client-subnavigation data-test-id="subnavigation-wiedervorlage" class="mat-app-background">
 		<goofy-client-wiedervorlage-action-buttons [wiedervorlage]="wiedervorlageStateResource.resource">
 		</goofy-client-wiedervorlage-action-buttons>
 	</goofy-client-subnavigation>
 
-	<div class="l-scroll-area" tabindex="0" autofocus>
+	<div class="l-scroll-area--full">
 		<div class="wrapper">
 			<goofy-client-breadcrumb [vorgang]="vorgang" [wiedervorlage]="wiedervorlageStateResource.resource">
 			</goofy-client-breadcrumb>
-- 
GitLab