From 19741ba783e01a4f5395576271884680fe988851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=87etin?= <69278826+cetincakiroglu@users.noreply.github.com> Date: Tue, 7 Jan 2025 10:25:40 +0300 Subject: [PATCH] Merge menu service & layout service --- src/layout/appmenuitem.ts | 14 +++++++------- src/service/layout/layout.service.ts | 21 +++++++++++++++++++++ src/service/layout/menu.service.ts | 27 --------------------------- 3 files changed, 28 insertions(+), 34 deletions(-) delete mode 100644 src/service/layout/menu.service.ts diff --git a/src/layout/appmenuitem.ts b/src/layout/appmenuitem.ts index 01e52f6..66d733c 100644 --- a/src/layout/appmenuitem.ts +++ b/src/layout/appmenuitem.ts @@ -3,7 +3,7 @@ import { NavigationEnd, Router, RouterModule } from '@angular/router'; import { animate, state, style, transition, trigger } from '@angular/animations'; import { Subscription } from 'rxjs'; import { filter } from 'rxjs/operators'; -import { MenuService } from '@/src/service/layout/menu.service'; +import { LayoutService } from '@/src/service/layout/layout.service'; import { CommonModule } from '@angular/common'; import { RippleModule } from 'primeng/ripple'; import { MenuItem} from 'primeng/api'; @@ -49,7 +49,7 @@ import { MenuItem} from 'primeng/api'; transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')) ]) ], - providers: [MenuService], + providers: [LayoutService], }) export class AppMenuItem { @@ -69,8 +69,8 @@ export class AppMenuItem { key: string = ""; - constructor(public router: Router, private menuService: MenuService) { - this.menuSourceSubscription = this.menuService.menuSource$.subscribe(value => { + constructor(public router: Router, private layoutService: LayoutService) { + this.menuSourceSubscription = this.layoutService.menuSource$.subscribe(value => { Promise.resolve(null).then(() => { if (value.routeEvent) { this.active = (value.key === this.key || value.key.startsWith(this.key + '-')) ? true : false; @@ -83,7 +83,7 @@ export class AppMenuItem { }); }); - this.menuResetSubscription = this.menuService.resetSource$.subscribe(() => { + this.menuResetSubscription = this.layoutService.resetSource$.subscribe(() => { this.active = false; }); @@ -107,7 +107,7 @@ export class AppMenuItem { let activeRoute = this.router.isActive(this.item.routerLink[0], { paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' }); if (activeRoute) { - this.menuService.onMenuStateChange({ key: this.key, routeEvent: true }); + this.layoutService.onMenuStateChange({ key: this.key, routeEvent: true }); } } @@ -128,7 +128,7 @@ export class AppMenuItem { this.active = !this.active; } - this.menuService.onMenuStateChange({ key: this.key }); + this.layoutService.onMenuStateChange({ key: this.key }); } get submenuAnimation() { diff --git a/src/service/layout/layout.service.ts b/src/service/layout/layout.service.ts index 64238fc..32e16a8 100644 --- a/src/service/layout/layout.service.ts +++ b/src/service/layout/layout.service.ts @@ -17,6 +17,11 @@ interface LayoutState { menuHoverActive?: boolean; } +interface MenuChangeEvent { + key: string; + routeEvent?: boolean; +} + @Injectable({ providedIn: 'root', }) @@ -45,6 +50,14 @@ export class LayoutService { private overlayOpen = new Subject(); + private menuSource = new Subject(); + + private resetSource = new Subject(); + + menuSource$ = this.menuSource.asObservable(); + + resetSource$ = this.resetSource.asObservable(); + configUpdate$ = this.configUpdate.asObservable(); overlayOpen$ = this.overlayOpen.asObservable(); @@ -151,4 +164,12 @@ export class LayoutService { this._config = { ...this.layoutConfig() }; this.configUpdate.next(this.layoutConfig()); } + + onMenuStateChange(event: MenuChangeEvent) { + this.menuSource.next(event); + } + + reset() { + this.resetSource.next(true); + } } diff --git a/src/service/layout/menu.service.ts b/src/service/layout/menu.service.ts deleted file mode 100644 index fb49ed5..0000000 --- a/src/service/layout/menu.service.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Subject } from 'rxjs'; - -interface MenuChangeEvent { - key: string; - routeEvent?: boolean; -} - -@Injectable({ - providedIn: 'root' -}) -export class MenuService { - - private menuSource = new Subject(); - private resetSource = new Subject(); - - menuSource$ = this.menuSource.asObservable(); - resetSource$ = this.resetSource.asObservable(); - - onMenuStateChange(event: MenuChangeEvent) { - this.menuSource.next(event); - } - - reset() { - this.resetSource.next(true); - } -}