{"version":3,"file":"skyux-tabs.mjs","sources":["../../../../../libs/components/tabs/src/lib/modules/shared/sky-tabs-resources.module.ts","../../../../../libs/components/tabs/src/lib/modules/shared/tab-id.service.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-adapter.service.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-group.service.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.service.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tab.component.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tab.component.html","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-group.component.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-group.component.html","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.component.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.component.html","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.module.ts","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.service.ts","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form-section.component.ts","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form-section.component.html","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/types/sectioned-form-message-type.ts","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.component.ts","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.component.html","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.module.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tab-button-adapter.service.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset.service.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tab-button.component.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tab-button.component.html","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-permalink.service.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tab.component.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tab.component.html","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-nav-button-disabled.pipe.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-nav-button.component.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-nav-button.component.html","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-adapter.service.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset.component.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset.component.html","../../../../../libs/components/tabs/src/lib/modules/tabs/tabs.module.ts","../../../../../libs/components/tabs/src/skyux-tabs.ts"],"sourcesContent":["/* istanbul ignore file */\n\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-tabs' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n  SkyI18nModule,\n  SkyLibResources,\n  SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n  'EN-US': {\n    skyux_tab_add: { message: 'Add tab' },\n    skyux_tab_close: { message: 'Close {0} tab' },\n    skyux_tabs_navigator_finish: { message: 'Finish' },\n    skyux_tabs_navigator_next: { message: 'Next' },\n    skyux_tabs_navigator_previous: { message: 'Previous' },\n    skyux_tab_open: { message: 'Open tab' },\n    skyux_vertical_tabs_show_tabs_text: { message: 'Tab list' },\n    skyux_wizard_sr_step_current: { message: 'Step {0} of {1}, current: {2}' },\n    skyux_wizard_sr_step_completed: {\n      message: 'Step {0} of {1}, completed: {2}',\n    },\n    skyux_wizard_sr_step_unavailable: {\n      message: 'Step {0} of {1}, unavailable: {2}',\n    },\n  },\n  'FR-CA': {\n    skyux_tab_add: { message: 'Ajouter un onglet' },\n    skyux_tab_close: { message: 'Fermer l’onglet {0}' },\n    skyux_tabs_navigator_finish: { message: 'Terminer' },\n    skyux_tabs_navigator_next: { message: 'Suivant' },\n    skyux_tabs_navigator_previous: { message: 'Précédent' },\n    skyux_tab_open: { message: 'Ouvrir l’onglet' },\n    skyux_vertical_tabs_show_tabs_text: { message: 'Liste des onglets' },\n    skyux_wizard_sr_step_current: {\n      message: 'Étape {0} de {1}, en cours : {2}',\n    },\n    skyux_wizard_sr_step_completed: {\n      message: 'Étape {0} de {1}, terminée : {2}',\n    },\n    skyux_wizard_sr_step_unavailable: {\n      message: 'Étape {0} de {1}, non disponible : {2}',\n    },\n  },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n  exports: [SkyI18nModule],\n})\nexport class SkyTabsResourcesModule {}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Tracks the element IDs for all tabs within a tablist.\n * @internal\n */\n@Injectable()\nexport class SkyTabIdService {\n  public get ids(): Observable<string[]> {\n    return this.#idsObs;\n  }\n\n  #ids: Map<string, string>;\n  #ids$: BehaviorSubject<string[]>;\n  #idsObs: Observable<string[]>;\n\n  constructor() {\n    this.#ids = new Map();\n    this.#ids$ = new BehaviorSubject<string[]>([]);\n    this.#idsObs = this.#ids$.asObservable();\n  }\n\n  /**\n   * Associates a tab's ID with its parent tablist.\n   * @param {string} id A unique ID for the tab's registration.\n   * @param {string} elementId The ID applied to the tab's element.\n   */\n  public register(id: string, elementId: string): void {\n    if (!this.#ids.has(id) || this.#ids.get(id) !== elementId) {\n      this.#ids.set(id, elementId);\n      this.#emitIds();\n    }\n  }\n\n  /**\n   * Disassociates a tab's ID with its parent tablist.\n   * @param {string} id The ID used to register the tab.\n   */\n  public unregister(id: string): void {\n    if (this.#ids.has(id)) {\n      this.#ids.delete(id);\n      this.#emitIds();\n    }\n  }\n\n  #emitIds(): void {\n    this.#ids$.next(Array.from(this.#ids.values()));\n  }\n}\n","import { DOCUMENT, ElementRef, Injectable, inject } from '@angular/core';\n\nconst VERTICAL_TABSET_BUTTON_SELECTOR = '.sky-vertical-tabset-button';\nconst VERTICAL_TABSET_BUTTON_DISABLED_SELECTOR = `${VERTICAL_TABSET_BUTTON_SELECTOR}-disabled`;\n\n@Injectable()\nexport class SkyVerticalTabsetAdapterService {\n  #document = inject(DOCUMENT);\n\n  public scrollToContentTop(element: ElementRef): void {\n    element.nativeElement.scrollTop = 0;\n  }\n\n  public focusButton(elRef: ElementRef<HTMLElement> | undefined): boolean {\n    return this.#focusButtonEl(elRef?.nativeElement);\n  }\n\n  public focusFirstButton(\n    tabGroups: ElementRef<HTMLElement> | undefined,\n  ): void {\n    const tabGroupsEl = tabGroups?.nativeElement;\n\n    if (tabGroupsEl) {\n      const firstButtonEl = tabGroupsEl.querySelector(\n        VERTICAL_TABSET_BUTTON_SELECTOR,\n      ) as HTMLElement | null;\n\n      if (firstButtonEl) {\n        firstButtonEl.focus();\n      }\n    }\n  }\n\n  public focusNextButton(tabGroups: ElementRef | undefined): void {\n    this.#focusSiblingButton(tabGroups);\n  }\n\n  public focusPreviousButton(tabGroups: ElementRef | undefined): void {\n    this.#focusSiblingButton(tabGroups, true);\n  }\n\n  #focusSiblingButton(\n    tabGroups: ElementRef<HTMLElement> | undefined,\n    previous?: boolean,\n  ): void {\n    if (tabGroups) {\n      const focusedEl = this.#document.activeElement as HTMLElement | null;\n\n      if (focusedEl?.matches(VERTICAL_TABSET_BUTTON_SELECTOR)) {\n        const tabGroupsEl = tabGroups.nativeElement;\n\n        const buttonEls = Array.from(\n          tabGroupsEl.querySelectorAll(VERTICAL_TABSET_BUTTON_SELECTOR),\n        ) as HTMLElement[];\n\n        if (previous) {\n          buttonEls.reverse();\n        }\n\n        const focusedIndex = buttonEls.indexOf(focusedEl);\n\n        for (let i = 1, n = buttonEls.length; i < n; i++) {\n          // Offset the index of the next button from the index of the\n          // currently focused button, circling back to the first button\n          // when the end of the list is reached.\n          const offset = (i + focusedIndex) % n;\n\n          if (this.#focusButtonEl(buttonEls[offset])) {\n            break;\n          }\n        }\n      }\n    }\n  }\n\n  #focusButtonEl(el: HTMLElement | null | undefined): boolean {\n    if (el && !el.matches(VERTICAL_TABSET_BUTTON_DISABLED_SELECTOR)) {\n      el.focus();\n      return this.#elHasFocus(el);\n    }\n\n    return false;\n  }\n\n  #elHasFocus(el: HTMLElement | null | undefined): boolean {\n    return !!el && el === this.#document.activeElement;\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { SkyVerticalTabsetGroupMessage } from './vertical-tabset-group-message';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyVerticalTabsetGroupService {\n  public messageStream = new Subject<SkyVerticalTabsetGroupMessage>();\n}\n","import { ElementRef, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SkyMediaQueryService } from '@skyux/core';\n\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\n\nimport { SkyVerticalTabComponent } from './vertical-tab.component';\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyVerticalTabsetGroupComponent } from './vertical-tabset-group.component';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyVerticalTabsetService {\n  public activeIndex: number | undefined = undefined;\n\n  public content: ElementRef | undefined;\n\n  public hidingTabs = new BehaviorSubject(false);\n\n  public indexChanged = new ReplaySubject<number | undefined>(1);\n\n  public maintainTabContent: boolean | undefined = false;\n\n  public showingTabs = new BehaviorSubject(false);\n\n  public switchingMobile = new Subject<boolean>();\n\n  public tabs: SkyVerticalTabComponent[] = [];\n\n  public tabAdded = new Subject<SkyVerticalTabComponent>();\n\n  public tabClicked = new ReplaySubject<boolean>(1);\n\n  #groups: SkyVerticalTabsetGroupComponent[] = [];\n\n  #contentAdded = false;\n\n  #tabsVisible = false;\n\n  #isMobile = false;\n\n  #adapterSvc = inject(SkyVerticalTabsetAdapterService);\n\n  constructor() {\n    inject(SkyMediaQueryService)\n      .breakpointChange.pipe(takeUntilDestroyed())\n      .subscribe((breakpoint) => {\n        const nowMobile = breakpoint === 'xs';\n\n        if (nowMobile && !this.#isMobile) {\n          // switching to mobile\n          this.switchingMobile.next(true);\n\n          if (!this.#tabsVisible) {\n            this.hidingTabs.next(true);\n          }\n        } else if (!nowMobile && this.#isMobile) {\n          // switching to widescreen\n          this.switchingMobile.next(false);\n\n          if (!this.#tabsVisible) {\n            this.showingTabs.next(true);\n          }\n        }\n\n        this.#isMobile = nowMobile;\n      });\n  }\n\n  public addTab(tab: SkyVerticalTabComponent): void {\n    const index = this.tabs.length;\n    tab.index = index;\n\n    this.tabs.push(tab);\n\n    if (tab.active) {\n      this.activateTab(tab);\n    }\n\n    this.tabAdded.next(tab);\n  }\n\n  public destroyTab(tab: SkyVerticalTabComponent): void {\n    const tabIndex = this.tabs.indexOf(tab);\n    if (tabIndex === -1) {\n      return;\n    }\n\n    if (\n      this.maintainTabContent &&\n      tab.contentRendered &&\n      /* istanbul ignore next */\n      this.content?.nativeElement.contains(tab.tabContent?.nativeElement)\n    ) {\n      this.content?.nativeElement.removeChild(tab.tabContent?.nativeElement);\n    }\n\n    this.tabs.splice(tabIndex, 1);\n    // update tab indices\n    this.tabs.forEach((tabItem, index) => (tabItem.index = index));\n\n    if (tab.active) {\n      if (!this.maintainTabContent) {\n        this.#destroyContent();\n      }\n      // Try selecting the next tab first, and if there's no next tab then\n      // try selecting the previous one.\n      const newActiveTab = this.tabs[tabIndex] || this.tabs[tabIndex - 1];\n      /*istanbul ignore else */\n      if (newActiveTab) {\n        newActiveTab.activateTab();\n      }\n    }\n  }\n\n  public addGroup(group: SkyVerticalTabsetGroupComponent): void {\n    this.#groups.push(group);\n  }\n\n  public destroyGroup(group: SkyVerticalTabsetGroupComponent): void {\n    const groupIndex = this.#groups.indexOf(group);\n\n    if (groupIndex >= 0) {\n      this.#groups.splice(groupIndex, 1);\n    }\n  }\n\n  public activateTab(tab: SkyVerticalTabComponent): void {\n    // deactivate active tab\n    const activeTab = this.tabs.find((t) => t.index === this.activeIndex);\n    if (activeTab && activeTab.index !== tab.index) {\n      activeTab.active = false;\n      activeTab.tabDeactivated();\n    }\n\n    this.activeIndex = tab.index;\n    this.tabClicked.next(true);\n    this.#updateTabClicked();\n  }\n\n  public activeTab(): SkyVerticalTabComponent | undefined {\n    return this.tabs.find((t) => t.index === this.activeIndex);\n  }\n\n  public isMobile(): boolean {\n    return this.#isMobile;\n  }\n\n  public updateContent(): void {\n    if (!this.maintainTabContent) {\n      if (!this.#contentAdded && this.contentVisible()) {\n        // content needs to be moved\n        this.#moveContent();\n      } else if (this.#contentAdded && !this.contentVisible()) {\n        // content hidden\n        this.#contentAdded = false;\n      }\n    } else {\n      this.tabs.forEach((tab) => {\n        if (!tab.contentRendered) {\n          this.content?.nativeElement.appendChild(\n            tab.tabContent?.nativeElement,\n          );\n          tab.contentRendered = true;\n        }\n      });\n    }\n  }\n\n  public tabsVisible(): boolean {\n    return !this.isMobile() || this.#tabsVisible;\n  }\n\n  public contentVisible(): boolean {\n    return !this.isMobile() || !this.#tabsVisible;\n  }\n\n  public showTabs(): void {\n    this.#tabsVisible = true;\n    this.#contentAdded = false;\n    this.showingTabs.next(true);\n  }\n\n  public focusActiveTab(tabGroups: ElementRef | undefined): void {\n    let focused = false;\n\n    const activeTab = this.tabs.find((tab) => tab.active);\n\n    if (activeTab) {\n      const parentGroup = this.#findParentGroup(activeTab);\n\n      const buttonToFocus =\n        parentGroup && !parentGroup.open\n          ? parentGroup.groupHeadingButton\n          : activeTab.tabButton;\n\n      focused = this.#adapterSvc.focusButton(buttonToFocus);\n    }\n\n    if (!focused) {\n      this.#adapterSvc.focusFirstButton(tabGroups);\n    }\n  }\n\n  #findParentGroup(\n    tab: SkyVerticalTabComponent,\n  ): SkyVerticalTabsetGroupComponent | undefined {\n    return this.#groups.find((group) =>\n      group.tabs?.some((groupTab) => tab === groupTab),\n    );\n  }\n\n  #destroyContent(): void {\n    if (this.content) {\n      this.content.nativeElement.innerHTML = '';\n    }\n    this.content = undefined;\n  }\n\n  #moveContent(): void {\n    /* istanbul ignore else */\n    if (this.content && !this.#contentAdded) {\n      const activeTab = this.activeTab();\n      const activeContent = activeTab ? activeTab.tabContent : undefined;\n\n      if (activeContent && activeTab && activeContent.nativeElement) {\n        this.content.nativeElement.appendChild(activeContent.nativeElement);\n        activeTab.contentRendered = true;\n        this.#contentAdded = true;\n      }\n    }\n  }\n\n  #updateTabClicked(): void {\n    this.#contentAdded = false;\n\n    if (this.isMobile()) {\n      this.#tabsVisible = false;\n      this.hidingTabs.next(true);\n    }\n\n    this.indexChanged.next(this.activeIndex);\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  inject,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { SkyTabIdService } from '../shared/tab-id.service';\n\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyVerticalTabsetGroupService } from './vertical-tabset-group.service';\nimport { SkyVerticalTabsetService } from './vertical-tabset.service';\n\nlet nextId = 0;\n\n@Component({\n  selector: 'sky-vertical-tab',\n  templateUrl: './vertical-tab.component.html',\n  styleUrls: ['./vertical-tab.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class SkyVerticalTabComponent implements OnInit, OnDestroy {\n  /**\n   * Whether the tab is active when the tabset loads.\n   * @default false\n   */\n  @Input()\n  public set active(value: boolean | undefined) {\n    if (value !== this.#_active) {\n      this.#_active = value ?? false;\n\n      if (this.#_active) {\n        this.#tabsetService.activateTab(this);\n      }\n    }\n  }\n\n  public get active(): boolean {\n    return this.#_active;\n  }\n\n  #_active = false;\n\n  /**\n   * The HTML element ID of the element that contains\n   * the content that the vertical tab displays, which corresponds to the `tabId`. This property\n   * [supports accessibility rules for disclosures](https://www.w3.org/TR/wai-aria-practices-1.1/#disclosure).\n   * For more information about the `aria-controls` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-controls).\n   * @deprecated Now that the vertical tabs provide aria labels automatically, this input is no longer necessary.\n   */\n  @Input()\n  public ariaControls: string | undefined;\n\n  /**\n   * The ARIA role for the vertical tab\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n   * by indicating how the tab functions and what it controls. For information about how\n   * an ARIA role indicates what an item represents on a web page, see the\n   * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/#roles).\n   * @default \"tab\"\n   * @deprecated Any other value than `tab` could lead to a poor user experience for users with assistive technology.\n   * In the next major version, this property will be automatically set to `tab`.\n   */\n  @Input()\n  public get ariaRole(): string {\n    return this.#_ariaRole;\n  }\n  public set ariaRole(value: string | undefined) {\n    this.#_ariaRole = value ?? 'tab';\n  }\n\n  /**\n   * Whether to disable the tab.\n   */\n  @Input()\n  public disabled: boolean | undefined = false;\n\n  /**\n   * Whether to indicate that the tab has an error.\n   * @internal This is used for sectioned forms and is not currently a supported design for pure vertical tabs.\n   */\n  @Input()\n  public errorIndicator: boolean | undefined = false;\n\n  /**\n   * Whether to indicate that the tab has required content.\n   * @internal This is used for sectioned forms and is not currently a supported design for pure vertical tabs.\n   */\n  @Input()\n  public requiredIndicator: boolean | undefined = false;\n\n  /**\n   * Displays an item count alongside the tab header to indicate how many list items the tab contains.\n   */\n  @Input()\n  public tabHeaderCount: number | undefined;\n\n  /**\n   * The tab header.\n   * @required\n   */\n  @Input()\n  public tabHeading: string | undefined;\n\n  /**\n   * Whether to display a chevron-right icon on the right hand side of the tab.\n   * @internal\n   */\n  @Input()\n  public showTabRightArrow: boolean | undefined;\n\n  /**\n   * The ID for the tab.\n   * @deprecated Now that the vertical tabs provide aria labels automatically, this input is no longer necessary.\n   */\n  @Input()\n  public set tabId(value: string | undefined) {\n    this.#tabIdOrDefault = value || this.#defaultTabId;\n    this.#tabIdSvc?.register(this.#defaultTabId, this.#tabIdOrDefault);\n  }\n\n  public get tabId(): string {\n    return this.#tabIdOrDefault;\n  }\n\n  public set contentRendered(value: boolean) {\n    this.#_contentRendered = value;\n\n    /* istanbul ignore else */\n    if (this.#_contentRendered) {\n      // NOTE: Trigger another change detection cycle when the service marks\n      // this tab as \"rendered\".\n      setTimeout(() => {\n        if (this.tabContent) {\n          this.#changeRef.markForCheck();\n        }\n      });\n    }\n  }\n\n  public get contentRendered(): boolean {\n    return this.#_contentRendered;\n  }\n\n  public index: number | undefined;\n\n  public isMobile = false;\n\n  @ViewChild('tabButton')\n  public tabButton: ElementRef | undefined;\n\n  @ViewChild('tabContentWrapper')\n  public tabContent: ElementRef | undefined;\n\n  public groupService = inject(SkyVerticalTabsetGroupService, {\n    optional: true,\n  });\n\n  #_ariaRole = 'tab';\n\n  #_contentRendered = false;\n\n  #tabIdOrDefault: string;\n\n  #defaultTabId: string;\n\n  #mobileSubscription = new Subject();\n\n  #ngUnsubscribe = new Subject<void>();\n\n  readonly #adapterService = inject(SkyVerticalTabsetAdapterService);\n  readonly #changeRef = inject(ChangeDetectorRef);\n  readonly #tabsetService = inject(SkyVerticalTabsetService);\n  readonly #tabIdSvc = inject(SkyTabIdService, { optional: true });\n\n  constructor() {\n    this.#tabIdOrDefault = this.#defaultTabId = `sky-vertical-tab-${++nextId}`;\n    this.tabId = this.#defaultTabId;\n  }\n\n  public ngOnInit(): void {\n    this.isMobile = this.#tabsetService.isMobile();\n    this.#changeRef.markForCheck();\n\n    this.#tabsetService.switchingMobile.subscribe((mobile: boolean) => {\n      this.isMobile = mobile;\n      this.#changeRef.markForCheck();\n    });\n\n    this.#tabsetService.addTab(this);\n  }\n\n  public ngOnDestroy(): void {\n    this.#tabIdSvc?.unregister(this.#defaultTabId);\n    this.#mobileSubscription.unsubscribe();\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n    this.#tabsetService.destroyTab(this);\n  }\n\n  public activateTab(): void {\n    if (!this.disabled) {\n      this.active = true;\n      this.#tabsetService.activateTab(this);\n\n      this.#changeRef.markForCheck();\n    }\n  }\n\n  public focusButton(): void {\n    this.#adapterService.focusButton(this.tabButton);\n  }\n\n  public tabButtonActivate(event: Event): void {\n    this.activateTab();\n    event.stopPropagation();\n  }\n\n  public tabButtonArrowLeft(event: Event): void {\n    if (this.groupService) {\n      this.groupService.messageStream.next({\n        messageType: 'focus',\n      });\n\n      event.preventDefault();\n    }\n  }\n\n  public tabDeactivated(): void {\n    this.#changeRef.markForCheck();\n  }\n}\n","<a\n  #tabButton\n  class=\"sky-vertical-tab sky-vertical-tabset-button\"\n  [attr.aria-controls]=\"\n    isMobile ? undefined : ariaControls || tabContentPane.id\n  \"\n  [attr.aria-disabled]=\"isMobile ? undefined : disabled || undefined\"\n  [attr.aria-selected]=\"isMobile ? undefined : active\"\n  [attr.id]=\"tabId\"\n  [attr.role]=\"isMobile ? undefined : ariaRole\"\n  [ngClass]=\"{\n    'sky-vertical-tab-active': active,\n    'sky-vertical-tabset-button-disabled': disabled,\n    'sky-font-deemphasized': disabled\n  }\"\n  [tabIndex]=\"-1\"\n  (click)=\"activateTab()\"\n  (keyup.arrowleft)=\"tabButtonArrowLeft($event)\"\n  (keyup.enter)=\"tabButtonActivate($event)\"\n  (keyup.space)=\"tabButtonActivate($event)\"\n>\n  <div class=\"sky-vertical-tab-display\">\n    <div\n      class=\"sky-vertical-tab-heading\"\n      [ngClass]=\"{ 'sky-control-label-required': requiredIndicator }\"\n    >\n      <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n      @if (tabHeaderCount || tabHeaderCount === 0) {\n        <span class=\"sky-vertical-tab-count\"> ({{ tabHeaderCount }}) </span>\n      }\n    </div>\n    @if (errorIndicator) {\n      <sky-status-indicator\n        class=\"sky-vertical-tab-heading-error\"\n        descriptionType=\"error\"\n        indicatorType=\"danger\"\n      />\n    }\n    @if (isMobile && showTabRightArrow) {\n      <sky-icon class=\"sky-vertical-tab-right-arrow\" iconName=\"chevron-right\" />\n    }\n  </div>\n</a>\n\n<div #tabContentWrapper skyResponsiveHost>\n  <div\n    #tabContentPane\n    class=\"sky-vertical-tab-content-pane\"\n    role=\"tabpanel\"\n    tabindex=\"0\"\n    skyId\n    [attr.aria-labelledby]=\"tabId\"\n    [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n  >\n    <ng-content />\n  </div>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  ViewChild,\n  inject,\n} from '@angular/core';\nimport { SkyIdService } from '@skyux/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyTabIdService } from '../shared/tab-id.service';\n\nimport { SkyVerticalTabComponent } from './vertical-tab.component';\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyVerticalTabsetGroupService } from './vertical-tabset-group.service';\nimport { SkyVerticalTabsetService } from './vertical-tabset.service';\n\n@Component({\n  selector: 'sky-vertical-tabset-group',\n  templateUrl: './vertical-tabset-group.component.html',\n  styleUrls: ['./vertical-tabset-group.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [SkyVerticalTabsetGroupService],\n  standalone: false,\n})\nexport class SkyVerticalTabsetGroupComponent implements OnInit, OnDestroy {\n  /**\n   * Whether to disable the ability to expand and collapse the group.\n   * @default false\n   */\n  @Input()\n  public set disabled(value: boolean | undefined) {\n    this.#_disabled = value;\n    this.#updateSlideDirection();\n  }\n\n  public get disabled(): boolean | undefined {\n    return this.#_disabled;\n  }\n\n  /**\n   * The header for the collapsible group of tabs.\n   */\n  @Input()\n  public groupHeading: string | undefined;\n\n  /**\n   * Whether the collapsible group is expanded.\n   * @default false\n   */\n  @Input()\n  public set open(value: boolean | undefined) {\n    this.#_open = value;\n    this.#updateSlideDirection();\n  }\n\n  public get open(): boolean | undefined {\n    return this.#_open;\n  }\n\n  @ContentChildren(SkyVerticalTabComponent)\n  public tabs: QueryList<SkyVerticalTabComponent> | undefined;\n\n  @ViewChild('groupHeadingButton')\n  public groupHeadingButton: ElementRef | undefined;\n  public slideDirection: 'down' | 'up' = 'up';\n\n  protected groupId: string;\n\n  #ngUnsubscribe = new Subject<void>();\n\n  readonly #tabService = inject(SkyVerticalTabsetService);\n  readonly #changeRef = inject(ChangeDetectorRef);\n  #adapterService = inject(SkyVerticalTabsetAdapterService);\n  #idService = inject(SkyIdService);\n  #tabIdService = inject(SkyTabIdService);\n  #groupService = inject(SkyVerticalTabsetGroupService);\n\n  #_disabled: boolean | undefined;\n  #_open: boolean | undefined = false;\n\n  constructor() {\n    this.groupId = this.#idService.generateId();\n\n    this.#groupService.messageStream.subscribe((message) => {\n      switch (message.messageType) {\n        case 'focus':\n          this.#focusButton();\n      }\n    });\n  }\n\n  public ngOnInit(): void {\n    this.#tabIdService.register(this.groupId, this.groupId);\n\n    this.#tabService.addGroup(this);\n\n    this.#tabService.hidingTabs\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe(() => this.#tabsHidden());\n\n    this.#tabService.showingTabs\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe(() => this.#tabsShown());\n\n    this.#tabService.tabClicked\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe(() => this.#tabClicked());\n  }\n\n  public ngOnDestroy(): void {\n    this.#tabService.destroyGroup(this);\n\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n\n    this.#tabIdService.unregister(this.groupId);\n  }\n\n  public toggleMenuOpen(): void {\n    if (!this.disabled) {\n      this.open = !this.open;\n    }\n\n    this.#updateSlideDirection();\n    this.#changeRef.markForCheck();\n  }\n\n  protected groupButtonArrowLeft(event: Event): void {\n    if (this.open) {\n      this.toggleMenuOpen();\n    }\n\n    event.preventDefault();\n  }\n\n  protected groupButtonArrowRight(event: Event): void {\n    if (this.open) {\n      this.tabs?.get(0)?.focusButton();\n    } else {\n      this.toggleMenuOpen();\n    }\n\n    event.preventDefault();\n  }\n\n  public isActive(): boolean {\n    return !!this.tabs && this.tabs.find((t) => !!t.active) !== undefined;\n  }\n\n  #tabClicked(): void {\n    this.#changeRef.markForCheck();\n  }\n\n  #tabsHidden(): void {\n    this.#updateSlideDirection();\n    this.#changeRef.markForCheck();\n  }\n\n  #tabsShown(): void {\n    this.#updateSlideDirection();\n    this.#changeRef.markForCheck();\n  }\n\n  #updateSlideDirection(): void {\n    this.slideDirection = this.open && !this.disabled ? 'down' : 'up';\n  }\n\n  #focusButton(): void {\n    this.#adapterService.focusButton(this.groupHeadingButton);\n  }\n}\n","<div class=\"sky-vertical-tabset-group\">\n  <!-- [ngClass] includes font classes for both modern and default styles -->\n  <div\n    class=\"sky-vertical-tabset-group-header\"\n    [ngClass]=\"{\n      'sky-vertical-tabset-group-header-active': isActive(),\n      'sky-vertical-tabset-group-header-sub-open': open,\n      'sky-font-deemphasized': disabled\n    }\"\n  >\n    <button\n      #groupHeadingButton\n      class=\"sky-vertical-tabset-button\"\n      role=\"tab\"\n      type=\"button\"\n      [attr.aria-controls]=\"groupContent.id\"\n      [attr.aria-disabled]=\"disabled || undefined\"\n      [attr.aria-expanded]=\"!disabled && open\"\n      [id]=\"groupId\"\n      [ngClass]=\"{\n        'sky-vertical-tabset-button-disabled': disabled\n      }\"\n      [tabIndex]=\"-1\"\n      (click)=\"toggleMenuOpen()\"\n      (keyup.arrowleft)=\"groupButtonArrowLeft($event)\"\n      (keyup.arrowright)=\"groupButtonArrowRight($event)\"\n    >\n      {{ groupHeading }}\n      <sky-expansion-indicator\n        class=\"sky-vertical-tabset-group-expansion-indicator\"\n        [direction]=\"!disabled && open ? 'up' : 'down'\"\n      />\n    </button>\n  </div>\n  <sky-animation-slide [opened]=\"slideDirection === 'down'\">\n    <div\n      #groupContent\n      class=\"sky-vertical-tabset-group-content\"\n      skyId\n      [attr.labelledby]=\"groupId\"\n    >\n      <ng-content />\n    </div>\n  </sky-animation-slide>\n</div>\n","import {\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n  computed,\n  inject,\n  input,\n  signal,\n} from '@angular/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyTabIdService } from '../shared/tab-id.service';\n\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyVerticalTabsetService } from './vertical-tabset.service';\n\n/**\n * The default width of the tabs pane. Also serves as the maximum width of the\n * pane for any `tabWidth` value.\n */\nconst DEFAULT_TAB_WIDTH = '25%';\n\n@Component({\n  selector: 'sky-vertical-tabset',\n  templateUrl: './vertical-tabset.component.html',\n  styleUrls: ['./vertical-tabset.component.scss'],\n  providers: [SkyTabIdService, SkyVerticalTabsetService],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class SkyVerticalTabsetComponent\n  implements OnInit, AfterViewChecked, OnDestroy\n{\n  /**\n   * The text to display on the show tabs button on mobile devices.\n   */\n  @Input()\n  public showTabsText: string | undefined;\n\n  /**\n   * The ARIA label for the tabset. This sets the tabset's `aria-label` attribute to provide a text equivalent for screen readers\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * If the tabset includes a visible label, use `ariaLabelledBy` instead.\n   * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n   */\n  @Input()\n  public ariaLabel: string | undefined;\n\n  /**\n   * The HTML element ID of the element that labels\n   * the tabset. This sets the tabset's `aria-labelledby` attribute to provide a text equivalent for screen readers\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * If the tabset does not include a visible label, use `ariaLabel` instead.\n   * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n   */\n  @Input()\n  public ariaLabelledBy: string | undefined;\n\n  /**\n   * The ARIA role for the vertical tabset\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n   * by indicating how the tabset functions and what it controls. For information about how\n   * an ARIA role indicates what an item represents on a web page, see the\n   * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/#roles).\n   * @default \"tablist\"\n   * @deprecated Any other value than `tablist` could lead to a poor user experience for users with assistive technology.\n   * In the next major version, this property will be automatically set to `tablist`.\n   */\n  @Input()\n  public get ariaRole(): string {\n    return this.#_ariaRole;\n  }\n\n  public set ariaRole(value: string | undefined) {\n    this.#_ariaRole = value ?? 'tablist';\n  }\n\n  /**\n   * Whether the vertical tabset loads tab content during initialization so that it\n   * displays content without moving around elements in the content container.\n   * @default false\n   */\n  @Input()\n  public maintainTabContent: boolean | undefined = false;\n\n  /**\n   * The width of the tabs pane as a CSS width value (such as `200px`, `15rem`,\n   * or `20%`). Set to `\"auto\"` to size based on tab label content. Maximum\n   * width is 25%.\n   * @default \"25%\"\n   */\n  public readonly tabWidth = input(DEFAULT_TAB_WIDTH, {\n    transform: (value: string | undefined): string =>\n      value?.trim() || DEFAULT_TAB_WIDTH,\n  });\n\n  /**\n   * Fires when the active tab changes. Emits the index of the active tab. The\n   * index is based on the tab's position when it loads.\n   */\n  @Output()\n  public activeChange = new EventEmitter<number>();\n\n  @ViewChild('groupContainerWrapper')\n  public tabGroups: ElementRef | undefined;\n\n  @ViewChild('skySideContent')\n  public content: ElementRef | undefined;\n\n  @ViewChild('contentContainerWrapper')\n  public contentWrapper: ElementRef | undefined;\n\n  public ariaOwns: string | undefined;\n\n  public readonly isMobile = signal(false);\n\n  protected tablistHasFocus = false;\n\n  #ngUnsubscribe = new Subject<void>();\n  #_ariaRole = 'tablist';\n\n  readonly #resources = inject(SkyLibResourcesService);\n  readonly #changeRef = inject(ChangeDetectorRef);\n\n  public readonly adapterService = inject(SkyVerticalTabsetAdapterService);\n  public readonly tabService = inject(SkyVerticalTabsetService);\n  public readonly tabIdSvc = inject(SkyTabIdService);\n\n  public ngOnInit(): void {\n    this.tabService.maintainTabContent = this.maintainTabContent;\n\n    this.tabService.indexChanged\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((index) => {\n        this.activeChange.emit(index);\n        if (this.contentWrapper) {\n          this.adapterService.scrollToContentTop(this.contentWrapper);\n        }\n        this.#changeRef.markForCheck();\n      });\n\n    this.tabService.switchingMobile\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((mobile: boolean) => {\n        this.isMobile.set(mobile);\n      });\n\n    if (this.tabService.isMobile()) {\n      this.isMobile.set(true);\n    }\n    if (!this.showTabsText) {\n      this.#resources\n        .getString('skyux_vertical_tabs_show_tabs_text')\n        .pipe(take(1))\n        .subscribe((resource) => {\n          /* sanity check */\n          /* istanbul ignore else */\n          if (!this.showTabsText) {\n            this.showTabsText = resource;\n          }\n        });\n    }\n  }\n\n  public ngAfterViewChecked(): void {\n    this.tabService.content = this.content;\n    this.tabService.updateContent();\n  }\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  protected tabsetFocus(): void {\n    this.tabService.focusActiveTab(this.tabGroups);\n  }\n\n  protected trapFocusInTablist(): void {\n    // This will set the tab index of the the vertical tabset element to -1\n    // while focus is inside the tab list, allowing Shift+Tab to move\n    // to the next element above the tab list element. Otherwise focus would\n    // be trapped on the currently focused tab.\n    this.tablistHasFocus = true;\n  }\n\n  protected resetTabIndex(): void {\n    this.tablistHasFocus = false;\n  }\n\n  protected tabGroupsArrowDown(): void {\n    this.adapterService.focusNextButton(this.tabGroups);\n  }\n\n  protected tabGroupsArrowUp(): void {\n    this.adapterService.focusPreviousButton(this.tabGroups);\n  }\n\n  protected readonly tabGroupContainerFlexBasis = computed<string | undefined>(\n    () => (this.isMobile() ? undefined : this.tabWidth()),\n  );\n\n  protected readonly tabGroupContainerMaxWidth = computed<string | undefined>(\n    () => (this.isMobile() ? undefined : DEFAULT_TAB_WIDTH),\n  );\n}\n","<div\n  class=\"sky-vertical-tabset\"\n  [tabIndex]=\"tablistHasFocus ? -1 : 0\"\n  (focus)=\"tabsetFocus()\"\n>\n  <!--\n    ARIA rules do not allow tabpanel elements to be children of a tablist element.\n    However, the markup for each sky-vertical-tab component includes both the tab button\n    and its panel, making the panel element a child of its tablist. Moreover, our\n    sky-vertical-tab components can be grouped within collapsible containers, which also\n    violates accessibility rules because only tab buttons can be children of a tablist.\n    To address this, we create an empty tablist element with an aria-owns attribute,\n    pointing to each tab element individually. That way, we don't have to worry about the\n    structure for each sky-vertical-tab component in order to satisfy accessibility\n    guidelines.\n  -->\n  <span\n    class=\"sky-vertical-tabset-tablist\"\n    [attr.aria-label]=\"ariaLabel\"\n    [attr.aria-labelledby]=\"ariaLabelledBy\"\n    [attr.aria-orientation]=\"isMobile() ? undefined : 'vertical'\"\n    [attr.aria-owns]=\"\n      isMobile() ? undefined : (tabIdSvc.ids | async)?.join(' ') || undefined\n    \"\n    [attr.role]=\"isMobile() ? undefined : ariaRole\"\n  ></span>\n  <div\n    #groupContainerWrapper\n    class=\"sky-vertical-tabset-group-container\"\n    skyTransitionEndHandler\n    transitionPropertyToTrack=\"transform\"\n    [style.flex-basis]=\"tabGroupContainerFlexBasis()\"\n    [style.max-width]=\"tabGroupContainerMaxWidth()\"\n    [class.sky-animation-slide-enter-left]=\"tabService.isMobile()\"\n    [ngClass]=\"{ 'sky-vertical-tabset-hidden': !tabService.tabsVisible() }\"\n    [tabIndex]=\"tablistHasFocus ? -1 : 0\"\n    [transitionTrigger]=\"tabService.tabsVisible()\"\n    (keydown.arrowDown)=\"tabGroupsArrowDown(); $event.preventDefault()\"\n    (keydown.arrowUp)=\"tabGroupsArrowUp(); $event.preventDefault()\"\n    (focusin)=\"trapFocusInTablist()\"\n    (focusout)=\"resetTabIndex()\"\n    (transitionEnd)=\"tabsetFocus()\"\n  >\n    <ng-content />\n  </div>\n  @if (maintainTabContent || tabService.contentVisible()) {\n    <div\n      #contentContainerWrapper\n      class=\"sky-vertical-tabset-content\"\n      [class.sky-animation-slide-enter-right]=\"tabService.isMobile()\"\n      [ngClass]=\"{\n        'sky-vertical-tabset-content-hidden': !tabService.contentVisible()\n      }\"\n      (focusin)=\"resetTabIndex()\"\n    >\n      <div #skySideContent></div>\n      @if (!tabService.tabsVisible()) {\n        <button\n          class=\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\"\n          type=\"button\"\n          (click)=\"tabService.showTabs()\"\n        >\n          <sky-icon iconName=\"chevron-left\" />\n          {{ showTabsText }}\n        </button>\n      }\n    </div>\n  }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport {\n  SkyIdModule,\n  SkyResponsiveHostDirective,\n  _SkyAnimationSlideComponent,\n  _SkyTransitionEndHandlerDirective,\n} from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport {\n  SkyExpansionIndicatorModule,\n  SkyStatusIndicatorModule,\n} from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';\n\nimport { SkyVerticalTabComponent } from './vertical-tab.component';\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyVerticalTabsetGroupComponent } from './vertical-tabset-group.component';\nimport { SkyVerticalTabsetComponent } from './vertical-tabset.component';\n\n@NgModule({\n  declarations: [\n    SkyVerticalTabsetComponent,\n    SkyVerticalTabsetGroupComponent,\n    SkyVerticalTabComponent,\n  ],\n  imports: [\n    CommonModule,\n    SkyIconModule,\n    SkyIdModule,\n    SkyExpansionIndicatorModule,\n    SkyResponsiveHostDirective,\n    SkyStatusIndicatorModule,\n    SkyTabsResourcesModule,\n    SkyThemeModule,\n    _SkyAnimationSlideComponent,\n    _SkyTransitionEndHandlerDirective,\n  ],\n  providers: [SkyVerticalTabsetAdapterService],\n  exports: [\n    SkyVerticalTabsetComponent,\n    SkyVerticalTabsetGroupComponent,\n    SkyVerticalTabComponent,\n  ],\n})\nexport class SkyVerticalTabsetModule {}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class SkySectionedFormService {\n  /**\n   * @internal\n   */\n  public invalidChange: BehaviorSubject<boolean | undefined> =\n    new BehaviorSubject<boolean | undefined>(undefined);\n  /**\n   * @internal\n   */\n  public requiredChange: BehaviorSubject<boolean | undefined> =\n    new BehaviorSubject<boolean | undefined>(undefined);\n\n  /**\n   * Sets the current section's invalid state based on the `isInvalid` parameter.\n   * This method is used within a `sky-sectioned-form-section` element.\n   */\n  public invalidFieldChanged(isInvalid: boolean | undefined): void {\n    this.invalidChange.next(isInvalid);\n  }\n\n  /**\n   * Sets the current section's required state based on the `isRequired` parameter.\n   * This method is used within a `sky-sectioned-form-section` element.\n   */\n  public requiredFieldChanged(isRequired: boolean | undefined): void {\n    this.requiredChange.next(isRequired);\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  inject,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyVerticalTabsetService } from '../vertical-tabset/vertical-tabset.service';\n\nimport { SkyVerticalTabComponent } from './../vertical-tabset/vertical-tab.component';\nimport { SkySectionedFormService } from './sectioned-form.service';\n\nlet nextId = 0;\n\n/**\n * Creates an individual form to display as a section within the sectioned form.\n */\n@Component({\n  selector: 'sky-sectioned-form-section',\n  templateUrl: './sectioned-form-section.component.html',\n  providers: [SkySectionedFormService],\n  standalone: false,\n})\nexport class SkySectionedFormSectionComponent implements OnInit, OnDestroy {\n  public sectionTabId = `sky-sectioned-form-tab-${++nextId}`;\n  public sectionContentId = `sky-sectioned-form-section-${++nextId}`;\n\n  /**\n   * The section header.\n   * @required\n   */\n  @Input()\n  public heading: string | undefined;\n\n  /**\n   * The number of items within the section. A counter appears beside the section header.\n   */\n  @Input()\n  public itemCount: number | undefined;\n\n  /**\n   * Whether the section is active when the form loads.\n   * @default false\n   */\n  @Input()\n  public active: boolean | undefined = false;\n\n  public fieldRequired: boolean | undefined;\n  public fieldInvalid: boolean | undefined;\n\n  @ViewChild(SkyVerticalTabComponent)\n  public tab: SkyVerticalTabComponent | undefined;\n\n  #ngUnsubscribe = new Subject<void>();\n\n  readonly #sectionedFormService = inject(SkySectionedFormService);\n  readonly #tabsetService = inject(SkyVerticalTabsetService);\n  readonly #changeRef = inject(ChangeDetectorRef);\n\n  public ngOnInit(): void {\n    this.#changeRef.detectChanges();\n\n    this.#tabsetService.switchingMobile.subscribe((mobile: boolean) => {\n      this.#changeRef.detectChanges();\n    });\n\n    this.#sectionedFormService.requiredChange\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe(\n        (required: boolean | undefined) => (this.fieldRequired = required),\n      );\n\n    this.#sectionedFormService.invalidChange\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe(\n        (invalid: boolean | undefined) => (this.fieldInvalid = invalid),\n      );\n  }\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n}\n","<sky-vertical-tab\n  [active]=\"active\"\n  [errorIndicator]=\"fieldInvalid\"\n  [requiredIndicator]=\"fieldRequired\"\n  [showTabRightArrow]=\"true\"\n  [tabHeaderCount]=\"itemCount\"\n  [tabHeading]=\"heading\"\n  [tabId]=\"sectionTabId\"\n>\n  <ng-content />\n</sky-vertical-tab>\n","export enum SkySectionedFormMessageType {\n  ShowTabs = 1,\n}\n","import {\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n  afterNextRender,\n  computed,\n  inject,\n  input,\n  signal,\n} from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { SkyTabIdService } from '../shared/tab-id.service';\n\nimport { SkyVerticalTabsetService } from './../vertical-tabset/vertical-tabset.service';\nimport { SkySectionedFormMessage } from './types/sectioned-form-message';\nimport { SkySectionedFormMessageType } from './types/sectioned-form-message-type';\n\n/**\n * The default width of the tabs pane. Also serves as the maximum width of the\n * pane for any `tabWidth` value.\n */\nconst DEFAULT_TAB_WIDTH = '30%';\n\n/**\n * Creates a container for the sectioned forms.\n */\n@Component({\n  selector: 'sky-sectioned-form',\n  templateUrl: './sectioned-form.component.html',\n  styleUrls: ['./sectioned-form.component.scss'],\n  providers: [SkyTabIdService, SkyVerticalTabsetService],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class SkySectionedFormComponent\n  implements OnInit, OnDestroy, AfterViewChecked\n{\n  /**\n   * Whether the sectioned form loads section content during initialization so that it\n   * displays content without moving around elements in the content container.\n   * @default false\n   */\n  @Input()\n  public maintainSectionContent: boolean | undefined = false;\n\n  /**\n   * The width of the tabs pane as a CSS width value (such as `200px`, `15rem`,\n   * or `20%`). Set to `\"auto\"` to size based on tab label content. Maximum\n   * width is 30%.\n   * @default \"30%\"\n   */\n  public readonly tabWidth = input(DEFAULT_TAB_WIDTH, {\n    transform: (value: string | undefined): string =>\n      value?.trim() || DEFAULT_TAB_WIDTH,\n  });\n\n  @Input()\n  public set messageStream(\n    value: Subject<SkySectionedFormMessage> | undefined,\n  ) {\n    this.#_messageStream = value || new Subject<SkySectionedFormMessage>();\n    this.#initMessageStream();\n  }\n\n  public get messageStream(): Subject<SkySectionedFormMessage> {\n    return this.#_messageStream;\n  }\n\n  /**\n   * Fires when the active tab changes and emits the index of the active\n   * section. The index is based on the section's position when the form loads.\n   */\n  @Output()\n  public indexChanged = new EventEmitter<number>();\n\n  /**\n   * Fires when the sectioned form tabs are shown or hidden.\n   */\n  @Output()\n  public tabsVisibleChanged = new EventEmitter<boolean>();\n\n  public ariaOwns: string | undefined;\n\n  public ariaRole: string | undefined = 'tablist';\n\n  @ViewChild('skySectionSideContent')\n  public content: ElementRef | undefined;\n\n  #ngUnsubscribe = new Subject<void>();\n\n  #messageStreamSub: Subscription | undefined;\n  readonly #changeRef = inject(ChangeDetectorRef);\n  readonly #tabIdSvc = inject(SkyTabIdService);\n  readonly #logger = inject(SkyLogService);\n\n  #_messageStream = new Subject<SkySectionedFormMessage>();\n\n  protected animationEnabled = signal(false);\n\n  protected readonly isMobile = signal(false);\n\n  public readonly tabService = inject(SkyVerticalTabsetService);\n\n  constructor() {\n    // Enable animations after the first render.\n    afterNextRender(() => {\n      this.animationEnabled.set(true);\n    });\n\n    this.#initMessageStream();\n\n    this.#tabIdSvc.ids.pipe(takeUntil(this.#ngUnsubscribe)).subscribe((ids) => {\n      this.ariaOwns = ids.join(' ') || undefined;\n      this.#changeRef.markForCheck();\n    });\n  }\n\n  public ngOnInit(): void {\n    this.tabService.maintainTabContent = this.maintainSectionContent;\n\n    this.tabService.indexChanged\n      .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n      .subscribe((index) => {\n        this.indexChanged.emit(index);\n        this.#changeRef.markForCheck();\n      });\n\n    this.tabService.switchingMobile\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((mobile: boolean) => {\n        if (!mobile) {\n          this.ariaRole = 'tablist';\n        } else {\n          this.ariaRole = undefined;\n        }\n\n        this.isMobile.set(mobile);\n        this.#changeRef.markForCheck();\n      });\n\n    this.tabService.hidingTabs\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe(() => {\n        this.tabsVisibleChanged.emit(false);\n      });\n\n    this.tabService.showingTabs\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe(() => {\n        this.tabsVisibleChanged.emit(true);\n      });\n\n    if (this.tabService.isMobile()) {\n      this.ariaRole = undefined;\n      this.isMobile.set(true);\n      this.#changeRef.markForCheck();\n    }\n  }\n\n  public ngAfterViewChecked(): void {\n    this.tabService.content = this.content;\n    this.tabService.updateContent();\n  }\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  /**\n   * @deprecated Use the `tabsVisibleChanged` output to listen for tab visibility changes.\n   */\n  /* istanbul ignore next */\n  public tabsVisible(): boolean {\n    this.#logger.deprecated('SectionedFormComponent.tabsVisible()', {\n      deprecationMajorVersion: 8,\n      moreInfoUrl:\n        'https://developer.blackbaud.com/skyux/components/sectioned-form',\n      replacementRecommendation:\n        'Use the `tabsVisibleChanged` output to listen for tab visibility changes.',\n    });\n\n    this.#changeRef.markForCheck();\n    return this.tabService.tabsVisible();\n  }\n\n  /**\n   * @deprecated Use the `messageStream` input and push a `ShowTabs` message to the message stream instead.\n   */\n  public showTabs(): void {\n    this.#logger.deprecated('SectionedFormComponent.showTabs()', {\n      deprecationMajorVersion: 8,\n      moreInfoUrl:\n        'https://developer.blackbaud.com/skyux/components/sectioned-form',\n      replacementRecommendation:\n        'Use the `messageStream` input and push a `ShowTabs` message to the message stream instead.',\n    });\n\n    this.#showTabs();\n  }\n\n  #showTabs(): void {\n    this.tabService.showTabs();\n    this.#changeRef.markForCheck();\n  }\n\n  #initMessageStream(): void {\n    if (this.#messageStreamSub) {\n      this.#messageStreamSub.unsubscribe();\n    }\n\n    this.#messageStreamSub = this.messageStream\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((message) => {\n        switch (message.type) {\n          case SkySectionedFormMessageType.ShowTabs:\n            this.#showTabs();\n            break;\n        }\n      });\n  }\n\n  protected readonly tabsFlexBasis = computed<string | undefined>(() =>\n    this.isMobile() ? undefined : this.tabWidth(),\n  );\n\n  protected readonly tabsMaxWidth = computed<string | undefined>(() =>\n    this.isMobile() ? undefined : DEFAULT_TAB_WIDTH,\n  );\n}\n","<div class=\"sky-sectioned-form\" (window:resize)=\"tabService.updateContent()\">\n  <!--\n    ARIA rules do not allow tabpanel elements to be children of a tablist element.\n    However, the markup for each sky-vertical-tab component includes both the tab button\n    and its panel, making the panel element a child of its tablist. Moreover, our\n    sky-vertical-tab components can be grouped within collapsible containers, which also\n    violates accessibility rules because only tab buttons can be children of a tablist.\n    To address this, we create an empty tablist element with an aria-owns attribute,\n    pointing to each tab element individually. That way, we don't have to worry about the\n    structure for each sky-vertical-tab component in order to satisfy accessibility\n    guidelines.\n  -->\n  <span\n    [attr.aria-orientation]=\"ariaRole ? 'vertical' : undefined\"\n    [attr.aria-owns]=\"ariaRole ? ariaOwns : undefined\"\n    [attr.role]=\"ariaRole\"\n  ></span>\n  @if (maintainSectionContent || tabService.tabsVisible()) {\n    <div\n      class=\"sky-sectioned-form-tabs\"\n      [style.flex-basis]=\"tabsFlexBasis()\"\n      [style.max-width]=\"tabsMaxWidth()\"\n      [class.sky-animation-slide-enter-left]=\"animationEnabled()\"\n      [ngClass]=\"{\n        'sky-sectioned-form-tabs-hidden': !tabService.tabsVisible(),\n        'sky-sectioned-form-tabs-only': !tabService.contentVisible()\n      }\"\n    >\n      <ng-content />\n    </div>\n  }\n  @if (maintainSectionContent || tabService.contentVisible()) {\n    <div\n      #skySectionSideContent\n      class=\"sky-sectioned-form-content\"\n      [class.sky-animation-slide-enter-right]=\"animationEnabled()\"\n      [ngClass]=\"{\n        'sky-sectioned-form-content-hidden': !tabService.contentVisible()\n      }\"\n    ></div>\n  }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyVerticalTabsetModule } from '../vertical-tabset/vertical-tabset.module';\n\nimport { SkySectionedFormSectionComponent } from './sectioned-form-section.component';\nimport { SkySectionedFormComponent } from './sectioned-form.component';\n\n@NgModule({\n  declarations: [SkySectionedFormComponent, SkySectionedFormSectionComponent],\n  imports: [\n    CommonModule,\n    SkyCheckboxModule,\n    SkyThemeModule,\n    SkyVerticalTabsetModule,\n  ],\n  exports: [SkySectionedFormComponent, SkySectionedFormSectionComponent],\n})\nexport class SkySectionedFormModule {}\n","import { ElementRef, Injectable } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabButtonAdapterService {\n  public focusButtonLink(buttonEl: ElementRef): void {\n    buttonEl.nativeElement.querySelector('a').focus();\n  }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { TabButtonViewModel } from './tab-button-view-model';\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabLayoutType } from './tab-layout-type';\nimport { SkyTabsetActiveTabChangeArgs } from './tabset-active-tab-change-args';\nimport { SkyTabsetActiveTabUnregisteredArgs } from './tabset-active-tab-unregistered-args';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetService implements OnDestroy {\n  public readonly activeTabUnregistered: Observable<SkyTabsetActiveTabUnregisteredArgs>;\n\n  public readonly activeTabChange: Observable<SkyTabsetActiveTabChangeArgs>;\n\n  public readonly focusedTabBtnIndex: Observable<SkyTabIndex>;\n\n  public readonly activeTabLayout: Observable<SkyTabLayoutType>;\n\n  public currentActiveTabIndex: SkyTabIndex | undefined = 0;\n\n  public currentFocusedTabBtnIndex: SkyTabIndex = 0;\n\n  #activeTabChange: BehaviorSubject<SkyTabsetActiveTabChangeArgs>;\n\n  #focusedTabBtnIndex: Subject<SkyTabIndex>;\n\n  #activeTabUnregistered: Subject<SkyTabsetActiveTabUnregisteredArgs>;\n\n  #activeTabLayout: Subject<SkyTabLayoutType>;\n\n  #tabs: {\n    tabIndex: SkyTabIndex | undefined;\n  }[] = [];\n\n  #tabCounter = 0;\n\n  constructor() {\n    this.#activeTabChange = new BehaviorSubject<SkyTabsetActiveTabChangeArgs>({\n      initial: true,\n      tabIndex: 0,\n    });\n\n    this.#activeTabLayout = new Subject();\n\n    this.#activeTabUnregistered = new Subject();\n\n    this.#focusedTabBtnIndex = new Subject();\n\n    this.activeTabChange = this.#activeTabChange.asObservable();\n    this.activeTabLayout = this.#activeTabLayout.asObservable();\n    this.activeTabUnregistered = this.#activeTabUnregistered.asObservable();\n    this.focusedTabBtnIndex = this.#focusedTabBtnIndex.asObservable();\n  }\n\n  public ngOnDestroy(): void {\n    this.#activeTabChange.complete();\n    this.#activeTabUnregistered.complete();\n    this.#focusedTabBtnIndex.complete();\n    this.#activeTabLayout.complete();\n  }\n\n  /**\n   * Sets the active tab by its unique `tabIndex` property.\n   */\n  public setActiveTabIndex(\n    value: SkyTabsetActiveTabChangeArgs,\n    config = {\n      emitChange: true,\n    },\n  ): void {\n    if (\n      value.tabIndex !== undefined &&\n      !this.tabIndexesEqual(value.tabIndex, this.currentActiveTabIndex)\n    ) {\n      this.currentActiveTabIndex = value.tabIndex;\n\n      /* istanbul ignore else */\n      if (config.emitChange) {\n        this.#activeTabChange.next(value);\n      }\n\n      this.setFocusedTabBtnIndex(value.tabIndex);\n    }\n  }\n\n  public focusNextTabBtn(tabButtons: TabButtonViewModel[]): void {\n    const currentTabArrayIndex = this.#tabs.findIndex((tab) =>\n      this.tabIndexesEqual(tab.tabIndex, this.currentFocusedTabBtnIndex),\n    );\n\n    for (\n      let i = this.#getNextTabArrayIndex(currentTabArrayIndex);\n      i !== currentTabArrayIndex;\n      i = this.#getNextTabArrayIndex(i)\n    ) {\n      const tabBtn = tabButtons[i];\n      if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {\n        this.setFocusedTabBtnIndex(tabBtn.tabIndex);\n        return;\n      }\n    }\n  }\n\n  public focusPrevTabBtn(tabButtons: TabButtonViewModel[]): void {\n    const currentTabArrayIndex = this.#tabs.findIndex((tab) =>\n      this.tabIndexesEqual(tab.tabIndex, this.currentFocusedTabBtnIndex),\n    );\n\n    for (\n      let i = this.#getPrevTabArrayIndex(currentTabArrayIndex);\n      i !== currentTabArrayIndex;\n      i = this.#getPrevTabArrayIndex(i)\n    ) {\n      const tabBtn = tabButtons[i];\n      if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {\n        this.setFocusedTabBtnIndex(tabBtn.tabIndex);\n        return;\n      }\n    }\n  }\n\n  public focusFirstOrNearestTabBtn(tabButtons: TabButtonViewModel[]): void {\n    for (const tabBtn of tabButtons) {\n      if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {\n        this.setFocusedTabBtnIndex(tabBtn.tabIndex);\n        return;\n      }\n    }\n  }\n\n  public focusLastOrNearestTabBtn(tabButtons: TabButtonViewModel[]): void {\n    for (let i = tabButtons.length - 1; i >= 0; i--) {\n      const tabBtn = tabButtons[i];\n\n      if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {\n        this.setFocusedTabBtnIndex(tabBtn.tabIndex);\n        return;\n      }\n    }\n  }\n\n  public setFocusedTabBtnIndex(tabIndex: SkyTabIndex): void {\n    this.currentFocusedTabBtnIndex = tabIndex;\n    this.#focusedTabBtnIndex.next(tabIndex);\n  }\n\n  /**\n   * Registers a tab component.\n   */\n  public registerTab(tabIndex?: SkyTabIndex): SkyTabIndex {\n    if (tabIndex === undefined) {\n      tabIndex = this.#tabCounter;\n      this.#tabCounter++;\n    }\n\n    this.#tabs.push({ tabIndex });\n\n    return tabIndex;\n  }\n\n  public updateTabIndex(\n    currentTabIndex: SkyTabIndex,\n    newTabIndex: SkyTabIndex,\n  ): void {\n    const found = this.#tabs.find((tab) =>\n      this.tabIndexesEqual(tab.tabIndex, currentTabIndex),\n    );\n    if (found) {\n      found.tabIndex = newTabIndex;\n    }\n  }\n\n  public updateActiveTabLayout(layout: SkyTabLayoutType): void {\n    this.#activeTabLayout.next(layout);\n  }\n\n  /**\n   * Unregisters a tab component.\n   */\n  public unregisterTab(tabIndex: SkyTabIndex): void {\n    const index = this.#tabs.findIndex((tab) =>\n      this.tabIndexesEqual(tab.tabIndex, tabIndex),\n    );\n\n    // Notify the tabset component when an active tab is unregistered.\n    if (this.#isTabIndexActive(this.#tabs[index]?.tabIndex)) {\n      this.#activeTabUnregistered.next({\n        arrayIndex: index,\n      });\n    }\n\n    this.#tabs.splice(index, 1);\n  }\n\n  /**\n   * Unregisters all tab components at once.\n   */\n  public unregisterAll(): void {\n    this.#tabs = [];\n  }\n\n  /**\n   * Compares two tab indexes and returns `true` if they are equal.\n   */\n  public tabIndexesEqual(\n    tabIndex1: SkyTabIndex | undefined,\n    tabIndex2: SkyTabIndex | undefined,\n  ): boolean {\n    return (\n      tabIndex1 === tabIndex2 ||\n      (tabIndex1 !== undefined &&\n        tabIndex2 !== undefined &&\n        +tabIndex1 === +tabIndex2)\n    );\n  }\n\n  /**\n   * Verifies if a provided tab index is registered.\n   */\n  public isValidTabIndex(tabIndex: SkyTabIndex): boolean {\n    return this.#tabs.some((tab) =>\n      this.tabIndexesEqual(tab.tabIndex, tabIndex),\n    );\n  }\n\n  /**\n   * Activates the first registered tab.\n   */\n  public activateFirstTab(): SkyTabIndex | undefined {\n    const firstTabIndex = this.#tabs[0] && this.#tabs[0].tabIndex;\n    if (firstTabIndex !== undefined) {\n      this.setActiveTabIndex({\n        tabIndex: firstTabIndex,\n      });\n      return firstTabIndex;\n    }\n    return undefined;\n  }\n\n  /**\n   * Activates the next registered tab, or the previous one based on a provided array index.\n   */\n  public activateNearestTab(arrayIndex: number): void {\n    const newActiveTab = this.#tabs[arrayIndex] || this.#tabs[arrayIndex - 1];\n    if (newActiveTab) {\n      this.currentActiveTabIndex = newActiveTab.tabIndex;\n    }\n  }\n\n  #isTabIndexActive(tabIndex: SkyTabIndex | undefined): boolean {\n    return this.tabIndexesEqual(tabIndex, this.currentActiveTabIndex);\n  }\n\n  #getNextTabArrayIndex(currentIndex: number): number {\n    let nextIndex = currentIndex + 1;\n\n    if (nextIndex === this.#tabs.length) {\n      nextIndex = 0;\n    }\n\n    return nextIndex;\n  }\n\n  #getPrevTabArrayIndex(currentIndex: number): number {\n    let prevIndex = currentIndex - 1;\n\n    if (prevIndex < 0) {\n      prevIndex = this.#tabs.length - 1;\n    }\n\n    return prevIndex;\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { SkyTabButtonAdapterService } from './tab-button-adapter.service';\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabsetStyle } from './tabset-style';\nimport { SkyTabsetService } from './tabset.service';\n\nconst DEFAULT_DISABLED = false;\n\ntype SkyWizardStepState = 'completed' | 'current' | 'unavailable';\n\n/**\n * @internal\n */\n@Component({\n  selector: 'sky-tab-button',\n  templateUrl: './tab-button.component.html',\n  styleUrls: ['./tab-button.component.scss'],\n  providers: [SkyTabButtonAdapterService],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class SkyTabButtonComponent implements AfterViewInit, OnDestroy {\n  @Input()\n  public get active(): boolean | undefined {\n    return this.#_isActive;\n  }\n  public set active(value: boolean | undefined) {\n    this.#_isActive = value;\n    this.#updateWizardStepState();\n  }\n\n  @Input()\n  public ariaControls: string | undefined;\n\n  @Input()\n  public buttonHref: string | undefined;\n\n  @Input()\n  public buttonId: string | undefined;\n\n  @Input()\n  public buttonText: string | undefined;\n\n  @Input()\n  public buttonTextCount: string | undefined;\n\n  @Input()\n  public closeable: boolean | undefined;\n\n  @Input()\n  public get disabled(): boolean {\n    return this.#_isDisabled;\n  }\n\n  public set disabled(value: boolean | undefined) {\n    this.#_isDisabled = value ?? DEFAULT_DISABLED;\n    this.#updateWizardStepState();\n  }\n\n  @Input()\n  public tabIndex: SkyTabIndex | undefined;\n\n  @Input()\n  public tabNumber: number | undefined;\n\n  @Input()\n  public totalTabsCount: number | undefined;\n\n  @Input()\n  public get tabStyle(): SkyTabsetStyle | undefined {\n    return this.#_tabStyle;\n  }\n\n  public set tabStyle(style: SkyTabsetStyle | undefined) {\n    this.#_tabStyle = style;\n    this.#updateWizardStepState();\n  }\n\n  @Output()\n  public buttonClick = new EventEmitter<void>();\n\n  @Output()\n  public closeClick = new EventEmitter<void>();\n\n  public closeBtnTabIndex = '-1';\n  public wizardStepState: SkyWizardStepState | undefined;\n  #_isActive: boolean | undefined = false;\n  #_isDisabled = DEFAULT_DISABLED;\n  #_tabStyle: SkyTabsetStyle | undefined;\n  readonly #adapterService = inject(SkyTabButtonAdapterService);\n  readonly #changeDetectorRef = inject(ChangeDetectorRef);\n  readonly #elementRef = inject(ElementRef);\n  readonly #tabsetService = inject(SkyTabsetService);\n  #ngUnsubscribe = new Subject<void>();\n\n  public ngAfterViewInit(): void {\n    this.#tabsetService.focusedTabBtnIndex\n      .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n      .subscribe((focusedIndex) => {\n        if (this.tabIndex !== undefined && focusedIndex === this.tabIndex) {\n          this.closeBtnTabIndex = '0';\n          this.focusBtn();\n        } else {\n          this.closeBtnTabIndex = '-1';\n        }\n        this.#changeDetectorRef.markForCheck();\n      });\n  }\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  public onButtonClick(event: any): void {\n    if (!this.disabled) {\n      this.buttonClick.emit();\n      event.preventDefault();\n    }\n  }\n\n  public onTabButtonKeyDown(event: KeyboardEvent): void {\n    /*istanbul ignore else */\n    if (event.key) {\n      switch (event.key.toUpperCase()) {\n        case ' ':\n        case 'ENTER':\n          this.onButtonClick(event);\n          break;\n        /* istanbul ignore next */\n        default:\n          break;\n      }\n    }\n  }\n\n  public onCloseClick(event: any): void {\n    this.closeClick.emit();\n\n    // Prevent the click event from bubbling up to the anchor tag;\n    // otherwise it will trigger a page refresh.\n    event.stopPropagation();\n    event.preventDefault();\n  }\n\n  public focusBtn(): void {\n    this.#adapterService.focusButtonLink(this.#elementRef);\n  }\n\n  public onFocus(): void {\n    if (this.tabIndex !== undefined) {\n      this.#tabsetService.setFocusedTabBtnIndex(this.tabIndex);\n    }\n  }\n\n  #updateWizardStepState(): void {\n    if (this.tabStyle === 'tabs') {\n      this.wizardStepState = undefined;\n    } else {\n      if (this.active) {\n        this.wizardStepState = 'current';\n      } else if (!this.disabled) {\n        this.wizardStepState = 'completed';\n      } else {\n        this.wizardStepState = 'unavailable';\n      }\n    }\n\n    this.#changeDetectorRef.markForCheck();\n  }\n}\n","<div\n  class=\"sky-btn-tab-wrapper\"\n  [ngClass]=\"{\n    'sky-btn-tab-wrapper-selected': active,\n    'sky-btn-tab-wrapper-disabled': disabled\n  }\"\n>\n  <a\n    #tabButtonEl\n    class=\"sky-btn-tab\"\n    role=\"tab\"\n    [attr.aria-controls]=\"ariaControls\"\n    [attr.aria-disabled]=\"disabled\"\n    [attr.aria-selected]=\"active\"\n    [attr.href]=\"buttonHref\"\n    [attr.aria-label]=\"\n      tabStyle === 'wizard'\n        ? ('skyux_wizard_sr_step_' + wizardStepState\n          | skyLibResources: tabNumber : totalTabsCount : buttonText)\n        : null\n    \"\n    [attr.aria-labelledby]=\"tabStyle === 'wizard' ? null : tabHeading.id\"\n    [id]=\"buttonId\"\n    [ngClass]=\"{\n      'sky-btn-tab-wizard': tabStyle === 'wizard',\n      'sky-btn-tab-selected': active,\n      'sky-btn-tab-disabled': disabled,\n      'sky-tab-btn-closeable': closeable\n    }\"\n    [tabindex]=\"active ? '0' : '-1'\"\n    (click)=\"onButtonClick($event)\"\n    (keydown)=\"onTabButtonKeyDown($event)\"\n    (focus)=\"onFocus()\"\n  >\n    <span class=\"sky-tab-heading\" [attr.aria-hidden]=\"true\">\n      <span #tabHeading=\"skyId\" skyId>\n        {{ buttonText }}\n        @if (buttonTextCount !== undefined) {\n          <span class=\"sky-tab-header-count\">\n            {{ buttonTextCount }}\n          </span>\n        }\n      </span>\n      @if (closeable) {\n        <span\n          class=\"sky-btn-tab-close\"\n          [tabindex]=\"closeBtnTabIndex\"\n          [attr.aria-label]=\"'skyux_tab_close' | skyLibResources: buttonText\"\n          [ngClass]=\"{\n            'sky-btn-tab-close-disabled': disabled\n          }\"\n          [skyThemeClass]=\"{\n            'sky-btn sky-btn-icon-borderless': 'modern'\n          }\"\n          (click)=\"onCloseClick($event)\"\n          (keydown.enter)=\"onCloseClick($event)\"\n        >\n          <sky-icon iconName=\"close\" />\n        </span>\n      }\n    </span>\n  </a>\n</div>\n","import { Location } from '@angular/common';\nimport { Injectable, OnDestroy, inject } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\n\nimport { Observable, Subject, SubscriptionLike } from 'rxjs';\n\n/**\n * @internal\n */\ntype PermalinkParams = Record<string, string>;\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetPermalinkService implements OnDestroy {\n  public get popStateChange(): Observable<void> {\n    return this.#popStateChange;\n  }\n\n  #popStateChange = new Subject<void>();\n\n  #subscription: SubscriptionLike | undefined;\n\n  readonly #activatedRoute = inject(ActivatedRoute);\n  readonly #location = inject(Location);\n  readonly #router = inject(Router);\n\n  public ngOnDestroy(): void {\n    this.#subscription?.unsubscribe();\n    this.#popStateChange.complete();\n  }\n\n  public init(): void {\n    this.#subscription = this.#location.subscribe(() => {\n      this.#popStateChange.next();\n    });\n  }\n\n  /**\n   * Returns the value of a URL query param.\n   */\n  public getParam(name: string): string {\n    return this.#getParams()[name];\n  }\n\n  /**\n   * Sets the value of a URL query param.\n   */\n  public setParam(name: string, value: string | null, initial?: boolean): void {\n    const params: Params = this.#getParams();\n    params[name] = value ?? undefined;\n\n    // Uses merge so other query params are not lost. Deleted query params\n    // are set to `undefined` so they are removed from the URL.\n    const url = this.#router\n      .createUrlTree([], {\n        relativeTo: this.#activatedRoute,\n        queryParams: params,\n        queryParamsHandling: 'merge',\n      })\n      .toString();\n\n    // Abort redirect if the current URL is equal to the new URL.\n    if (this.#location.isCurrentPathEqualTo(url)) {\n      return;\n    }\n\n    // Navigate via the Angular router to update the URL and broadcast the\n    // change. Use `replaceUrl` on the initial navigation so an extra history\n    // item isn't added to the browser's back stack.\n    void this.#router.navigate([], {\n      relativeTo: this.#activatedRoute,\n      queryParams: params,\n      queryParamsHandling: 'merge',\n      replaceUrl: initial,\n    });\n  }\n\n  /**\n   * Removes the provided query param from the URL.\n   */\n  public clearParam(name: string): void {\n    // Don't overwrite the URL while the Angular router is in the process\n    // of navigating (e.g. when the tabset is destroyed due to navigating\n    // away from the current page).\n    if (!this.#router.currentNavigation()) {\n      this.setParam(name, null);\n    }\n  }\n\n  /**\n   * Returns a relative URL that includes the provided query parameter. The value is intended to be\n   * used by an HTML anchor element.\n   */\n  public getParamHref(name: string | undefined, value: string): string | null {\n    if (!name) {\n      return null;\n    }\n\n    const params = this.#getParams();\n    params[name] = value;\n\n    const baseUrl = this.#location.path().split('?')[0];\n    const paramString = Object.keys(params)\n      .map((k) => `${k}=${params[k]}`)\n      .join('&');\n\n    return this.#location.prepareExternalUrl(`${baseUrl}?${paramString}`);\n  }\n\n  /**\n   * Converts the provided string into a value that can be safely used in a URL.\n   */\n  public urlify(value: string | undefined): string {\n    if (!value) {\n      return '';\n    }\n\n    const sanitized = value\n      .toLowerCase()\n\n      // Remove special characters.\n      .replace(/[_~`@!#$%^&*()[\\]{};:'/\\\\<>,.?=+|\"]/g, '')\n\n      // Replace space characters with a dash.\n      .replace(/\\s/g, '-')\n\n      // Remove any double-dashes.\n      .replace(/--/g, '-');\n\n    return sanitized;\n  }\n\n  /**\n   * Returns all query params that exist in the current URL.\n   */\n  #getParams(): PermalinkParams {\n    const params: PermalinkParams = {};\n\n    const path = this.#location.path();\n    if (path.indexOf('?') === -1) {\n      return params;\n    }\n\n    const existingParamPairs = path.split('?')[1].split('&');\n    existingParamPairs.forEach((pair) => {\n      const fragments = pair.split('=');\n      params[fragments[0]] = decodeURIComponent(fragments[1]);\n    });\n\n    return params;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  inject,\n} from '@angular/core';\nimport { SkyResponsiveHostDirective } from '@skyux/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabLayoutType } from './tab-layout-type';\nimport { SkyTabsetPermalinkService } from './tabset-permalink.service';\nimport { SkyTabsetService } from './tabset.service';\n\nconst LAYOUT_CLASS_PREFIX = 'sky-layout-host-';\nconst LAYOUT_DEFAULT: SkyTabLayoutType = 'none';\n\nlet nextId = 0;\n\n@Component({\n  hostDirectives: [SkyResponsiveHostDirective],\n  selector: 'sky-tab',\n  templateUrl: './tab.component.html',\n  styleUrls: ['./tab.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class SkyTabComponent implements OnChanges, OnDestroy {\n  /**\n   * Whether the tab is active when the tabset loads. After initialization, the `active`\n   * property on the tabset component should be used to set the active tab.\n   * @default false\n   */\n  @Input()\n  public set active(value: boolean | undefined) {\n    if (value !== undefined && !!value !== this.#_active) {\n      this.#_active = value;\n      this.#activeChange.next();\n    }\n  }\n\n  public get active(): boolean {\n    return this.#_active;\n  }\n\n  public get activeChange(): Observable<void> {\n    return this.#activeChange;\n  }\n\n  /**\n   * Whether to disable the tab.\n   * @default false\n   */\n  @Input()\n  public disabled: boolean | undefined;\n\n  /**\n   * The custom query parameter value for the tab.\n   * This works in conjunction with the tabset's `permalinkId` to distinguish\n   * the tab's unique state in the URL by generating a query parameter that is\n   * written as `?<queryParam>-active-tab=<sanitized-tab-heading`.\n   * By default, the query parameter's value is parsed automatically from the tab's heading text.\n   * This input only applies when the tabset's `tabStyle` is `\"tabs\"`.\n   */\n  @Input()\n  public set permalinkValue(value: string | undefined) {\n    this.#_permalinkValue = value;\n    this.#setPermalinkValueOrDefault();\n  }\n\n  public get permalinkValue(): string | undefined {\n    return this.#_permalinkValue;\n  }\n\n  /**\n   * Displays a counter beside the tab header.\n   * This input only applies when the tabset's `tabStyle` is `\"tabs\"`.\n   * @deprecated SKY UX no longer recommends adding counts to tabs.\n   */\n  @Input()\n  public tabHeaderCount: string | undefined;\n\n  /**\n   * The tab header.\n   * When using tabs as the main navigation on a page,\n   * use [the Angular `Title` service](https://angular.dev/api/platform-browser/Title)\n   * and [the SKY UX page title guidelines](https://developer.blackbaud.com/skyux/design/guidelines/content#page-titles)\n   * to reflect the tab header in the page title.\n   * @required\n   */\n  @Input()\n  public set tabHeading(value: string | undefined) {\n    this.#_tabHeading = value;\n\n    this.#setPermalinkValueOrDefault();\n  }\n\n  public get tabHeading(): string | undefined {\n    return this.#_tabHeading;\n  }\n\n  /**\n   * The unique identifier for the tab.\n   * If not defined, the identifier is set to the position of the tab on load, starting with `0`.\n   */\n  @Input()\n  public set tabIndexValue(value: SkyTabIndex | undefined) {\n    if (\n      value !== this.#_tabIndexValue &&\n      value !== undefined &&\n      this.#_tabIndexValue !== undefined\n    ) {\n      this.#tabsetService.updateTabIndex(this.#_tabIndexValue, value);\n      this.#tabIndexChange.next(value);\n    }\n\n    this.#_tabIndexValue = value;\n  }\n\n  public get tabIndexValue(): SkyTabIndex | undefined {\n    return this.#_tabIndexValue;\n  }\n\n  /**\n   * The tab layout that applies spacing to the tab container element. Use the layout\n   * that corresponds with the top-level component type used within the tab, or use `fit` to\n   * constrain the tab contents to the available viewport.\n   * Use `none` for custom content that does not adhere to predefined spacing or constraints.\n   * @default \"none\"\n   */\n  @Input()\n  public set layout(value: SkyTabLayoutType | undefined) {\n    const layout = value || LAYOUT_DEFAULT;\n\n    this.#_layout = layout;\n    this.cssClass = `${LAYOUT_CLASS_PREFIX}${layout}`;\n\n    if (this.active) {\n      this.#tabsetService.updateActiveTabLayout(layout);\n    }\n  }\n\n  public get layout(): SkyTabLayoutType {\n    return this.#_layout;\n  }\n\n  @HostBinding('class')\n  public cssClass = `${LAYOUT_CLASS_PREFIX}${LAYOUT_DEFAULT}`;\n\n  /**\n   * Fires when users click the button to close the tab.\n   * The close button is added to the tab when you specify a listener for this event.\n   * This event only applies when the tabset's `tabStyle` is `\"tabs\"`.\n   */\n  @Output()\n  public close = new EventEmitter<void>(); // eslint-disable-line @angular-eslint/no-output-native\n\n  /**\n   * Alerts the tabset component when this component has changes that need to be reflected in the UI.\n   */\n  public get stateChange(): Observable<void> {\n    return this.#stateChange;\n  }\n\n  public get tabIndexChange(): Observable<SkyTabIndex | undefined> {\n    return this.#tabIndexChange;\n  }\n\n  public permalinkValueOrDefault = '';\n\n  public showContent = false;\n\n  public tabButtonId: string;\n\n  public tabPanelId: string;\n\n  #_active = false;\n\n  #activeChange: BehaviorSubject<void | undefined>;\n\n  #_permalinkValue: string | undefined;\n\n  #stateChange: BehaviorSubject<void>;\n\n  #_tabHeading: string | undefined;\n\n  #_tabIndexValue: SkyTabIndex | undefined;\n\n  #_layout: SkyTabLayoutType = LAYOUT_DEFAULT;\n\n  #tabIndexChange: BehaviorSubject<SkyTabIndex | undefined>;\n\n  readonly #changeDetector = inject(ChangeDetectorRef);\n  readonly #permalinkService = inject(SkyTabsetPermalinkService);\n  readonly #tabsetService = inject(SkyTabsetService);\n\n  constructor() {\n    const id = nextId++;\n    this.tabPanelId = `sky-tab-${id}`;\n    this.tabButtonId = `${this.tabPanelId}-nav-btn`;\n\n    this.#activeChange = new BehaviorSubject<void | undefined>(undefined);\n    this.#stateChange = new BehaviorSubject<void>(undefined);\n    this.#tabIndexChange = new BehaviorSubject<SkyTabIndex | undefined>(\n      undefined,\n    );\n\n    this.#setPermalinkValueOrDefault();\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (\n      (changes['disabled'] && !changes['disabled'].firstChange) ||\n      (changes['tabHeading'] && !changes['tabHeading'].firstChange) ||\n      (changes['tabHeaderCount'] && !changes['tabHeaderCount'].firstChange) ||\n      (changes['permalinkValue'] && !changes['permalinkValue'].firstChange)\n    ) {\n      this.#stateChange.next();\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.#activeChange.complete();\n    this.#stateChange.complete();\n    this.#tabIndexChange.complete();\n    if (this.tabIndexValue !== undefined) {\n      this.#tabsetService.unregisterTab(this.tabIndexValue);\n    }\n  }\n\n  public init(): void {\n    this.#_tabIndexValue = this.#tabsetService.registerTab(this.tabIndexValue);\n  }\n\n  public activate(): void {\n    this.#_active = true;\n    this.showContent = true;\n    this.#changeDetector.markForCheck();\n  }\n\n  public deactivate(): void {\n    this.#_active = false;\n    this.showContent = false;\n    this.#changeDetector.markForCheck();\n  }\n\n  public isCloseable(): boolean {\n    return this.close.observers.length > 0;\n  }\n\n  #setPermalinkValueOrDefault(): void {\n    this.permalinkValueOrDefault =\n      this.#permalinkService.urlify(this.permalinkValue) ||\n      this.#permalinkService.urlify(this.tabHeading);\n  }\n}\n","<div\n  class=\"sky-tab\"\n  role=\"tabpanel\"\n  [attr.aria-labelledby]=\"tabButtonId\"\n  [hidden]=\"!showContent\"\n  [id]=\"tabPanelId\"\n>\n  <ng-content />\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { SkyTabsetNavButtonType } from './tabset-nav-button-type';\n\n@Pipe({\n  name: 'skyTabsetNavButtonDisabled',\n  standalone: false,\n})\nexport class SkyTabsetNavButtonDisabledPipe implements PipeTransform {\n  public transform(\n    disabled: boolean | undefined,\n    buttonType?: SkyTabsetNavButtonType | string,\n    tabToSelectExists?: boolean,\n    tabToSelectIsDisabled?: boolean,\n  ): boolean {\n    if (disabled !== undefined) {\n      return disabled;\n    } else if (buttonType === 'finish') {\n      return false;\n    }\n\n    return !tabToSelectExists || !!tabToSelectIsDisabled;\n  }\n}\n","import {\n  Component,\n  HostBinding,\n  Input,\n  OnDestroy,\n  inject,\n} from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabComponent } from './tab.component';\nimport { SkyTabsetNavButtonType } from './tabset-nav-button-type';\nimport { SkyTabsetComponent } from './tabset.component';\n\nconst buttonTypeNext = 'next';\nconst buttonTypePrevious = 'previous';\nconst buttonTypeFinish = 'finish';\n\n/**\n * Creates a button to navigate between tabs in a tabset when `tabStyle` is `\"wizard\"`.\n */\n@Component({\n  selector: 'sky-tabset-nav-button',\n  templateUrl: './tabset-nav-button.component.html',\n  standalone: false,\n})\nexport class SkyTabsetNavButtonComponent implements OnDestroy {\n  /**\n   * The tabset wizard component to associate with the nav button.\n   * @required\n   */\n  @Input()\n  public get tabset(): SkyTabsetComponent | undefined {\n    return this.#_tabset;\n  }\n\n  public set tabset(value: SkyTabsetComponent | undefined) {\n    this.#_tabset = value;\n\n    if (this.#currentTabsetSub) {\n      this.#currentTabsetSub.unsubscribe();\n    }\n\n    if (value) {\n      this.#currentTabsetSub = value.activeChange\n        .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n        .subscribe((index: SkyTabIndex) => {\n          this.#activeSkyTabIndex = index;\n          this.#tabCount = this.#_tabset?.tabs?.length;\n          this.#updateTabToSelect();\n          this.#updateButtonVisibility();\n          this.#updateButtonProperties();\n        });\n    } else {\n      this.#logger.error(\n        'The SkyTabsetNavButtonComponent requires a reference to the SkyTabsetComponent it controls.',\n      );\n    }\n  }\n\n  /**\n   * The type of nav button to include.\n   * @required\n   */\n  @Input()\n  public get buttonType(): SkyTabsetNavButtonType | undefined {\n    return this.#_buttonType;\n  }\n\n  public set buttonType(value: SkyTabsetNavButtonType | undefined) {\n    this.#_buttonType = value;\n    this.#updateTabToSelect();\n    this.#updateButtonProperties();\n    this.#updateButtonVisibility();\n\n    if (value === buttonTypeFinish) {\n      this.type = 'submit';\n    } else {\n      this.type = 'button';\n    }\n  }\n\n  @HostBinding('attr.data-button-type')\n  public get buttonTypeData(): SkyTabsetNavButtonType | undefined {\n    return this.buttonType;\n  }\n\n  /**\n   * The label to display on the nav button. The following are the defaults for each `buttonType`:\n   * `next` = \"Next\", `previous` = \"Previous\", `finish` = \"Finish\"\n   */\n  @Input()\n  public buttonText?: string | undefined;\n\n  /**\n   * Whether to disable the nav button.\n   * Defaults to the disabled state of the next tab for `next`, the existence of a previous tab for `previous`,\n   * and false for `finish`.\n   */\n  @Input()\n  public set disabled(value: boolean | undefined) {\n    this.#_disabled = value;\n  }\n\n  public get disabled(): boolean | undefined {\n    return this.#_disabled;\n  }\n\n  public buttonClassName: string | undefined;\n  public isVisible = false;\n  public type: 'submit' | 'button' = 'submit';\n  public ariaControls: string | undefined;\n\n  protected tabToSelect: SkyTabComponent | undefined;\n\n  #_buttonType: SkyTabsetNavButtonType | undefined;\n  #_disabled: boolean | undefined;\n  #_tabset: SkyTabsetComponent | undefined;\n  #activeIndexNumber: number | undefined;\n  #activeSkyTabIndex: SkyTabIndex | undefined;\n  #currentTabsetSub: Subscription | undefined;\n  readonly #logger = inject(SkyLogService);\n  #tabCount: number | undefined;\n  #ngUnsubscribe = new Subject<void>();\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  public buttonClick(): void {\n    /* istanbul ignore else */\n    if (this.tabToSelect && !this.tabToSelect.disabled && this.tabset) {\n      this.tabset.active = this.tabToSelect.tabIndexValue;\n    }\n  }\n\n  #updateButtonVisibility(): void {\n    const isLastStep =\n      !!this.#tabCount && this.#activeIndexNumber === this.#tabCount - 1;\n\n    if (this.buttonType === buttonTypeFinish) {\n      this.isVisible = isLastStep;\n    } else if (this.buttonType === buttonTypeNext) {\n      this.isVisible = !isLastStep;\n    } else {\n      this.isVisible = true;\n    }\n  }\n\n  #updateButtonProperties(): void {\n    if (\n      this.buttonType === buttonTypeNext ||\n      this.buttonType === buttonTypeFinish\n    ) {\n      this.buttonClassName = 'sky-btn-primary';\n    } else {\n      this.buttonClassName = 'sky-btn-default';\n    }\n\n    this.ariaControls = this.tabToSelect?.tabPanelId;\n  }\n\n  #updateTabToSelect(): void {\n    if (this.tabset?.tabs) {\n      const tabs = this.tabset.tabs.toArray();\n      this.tabToSelect = undefined;\n\n      // tab index can be a number or a string, but we need the actual number index\n      this.#activeIndexNumber = tabs.findIndex(\n        (tab) => tab.tabIndexValue === this.#activeSkyTabIndex,\n      );\n\n      /* istanbul ignore else */\n      if (this.#activeIndexNumber !== undefined) {\n        if (this.buttonType === buttonTypeNext) {\n          this.tabToSelect = tabs[this.#activeIndexNumber + 1];\n        } else if (this.buttonType === buttonTypePrevious) {\n          this.tabToSelect = tabs[this.#activeIndexNumber - 1];\n        }\n      }\n    }\n  }\n}\n","@if (isVisible) {\n  <button\n    class=\"sky-btn sky-margin-inline-sm\"\n    [attr.aria-controls]=\"ariaControls\"\n    [disabled]=\"\n      disabled\n        | skyTabsetNavButtonDisabled\n          : buttonType\n          : !!tabToSelect\n          : tabToSelect?.disabled\n    \"\n    [ngClass]=\"buttonClassName\"\n    [type]=\"type\"\n    (click)=\"buttonType === 'finish' ? null : buttonClick()\"\n  >\n    {{ buttonText || ('skyux_tabs_navigator_' + buttonType | skyLibResources) }}\n  </button>\n}\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetAdapterService implements OnDestroy {\n  public get overflowChange(): Observable<boolean> {\n    return this.#overflowChange;\n  }\n\n  #currentOverflow = false;\n\n  #tabsetRef: ElementRef | undefined;\n\n  #tabsOffsetLeft: number | undefined;\n\n  #overflowChange: BehaviorSubject<boolean>;\n\n  constructor() {\n    this.#overflowChange = new BehaviorSubject<boolean>(false);\n  }\n\n  public ngOnDestroy(): void {\n    this.#overflowChange.complete();\n  }\n\n  public registerTabset(tabsetRef: ElementRef): void {\n    this.#tabsetRef = tabsetRef;\n    this.#tabsOffsetLeft = this.#getTabsOffsetLeft(tabsetRef.nativeElement);\n  }\n\n  /**\n   * Detects if the tab buttons are wider than the tabset container.\n   */\n  public detectOverflow(): void {\n    const nativeElement = this.#tabsetRef?.nativeElement;\n\n    const tabsetRect = nativeElement\n      .querySelector('.sky-tabset')\n      .getBoundingClientRect();\n\n    const tabButtonsRect = nativeElement\n      .querySelector('.sky-tabset-tabs')\n      .getBoundingClientRect();\n\n    const tabExtraButtonsRect = nativeElement\n      .querySelector('.sky-tabset-btns')\n      .getBoundingClientRect();\n\n    const tabButtonsWidth =\n      tabButtonsRect.width + tabExtraButtonsRect.width + this.#tabsOffsetLeft;\n\n    const newOverflow = tabButtonsWidth > tabsetRect.width;\n    if (this.#currentOverflow !== newOverflow) {\n      this.#currentOverflow = newOverflow;\n      this.#overflowChange.next(this.#currentOverflow);\n    }\n  }\n\n  /**\n   * Returns the number of pixels to the left of the first tab.\n   */\n  #getTabsOffsetLeft(tabsetEl: HTMLElement): number {\n    const tabsetRect = tabsetEl.getBoundingClientRect();\n\n    // The dropdown element is the first \"tab\" and always exists in the DOM, even when hidden.\n    const firstTabRect = tabsetEl\n      .querySelector('.sky-tabset-dropdown')\n      ?.getBoundingClientRect();\n\n    // Safety check\n    /* istanbul ignore next */\n    if (!firstTabRect) {\n      return 0;\n    }\n\n    return firstTabRect.left - tabsetRect.left;\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { SkyLayoutHostService } from '@skyux/core';\n\nimport { Subject, combineLatest, race } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { TabButtonViewModel } from './tab-button-view-model';\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabLayoutType } from './tab-layout-type';\nimport { SkyTabComponent } from './tab.component';\nimport { SkyTabsetAdapterService } from './tabset-adapter.service';\nimport { SkyTabsetButtonsDisplayMode } from './tabset-buttons-display-mode';\nimport { SkyTabsetPermalinkService } from './tabset-permalink.service';\nimport { SkyTabsetStyle } from './tabset-style';\nimport { SkyTabsetTabIndexesChange } from './tabset-tab-indexes-change';\nimport { SkyTabsetService } from './tabset.service';\n\n@Component({\n  selector: 'sky-tabset',\n  styleUrls: ['./tabset.component.scss'],\n  templateUrl: './tabset.component.html',\n  providers: [\n    SkyTabsetAdapterService,\n    SkyTabsetPermalinkService,\n    SkyTabsetService,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class SkyTabsetComponent implements AfterViewInit, OnDestroy {\n  /**\n   * Activates a tab by its `tabIndex` property.\n   */\n  @Input()\n  public set active(value: SkyTabIndex | undefined) {\n    if (\n      value === undefined ||\n      this.#tabsetService.tabIndexesEqual(value, this.#_active)\n    ) {\n      return;\n    }\n\n    this.#_active = value;\n\n    if (this.tabs) {\n      this.#tabsetService.setActiveTabIndex({ tabIndex: value });\n    } else {\n      // On init, wait for children tabs to render before broadcasting the active tab index.\n      setTimeout(() => {\n        if (this.#tabsetService.isValidTabIndex(value)) {\n          // On init, yield to the permalink ID, if it exists.\n          if (this.#getActiveTabIndexByPermalinkId() === undefined) {\n            this.#tabsetService.setActiveTabIndex({ tabIndex: value });\n          }\n        } else {\n          // Activate the first tab if the new tab index is invalid.\n          this.#_active = this.#tabsetService.activateFirstTab();\n        }\n      });\n    }\n  }\n\n  public get active(): SkyTabIndex | undefined {\n    return this.#_active;\n  }\n\n  /**\n   * The ARIA label for the tabset. This sets the tabset's `aria-label` attribute to provide a text equivalent for screen readers\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * If the tabset includes a visible label, use `ariaLabelledBy` instead.\n   * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n   */\n  @Input()\n  public ariaLabel: string | undefined;\n\n  /**\n   * The HTML element ID of the element that labels\n   * the tabset. This sets the tabset's `aria-labelledby` attribute to provide a text equivalent for screen readers\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * If the tabset does not include a visible label, use `ariaLabel` instead.\n   * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n   */\n  @Input()\n  public ariaLabelledBy: string | undefined;\n\n  /**\n   * Distinguishes a tabset's unique state in the URL by generating a query parameter\n   * that is written as `?<queryParam>-active-tab=<sanitized-tab-heading>`.\n   * The query parameter's value is parsed automatically from the selected tab's heading text,\n   * but you can supply a custom query parameter value for each tab with its `permalinkValue`.\n   * This input only applies when `tabStyle` is `\"tabs\"`\n   */\n  @Input()\n  public set permalinkId(value: string | undefined) {\n    if (!value) {\n      this.#_permalinkId = '';\n    } else {\n      const sanitized = this.#permalinkService.urlify(value);\n      this.#_permalinkId = `${sanitized}-active-tab`;\n    }\n  }\n\n  public get permalinkId(): string {\n    return this.#_permalinkId;\n  }\n\n  /**\n   * The behavior for a series of tabs.\n   * @default \"tabs\"\n   */\n  @Input()\n  public set tabStyle(value: SkyTabsetStyle | undefined) {\n    this.#_tabStyle = value || 'tabs';\n  }\n\n  public get tabStyle(): SkyTabsetStyle {\n    return this.#_tabStyle;\n  }\n\n  @HostBinding('attr.data-tab-style') public get dataTabStyle(): string {\n    return this.tabStyle;\n  }\n\n  /**\n   * Fires when the active tab changes. This event emits the index of the active tab.\n   */\n  @Output()\n  public activeChange = new EventEmitter<SkyTabIndex>();\n\n  /**\n   * Fires when users click the button to add a new tab.\n   * The new tab button is added to the tab area when you specify a listener for this event.\n   * This event only applies when `tabStyle` is `\"tabs\"`.\n   */\n  @Output()\n  public newTab = new EventEmitter<void>();\n\n  /**\n   * Fires when users click the button to open a tab.\n   * The open tab button is added to the tab area when you specify a listener for this event.\n   * This event only applies when `tabStyle` is `\"tabs\"`.\n   */\n  @Output()\n  public openTab = new EventEmitter<void>();\n\n  /**\n   * Fires when any tab's `tabIndex` value changes.\n   * This event only applies when `tabStyle` is `\"tabs\"`.\n   */\n  @Output()\n  public tabIndexesChange = new EventEmitter<SkyTabsetTabIndexesChange>();\n\n  public set tabDisplayMode(value: SkyTabsetButtonsDisplayMode) {\n    this.#_tabDisplayMode = value;\n    this.#changeDetector.markForCheck();\n  }\n\n  public get tabDisplayMode(): SkyTabsetButtonsDisplayMode {\n    return this.#_tabDisplayMode;\n  }\n\n  @ContentChildren(SkyTabComponent)\n  public set tabs(value: QueryList<SkyTabComponent> | undefined) {\n    this.#_tabs = value;\n    this.#tabComponentsChangeUnsubscribe.next();\n\n    value?.changes\n      .pipe(takeUntil(this.#tabComponentsChangeUnsubscribe))\n      .subscribe(() => {\n        this.#resetTabComponents();\n      });\n  }\n\n  public get tabs(): QueryList<SkyTabComponent> | undefined {\n    return this.#_tabs;\n  }\n\n  @HostBinding('class')\n  public cssClass = 'sky-tabset-layout-none';\n\n  public dropdownTriggerButtonText = '';\n\n  /**\n   * This property is used by the deprecated tabset-nav-button component.\n   * @internal\n   */\n  public lastActiveTabIndex: SkyTabIndex | undefined;\n\n  public tabButtons: TabButtonViewModel[] = [];\n\n  #ngUnsubscribe = new Subject<void>();\n\n  #tabComponentsChangeUnsubscribe = new Subject<void>();\n  #tabComponentsStateChangeUnsubscribe = new Subject<void>();\n\n  #_active: SkyTabIndex | undefined;\n\n  #_permalinkId = '';\n\n  #_tabs: QueryList<SkyTabComponent> | undefined;\n\n  #_tabDisplayMode: SkyTabsetButtonsDisplayMode = 'tabs';\n\n  #_tabStyle: SkyTabsetStyle = 'tabs';\n\n  readonly #changeDetector = inject(ChangeDetectorRef);\n  readonly #elementRef = inject(ElementRef);\n  readonly #adapterService = inject(SkyTabsetAdapterService);\n  readonly #permalinkService = inject(SkyTabsetPermalinkService);\n  readonly #tabsetService = inject(SkyTabsetService);\n\n  #layoutHostSvc = inject(SkyLayoutHostService, { optional: true });\n\n  public ngAfterViewInit(): void {\n    this.#initTabComponents();\n\n    const initialTabIndex = this.#getInitialTabIndex();\n    this.#tabsetService.setActiveTabIndex({\n      tabIndex: initialTabIndex,\n      initial: true,\n    });\n\n    this.#listenTabButtonsOverflowChange();\n    this.#listenLocationPopStateChange();\n\n    // If the currently active tab is getting unregistered, activate the next one.\n    this.#tabsetService.activeTabUnregistered\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((tab) => {\n        // Wait for the new tabs to render before activating.\n        setTimeout(() => {\n          this.#tabsetService.activateNearestTab(tab.arrayIndex);\n        });\n      });\n\n    this.#tabsetService.activeTabLayout\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((layout) => {\n        this.#updateLayout(layout);\n      });\n\n    // Let the tabset render the initial active index before listening for changes.\n    setTimeout(() => {\n      this.#listenTabComponentsStateChange();\n      this.#listenActiveIndexChange();\n      this.#permalinkService.init();\n    });\n  }\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n    this.#tabComponentsChangeUnsubscribe.next();\n    this.#tabComponentsChangeUnsubscribe.complete();\n    this.#unsubscribeTabComponentsStateChange();\n    if (this.permalinkId) {\n      this.#permalinkService.clearParam(this.permalinkId);\n    }\n  }\n\n  public onWindowResize(): void {\n    this.#adapterService.detectOverflow();\n  }\n\n  public onTabCloseClick(tabButton: TabButtonViewModel): void {\n    const tabComponent = this.tabs?.find((tab) =>\n      this.#tabsetService.tabIndexesEqual(\n        tab.tabIndexValue,\n        tabButton.tabIndex,\n      ),\n    );\n\n    tabComponent?.close.emit();\n  }\n\n  public onTabButtonClick(tabButton: TabButtonViewModel): void {\n    this.#tabsetService.setActiveTabIndex({ tabIndex: tabButton.tabIndex });\n  }\n\n  public onNewTabClick(): void {\n    this.newTab.emit();\n  }\n\n  public onOpenTabClick(): void {\n    this.openTab.emit();\n  }\n\n  public onRightKeyDown(): void {\n    this.#tabsetService.focusNextTabBtn(this.tabButtons);\n  }\n\n  public onLeftKeyDown(): void {\n    this.#tabsetService.focusPrevTabBtn(this.tabButtons);\n  }\n\n  public onHomeKeyDown(): void {\n    this.#tabsetService.focusFirstOrNearestTabBtn(this.tabButtons);\n  }\n\n  public onEndKeyDown(): void {\n    this.#tabsetService.focusLastOrNearestTabBtn(this.tabButtons);\n  }\n\n  /**\n   * Sets the initial active tab index based on the following criteria.\n   * 1. Does the URL include a query param that reflects this tabset's active tab?\n   * 2. Does one of the tab components have their `active` property set to `true`?\n   * 3. Is the tabset component's `active` property set to a specific tab index?\n   */\n  #getInitialTabIndex(): SkyTabIndex | undefined {\n    let activeIndex: SkyTabIndex | undefined =\n      this.#getActiveTabIndexByPermalinkId();\n    if (activeIndex === undefined) {\n      activeIndex = this.#getActiveTabComponent()?.tabIndexValue;\n      if (activeIndex === undefined) {\n        activeIndex = this.active;\n      }\n    }\n\n    return activeIndex;\n  }\n\n  #listenActiveIndexChange(): void {\n    this.#tabsetService.activeTabChange\n      .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n      .subscribe((tabChange) => {\n        this.#updateTabsetComponent(\n          tabChange.tabIndex,\n          false,\n          tabChange.initial,\n        );\n        const activeTab = this.#getActiveTabComponent();\n\n        this.#updateLayout(activeTab?.layout);\n      });\n  }\n\n  #updateLayout(layout?: SkyTabLayoutType): void {\n    if (this.#layoutHostSvc && layout) {\n      this.#layoutHostSvc.setHostLayoutForChild({\n        layout,\n      });\n\n      this.cssClass = `sky-tabset-layout-${layout}`;\n    }\n  }\n\n  #listenTabComponentsStateChange(): void {\n    if (this.tabs) {\n      combineLatest(this.tabs.map((tab) => tab.activeChange))\n        .pipe(\n          takeUntil(\n            race(\n              this.#tabComponentsStateChangeUnsubscribe,\n              this.#ngUnsubscribe,\n            ),\n          ),\n        )\n        .subscribe(() => {\n          // Wait for the tab components to render changes before finding the active one.\n          setTimeout(() => {\n            const tabIndex = this.#getActiveTabComponent()?.tabIndexValue;\n            this.#tabsetService.setActiveTabIndex({ tabIndex });\n          });\n        });\n\n      combineLatest(this.tabs.map((tab) => tab.tabIndexChange))\n        .pipe(\n          takeUntil(\n            race(\n              this.#tabComponentsStateChangeUnsubscribe,\n              this.#ngUnsubscribe,\n            ),\n          ),\n        )\n        .subscribe(() => {\n          // Don't emit the first change.\n          if (this.lastActiveTabIndex !== undefined) {\n            // Wait for the tab components to render changes before updating the view.\n            setTimeout(() => {\n              this.#updateTabsetComponent(\n                this.#tabsetService.currentActiveTabIndex,\n                true,\n              );\n              this.#emitTabIndexChange();\n            });\n          }\n        });\n\n      combineLatest(this.tabs.map((tab) => tab.stateChange))\n        .pipe(\n          takeUntil(\n            race(\n              this.#tabComponentsStateChangeUnsubscribe,\n              this.#ngUnsubscribe,\n            ),\n          ),\n        )\n        .subscribe(() => {\n          // Wait for the tab components to render changes before finding the active one.\n          setTimeout(() => {\n            this.#updateTabsetComponent(\n              this.#tabsetService.currentActiveTabIndex,\n              true,\n            );\n          });\n        });\n    }\n  }\n\n  #initTabComponents(): void {\n    this.tabs?.forEach((tab) => tab.init());\n  }\n\n  #resetTabComponents(): void {\n    this.#unsubscribeTabComponentsStateChange();\n    this.#tabsetService.unregisterAll();\n\n    // If there are no tab components, do a hard reset of the view.\n    if (this.tabs?.length === 0) {\n      this.#updateTabsetComponent(0, true);\n      return;\n    }\n\n    this.#initTabComponents();\n    const activeIndex = this.#getActiveTabComponent()?.tabIndexValue;\n    this.#tabsetService.setActiveTabIndex(\n      {\n        tabIndex: activeIndex,\n      },\n      {\n        emitChange: false,\n      },\n    );\n    this.#listenTabComponentsStateChange();\n  }\n\n  #emitTabIndexChange(): void {\n    this.tabIndexesChange.emit({\n      tabs: this.tabs?.map((tab) => ({\n        tabHeading: tab.tabHeading,\n        tabIndex: tab.tabIndexValue,\n      })),\n    });\n  }\n\n  #unsubscribeTabComponentsStateChange(): void {\n    this.#tabComponentsStateChangeUnsubscribe.next();\n    this.#tabComponentsStateChangeUnsubscribe.complete();\n    this.#tabComponentsStateChangeUnsubscribe = new Subject<void>();\n  }\n\n  #listenTabButtonsOverflowChange(): void {\n    this.#adapterService.registerTabset(this.#elementRef);\n    this.#adapterService.overflowChange\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((isOverflowing) => {\n        this.tabDisplayMode = isOverflowing ? 'dropdown' : 'tabs';\n        this.#changeDetector.markForCheck();\n      });\n  }\n\n  /**\n   * Listen for back/forward history button presses to detect query param changes in the URL.\n   */\n  #listenLocationPopStateChange(): void {\n    this.#permalinkService.popStateChange\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe(() => {\n        this.#setActiveTabIndexByPermalinkId();\n      });\n  }\n\n  #setActiveTabIndexByPermalinkId(): void {\n    const activeIndex = this.#getActiveTabIndexByPermalinkId();\n    this.#tabsetService.setActiveTabIndex({\n      tabIndex: activeIndex,\n    });\n  }\n\n  #getActiveTabIndexByPermalinkId(): SkyTabIndex | undefined {\n    if (this.permalinkId) {\n      const paramValue = this.#permalinkService.getParam(this.permalinkId);\n      if (paramValue) {\n        return this.tabs?.find(\n          (tab) => tab.permalinkValueOrDefault === paramValue,\n        )?.tabIndexValue;\n      }\n      return undefined;\n    }\n    return undefined;\n  }\n\n  #getActiveTabComponent(): SkyTabComponent | undefined {\n    return this.tabs\n      ?.toArray()\n      .reverse()\n      .find((tab) => tab.active === true);\n  }\n\n  #createTabButtons(\n    activeIndex: SkyTabIndex | undefined,\n  ): TabButtonViewModel[] {\n    // Safety check\n    /* istanbul ignore next */\n    if (!this.tabs) {\n      return [];\n    }\n\n    return this.tabs.map((tab, index) => ({\n      active: this.#tabsetService.tabIndexesEqual(\n        tab.tabIndexValue,\n        activeIndex,\n      ),\n      closeable: tab.isCloseable(),\n      ariaControls: tab.tabPanelId,\n      disabled: tab.disabled,\n      buttonHref: tab.disabled\n        ? null\n        : this.#permalinkService.getParamHref(\n            this.permalinkId,\n            tab.permalinkValueOrDefault,\n          ),\n      buttonId: tab.tabButtonId,\n      buttonTextCount: tab.tabHeaderCount,\n      buttonText: tab.tabHeading,\n      tabIndex: tab.tabIndexValue,\n      tabNumber: index + 1,\n      totalTabsCount: this.tabs!.length,\n    }));\n  }\n\n  #updateTabButtons(activeIndex: SkyTabIndex | undefined): void {\n    this.tabButtons.forEach((button) => {\n      button.active = this.#tabsetService.tabIndexesEqual(\n        button.tabIndex,\n        activeIndex,\n      );\n    });\n  }\n\n  /**\n   * Updates the UI and state of the tabset component after the tab index or\n   * tab components have changed.\n   * @param activeIndex The currently active tab index.\n   * @param regenerateTabButtons Indicates if tab button view models should be regenerated.\n   * Setting this value to `false` will simply update the existing tab buttons. Setting this value\n   * to `true` is only necessary when the underlying tab components have changed and the tab\n   * buttons must reflect those changes.\n   * @param initial Indicates whether tabs are being updated during initialization of the tabset\n   * component. This is passed through to the permalink service where it prevents adding an extra\n   * item to browser history when the URL is updated with the selected tab's permalink value.\n   */\n  #updateTabsetComponent(\n    activeIndex: SkyTabIndex | undefined,\n    regenerateTabButtons: boolean,\n    initial?: boolean,\n  ): void {\n    // Activate/deactivate tab components.\n    this.tabs?.forEach((tab) => {\n      if (this.#tabsetService.tabIndexesEqual(tab.tabIndexValue, activeIndex)) {\n        tab.activate();\n      } else {\n        tab.deactivate();\n      }\n    });\n\n    // Update the tab button models.\n    if (regenerateTabButtons || !this.tabButtons.length) {\n      this.tabButtons = this.#createTabButtons(activeIndex);\n    } else {\n      this.#updateTabButtons(activeIndex);\n    }\n\n    // Update the dropdown trigger button text.\n    this.dropdownTriggerButtonText =\n      this.tabButtons.find((b) => {\n        return this.#tabsetService.tabIndexesEqual(b.tabIndex, activeIndex);\n      })?.buttonText ?? '';\n\n    // Set the query params based on active tab.\n    if (this.permalinkId) {\n      const activeTabComponent = this.tabs?.find((tab) => {\n        return this.#tabsetService.tabIndexesEqual(\n          tab.tabIndexValue,\n          activeIndex,\n        );\n      });\n      if (activeTabComponent) {\n        this.#permalinkService.setParam(\n          this.permalinkId,\n          activeTabComponent.permalinkValueOrDefault,\n          initial,\n        );\n      }\n    }\n\n    // Wait for tab button view models to render before gauging dimensions.\n    setTimeout(() => {\n      this.#adapterService.detectOverflow();\n    });\n\n    this.#changeDetector.markForCheck();\n\n    // Emit the new active index value to consumers.\n    if (this.lastActiveTabIndex !== activeIndex) {\n      this.lastActiveTabIndex = activeIndex;\n      this.activeChange.emit(activeIndex);\n    }\n  }\n}\n","<!-- eslint-disable @angular-eslint/template/interactive-supports-focus -->\n<div\n  class=\"sky-tabset\"\n  role=\"tablist\"\n  [attr.aria-label]=\"ariaLabel\"\n  [attr.aria-labelledby]=\"ariaLabelledBy\"\n  [ngClass]=\"\n    'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n  \"\n  (window:resize)=\"onWindowResize()\"\n  (keydown.arrowright)=\"onRightKeyDown()\"\n  (keydown.arrowleft)=\"onLeftKeyDown()\"\n  (keydown.home)=\"onHomeKeyDown()\"\n  (keydown.end)=\"onEndKeyDown()\"\n>\n  <span class=\"sky-tabset-dropdown\">\n    @if (tabDisplayMode === 'dropdown') {\n      <sky-dropdown buttonType=\"tab\">\n        <sky-dropdown-button>\n          {{ dropdownTriggerButtonText }}\n        </sky-dropdown-button>\n        <sky-dropdown-menu>\n          @for (tabButton of tabButtons; track tabButton.buttonId) {\n            <sky-dropdown-item class=\"sky-tab-dropdown-menu-item\">\n              <div\n                class=\"sky-tab-dropdown-item\"\n                [ngClass]=\"{\n                  'sky-tab-dropdown-item-selected': tabButton.active\n                }\"\n              >\n                <ng-container\n                  *ngTemplateOutlet=\"\n                    tabButtonTemplate;\n                    context: {\n                      $implicit: tabButton\n                    }\n                  \"\n                />\n              </div>\n            </sky-dropdown-item>\n          }\n        </sky-dropdown-menu>\n      </sky-dropdown>\n    }\n  </span>\n  <span class=\"sky-tabset-tabs\">\n    @for (tabButton of tabButtons; track tabButton.buttonId) {\n      <ng-container\n        *ngTemplateOutlet=\"\n          tabButtonTemplate;\n          context: {\n            $implicit: tabButton\n          }\n        \"\n      />\n    }\n  </span>\n  <span class=\"sky-tabset-btns\">\n    @if (newTab.observers.length > 0) {\n      <button\n        class=\"sky-btn sky-btn-icon sky-tabset-btn-new\"\n        type=\"button\"\n        [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n        [skyThemeClass]=\"{\n          'sky-theme-margin-right-xs': 'default'\n        }\"\n        (click)=\"onNewTabClick()\"\n      >\n        <sky-icon iconName=\"add\" />\n      </button>\n    }\n    @if (openTab.observers.length > 0) {\n      <button\n        class=\"sky-btn sky-btn-icon sky-tabset-btn-open\"\n        type=\"button\"\n        [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n        [skyThemeClass]=\"{\n          'sky-theme-margin-right-xs': 'default'\n        }\"\n        (click)=\"onOpenTabClick()\"\n      >\n        <sky-icon iconName=\"folder-open\" />\n      </button>\n    }\n  </span>\n</div>\n<ng-content />\n\n<ng-template #tabButtonTemplate let-tabButton>\n  <sky-tab-button\n    [active]=\"tabButton.active\"\n    [ariaControls]=\"tabButton.ariaControls\"\n    [buttonHref]=\"tabButton.buttonHref\"\n    [buttonId]=\"tabButton.buttonId\"\n    [buttonText]=\"tabButton.buttonText\"\n    [buttonTextCount]=\"tabButton.buttonTextCount\"\n    [closeable]=\"tabButton.closeable\"\n    [disabled]=\"tabButton.disabled\"\n    [tabIndex]=\"tabButton.tabIndex\"\n    [tabStyle]=\"tabStyle\"\n    [tabNumber]=\"tabButton.tabNumber\"\n    [totalTabsCount]=\"tabButton.totalTabsCount\"\n    (buttonClick)=\"onTabButtonClick(tabButton)\"\n    (closeClick)=\"onTabCloseClick(tabButton)\"\n  />\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIdModule, SkyResponsiveHostDirective } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyDropdownModule } from '@skyux/popovers';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';\n\nimport { SkyTabButtonComponent } from './tab-button.component';\nimport { SkyTabComponent } from './tab.component';\nimport { SkyTabsetNavButtonDisabledPipe } from './tabset-nav-button-disabled.pipe';\nimport { SkyTabsetNavButtonComponent } from './tabset-nav-button.component';\nimport { SkyTabsetComponent } from './tabset.component';\n\n@NgModule({\n  declarations: [\n    SkyTabButtonComponent,\n    SkyTabComponent,\n    SkyTabsetComponent,\n    SkyTabsetNavButtonComponent,\n    SkyTabsetNavButtonDisabledPipe,\n  ],\n  imports: [\n    CommonModule,\n    SkyResponsiveHostDirective,\n    SkyDropdownModule,\n    SkyIconModule,\n    SkyIdModule,\n    SkyTabsResourcesModule,\n    SkyThemeModule,\n  ],\n  exports: [SkyTabComponent, SkyTabsetComponent, SkyTabsetNavButtonComponent],\n})\nexport class SkyTabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId","i2","i3","DEFAULT_TAB_WIDTH","i1.SkyVerticalTabComponent","i4","i3.SkyTabsetNavButtonDisabledPipe","i5.SkyTabButtonComponent","i6"],"mappings":"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"}