1 import { Injectable } from '@angular/core'
2 import { MenuService } from '../menu'
3 import { ScreenService } from '../wrappers'
5 abstract class MenuGuard {
6 canDeactivate = this.canActivate
8 constructor (protected menu: MenuService, protected screen: ScreenService, protected display: boolean) {
12 canActivate (): boolean {
13 // small screens already have the site-wide onResize from screenService
14 // > medium screens have enough space to fit the administrative menus
15 if (!this.screen.isInMobileView() && this.screen.isInMediumView()) {
16 this.menu.setMenuDisplay(this.display)
24 export class OpenMenuGuard extends MenuGuard {
25 constructor (menu: MenuService, screen: ScreenService) {
26 super(menu, screen, true)
31 export class OpenMenuAlwaysGuard extends MenuGuard {
32 constructor (menu: MenuService, screen: ScreenService) {
33 super(menu, screen, true)
36 canActivate (): boolean {
37 this.menu.setMenuDisplay(this.display)
44 export class CloseMenuGuard extends MenuGuard {
45 constructor (menu: MenuService, screen: ScreenService) {
46 super(menu, screen, false)
51 export class CloseMenuAlwaysGuard extends MenuGuard {
52 constructor (menu: MenuService, screen: ScreenService) {
53 super(menu, screen, false)
56 canActivate (): boolean {
57 this.menu.setMenuDisplay(this.display)
63 export class MenuGuards {
64 public static guards = [
71 static open (always?: boolean) {
77 static close (always?: boolean) {
79 ? CloseMenuAlwaysGuard