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

96.87% Statements 62/64
90% Branches 9/10
100% Functions 4/4
96.87% Lines 62/64

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 651x 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 120x 120x 120x 120x 120x 120x 120x 120x 120x 120x 120x 120x 120x 120x 120x 32x 88x 1x 1x 1x 15x 15x 1x 1x 9x 9x 9x 9x     9x 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.Eager,
  standalone: false,
})
export class AppHeaderButtonComponent implements FocusableElementOwner {
  public readonly type = input.required<AppHeaderButtonType>();
 
  public readonly label = input.required<string>();
 
  public readonly description = input('');
 
  public readonly showBadge = input(false);
 
  public readonly onSelect = output<this>();
 
  public readonly button = viewChild<ElementRef<HTMLButtonElement>>('button');
 
  public readonly selected = input(false);
 
  protected readonly 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;
  }
}