All files / electron-titlebar si-electron-titlebar.component.ts

100% Statements 15/15
100% Branches 0/0
100% Functions 3/3
100% Lines 12/12

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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101                                              1x       4x             4x             4x             4x               4x         4x         4x                   4x                   4x                   4x   4x    
/**
 * Copyright (c) Siemens 2016 - 2025
 * SPDX-License-Identifier: MIT
 */
import { CdkMenuTrigger } from '@angular/cdk/menu';
import { booleanAttribute, Component, input, output } from '@angular/core';
import { MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';
import {
  addIcons,
  elementLeft4,
  elementOptionsVertical,
  elementRight4,
  SiIconComponent
} from '@siemens/element-ng/icon';
import { MenuItem, SiMenuFactoryComponent } from '@siemens/element-ng/menu';
import { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';
 
@Component({
  selector: 'si-electron-titlebar',
  imports: [CdkMenuTrigger, SiMenuFactoryComponent, SiIconComponent, SiTranslatePipe],
  templateUrl: './si-electron-titlebar.component.html',
  styleUrl: './si-electron-titlebar.component.scss'
})
export class SiElectrontitlebarComponent {
  /**
   * Title of your application
   */
  readonly appTitle = input.required<string>();
 
  /**
   * Defines if the application can go back or not
   *
   * @defaultValue false
   */
  readonly canGoBack = input(false, { transform: booleanAttribute });
 
  /**
   * Defines if the application can go forward or not
   *
   * @defaultValue false
   */
  readonly canGoForward = input(false, { transform: booleanAttribute });
 
  /**
   * Defines if the application is focused or not
   *
   * @defaultValue true
   */
  readonly hasFocus = input(true, { transform: booleanAttribute });
 
  /**
   * List of menu items for the dropdown
   * In this dropdown should the zoom functionality as well as the refresh function be provided
   *
   * @defaultValue []
   */
  readonly menuItems = input<(MenuItemLegacy | MenuItem)[]>([]);
 
  /**
   * Browsing forward function
   */
  readonly forward = output<void>();
 
  /**
   * Browsing back function
   */
  readonly back = output<void>();
 
  /**
   * Aria Label for Forward Button
   *
   * @defaultValue
   * ```
   * t(() => $localize`:@@SI_ELECTRON_TITLEBAR.FORWARD:Forward`)
   * ```
   */
  readonly ariaLabelForward = input(t(() => $localize`:@@SI_ELECTRON_TITLEBAR.FORWARD:Forward`));
 
  /**
   * Aria Label for Back Button
   *
   * @defaultValue
   * ```
   * t(() => $localize`:@@SI_ELECTRON_TITLEBAR.BACK:Back`)
   * ```
   */
  readonly ariaLabelBack = input(t(() => $localize`:@@SI_ELECTRON_TITLEBAR.BACK:Back`));
 
  /**
   * Aria Label for Menu Button
   *
   * @defaultValue
   * ```
   * t(() => $localize`:@@SI_ELECTRON_TITLEBAR.MENU:Menu`)
   * ```
   */
  readonly ariaLabelMenu = input(t(() => $localize`:@@SI_ELECTRON_TITLEBAR.MENU:Menu`));
 
  protected readonly icons = addIcons({ elementLeft4, elementRight4, elementOptionsVertical });
}