{"version":3,"file":"usermenu.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/usermenu/usermenu-icon.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/usermenu/usermenu.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/usermenu/usermenu.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/usermenu/usermenu.module.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[sbbIcon]',\n})\nexport class SbbUsermenuIcon {}\n","// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/// <reference types=\"@angular/localize/init\" />\n\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  EventEmitter,\n  inject,\n  Input,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { mixinVariant } from '@sbb-esta/angular/core';\nimport { SbbIcon } from '@sbb-esta/angular/icon';\nimport {\n  SbbMenu,\n  SbbMenuInheritedTriggerContext,\n  SbbMenuTrigger,\n  SBB_MENU_INHERITED_TRIGGER_CONTEXT,\n} from '@sbb-esta/angular/menu';\nimport { SbbMenuDynamicTrigger } from '@sbb-esta/angular/menu';\n\nimport { SbbUsermenuIcon } from './usermenu-icon';\n\n// Boilerplate for applying mixins to SbbNotification.\nconst _SbbUsermenuMixinBase = mixinVariant(class {});\n\nexport const _sbbUsermenuMenuInheritedTriggerContext: SbbMenuInheritedTriggerContext = {\n  type: 'usermenu',\n  panelWidth: 288,\n  xPosition: 'before',\n  animationStartStateResolver: (context) => ({\n    value: 'enter-usermenu',\n    params: {\n      width: context.panelWidth! * (context.scalingFactor ?? 1) + 'px',\n    },\n  }),\n};\n\n@Component({\n  selector: 'sbb-usermenu',\n  templateUrl: './usermenu.html',\n  styleUrls: ['./usermenu.css'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'sbb-usermenu sbb-icon-scaled',\n    '[attr.id]': 'id',\n    '[class.sbb-usermenu-user-info-has-display-name]': '!!displayName',\n  },\n  providers: [\n    {\n      provide: SBB_MENU_INHERITED_TRIGGER_CONTEXT,\n      useValue: _sbbUsermenuMenuInheritedTriggerContext,\n    },\n  ],\n  imports: [SbbIcon, SbbMenuTrigger, SbbMenuDynamicTrigger, NgTemplateOutlet, AsyncPipe],\n})\nexport class SbbUsermenu extends _SbbUsermenuMixinBase {\n  _labelLogin: string = $localize`:Button label for login@@sbbUsermenuLogin:Login`;\n\n  get _labelOpenPanel() {\n    return $localize`:Aria label to open user menu@@sbbUsermenuOpenPanel:Logged in as ${\n      this.displayName || this.userName\n    }. Click or press enter to open user menu.`;\n  }\n\n  /** Identifier of the usermenu. */\n  id: string = inject(_IdGenerator).getId('sbb-usermenu-');\n\n  /**\n   * The user name is only displayed if the menu is open.\n   * If userName is set, logged in state is active.\n   */\n  @Input() userName?: string;\n\n  /**\n   * The display name is shown on collapsed trigger and on opened state of the menu (except on mobile devices).\n   * If displayName is set, logged in state is active.\n   */\n  @Input() displayName?: string;\n\n  /** Reference to the menu. */\n  @Input() menu!: SbbMenu;\n\n  /** Event emitted on log in of a user. */\n  @Output() loginRequest: EventEmitter<void> = new EventEmitter<void>();\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(SbbMenuTrigger) private _menuTrigger!: SbbMenuTrigger;\n\n  /** Reference to user provided icon */\n  @ContentChild(SbbUsermenuIcon, { read: TemplateRef })\n  _icon?: TemplateRef<any>;\n\n  /** Whether or not the overlay panel is open. */\n  get panelOpen(): boolean {\n    return this._menuTrigger?.menuOpen;\n  }\n\n  /** Whether the user is logged in or not. */\n  get _loggedIn(): boolean {\n    return !!this.userName || !!this.displayName;\n  }\n\n  /** Initial letters of user's displayName (or userName if no displayName is provided). */\n  get _initialLetters(): string {\n    const name = this.displayName ? this.displayName : this.userName || '';\n    const names: string[] = name.split(' ');\n    const filteredNames = names.filter((namePart) => namePart[0]?.match(/^\\p{L}/u));\n\n    if (filteredNames.length === 0) {\n      return '';\n    }\n\n    if (filteredNames.length === 1) {\n      return filteredNames[0].substring(0, 2).toLocaleUpperCase();\n    }\n\n    return filteredNames\n      .reduce((current, next) => {\n        return current[0] + next[0];\n      })\n      .toLocaleUpperCase();\n  }\n\n  _emitLogin() {\n    this.loginRequest.emit();\n  }\n\n  /** Open the overlay panel */\n  open(): void {\n    if (this._loggedIn) {\n      this._menuTrigger?.openMenu();\n    }\n  }\n\n  /** Close the overlay panel */\n  close(): void {\n    this._menuTrigger?.closeMenu();\n  }\n\n  /** Toggle the visibility of the overlay panel */\n  toggle(): void {\n    if (this._loggedIn) {\n      this._menuTrigger?.toggleMenu();\n    }\n  }\n\n  _emitMenuOpened() {\n    this.menuOpened.emit();\n  }\n\n  _emitMenuClosed() {\n    this.menuClosed.emit();\n  }\n}\n","@if (!_loggedIn) {\n  <button\n    class=\"sbb-button-reset-frameless sbb-usermenu-trigger sbb-usermenu-trigger-logged-out\"\n    (click)=\"_emitLogin()\"\n    type=\"button\"\n  >\n    <sbb-icon svgIcon=\"user-small\" class=\"sbb-usermenu-logged-out-icon\"></sbb-icon>\n    <span class=\"sbb-usermenu-logged-out-label\">{{ _labelLogin }}</span>\n  </button>\n}\n@if (_loggedIn && menu) {\n  <button\n    [sbbMenuTriggerFor]=\"menu\"\n    (menuOpened)=\"_emitMenuOpened()\"\n    (menuClosed)=\"_emitMenuClosed()\"\n    class=\"sbb-button-reset-frameless sbb-usermenu-trigger sbb-usermenu-trigger-logged-in\"\n    [attr.aria-label]=\"_labelOpenPanel\"\n    type=\"button\"\n  >\n    <ng-template sbbMenuDynamicTrigger>\n      <ng-container *ngTemplateOutlet=\"triggerContent\"></ng-container>\n      <sbb-icon\n        [svgIcon]=\"\n          (variant | async) === 'standard' ? 'chevron-small-down-small' : 'chevron-right-small'\n        \"\n        class=\"sbb-usermenu-arrow\"\n      ></sbb-icon>\n    </ng-template>\n  </button>\n}\n@if (_loggedIn && !menu) {\n  <div class=\"sbb-usermenu-trigger sbb-usermenu-trigger-logged-in\">\n    <ng-template sbbMenuDynamicTrigger>\n      <ng-container *ngTemplateOutlet=\"triggerContent\"></ng-container>\n    </ng-template>\n  </div>\n}\n\n<ng-template #triggerContent>\n  <span class=\"sbb-usermenu-identification\" aria-hidden=\"true\">\n    @if (_icon) {\n      <ng-container *ngTemplateOutlet=\"_icon\"></ng-container>\n    }\n    @if (!_icon) {\n      <span class=\"sbb-usermenu-initial-letters\"> {{ _initialLetters }} </span>\n    }\n  </span>\n\n  <span class=\"sbb-usermenu-user-info\">\n    <span class=\"sbb-usermenu-user-info-display-name\"> {{ displayName || userName }} </span>\n    @if (displayName && userName) {\n      <span class=\"sbb-usermenu-user-info-name\"> {{ userName }} </span>\n    }\n  </span>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { SbbCommonModule } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\nimport { SbbMenuModule } from '@sbb-esta/angular/menu';\n\nimport { SbbUsermenu } from './usermenu';\nimport { SbbUsermenuIcon } from './usermenu-icon';\n\n@NgModule({\n  imports: [SbbCommonModule, SbbIconModule, SbbMenuModule, SbbUsermenu, SbbUsermenuIcon],\n  exports: [SbbUsermenu, SbbUsermenuIcon],\n})\nexport class SbbUsermenuModule {}\n"],"names":[],"mappings":"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"}