clr-angular-static-fix
Version:
1. Install Clarity Icons package through npm:
88 lines (78 loc) • 2.74 kB
text/typescript
/*
* Copyright (c) 2016-2018 VMware, Inc. All Rights Reserved.
* This software is released under MIT license.
* The full license information can be found in LICENSE in the root directory of this project.
*/
import { Component, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs';
import { ResponsiveNavigationService } from './providers/responsive-navigation.service';
import { ResponsiveNavCodes } from './responsive-nav-codes';
export class ClrHeader implements OnDestroy {
private _subscription: Subscription;
public isNavLevel1OnPage: boolean = false;
public isNavLevel2OnPage: boolean = false;
constructor(private responsiveNavService: ResponsiveNavigationService) {
this._subscription = this.responsiveNavService.registeredNavs.subscribe({
next: (navLevelList: number[]) => {
this.initializeNavTriggers(navLevelList);
},
});
}
// getter to access the responsive navigation codes from the template
get responsiveNavCodes(): ResponsiveNavCodes {
return ResponsiveNavCodes;
}
// reset triggers. handles cases when an application has different nav levels on different pages.
resetNavTriggers() {
this.isNavLevel1OnPage = false;
this.isNavLevel2OnPage = false;
}
// decides which triggers to show on the header
initializeNavTriggers(navList: number[]): void {
this.resetNavTriggers();
if (navList.length > 2) {
console.error('More than 2 Nav Levels detected.');
return;
}
navList.forEach(navLevel => {
if (navLevel === ResponsiveNavCodes.NAV_LEVEL_1) {
this.isNavLevel1OnPage = true;
} else if (navLevel === ResponsiveNavCodes.NAV_LEVEL_2) {
this.isNavLevel2OnPage = true;
}
});
}
// closes the nav that is open
closeOpenNav() {
this.responsiveNavService.closeAllNavs();
}
// toggles the nav that is open
toggleNav(navLevel: number) {
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_TOGGLE, navLevel);
}
ngOnDestroy() {
this._subscription.unsubscribe();
}
}