{"version":3,"file":"sdcorejs-angular-components-tab.mjs","sources":["../../../projects/sdcorejs-angular/components/tab/src/tab.component.ts","../../../projects/sdcorejs-angular/components/tab/src/tab-group.component.ts","../../../projects/sdcorejs-angular/components/tab/src/tab-group.component.html","../../../projects/sdcorejs-angular/components/tab/sdcorejs-angular-components-tab.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, input, output, TemplateRef, viewChild } from '@angular/core';\n\nexport type SdTabBeforeClose = () => boolean | Promise<boolean>;\n\n@Component({\n  selector: 'sd-tab',\n  standalone: true,\n  template: `<ng-template #body><ng-content></ng-content></ng-template>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SdTab {\n  label = input.required<string>();\n  icon = input<string | null | undefined>(undefined);\n  badge = input<string | number | null | undefined>(undefined);\n  disabled = input(false, { transform: booleanAttribute });\n  closable = input(false, { transform: booleanAttribute });\n  beforeClose = input<SdTabBeforeClose | undefined>(undefined);\n\n  close = output<void>();\n  closeError = output<unknown>();\n\n  #closeRequest?: Promise<boolean>;\n\n  requestClose = (): Promise<boolean> => {\n    const guard = this.beforeClose();\n    if (!guard) {\n      this.forceClose();\n      return Promise.resolve(true);\n    }\n    if (this.#closeRequest) return this.#closeRequest;\n\n    const request = Promise.resolve()\n      .then(() => guard())\n      .then(canClose => {\n        if (!canClose) return false;\n        this.forceClose();\n        return true;\n      })\n      .catch((error: unknown) => {\n        this.closeError.emit(error);\n        return false;\n      });\n\n    this.#closeRequest = request;\n    void request.finally(() => {\n      if (this.#closeRequest === request) this.#closeRequest = undefined;\n    });\n    return request;\n  };\n\n  forceClose = (): void => this.close.emit();\n\n  // why: viewChild on `#body` template captures projected content so the parent\n  // <sd-tab-group> can render it lazily via matTabContent + ngTemplateOutlet.\n  // If we projected raw ng-content into <mat-tab> directly, mat-tab would render\n  // eagerly and lose the lazy-load behavior.\n  bodyTpl = viewChild.required<TemplateRef<unknown>>('body');\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  contentChildren,\n  effect,\n  HostBinding,\n  input,\n  model,\n  output,\n  untracked,\n  viewChild,\n} from '@angular/core';\nimport { MatTabGroup, MatTabsModule } from '@angular/material/tabs';\nimport { Color } from '@sdcorejs/utils/models';\nimport { SdTab } from './tab.component';\nimport { SdIcon } from '@sdcorejs/angular/modules/icon';\n\nexport interface SdTabClosedEvent {\n  index: number;\n  tab: SdTab;\n}\n\n@Component({\n  selector: 'sd-tab-group',\n  standalone: true,\n  imports: [SdIcon, MatTabsModule, NgTemplateOutlet],\n  templateUrl: './tab-group.component.html',\n  styleUrl: './tab-group.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SdTabGroup {\n  tabs = contentChildren(SdTab);\n\n  selectedIndex = model<number>(0);\n  // why: visual style preset. 'line' = Material default (underline ink-bar);\n  // 'pills' = rounded pill, active filled (good for nested tab groups + filter bars);\n  // 'segmented' = single bordered container, iOS-style.\n  variant = input<'line' | 'pills' | 'segmented'>('line');\n  // why: drives the active/indicator color via Core CSS vars (--sd-<color>, --sd-<color>-light).\n  // Same palette consumers use on <sd-badge>, <sd-button>, etc — keeps theming consistent.\n  color = input<Color>('primary');\n  headerPosition = input<'above' | 'below'>('above');\n  alignTabs = input<'start' | 'center' | 'end'>('start');\n  // why: mat-tab-group defaults stretchTabs=true, which makes labels fill the row\n  // and overrides alignTabs. Expose this so consumers can opt out and let alignTabs take effect.\n  stretchTabs = input(true, { transform: booleanAttribute });\n  animationDuration = input<string>('500ms');\n  disableRipple = input(false, { transform: booleanAttribute });\n  dynamicHeight = input(false, { transform: booleanAttribute });\n  autoId = input<string | undefined>(undefined);\n\n  tabClosed = output<SdTabClosedEvent>();\n\n  readonly #closeRequests = new WeakMap<SdTab, Promise<boolean>>();\n\n  protected matTabGroup = viewChild(MatTabGroup);\n\n  @HostBinding('attr.data-autoId') get autoIdAttr(): string | null {\n    return this.autoId() ?? null;\n  }\n\n  @HostBinding('class.sd-tab-group--pills') get isPills(): boolean {\n    return this.variant() === 'pills';\n  }\n  @HostBinding('class.sd-tab-group--segmented') get isSegmented(): boolean {\n    return this.variant() === 'segmented';\n  }\n\n  // why: bind Core color CSS vars onto the host so the existing --sd-tab-* CSS vars\n  // pick up the chosen color. Fallback hex matches the values in autoid-inspector\n  // for environments where the global Core SCSS isn't loaded (e.g. lib-only tests).\n  @HostBinding('style.--sd-tab-indicator-color') get cssIndicator(): string {\n    return `var(--sd-${this.color()})`;\n  }\n  @HostBinding('style.--sd-tab-label-active-color') get cssActive(): string {\n    return `var(--sd-${this.color()})`;\n  }\n  @HostBinding('style.--sd-tab-badge-bg') get cssBadgeBg(): string {\n    return `var(--sd-${this.color()}-light)`;\n  }\n  @HostBinding('style.--sd-tab-badge-color') get cssBadgeColor(): string {\n    return `var(--sd-${this.color()})`;\n  }\n\n  constructor() {\n    // why: when the active tab is removed (e.g. parent splices the tabs array),\n    // selectedIndex may point past the end. Clamp it back to the last valid index\n    // so MatTabGroup doesn't render with a stale selection.\n    effect(() => {\n      const len = this.tabs().length;\n      const cur = untracked(() => this.selectedIndex());\n      if (len > 0 && cur >= len) {\n        this.selectedIndex.set(Math.max(0, len - 1));\n      }\n    });\n  }\n\n  selectTab(index: number): void {\n    const len = this.tabs().length;\n    if (len === 0) {\n      this.selectedIndex.set(0);\n      return;\n    }\n    this.selectedIndex.set(Math.max(0, Math.min(index, len - 1)));\n  }\n\n  realignInkBar(): void {\n    this.matTabGroup()?.realignInkBar();\n  }\n\n  protected onClose(tab: SdTab, index: number, event: MouseEvent): void {\n    event.stopPropagation();\n    if (tab.disabled()) return;\n    if (!tab.beforeClose()) {\n      tab.forceClose();\n      this.tabClosed.emit({ index, tab });\n      return;\n    }\n    if (this.#closeRequests.has(tab)) return;\n\n    const request = tab.requestClose();\n    this.#closeRequests.set(tab, request);\n    void request.then(closed => {\n      if (closed) this.tabClosed.emit({ index, tab });\n    });\n    void request.finally(() => this.#closeRequests.delete(tab));\n  }\n}\n","<mat-tab-group\n  class=\"sd-tab-group\"\n  [(selectedIndex)]=\"selectedIndex\"\n  [headerPosition]=\"headerPosition()\"\n  [mat-align-tabs]=\"alignTabs()\"\n  [mat-stretch-tabs]=\"stretchTabs()\"\n  [animationDuration]=\"animationDuration()\"\n  [disableRipple]=\"disableRipple()\"\n  [dynamicHeight]=\"dynamicHeight()\">\n  @for (tab of tabs(); track tab; let i = $index) {\n    <mat-tab [disabled]=\"tab.disabled()\">\n      <ng-template mat-tab-label>\n        <span class=\"sd-tab__label\">\n          @if (tab.icon(); as ic) {\n            <sd-icon class=\"sd-tab__icon\" [name]=\"ic\"></sd-icon>\n          }\n          <span class=\"sd-tab__text\">{{ tab.label() }}</span>\n          @let _badge = tab.badge();\n          @if (_badge !== null && _badge !== undefined) {\n            <span class=\"sd-tab__badge\">{{ _badge }}</span>\n          }\n          @if (tab.closable()) {\n            <sd-icon class=\"sd-tab__close\"\n              role=\"button\"\n              aria-label=\"Close tab\"\n              (click)=\"onClose(tab, i, $event)\" name=\"close\"></sd-icon>\n          }\n        </span>\n      </ng-template>\n\n      <ng-template matTabContent>\n        <ng-container [ngTemplateOutlet]=\"tab.bodyTpl()\"></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 './index';\n"],"names":[],"mappings":"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"}