presidential-innovation-fellows/code-gov-web

View on GitHub
src/app/components/mobile-menu/mobile-menu.component.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { Component } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Subscription } from 'rxjs/Subscription';

import { ClientService } from '../../services/client';
import { MobileService } from '../../services/mobile';

@Component({
  selector: 'mobile-menu',
  styles: [
    require('./mobile-menu.style.scss'),
  ],
  template: require('./mobile-menu.template.html'),
})

export class MobileMenuComponent {
  public sideNavSubscription: Subscription;
  public searchQuery: string = '';
  private isOpen: boolean = false;
  private openAccordions: object = {};
  private agencies = [];

  constructor(
    public mobileService: MobileService,
    public router: Router,
    private route: ActivatedRoute,
    private clientService: ClientService,
  ) {
    this.sideNavSubscription = this.mobileService.activeSideNav$.subscribe(isOpen => this.isOpen = isOpen);

    this.openAccordions = {
      '/explore-code/agencies': router.isActive('/explore-code/agencies', false),
      '/policy-guide/docs': router.isActive('/policy-guide/docs', false),
      '/policy-guide/docs/overview': router.isActive('/policy-guide/docs/overview', false),
      '/policy-guide/docs/compliance': router.isActive('/policy-guide/docs/compliance', false),
      '/policy-guide/docs/open-source': router.isActive('/policy-guide/docs/open-source', false),
    };

    this.clientService.getAgencies().subscribe(agencies => {
      this.agencies = agencies;
    });
  }

  ngOnDestroy() {
    this.sideNavSubscription.unsubscribe();
  }

  /**
   * Navigate to the search results page.
   *
   * @return {void}
   */
  search() {
    this.mobileService.hideSideNav();
    this.router.navigateByUrl('/search?q=' + this.searchQuery);
  }

  hideSideNav() {
    this.mobileService.hideSideNav();
  }

  toggleAccordion(name) {
    this.openAccordions[name] = !this.openAccordions[name];
  }
}