import { Component, Input, Output, EventEmitter } from '@angular/core'; import { Location } from '@angular/common'; import { Router, ActivatedRoute } from '@angular/router'; import { ViewportService } from '../../../core/services/viewport.service'; import { MainMenuService } from '../../../core/services/main-menu.service'; /** * Reusable head bar component for Apps. * * Will translate the title automatically. * * Use `PlusButton=true` and `(plusButtonClicked)=myFunction()` if a plus button is needed * * * ## Examples: * * ### Usage of the selector: * * ```html * * * *
* My Component Title *
* * * *
* ``` */ @Component({ selector: 'os-head-bar', templateUrl: './head-bar.component.html', styleUrls: ['./head-bar.component.scss'] }) export class HeadBarComponent { /** * Determine if the the navigation "hamburger" icon should be displayed in mobile mode */ @Input() public nav = true; /** * Custom icon if necessary */ @Input() public buttonIcon = 'add'; /** * Determine edit mode */ @Input() public editMode = false; /** * Determine if there should be the main action button */ @Input() public mainButton = false; /** * Set to true if the component should use location.back instead * of navigating to the parent component */ @Input() public goBack = false; /** * Emit a signal to the parent component if the main button was clicked */ @Output() public mainEvent = new EventEmitter(); /** * Sends a signal if a detail view should be saved */ @Output() public saveEvent = new EventEmitter(); /** * Empty constructor */ public constructor( public vp: ViewportService, private menu: MainMenuService, private router: Router, private route: ActivatedRoute, private location: Location ) {} /** * Emits a signal to the parent if */ public sendMainEvent(): void { this.mainEvent.next(); } /** * Clicking the burger-menu-icon should toggle the menu */ public clickHamburgerMenu(): void { this.menu.toggleMenu(); } /** * Send a save signal and set edit mode */ public save(): void { this.saveEvent.next(true); } /** * Exits the view to return to the previous page or * visit the parent view again. */ public onBackButton(): void { if (this.goBack) { this.location.back(); } else { this.router.navigate(['../'], { relativeTo: this.route }); } } }