{"version":3,"file":"acorex-components-tabs.mjs","sources":["../../../../packages/components/tabs/src/lib/tab-content.directive.ts","../../../../packages/components/tabs/src/lib/tab-item.component.ts","../../../../packages/components/tabs/src/lib/tabs.class.ts","../../../../packages/components/tabs/src/lib/tabs.component.ts","../../../../packages/components/tabs/src/lib/tabs.module.ts","../../../../packages/components/tabs/src/acorex-components-tabs.ts"],"sourcesContent":["import { Directive, TemplateRef, ViewContainerRef, inject } from '@angular/core';\n\n@Directive({\n  selector: '[axTabContent]',\n  exportAs: 'axTabContent',\n  inputs: ['portal: axTabContent'],\n})\nexport class AXTabContentDirective {\n  private _viewContainerRef = inject(ViewContainerRef);\n\n  private _portal: TemplateRef<any> | undefined;\n  public get portal(): TemplateRef<any> | undefined {\n    return this._portal;\n  }\n  public set portal(v: TemplateRef<any> | undefined) {\n    if (v) {\n      this._portal = v;\n      this._viewContainerRef.clear();\n      this._viewContainerRef.createEmbeddedView(v, null, 0);\n    }\n  }\n}\n","import { AXClickEvent, AXComponent, MXComponentOptionChanged, MXInteractiveComponent } from '@acorex/cdk/common';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\n\n/**\n * @category\n *  Represents an individual tab item in a tab component.\n */\n@Component({\n  selector: 'ax-tab-item',\n  template: `\n    @if (headerTemplate) {\n      <ng-container\n        [ngTemplateOutlet]=\"headerTemplate\"\n        [ngTemplateOutletContext]=\"{\n          $implicit: {\n            text: this.text,\n            key: this.key,\n            active: this.active,\n            disabled: this.disabled,\n          },\n        }\"\n      ></ng-container>\n    } @else {\n      <div>\n        <ng-content select=\"ax-prefix\"></ng-content>\n        <div class=\"ax-tab-item-text\">{{ text }}</div>\n      </div>\n      <ng-content select=\"ax-suffix\"></ng-content>\n    }\n    <ng-template #content>\n      <ng-content select=\"ax-content\"> </ng-content>\n    </ng-template>\n  `,\n\n  encapsulation: ViewEncapsulation.None,\n  inputs: ['disabled'],\n  outputs: ['disabledChange', 'onClick', 'onBlur', 'onFocus'],\n  host: { ngSkipHydration: 'true' },\n  imports: [NgTemplateOutlet],\n  providers: [{ provide: AXComponent, useExisting: AXTabItemComponent }],\n})\nexport class AXTabItemComponent extends MXInteractiveComponent {\n  /**\n   * Defines the text content to be displayed within the component.\n   */\n  @Input()\n  text: string;\n\n  /**\n   * Defines a unique identifier for the component instance.\n   */\n  @Input()\n  key: string;\n\n  @ViewChild('content')\n  template: TemplateRef<unknown>;\n\n  /**\n   * Defines a custom template for the component's header.\n   */\n  @Input()\n  headerTemplate: TemplateRef<unknown>;\n\n  /**\n   * Emits an event when the `active` state of the component changes.\n   * @event\n   */\n  @Output()\n  activeChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  /**\n   * Emits an event when the component is clicked.\n   * @event\n   */\n  @Output()\n  onClick: EventEmitter<AXClickEvent> = new EventEmitter<AXClickEvent>();\n\n  /** @ignore */\n  private _active = false;\n\n  /**\n   * Gets or sets the component's active state, controlling its behavior and appearance.\n   * @param value {boolean}\n   */\n  @Input()\n  public get active(): boolean {\n    return this._active;\n  }\n  public set active(value: boolean) {\n    this.setOption({\n      name: 'active',\n      value,\n      afterCallback: () => {\n        this.cdr.markForCheck();\n      },\n    });\n  }\n\n  /**\n   * @ignore\n   */\n  @HostListener('click', ['$event'])\n  __hostClick(e: MouseEvent) {\n    if (!this.disabled) {\n      this.getHostElement().scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n      this.onClick.emit({\n        component: this,\n        htmlElement: this.getHostElement(),\n        nativeEvent: e,\n      });\n    }\n  }\n\n  /**\n   * @ignore\n   */\n  protected override internalOptionChanged(option: MXComponentOptionChanged<any>): void {\n    //TODO: change to hostbind\n    const classListRef = this.getHostElement().classList;\n    if (option.name == 'disabled') {\n      option.value ? classListRef.add('ax-state-disabled') : classListRef.remove('ax-state-disabled');\n    }\n    if (option.name == 'active') {\n      option.value ? classListRef.add('ax-state-active') : classListRef.remove('ax-state-active');\n    }\n  }\n\n  /**\n   * Gets the component's position and size statistics.\n   *\n   * @returns object with width, height, left, and top properties\n   */\n  getStats() {\n    return {\n      width: this.getHostElement().clientWidth,\n      height: this.getHostElement().clientHeight,\n      left: this.getHostElement().offsetLeft,\n      top: this.getHostElement().offsetTop,\n    };\n  }\n}\n","import { AXEvent } from '@acorex/cdk/common';\nimport { AXTabItemComponent } from './tab-item.component';\n\nexport class AXTabStripChangedEvent extends AXEvent {\n  tab: AXTabItemComponent;\n  index: number;\n}\n\nexport type AXTabLook = 'default' | 'pills' | 'pills-color' | 'with-line' | 'with-line-color' | 'classic' | 'custom';\n\nexport type AXTabLocation = 'top' | 'bottom' | 'start' | 'end';\n","import { AXComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  effect,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  inject,\n  input,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  PLATFORM_ID,\n  QueryList,\n  Renderer2,\n  signal,\n  viewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { AXTabContentDirective } from './tab-content.directive';\nimport { AXTabItemComponent } from './tab-item.component';\nimport { AXTabLocation, AXTabLook, AXTabStripChangedEvent } from './tabs.class';\n\n/**\n * @category\n * A component that serves as a container for tab items.\n */\n@Component({\n  selector: 'ax-tabs',\n  template: `<div class=\"ax-tabs-scroll-area\">\n    <ng-content select=\"ax-tab-item\"></ng-content><span class=\"ax-tab-indicator\" #indicator></span>\n  </div>`,\n  styleUrl: './tabs.component.css',\n\n  encapsulation: ViewEncapsulation.None,\n  providers: [{ provide: AXComponent, useExisting: AXTabsComponent }],\n})\nexport class AXTabsComponent extends MXBaseComponent implements AfterViewInit, AfterContentInit, OnDestroy {\n  private readonly renderer = inject(Renderer2);\n  /**\n   * @ignore\n   */\n  @ContentChildren(AXTabItemComponent)\n  private _contentTabs!: QueryList<AXTabItemComponent>;\n\n  /**\n   * Sets the appearance style of the tab component.\n   *  @defaultValue 'default'\n   */\n  look = input<AXTabLook>('default');\n\n  /**\n   * Specifies the position of the tab component.\n   * @defaultValue 'bottom'\n   */\n  location = input<AXTabLocation>('bottom');\n\n  /**\n   * @defaultValue 'false'\n   * Specifies whether the component should resize to fit its parent container.\n   */\n  @Input()\n  fitParent = false;\n\n  /**\n   * @defaultValue 'false'\n   * Applies a minimum width constraint to the component.\n   */\n  @Input()\n  minWidth = false;\n\n  /**\n   * The `AXTabContentDirective` associated with the tab.\n   */\n  @Input()\n  content!: AXTabContentDirective;\n\n  private indicator = viewChild<ElementRef<HTMLSpanElement>>('indicator');\n\n  private zone = inject(NgZone);\n  private platformId = inject(PLATFORM_ID);\n\n  /** @ignore */\n  private _isUserInteraction = false;\n\n  get items(): AXTabItemComponent[] {\n    return this._contentTabs.toArray();\n  }\n\n  /** @ignore */\n  private _selectedItem!: AXTabItemComponent;\n\n  /** @ignore */\n  get selectedIndex(): number {\n    return this.items.indexOf(this._selectedItem);\n  }\n\n  /** @ignore */\n  get selectedItem(): AXTabItemComponent {\n    return this._selectedItem;\n  }\n\n  private changes: ResizeObserver;\n  private activeTab = signal<AXTabItemComponent>(null);\n\n  #tabChange = effect(() => {\n    if (this.activeTab() && this.location()) {\n      if (this.look() === 'with-line-color' || this.look() === 'with-line') {\n        setTimeout(() => {\n          this.setIndicatorPosition(this.activeTab());\n        });\n      }\n    }\n  });\n\n  /**\n   * @event\n   */\n  @Output()\n  onActiveTabChanged: EventEmitter<AXTabStripChangedEvent> = new EventEmitter<AXTabStripChangedEvent>();\n\n  /** @ignore */\n  @HostBinding('class')\n  private get __hostClass(): string[] {\n    const cssClasses: string[] = [];\n    cssClasses.push(`ax-${this.look()}`);\n    cssClasses.push(`ax-${this.location()}`);\n    if (this.fitParent) cssClasses.push(`ax-tabs-fit`);\n    return cssClasses;\n  }\n\n  /** @ignore */\n  ngAfterContentInit() {\n    this._contentTabs.changes.subscribe(() => {\n      this._bindOnClickEvent();\n    });\n  }\n\n  /** @ignore */\n  ngAfterViewInit() {\n    this._bindOnClickEvent();\n    if (isPlatformBrowser(this.platformId)) {\n      this.zone.runOutsideAngular(() => {\n        this.changes = new ResizeObserver((entries) => {\n          const activeTab = this.activeTab();\n          if (entries[0].contentRect.width && activeTab) {\n            this.renderer.setStyle(this.indicator().nativeElement, 'transition', 'none');\n            this.setIndicatorPosition(activeTab);\n            this.renderer.removeStyle(this.indicator().nativeElement, 'transition');\n          }\n        });\n        const activeTab = this.activeTab();\n        if (activeTab) this.changes.observe(activeTab.getHostElement());\n        this.changes.observe(this.getHostElement());\n      });\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.changes?.disconnect();\n  }\n\n  /** @ignore */\n  private _bindOnClickEvent() {\n    const selected = this.items.find((c) => c.active) || this.items[0];\n    this.select(selected);\n    this.items.forEach((c) => {\n      if (!c.onClick.length) {\n        c.onClick.subscribe((t) => {\n          this._isUserInteraction = t.nativeEvent?.isTrusted;\n          this.select(c);\n        });\n      }\n    });\n  }\n\n  /**\n   * Activates the specified tab and updates the content.\n   *\n   * @param tab - The tab to select, either by index (number) or by component instance\n   */\n  select(tab: number | AXTabItemComponent) {\n    const tabItem: AXTabItemComponent = typeof tab == 'number' ? this.items[tab] : tab;\n    this.activeTab.set(tabItem);\n    //\n    if (!tabItem || this.selectedItem == tabItem) return;\n    this._selectedItem = tabItem;\n    //\n    this.items.forEach((c) => (c.active = false));\n    tabItem.active = true;\n    if (this.content) {\n      this.content.portal = tabItem.template;\n    }\n    this.cdr.markForCheck();\n    this.onActiveTabChanged.emit({\n      component: this,\n      isUserInteraction: this._isUserInteraction,\n      tab: tabItem,\n      index: this.selectedIndex,\n    });\n    this._isUserInteraction = false;\n  }\n\n  private setIndicatorPosition(tabItem: AXTabItemComponent) {\n    const indicatorStyle = this.indicator().nativeElement.style;\n    const itemStats = tabItem.getStats();\n    if (this.location() === 'top' || this.location() === 'bottom') {\n      indicatorStyle.width = `${itemStats.width}px`;\n      indicatorStyle.height = `var(--ax-comp-tabs-indicator-size)`;\n      indicatorStyle.left = `${itemStats.left}px`;\n      indicatorStyle.right = `unset`;\n      if (this.location() === 'top') {\n        indicatorStyle.top = `0px`;\n        indicatorStyle.bottom = `unset`;\n      }\n      if (this.location() === 'bottom') {\n        indicatorStyle.top = `unset`;\n        indicatorStyle.bottom = `0px`;\n      }\n    }\n    if (this.location() === 'start' || this.location() === 'end') {\n      indicatorStyle.width = ` var(--ax-comp-tabs-indicator-size)`;\n      indicatorStyle.height = `${itemStats.height}px`;\n      indicatorStyle.top = `${itemStats.top}px`;\n      indicatorStyle.bottom = `unset`;\n      if (this.location() === 'start') {\n        indicatorStyle.insetInlineStart = `0px`;\n        indicatorStyle.insetInlineEnd = `unset`;\n      }\n      if (this.location() === 'end') {\n        indicatorStyle.insetInlineStart = `unset`;\n        indicatorStyle.insetInlineEnd = `0px`;\n      }\n    }\n  }\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXTabContentDirective } from './tab-content.directive';\nimport { AXTabItemComponent } from './tab-item.component';\nimport { AXTabsComponent } from './tabs.component';\n\nconst COMPONENT = [AXTabsComponent, AXTabItemComponent, AXTabContentDirective];\nconst MODULES = [CommonModule, PortalModule, AXDecoratorModule];\n\n@NgModule({\n  imports: [...MODULES, ...COMPONENT],\n  exports: [...COMPONENT],\n  providers: [],\n})\nexport class AXTabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}