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

97.1% Statements 67/69
90.9% Branches 10/11
100% Functions 4/4
97.1% Lines 67/69

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 68 69 701x 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 1x 1x 114x 114x 114x 114x 114x 114x 114x 114x 114x 114x 114x 114x 114x 114x 114x 32x 82x 114x 1x 1x 15x 15x 1x 1x 7x 7x 7x 7x     7x 1x  
/*******************************************************************************
 * Copyright bei
 * Entwicklungs- und Pflegeverbund für das gemeinsame Fachverfahren gefa
 *
 *******************************************************************************/
import {
  ChangeDetectionStrategy,
  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',
  ],
  changeDetection: ChangeDetectionStrategy.Default,
  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;
  }
}