{"version":3,"file":"daffodil-design-tabs.mjs","sources":["../../../libs/design/tabs/src/tabs/tab/tab.component.ts","../../../libs/design/tabs/src/tabs/tab-label/tab-label.component.ts","../../../libs/design/tabs/src/tabs/tab-label/tab-label.component.html","../../../libs/design/tabs/src/tabs/tab-panel/tab-panel.component.ts","../../../libs/design/tabs/src/tabs/tab-activator/tab-activator.component.ts","../../../libs/design/tabs/src/tabs/tabs.component.ts","../../../libs/design/tabs/src/tabs/tabs.component.html","../../../libs/design/tabs/src/tabs.ts","../../../libs/design/tabs/src/daffodil-design-tabs.ts"],"sourcesContent":["import {\n  Component,\n  ChangeDetectionStrategy,\n  TemplateRef,\n  ViewChild,\n  Input,\n} from '@angular/core';\n\nimport {\n  DaffDisableable,\n  DaffDisableableDirective,\n} from '@daffodil/design';\n\nlet tabId = 1;\n\n/**\n * Tab is a single tab in the tablist that is used to group the label of a tab panel and the tab panel together.\n *\n * A `<daff-tab>` should include the DaffTabLabelComponent and DaffTabPanelComponent components in order to properly structure the UI.\n *\n * @example\n * ```html\n * <daff-tab>\n * \t<daff-tab-label>\n * \t\t<fa-icon [icon]=\"faInfoCircle\" daffPrefix></fa-icon>\n * \t\tTab 1\n * \t</daff-tab-label>\n * \t<daff-tab-panel>\n * \t\tTab 1 Panel\n * \t</daff-tab-panel>\n * </daff-tab>\n * ```\n */\n@Component({\n  selector: 'daff-tab',\n  template: `\n      <ng-template #label>\n        <ng-content select=\"daff-tab-label\"></ng-content>\n      </ng-template>\n      <ng-template #content>\n        <ng-content select=\"daff-tab-panel\"></ng-content>\n      </ng-template>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  hostDirectives: [\n    {\n      directive: DaffDisableableDirective,\n      inputs: ['disabled'],\n    },\n  ],\n})\nexport class DaffTabComponent implements DaffDisableable {\n\n  /**\n   * @docs-private\n   *\n   * Whether the tab is disabled.\n   */\n  get disabled() {\n    return this.disabledDirective.disabled;\n  }\n\n  /**\n   * @docs-private\n   */\n  @ViewChild('content', { read: TemplateRef, static: true }) contentRef: TemplateRef<any>;\n\n  /**\n   * @docs-private\n   */\n  @ViewChild('label', { read: TemplateRef, static: true }) labelRef: TemplateRef<any>;\n\n  /**\n   * A unique id for the tab component. Defaults to an autogenerated value. When using this,\n   * it's your responsibility to ensure that the id for each tab is unique.\n   */\n  @Input() id = 'daff-tab-' + tabId;\n\n  /**\n   * @docs-private\n   */\n  panelId = 'daff-tab-panel-' + tabId;\n\n  constructor(private disabledDirective: DaffDisableableDirective) {\n    tabId++;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n} from '@angular/core';\n\nimport {\n  DaffPrefixDirective,\n  DaffSuffixDirective,\n} from '@daffodil/design';\n\n/**\n * Tab label is the clicakble label that activates its corresponding tab panel. Labels can contain text, icons, or both.\n *\n * @example\n * ```html\n * <daff-tab-label>\n *  <div daffPrefix></div>\n *  Label\n *  <div daffSuffix></div\n * </daff-tab-Label>\n * ```\n */\n@Component({\n  selector: 'daff-tab-label',\n  templateUrl: './tab-label.component.html',\n  styleUrl: './tab-label.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    DaffPrefixDirective,\n    DaffSuffixDirective,\n  ],\n})\nexport class DaffTabLabelComponent {\n  /**\n   * @docs-private\n   */\n  @ContentChild(DaffPrefixDirective) _prefix: DaffPrefixDirective;\n\n  /**\n   * @docs-private\n   */\n  @ContentChild(DaffSuffixDirective) _suffix: DaffSuffixDirective;\n}\n","@if (_prefix) {\n  <ng-content select=\"[daffPrefix]\"></ng-content>\n}\n<div class=\"daff-tab-label__content\">\n  <ng-content></ng-content>\n</div>\n@if (_suffix) {\n  <ng-content select=\"[daffSuffix]\"></ng-content>\n}","/* eslint-disable quote-props */\nimport {\n  Component,\n  ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { DaffTabComponent } from '../tab/tab.component';\n\n/**\n * Tab panel is the content area displayed when a tab is active.\n *\n * @example\n * ```html\n * <daff-tab-panel>\n *  <!-- Tab panel content goes here -->\n * </daff-tab-panel>\n * ```\n */\n@Component({\n  selector: 'daff-tab-panel',\n  template: `<ng-content></ng-content>`,\n  styleUrl: './tab-panel.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'class': 'daff-tab-panel',\n    'role': 'tabpanel',\n    'tabindex': '0',\n    '[attr.id]': 'tabPanelId',\n    '[attr.aria-labelledby]': 'ariaLabelledBy',\n  },\n})\nexport class DaffTabPanelComponent {\n  private _id = '';\n\n  /**\n   * @docs-private\n   *\n   * Dynamically binds the tab panel's id to a unique value generated from the associated tab's panelId.\n   */\n  get tabPanelId() {\n    return this._id;\n  }\n\n  private _ariaLabelledBy = '';\n\n  /**\n   * @docs-private\n   */\n  get ariaLabelledBy() {\n    return this._ariaLabelledBy;\n  }\n\n  constructor(private tab: DaffTabComponent) {\n    /**\n     * Sets the value of `ariaLabelledBy` to the id of the tab component.\n     */\n    this._ariaLabelledBy = this.tab.id;\n\n    this._id = this.tab.panelId;\n  }\n}\n","/* eslint-disable quote-props */\nimport {\n  Input,\n  Component,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  ElementRef,\n} from '@angular/core';\n\nimport { DaffSelectableDirective } from '@daffodil/design';\n\n@Component({\n  selector: '' +\n    'button[daff-tab-activator]' + ',' +\n    'a[daff-tab-activator]',\n  template: `<ng-content></ng-content>`,\n  styleUrl: './tab-activator.component.scss',\n  hostDirectives: [\n    {\n      directive: DaffSelectableDirective,\n      inputs: ['selected'],\n    },\n  ],\n  host: {\n    'class': 'daff-tab-activator',\n    'role': 'tab',\n    '[attr.aria-selected]': 'ariaSelected',\n    '[attr.tabindex]': 'tabIndex',\n    '[attr.id]': 'tabActivatorId',\n    '[attr.aria-controls]': 'panelId',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DaffTabActivatorComponent {\n  /**\n   * @docs-private\n   *\n   * Sets `aria-selected` to true if the component is selected and false if it's not selected.\n   */\n  get ariaSelected() {\n    return this.selectableDirective.selected ? true :  false;\n  }\n\n  /**\n   * @docs-private\n   *\n   * Sets `tabindex` to `0` if the component is selected and `-1` if it's not selected.\n   */\n  get tabIndex() {\n    return this.selectableDirective.selected ? '0' :  '-1';\n  }\n\n  constructor(\n    private el: ElementRef,\n    private selectableDirective: DaffSelectableDirective,\n  ) {\n  }\n\n  /**\n   * The html id of the tab activator component\n   */\n  @Input() tabActivatorId = '';\n\n  @Input() panelId = '';\n\n  /**\n   * Sets focus to the native element of the component.\n   */\n  focus() {\n    this.el.nativeElement.focus();\n  }\n}\n","/* eslint-disable quote-props */\nimport {\n  Location,\n  NgTemplateOutlet,\n} from '@angular/common';\nimport {\n  Component,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n  Input,\n  Output,\n  EventEmitter,\n  ViewChildren,\n  ChangeDetectorRef,\n  OnInit,\n} from '@angular/core';\nimport {\n  Params,\n  RouterLink,\n  RouterLinkActive,\n} from '@angular/router';\n\nimport { DaffTabComponent } from './tab/tab.component';\nimport { DaffTabActivatorComponent } from './tab-activator/tab-activator.component';\nimport { DaffTabLabelComponent } from './tab-label/tab-label.component';\n\n/**\n * Tabs provide a way to navigate between panels that display related content without leaving the page.\n *\n * @example\n * ```html\n * <daff-tabs aria-label=\"List of tabs\">\n * \t<daff-tab>\n * \t\t<daff-tab-label>\n * \t\t\t<fa-icon [icon]=\"faInfoCircle\" daffPrefix></fa-icon>\n * \t\t\tTab 1\n * \t\t</daff-tab-label>\n * \t\t<daff-tab-panel>\n * \t\t\tTab 1 Panel\n * \t\t</daff-tab-panel>\n * \t</daff-tab>\n * \t<daff-tab>\n * \t\t<daff-tab-label>\n * \t\t\tTab 2\n * \t\t\t<fa-icon [icon]=\"faInfoCircle\" daffSuffix></fa-icon>\n * \t\t</daff-tab-label>\n * \t\t<daff-tab-panel>\n * \t\t\tTab 2 Panel\n * \t\t</daff-tab-panel>\n * \t</daff-tab>\n * </daff-tabs>\n * ```\n */\n@Component({\n  selector: 'daff-tabs',\n  templateUrl: './tabs.component.html',\n  styleUrl: './tabs.component.scss',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'class': 'daff-tabs',\n    '[attr.aria-label]': 'null',\n  },\n  imports: [\n    NgTemplateOutlet,\n    RouterLink,\n    RouterLinkActive,\n    DaffTabActivatorComponent,\n  ],\n})\n\nexport class DaffTabsComponent implements AfterContentInit, OnInit {\n  /**\n   * @docs-private\n   *\n   * The currently selected tab. This property is dynamically updated when a user selects a tab.\n   */\n  selectedTab: string;\n\n  /**\n   * The tab that is selected on initial load. If it's not used, the first tab in the tablist will be selected by default.\n   */\n  @Input() initiallySelected: string = null;\n\n  /**\n   * `aria-label` to label the tablist.\n   */\n  @Input('aria-label') ariaLabel = '';\n\n  /**\n   * Replace the tab buttons as links.\n   */\n  @Input() linkMode = false;\n\n  /**\n   * The URL to navigate to when the component is in link mode.\n   * This component will set the specified query param.\n   */\n  @Input() url?: string;\n\n  /**\n   * The query parameter that the tabs component will use to set the tab value in link mode.\n   */\n  @Input() queryParam = 'tab';\n\n  /**\n   * Event emitted when tab selection changes.\n   */\n  @Output() tabChange = new EventEmitter<string>();\n\n  /**\n   * @docs-private\n   */\n  @ContentChildren(DaffTabLabelComponent, { descendants: true }) _labels: QueryList<DaffTabLabelComponent>;\n\n  /**\n   * @docs-private\n   */\n  @ContentChildren(DaffTabComponent) _tabs: QueryList<DaffTabComponent>;\n\n  /**\n   * @docs-private\n   */\n  @ViewChildren(DaffTabActivatorComponent) _tabActivators: QueryList<DaffTabActivatorComponent>;\n\n  /**\n   * @docs-private\n   */\n  get currentPath(): string {\n    return this.location.path();\n  }\n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    private location: Location,\n  ) {}\n\n  private reset() {\n    if(this.initiallySelected) {\n      this.selectedTab = this.initiallySelected;\n    }\n\n    if (!this.selectedTab) {\n      this.selectedTab = this._tabs.first.id;\n    }\n  }\n\n  /**\n   * @docs-private\n   */\n  ngOnInit(): void {\n    this.location.onUrlChange(() => {\n      // if the app is navigated away from the current page, reset the state\n      if (this.linkMode && !this.location.isCurrentPathEqualTo(this.url, `${this.queryParam}=${this.selectedTab}`)) {\n        this.selectedTab = null;\n        this.reset();\n        this.tabChange.emit(this.selectedTab);\n      }\n    });\n  }\n\n  /**\n   * @docs-private\n   */\n  ngAfterContentInit() {\n    this.reset();\n  }\n\n  /**\n   * @docs-private\n   *\n   * Selects a tab and sets focus on the selected tab.\n   */\n  select(tabId: string) {\n    const tabActivator = this._tabActivators.find(el => el.tabActivatorId === tabId);\n\n    if (!tabActivator) {\n      console.warn(`The tab '${tabId}' was not able to be selected because it does not exist. Check the id on your <daff-tab>s.`);\n      return;\n    }\n\n    this.tabChange.emit(tabId);\n    this.selectedTab = tabId;\n    this.cdRef.markForCheck();\n\n    tabActivator.focus();\n  }\n\n  /**\n   * Navigates through the tabs based on the given offset.\n   * Moves forward or backward in the tab array, wrapping around when necessary.\n   */\n  private navigateTabs(offset: number) {\n    const array = this._tabs.toArray();\n    let selectedIndex = array.findIndex(el => el.id === this.selectedTab);\n    const startingIndex = selectedIndex;\n    let newIndex;\n\n    do {\n      newIndex = (selectedIndex + offset + array.length) % array.length;\n      selectedIndex = newIndex;\n    } while (array[newIndex].disabled && selectedIndex !== startingIndex); // Skip disabled tabs\n\n    this.select(array[newIndex].id);\n  }\n\n  /**\n   * @docs-private\n   */\n  _buildQueryParams(tab: string): Params {\n    return {\n      [this.queryParam]: tab,\n    };\n  }\n\n  /**\n   * @docs-private\n   *\n   * Selects the previous tab and wraps around to the last tab if the first tab is currently selected.\n   */\n  previous() {\n    this.navigateTabs(-1);\n  }\n\n  /**\n   * @docs-private\n   *\n   * Selects the next tab and wraps around to the first tab if the last tab is currently selected.\n   */\n  next() {\n    this.navigateTabs(1);\n  }\n\n  /**\n   * @docs-private\n   *\n   * Selects the first tab.\n   */\n  selectFirst(event: KeyboardEvent | null) {\n    event.preventDefault();\n    this.select(this._tabs.toArray()[0].id);\n  }\n\n  /**\n   * @docs-private\n   *\n   * Selects the last tab.\n   */\n  selectLast(event: KeyboardEvent | null) {\n    event.preventDefault();\n    const array = this._tabs.toArray();\n    this.select(array[array.length - 1].id);\n  }\n}\n","<div class=\"daff-tabs__tab-list\"\n\trole=\"tablist\"\n\t[attr.aria-label]=\"ariaLabel\"\n\t(keydown.home)=\"selectFirst($event)\"\n\t(keydown.end)=\"selectLast($event)\">\n\t@for (tab of _tabs; track tab) {\n\t\t@if (linkMode && tab.disabled) {\n\t\t\t<button daff-tab-activator routerLinkActive\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</button>\n\t\t} @else if (linkMode) {\n\t\t\t<a daff-tab-activator routerLinkActive\n\t\t\t\tclass=\"daff-ae daff_tabs__link\"\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t[routerLink]=\"url || currentPath\"\n\t\t\t\tqueryParamsHandling=\"merge\"\n\t\t\t\t[queryParams]=\"_buildQueryParams(tab.id)\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\"\n\t\t\t\t(isActiveChange)=\"$event && select(tab.id)\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</a>\n\t\t} @else {\n\t\t\t<button daff-tab-activator\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t(click)=\"select(tab.id)\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</button>\n\t\t}\n\t}\n</div>\n\n@for (tab of _tabs; track tab) {\n\t@if(tab.id === selectedTab ) {\n\t\t<ng-container *ngTemplateOutlet=\"tab.contentRef\"></ng-container>\n\t}\n}","import { DaffTabComponent } from './tabs/tab/tab.component';\nimport { DaffTabLabelComponent } from './tabs/tab-label/tab-label.component';\nimport { DaffTabPanelComponent } from './tabs/tab-panel/tab-panel.component';\nimport { DaffTabsComponent } from './tabs/tabs.component';\n\n/**\n * @docs-private\n *\n * ```ts\n * import { DAFF_TABS_COMPONENTS } from '@daffodil/design/tabs';\n * ```\n */\nexport const DAFF_TABS_COMPONENTS = <const> [\n  DaffTabsComponent,\n  DaffTabLabelComponent,\n  DaffTabPanelComponent,\n  DaffTabComponent,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DaffTabComponent","i1"],"mappings":"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"}