diff options
author | Rigel Kent <sendmemail@rigelk.eu> | 2020-03-07 13:50:26 +0100 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2020-03-10 16:22:52 +0100 |
commit | 3b20bdd6dc7402b0723e038c57f0606131e20e54 (patch) | |
tree | 68b203892c15c524f57651bfda7e6d5c0e920443 /client/src/app/core/routing/menu-guard.service.ts | |
parent | 7b81edc854902a536083298472bf92bb6726edcf (diff) | |
download | PeerTube-3b20bdd6dc7402b0723e038c57f0606131e20e54.tar.gz PeerTube-3b20bdd6dc7402b0723e038c57f0606131e20e54.tar.zst PeerTube-3b20bdd6dc7402b0723e038c57f0606131e20e54.zip |
Servicify menu, close menu on admin for small and medium screens
Diffstat (limited to 'client/src/app/core/routing/menu-guard.service.ts')
-rw-r--r-- | client/src/app/core/routing/menu-guard.service.ts | 48 |
1 files changed, 48 insertions, 0 deletions
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 @@ | |||
1 | import { Injectable } from '@angular/core' | ||
2 | import { CanActivate, CanDeactivate } from '@angular/router' | ||
3 | import { MenuService } from '@app/core/menu' | ||
4 | import { ScreenService } from '@app/shared/misc/screen.service' | ||
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()) { | ||
18 | this.menu.isMenuDisplayed = this.display | ||
19 | } | ||
20 | return true | ||
21 | } | ||
22 | } | ||
23 | |||
24 | @Injectable() | ||
25 | export class OpenMenuGuard extends MenuGuard { | ||
26 | constructor (menu: MenuService, screen: ScreenService) { super(menu, screen, true) } | ||
27 | } | ||
28 | |||
29 | @Injectable() | ||
30 | export class CloseMenuGuard extends MenuGuard { | ||
31 | constructor (menu: MenuService, screen: ScreenService) { super(menu, screen, false) } | ||
32 | } | ||
33 | |||
34 | @Injectable() | ||
35 | export class MenuGuards { | ||
36 | public static guards = [ | ||
37 | OpenMenuGuard, | ||
38 | CloseMenuGuard | ||
39 | ] | ||
40 | |||
41 | static open () { | ||
42 | return OpenMenuGuard | ||
43 | } | ||
44 | |||
45 | static close () { | ||
46 | return CloseMenuGuard | ||
47 | } | ||
48 | } | ||