From 3b20bdd6dc7402b0723e038c57f0606131e20e54 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Sat, 7 Mar 2020 13:50:26 +0100 Subject: Servicify menu, close menu on admin for small and medium screens --- client/src/app/core/routing/index.ts | 1 + client/src/app/core/routing/menu-guard.service.ts | 48 +++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 client/src/app/core/routing/menu-guard.service.ts (limited to 'client/src/app/core/routing') diff --git a/client/src/app/core/routing/index.ts b/client/src/app/core/routing/index.ts index 9f0b4eac5..58b83bb2a 100644 --- a/client/src/app/core/routing/index.ts +++ b/client/src/app/core/routing/index.ts @@ -2,3 +2,4 @@ export * from './login-guard.service' export * from './user-right-guard.service' export * from './preload-selected-modules-list' export * from './redirect.service' +export * from './menu-guard.service' diff --git a/client/src/app/core/routing/menu-guard.service.ts b/client/src/app/core/routing/menu-guard.service.ts new file mode 100644 index 000000000..907d145fd --- /dev/null +++ b/client/src/app/core/routing/menu-guard.service.ts @@ -0,0 +1,48 @@ +import { Injectable } from '@angular/core' +import { CanActivate, CanDeactivate } from '@angular/router' +import { MenuService } from '@app/core/menu' +import { ScreenService } from '@app/shared/misc/screen.service' + +abstract class MenuGuard implements CanActivate, CanDeactivate { + display = true + canDeactivate = this.canActivate + + constructor (protected menu: MenuService, protected screen: ScreenService, display: boolean) { + this.display = display + } + + canActivate (): boolean { + // small screens already have the site-wide onResize from screenService + // > medium screens have enough space to fit the administrative menus + if (!this.screen.isInMobileView() && this.screen.isInMediumView()) { + this.menu.isMenuDisplayed = this.display + } + return true + } +} + +@Injectable() +export class OpenMenuGuard extends MenuGuard { + constructor (menu: MenuService, screen: ScreenService) { super(menu, screen, true) } +} + +@Injectable() +export class CloseMenuGuard extends MenuGuard { + constructor (menu: MenuService, screen: ScreenService) { super(menu, screen, false) } +} + +@Injectable() +export class MenuGuards { + public static guards = [ + OpenMenuGuard, + CloseMenuGuard + ] + + static open () { + return OpenMenuGuard + } + + static close () { + return CloseMenuGuard + } +} -- cgit v1.2.3