{"version":3,"file":"tapsellorg-angular-material-library-src-lib-tab-group.mjs","sources":["../../projects/pegah-library/src/lib/tab-group/tab-group.constants.ts","../../projects/pegah-library/src/lib/tab-group/tab-group.component.ts","../../projects/pegah-library/src/lib/tab-group/tab-group.component.html","../../projects/pegah-library/src/lib/tab-group/tapsellorg-angular-material-library-src-lib-tab-group.ts"],"sourcesContent":["export interface PghMatTabsModel<T = any> {\n  label: string;\n  key: string;\n  component: T;\n  inputs?: Record<string, unknown>;\n  disabled?: boolean;\n  preIcon?: string;\n  suffixIcon?: string;\n}\n\nexport const QUERY_PARAM_TAB = 'tab';\n\nexport type AlignTabsType = 'start' | 'center' | 'end';\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, inject, input, signal } from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AlignTabsType, PghMatTabsModel, QUERY_PARAM_TAB } from './tab-group.constants';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n  selector: 'pgh-tab-group',\n  templateUrl: './tab-group.component.html',\n  styleUrl: './tab-group.component.scss',\n  imports: [MatTabsModule, NgComponentOutlet, MatIcon],\n  standalone: true,\n})\nexport class PghTabGroupComponent {\n  private readonly activatedRoute = inject(ActivatedRoute);\n  private router = inject(Router);\n\n  tabs = input.required<PghMatTabsModel[]>();\n  matStretchTabs = input<boolean>(false);\n  matAlignTabs = input<AlignTabsType | null>('start');\n  selectedTabIndex = signal<number>(0);\n\n  ngOnInit(): void {\n    this.handleQueryParamsSnapShot();\n  }\n\n  private handleQueryParamsSnapShot(): void {\n    const tabKey = this.activatedRoute.snapshot.queryParamMap.get(QUERY_PARAM_TAB);\n    if (!tabKey) {\n      this.onTabChange(0);\n      return;\n    }\n    const index = this.tabs().findIndex(tab => tab.key === tabKey);\n    this.selectedTabIndex.set(index !== -1 ? index : 0);\n  }\n\n  onTabChange(index: number) {\n    const tabKey = this.tabs()[index]?.key;\n    if (!tabKey) return;\n\n    this.selectedTabIndex.set(index);\n\n    this.router.navigate([], {\n      relativeTo: this.activatedRoute,\n      queryParams: { tab: tabKey },\n      queryParamsHandling: 'merge',\n    });\n  }\n}\n","<mat-tab-group\n  [mat-stretch-tabs]=\"matStretchTabs()\"\n  [mat-align-tabs]=\"matAlignTabs()\"\n  [selectedIndex]=\"selectedTabIndex()\"\n  (selectedIndexChange)=\"onTabChange($event)\"\n>\n  @for (tab of tabs(); track tab.key) {\n  <mat-tab [disabled]=\"tab.disabled\">\n    <ng-template mat-tab-label>\n      <div class=\"d-flex align-items-end gap-1\">\n        @if(tab.preIcon) {\n        <mat-icon [svgIcon]=\"tab.preIcon\" />\n        }\n        <span>{{ tab.label }}</span>\n        @if(tab.suffixIcon) {\n        <mat-icon [svgIcon]=\"tab.suffixIcon\" />\n        }\n      </div>\n    </ng-template>\n    <ng-template matTabContent>\n      <ng-container *ngComponentOutlet=\"tab.component; inputs: tab.inputs\"></ng-container>\n    </ng-template>\n  </mat-tab>\n  }\n</mat-tab-group>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}