{"version":3,"file":"mayvio-ui-angular-tabs.mjs","sources":["../../src/tabs/tabs.component.ts","../../src/tabs/mayvio-ui-angular-tabs.ts"],"sourcesContent":["import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  OnDestroy,\n  inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nlet nextId = 0;\n\n@Component({\n  selector: 'mv-tab',\n  standalone: true,\n  template: `\n    <div\n      role=\"tabpanel\"\n      [attr.id]=\"'mv-tab-panel-' + id\"\n      [attr.aria-labelledby]=\"'mv-tab-' + id\"\n      class=\"mv-tabs__panel\"\n      [class.mv-tabs__panel--hidden]=\"!active\"\n      [hidden]=\"!active\"\n    >\n      <ng-content></ng-content>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabComponent {\n  @Input() label: string = '';\n  @Input() id: string = `tab-${nextId++}`;\n  @Input() disabled: boolean = false;\n\n  active: boolean = false;\n\n  public cdr = inject(ChangeDetectorRef);\n}\n\n@Component({\n  selector: 'mv-tabs',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div class=\"mv-tabs\" [class]=\"hostClass\">\n      <div class=\"mv-tabs__list\" role=\"tablist\">\n        <button\n          *ngFor=\"let tab of tabs\"\n          type=\"button\"\n          role=\"tab\"\n          [attr.id]=\"'mv-tab-' + tab.id\"\n          [attr.aria-selected]=\"tab.active\"\n          [attr.aria-controls]=\"'mv-tab-panel-' + tab.id\"\n          class=\"mv-tabs__tab\"\n          [class.mv-tabs__tab--active]=\"tab.active\"\n          [class.mv-tabs__tab--disabled]=\"tab.disabled\"\n          [disabled]=\"tab.disabled\"\n          (click)=\"selectTab(tab)\"\n        >\n          {{ tab.label }}\n        </button>\n      </div>\n      <ng-content></ng-content>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabsComponent implements AfterContentInit, OnDestroy {\n  @Input() activeId?: string;\n  @Input() hostClass = '';\n\n  @Output() activeIdChange = new EventEmitter<string>();\n\n  @ContentChildren(TabComponent) tabs!: QueryList<TabComponent>;\n\n  private destroy$ = new Subject<void>();\n  private cdr = inject(ChangeDetectorRef);\n\n  ngAfterContentInit(): void {\n    this.tabs.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      this.updateActiveTab();\n    });\n    this.updateActiveTab();\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  ngOnChanges(): void {\n    if (this.tabs) {\n      this.updateActiveTab();\n    }\n  }\n\n  selectTab(tab: TabComponent): void {\n    if (tab.disabled || tab.active) {\n      return;\n    }\n\n    this.tabs.toArray().forEach((t) => {\n      t.active = false;\n      t.cdr.markForCheck();\n    });\n\n    tab.active = true;\n    tab.cdr.markForCheck();\n\n    this.activeIdChange.emit(tab.id);\n  }\n\n  private updateActiveTab(): void {\n    const tabsArray = this.tabs.toArray();\n    if (!tabsArray.length) return;\n\n    let tabToActivate = tabsArray.find((t) => t.id === this.activeId);\n\n    // If no activeId is provided or found, activate the first non-disabled tab\n    if (!tabToActivate) {\n      const activeTab = tabsArray.find((t) => t.active);\n      if (activeTab) {\n        tabToActivate = activeTab;\n      } else {\n        tabToActivate = tabsArray.find((t) => !t.disabled);\n      }\n    }\n\n    if (tabToActivate) {\n      this.selectTab(tabToActivate);\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}