All files / lib/app-header/app-header-button app-header-button.component.ts

97.01% Statements 65/67
90.9% Branches 10/11
100% Functions 4/4
97.01% Lines 65/67

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 681x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 96x 96x 96x 96x 96x 96x 96x 96x 96x 96x 96x 96x 96x 96x 96x 32x 64x 96x 1x 1x 15x 15x 1x 1x 1x 1x 1x 1x     1x 1x  
/*******************************************************************************
 * Copyright bei
 * Entwicklungs- und Pflegeverbund für das gemeinsame Fachverfahren gefa
 *
 *******************************************************************************/
import {
  Component,
  ElementRef,
  computed,
  input,
  output,
  viewChild,
} from '@angular/core';
 
import { FocusableElementOwner } from '../../utils/util.types';
 
export type AppHeaderButtonType =
  | 'menu'
  | 'search'
  | 'calendar'
  | 'notifications'
  | 'person'
  | 'help';
 
@Component({
  selector: 'gc-app-header-button',
  templateUrl: './app-header-button.component.html',
  styleUrls: [
    './../../utils/styles/reset-button.css',
    './app-header-button.component.css',
  ],
  standalone: false,
})
export class AppHeaderButtonComponent implements FocusableElementOwner {
  public type = input.required<AppHeaderButtonType>();
 
  public label = input.required<string>();
 
  public description = input('');
 
  public showBadge = input(false);
 
  public readonly onSelect = output<this>();
 
  public button = viewChild<ElementRef<HTMLButtonElement>>('button');
 
  public selected = input(false);
 
  protected computeTooltip = computed(() => {
    return this.description()
      ? '**' + this.label() + '** - ' + this.description()
      : this.label();
  });
 
  public _onClick(): void {
    this.onSelect.emit(this);
  }
 
  public focusChild(): boolean {
    const button = this.button();
    if (button) {
      button.nativeElement.focus();
      return true;
    }
    return false;
  }
}