feat: enhance NavMenuComponent with updateService integration
- Added MatBadgeModule for update count display. - Integrated `updateService` to show update count in the save button. - Added change listener to update button count dynamically. - Improved HTML structure with updated menu and button functionalities.
This commit is contained in:
@@ -31,7 +31,7 @@
|
|||||||
<div class="navbar-collapse justify-content-end me-5">
|
<div class="navbar-collapse justify-content-end me-5">
|
||||||
<a class="navbar-brand" [routerLink]="['/']">User Manager Portal</a>
|
<a class="navbar-brand" [routerLink]="['/']">User Manager Portal</a>
|
||||||
<button *ngIf="isLogedIn()" class="btn">
|
<button *ngIf="isLogedIn()" class="btn">
|
||||||
<mat-icon class="scale-pulse" (click)="updateService.executeAll()">save</mat-icon>
|
<mat-icon class="scale-pulse" [matBadge]="updateActCount === 0 ? '' : updateActCount" (click)="updateService.executeAll()">save</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
<button *ngIf="isLogedIn()" class="btn">
|
<button *ngIf="isLogedIn()" class="btn">
|
||||||
<mat-icon class="scale-pulse" (click)="creationService.openDialog()">add_to_photos</mat-icon>
|
<mat-icon class="scale-pulse" (click)="creationService.openDialog()">add_to_photos</mat-icon>
|
||||||
|
|||||||
@@ -9,10 +9,11 @@ import { MatIconModule } from '@angular/material/icon';
|
|||||||
import { RefreshService } from '../../services/refresh.service';
|
import { RefreshService } from '../../services/refresh.service';
|
||||||
import { CreationService } from '../../services/creation.service';
|
import { CreationService } from '../../services/creation.service';
|
||||||
import { UpdateService } from '../../services/update.service';
|
import { UpdateService } from '../../services/update.service';
|
||||||
|
import {MatBadgeModule} from '@angular/material/badge';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
standalone: true,
|
||||||
imports: [RouterModule, CommonModule, ColorModeBttnComponent, MatIconModule],
|
imports: [RouterModule, CommonModule, ColorModeBttnComponent, MatIconModule, MatBadgeModule],
|
||||||
selector: 'app-nav-menu',
|
selector: 'app-nav-menu',
|
||||||
templateUrl: './nav-menu.component.html',
|
templateUrl: './nav-menu.component.html',
|
||||||
styleUrls: ['./nav-menu.component.css']
|
styleUrls: ['./nav-menu.component.css']
|
||||||
@@ -23,8 +24,14 @@ export class NavMenuComponent {
|
|||||||
}
|
}
|
||||||
isExpanded = false;
|
isExpanded = false;
|
||||||
|
|
||||||
|
updateActCount: number;
|
||||||
|
|
||||||
constructor(private dialog: MatDialog, private authService: AuthenticationService, public refreshService: RefreshService, public creationService : CreationService, public updateService: UpdateService) {
|
constructor(private dialog: MatDialog, private authService: AuthenticationService, public refreshService: RefreshService, public creationService : CreationService, public updateService: UpdateService) {
|
||||||
this.authService.isAuthenticated().then().catch()
|
this.authService.isAuthenticated().then().catch()
|
||||||
|
this.updateActCount = this.updateService.totalCount;
|
||||||
|
this.updateService.addChangeListener(() => {
|
||||||
|
this.updateActCount = updateService.totalCount;
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
get isDarkTheme(): boolean {
|
get isDarkTheme(): boolean {
|
||||||
|
|||||||
@@ -51,9 +51,9 @@ export class UpdateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//change listeners
|
//change listeners
|
||||||
private changeListeners: Array<(updateService: UpdateService) => void> = new Array();
|
private changeListeners: Array<() => void> = new Array();
|
||||||
|
|
||||||
addChangeListener(action: (updateService: UpdateService) => void) {
|
addChangeListener(action: () => void) {
|
||||||
this.changeListeners.push(action)
|
this.changeListeners.push(action)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,6 +62,6 @@ export class UpdateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private executeAllChangeListeners() {
|
private executeAllChangeListeners() {
|
||||||
this.changeListeners.forEach(e => e(this));
|
this.changeListeners.forEach(e => e());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user