{"version":3,"file":"usitsdasdesign-dds-ng-tabs.mjs","sources":["../../src/app/dds/tabs/constants.ts","../../src/app/dds/tabs/tabs/constants.ts","../../src/app/dds/tabs/tabs/tabs.component.ts","../../src/app/dds/tabs/tabs/tabs.component.html","../../src/app/dds/tabs/tab/tab.component.ts","../../src/app/dds/tabs/tab/tab.component.html","../../src/app/dds/tabs/tabs.module.ts","../../src/app/dds/tabs/usitsdasdesign-dds-ng-tabs.ts"],"sourcesContent":["export const DEFAULT_INDENT = -1;\nexport const DEFAULT_SHIFT = 0;\nexport const DEFAULT_WIDTH = 200;\nexport const DEFAULT_MAX_HEIGHT = '300px';\nexport const RESIZE_DEBOUNCE_TIME = 30;\nexport const MIN_AMOUNT_ITEMS_COMBINED_TABS = 2;\n","import { ThemeClassesMap, ThemeMapEnum } from '@usitsdasdesign/dds-ng/core/theme';\nimport { TabThemeType, Size, Themes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const themeClassesMap: ThemeClassesMap = {\n  [ThemeMapEnum.Themes]: {\n    [Themes.green]: 'dds-tabs__header_green',\n    [Themes.blue]: 'dds-tabs__header_blue',\n    [Themes.dark]: 'dds-tabs__header_dark',\n  },\n\n  [ThemeMapEnum.Size]: {\n    [Size.sm]: 'dds-tabs__header_sm',\n    [Size.lg]: 'dds-tabs__header_lg',\n  },\n\n  [ThemeMapEnum.ThemesType]: {\n    [TabThemeType.fill]: 'dds-tabs__header_fill',\n  },\n};\n\nexport const ARIA_LABEL_DEFAULT = 'Horizontal tabs';\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  QueryList,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport { ContextMenuComponent, 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 { ThemeClassesMap, ThemeModule } from '@usitsdasdesign/dds-ng/core/theme';\nimport { AdditionalClass, KeyCodes, PositionState, Size, TabThemeType, Themes } 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 { ResizeHandlerModule } from '@usitsdasdesign/dds-ng/shared/resize-handler';\nimport { StickerDirective, StickerModule } from '@usitsdasdesign/dds-ng/sticker';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { DEFAULT_MAX_HEIGHT, DEFAULT_SHIFT, DEFAULT_WIDTH, MIN_AMOUNT_ITEMS_COMBINED_TABS, RESIZE_DEBOUNCE_TIME } from '../constants';\nimport { TabComponent } from '../tab/tab.component';\nimport { MainTab } from '../typings';\nimport { ARIA_LABEL_DEFAULT, themeClassesMap } from './constants';\n\nconst TabsBase: DestroyCtor & I18nCtor = DestroyMixin(I18nMixin());\n@Component({\n  selector: 'dds-tabs',\n  templateUrl: './tabs.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, FocusHandlerModule, StickerModule, ContextMenuModule, ResizeHandlerModule, ThemeModule, I18nModule],\n})\nexport class TabsComponent extends TabsBase implements OnChanges, OnInit, AfterContentInit, AfterViewInit {\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n\n  @Input() ariaLabel: string | undefined = ARIA_LABEL_DEFAULT;\n  @Input() theme: Themes | string | undefined = this.ddsConfig.getConfig().theme;\n  @Input() themeType: TabThemeType | string | undefined = TabThemeType.border;\n  @Input() size: Size | string | undefined = this.ddsConfig.getConfig().size;\n  @Input() customClass: string | undefined;\n  @Input() activeIndex: number | undefined = 0;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isInverse: boolean | undefined;\n\n  // Sticker options\n  @Input() stickerPosition: PositionState | string | undefined = this.ddsConfig.getConfig().stickerPosition;\n  @Input() stickerIndent: number | undefined = this.ddsConfig.getConfig().stickerIndent;\n  @Input() stickerShift: number | undefined = DEFAULT_SHIFT;\n  @Input() stickerWidth: number | string | undefined = DEFAULT_WIDTH;\n  @Input() stickerMaxHeight: number | string | undefined = DEFAULT_MAX_HEIGHT;\n  @Input() stickerCustomClass: string | undefined;\n  @Input() stickerIsDynamic: boolean | undefined = true;\n\n  @Output() onDropdown = new EventEmitter<TabComponent>();\n\n  @ViewChild('tabs') tabsWrap: ElementRef;\n  @ViewChild('tabsHeader') tabsHeader: ElementRef<HTMLElement>;\n  @ViewChild('stickerDir') sticker: StickerDirective;\n  @ViewChildren('tabHeaderItem') tabHeaderItems: QueryList<ElementRef<HTMLButtonElement>>;\n\n  public tabItems: TabComponent[] = [];\n  public mainTab: MainTab = {\n    isExpanded: false,\n  };\n  public themeConfig: ThemeClassesMap = themeClassesMap;\n  public popupAriaLabel: string;\n  public isFocusedFirstEl: boolean;\n\n  private openedSticker: StickerDirective;\n  private keyboardTrigger: boolean;\n  private isFocusedTabEl: boolean;\n  private isMouseFocus: boolean;\n  private selectedTab: TabComponent;\n\n  constructor(public cdr: ChangeDetectorRef, public i18n: I18nService, private renderer: Renderer2, private ddsConfig: DdsConfigService) {\n    super();\n  }\n\n  public ngOnInit(): void {\n    super.ngOnInit();\n\n    // Check the width of the tabs on window resize\n    this.checkWidthOnResize();\n  }\n\n  public ngAfterContentInit(): void {\n    // Check the active tab after content initialization\n    this.checkActiveTab(this.tabItems);\n\n    // Set tabs to disabled if the disabled input is true\n    if (this.disabled) {\n      this.setTabsDisabled();\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    // Change the active tab after the view initialization\n    this.changeActiveTab(this.activeIndex);\n    // Check the width of the tab headers\n    this.checkWidthTab();\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    // Handle changes to the disabled input\n    if (changes.disabled) {\n      this.setTabsDisabled();\n    }\n\n    // Handle changes to the activeIndex input\n    if (changes.activeIndex) this.changeActiveTab(changes.activeIndex.currentValue);\n  }\n\n  public keydownHandler(event: KeyboardEvent, sticker: StickerDirective): void {\n    // Handle keydown events for Enter and Space keys\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      event.preventDefault();\n      this.keyboardTrigger = true;\n      sticker.show();\n    }\n  }\n\n  public onHidden(): void {\n    // Reset keyboard trigger when sticker is hidden\n    this.keyboardTrigger = false;\n  }\n\n  public isExpandedText(state: boolean): string {\n    // Return 'expanded' if the state is true\n    return state ? 'expanded' : '';\n  }\n\n  public addTabItem(tabItem: TabComponent): void {\n    // Add a tab item to the tabItems array\n    this.tabItems.push(tabItem);\n  }\n\n  public removeTabItem(tabItem: TabComponent): void {\n    // Remove a tab item from the tabItems array\n    const index = this.tabItems.indexOf(tabItem);\n\n    if (index !== -1) {\n      this.tabItems.splice(index, 1);\n    }\n  }\n\n  public dropdownTab(value: boolean, item: TabComponent, el: HTMLElement, sticker?: StickerDirective): void {\n    // Handle dropdown tab actions\n    this.openedSticker = sticker;\n    item.isExpanded = value;\n    item.onDropdown.emit(item);\n    this.onDropdown.emit(item);\n    if (!value && this.keyboardTrigger) {\n      this.setFocus(el);\n    }\n  }\n\n  public getContextMenu(contextMenu: ContextMenuComponent, tabsList: TabComponent[]): void {\n    // Get the context menu for the tabs\n    let activeItemIndex = 0;\n\n    tabsList.forEach((item, i) => {\n      if (item === this.selectedTab) {\n        activeItemIndex = i;\n\n        contextMenu.contextMenuItems.forEach((ctxMenuItem, index) => {\n          ctxMenuItem.isSelected(false);\n\n          if (activeItemIndex === index) {\n            ctxMenuItem.isSelected(true);\n          }\n        });\n      }\n    });\n\n    if (this.keyboardTrigger) contextMenu.keyManager.setActiveItem(activeItemIndex);\n  }\n\n  public mainTabDropdownOpened(value: boolean, el: HTMLElement, sticker?: StickerDirective): void {\n    // Handle main tab dropdown opened actions\n    this.mainTab.isExpanded = value;\n    if (sticker) this.openedSticker = sticker;\n    if (!value && this.keyboardTrigger) {\n      this.setFocus(el);\n    }\n  }\n\n  public focusOut(): void {\n    // Hide the opened sticker on focus out\n    if (this.openedSticker) this.openedSticker.hide();\n  }\n\n  public selectTab(tab: TabComponent, tabParent?: TabComponent): void {\n    // Select a tab and set it as active\n    this.selectedTab = tab;\n\n    this.setActiveTab(this.tabItems, tab);\n    tab.tabChanged.emit(tab);\n\n    if (this.openedSticker) this.openedSticker.hide();\n\n    if (tabParent) {\n      tabParent.isActive = true;\n    }\n\n    this.checkActiveCombinedTab(this.mainTab.children);\n  }\n\n  public setActiveTab(items: TabComponent[], selectedTab: TabComponent): void {\n    // Set the active tab in the items array\n    items.forEach((tabItem, tabIndex) => {\n      tabItem.isActive = tabItem === selectedTab;\n\n      if (tabItem.isActive) {\n        this.activeIndex = tabIndex;\n      }\n      if (tabItem.children) {\n        this.setActiveTab(tabItem.children, selectedTab);\n      }\n    });\n\n    this.cdr.markForCheck();\n  }\n\n  public checkWidthTab(): void {\n    // Check the width of the tab headers and adjust accordingly\n    if (this.tabHeaderItems) {\n      const headerTabItems = this.tabHeaderItems.toArray();\n      const tabWrapWidth = this.tabsWrap.nativeElement.getBoundingClientRect().width;\n      let combinedTabCreated: boolean;\n      let sumItemWidth = 0;\n\n      headerTabItems.forEach((headingTab, index) => {\n        const el = headingTab.nativeElement;\n        const elWidth = el.getBoundingClientRect().width;\n        const elMargin = parseInt(window.getComputedStyle(el).marginRight);\n        const elHeadingWidth = elWidth + elMargin;\n\n        this.setHeadingWidth(elHeadingWidth, index);\n\n        sumItemWidth = sumItemWidth + elHeadingWidth;\n\n        if (sumItemWidth > tabWrapWidth && !combinedTabCreated && index > 0) {\n          this.combineTabs(index - 1);\n          combinedTabCreated = true;\n        }\n      });\n\n      const emptyPlaceWidth = tabWrapWidth - sumItemWidth;\n\n      this.checkEmptyPlace(emptyPlaceWidth);\n      this.checkActiveCombinedTab(this.mainTab.children);\n      this.cdr.detectChanges();\n    }\n  }\n\n  public headerFocusHandler(): void {\n    // Handle focus on the header\n    if (!this.isFocusedFirstEl && !this.isMouseFocus) {\n      this.setFocus(this.tabHeaderItems.toArray()[0].nativeElement);\n      this.isFocusedFirstEl = true;\n    }\n    this.isMouseFocus = false;\n    this.isFocusedTabEl = false;\n  }\n\n  public headerMouseHandler(): void {\n    // Handle mouse focus on the header\n    this.isMouseFocus = true;\n  }\n\n  public btnBlurHandler(): void {\n    // Handle blur event on the button\n    if (!this.isFocusedTabEl) {\n      this.focusReset();\n    }\n\n    this.isFocusedFirstEl = false;\n    this.isFocusedTabEl = false;\n  }\n\n  public headerKeydownHandler(event: KeyboardEvent): void {\n    // Handle keydown events on the header\n    const availableItems = this.tabHeaderItems.filter((item) => !item.nativeElement.disabled);\n    const keyCode = event.keyCode;\n    const indexFocusedItem = this.getIndexFocusedItem(availableItems);\n    this.isMouseFocus = false;\n\n    switch (keyCode) {\n      case KeyCodes.TAB:\n        this.focusReset();\n        return;\n\n      case KeyCodes.ARROW_RIGHT:\n        const indexNext = indexFocusedItem + 1;\n        event.preventDefault();\n\n        this.focusNextItem(availableItems, indexNext);\n        break;\n\n      case KeyCodes.ARROW_LEFT:\n        const indexPrev = indexFocusedItem - 1;\n        event.preventDefault();\n        this.focusPrevItem(availableItems, indexPrev);\n        break;\n    }\n  }\n\n  private getIndexFocusedItem(items: ElementRef<HTMLButtonElement>[]): number {\n    // Get the index of the focused item\n    let indexFocusedItem = 0;\n\n    items.forEach((item, index) => {\n      if (item.nativeElement === document.activeElement) {\n        indexFocusedItem = index;\n      }\n    });\n\n    return indexFocusedItem;\n  }\n\n  private focusNextItem(items: ElementRef<HTMLButtonElement>[], elIndex: number): void {\n    // Focus the next item in the array\n    if (items[elIndex]) {\n      this.setFocus(items[elIndex].nativeElement);\n    } else {\n      this.setFocus(items[0].nativeElement);\n    }\n  }\n\n  private focusPrevItem(items: ElementRef<HTMLButtonElement>[], elIndex: number): void {\n    // Focus the previous item in the array\n    if (items[elIndex]) {\n      this.setFocus(items[elIndex].nativeElement);\n    } else {\n      this.setFocus(items[items.length - 1].nativeElement);\n    }\n  }\n\n  private setFocus(el: HTMLElement): void {\n    // Set focus on the given element\n    if (!(el as HTMLButtonElement).disabled) {\n      this.focusReset();\n      this.renderer.addClass(el, AdditionalClass.keyboardFocus);\n      this.isFocusedTabEl = true;\n      el.focus();\n    }\n  }\n\n  private focusReset(): void {\n    // Reset focus on all tab header items\n    this.tabHeaderItems.forEach((el) => {\n      this.renderer.removeClass(el.nativeElement, AdditionalClass.keyboardFocus);\n    });\n  }\n\n  protected setI18nTexts(translation: ITranslation): void {\n    // Set internationalization texts\n    this.popupAriaLabel = translation.TABS.A11Y.POPUP_ARIA_LABEL;\n    this.cdr.detectChanges();\n  }\n\n  private checkWidthOnResize(): void {\n    // Check the width of the tabs on window resize\n    fromEvent(window, 'resize')\n      .pipe(debounceTime(RESIZE_DEBOUNCE_TIME), takeUntil(this.destroy))\n      .subscribe(() => {\n        this.checkWidthTab();\n      });\n  }\n\n  private changeActiveTab(index: number): void {\n    // Change the active tab based on the given index\n    if (this.tabItems[index]) {\n      this.tabItems.forEach((tab) => (tab.isActive = false));\n      this.tabItems[index].isActive = true;\n    }\n  }\n\n  private checkActiveCombinedTab(items: TabComponent[]): void {\n    // Check if any combined tab is active\n    this.mainTab.isActive = false;\n    if (this.mainTab.children) {\n      items.forEach((tab) => {\n        if (tab.isActive) {\n          this.mainTab.isActive = true;\n          this.mainTab.label = tab.label;\n        }\n        if (tab.children) {\n          this.checkActiveCombinedTab(tab.children);\n        }\n      });\n    }\n  }\n\n  private setTabsDisabled(): void {\n    // Set all tabs to disabled\n    this.tabItems.forEach((item: TabComponent) => {\n      item.disabled = this.disabled;\n    });\n\n    this.cdr.detectChanges();\n  }\n\n  private checkActiveTab(tabs: TabComponent[]): void {\n    // Check if there is an active tab, if not set the first tab as active\n    if (tabs && tabs.length) {\n      const activeTab = tabs.filter((item) => item.isActive);\n\n      if (!activeTab.length) {\n        this.tabItems[0].isActive = true;\n      }\n    }\n  }\n\n  private setHeadingWidth(width: number, index: number): void {\n    // Set the width of the tab heading\n    this.tabItems[index].headingWidth = width;\n  }\n\n  private combineTabs(index: number): void {\n    // Combine tabs into a main tab starting from the given index\n    this.mainTab.label = this.tabItems[index]?.label;\n    this.mainTab.children = this.tabItems.slice(index, this.tabItems.length);\n    this.mainTab.children.forEach((tab) => {\n      tab.isChild = true;\n    });\n  }\n\n  private checkEmptyPlace(emptyPlaceWidth: number): void {\n    // Check if there is empty space and adjust tabs accordingly\n    this.tabItems.forEach((tab) => {\n      if (this.mainTab.children && emptyPlaceWidth >= tab.headingWidth) {\n        this.cutOutCombinedTab();\n        emptyPlaceWidth = emptyPlaceWidth - tab.headingWidth;\n      }\n    });\n  }\n\n  private cutOutCombinedTab(): void {\n    // Cut out combined tabs if there are more than the minimum amount\n    if (this.mainTab.children.length > MIN_AMOUNT_ITEMS_COMBINED_TABS) {\n      this.mainTab.children[0].isChild = false;\n      this.mainTab.children.splice(0, 1);\n      this.mainTab.label = this.mainTab.children[0].label;\n    } else {\n      this.mainTab.children.forEach((tab) => (tab.isChild = false));\n      this.mainTab.children = [];\n    }\n  }\n}\n","<div class=\"dds-tabs {{customClass}}\"\n     [ngClass]=\"{\n        'dds-tabs_inverse': isInverse\n      }\"\n     #tabs>\n  <div [theme]=\"theme\"\n       [size]=\"size\"\n       [attr.aria-label]=\"ariaLabel\"\n       [themeType]=\"themeType\"\n       [ddsTheme]=\"themeConfig\"\n       role=\"tablist\"\n       data-qa=\"tabs\"\n       [attr.tabindex]=\"isFocusedFirstEl ? -1 : 0\"\n       class=\"dds-tabs__header\"\n       (focus)=\"headerFocusHandler()\"\n       (mousedown)=\"headerMouseHandler()\"\n       (keydown)=\"headerKeydownHandler($event)\"\n       #tabsHeader>\n\n    @for (tab of tabItems; track tab) {\n      @if (tab.children && !tab.isChild) {\n        <button [ddsSticker]=\"tabDropdown\"\n                [stickerPosition]=\"stickerPosition\"\n                [stickerIndent]=\"stickerIndent\"\n                [stickerWidth]=\"stickerWidth\"\n                [stickerShift]=\"stickerShift\"\n                [stickerMaxHeight]=\"stickerMaxHeight\"\n                [stickerCustomClass]=\"stickerCustomClass\"\n                [stickerIsDynamic]=\"stickerIsDynamic\"\n                [stickerIsResponsive]=\"isResponsive\"\n                [ngClass]=\"{\n                'dds-tabs__header-item_with-icon': tab.icon,\n                'dds-tabs__header-item_active': tab.isActive,\n                'dds-tabs__header-item_disabled': tab.disabled\n              }\"\n                [disabled]=\"tab.disabled\"\n                aria-haspopup=\"dialog\"\n                [attr.aria-expanded]=\"tab.isExpanded\"\n                [attr.aria-selected]=\"tab.isActive\"\n                [attr.aria-disabled]=\"tab.disabled\"\n                class=\"dds-tabs__header-item dds-tabs__header-item_has-children\"\n                role=\"tab\"\n                tabindex=\"-1\"\n                data-qa=\"tab\"\n                (blur)=\"btnBlurHandler()\"\n                (keydown)=\"keydownHandler($event, stickerDir)\"\n                (onShown)=\"dropdownTab(true, tab, tabHeaderItem, stickerDir)\"\n                (onHidden)=\"dropdownTab(false, tab, tabHeaderItem); onHidden();\"\n                #stickerDir=\"dds-sticker\"\n                #tabHeaderItem>\n          <ng-container *ngTemplateOutlet=\"tabButtonContent; context:{tab: tab}\"></ng-container>\n          <ng-container *ngTemplateOutlet=\"tabCounter; context:{tab: tab}\"></ng-container>\n          <span class=\"dds-tabs__header-icon dds-tabs__header-icon_dropdown dds-icon dds-icon_arrow-down\"></span>\n          <ng-template #tabDropdown>\n            <dds-context-menu [label]=\"tab.label\"\n                              [ariaLabel]=\"popupAriaLabel\"\n                              [isResponsive]=\"isResponsive\"\n                              class=\"dds-tabs__list\"\n                              data-qa=\"tab-list\"\n                              (onInit)=\"getContextMenu($event, tab.children)\"\n                              (keyboardFocusOut)=\"focusOut()\"\n                              ddsResize>\n              @for (childTab of tab.children; track childTab) {\n                <dds-context-menu-item [counter]=\"childTab.counter\"\n                                       [disabled]=\"tab.disabled\"\n                                       data-qa=\"tab-item\"\n                                       (selectedItem)=\"selectTab(childTab, tab)\">\n                  <ng-container *ngTemplateOutlet=\"tabButtonContent; context:{tab: childTab}\"></ng-container>\n                </dds-context-menu-item>\n              }\n            </dds-context-menu>\n          </ng-template>\n        </button>\n\n        <span class=\"hidden-aria-polite\"\n            aria-live=\"polite\">{{isExpandedText(tab.isExpanded)}}</span>\n      }\n      @if (!tab.children && !tab.isChild) {\n        <button [ngClass]=\"{\n                'dds-tabs__header-item_with-icon': tab.icon,\n                'dds-tabs__header-item_active': tab.isActive,\n                'dds-tabs__header-item_disabled': tab.disabled\n              }\"\n                [disabled]=\"tab.disabled\"\n                [attr.aria-disabled]=\"tab.disabled\"\n                [attr.aria-selected]=\"tab.isActive\"\n                role=\"tab\"\n                tabindex=\"-1\"\n                class=\"dds-tabs__header-item\"\n                (click)=\"selectTab(tab)\"\n                (blur)=\"btnBlurHandler()\"\n                #tabHeaderItem>\n          <ng-container *ngTemplateOutlet=\"tabButtonContent; context:{tab: tab}\"></ng-container>\n          <ng-container *ngTemplateOutlet=\"tabCounter; context:{tab: tab}\"></ng-container>\n        </button>\n      }\n    }\n\n    @if (mainTab.children?.length) {\n      <button [ddsSticker]=\"mainTabDropdown\"\n              [stickerPosition]=\"stickerPosition\"\n              [stickerIndent]=\"stickerIndent\"\n              [stickerWidth]=\"stickerWidth\"\n              [stickerShift]=\"stickerShift\"\n              [stickerMaxHeight]=\"stickerMaxHeight\"\n              [stickerCustomClass]=\"stickerCustomClass\"\n              [stickerIsDynamic]=\"stickerIsDynamic\"\n              [stickerIsResponsive]=\"isResponsive\"\n              [ngClass]=\"{\n              'dds-tabs__header-item_with-icon': mainTab.icon,\n              'dds-tabs__header-item_active': mainTab.isActive,\n              'dds-tabs__header-item_disabled': disabled\n            }\"\n              [disabled]=\"disabled\"\n              aria-haspopup=\"dialog\"\n              [attr.aria-expanded]=\"mainTab.isExpanded\"\n              [attr.aria-selected]=\"mainTab.isActive\"\n              [attr.aria-disabled]=\"disabled\"\n              role=\"tab\"\n              class=\"dds-tabs__header-item dds-tabs__header-item_has-children\"\n              tabindex=\"-1\"\n              (keydown)=\"keydownHandler($event, stickerDir)\"\n              (onShown)=\"mainTabDropdownOpened(true, tabHeaderItem, stickerDir)\"\n              (onHidden)=\"mainTabDropdownOpened(false, tabHeaderItem); onHidden();\"\n              (blur)=\"btnBlurHandler()\"\n              #tabHeaderItem\n              #stickerDir=\"dds-sticker\">\n        <ng-container *ngTemplateOutlet=\"tabButtonContent; context:{tab: mainTab}\"></ng-container>\n        <ng-container *ngTemplateOutlet=\"tabCounter; context:{tab: mainTab}\"></ng-container>\n        <span class=\"dds-tabs__header-icon dds-tabs__header-icon_dropdown dds-icon dds-icon_arrow-down\"></span>\n        <ng-template #mainTabDropdown>\n          <dds-context-menu [label]=\"mainTab.label\"\n                            [ariaLabel]=\"popupAriaLabel\"\n                            [isResponsive]=\"isResponsive\"\n                            class=\"dds-tabs__list\"\n                            ddsResize\n                            (onInit)=\"getContextMenu($event, mainTab.children)\"\n                            (keyboardFocusOut)=\"focusOut()\">\n            @for (childTab of mainTab.children; track childTab) {\n              @if (childTab.children) {\n                <dds-context-menu-group [label]=\"childTab.label\">\n                  @for (childTab of childTab.children; track childTab) {\n                    <dds-context-menu-item [counter]=\"childTab.counter\"\n                                           [disabled]=\"childTab.disabled\"\n                                           (selectedItem)=\"selectTab(childTab)\">\n                      <ng-container *ngTemplateOutlet=\"tabButtonContent; context:{tab: childTab}\"></ng-container>\n                    </dds-context-menu-item>\n                  }\n                </dds-context-menu-group>\n              }\n              @if (!childTab.children) {\n                <dds-context-menu-item [counter]=\"childTab.counter\"\n                                       [disabled]=\"childTab.disabled\"\n                                       (selectedItem)=\"selectTab(childTab)\">\n                  <ng-container *ngTemplateOutlet=\"tabButtonContent; context:{tab: childTab}\"></ng-container>\n                </dds-context-menu-item>\n              }\n            }\n          </dds-context-menu>\n        </ng-template>\n      </button>\n\n      <span class=\"hidden-aria-polite\"\n            aria-live=\"polite\">{{isExpandedText(mainTab.isExpanded)}}</span>\n    }\n\n    <ng-template #tabButtonContent\n                 let-tab=\"tab\">\n      @if (tab.icon) {\n        <span [ngClass]=\"{\n              'dds-tabs__header-icon_only': !tab.label && !tab.counter && !tab.disabled\n            }\"\n              class=\"dds-tabs__header-icon dds-icon {{tab.icon}}\">\n        </span>\n      }\n\n      @if (tab.label) {\n        <span class=\"dds-tabs__header-text\">{{ tab.label }}</span>\n      }\n    </ng-template>\n\n    <ng-template #tabCounter\n                 let-tab=\"tab\">\n      @if (tab.counter) {\n        <span class=\"dds-counter dds-tabs__header-counter\"\n              [ngClass]=\"{\n              'dds-counter_inverse': isInverse\n            }\">\n          {{tab.counter}}\n        </span>\n      }\n    </ng-template>\n\n  </div>\n\n  <div class=\"dds-tabs__content\"\n       tabindex=\"0\"\n       ddsFocus\n       #tabsContent>\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, TemplateRef\n} from '@angular/core';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { TabsComponent } from '../tabs/tabs.component';\n\n@Component({\n  selector: 'dds-tab',\n  templateUrl: './tab.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule],\n})\nexport class TabComponent implements OnInit, OnChanges, OnDestroy {\n  // The label text for the tab.\n  @Input() label: string | undefined;\n\n  // The icon class for the tab.\n  @Input() icon: string | undefined;\n\n  // Custom CSS class for the tab.\n  @Input() customClass: string | undefined;\n\n  // Counter value to display on the tab.\n  @Input() counter: number | undefined;\n\n  // Indicates whether the tab is disabled.\n  @Input() disabled: boolean | undefined;\n\n  // Child tabs of the current tab.\n  @Input() children: TabComponent[] | undefined;\n\n  // Sets the active state of the tab.\n  @Input()\n  set isActive(value: boolean | undefined) {\n    this._isActive = value;\n    this.cdr.detectChanges();\n  }\n\n  // Gets the active state of the tab.\n  get isActive(): boolean | undefined {\n    return this._isActive;\n  }\n\n  // Event emitted when the tab is changed.\n  @Output() tabChanged = new EventEmitter<TabComponent>();\n\n  // Event emitted when the dropdown is triggered.\n  @Output() onDropdown = new EventEmitter<TabComponent>();\n\n  // Template reference for the tab content.\n  @ContentChild('tabContent', { read: TemplateRef }) tabContentTemplate;\n\n  // The width of the tab heading.\n  public headingWidth: number;\n\n  // Indicates whether the tab is a child tab.\n  public isChild: boolean;\n\n  // Indicates whether the tab is a main tab.\n  public isMain: boolean;\n\n  // Indicates whether the tab is expanded.\n  public isExpanded = false;\n\n  private _isActive: boolean;\n\n  constructor(public cdr: ChangeDetectorRef, public tabs: TabsComponent, private ddsConfig: DdsConfigService) { }\n\n  public ngOnInit(): void {\n    this.tabs.addTabItem(this);\n    this.markChildTabs();\n  }\n\n  public ngOnChanges(change: SimpleChanges): void {\n    if (change.isActive && change.isActive.currentValue) {\n      this.tabs.selectTab(this);\n    }\n\n    this.tabs.cdr.markForCheck();\n  }\n\n  public ngOnDestroy(): void {\n    this.tabs.removeTabItem(this);\n  }\n\n  // Marks child tabs and removes the tab from the tab set if it is a child tab.\n  private markChildTabs(): void {\n    if (this.children) {\n      this.children.forEach((childTab) => (childTab.isChild = true));\n    }\n    if (this.isChild) {\n      this.tabs.tabItems.splice(this.tabs.tabItems.indexOf(this), 1);\n    }\n  }\n}\n","@if (isActive) {\n  <div role=\"tabpanel\"\n       class=\"dds-tab__content-item {{customClass}}\">\n    @if (tabContentTemplate) {\n      <ng-content *ngTemplateOutlet=\"tabContentTemplate\"></ng-content>\n    } @else {\n      <ng-content></ng-content>\n    }\n  </div>\n}","import { NgModule } from '@angular/core';\nimport { TabComponent } from './tab/tab.component';\nimport { TabsComponent } from './tabs/tabs.component';\n\n@NgModule({\n  declarations: [],\n  imports: [TabComponent, TabsComponent],\n  exports: [TabComponent, TabsComponent],\n})\nexport class TabsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TabsComponent"],"mappings":"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"}