{"version":3,"file":"usitsdasdesign-dds-ng-profile.mjs","sources":["../../src/app/dds/profile/profile-item/profile-item.component.ts","../../src/app/dds/profile/profile-item/profile-item.component.html","../../src/app/dds/profile/profile/constants.ts","../../src/app/dds/profile/profile/profile.component.ts","../../src/app/dds/profile/profile/profile.component.html","../../src/app/dds/profile/profile.module.ts","../../src/app/dds/profile/usitsdasdesign-dds-ng-profile.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { ContextMenuItemComponent, ContextMenuModule } from '@usitsdasdesign/dds-ng/context-menu';\nimport { AdditionalClass } from '@usitsdasdesign/dds-ng/shared';\n\n@Component({\n  selector: 'dds-profile-item',\n  templateUrl: './profile-item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, ContextMenuModule],\n})\nexport class ProfileItemComponent implements AfterViewInit {\n  // Binds the 'disabled' CSS class based on the `disabled` input property.\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n\n  // Binds the 'fullWidth' CSS class. Default is true.\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) width = true;\n\n  // Counter value for the profile item.\n  @Input() counter: number | undefined;\n\n  // Custom CSS class for the profile item.\n  @Input() customClass: string | undefined;\n\n  // Indicates whether the profile item is focused. Default is false.\n  @Input() focus: boolean | undefined = false;\n\n  // Template reference for custom content.\n  @Input() template: TemplateRef<unknown> | undefined;\n\n  // Event emitter for when the profile item is selected.\n  @Output() itemSelected = new EventEmitter<Event>();\n\n  // Reference to the ContextMenuItemComponent.\n  @ViewChild(ContextMenuItemComponent) menuItem: ContextMenuItemComponent;\n\n  // Unique identifier for the profile item.\n  public itemId: number;\n\n  constructor(private cdr: ChangeDetectorRef) { }\n\n  // Lifecycle hook that is called after a component's view has been fully initialized.\n  // Sets the itemId based on the menuItem's itemId.\n  public ngAfterViewInit(): void {\n    this.itemId = this.menuItem?.itemId;\n  }\n\n  // Emits the `itemSelected` event when the profile item is selected.\n  public selectedItem(event: Event): void {\n    this.itemSelected.emit(event);\n  }\n\n  // Changes the focus state of the profile item and triggers change detection.\n  public changeFocus(value: boolean): void {\n    this.focus = value;\n    this.cdr.detectChanges();\n  }\n}\n","<ng-container *ngTemplateOutlet=\"template || defaultTemplate\"></ng-container>\n\n<ng-template #defaultTemplate>\n  <dds-context-menu-item [counter]=\"counter\"\n                         [disabled]=\"disabled\"\n                         [focus]=\"focus\"\n                         [ariaSelected]=\"null\"\n                         [customClass]=\"customClass\"\n                         (selectedItem)=\"selectedItem($event)\">\n    <ng-content></ng-content>\n  </dds-context-menu-item>\n</ng-template>","export const MENU_WIDTH = 240;\nexport const INDENT = 8;\nexport const SHIFT = 0;\nexport const IS_RESPONSIVE = false;\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  Input,\n  QueryList,\n  ViewChild,\n} from '@angular/core';\nimport { ContextMenuModule } from '@usitsdasdesign/dds-ng/context-menu';\nimport { DestroyCtor, DestroyMixin, I18nCtor, I18nMixin } from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { ListManager } from '@usitsdasdesign/dds-ng/core/list-manager';\nimport { SafeStyleModule } from '@usitsdasdesign/dds-ng/core/safe-style';\nimport { generateId } from '@usitsdasdesign/dds-ng/core/utils';\nimport { KeyCodes, PositionState } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { I18nModule, I18nService, ITranslation } from '@usitsdasdesign/dds-ng/shared/i18n';\nimport { StickerDirective, StickerModule } from '@usitsdasdesign/dds-ng/sticker';\nimport { takeUntil } from 'rxjs/operators';\nimport { ProfileItemComponent } from '../profile-item/profile-item.component';\nimport { IS_RESPONSIVE, MENU_WIDTH, SHIFT } from './constants';\n\nconst ProfileBase: DestroyCtor & I18nCtor = DestroyMixin(I18nMixin());\n\n@Component({\n  selector: 'dds-profile',\n  templateUrl: './profile.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, StickerModule, SafeStyleModule, FocusHandlerModule, ContextMenuModule, I18nModule],\n})\nexport class ProfileComponent extends ProfileBase implements AfterViewInit {\n  // Query list of ProfileItemComponent instances within the content\n  @ContentChildren(ProfileItemComponent, { descendants: true }) items: QueryList<ProfileItemComponent>;\n\n  // ViewChild reference to the StickerDirective instance\n  @ViewChild('stickerDir') sticker: StickerDirective;\n\n  // ViewChild reference to the profile button element\n  @ViewChild('profileBtn') profileBtn: ElementRef<HTMLElement>;\n\n  // Input properties for various profile attributes\n  @Input() username: string | undefined;\n  @Input() nameLetter: string | undefined;\n  @Input() userInfo: string | undefined;\n  @Input() photoUrl: string | undefined;\n  @Input() customClass: string | undefined;\n  @Input() isInverse: boolean | undefined;\n  @Input() disabled: boolean | undefined;\n  @Input() isUserProfileArrow: boolean | undefined;\n\n  // Input properties for sticker configuration\n  @Input() stickerPosition: PositionState | string | undefined = PositionState.bottomRight;\n  @Input() stickerIndent: number | undefined = this.ddsConfig.getConfig().stickerIndent;\n  @Input() stickerWidth: number | string | undefined = MENU_WIDTH;\n  @Input() stickerShift: number | undefined = SHIFT;\n  @Input() stickerIsResponsive: boolean | undefined = IS_RESPONSIVE;\n  @Input() stickerIsOutsideClick: boolean | undefined;\n  @Input() stickerIsDisabled: boolean | undefined;\n  @Input() stickerMaxHeight: number | string | undefined;\n  @Input() stickerCustomClass: string | undefined;\n  @Input() stickerIsDynamic: boolean | undefined = true;\n\n  // State variables for profile component\n  public isProfileOpened = false;\n  public isMobileHeader: boolean;\n  private keyboardTrigger: boolean;\n  public activeItemId: number;\n  public id: string;\n\n  // Aria label for profile content\n  public profileContentAriaLabel: string;\n\n  // Key manager for handling keyboard interactions\n  private keyManager: ListManager<ProfileItemComponent>;\n\n  constructor(public cdr: ChangeDetectorRef, public i18n: I18nService, private ddsConfig: DdsConfigService) {\n    super();\n  }\n\n  public ngAfterViewInit(): void {\n    this.initKeyManager();\n    this.id = generateId();\n  }\n\n  // Method to handle actions when the profile dropdown is shown\n  public onShown(el: HTMLElement): void {\n    this.isProfileOpened = true;\n    el.blur();\n  }\n\n  // Method to handle actions when the profile dropdown is hidden\n  public onHidden(): void {\n    this.isProfileOpened = false;\n    this.keyboardTrigger = false;\n    this.cdr.detectChanges();\n  }\n\n  // Method to toggle the dropdown visibility\n  public toggleDropdown(): void {\n    if (this.keyManager.activeItem) {\n      this.keyManager.activeItem.changeFocus(false);\n    }\n  }\n\n  // Prevent default event for specific key codes to fix double click issue in Firefox\n  public preventEvent(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      event.preventDefault();\n    }\n  }\n\n  // Handle keydown events for specific key codes to show the sticker and set active item\n  public handleKeydown(event: KeyboardEvent) {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      const activeItemIndex = 0;\n\n      this.sticker.show();\n      this.keyManager.setActiveItem(activeItemIndex);\n    }\n  }\n\n  // Handle keyup events to set keyboard trigger\n  public handleKeyUp() {\n    this.keyboardTrigger = true;\n  }\n\n  // Handle keydown events within the menu to manage item selection and sticker visibility\n  public handleKeydownMenu(event: KeyboardEvent): void {\n    this.keyManager.onKeydown(event);\n\n    if ((event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) && this.keyManager.activeItem) {\n      event.preventDefault();\n      this.keyManager.activeItem.selectedItem(event);\n      this.sticker.hide();\n    }\n  }\n\n  // Initialize context menu with keyboard trigger\n  public contextMenuInit(): void {\n    if (this.keyboardTrigger) {\n      this.items.first.changeFocus(true);\n      this.keyManager.updateActiveItem(this.items.first);\n    }\n  }\n\n  // Initialize the key manager for managing focus and keyboard interactions\n  private initKeyManager(): void {\n    this.keyManager = new ListManager(this.items).withHomeAndEnd();\n\n    this.keyManager.change.pipe(takeUntil(this.destroy)).subscribe(() => {\n      if (this.keyManager.previousActiveItem) this.keyManager.previousActiveItem.changeFocus(false);\n      if (this.keyManager.activeItem) {\n        this.keyManager.activeItem.changeFocus(true);\n        this.activeItemId = this.keyManager.activeItem.itemId;\n      }\n    });\n\n    this.keyManager.tabOut.pipe(takeUntil(this.destroy)).subscribe(() => {\n      if (this.isProfileOpened) {\n        this.profileBtn.nativeElement.focus();\n        this.sticker.hide();\n      }\n    });\n  }\n\n  // Set internationalization texts for the component\n  protected setI18nTexts(translation: ITranslation): void {\n    this.profileContentAriaLabel = translation.PROFILE.A11Y.CONTENT_ARIA_LABEL;\n    this.cdr.detectChanges();\n  }\n}\n","<div [ngClass]=\"{ \n        'dds-profile_mobile': isMobileHeader, \n        'dds-disabled': disabled,\n        'dds-profile_inverse': isInverse\n      }\"\n     data-qa=\"profile\"\n     class=\"dds-profile {{customClass}}\">\n  @if (isMobileHeader) {\n  <div class=\"dds-profile__content\">\n    <ng-container *ngTemplateOutlet=\"profileContent\"></ng-container>\n  </div>\n  } @else {\n  <button [ddsSticker]=\"profileContent\"\n          [stickerPosition]=\"stickerPosition\"\n          [stickerIndent]=\"stickerIndent\"\n          [stickerWidth]=\"stickerWidth\"\n          [stickerIsOutsideClick]=\"stickerIsOutsideClick\"\n          [stickerShift]=\"stickerShift\"\n          [stickerMaxHeight]=\"stickerMaxHeight\"\n          [stickerIsDisabled]=\"stickerIsDisabled\"\n          [stickerIsResponsive]=\"stickerIsResponsive\"\n          [stickerCustomClass]=\"stickerCustomClass\"\n          [stickerIsDynamic]=\"stickerIsDynamic\"\n          [attr.aria-expanded]=\"isProfileOpened\"\n          [attr.aria-label]=\"username\"\n          [attr.aria-controls]=\"id\"\n          [disabled]=\"disabled\"\n          data-qa=\"profile-button\"\n          aria-haspopup=\"listbox\"\n          role=\"button\"\n          type=\"button\"\n          class=\"dds-profile__btn\"\n          [ngClass]=\"{'dds-profile__btn_with-arrow': isUserProfileArrow}\"\n          ddsFocus\n          (click)=\"toggleDropdown()\"\n          (keydown)=\"handleKeydown($event);preventEvent($event)\"\n          (keyup)=\"handleKeyUp();preventEvent($event)\"\n          (onShown)=\"onShown(profileBtn)\"\n          (onHidden)=\"onHidden()\"\n          #stickerDir=\"dds-sticker\"\n          #profileBtn>\n    <span [attr.aria-label]=\"username\"\n          data-qa=\"profile-user-pic-initials\"\n          role=\"img\"\n          class=\"dds-profile__userpic\">\n      {{ nameLetter }}\n    </span>\n    @if (photoUrl) {\n    <div [style.background-image]=\"'url(' + photoUrl + ')' | safeStyle\"\n         [attr.aria-label]=\"username\"\n         data-qa=\"profile-user-pic-img\"\n         role=\"img\"\n         class=\"dds-profile__userpic-img\"></div>\n    }\n    @if (isUserProfileArrow) {\n    <span class=\"dds-profile__btn-arrow dds-icon dds-icon_arrow-down\"\n          [ngClass]=\"{'dds-profile__btn-arrow_active': isProfileOpened, 'dds-profile__btn-arrow_disabled': disabled}\"></span>\n    }\n  </button>\n  }\n\n  <ng-template #profileContent>\n    <dds-context-menu [ngClass]=\"{'dds-profile__drawer_inverse': isInverse}\"\n                      [label]=\"username\"\n                      [isResponsive]=\"stickerIsResponsive\"\n                      [ariaLabel]=\"profileContentAriaLabel\"\n                      [activeItemId]=\"activeItemId\"\n                      [ariaMultiselectable]=\"null\"\n                      [isInverse]=\"isInverse\"\n                      [id]=\"id\"\n                      ariaDescription=\"{{username}} {{userInfo}}\"\n                      data-qa=\"profile-menu\"\n                      size=\"lg\"\n                      class=\"dds-profile__drawer\"\n                      (onInit)=\"contextMenuInit()\"\n                      (keyPressed)=\"handleKeydownMenu($event)\">\n      <div aria-hidden=\"true\"\n           data-qa=\"profile-menu-user\"\n           class=\"dds-profile__user\">\n        <div class=\"dds-profile__user-img\">\n          <span [attr.aria-label]=\"username\"\n                data-qa=\"profile-user-pic-initials\"\n                role=\"img\"\n                class=\"dds-profile__userpic\">\n            {{ nameLetter }}\n          </span>\n          @if (photoUrl) {\n          <div [style.background-image]=\"'url(' + photoUrl + ')' | safeStyle\"\n               [attr.aria-label]=\"username\"\n               data-qa=\"profile-user-pic-img\"\n               role=\"img\"\n               class=\"dds-profile__userpic-img\"></div>\n          }\n        </div>\n        <div class=\"dds-profile__user-info\">\n          <strong data-qa=\"profile-menu-user-name\"\n                  class=\"dds-profile__username\">{{ username }}</strong>\n          <span data-qa=\"profile-menu-user-info\"\n                class=\"dds-profile__position\">{{ userInfo }}</span>\n        </div>\n      </div>\n      <hr aria-hidden=\"true\">\n      <ng-content></ng-content>\n    </dds-context-menu>\n  </ng-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ProfileItemComponent } from './profile-item/profile-item.component';\nimport { ProfileComponent } from './profile/profile.component';\n\n@NgModule({\n  declarations: [],\n  imports: [ProfileComponent, ProfileItemComponent],\n  exports: [ProfileComponent, ProfileItemComponent],\n})\nexport class ProfileModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2"],"mappings":"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"}