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 120x 120x 120x 120x 120x 120x 120x 120x 120x 120x 120x 120x 120x 120x 120x 32x 88x 120x 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;
  }
}