Skip to content

Commit d3388cd

Browse files
ftr: handle routes in user menu - admin
TRACEFOSS-893
1 parent 320696d commit d3388cd

File tree

3 files changed

+25
-7
lines changed

3 files changed

+25
-7
lines changed

src/app/modules/core/layout/header/user-navigation/user-menu.component.html

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@
5252
<app-button variant="icon" iconName="home"></app-button>
5353
</div>
5454

55-
<ng-container *ngTemplateOutlet="menuItem; context: { name: 'admin', icon: 'apps', role: 'admin' }">
55+
<ng-container
56+
*ngTemplateOutlet="menuItem; context: { name: 'admin', icon: 'apps', role: 'admin', route: 'admin' }"
57+
>
5658
</ng-container>
5759

5860
<mat-divider></mat-divider>
@@ -75,11 +77,13 @@
7577
</div>
7678
</div>
7779

78-
<ng-template #menuItem let-name="name" let-icon="icon" let-role="role">
79-
<!-- TODO: [isActive]="this.activeMenu === name"-->
80-
<!-- TODO: (click)="this.navigate(name)"-->
81-
82-
<div class="user-menu-items" *appHasRole="[role ?? 'user']">
80+
<ng-template #menuItem let-name="name" let-icon="icon" let-role="role" let-route="route">
81+
<div
82+
class="user-menu-items"
83+
*appHasRole="[role ?? 'user']"
84+
[routerLink]="route"
85+
[class.user-menu-items--selected]="route === activeItem"
86+
>
8387
<p class="regular-text user-menu-items__label" role="menuitem">
8488
{{ 'routing.' + name | i18n }}
8589
</p>

src/app/modules/core/layout/header/user-navigation/user-menu.component.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@
5555
@apply flex items-center space-x-2 hover:bg-dustyGrayShadeGallery p-1 cursor-pointer;
5656
justify-content: space-between;
5757
flex-direction: row;
58+
59+
&--selected {
60+
@apply bg-dustyGrayShadeGallery;
61+
}
5862
}
5963

6064
.user-menu-items__icon {

src/app/modules/core/layout/header/user-navigation/user-menu.component.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@
2121

2222
import { Component, HostListener } from '@angular/core';
2323
import { LayoutFacade } from '@shared/abstraction/layout-facade';
24-
import { Router } from '@angular/router';
24+
import { NavigationEnd, Router } from '@angular/router';
2525
import { environment } from '@env';
26+
import { NavigableUrls, KnownUrl } from '@core/kown-route';
27+
import { filter } from 'rxjs/operators';
2628

2729
@Component({
2830
selector: 'app-user-navigation',
@@ -33,10 +35,18 @@ export class UserMenuComponent {
3335
public isExpanded = false;
3436
public userInitials = '';
3537
public userDetails = { name: '', email: '', role: '' };
38+
public activeItem: string = '';
3639

3740
constructor(private readonly layoutFacade: LayoutFacade, private readonly router: Router) {
3841
this.userInitials = this.layoutFacade.realName;
3942
this.userDetails = this.layoutFacade.userInformation;
43+
44+
this.router.events
45+
.pipe(filter(event => event instanceof NavigationEnd))
46+
.subscribe(({ urlAfterRedirects, url }: NavigationEnd) => {
47+
const currentUrl = urlAfterRedirects ?? url;
48+
this.activeItem = NavigableUrls.find(menuKey => currentUrl.includes(menuKey));
49+
});
4050
}
4151

4252
public expand(event: Event): void {

0 commit comments

Comments
 (0)