{"version":3,"file":"ngx-bootstrap-tabs.mjs","sources":["../../../../src/tabs/ng-transclude.directive.ts","../../../../src/tabs/tabset.config.ts","../../../../src/tabs/tabset.component.ts","../../../../src/tabs/tabset.component.html","../../../../src/tabs/tab.directive.ts","../../../../src/tabs/tab-heading.directive.ts","../../../../src/tabs/tabs.module.ts","../../../../src/tabs/ngx-bootstrap-tabs.ts"],"sourcesContent":["import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n    selector: '[ngTransclude]',\n    standalone: true\n})\nexport class NgTranscludeDirective {\n  viewRef: ViewContainerRef;\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  protected _ngTransclude?: TemplateRef<any>;\n\n  @Input()\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  set ngTransclude(templateRef: TemplateRef<any> | undefined) {\n    this._ngTransclude = templateRef;\n    if (templateRef) {\n      this.viewRef.createEmbeddedView(templateRef);\n    }\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  get ngTransclude(): TemplateRef<any> | undefined {\n    return this._ngTransclude;\n  }\n\n  constructor(viewRef: ViewContainerRef) {\n    this.viewRef = viewRef;\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TabsetConfig {\n  /** provides default navigation context class: 'tabs' or 'pills' */\n  type = 'tabs';\n  /** provides possibility to set keyNavigations enable or disable, by default is enable */\n  isKeysAllowed = true;\n  /** aria label for tab list */\n  ariaLabel = 'Tabs';\n}\n","import { Component, HostBinding, Input, OnDestroy, Renderer2, ElementRef } from '@angular/core';\n\nimport { TabDirective } from './tab.directive';\nimport { TabsetConfig } from './tabset.config';\nimport { NgTranscludeDirective } from './ng-transclude.directive';\nimport { NgClass } from '@angular/common';\n// todo: add active event to tab\n// todo: fix? mixing static and dynamic tabs position tabs in order of creation\n@Component({\n    selector: 'tabset',\n    templateUrl: './tabset.component.html',\n    styleUrls: ['./tabs.scss'],\n    standalone: true,\n    imports: [NgClass, NgTranscludeDirective]\n})\nexport class TabsetComponent implements OnDestroy {\n  /** if true tabs will be placed vertically */\n  @Input()\n  get vertical(): boolean {\n    return this._vertical;\n  }\n  set vertical(value: boolean) {\n    this._vertical = value;\n    this.setClassMap();\n  }\n\n  /** if true tabs fill the container and have a consistent width */\n  @Input()\n  get justified(): boolean {\n    return this._justified;\n  }\n  set justified(value: boolean) {\n    this._justified = value;\n    this.setClassMap();\n  }\n\n  /** navigation context class: 'tabs' or 'pills' */\n  @Input()\n  get type(): string {\n    return this._type;\n  }\n  set type(value: string) {\n    this._type = value;\n    this.setClassMap();\n  }\n\n  get isKeysAllowed(): boolean {\n    return this._isKeysAllowed;\n  }\n\n  set isKeysAllowed(value: boolean) {\n    this._isKeysAllowed = value;\n  }\n\n  @HostBinding('class.tab-container') clazz = true;\n\n  tabs: TabDirective[] = [];\n  classMap: { [key: string]: boolean } = {};\n\n  /** aria label for tab list */\n  ariaLabel = 'Tabs';\n\n  protected isDestroyed = false;\n  protected _vertical = false;\n  protected _justified = false;\n  protected _type = 'tabs';\n  protected _isKeysAllowed = true;\n  private defaultActivationScheduled = false;\n\n  constructor(\n    config: TabsetConfig,\n    private renderer: Renderer2,\n    private elementRef: ElementRef\n  ) {\n    Object.assign(this, config);\n  }\n\n  ngOnDestroy(): void {\n    this.isDestroyed = true;\n  }\n\n  addTab(tab: TabDirective): void {\n    // If tab has a tabOrder, insert it in the correct position\n    if (tab.tabOrder !== undefined) {\n      this.insertTabByOrder(tab);\n    } else {\n      // Default behavior - add to end\n      this.tabs.push(tab);\n    }\n\n    // Activation logic\n    // - If the newly added tab is already active, set it active again to leverage\n    //   TabDirective's setter which will deactivate others.\n    // - Otherwise, schedule a single deferred default-first activation if none active.\n    if (tab.active) {\n      tab.active = true;\n      return;\n    }\n\n    if (!this.defaultActivationScheduled) {\n      this.defaultActivationScheduled = true;\n      // Defer default activation to avoid racing template-driven [active] inputs\n      Promise.resolve().then(() => {\n        this.defaultActivationScheduled = false;\n        // Guard in case the tabset changed meanwhile\n        if (!this.tabs.length) {\n          return;\n        }\n        if (this.tabs.some((t: TabDirective) => !!t.active)) {\n          return;\n        }\n        const firstEnabled = this.tabs.find((t: TabDirective) => !t.disabled);\n        if (firstEnabled) {\n          firstEnabled.active = true;\n        }\n      });\n    }\n  }\n\n  private insertTabByOrder(tab: TabDirective): void {\n    let insertIndex = this.tabs.length; // Default to end\n\n    // Find the correct position to insert the ordered tab\n    for (let i = 0; i < this.tabs.length; i++) {\n      const existingTab = this.tabs[i];\n\n      // If the existing tab has an order and the new tab's order is less than it\n      if (existingTab.tabOrder !== undefined &&\n          tab.tabOrder !== undefined &&\n          tab.tabOrder < existingTab.tabOrder) {\n        insertIndex = i;\n        break;\n      }\n\n      // If we reach an unordered tab, we want to insert before it\n      // (ordered tabs should come before unordered tabs)\n      if (existingTab.tabOrder === undefined) {\n        insertIndex = i;\n        break;\n      }\n    }\n\n    // Insert at the found position\n    this.tabs.splice(insertIndex, 0, tab);\n  }\n\n  removeTab(\n    tab: TabDirective,\n    options = { reselect: true, emit: true }\n  ): void {\n    const index = this.tabs.indexOf(tab);\n    if (index === -1 || this.isDestroyed) {\n      return;\n    }\n    // Select a new tab if the tab to be removed is selected and not destroyed\n    if (options.reselect && tab.active && this.hasAvailableTabs(index)) {\n      const newActiveIndex = this.getClosestTabIndex(index);\n      this.tabs[newActiveIndex].active = true;\n    }\n    if (options.emit) {\n      tab.removed.emit(tab);\n    }\n    this.tabs.splice(index, 1);\n    if (tab.elementRef.nativeElement.parentNode) {\n      this.renderer.removeChild(\n        tab.elementRef.nativeElement.parentNode,\n        tab.elementRef.nativeElement\n      );\n    }\n  }\n\n    keyNavActions(event: KeyboardEvent, index: number) {\n    if (!this.isKeysAllowed) {\n      return;\n    }\n    const list: HTMLElement[] = Array.from(this.elementRef.nativeElement.querySelectorAll('.nav-link'));\n    // const activeElList = list.filter((el: HTMLElement) => !el.classList.contains('disabled'));\n    if (event.keyCode === 13 || event.key === 'Enter' || event.keyCode === 32 || event.key === 'Space') {\n      event.preventDefault();\n      const currentTab = list[(index) % list.length];\n      currentTab.click();\n\n      return;\n    }\n\n    if (event.keyCode === 39 || event.key === 'RightArrow') {\n      let nextTab: HTMLElement;\n      let shift = 1;\n\n      do {\n        nextTab = list[(index + shift) % list.length];\n\n        shift++;\n      } while (nextTab.classList.contains('disabled'));\n\n      nextTab.focus();\n\n      return;\n    }\n\n    if (event.keyCode === 37 || event.key === 'LeftArrow') {\n      let previousTab: HTMLElement;\n      let shift = 1;\n      let i = index;\n\n      do {\n        if ((i - shift) < 0) {\n          i = list.length - 1;\n          previousTab = list[i];\n          shift = 0;\n        } else {\n          previousTab = list[i - shift];\n        }\n\n        shift++;\n      } while (previousTab.classList.contains('disabled'));\n\n      previousTab.focus();\n\n      return;\n    }\n\n    if (event.keyCode === 36 || event.key === 'Home') {\n      event.preventDefault();\n\n      let firstTab: HTMLElement;\n      let shift = 0;\n\n      do {\n        firstTab = list[shift % list.length];\n\n        shift++;\n      } while (firstTab.classList.contains('disabled'));\n\n      firstTab.focus();\n\n      return;\n    }\n\n    if (event.keyCode === 35 || event.key === 'End') {\n      event.preventDefault();\n\n      let lastTab: HTMLElement;\n      let shift = 1;\n      let i = index;\n\n      do {\n        if ((i - shift) < 0) {\n          i = list.length - 1;\n          lastTab = list[i];\n          shift = 0;\n        } else {\n          lastTab = list[i - shift];\n        }\n\n        shift++;\n      } while (lastTab.classList.contains('disabled'));\n\n      lastTab.focus();\n\n      return;\n    }\n\n    if (event.keyCode === 46 || event.key === 'Delete') {\n      if (this.tabs[index].removable) {\n        this.removeTab(this.tabs[index]);\n\n        if (list[index + 1]) {\n          list[(index + 1) % list.length].focus();\n\n          return;\n        }\n\n        if (list[list.length - 1]) {\n          list[0].focus();\n        }\n      }\n    }\n  }\n\n  protected getClosestTabIndex(index: number): number {\n    const tabsLength = this.tabs.length;\n    if (!tabsLength) {\n      return -1;\n    }\n\n    for (let step = 1; step <= tabsLength; step += 1) {\n      const prevIndex = index - step;\n      const nextIndex = index + step;\n      if (this.tabs[prevIndex] && !this.tabs[prevIndex].disabled) {\n        return prevIndex;\n      }\n      if (this.tabs[nextIndex] && !this.tabs[nextIndex].disabled) {\n        return nextIndex;\n      }\n    }\n\n    return -1;\n  }\n\n  protected hasAvailableTabs(index: number): boolean {\n    const tabsLength = this.tabs.length;\n    if (!tabsLength) {\n      return false;\n    }\n\n    for (let i = 0; i < tabsLength; i += 1) {\n      if (!this.tabs[i].disabled && i !== index) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  protected setClassMap(): void {\n    this.classMap = {\n      'nav-stacked': this.vertical,\n      'flex-column': this.vertical,\n      'nav-justified': this.justified,\n      [`nav-${this.type}`]: true\n    };\n  }\n}\n","<ul class=\"nav\" [ngClass]=\"classMap\"\n  (click)=\"$event.preventDefault()\"\n  [attr.aria-label]=\"ariaLabel\"\n  role=\"tablist\">\n  @for (tabz of tabs; track tabz; let i = $index) {\n    <li [ngClass]=\"['nav-item', tabz.customClass || '']\"\n      [class.active]=\"tabz.active\" [class.disabled]=\"tabz.disabled\" (keydown)=\"keyNavActions($event, i)\">\n      <a href=\"javascript:void(0);\" class=\"nav-link\" role=\"tab\"\n        [attr.aria-controls]=\"tabz.id ? tabz.id : ''\"\n        [attr.aria-selected]=\"!!tabz.active\"\n        [attr.id]=\"tabz.id ? tabz.id + '-link' : ''\"\n        [class.active]=\"tabz.active\" [class.disabled]=\"tabz.disabled\"\n        (click)=\"tabz.active = true\">\n        <span [ngTransclude]=\"tabz.headingRef\">{{ tabz.heading }}</span>\n        @if (tabz.removable) {\n          <span (click)=\"$event.preventDefault(); removeTab(tabz);\" class=\"bs-remove-tab\"> &#10060;</span>\n        }\n      </a>\n    </li>\n  }\n</ul>\n<div class=\"tab-content\">\n  <ng-content></ng-content>\n</div>\n","import {\n  Directive,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  TemplateRef,\n  OnInit,\n  OnDestroy,\n  ElementRef,\n  Renderer2\n} from '@angular/core';\nimport { TabsetComponent } from './tabset.component';\n\n@Directive({\n    selector: 'tab, [tab]', exportAs: 'tab',\n    standalone: true\n})\nexport class TabDirective implements OnInit, OnDestroy {\n  /** tab header text */\n  @Input() heading?: string;\n  /** tab id. The same id with suffix '-link' will be added to the corresponding &lt;li&gt; element  */\n  @HostBinding('attr.id')\n  @Input() id?: string;\n  /** if true tab can not be activated */\n  @Input() disabled = false;\n  /** if true tab can be removable, additional button will appear */\n  @Input() removable = false;\n  /** tab order for sorting when using dynamic tabs with *ngIf */\n  @Input() tabOrder?: number;\n  /** if set, will be added to the tab's class attribute. Multiple classes are supported. */\n  @Input()\n  get customClass(): string | undefined {\n    return this._customClass;\n  }\n\n  set customClass(customClass: string | undefined) {\n      if (this.customClass) {\n        this.customClass.split(' ').forEach((cssClass: string) => {\n          this.renderer.removeClass(this.elementRef.nativeElement, cssClass);\n        });\n      }\n\n      this._customClass = customClass ? customClass.trim() : '';\n\n      if (this.customClass) {\n        this.customClass.split(' ').forEach((cssClass: string) => {\n          this.renderer.addClass(this.elementRef.nativeElement, cssClass);\n        });\n      }\n  }\n\n  /** tab active state toggle */\n  @HostBinding('class.active')\n  @Input()\n  get active(): boolean | undefined {\n    return this._active;\n  }\n\n  set active(active: boolean | undefined) {\n    if (this._active === active) {\n      return;\n    }\n    if ((this.disabled && active) || !active) {\n      if (this._active && !active) {\n        this.deselect.emit(this);\n        this._active = active;\n      }\n\n      return;\n    }\n\n    this._active = active;\n    this.selectTab.emit(this);\n    this.tabset.tabs.forEach((tab: TabDirective) => {\n      if (tab !== this) {\n        tab.active = false;\n      }\n    });\n  }\n\n  /** fired when tab became active, $event:Tab equals to selected instance of Tab component */\n  @Output() selectTab: EventEmitter<TabDirective> = new EventEmitter();\n  /** fired when tab became inactive, $event:Tab equals to deselected instance of Tab component */\n  @Output() deselect: EventEmitter<TabDirective> = new EventEmitter();\n  /** fired before tab will be removed, $event:Tab equals to instance of removed tab */\n  @Output() removed: EventEmitter<TabDirective> = new EventEmitter();\n\n  @HostBinding('class.tab-pane') addClass = true;\n  @HostBinding('attr.role') role = 'tabpanel';\n  @HostBinding('attr.aria-labelledby') get ariaLabelledby(): string {\n    return this.id ? `${this.id}-link` : '';\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  headingRef?: TemplateRef<any>;\n  tabset: TabsetComponent;\n  protected _active? = false;\n  protected _customClass = '';\n\n  constructor(\n    tabset: TabsetComponent,\n    public elementRef: ElementRef,\n    public renderer: Renderer2\n  ) {\n    this.tabset = tabset;\n  }\n\n  ngOnInit(): void {\n    this.removable = !!this.removable;\n    // Add tab to tabset after input properties are set\n    this.tabset.addTab(this);\n  }\n\n  ngOnDestroy(): void {\n    this.tabset.removeTab(this, { reselect: false, emit: false });\n  }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\nimport { TabDirective } from './tab.directive';\n\n/** Should be used to mark <ng-template> element as a template for tab heading */\n@Directive({\n    selector: '[tabHeading]',\n    standalone: true\n})\nexport class TabHeadingDirective {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  templateRef?: TemplateRef<any>;\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  constructor(templateRef: TemplateRef<any>, tab: TabDirective) {\n    tab.headingRef = templateRef;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { NgTranscludeDirective } from './ng-transclude.directive';\nimport { TabHeadingDirective } from './tab-heading.directive';\nimport { TabDirective } from './tab.directive';\nimport { TabsetComponent } from './tabset.component';\n\n@NgModule({\n    imports: [CommonModule, NgTranscludeDirective,\n        TabDirective,\n        TabsetComponent,\n        TabHeadingDirective],\n    exports: [\n        TabDirective,\n        TabsetComponent,\n        TabHeadingDirective,\n        NgTranscludeDirective\n    ]\n})\nexport class TabsModule {\n  // @deprecated method not required anymore, will be deleted in v19.0.0\n  static forRoot(): ModuleWithProviders<TabsModule> {\n    return {\n      ngModule: TabsModule,\n      providers: []\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TabsetConfig","i1.TabsetComponent","i1.TabDirective"],"mappings":"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"}