]>
Commit | Line | Data |
---|---|---|
3b20bdd6 RK |
1 | import { Injectable } from '@angular/core' |
2 | import { CanActivate, CanDeactivate } from '@angular/router' | |
67ed6552 C |
3 | import { MenuService } from '../menu' |
4 | import { ScreenService } from '../wrappers' | |
3b20bdd6 RK |
5 | |
6 | abstract class MenuGuard implements CanActivate, CanDeactivate<any> { | |
7 | display = true | |
8 | canDeactivate = this.canActivate | |
9 | ||
10 | constructor (protected menu: MenuService, protected screen: ScreenService, display: boolean) { | |
11 | this.display = display | |
12 | } | |
13 | ||
14 | canActivate (): boolean { | |
15 | // small screens already have the site-wide onResize from screenService | |
16 | // > medium screens have enough space to fit the administrative menus | |
17 | if (!this.screen.isInMobileView() && this.screen.isInMediumView()) { | |
245b9d27 | 18 | this.menu.setMenuDisplay(this.display) |
3b20bdd6 | 19 | } |
9df52d66 | 20 | |
3b20bdd6 RK |
21 | return true |
22 | } | |
23 | } | |
24 | ||
25 | @Injectable() | |
26 | export class OpenMenuGuard extends MenuGuard { | |
9df52d66 C |
27 | constructor (menu: MenuService, screen: ScreenService) { |
28 | super(menu, screen, true) | |
29 | } | |
3b20bdd6 RK |
30 | } |
31 | ||
19b7ebfa RK |
32 | @Injectable() |
33 | export class OpenMenuAlwaysGuard extends MenuGuard { | |
9df52d66 C |
34 | constructor (menu: MenuService, screen: ScreenService) { |
35 | super(menu, screen, true) | |
36 | } | |
19b7ebfa RK |
37 | |
38 | canActivate (): boolean { | |
39 | this.menu.setMenuDisplay(this.display) | |
9df52d66 | 40 | |
19b7ebfa RK |
41 | return true |
42 | } | |
43 | } | |
44 | ||
3b20bdd6 RK |
45 | @Injectable() |
46 | export class CloseMenuGuard extends MenuGuard { | |
9df52d66 C |
47 | constructor (menu: MenuService, screen: ScreenService) { |
48 | super(menu, screen, false) | |
49 | } | |
3b20bdd6 RK |
50 | } |
51 | ||
19b7ebfa RK |
52 | @Injectable() |
53 | export class CloseMenuAlwaysGuard extends MenuGuard { | |
9df52d66 C |
54 | constructor (menu: MenuService, screen: ScreenService) { |
55 | super(menu, screen, false) | |
56 | } | |
19b7ebfa RK |
57 | |
58 | canActivate (): boolean { | |
59 | this.menu.setMenuDisplay(this.display) | |
60 | return true | |
61 | } | |
62 | } | |
63 | ||
3b20bdd6 RK |
64 | @Injectable() |
65 | export class MenuGuards { | |
66 | public static guards = [ | |
67 | OpenMenuGuard, | |
19b7ebfa RK |
68 | OpenMenuAlwaysGuard, |
69 | CloseMenuGuard, | |
70 | CloseMenuAlwaysGuard | |
3b20bdd6 RK |
71 | ] |
72 | ||
19b7ebfa RK |
73 | static open (always?: boolean) { |
74 | return always | |
75 | ? OpenMenuAlwaysGuard | |
76 | : OpenMenuGuard | |
3b20bdd6 RK |
77 | } |
78 | ||
19b7ebfa RK |
79 | static close (always?: boolean) { |
80 | return always | |
81 | ? CloseMenuAlwaysGuard | |
82 | : CloseMenuGuard | |
3b20bdd6 RK |
83 | } |
84 | } |