{"version":3,"file":"sebgroup-green-angular-src-v-angular-tabs.mjs","sources":["../../../../libs/angular/src/v-angular/tabs/tab.directive.ts","../../../../libs/angular/src/v-angular/tabs/tabs.component.ts","../../../../libs/angular/src/v-angular/tabs/tabs.component.html","../../../../libs/angular/src/v-angular/tabs/tabs.module.ts","../../../../libs/angular/src/v-angular/tabs/index.ts","../../../../libs/angular/src/v-angular/tabs/sebgroup-green-angular-src-v-angular-tabs.ts"],"sourcesContent":["import { Directive, HostBinding, Input } from '@angular/core'\n\n/**\n * Directive that provides the tab container with data about its child tabs.\n * The directive sets its own active state and adds aria attributes.\n *\n * @example\n * <nggv-tabs>\n *     <article tab=\"Tab title 1\"> <!-- Content --> </article>\n *     <article tab=\"Tab title 2\" [active]=\"true\"> <!-- Content --> </article>\n *     <article tab=\"Tab title 3\" disabled> <!-- Content --> </article>\n *     <article tab=\"<strong>Tab title 4</strong>\"> <!-- Content --> </article>\n * </nggv-tabs>\n */\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[tab]',\n    standalone: false\n})\nexport class TabDirective {\n  /** @internal */\n  @HostBinding('class.gds-tabs__panel') baseClass = true\n  /** @internal */\n  @HostBinding('attr.role') role = 'tabpanel'\n  /** Special property used for selecting DOM elements during automated UI testing. */\n  @HostBinding('attr.data-thook') @Input() thook: string | null | undefined =\n    'tabs-panel'\n  /** Sets whether this tab should be the active tab on load. */\n  @HostBinding('class.-active') @Input() active = false\n  /** @internal */\n  @HostBinding('attr.hidden') get hidden() {\n    return !this.active\n  }\n  /** Sets the title displayed in the tab list for this child. */\n  @Input() tab!: string\n  /** Sets whether this tab should be able to be selected. */\n  @Input() disabled = false\n  /** Identifier used for aria attributes and selection. */\n  @Input() id: string | number | undefined // todo: discuss if window.ngv.nextId() should be used\n\n  /** @internal */\n  @HostBinding('attr.id') get attrId() {\n    return `panel-${this.id}`\n  }\n\n  /** @internal */\n  @HostBinding('attr.aria-labelledby') get ariaLabelledby() {\n    return `tab-${this.id}`\n  }\n}\n","/* eslint-disable no-console */\nimport {\n  AfterContentInit,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  SimpleChanges,\n} from '@angular/core'\nimport { NavigationEnd, Router } from '@angular/router'\nimport { Subscription } from 'rxjs'\nimport { filter } from 'rxjs/operators'\n\nimport { TabDirective } from './tab.directive'\nimport { EventTabChange, Tab } from './tabs.models'\n\n@Component({\n    selector: 'nggv-tabs',\n    templateUrl: './tabs.component.html',\n    styleUrls: ['./tabs.component.scss'],\n    standalone: false\n})\nexport class TabsComponent\n  implements OnChanges, OnInit, AfterContentInit, OnDestroy\n{\n  /** @internal */\n  @HostBinding('class.gds-tabs') baseClass = true\n\n  /** Special property used for selecting DOM elements during automated UI testing. */\n  @HostBinding('attr.data-thook') @Input() thook: string | null | undefined =\n    'tabs'\n\n  /** @internal List of children with a {@link TabDirective}. */\n  @ContentChildren(TabDirective) tabRefs: QueryList<TabDirective> =\n    new QueryList()\n\n  /**\n   * List of tabs to generate, this should not be used in conjunction with children that have a {@link TabDirective}.\n   * It is useful for generating a list of tabs with links for navigation.\n   * If any tab has the link property, a `<router-outlet>` is added below the tabs list.\n   */\n  @Input() tabs: Tab[] = []\n\n  /**\n   * Event triggered on initialization and every time the active tab changes.\n   * The tab change can be cancelled if event type is set to `'before'` and `cancel()` is called.\n   */\n  @Output() public ngvTabSwitch = new EventEmitter<EventTabChange>()\n\n  /** @internal Adds a `<router-outlet>` below the tabs list. */\n  useRouting = false\n\n  /** @internal The currently active tab. */\n  selectedTab: Tab | undefined\n\n  /** @internal If tab switching has started. */\n  isSwitching = false\n\n  /** @internal */\n  protected subs: Subscription[] = []\n\n  constructor(protected router: Router) {}\n\n  /** @internal */\n  static uniqueIds(tabs: Tab[]) {\n    const uniqueIds = new Set()\n    let offset = 0\n    return tabs.map((tab, index) => {\n      if (tab.id && !uniqueIds.has(tab.id)) {\n        // Id is already unique\n        uniqueIds.add(tab.id)\n        return { ...tab }\n      } else {\n        // If no id is set for the tab, use the next available index\n        while (uniqueIds.has(index + offset)) offset++\n        const id = index + offset\n        if (uniqueIds.has(tab.id)) {\n          // eslint-disable-next-line no-console\n          console.warn(\n            `Duplicate tab id \"${tab.id}\" found for tab \"${tab.tab}\", de-duplicating using index + offset. New tab id will be ${id}`,\n          )\n        }\n        uniqueIds.add(id)\n        return { ...tab, id }\n      }\n    })\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.tabs.currentValue) {\n      // Update tabs on property updates\n      this.updateFromInput()\n    }\n  }\n\n  ngOnInit() {\n    // Update tabs on route change\n    this.subs.push(\n      this.router.events\n        .pipe(filter((e): e is NavigationEnd => e instanceof NavigationEnd))\n        .subscribe((e: NavigationEnd) => {\n          // Skip if already routing to tab\n          if (this.isSwitching) return\n          const tab = this.tabs.find(({ link }) => link && e.url.endsWith(link))\n          if (tab) {\n            this.onSelect(tab.id)\n            if (tab.disabled) {\n              // Fallback to previously selected tab or first tab not disabled\n              const fallbackTab = this.selectedTab\n                ? this.selectedTab\n                : this.tabs.find(({ disabled }) => !disabled)\n              if (fallbackTab && fallbackTab.link)\n                this.router.navigateByUrl(fallbackTab.link)\n            }\n          }\n        }),\n    )\n  }\n\n  ngAfterContentInit() {\n    // Update tabs on view init\n    if (this.tabRefs.length) {\n      this.updateFromReferences()\n    }\n    // Update tabs on view child change\n    this.subs.push(this.tabRefs.changes.subscribe(this.updateFromReferences))\n  }\n\n  /** @internal */\n  protected updateFromInput = () => {\n    // Make sure each tab has a unique id\n    this.tabs = TabsComponent.uniqueIds(this.tabs)\n    // Determine if router outlet should be used\n    this.useRouting = this.tabs.some(({ link }) => link)\n    this.updateTabs()\n  }\n\n  /** @internal */\n  protected updateFromReferences = () => {\n    this.tabs = this.tabRefs.map((tabRef) => ({\n      tab: tabRef.tab,\n      id: tabRef.id,\n      active: tabRef.active,\n      disabled: tabRef.disabled,\n      directive: tabRef,\n    }))\n    // Make sure each tab has a unique id\n    this.tabs = TabsComponent.uniqueIds(this.tabs)\n    this.tabs.forEach((tab) => {\n      if (tab.directive) tab.directive.id = tab.id\n    })\n    this.updateTabs()\n  }\n\n  /** @internal */\n  protected updateTabs() {\n    const url = window.location.href\n    // Select tab if its link matches active url\n    let selectedTab = this.tabs.find(\n      ({ link, disabled }) => link && !disabled && url.endsWith(link),\n    )\n    // Fallback to first active tab\n    if (!selectedTab) selectedTab = this.tabs.find((tab) => tab.active)\n    // Fallback to first tab\n    if (!selectedTab) selectedTab = this.tabs[0]\n    // Select or give up\n    if (selectedTab && this.selectedTab !== selectedTab)\n      this.onSelect(selectedTab.id)\n  }\n\n  ngOnDestroy() {\n    this.subs.forEach((sub) => sub.unsubscribe())\n  }\n\n  /** @internal */\n  protected activateTab(tab: Tab) {\n    // Deactivate all tabs\n    this.tabs.forEach((t) => {\n      t.active = false\n      if (t.directive) t.directive.active = false\n    })\n    // Activate selected tab\n    tab.active = true\n    if (tab.directive) tab.directive.active = true\n    // Send end event\n    this.ngvTabSwitch.emit({ type: 'end', prev: this.selectedTab, next: tab })\n    this.selectedTab = tab\n    this.isSwitching = false\n  }\n\n  /** @internal */\n  onSelect(id: string | number | undefined) {\n    const selectedTab = this.tabs.find((tab) => tab.id === id)\n    if (\n      selectedTab &&\n      !selectedTab.disabled &&\n      selectedTab !== this.selectedTab\n    ) {\n      let cancelled = false\n      // Events are synchronous and allow for tab switch to be cancelled if desired\n      this.isSwitching = true\n      this.ngvTabSwitch.emit({\n        type: 'start',\n        prev: this.selectedTab,\n        next: selectedTab,\n        cancel: () => {\n          cancelled = true\n        },\n      })\n      if (cancelled) {\n        this.ngvTabSwitch.emit({\n          type: 'cancel',\n          prev: this.selectedTab,\n          next: selectedTab,\n        })\n        this.isSwitching = false\n        return\n      }\n      if (selectedTab.link) {\n        // Navigate and wait for guard accept route\n        this.router\n          .navigateByUrl(selectedTab.link, { replaceUrl: true })\n          .then((changed) => {\n            if (changed === false) {\n              this.ngvTabSwitch.emit({\n                type: 'cancel',\n                prev: this.selectedTab,\n                next: selectedTab,\n              })\n              this.isSwitching = false\n            } else this.activateTab(selectedTab)\n          })\n      } else {\n        this.activateTab(selectedTab)\n      }\n    }\n  }\n\n  /** @internal */\n  onKeyDown(event: KeyboardEvent) {\n    const tabElement = event.target as HTMLElement\n    if (!tabElement) return false\n    const parent = tabElement.parentElement\n    switch (event.key) {\n      case 'End': // End\n        if (parent)\n          this.tabFocusHelper(event, parent.lastElementChild as HTMLElement)\n        break\n\n      case 'Home': // Home\n        if (parent)\n          this.tabFocusHelper(event, parent.firstElementChild as HTMLElement)\n        break\n\n      case 'LeftArrow': // Left arrow\n      case 'UpArrow': // Up arrow\n        this.tabFocusHelper(\n          event,\n          tabElement.previousElementSibling as HTMLElement,\n        )\n        break\n\n      case 'RightArrow': // Right arrow\n      case 'DownArrow': // Down arrow\n        this.tabFocusHelper(event, tabElement.nextElementSibling as HTMLElement)\n        break\n    }\n    return true\n  }\n\n  /** @internal */\n  protected tabFocusHelper(event: KeyboardEvent, tabElement: HTMLElement) {\n    if (!tabElement || !(tabElement instanceof HTMLElement)) return\n    event.preventDefault()\n    event.stopPropagation()\n    tabElement.focus()\n    this.onSelect(tabElement.id.slice(4))\n  }\n}\n","<ng-container *transloco=\"let t\">\n  <div\n    class=\"gds-tabs\"\n    role=\"tablist\"\n    [attr.data-thook]=\"thook + '-list'\"\n    (keydown)=\"onKeyDown($event)\"\n  >\n    <button\n      class=\"gds-tabs__tab\"\n      [id]=\"'tab-' + (tab.id !== undefined ? tab.id : '')\"\n      role=\"tab\"\n      [attr.data-thook]=\"tab.thook || thook + '-tab'\"\n      [tabindex]=\"tab.active ? 0 : -1\"\n      [attr.aria-controls]=\"'panel-' + (tab.id !== undefined ? tab.id : '')\"\n      [attr.aria-selected]=\"tab.active\"\n      [class.-selected]=\"tab.active\"\n      [disabled]=\"tab.disabled\"\n      [innerHTML]=\"t(tab.tab)\"\n      (click)=\"onSelect(tab.id)\"\n      *ngFor=\"let tab of tabs\"\n    ></button>\n  </div>\n  <article\n    *ngIf=\"useRouting\"\n    class=\"gds-tabs__panel -active\"\n    [id]=\"'panel-' + (selectedTab ? selectedTab.id : '')\"\n    [attr.data-thook]=\"thook + '-panel'\"\n    [attr.aria-labelledby]=\"'tab-' + (selectedTab ? selectedTab.id : '')\"\n  >\n    <router-outlet></router-outlet>\n  </article>\n  <ng-content *ngIf=\"!useRouting\"></ng-content>\n</ng-container>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\nimport { TranslocoModule } from '@jsverse/transloco'\n\nimport { TabDirective } from './tab.directive'\nimport { TabsComponent } from './tabs.component'\n\n@NgModule({\n  declarations: [TabDirective, TabsComponent],\n  imports: [CommonModule, TranslocoModule, RouterModule],\n  exports: [TabDirective, TabsComponent],\n})\nexport class NggvTabsModule {}\n","/*\n * Public API Surface of tabs\n */\n\nexport * from './tab.directive'\nexport * from './tabs.component'\nexport * from './tabs.models'\nexport * from './tabs.module'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}