12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import { Injectable } from '@angular/core'
- import { MenuService } from '../menu'
- import { ScreenService } from '../wrappers'
- abstract class MenuGuard {
- canDeactivate = this.canActivate.bind(this)
- constructor (protected menu: MenuService, protected screen: ScreenService, protected display: boolean) {
- }
- 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.setMenuDisplay(this.display)
- }
- return true
- }
- }
- @Injectable()
- export class OpenMenuGuard extends MenuGuard {
- constructor (menu: MenuService, screen: ScreenService) {
- super(menu, screen, true)
- }
- }
- @Injectable()
- export class OpenMenuAlwaysGuard extends MenuGuard {
- constructor (menu: MenuService, screen: ScreenService) {
- super(menu, screen, true)
- }
- canActivate (): boolean {
- this.menu.setMenuDisplay(this.display)
- return true
- }
- }
- @Injectable()
- export class CloseMenuGuard extends MenuGuard {
- constructor (menu: MenuService, screen: ScreenService) {
- super(menu, screen, false)
- }
- }
- @Injectable()
- export class CloseMenuAlwaysGuard extends MenuGuard {
- constructor (menu: MenuService, screen: ScreenService) {
- super(menu, screen, false)
- }
- canActivate (): boolean {
- this.menu.setMenuDisplay(this.display)
- return true
- }
- }
- @Injectable()
- export class MenuGuards {
- public static guards = [
- OpenMenuGuard,
- OpenMenuAlwaysGuard,
- CloseMenuGuard,
- CloseMenuAlwaysGuard
- ]
- static open (always?: boolean) {
- return always
- ? OpenMenuAlwaysGuard
- : OpenMenuGuard
- }
- static close (always?: boolean) {
- return always
- ? CloseMenuAlwaysGuard
- : CloseMenuGuard
- }
- }
|