{"version":3,"file":"header-lean.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-token.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/app-chooser-section.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/app-chooser-section.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-animations.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-menu-trigger.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-menu-trigger.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-directives.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-menu-item.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-menu.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-menu.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header.module.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport type { SbbHeaderLean } from './header';\n\nexport const SBB_HEADER = new InjectionToken<SbbHeaderLean>('SBB_HEADER');\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  HostListener,\n  inject,\n  Input,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { TypeRef } from '@sbb-esta/angular/core';\n\nimport type { SbbHeaderLean } from './header';\nimport { SBB_HEADER } from './header-token';\n\n@Component({\n  selector: 'sbb-app-chooser-section',\n  templateUrl: './app-chooser-section.html',\n  styleUrls: ['./app-chooser-section.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'sbb-app-chooser',\n  },\n})\nexport class SbbAppChooserSection {\n  private _header = inject<TypeRef<SbbHeaderLean>>(SBB_HEADER);\n\n  @Input() label!: string;\n\n  constructor(...args: unknown[]);\n  constructor() {}\n\n  /** Close the header menu when any a or button child element is clicked. */\n  @HostListener('click', ['$event'])\n  _handleChildClick(event: TypeRef<Event>) {\n    const target = event.target as HTMLElement;\n    if (target && target.tagName && (target.tagName === 'A' || target.tagName === 'BUTTON')) {\n      this._header.opened = false;\n    }\n  }\n}\n","<strong class=\"sbb-app-chooser-label\">{{ label }}</strong> <ng-content></ng-content>\n","import {\n  animate,\n  AnimationTriggerMetadata,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\n\n/** Animations used by the header. */\nexport const sbbHeaderAnimations: {\n  readonly menu: AnimationTriggerMetadata;\n} = {\n  menu: trigger('menu', [\n    state(\n      'open',\n      style({\n        left: 0,\n      }),\n    ),\n    state(\n      'void',\n      style({\n        left: -305,\n        visibility: 'hidden',\n      }),\n    ),\n    transition('open => void, void => open', [animate('0.3s ease-in-out')]),\n  ]),\n};\n","import { FocusMonitor, FocusOrigin, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport {\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  inject,\n  InjectionToken,\n  Input,\n  OnDestroy,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { TypeRef } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\nimport { merge, NEVER, Subject, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { SbbHeaderLean } from './header';\nimport type { SbbHeaderMenu } from './header-menu';\nimport { SBB_HEADER } from './header-token';\n\n/** Injection token that determines the scroll handling while the menu is open. */\nexport const SBB_HEADER_MENU_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n  'sbb-header-menu-scroll-strategy',\n);\n\n/** @docs-private */\nexport function SBB_HEADER_MENU_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const SBB_HEADER_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: SBB_HEADER_MENU_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: SBB_HEADER_MENU_SCROLL_STRATEGY_FACTORY,\n};\n\n/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n\n@Component({\n  selector: 'button[sbbHeaderMenu]',\n  templateUrl: './header-menu-trigger.html',\n  styleUrls: ['./header-menu-trigger.css'],\n  // We use the default change detection here, since it is unclear\n  // whether OnPush works in all use cases.\n  // TODO: Check if OnPush can be enabled.\n  changeDetection: ChangeDetectionStrategy.Default,\n  exportAs: 'sbbHeaderMenu',\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'sbb-header-menu-trigger',\n    type: 'button',\n    'aria-haspopup': 'menu',\n    '[attr.aria-expanded]': 'this.menuOpen || null',\n  },\n  imports: [SbbIconModule],\n})\nexport class SbbHeaderMenuTrigger implements AfterContentInit, OnDestroy {\n  private _overlay = inject(Overlay);\n  private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusMonitor = inject(FocusMonitor);\n  private _router = inject(Router, { optional: true });\n  private _header = inject<TypeRef<SbbHeaderLean>>(SBB_HEADER);\n\n  // Tracking input type is necessary so it's possible to only auto-focus\n  // the first item of the list when the menu is opened via the keyboard\n  _openedBy: 'mouse' | 'touch' | null = null;\n\n  /** References the menu instance that the trigger is associated with. */\n  @Input('sbbHeaderMenu')\n  get menu() {\n    return this._menu;\n  }\n  set menu(menu: SbbHeaderMenu) {\n    if (menu === this._menu) {\n      return;\n    }\n\n    this._menu = menu;\n    this._menuCloseSubscription.unsubscribe();\n\n    if (menu) {\n      this._menuCloseSubscription = menu.closed.asObservable().subscribe(() => {\n        this._destroyMenu();\n      });\n    }\n  }\n  private _menu!: SbbHeaderMenu;\n\n  /**\n   * Whether focus should be restored when the menu is closed.\n   * Note that disabling this option can have accessibility implications\n   * and it's up to you to manage focus, if you decide to turn it off.\n   */\n  @Input('sbbHeaderMenuTriggerRestoreFocus') restoreFocus: boolean = true;\n\n  /** Event emitted when the associated menu is opened. */\n  @Output() readonly menuOpened: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Event emitted when the associated menu is closed. */\n  @Output() readonly menuClosed: EventEmitter<void> = new EventEmitter<void>();\n\n  @ViewChild('panelTarget', { static: true }) _panelTarget!: ElementRef<HTMLElement>;\n\n  /** Whether the menu is open. */\n  get menuOpen(): boolean {\n    return this._menuOpen;\n  }\n\n  private _overlayRef: OverlayRef | null = null;\n  private _menuOpen: boolean = false;\n  private _closingActionsSubscription = Subscription.EMPTY;\n  private _menuCloseSubscription = Subscription.EMPTY;\n  private _destroyed = new Subject<void>();\n  private _scrollStrategy = inject(SBB_HEADER_MENU_SCROLL_STRATEGY);\n\n  /**\n   * Handles touch start events on the trigger.\n   * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.\n   */\n  private _handleTouchStart = () => (this._openedBy = 'touch');\n\n  constructor(...args: unknown[]);\n  constructor() {\n    this._element.nativeElement.addEventListener(\n      'touchstart',\n      this._handleTouchStart,\n      passiveEventListenerOptions,\n    );\n  }\n\n  ngAfterContentInit() {\n    this._checkMenu();\n  }\n\n  ngOnDestroy() {\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = null;\n    }\n\n    this._element.nativeElement.removeEventListener(\n      'touchstart',\n      this._handleTouchStart,\n      passiveEventListenerOptions,\n    );\n\n    this._menuCloseSubscription.unsubscribe();\n    this._closingActionsSubscription.unsubscribe();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /** Toggles the menu between the open and closed states. */\n  toggleMenu(): void {\n    return this._menuOpen ? this.closeMenu() : this.openMenu();\n  }\n\n  /** Opens the menu. */\n  openMenu(): void {\n    if (this._menuOpen) {\n      return;\n    }\n\n    this._checkMenu();\n    if (this._header._menusCollapsed) {\n      this.menu._panelPortalOutlet.attachTemplatePortal(this.menu._panelPortal);\n    } else {\n      const overlayRef = this._createOverlay();\n      const overlayConfig = overlayRef.getConfig();\n\n      this._setPosition(overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy);\n      overlayConfig.hasBackdrop = true;\n      overlayRef.attach(this.menu._panelPortal);\n    }\n\n    this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());\n    this._initMenu();\n  }\n\n  /** Closes the menu. */\n  closeMenu(): void {\n    if (this._menuOpen) {\n      this._panelTarget.nativeElement.style.removeProperty('width');\n      this.menu.open = false;\n    }\n  }\n\n  /**\n   * Focuses the menu trigger.\n   * @param origin Source of the menu trigger's focus.\n   */\n  focus(origin: FocusOrigin = 'program', options?: FocusOptions) {\n    if (this._focusMonitor) {\n      this._focusMonitor.focusVia(this._element, origin, options);\n    } else {\n      this._element.nativeElement.focus(options);\n    }\n  }\n\n  /** Handles mouse presses on the trigger. */\n  @HostListener('mousedown', ['$event'])\n  _handleMousedown(event: TypeRef<MouseEvent>): void {\n    if (!isFakeMousedownFromScreenReader(event)) {\n      // Since right or middle button clicks won't trigger the `click` event,\n      // we shouldn't consider the menu as opened by mouse in those cases.\n      this._openedBy = event.button === 0 ? 'mouse' : null;\n    }\n  }\n\n  /** Handles click events on the trigger. */\n  @HostListener('click')\n  _handleClick(): void {\n    this.toggleMenu();\n  }\n\n  /** Closes the menu and does the necessary cleanup. */\n  private _destroyMenu() {\n    if ((!this._overlayRef && !this.menu._panelPortalOutlet) || !this.menuOpen) {\n      return;\n    }\n\n    this._closingActionsSubscription.unsubscribe();\n    if (this._overlayRef) {\n      this._overlayRef.detach();\n    }\n    this.menu._panelPortalOutlet.detach();\n    this._setIsMenuOpen(false);\n    this._restoreFocus();\n  }\n\n  /**\n   * This method sets the menu state to open and focuses the first item if\n   * the menu was opened via the keyboard.\n   */\n  private _initMenu(): void {\n    this.menu.open = true;\n    this._setIsMenuOpen(true);\n\n    // TODO: Figure out hot to properly handle click and keyboard variants.\n    // this.menu.focusFirstItem(this._openedBy || 'program');\n  }\n\n  /** Restores focus to the element that was focused before the menu was open. */\n  private _restoreFocus() {\n    // We should reset focus if the user is navigating using a keyboard or\n    // if we have a top-level trigger which might cause focus to be lost\n    // when clicking on the backdrop.\n    if (this.restoreFocus) {\n      if (!this._openedBy) {\n        // Note that the focus style will show up both for `program` and\n        // `keyboard` so we don't have to specify which one it is.\n        this.focus();\n      } else {\n        this.focus(this._openedBy);\n      }\n    }\n\n    this._openedBy = null;\n  }\n\n  // set state rather than toggle to support triggers sharing a menu\n  private _setIsMenuOpen(isOpen: boolean): void {\n    this._menuOpen = isOpen;\n    this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\n  }\n\n  /**\n   * This method checks that a valid instance of HeaderMenu has been passed into\n   * sbbHeaderMenu. If not, an exception is thrown.\n   */\n  private _checkMenu() {\n    if (!this.menu) {\n      throw Error(`sbbHeaderMenu: must pass in an sbb-header-menu instance.\n\n      Example:\n        <sbb-header-menu #menu=\"sbbHeaderMenu\"></sbb-header-menu>\n        <button [sbbHeaderMenu]=\"menu\"></button>`);\n    }\n  }\n\n  /**\n   * This method creates the overlay from the provided menu's template and saves its\n   * OverlayRef so that it can be attached to the DOM when openMenu is called.\n   */\n  private _createOverlay(): OverlayRef {\n    if (!this._overlayRef) {\n      const config = this._getOverlayConfig();\n      this._overlayRef = this._overlay.create(config);\n\n      // Consume the `keydownEvents` in order to prevent them from going to another overlay.\n      // Ideally we'd also have our keyboard event logic in here, however doing so will\n      // break anybody that may have implemented the `HeaderMenuPanel` themselves.\n      this._overlayRef.keydownEvents().subscribe();\n    }\n\n    return this._overlayRef;\n  }\n\n  /**\n   * This method builds the configuration object needed to create the overlay, the OverlayState.\n   * @returns OverlayConfig\n   */\n  private _getOverlayConfig(): OverlayConfig {\n    return new OverlayConfig({\n      positionStrategy: this._overlay\n        .position()\n        .flexibleConnectedTo(this._panelTarget)\n        .withFlexibleDimensions(false)\n        .withGrowAfterOpen()\n        .withLockedPosition()\n        .withTransformOriginOn('.sbb-header-menu-panel'),\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      scrollStrategy: this._scrollStrategy(),\n      minWidth: this._getHostWidth(),\n    });\n  }\n\n  /**\n   * Sets the appropriate positions on a position strategy\n   * so the overlay connects with the trigger correctly.\n   * @param positionStrategy Strategy whose position to update.\n   */\n  private _setPosition(positionStrategy: FlexibleConnectedPositionStrategy) {\n    positionStrategy.withPositions([\n      { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n    ]);\n  }\n\n  /** Returns the width of the input element, so the panel width can match it. */\n  protected _getHostWidth(): number {\n    return this._element.nativeElement.getBoundingClientRect().width;\n  }\n\n  /** Returns a stream that emits whenever an action that should close the menu occurs. */\n  private _menuClosingActions() {\n    const backdrop = this._overlayRef ? this._overlayRef.backdropClick() : NEVER;\n    const detachments = this._overlayRef ? this._overlayRef.detachments() : NEVER;\n    const dimensionChange = this._header._headerMenusCollapsed;\n    const routeChange = this._router\n      ? this._router.events.pipe(filter((e) => e instanceof NavigationStart))\n      : NEVER;\n    const itemClicks = this.menu._items.toArray().map((i) => i.click);\n    return merge(backdrop, detachments, dimensionChange, routeChange, ...itemClicks);\n  }\n}\n","<span class=\"sbb-header-menu-trigger-content\" #panelTarget>\n  <ng-content></ng-content>\n  <sbb-icon class=\"sbb-header-menu-trigger-indicator\" svgIcon=\"chevron-small-down-small\"></sbb-icon>\n</span>\n","// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/// <reference types=\"@angular/localize/init\" />\n\nimport { AnimationEvent } from '@angular/animations';\nimport {\n  ConfigurableFocusTrapFactory,\n  FocusMonitor,\n  FocusOrigin,\n  FocusTrap,\n} from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ENTER, ESCAPE, hasModifierKey, SPACE } from '@angular/cdk/keycodes';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { CdkPortal, CdkPortalOutlet } from '@angular/cdk/portal';\nimport { AsyncPipe, DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { Breakpoints } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\nimport { BehaviorSubject, fromEvent, merge, NEVER, Observable, Subject } from 'rxjs';\nimport {\n  distinctUntilChanged,\n  filter,\n  map,\n  shareReplay,\n  switchMap,\n  take,\n  takeUntil,\n} from 'rxjs/operators';\n\nimport { SbbAppChooserSection } from './app-chooser-section';\nimport { sbbHeaderAnimations } from './header-animations';\nimport { SbbHeaderMenuTrigger } from './header-menu-trigger';\nimport { SBB_HEADER } from './header-token';\n\n/** Result of the toggle promise that indicates the state of the header menu. */\nexport type SbbHeaderMenuToggleResult = 'open' | 'close';\n\nexport type SbbHeaderCollapseBreakpoint =\n  | 'mobile'\n  | 'tablet'\n  | 'desktop'\n  | 'desktopLarge'\n  | 'desktop2k'\n  | 'desktop4k'\n  | 'desktop5k';\n\nconst breakpointMapping = {\n  mobile: [Breakpoints.Mobile],\n  tablet: [Breakpoints.Mobile, Breakpoints.Tablet],\n  desktop: [Breakpoints.Mobile, Breakpoints.Tablet, Breakpoints.Desktop],\n  desktopLarge: [\n    Breakpoints.Mobile,\n    Breakpoints.Tablet,\n    Breakpoints.Desktop,\n    Breakpoints.DesktopLarge,\n  ],\n  desktop2k: [\n    Breakpoints.Mobile,\n    Breakpoints.Tablet,\n    Breakpoints.Desktop,\n    Breakpoints.DesktopLarge,\n    Breakpoints.Desktop2k,\n  ],\n  desktop4k: [\n    Breakpoints.Mobile,\n    Breakpoints.Tablet,\n    Breakpoints.Desktop,\n    Breakpoints.DesktopLarge,\n    Breakpoints.Desktop2k,\n    Breakpoints.Desktop4k,\n  ],\n  desktop5k: [\n    Breakpoints.Mobile,\n    Breakpoints.Tablet,\n    Breakpoints.Desktop,\n    Breakpoints.DesktopLarge,\n    Breakpoints.Desktop2k,\n    Breakpoints.Desktop4k,\n    Breakpoints.Desktop5k,\n  ],\n};\n\n@Component({\n  selector: 'sbb-header-lean',\n  templateUrl: './header.html',\n  styleUrls: ['./header.css'],\n  exportAs: 'sbbHeader',\n  animations: [sbbHeaderAnimations.menu],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [{ provide: SBB_HEADER, useExisting: SbbHeaderLean }],\n  host: {\n    class: 'sbb-header-lean',\n    '[class.sbb-header-lean-opened]': 'opened',\n    '[class.sbb-header-lean-app-chooser-available]': '_appChooserSections.length',\n  },\n  imports: [SbbIconModule, CdkPortalOutlet, CdkPortal, AsyncPipe],\n})\nexport class SbbHeaderLean implements OnChanges, AfterViewInit, OnDestroy {\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusTrapFactory = inject(ConfigurableFocusTrapFactory);\n  private _focusMonitor = inject(FocusMonitor);\n  private _ngZone = inject(NgZone);\n  private _breakpointObserver = inject(BreakpointObserver);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _router = inject(Router, { optional: true });\n  private _doc = inject(DOCUMENT, { optional: true });\n\n  _labelOpenMenu: string = $localize`:Button label to open the sidebar of the header@@sbbHeaderOpenMenu:Open Menu`;\n\n  _labelCloseMenu: string = $localize`:Button label to close the sidebar of the header@@sbbHeaderCloseMenu:Close Menu`;\n\n  /** Main title shown in the header. */\n  @Input() label?: string;\n\n  /** Subtitle shown below the main title, if present. */\n  @Input() subtitle?: string;\n\n  /**\n   * The breakpoint on which to collapse the header menus into the burger menu.\n   * Matching the given breakpoint or anything below, will collapse the menus.\n   * (e.g. 'tablet' will collapse the menu, if 'tablet' or 'mobile' is matched)\n   * See breakpoint documentation for specific values.\n   */\n  @Input() collapseBreakpoint: SbbHeaderCollapseBreakpoint = 'tablet';\n\n  /** Whether the header menu is open. */\n  get opened(): boolean {\n    return this._opened;\n  }\n  set opened(value: BooleanInput) {\n    this.toggleMenu(coerceBooleanProperty(value));\n  }\n  private _opened = false;\n\n  /** Emits whenever the header menu has started animating. */\n  _animationStarted: Subject<AnimationEvent> = new Subject<AnimationEvent>();\n\n  /** Emits whenever the header menu is done animating. */\n  _animationEnd: Subject<AnimationEvent> = new Subject<AnimationEvent>();\n\n  /** Current state of the menu animation. */\n  _animationState: 'open' | 'void' = 'void';\n\n  /** Observable of whether the menus are collapsed into the burger menu. */\n  _headerMenusCollapsed: Observable<boolean>;\n\n  /** Whether the menus are collapsed into the burger menu. */\n  _menusCollapsed: boolean = false;\n\n  /** Event emitted when the header menu open state is changed. */\n  @Output() readonly openedChange: EventEmitter<boolean> =\n    // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n    new EventEmitter<boolean>(/* isAsync */ true);\n\n  /** Event emitted when the header menu has been opened. */\n  @Output('opened')\n  get _openedStream(): Observable<void> {\n    return this.openedChange.pipe(\n      filter((o) => o),\n      map(() => {}),\n    );\n  }\n\n  /** Event emitted when the header menu has started opening. */\n  @Output()\n  get openedStart(): Observable<void> {\n    return this._animationStarted.pipe(\n      filter((e) => e.fromState !== e.toState && e.toState.indexOf('open') === 0),\n      map(() => {}),\n    );\n  }\n\n  /** Event emitted when the header menu has been closed. */\n  @Output('closed')\n  get _closedStream(): Observable<void> {\n    return this.openedChange.pipe(\n      filter((o) => !o),\n      map(() => {}),\n    );\n  }\n\n  /** Event emitted when the header menu has started closing. */\n  @Output()\n  get closedStart(): Observable<void> {\n    return this._animationStarted.pipe(\n      filter((e) => e.fromState !== e.toState && e.toState === 'void'),\n      map(() => {}),\n    );\n  }\n\n  /** @docs-private */\n  @ViewChild('menu', { static: true }) _menuElement!: ElementRef<HTMLElement>;\n\n  /**\n   * The provided app chooser sections.\n   * @docs-private\n   */\n  @ContentChildren(SbbAppChooserSection) _appChooserSections!: QueryList<SbbAppChooserSection>;\n\n  /**\n   * Menu triggers used within the header.\n   * @docs-private\n   */\n  @ContentChildren(SbbHeaderMenuTrigger) _menuTriggers!: QueryList<SbbHeaderMenuTrigger>;\n\n  /** How the sidenav was opened (keypress, mouse click etc.) */\n  private _openedVia!: FocusOrigin | null;\n\n  /** Emits when the component is destroyed. */\n  private readonly _destroyed = new Subject<void>();\n\n  private readonly _collapseBreakpoint = new BehaviorSubject<SbbHeaderCollapseBreakpoint>(\n    this.collapseBreakpoint,\n  );\n\n  private _focusTrap!: FocusTrap;\n  private _elementFocusedBeforeMenuWasOpened: HTMLElement | null = null;\n\n  constructor(...args: unknown[]);\n  constructor() {\n    this.openedChange.subscribe((opened: boolean) => {\n      if (opened) {\n        if (this._doc) {\n          this._elementFocusedBeforeMenuWasOpened = this._doc.activeElement as HTMLElement;\n        }\n\n        if (this.opened && this._focusTrap) {\n          this._trapFocus();\n        }\n        if (this._doc && this.opened) {\n          /**\n           * Listen to `keydown` events outside the zone so that change detection is not run every\n           * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed.\n           */\n          this._ngZone.runOutsideAngular(() => {\n            merge(\n              fromEvent<KeyboardEvent>(this._menuElement.nativeElement, 'keydown').pipe(\n                filter((event) => event.keyCode === ESCAPE && !hasModifierKey(event)),\n              ),\n              this._router\n                ? this._router.events.pipe(filter((e) => e instanceof NavigationStart))\n                : NEVER,\n            )\n              .pipe(takeUntil(this.openedChange))\n              .subscribe(() => this._ngZone.run(() => this.closeMenu()));\n          });\n        }\n      } else {\n        this._restoreFocus();\n      }\n    });\n\n    // We need a Subject with distinctUntilChanged, because the `done` event\n    // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n    this._animationEnd\n      .pipe(\n        distinctUntilChanged((x, y) => {\n          return x.fromState === y.fromState && x.toState === y.toState;\n        }),\n      )\n      .subscribe((event: AnimationEvent) => {\n        const { fromState, toState } = event;\n\n        if (\n          (toState.indexOf('open') === 0 && fromState === 'void') ||\n          (toState === 'void' && fromState.indexOf('open') === 0)\n        ) {\n          this.openedChange.emit(this._opened);\n        }\n      });\n\n    // Programmatically track the collapsed state of the header menus.\n    // This is required in order to attach/detach the menus to the main\n    // or side navigation.\n    this._headerMenusCollapsed = this._collapseBreakpoint.pipe(\n      switchMap((breakpoint) => this._breakpointObserver.observe(breakpointMapping[breakpoint])),\n      map((r) => r.matches),\n      distinctUntilChanged(),\n      shareReplay(),\n      takeUntil(this._destroyed),\n    );\n\n    // Close menus on collapsing/uncollapsing the header menus.\n    merge(this.closedStart, this._headerMenusCollapsed).subscribe(() => {\n      this._menuTriggers?.forEach((t) => t.closeMenu());\n    });\n\n    // Change property according to collapsed state.\n    this._headerMenusCollapsed.subscribe((isCollapsed) => {\n      Promise.resolve().then(() => (this._menusCollapsed = isCollapsed));\n    });\n    // Add or remove the sbb-header-lean-menus-collapsed css class, depending on\n    // collapsed state.\n    this._ngZone.runOutsideAngular(() => {\n      this._headerMenusCollapsed.subscribe((isCollapsed) => {\n        if (isCollapsed) {\n          this._elementRef.nativeElement.classList.add('sbb-header-lean-menus-collapsed');\n        } else {\n          this._elementRef.nativeElement.classList.remove('sbb-header-lean-menus-collapsed');\n        }\n      });\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (\n      changes['collapseBreakpoint'] &&\n      changes['collapseBreakpoint'].previousValue !== changes['collapseBreakpoint'].currentValue\n    ) {\n      this._collapseBreakpoint.next(this.collapseBreakpoint);\n    }\n  }\n\n  ngAfterViewInit() {\n    this._focusTrap = this._focusTrapFactory.create(this._menuElement.nativeElement);\n    this._updateFocusTrapState();\n  }\n\n  ngOnDestroy() {\n    if (this._focusTrap) {\n      this._focusTrap.destroy();\n    }\n\n    this._animationStarted.complete();\n    this._animationEnd.complete();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /** @docs-private */\n  _openOnKeydownTrigger(event: KeyboardEvent) {\n    if (event.keyCode === SPACE || event.keyCode === ENTER) {\n      this.openMenu('keyboard');\n    }\n  }\n\n  /**\n   * Open the header menu.\n   * @param openedVia Whether the header menu was opened by a key press, mouse click or programmatically.\n   * Used for focus management after the sidenav is closed.\n   */\n  openMenu(openedVia?: FocusOrigin): Promise<SbbHeaderMenuToggleResult> {\n    return this.toggleMenu(true, openedVia);\n  }\n\n  /** @docs-private */\n  _closeOnKeydownTrigger(event: KeyboardEvent) {\n    if (event.keyCode === SPACE || event.keyCode === ENTER) {\n      this.closeMenu();\n    }\n  }\n\n  /** @docs-private */\n  _onBackdropClicked() {\n    this.closeMenu();\n  }\n\n  /** Close the header menu. */\n  closeMenu(): Promise<SbbHeaderMenuToggleResult> {\n    return this.toggleMenu(false);\n  }\n\n  /**\n   * Toggle the header menu.\n   * @param isOpen Whether the header menu should be open.\n   * @param openedVia Whether the header menu was opened by a key press, mouse click or programmatically.\n   * Used for focus management after the sidenav is closed.\n   */\n  toggleMenu(\n    isOpen: boolean = !this.opened,\n    openedVia: FocusOrigin = 'program',\n  ): Promise<SbbHeaderMenuToggleResult> {\n    this._opened = isOpen;\n\n    if (isOpen) {\n      this._animationState = 'open';\n      this._openedVia = openedVia;\n    } else {\n      this._animationState = 'void';\n      this._changeDetectorRef.markForCheck();\n      this._restoreFocus();\n    }\n\n    this._updateFocusTrapState();\n\n    return new Promise<SbbHeaderMenuToggleResult>((resolve) => {\n      this.openedChange.pipe(take(1)).subscribe((open) => resolve(open ? 'open' : 'close'));\n    });\n  }\n\n  /** @docs-private */\n  _animationStartListener(event: AnimationEvent) {\n    this._animationStarted.next(event);\n  }\n\n  /** @docs-private */\n  _animationDoneListener(event: AnimationEvent) {\n    this._animationEnd.next(event);\n  }\n\n  /** Traps focus inside the header menu. */\n  private _trapFocus() {\n    this._focusTrap.focusInitialElementWhenReady().then((hasMovedFocus) => {\n      // If there were no focusable elements, focus the sidenav itself so the keyboard navigation\n      // still works. We need to check that `focus` is a function due to Universal.\n      if (!hasMovedFocus && typeof this._menuElement.nativeElement.focus === 'function') {\n        this._menuElement.nativeElement.focus();\n      }\n    });\n  }\n\n  /**\n   * If focus is currently inside the header menu, restores it to where it was before\n   * the header menu opened.\n   */\n  private _restoreFocus() {\n    const activeEl = this._doc && this._doc.activeElement;\n\n    if (activeEl && this._menuElement.nativeElement.contains(activeEl)) {\n      if (this._elementFocusedBeforeMenuWasOpened instanceof HTMLElement) {\n        this._focusMonitor.focusVia(this._elementFocusedBeforeMenuWasOpened, this._openedVia);\n      } else {\n        this._menuElement.nativeElement.blur();\n      }\n    }\n\n    this._elementFocusedBeforeMenuWasOpened = null;\n    this._openedVia = null;\n  }\n\n  /** Updates the enabled state of the focus trap. */\n  private _updateFocusTrapState() {\n    if (this._focusTrap) {\n      this._focusTrap.enabled = this.opened;\n    }\n  }\n}\n","<ng-content select=\"sbb-header-environment\"></ng-content>\n\n<button\n  type=\"button\"\n  class=\"sbb-header-lean-open-menu sbb-button-reset-frameless sbb-icon-fit\"\n  [class.sbb-header-lean-app-chooser-available]=\"_appChooserSections.length\"\n  (click)=\"openMenu('mouse')\"\n  (keydown)=\"_openOnKeydownTrigger($event)\"\n  [attr.aria-label]=\"_labelOpenMenu\"\n>\n  <sbb-icon\n    [svgIcon]=\"_appChooserSections.length ? 'nine-squares-small' : 'hamburger-menu-small'\"\n  ></sbb-icon>\n</button>\n\n<div class=\"sbb-header-lean-titlebox\">\n  <span class=\"sbb-header-lean-label\">{{ label }}</span>\n  @if (subtitle) {\n    <span class=\"sbb-header-lean-subtitle\">{{ subtitle }}</span>\n  }\n</div>\n\n<nav class=\"sbb-header-lean-main-menu\">\n  @if (!(_headerMenusCollapsed | async)) {\n    <ng-template [cdkPortalOutlet]=\"menuActions\"></ng-template>\n  }\n</nav>\n\n<div class=\"sbb-header-lean-container-end\">\n  <div class=\"sbb-header-lean-additional-content\">\n    <ng-content\n      select=\".additional-header-content,sbb-header-icon-actions,.sbb-header-icon-actions\"\n    ></ng-content>\n  </div>\n  <div class=\"sbb-header-lean-usermenu\">\n    <ng-content select=\"sbb-usermenu,.sbb-usermenu\"></ng-content>\n  </div>\n\n  <!-- If an icon is provided, use that, otherwise use the sbb logo -->\n  <div #iconContent class=\"sbb-header-lean-logo\" [hidden]=\"!iconContent.childElementCount\">\n    <ng-content select=\"[brand],.brand\"></ng-content>\n  </div>\n  @if (!iconContent.childElementCount) {\n    <div class=\"sbb-header-lean-logo\">\n      <svg class=\"sbb-header-lean-sbb-logo\" viewBox=\"0 0 80 21\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M0 0h59.233v20.603H0V0z\" fill=\"#EC0000\"></path>\n        <path\n          d=\"M35.186 17.02h3.75l-5.047-5.163h6.265v5.163h2.96v-5.163h6.267l-5.05 5.163h3.752l6.427-6.708-6.426-6.73h-3.752l5.05 5.185h-6.266V3.583h-2.96v5.184h-6.267l5.047-5.184h-3.75l-6.43 6.73 6.43 6.707\"\n          fill=\"#FFF\"\n        ></path>\n      </svg>\n    </div>\n  }\n</div>\n\n<div class=\"sbb-header-lean-side-menu-backdrop\" (click)=\"_onBackdropClicked()\"></div>\n<div\n  [@menu]=\"_animationState\"\n  (@menu.start)=\"_animationStartListener($event)\"\n  (@menu.done)=\"_animationDoneListener($event)\"\n  class=\"sbb-header-lean-side-menu-container sbb-scrollbar\"\n  #menu\n>\n  <div class=\"sbb-header-lean-side-menu-title-section\">\n    <button\n      type=\"button\"\n      class=\"sbb-header-lean-close-menu sbb-button-reset-frameless\"\n      (click)=\"closeMenu()\"\n      (keydown)=\"_closeOnKeydownTrigger($event)\"\n      [attr.aria-label]=\"_labelCloseMenu\"\n    >\n      <sbb-icon svgIcon=\"cross-small\"></sbb-icon>\n    </button>\n\n    <div class=\"sbb-header-lean-titlebox\">\n      <span class=\"sbb-header-lean-label\">{{ label }}</span>\n      @if (subtitle) {\n        <span class=\"sbb-header-lean-subtitle\">{{ subtitle }}</span>\n      }\n    </div>\n  </div>\n\n  <nav class=\"sbb-header-lean-side-menu\">\n    @if (_headerMenusCollapsed | async) {\n      <ng-template [cdkPortalOutlet]=\"menuActions\"></ng-template>\n    }\n  </nav>\n\n  <ng-content select=\"sbb-app-chooser-section\"></ng-content>\n</div>\n<ng-content select=\"sbb-header-menu\"></ng-content>\n\n<!--\nThe outlet for links and buttons inside sbb-header-lean, which will be placed in the header bar or\nthe sidebar depending on state.\n-->\n<ng-template cdkPortal #menuActions=\"cdkPortal\">\n  <ng-content select=\"a,button\"></ng-content>\n</ng-template>\n","import { ContentObserver } from '@angular/cdk/observers';\nimport { Directive, ElementRef, inject, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\n/**\n * Optional component to indicate the environment of the app (e.g. dev, test, int, ...).\n * The component observes and extracts the text content of itself and appends\n * it (normalized) as a css class.\n *\n * e.g.:\n * <sbb-header-environment>dev</sbb-header-environment>\n * has the css class `sbb-header-environment-dev`\n */\n@Directive({\n  selector: 'sbb-header-environment',\n  exportAs: 'sbbHeaderEnvironment',\n  host: {\n    class: 'sbb-header-environment',\n  },\n})\nexport class SbbHeaderEnvironment implements OnDestroy {\n  private _destroyed = new Subject<void>();\n  private _previousClass: string | null = null;\n\n  constructor(...args: unknown[]);\n  constructor() {\n    const contentObserver = inject(ContentObserver);\n    const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    contentObserver\n      .observe(elementRef)\n      .pipe(\n        map(() => {\n          let text = elementRef.nativeElement.textContent;\n          if (text) {\n            text = text\n              .replace(/[^a-zA-Z0-9-_]+/g, '-')\n              .replace(/(^-+|-+$)/g, '')\n              .toLowerCase();\n            return `sbb-header-environment-${text}`;\n          }\n\n          return null;\n        }),\n        takeUntil(this._destroyed),\n      )\n      .subscribe((selector) => {\n        const classes = elementRef.nativeElement.classList;\n        if (this._previousClass) {\n          classes.remove(this._previousClass);\n        }\n        if (selector) {\n          classes.add(selector);\n        }\n        this._previousClass = selector;\n      });\n  }\n\n  ngOnDestroy(): void {\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n}\n\n/**\n * Optional component to display icon buttons next to the `<sbb-usermenu>` or the `[brand]`.\n *\n * e.g.:\n * ```\n * <sbb-header-icon-actions>\n *   <button sbb-frameless-button><sbb-icon svgIcon=\"magnifying-glass-small\"></sbb-icon></button>\n *   <button sbb-frameless-button><sbb-icon svgIcon=\"bell-small\"></sbb-icon></button>\n * </sbb-header-icon-actions>\n * ```\n */\n@Directive({\n  selector: 'sbb-header-icon-actions',\n  exportAs: 'sbbHeaderIconActions',\n  host: {\n    class: 'sbb-header-icon-actions',\n  },\n})\nexport class SbbHeaderIconActions {}\n","import { FocusableOption, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  booleanAttribute,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  inject,\n  Input,\n  OnDestroy,\n  Output,\n} from '@angular/core';\nimport { TypeRef } from '@sbb-esta/angular/core';\n\n@Directive({\n  selector: '[sbbHeaderMenuItem]',\n  host: {\n    '[attr.role]': 'this.role',\n    class: 'sbb-header-menu-item sbb-menu-item',\n  },\n})\nexport class SbbHeaderMenuItem implements FocusableOption, OnDestroy {\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusMonitor = inject(FocusMonitor);\n\n  /** ARIA role for the menu item. */\n  @Input() role: 'menuitem' | 'menuitemradio' | 'menuitemcheckbox' = 'menuitem';\n\n  /** Whether the menu item is disabled. */\n  @Input({ transform: booleanAttribute }) disabled: boolean = false;\n\n  private _document = inject(DOCUMENT);\n\n  /** Whether the menu item is highlighted. */\n  _highlighted: boolean = false;\n\n  /** Whether the menu item acts as a trigger for a sub-menu. */\n  _triggersSubmenu: boolean = false;\n\n  /** Emits whenever a this item is clicked when enabled. */\n  @Output() click: EventEmitter<Event> = new EventEmitter<Event>();\n\n  constructor(...args: unknown[]);\n  constructor() {\n    if (this._focusMonitor) {\n      // Start monitoring the element so it gets the appropriate focused classes. We want\n      // to show the focus style for menu items only when the focus was not caused by a\n      // mouse or touch interaction.\n      this._focusMonitor.monitor(this._elementRef, false);\n    }\n  }\n\n  /** Focuses the menu item. */\n  focus(origin: FocusOrigin = 'program', options?: FocusOptions): void {\n    if (this._focusMonitor) {\n      this._focusMonitor.focusVia(this._getHostElement(), origin, options);\n    } else {\n      this._getHostElement().focus(options);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this._focusMonitor) {\n      this._focusMonitor.stopMonitoring(this._elementRef);\n    }\n  }\n\n  /** Used to set the `tabindex`. */\n  _getTabIndex(): string {\n    return this.disabled ? '-1' : '0';\n  }\n\n  /** Returns the host DOM element. */\n  _getHostElement(): HTMLElement {\n    return this._elementRef.nativeElement;\n  }\n\n  /** Prevents the default element actions if it is disabled. */\n  @HostListener('click', ['$event'])\n  _checkDisabled(event: TypeRef<Event>): void {\n    if (this.disabled) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n  /** Gets the label to be used when determining whether the option should be focused. */\n  getLabel(): string {\n    const element: HTMLElement = this._elementRef.nativeElement;\n    const textNodeType = this._document ? this._document.TEXT_NODE : 3;\n    let output = '';\n\n    if (element.childNodes) {\n      const length = element.childNodes.length;\n\n      // Go through all the top-level text nodes and extract their text.\n      // We skip anything that's not a text node to prevent the text from\n      // being thrown off by something like an icon.\n      for (let i = 0; i < length; i++) {\n        if (element.childNodes[i].nodeType === textNodeType) {\n          output += element.childNodes[i].textContent;\n        }\n      }\n    }\n\n    return output.trim();\n  }\n}\n","// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/// <reference types=\"@angular/localize/init\" />\n\nimport { AnimationEvent } from '@angular/animations';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { FocusKeyManager, FocusOrigin, _IdGenerator } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, END, ESCAPE, hasModifierKey, HOME, UP_ARROW } from '@angular/cdk/keycodes';\nimport { CdkPortal, CdkPortalOutlet } from '@angular/cdk/portal';\nimport { NgClass } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  inject,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { TypeRef } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\nimport { Observable, Subject } from 'rxjs';\nimport { map, startWith, takeUntil } from 'rxjs/operators';\n\nimport type { SbbHeaderLean } from './header';\nimport { SbbHeaderMenuItem } from './header-menu-item';\nimport { SBB_HEADER } from './header-token';\n\n@Component({\n  selector: 'sbb-header-menu',\n  templateUrl: './header-menu.html',\n  styleUrls: ['./header-menu.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'sbbHeaderMenu',\n  animations: [\n    trigger('open', [\n      state('closed', style({ transform: 'translateX(-100vw)' })),\n      state('open-menu', style({ transform: 'translateX(0)' })),\n      transition('closed <=> open-menu', animate('0.3s cubic-bezier(0.785, 0.135, 0.15, 0.86)')),\n    ]),\n  ],\n  host: {\n    class: 'sbb-header-menu',\n    '[id]': 'this.id',\n    '[@open]': 'this._animationState',\n    '[class.sbb-header-menus-collapsed]': 'this._header._menusCollapsed',\n  },\n  imports: [SbbIconModule, CdkPortal, CdkPortalOutlet, NgClass],\n})\nexport class SbbHeaderMenu implements AfterContentInit, OnDestroy {\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  _header: SbbHeaderLean = inject<TypeRef<SbbHeaderLean>>(SBB_HEADER);\n  _backButton: string = $localize`:Go back to the app chooser navigation@@sbbHeaderMenuBack:Back`;\n\n  /** Unique ID to be used by menu trigger's \"aria-owns\" property. */\n  id: string = inject(_IdGenerator).getId('sbb-header-menu-');\n\n  /** Event emitted when the menu is closed. */\n  @Output() readonly closed: EventEmitter<void | 'click' | 'keydown' | 'tab'> = new EventEmitter<\n    void | 'click' | 'keydown' | 'tab'\n  >();\n\n  /** Reference to the menu items. */\n  @ContentChildren(SbbHeaderMenuItem) _items!: QueryList<SbbHeaderMenuItem>;\n\n  /** @docs-private */\n  @ViewChild(CdkPortal) _panelPortal!: CdkPortal;\n  /** @docs-private */\n  @ViewChild(CdkPortalOutlet, { static: true }) _panelPortalOutlet!: CdkPortalOutlet;\n\n  /** Whether the menu panel is open. */\n  get open(): boolean {\n    return this._open && !!this.showPanel;\n  }\n  set open(value: boolean) {\n    if (value !== this._open) {\n      this._open = value;\n      if (!value) {\n        this._animationState = 'closed';\n      } else if (!this._header._menusCollapsed) {\n        this._animationState = 'open-panel';\n      } else {\n        this._animationState = 'open-menu';\n      }\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n  private _open = false;\n\n  /**\n   * This method takes classes set on the host sbb-header-menu element and applies them on the\n   * menu template that displays in the overlay container.  Otherwise, it's difficult\n   * to style the containing menu from outside the component.\n   * @param classes list of class names\n   */\n  @Input('class')\n  set panelClass(classes: string) {\n    const previousPanelClass = this._previousPanelClass;\n\n    if (previousPanelClass && previousPanelClass.length) {\n      previousPanelClass.split(' ').forEach((className: string) => {\n        this._classList[className] = false;\n      });\n    }\n\n    this._previousPanelClass = classes;\n\n    if (classes && classes.length) {\n      classes.split(' ').forEach((className: string) => {\n        this._classList[className] = true;\n      });\n\n      this._elementRef.nativeElement.className = '';\n    }\n  }\n  private _previousPanelClass!: string;\n\n  /** Whether the autocomplete panel should be visible, depending on option length. */\n  showPanel: boolean = false;\n  /** Manages active item in item list based on key events. */\n  _keyManager!: FocusKeyManager<SbbHeaderMenuItem>;\n  /** Class list for the panel. */\n  _classList: { [key: string]: boolean } = {};\n  /** @docs-private */\n  _panel: CdkPortal | null = null;\n  /** @docs-private */\n  _animationState: 'closed' | 'open-panel' | 'open-menu' = 'closed';\n\n  /** Subscription to tab events on the menu panel */\n  private _destroyed = new Subject<void>();\n\n  constructor(...args: unknown[]);\n  constructor() {\n    this.closed.pipe(takeUntil(this._destroyed)).subscribe(() => {\n      if (this._animationState !== 'closed') {\n        this._animationState = 'closed';\n      }\n    });\n  }\n\n  ngAfterContentInit() {\n    (this._items.changes as Observable<SbbHeaderMenuItem[]>)\n      .pipe(\n        startWith(this._items.toArray()),\n        map((i) => !!i.length),\n        takeUntil(this._destroyed),\n      )\n      .subscribe((s) => (this.showPanel = s));\n    this._keyManager = new FocusKeyManager(this._items).withWrap().withTypeAhead();\n    this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));\n  }\n\n  ngOnDestroy() {\n    this._keyManager?.destroy();\n    this.closed.complete();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /**\n   * Focus the first item in the menu.\n   * @param origin Action from which the focus originated. Used to set the correct styling.\n   */\n  focusFirstItem(origin: FocusOrigin = 'program'): void {\n    const manager = this._keyManager;\n    manager.setFocusOrigin(origin).setFirstItemActive();\n\n    // If there's no active item at this point, it means that all the items are disabled.\n    // Move focus to the menu panel so keyboard events like Escape still work. Also this will\n    // give _some_ feedback to screen readers.\n    if (!manager.activeItem && this._items.length) {\n      let element = this._items.first._getHostElement().parentElement;\n\n      // Because the `sbb-header-menu` is at the DOM insertion point, not inside the overlay, we don't\n      // have a nice way of getting a hold of the menu panel. We can't use a `ViewChild` either\n      // because the panel is inside an `ng-template`. We work around it by starting from one of\n      // the items and walking up the DOM.\n      while (element) {\n        if (element.getAttribute('role') === 'menu') {\n          element.focus();\n          break;\n        } else {\n          element = element.parentElement;\n        }\n      }\n    }\n  }\n\n  /**\n   * Resets the active item in the menu. This is used when the menu is opened, allowing\n   * the user to start from the first option when pressing the down arrow.\n   */\n  resetActiveItem() {\n    this._keyManager.setActiveItem(-1);\n  }\n\n  @HostListener('@open.done', ['$event'])\n  _onAnimationDone(event: AnimationEvent) {\n    if (event.toState === 'closed' && event.fromState !== 'void') {\n      this.closed.emit();\n    }\n  }\n\n  @HostListener('keydown', ['$event'])\n  _handleMenuKeydown(event: TypeRef<KeyboardEvent>) {\n    if (event.keyCode === ESCAPE) {\n      this.open = false;\n    }\n  }\n\n  /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n  _handlePanelKeydown(event: KeyboardEvent) {\n    const keyCode = event.keyCode;\n    const manager = this._keyManager;\n\n    switch (keyCode) {\n      case ESCAPE:\n        if (!hasModifierKey(event)) {\n          event.preventDefault();\n          this.closed.emit('keydown');\n        }\n        break;\n      case HOME:\n      case END:\n        if (!hasModifierKey(event)) {\n          keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n          event.preventDefault();\n        }\n        break;\n      default:\n        if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {\n          manager.setFocusOrigin('keyboard');\n        } else if (!this._header._menusCollapsed) {\n          manager.onKeydown(event);\n        }\n    }\n  }\n}\n","<button type=\"button\" class=\"sbb-header-menu-back\" (click)=\"open = false\">\n  <sbb-icon svgIcon=\"chevron-small-left-small\"></sbb-icon>\n  <span>{{ _backButton }}</span>\n</button>\n\n<div class=\"sbb-header-menu-title\">\n  <ng-content></ng-content>\n</div>\n\n<div class=\"sbb-header-menu-panel-container\">\n  <ng-template cdkPortal cdkPortalOutlet>\n    <div\n      class=\"sbb-header-menu-panel sbb-panel sbb-panel-padded sbb-scrollbar\"\n      role=\"listbox\"\n      [id]=\"id\"\n      [ngClass]=\"_classList\"\n      (keydown)=\"_handlePanelKeydown($event)\"\n      (click)=\"closed.emit('click')\"\n      tabindex=\"-1\"\n      role=\"menu\"\n    >\n      <ng-content select=\"a, button, hr\"></ng-content>\n    </div>\n  </ng-template>\n</div>\n","import { ObserversModule } from '@angular/cdk/observers';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { SbbCommonModule } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\n\nimport { SbbAppChooserSection } from './app-chooser-section';\nimport { SbbHeaderLean } from './header';\nimport { SbbHeaderEnvironment, SbbHeaderIconActions } from './header-directives';\nimport { SbbHeaderMenu } from './header-menu';\nimport { SbbHeaderMenuItem } from './header-menu-item';\nimport {\n  SbbHeaderMenuTrigger,\n  SBB_HEADER_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './header-menu-trigger';\n\n@NgModule({\n  imports: [\n    ObserversModule,\n    OverlayModule,\n    PortalModule,\n    SbbCommonModule,\n    SbbIconModule,\n    SbbHeaderLean,\n    SbbAppChooserSection,\n    SbbHeaderEnvironment,\n    SbbHeaderIconActions,\n    SbbHeaderMenuItem,\n    SbbHeaderMenuTrigger,\n    SbbHeaderMenu,\n  ],\n  exports: [\n    SbbHeaderLean,\n    SbbAppChooserSection,\n    SbbHeaderEnvironment,\n    SbbHeaderIconActions,\n    SbbHeaderMenuItem,\n    SbbHeaderMenuTrigger,\n    SbbHeaderMenu,\n  ],\n  providers: [SBB_HEADER_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class SbbHeaderLeanModule {}\n"],"names":[],"mappings":"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"}