1 import { Injectable } from '@angular/core'
2 import { CanActivate, CanDeactivate } from '@angular/router'
3 import { MenuService } from '../menu'
4 import { ScreenService } from '../wrappers'
6 abstract class MenuGuard implements CanActivate, CanDeactivate<any> {
7 canDeactivate = this.canActivate
9 constructor (protected menu: MenuService, protected screen: ScreenService, protected display: boolean) {
13 canActivate (): boolean {
14 // small screens already have the site-wide onResize from screenService
15 // > medium screens have enough space to fit the administrative menus
16 if (!this.screen.isInMobileView() && this.screen.isInMediumView()) {
17 this.menu.setMenuDisplay(this.display)
25 export class OpenMenuGuard extends MenuGuard {
26 constructor (menu: MenuService, screen: ScreenService) {
27 super(menu, screen, true)
32 export class OpenMenuAlwaysGuard extends MenuGuard {
33 constructor (menu: MenuService, screen: ScreenService) {
34 super(menu, screen, true)
37 canActivate (): boolean {
38 this.menu.setMenuDisplay(this.display)
45 export class CloseMenuGuard extends MenuGuard {
46 constructor (menu: MenuService, screen: ScreenService) {
47 super(menu, screen, false)
52 export class CloseMenuAlwaysGuard extends MenuGuard {
53 constructor (menu: MenuService, screen: ScreenService) {
54 super(menu, screen, false)
57 canActivate (): boolean {
58 this.menu.setMenuDisplay(this.display)
64 export class MenuGuards {
65 public static guards = [
72 static open (always?: boolean) {
78 static close (always?: boolean) {
80 ? CloseMenuAlwaysGuard