From fac322386bb5c52e1b4ed6df47f763b6b8d4f615 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 20 Aug 2020 15:24:41 +0200 Subject: [PATCH] Router fixes. --- .../pages/users/user.component.html | 2 +- .../pages/users/users-page.component.html | 2 +- .../assets/pages/assets-page.component.html | 4 +-- .../pages/content/content-page.component.html | 4 +-- .../contents/contents-page.component.html | 4 +-- .../events/rule-events-page.component.html | 2 +- .../pages/rules/rules-page.component.html | 2 +- .../pages/schema/schema-page.component.html | 2 +- .../pages/backups/backups-page.component.html | 2 +- .../pages/clients/clients-page.component.html | 4 +-- .../contributors-page.component.html | 6 ++-- .../languages/languages-page.component.html | 4 +-- .../patterns/patterns-page.component.html | 4 +-- .../pages/plans/plans-page.component.html | 2 +- .../pages/roles/roles-page.component.html | 4 +-- .../workflows/workflows-page.component.html | 2 +- .../framework/angular/panel.component.html | 2 +- .../app/framework/angular/panel.component.ts | 4 +++ .../angular/routers/parent-link.directive.ts | 36 ++++++++++++++----- .../shell/pages/app/left-menu.component.html | 2 +- 20 files changed, 59 insertions(+), 35 deletions(-) diff --git a/frontend/app/features/administration/pages/users/user.component.html b/frontend/app/features/administration/pages/users/user.component.html index f636aa824..5e3ad64dd 100644 --- a/frontend/app/features/administration/pages/users/user.component.html +++ b/frontend/app/features/administration/pages/users/user.component.html @@ -1,4 +1,4 @@ - + diff --git a/frontend/app/features/administration/pages/users/users-page.component.html b/frontend/app/features/administration/pages/users/users-page.component.html index b82e28594..429fd1e25 100644 --- a/frontend/app/features/administration/pages/users/users-page.component.html +++ b/frontend/app/features/administration/pages/users/users-page.component.html @@ -1,6 +1,6 @@ - + {{ 'users.listTitle' | sqxTranslate }} diff --git a/frontend/app/features/assets/pages/assets-page.component.html b/frontend/app/features/assets/pages/assets-page.component.html index 6f6b93103..dfbf11c23 100644 --- a/frontend/app/features/assets/pages/assets-page.component.html +++ b/frontend/app/features/assets/pages/assets-page.component.html @@ -1,6 +1,6 @@ - + {{ 'common.assets' | sqxTranslate }} @@ -72,7 +72,7 @@ diff --git a/frontend/app/features/content/pages/content/content-page.component.html b/frontend/app/features/content/pages/content/content-page.component.html index dc9de30d5..03e956b27 100644 --- a/frontend/app/features/content/pages/content/content-page.component.html +++ b/frontend/app/features/content/pages/content/content-page.component.html @@ -97,11 +97,11 @@
- + - + diff --git a/frontend/app/features/content/pages/contents/contents-page.component.html b/frontend/app/features/content/pages/contents/contents-page.component.html index 5dbd86f4c..8dc4ecce3 100644 --- a/frontend/app/features/content/pages/contents/contents-page.component.html +++ b/frontend/app/features/content/pages/contents/contents-page.component.html @@ -1,6 +1,6 @@ - + {{ 'common.contents' | sqxTranslate }} @@ -127,7 +127,7 @@ diff --git a/frontend/app/features/rules/pages/events/rule-events-page.component.html b/frontend/app/features/rules/pages/events/rule-events-page.component.html index 739e93e3d..eab2ecc61 100644 --- a/frontend/app/features/rules/pages/events/rule-events-page.component.html +++ b/frontend/app/features/rules/pages/events/rule-events-page.component.html @@ -1,6 +1,6 @@ - + {{ 'common.events' | sqxTranslate }} diff --git a/frontend/app/features/rules/pages/rules/rules-page.component.html b/frontend/app/features/rules/pages/rules/rules-page.component.html index 69533091b..6a86d80f2 100644 --- a/frontend/app/features/rules/pages/rules/rules-page.component.html +++ b/frontend/app/features/rules/pages/rules/rules-page.component.html @@ -77,7 +77,7 @@ - + diff --git a/frontend/app/features/schemas/pages/schema/schema-page.component.html b/frontend/app/features/schemas/pages/schema/schema-page.component.html index 388ed41c8..295baacf5 100644 --- a/frontend/app/features/schemas/pages/schema/schema-page.component.html +++ b/frontend/app/features/schemas/pages/schema/schema-page.component.html @@ -83,7 +83,7 @@ diff --git a/frontend/app/features/settings/pages/backups/backups-page.component.html b/frontend/app/features/settings/pages/backups/backups-page.component.html index af99688e6..4481fda8e 100644 --- a/frontend/app/features/settings/pages/backups/backups-page.component.html +++ b/frontend/app/features/settings/pages/backups/backups-page.component.html @@ -46,7 +46,7 @@ diff --git a/frontend/app/features/settings/pages/clients/clients-page.component.html b/frontend/app/features/settings/pages/clients/clients-page.component.html index 6a7120e5f..5178455bf 100644 --- a/frontend/app/features/settings/pages/clients/clients-page.component.html +++ b/frontend/app/features/settings/pages/clients/clients-page.component.html @@ -34,11 +34,11 @@ diff --git a/frontend/app/features/settings/pages/contributors/contributors-page.component.html b/frontend/app/features/settings/pages/contributors/contributors-page.component.html index 10df001d3..a797ed0b7 100644 --- a/frontend/app/features/settings/pages/contributors/contributors-page.component.html +++ b/frontend/app/features/settings/pages/contributors/contributors-page.component.html @@ -1,6 +1,6 @@ - + {{ 'common.contributors' | sqxTranslate }} @@ -67,11 +67,11 @@ diff --git a/frontend/app/features/settings/pages/languages/languages-page.component.html b/frontend/app/features/settings/pages/languages/languages-page.component.html index 98684eab0..9aac1132e 100644 --- a/frontend/app/features/settings/pages/languages/languages-page.component.html +++ b/frontend/app/features/settings/pages/languages/languages-page.component.html @@ -29,11 +29,11 @@ diff --git a/frontend/app/features/settings/pages/patterns/patterns-page.component.html b/frontend/app/features/settings/pages/patterns/patterns-page.component.html index d4e72a837..ff5e0978e 100644 --- a/frontend/app/features/settings/pages/patterns/patterns-page.component.html +++ b/frontend/app/features/settings/pages/patterns/patterns-page.component.html @@ -32,11 +32,11 @@ diff --git a/frontend/app/features/settings/pages/plans/plans-page.component.html b/frontend/app/features/settings/pages/plans/plans-page.component.html index cb7acebf4..ece9087e4 100644 --- a/frontend/app/features/settings/pages/plans/plans-page.component.html +++ b/frontend/app/features/settings/pages/plans/plans-page.component.html @@ -46,7 +46,7 @@ diff --git a/frontend/app/features/settings/pages/roles/roles-page.component.html b/frontend/app/features/settings/pages/roles/roles-page.component.html index dbd237630..1f8b85fea 100644 --- a/frontend/app/features/settings/pages/roles/roles-page.component.html +++ b/frontend/app/features/settings/pages/roles/roles-page.component.html @@ -27,11 +27,11 @@ diff --git a/frontend/app/features/settings/pages/workflows/workflows-page.component.html b/frontend/app/features/settings/pages/workflows/workflows-page.component.html index 24fae6cca..1256e3deb 100644 --- a/frontend/app/features/settings/pages/workflows/workflows-page.component.html +++ b/frontend/app/features/settings/pages/workflows/workflows-page.component.html @@ -45,7 +45,7 @@ diff --git a/frontend/app/framework/angular/panel.component.html b/frontend/app/framework/angular/panel.component.html index 05180c75b..54362f2ef 100644 --- a/frontend/app/framework/angular/panel.component.html +++ b/frontend/app/framework/angular/panel.component.html @@ -23,7 +23,7 @@ - + diff --git a/frontend/app/framework/angular/panel.component.ts b/frontend/app/framework/angular/panel.component.ts index 7c4cb045b..ee413871c 100644 --- a/frontend/app/framework/angular/panel.component.ts +++ b/frontend/app/framework/angular/panel.component.ts @@ -6,6 +6,7 @@ */ import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewChild } from '@angular/core'; +import { QueryParamsHandling } from '@angular/router'; import { slideRightAnimation } from '@app/framework/internal'; import { PanelContainerDirective } from './panel-container.directive'; @@ -26,6 +27,9 @@ export class PanelComponent implements AfterViewInit, OnChanges, OnDestroy, OnIn @Output() public close = new EventEmitter(); + @Input() + public closeQueryParamsHandling: QueryParamsHandling = 'preserve'; + @Input() public theme = 'light'; diff --git a/frontend/app/framework/angular/routers/parent-link.directive.ts b/frontend/app/framework/angular/routers/parent-link.directive.ts index 769f2140b..df93d8cfe 100644 --- a/frontend/app/framework/angular/routers/parent-link.directive.ts +++ b/frontend/app/framework/angular/routers/parent-link.directive.ts @@ -6,7 +6,7 @@ */ import { Directive, ElementRef, HostListener, Input, OnInit, Renderer2 } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; +import { ActivatedRoute, NavigationEnd, QueryParamsHandling, Router } from '@angular/router'; import { ResourceOwner } from '@app/framework/internal'; @Directive({ @@ -18,6 +18,9 @@ export class ParentLinkDirective extends ResourceOwner implements OnInit { @Input() public isLazyLoaded = false; + @Input() + public queryParamsHandling: QueryParamsHandling; + constructor( private readonly router: Router, private readonly route: ActivatedRoute, @@ -29,19 +32,36 @@ export class ParentLinkDirective extends ResourceOwner implements OnInit { public ngOnInit() { this.own( - this.route.url.subscribe(() => { - this.url = this.isLazyLoaded ? - this.router.createUrlTree(['.'], { relativeTo: this.route.parent!.parent }).toString() : - this.router.createUrlTree(['.'], { relativeTo: this.route.parent }).toString(); + this.route.url + .subscribe(() => { + this.updateUrl(); + })); - this.renderer.setProperty(this.element.nativeElement, 'href', this.url); - })); + this.own( + this.router.events + .subscribe(event => { + if (event instanceof NavigationEnd) { + this.updateUrl(); + } + })); } @HostListener('click') public onClick(): boolean { - this.router.navigateByUrl(this.url); + this.router.navigateByUrl(this.url, { + queryParamsHandling: 'preserve' + }); return false; } + + private updateUrl() { + const queryParamsHandling = this.queryParamsHandling; + + this.url = this.isLazyLoaded ? + this.router.createUrlTree(['.'], { queryParamsHandling, relativeTo: this.route.parent!.parent }).toString() : + this.router.createUrlTree(['.'], { queryParamsHandling, relativeTo: this.route.parent }).toString(); + + this.renderer.setProperty(this.element.nativeElement, 'href', this.url); + } } \ No newline at end of file diff --git a/frontend/app/shell/pages/app/left-menu.component.html b/frontend/app/shell/pages/app/left-menu.component.html index 7f94a3ad5..c7c7fd9a8 100644 --- a/frontend/app/shell/pages/app/left-menu.component.html +++ b/frontend/app/shell/pages/app/left-menu.component.html @@ -10,7 +10,7 @@