mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
import { first, map, switchMap } from 'rxjs/operators';
|
|
import { Injectable } from '@angular/core';
|
|
import { Actions, Effect, ofType } from '@ngrx/effects'
|
|
import * as fromRouter from '@ngrx/router-store';
|
|
|
|
import { HostWindowActionTypes } from '../shared/host-window.actions';
|
|
import {
|
|
CollapseMenuAction,
|
|
ExpandMenuPreviewAction,
|
|
MenuActionTypes
|
|
} from '../shared/menu/menu.actions';
|
|
import { MenuID } from '../shared/menu/initial-menus-state';
|
|
import { MenuService } from '../shared/menu/menu.service';
|
|
import { MenuState } from '../shared/menu/menu.reducer';
|
|
|
|
@Injectable()
|
|
export class NavbarEffects {
|
|
menuID = MenuID.PUBLIC;
|
|
/**
|
|
* Effect that collapses the public menu on window resize
|
|
* @type {Observable<CollapseMenuAction>}
|
|
*/
|
|
@Effect() resize$ = this.actions$
|
|
.pipe(
|
|
ofType(HostWindowActionTypes.RESIZE),
|
|
map(() => new CollapseMenuAction(this.menuID))
|
|
);
|
|
|
|
/**
|
|
* Effect that collapses the public menu on reroute
|
|
* @type {Observable<CollapseMenuAction>}
|
|
*/
|
|
@Effect() routeChange$ = this.actions$
|
|
.pipe(
|
|
ofType(fromRouter.ROUTER_NAVIGATION),
|
|
map(() => new CollapseMenuAction(this.menuID))
|
|
);
|
|
/**
|
|
* Effect that collapses the public menu when the admin sidebar opens
|
|
* @type {Observable<CollapseMenuAction>}
|
|
*/
|
|
@Effect() openAdminSidebar$ = this.actions$
|
|
.pipe(
|
|
ofType(MenuActionTypes.EXPAND_MENU_PREVIEW),
|
|
switchMap((action: ExpandMenuPreviewAction) => {
|
|
return this.menuService.getMenu(action.menuID).pipe(
|
|
first(),
|
|
map((menu: MenuState) => {
|
|
if (menu.id === MenuID.ADMIN) {
|
|
if (!menu.previewCollapsed && menu.collapsed) {
|
|
return new CollapseMenuAction(MenuID.PUBLIC)
|
|
}
|
|
}
|
|
return { type: 'NO_ACTION' };
|
|
}));
|
|
})
|
|
);
|
|
constructor(private actions$: Actions, private menuService: MenuService) {
|
|
|
|
}
|
|
|
|
}
|