{"version":3,"file":"carbon-components-angular-tabs.mjs","sources":["../../src/tabs/base-tab-header.component.ts","../../src/tabs/tab-header.directive.ts","../../src/tabs/tab-header-group.component.ts","../../src/tabs/tab-header-group-vertical.component.ts","../../src/tabs/tab-header.component.ts","../../src/tabs/tab.component.ts","../../src/tabs/tab-headers.component.ts","../../src/tabs/tab-headers-vertical.component.ts","../../src/tabs/icon-tab.component.ts","../../src/tabs/tab-skeleton.component.ts","../../src/tabs/tabs.component.ts","../../src/tabs/tabs-vertical.component.ts","../../src/tabs/tabs-vertical-grouped.component.ts","../../src/tabs/tabs.module.ts","../../src/tabs/carbon-components-angular-tabs.ts"],"sourcesContent":["import {\n\tComponent,\n\tInput,\n\tViewChild,\n\tElementRef,\n\tTemplateRef,\n\tChangeDetectorRef,\n\tHostBinding,\n\tRenderer2\n} from \"@angular/core\";\nimport { EventService } from \"carbon-components-angular/utils\";\n\n/**\n * There are two ways to create a tab, this class is a collection of features\n * & metadata required by both.\n */\n@Component({\n\ttemplate: \"\"\n})\nexport class BaseTabHeader {\n\t/**\n\t * Set to `true` to have `Tab` items cached and not reloaded on tab switching.\n\t * Duplicated from `cds-tabs` to support standalone headers.\n\t */\n\t@Input() cacheActive = false;\n\t/**\n\t * Set to 'true' to have tabs automatically activated and have their content displayed when they receive focus.\n\t */\n\t@Input() followFocus: boolean;\n\t/**\n\t * Sets the aria label on the nav element.\n\t */\n\t@Input() ariaLabel: string;\n\t/**\n\t * Sets the aria labelledby on the nav element.\n\t */\n\t@Input() ariaLabelledby: string;\n\n\t/**\n\t * Template projected before tab items inside the tab list.\n\t */\n\t@Input() contentBefore: TemplateRef<any>;\n\t/**\n\t * Template projected after tab items inside the tab list.\n\t */\n\t@Input() contentAfter: TemplateRef<any>;\n\n\t/**\n\t * Visual style of the tab list: `line` or `contained`.\n\t */\n\t@Input() type: \"line\" | \"contained\" = \"line\";\n\t/**\n\t * Theme for contained tabs: `dark` or `light`.\n\t */\n\t@Input() theme: \"dark\" | \"light\" = \"dark\";\n\n\t/**\n\t * When using icon-only tabs, icon size: `default` (16px) or `lg` (20px).\n\t */\n\t@Input() iconSize: \"default\" | \"lg\";\n\n\t/**\n\t * **Contained only**: Evenly sized tabs across the row (**must** have fewer than 9 tabs).\n\t */\n\t@Input() fullWidth = false;\n\n\t/**\n\t * Show a close control on each tab.\n\t */\n\t@Input() dismissable = false;\n\n\t/**\n\t * Scroll the active tab into view on focus/select.\n\t */\n\t@Input() scrollIntoView = false;\n\n\t/**\n\t * Debounce (ms) for tab list scroll events; affects overflow chevron updates.\n\t */\n\t@Input() scrollDebounceWait = 200;\n\n\t@HostBinding(\"class.cds--tabs\") tabsClass = true;\n\t@HostBinding(\"class.cds--tabs--contained\") get containedClass() {\n\t\treturn this.type === \"contained\";\n\t}\n\t@HostBinding(\"class.cds--tabs--light\") get themeClass() {\n\t\treturn this.theme === \"light\";\n\t}\n\t@HostBinding(\"class.cds--tabs--dismissable\") get dismissableClass() {\n\t\treturn this.dismissable;\n\t}\n\t@HostBinding(\"class.cds--tabs__icon--default\") get iconSizeDefaultClass() {\n\t\treturn this.iconSize === \"default\";\n\t}\n\t@HostBinding(\"class.cds--tabs__icon--lg\") get iconSizeLgClass() {\n\t\treturn this.iconSize === \"lg\";\n\t}\n\t@HostBinding(\"class.cds--layout--size-lg\") get layoutSizeLgClass() {\n\t\treturn this.iconSize === \"lg\";\n\t}\n\n\t/**\n\t * Gets the Unordered List element that holds the `Tab` headings from the view DOM.\n\t */\n\t@ViewChild(\"tabList\", { static: true }) headerContainer;\n\n\t/**\n\t * Controls the manual focusing done by tabbing through headings.\n\t */\n\tcurrentSelectedTab: number;\n\t// width of the overflow buttons\n\treadonly OVERFLOW_BUTTON_OFFSET = 44;\n\treadonly longPressMultiplier = 3;\n\treadonly clickMultiplier = 1.5;\n\n\tprotected longPressInterval = null;\n\tprotected tickInterval = null;\n\tprotected scrollDebounceTimer: any = null;\n\n\tget hasHorizontalOverflow() {\n\t\tconst tabList = this.headerContainer.nativeElement;\n\t\treturn tabList.scrollWidth > tabList.clientWidth;\n\t}\n\n\tget leftOverflowNavButtonHidden() {\n\t\tconst tabList = this.headerContainer.nativeElement;\n\t\treturn !this.hasHorizontalOverflow || !tabList.scrollLeft;\n\t}\n\n\tget rightOverflowNavButtonHidden() {\n\t\tconst tabList = this.headerContainer.nativeElement;\n\t\treturn !this.hasHorizontalOverflow ||\n\t\t\t(tabList.scrollLeft + tabList.clientWidth) === tabList.scrollWidth;\n\t}\n\n\tconstructor(\n\t\tprotected elementRef: ElementRef,\n\t\tprotected changeDetectorRef: ChangeDetectorRef,\n\t\tprotected eventService: EventService,\n\t\tprotected renderer: Renderer2\n\t) { }\n\n\thandleScroll() {\n\t\t// Debounce the change detection trigger so the scroll arrow visibility\n\t\t// updates do not fire on every scroll tick.\n\t\tif (this.scrollDebounceWait <= 0) {\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t\treturn;\n\t\t}\n\t\tclearTimeout(this.scrollDebounceTimer);\n\t\tthis.scrollDebounceTimer = setTimeout(() => {\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t}, this.scrollDebounceWait);\n\t}\n\n\thandleOverflowNavClick(direction: number, numOftabs = 0) {\n\t\tconst tabList = this.headerContainer.nativeElement;\n\n\t\tconst { clientWidth, scrollLeft, scrollWidth } = tabList;\n\t\tif (direction > 0) {\n\t\t\ttabList.scrollLeft = Math.min(scrollLeft + (scrollWidth / numOftabs) * this.clickMultiplier,\n\t\t\t\tscrollWidth - clientWidth);\n\t\t} else if (direction < 0) {\n\t\t\ttabList.scrollLeft = Math.max(scrollLeft - (scrollWidth / numOftabs) * this.clickMultiplier, 0);\n\t\t}\n\t}\n\n\thandleOverflowNavMouseDown(direction: number) {\n\t\tconst tabList = this.headerContainer.nativeElement;\n\n\t\tthis.longPressInterval = setTimeout(() => {\n\t\t\t// Manually overriding scroll behvior to `auto` to make animation work correctly\n\t\t\tthis.renderer.setStyle(tabList, \"scroll-behavior\", \"auto\");\n\n\t\t\tthis.tickInterval = setInterval(() => {\n\t\t\t\ttabList.scrollLeft += (direction * this.longPressMultiplier);\n\t\t\t\t// clear interval if scroll reaches left or right edge\n\t\t\t\tif (this.leftOverflowNavButtonHidden || this.rightOverflowNavButtonHidden) {\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tclearInterval(this.tickInterval);\n\t\t\t\t\t\tthis.handleOverflowNavMouseUp();\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn () => clearInterval(this.longPressInterval);\n\t\t}, 500);\n\t}\n\n\t/**\n\t * Clear intervals/Timeout & reset scroll behavior\n\t */\n\thandleOverflowNavMouseUp() {\n\t\tclearInterval(this.tickInterval);\n\t\tclearTimeout(this.longPressInterval);\n\n\t\t// Reset scroll behavior\n\t\tthis.renderer.setStyle(this.headerContainer.nativeElement, \"scroll-behavior\", \"smooth\");\n\t}\n}\n","import {\n\tDirective,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tElementRef,\n\tAfterViewInit,\n\tHostBinding,\n\tHostListener,\n\tTemplateRef,\n\tforwardRef\n} from \"@angular/core\";\n\nimport { Tab } from \"./tab.component\";\n\n/**\n * Shared inputs, outputs, and selection logic for `[cdsTabHeader]`\n * and `cds-tab-header` as we prepare for deprecation.\n * Groups use `@ContentChildren(TabHeaderBase)` so both forms appear in DOM order,\n * subclasses supply the template and host behavior.\n */\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix -- abstract base class, not a directive instance\nexport abstract class TabHeaderBase {\n\t/**\n\t * Set to 'true' to have pane reference cached and not reloaded on tab switching.\n\t */\n\t@Input() set cacheActive(shouldCache: boolean) {\n\t\tthis._cacheActive = shouldCache;\n\n\t\t// Updates the pane references associated with the tab header when cache active is changed.\n\t\tif (this.paneReference) {\n\t\t\tthis.paneReference.cacheActive = this.cacheActive;\n\t\t}\n\t}\n\n\tget cacheActive() {\n\t\treturn this._cacheActive;\n\t}\n\n\t/**\n\t * Sets `tabIndex` on the linked `Tab` pane when the pane reference is set.\n\t */\n\t@Input() set paneTabIndex(tabIndex: number | null) {\n\t\tif (this.paneReference) {\n\t\t\tthis.paneReference.tabIndex = tabIndex;\n\t\t}\n\t}\n\n\t/**\n\t * Selected tab; controls whether the linked pane content is shown.\n\t */\n\t@Input() active = false;\n\n\t/**\n\t * Indicates whether or not the `Tab` item is disabled.\n\t */\n\t@Input() disabled = false;\n\n\t/**\n\t * Icon template; used with `cds-tab-header` / `cds-tab-header-group`.\n\t */\n\t@Input() icon: TemplateRef<any>;\n\n\t/**\n\t * Optional secondary label rendered below the primary tab label.\n\t * Only displayed when the parent group is using `type=\"contained\"`.\n\t */\n\t@Input() secondaryLabel: string;\n\n\t/**\n\t * Set to `true` to render this tab header as dismissable.\n\t */\n\t@Input() dismissable = false;\n\n\t/**\n\t * Reference to the corresponding tab pane.\n\t */\n\t@Input() paneReference: Tab;\n\n\t/**\n\t * Title attribute used as the tooltip for the tab item. Falls back to the tab item's text content if not provided.\n\t */\n\t@Input() title: string;\n\n\t/**\n\t * Emits when this header becomes selected.\n\t */\n\t@Output() selected = new EventEmitter<any>();\n\n\t/**\n\t * Emits when this tabs's close button is pressed.\n\t */\n\t@Output() tabClose = new EventEmitter<void>();\n\n\tprotected _cacheActive = false;\n\n\t/**\n\t * Move keyboard focus to the tab item.\n\t */\n\tabstract focus(): void;\n\n\t/**\n\t * Activates the linked pane and emits `selected`.\n\t */\n\tselectTab() {\n\t\tthis.focus();\n\t\tif (!this.disabled) {\n\t\t\tthis.selected.emit();\n\t\t\tthis.active = true;\n\t\t\tif (this.paneReference) {\n\t\t\t\tthis.paneReference.active = true;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Tab header as an attribute on a focusable host inside `cds-tab-header-group`.\n *\n * @deprecated as of v5.\n * Prefer `cds-tab-header` for icons, secondary labels, dismissable close, and icon-only tabs.\n */\n@Directive({\n\tselector: \"[cdsTabHeader], [ibmTabHeader]\",\n\tproviders: [\n\t\t// tslint:disable-next-line:no-forward-ref\n\t\t{ provide: TabHeaderBase, useExisting: forwardRef(() => TabHeader) }\n\t]\n})\nexport class TabHeader extends TabHeaderBase implements AfterViewInit {\n\t@HostBinding(\"attr.tabIndex\") get tabIndex() {\n\t\treturn this.active ? 0 : -1;\n\t}\n\n\t@HostBinding(\"class.cds--tabs__nav-item--selected\") get isSelected() {\n\t\treturn this.active;\n\t}\n\n\t@HostBinding(\"class.cds--tabs__nav-item--disabled\") get isDisabled() {\n\t\treturn this.disabled;\n\t}\n\n\t@HostBinding(\"attr.type\") type = \"button\";\n\t@HostBinding(\"attr.aria-selected\") get ariaSelected() {\n\t\treturn this.active;\n\t}\n\t@HostBinding(\"attr.aria-disabled\") get ariaDisabled() {\n\t\treturn this.disabled;\n\t}\n\t@HostBinding(\"class.cds--tabs__nav-item\") navItem = true;\n\t@HostBinding(\"class.cds--tabs__nav-link\") navLink = true;\n\t@HostBinding(\"attr.title\") get hostTitle() {\n\t\treturn this.title ?? null;\n\t}\n\n\tconstructor(private host: ElementRef) {\n\t\tsuper();\n\t}\n\n\t@HostListener(\"click\")\n\tonClick() {\n\t\tthis.selectTab();\n\t}\n\n\t@HostListener(\"keydown\", [\"$event\"])\n\tonKeyDown(event: KeyboardEvent) {\n\t\tif (this.dismissable && event.key === \"Delete\") {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.tabClose.emit();\n\t\t}\n\t}\n\n\tngAfterViewInit() {\n\t\tsetTimeout(() => {\n\t\t\tthis.title = this.title ? this.title : this.host.nativeElement.textContent;\n\t\t});\n\t}\n\n\tfocus() {\n\t\tthis.host.nativeElement.focus();\n\t}\n}\n","import {\n\tComponent,\n\tQueryList,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tHostBinding,\n\tHostListener,\n\tContentChildren,\n\tAfterContentInit,\n\tElementRef,\n\tOnChanges,\n\tSimpleChanges,\n\tChangeDetectorRef,\n\tViewChild,\n\tOnInit,\n\tOnDestroy,\n\tRenderer2\n} from \"@angular/core\";\n\nimport { Subscription } from \"rxjs\";\nimport { EventService } from \"carbon-components-angular/utils\";\nimport { I18n } from \"carbon-components-angular/i18n\";\n\nimport { TabHeaderBase } from \"./tab-header.directive\";\nimport { BaseTabHeader } from \"./base-tab-header.component\";\n\n@Component({\n\tselector: \"cds-tab-header-group, ibm-tab-header-group\",\n\ttemplate: `\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass=\"cds--tab--overflow-nav-button cds--tab--overflow-nav-button--previous\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'cds--tab--overflow-nav-button--hidden': leftOverflowNavButtonHidden\n\t\t\t}\"\n\t\t\t[attr.aria-hidden]=\"leftOverflowNavButtonHidden\"\n\t\t\t[attr.tabindex]=\"-1\"\n\t\t\t[attr.aria-label]=\"translations.BUTTON_ARIA_LEFT\"\n\t\t\t[attr.title]=\"translations.BUTTON_ARIA_LEFT\"\n\t\t\t(click)=\"handleOverflowNavClick(-1, tabHeaderQuery.length)\"\n\t\t\t(pointerdown)=\"handleOverflowNavMouseDown(-1)\"\n\t\t\t(pointerup)=\"handleOverflowNavMouseUp()\"\n\t\t\t(pointerleave)=\"handleOverflowNavMouseUp()\"\n\t\t\t(pointerout)=\"handleOverflowNavMouseUp()\"\n\t\t\t(pointercancel)=\"handleOverflowNavMouseUp()\">\n\t\t\t<svg\n\t\t\t\tfocusable=\"false\"\n\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\twidth=\"16\"\n\t\t\t\theight=\"16\"\n\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\taria-hidden=\"true\">\n\t\t\t\t<path d=\"M5 8L10 3 10.7 3.7 6.4 8 10.7 12.3 10 13z\"></path>\n\t\t\t</svg>\n\t\t</button>\n\t\t<div\n\t\t\tclass=\"cds--tab--list\"\n\t\t\trole=\"tablist\"\n\t\t\t[attr.aria-label]=\"ariaLabel || translations.HEADER_ARIA_LABEL\"\n\t\t\t[attr.aria-labelledby]=\"ariaLabelledby || null\"\n\t\t\t(scroll)=\"handleScroll()\"\n\t\t\t#tabList>\n\t\t\t<ng-container [ngTemplateOutlet]=\"contentBefore\"></ng-container>\n\t\t\t<ng-content></ng-content>\n\t\t\t<ng-container [ngTemplateOutlet]=\"contentAfter\"></ng-container>\n\t\t</div>\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass=\"cds--tab--overflow-nav-button cds--tab--overflow-nav-button--next\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'cds--tab--overflow-nav-button--hidden': rightOverflowNavButtonHidden\n\t\t\t}\"\n\t\t\t[attr.aria-hidden]=\"rightOverflowNavButtonHidden\"\n\t\t\t[attr.tabindex]=\"-1\"\n\t\t\t[attr.aria-label]=\"translations.BUTTON_ARIA_RIGHT\"\n\t\t\t[attr.title]=\"translations.BUTTON_ARIA_RIGHT\"\n\t\t\t(click)=\"handleOverflowNavClick(1, tabHeaderQuery.length)\"\n\t\t\t(pointerdown)=\"handleOverflowNavMouseDown(1)\"\n\t\t\t(pointerup)=\"handleOverflowNavMouseUp()\"\n\t\t\t(pointerleave)=\"handleOverflowNavMouseUp()\"\n\t\t\t(pointerout)=\"handleOverflowNavMouseUp()\"\n\t\t\t(pointercancel)=\"handleOverflowNavMouseUp()\">\n\t\t\t<svg\n\t\t\t\tfocusable=\"false\"\n\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\twidth=\"16\"\n\t\t\t\theight=\"16\"\n\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\taria-hidden=\"true\">\n\t\t\t\t<path d=\"M11 8L6 13 5.3 12.3 9.6 8 5.3 3.7 6 3z\"></path>\n\t\t\t</svg>\n\t\t</button>\n\t`\n})\nexport class TabHeaderGroup extends BaseTabHeader implements AfterContentInit, OnChanges, OnInit, OnDestroy {\n\n\t@HostBinding(\"class.cds--tabs--full-width\") get fullWidthClass() {\n\t\treturn this.distributeWidth;\n\t}\n\n\t/**\n\t * We use taller rows when any header has a secondary label.\n\t */\n\t@HostBinding(\"class.cds--tabs--tall\") get tallClass(): boolean {\n\t\treturn this.hasSecondaryLabelTabs;\n\t}\n\n\tget hasSecondaryLabelTabs(): boolean {\n\t\tif (!this.tabHeaderQuery || this.type !== \"contained\") {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.tabHeaderQuery.toArray().some(\n\t\t\th =>\n\t\t\t\th.secondaryLabel != null &&\n\t\t\t\tString(h.secondaryLabel).trim() !== \"\"\n\t\t);\n\t}\n\n\t/**\n\t * True when `fullWidth` applies (contained, fewer than 9 headers).\n\t */\n\tget distributeWidth(): boolean {\n\t\treturn (\n\t\t\tthis.fullWidth &&\n\t\t\tthis.type === \"contained\" &&\n\t\t\t(this.tabHeaderQuery ? this.tabHeaderQuery.length < 9 : false)\n\t\t);\n\t}\n\t/**\n\t * i18n strings for overflow controls and the tab list `aria-label` fallback.\n\t */\n\t@Input() translations = this.i18n.get().TABS;\n\n\t/**\n\t * When `true`, sets each tab panel `tabindex` to `-1` for navigation-style usage.\n\t */\n\t@Input() isNavigation = false;\n\n\t/**\n\t * Emits when a tab close control is used (with `dismissable`).\n\t * The emitted value is the tab index.\n\t */\n\t@Output() tabClose: EventEmitter<number> = new EventEmitter<number>();\n\n\t/**\n\t * Projected tab headers (`TabHeaderBase`: directive or `cds-tab-header`).\n\t */\n\t@ContentChildren(TabHeaderBase) tabHeaderQuery: QueryList<TabHeaderBase>;\n\n\t@ViewChild(\"tabList\", { static: true }) headerContainer;\n\tselectedSubscriptionTracker = new Subscription();\n\tcloseSubscriptionTracker = new Subscription();\n\n\t/**\n\t * Index of the selected tab for keyboard logic.\n\t */\n\tcurrentSelectedTab = 0;\n\n\t/**\n\t * Focused tab index when `followFocus` is false (manual activation).\n\t */\n\tactiveIndex: number | null = null;\n\n\tconstructor(\n\t\tprotected elementRef: ElementRef,\n\t\tprotected changeDetectorRef: ChangeDetectorRef,\n\t\tprotected eventService: EventService,\n\t\tprotected renderer: Renderer2,\n\t\tprotected i18n: I18n\n\t) {\n\t\tsuper(elementRef, changeDetectorRef, eventService, renderer);\n\t}\n\n\t@HostListener(\"keydown\", [\"$event\"])\n\tkeyboardInput(event) {\n\t\tconst tabHeadersArray = this.tabHeaderQuery.toArray();\n\n\t\tif (event.key === \"ArrowRight\") {\n\t\t\tif (this.currentSelectedTab < tabHeadersArray.length - 1) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (this.followFocus && !tabHeadersArray[this.currentSelectedTab + 1].disabled) {\n\t\t\t\t\ttabHeadersArray[this.currentSelectedTab + 1].selectTab();\n\t\t\t\t} else {\n\t\t\t\t\ttabHeadersArray[this.currentSelectedTab + 1].focus();\n\t\t\t\t\tthis.currentSelectedTab++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (this.followFocus && !tabHeadersArray[0].disabled) {\n\t\t\t\t\ttabHeadersArray[0].selectTab();\n\t\t\t\t} else {\n\t\t\t\t\ttabHeadersArray[0].focus();\n\t\t\t\t\tthis.currentSelectedTab = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (event.key === \"ArrowLeft\") {\n\t\t\tif (this.currentSelectedTab > 0) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (this.followFocus && !tabHeadersArray[this.currentSelectedTab - 1].disabled) {\n\t\t\t\t\ttabHeadersArray[this.currentSelectedTab - 1].selectTab();\n\t\t\t\t} else {\n\t\t\t\t\ttabHeadersArray[this.currentSelectedTab - 1].focus();\n\t\t\t\t\tthis.currentSelectedTab--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (this.followFocus && !tabHeadersArray[tabHeadersArray.length - 1].disabled) {\n\t\t\t\t\ttabHeadersArray[tabHeadersArray.length - 1].selectTab();\n\t\t\t\t} else {\n\t\t\t\t\ttabHeadersArray[tabHeadersArray.length - 1].focus();\n\t\t\t\t\tthis.currentSelectedTab = tabHeadersArray.length - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (event.key === \"Home\") {\n\t\t\tevent.preventDefault();\n\t\t\tif (this.followFocus && !tabHeadersArray[0].disabled) {\n\t\t\t\ttabHeadersArray[0].selectTab();\n\t\t\t} else {\n\t\t\t\ttabHeadersArray[0].focus();\n\t\t\t\tthis.currentSelectedTab = 0;\n\t\t\t}\n\t\t}\n\n\t\tif (event.key === \"End\") {\n\t\t\tevent.preventDefault();\n\t\t\tif (this.followFocus && !tabHeadersArray[tabHeadersArray.length - 1].disabled) {\n\t\t\t\ttabHeadersArray[tabHeadersArray.length - 1].selectTab();\n\t\t\t} else {\n\t\t\t\ttabHeadersArray[tabHeadersArray.length - 1].focus();\n\t\t\t\tthis.currentSelectedTab = tabHeadersArray.length - 1;\n\t\t\t}\n\t\t}\n\n\t\tif ((event.key === \" \") && !this.followFocus) {\n\t\t\ttabHeadersArray[this.currentSelectedTab].selectTab();\n\t\t}\n\t}\n\n\tngOnInit() {\n\t\tthis.eventService.on(window as any, \"resize\", () => this.handleScroll());\n\t}\n\n\tngAfterContentInit() {\n\t\t// Reallocate trackers because subscriptions are permanently closed after unsubscribe\n\t\tthis.selectedSubscriptionTracker.unsubscribe();\n\t\tthis.closeSubscriptionTracker.unsubscribe();\n\t\tthis.selectedSubscriptionTracker = new Subscription();\n\t\tthis.closeSubscriptionTracker = new Subscription();\n\n\t\tif (this.tabHeaderQuery) {\n\t\t\tthis.tabHeaderQuery.toArray()\n\t\t\t\t.forEach(tabHeader => {\n\t\t\t\t\ttabHeader.cacheActive = this.cacheActive;\n\t\t\t\t\ttabHeader.dismissable = this.dismissable;\n\t\t\t\t\ttabHeader.paneTabIndex = this.isNavigation ? null : 0;\n\t\t\t\t});\n\t\t}\n\n\t\tconst headersArray = this.tabHeaderQuery.toArray();\n\n\t\theadersArray.forEach(tabHeader => {\n\t\t\tthis.selectedSubscriptionTracker.add(\n\t\t\t\ttabHeader.selected.subscribe(() => {\n\t\t\t\t\tthis.currentSelectedTab = this.tabHeaderQuery.toArray().indexOf(tabHeader);\n\t\t\t\t\t// The Filter takes the current selected tab out, then all other headers are\n\t\t\t\t\t// deactivated and their associated pane references are also deactivated.\n\t\t\t\t\tthis.tabHeaderQuery.toArray().filter(header => header !== tabHeader)\n\t\t\t\t\t\t.forEach(filteredHeader => {\n\t\t\t\t\t\t\tfilteredHeader.active = false;\n\t\t\t\t\t\t\tif (filteredHeader.paneReference) {\n\t\t\t\t\t\t\t\tfilteredHeader.paneReference.active = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis.closeSubscriptionTracker.add(\n\t\t\t\ttabHeader.tabClose.subscribe(() => {\n\t\t\t\t\tconst index = this.tabHeaderQuery.toArray().indexOf(tabHeader);\n\t\t\t\t\tthis.tabClose.emit(index);\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\n\t\tthis.setFirstTab();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.selectedSubscriptionTracker.unsubscribe();\n\t\tthis.closeSubscriptionTracker.unsubscribe();\n\t\tclearTimeout(this.scrollDebounceTimer);\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.tabHeaderQuery) {\n\t\t\tif (changes.cacheActive) {\n\t\t\t\tthis.tabHeaderQuery.toArray().forEach(tabHeader => tabHeader.cacheActive = this.cacheActive);\n\t\t\t}\n\n\t\t\tif (changes.dismissable) {\n\t\t\t\tthis.tabHeaderQuery.toArray().forEach(tabHeader => tabHeader.dismissable = this.dismissable);\n\t\t\t}\n\n\t\t\tif (changes.isNavigation) {\n\t\t\t\tthis.tabHeaderQuery.toArray()\n\t\t\t\t\t.forEach(tabHeader => tabHeader.paneTabIndex = this.isNavigation ? null : 0);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetSelectedTab(): any {\n\t\tconst selected = this.tabHeaderQuery.toArray()[this.currentSelectedTab];\n\t\tif (selected) {\n\t\t\treturn selected;\n\t\t}\n\t\treturn {\n\t\t\theadingIsTemplate: false,\n\t\t\theading: \"\"\n\t\t};\n\t}\n\n\t/**\n\t * Determines which `Tab` is initially selected.\n\t */\n\tprotected setFirstTab() {\n\t\tsetTimeout(() => {\n\t\t\tconst headers = this.tabHeaderQuery.toArray();\n\t\t\tlet selectedHeader = headers.find(h => h.active || h.paneReference?.active);\n\t\t\tif (!selectedHeader && headers.length > 0) {\n\t\t\t\tselectedHeader = headers[0];\n\t\t\t}\n\t\t\tif (selectedHeader) {\n\t\t\t\tselectedHeader.selectTab();\n\t\t\t\tthis.activeIndex = this.currentSelectedTab;\n\t\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\r\n\tAfterContentInit,\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tContentChildren,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tHostBinding,\r\n\tHostListener,\r\n\tInput,\r\n\tOnChanges,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n\tQueryList,\r\n\tRenderer2,\r\n\tSimpleChanges,\r\n\tViewChild\r\n} from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { EventService } from \"carbon-components-angular/utils\";\r\nimport { I18n } from \"carbon-components-angular/i18n\";\r\n\r\nimport { BaseTabHeader } from \"./base-tab-header.component\";\r\nimport { TabHeaderBase } from \"./tab-header.directive\";\r\n\r\nconst VERTICAL_TAB_HEIGHT = 64;\r\n\r\n/**\r\n * Vertical tab header group: same children as `cds-tab-header-group`, with\r\n * up/down (and Home/End) keys, gradient overflow, and always-contained type.\r\n *\r\n *\r\n * ```html\r\n * <cds-tabs-vertical-grouped height=\"400px\">\r\n *   <cds-tab-header-group-vertical>\r\n *     <cds-tab-header [paneReference]=\"a\">A</cds-tab-header>\r\n *     <cds-tab-header [paneReference]=\"b\">B</cds-tab-header>\r\n *   </cds-tab-header-group-vertical>\r\n *   <cds-tab #a>...</cds-tab>\r\n *   <cds-tab #b>...</cds-tab>\r\n * </cds-tabs-vertical-grouped>\r\n * ```\r\n */\r\n@Component({\r\n\tselector: \"cds-tab-header-group-vertical, ibm-tab-header-group-vertical\",\r\n\ttemplate: `\r\n\t\t<div *ngIf=\"isOverflowingTop\" class=\"cds--tab--list-gradient_top\"></div>\r\n\t\t<div\r\n\t\t\t#tabList\r\n\t\t\tclass=\"cds--tab--list\"\r\n\t\t\trole=\"tablist\"\r\n\t\t\t[attr.aria-label]=\"ariaLabel || translations.HEADER_ARIA_LABEL\"\r\n\t\t\t[attr.aria-labelledby]=\"ariaLabelledby || null\">\r\n\t\t\t<ng-container [ngTemplateOutlet]=\"contentBefore\"></ng-container>\r\n\t\t\t<ng-content></ng-content>\r\n\t\t\t<ng-container [ngTemplateOutlet]=\"contentAfter\"></ng-container>\r\n\t\t</div>\r\n\t\t<div *ngIf=\"isOverflowingBottom\" class=\"cds--tab--list-gradient_bottom\"></div>\r\n\t`\r\n})\r\nexport class TabHeaderGroupVertical\r\n\textends BaseTabHeader\r\n\timplements AfterContentInit, OnChanges, OnInit, OnDestroy {\r\n\t/**\r\n\t * i18n strings for the tab list `aria-label` fallback.\r\n\t */\r\n\t@Input() translations = this.i18n.get().TABS;\r\n\r\n\t/**\r\n\t * When `true`, sets each tab panel `tabindex` to `-1` for navigation-style usage.\r\n\t */\r\n\t@Input() isNavigation = false;\r\n\r\n\t/**\r\n\t * Fires with tab index when a close control is used (with `dismissable`).\r\n\t */\r\n\t@Output() tabClose = new EventEmitter<number>();\r\n\r\n\t/**\r\n\t * Set to 'true' to have tabs automatically activated and have their content displayed when they receive focus.\r\n\t */\r\n\t@Input() followFocus = true;\r\n\r\n\t/**\r\n\t * ContentChildren of all the tab headers (both directive and component\r\n\t * forms — see `TabHeaderBase`).\r\n\t */\r\n\t@ContentChildren(TabHeaderBase) tabHeaderQuery: QueryList<TabHeaderBase>;\r\n\r\n\t@ViewChild(\"tabList\", { static: true }) headerContainer: ElementRef<HTMLElement>;\r\n\r\n\t@HostBinding(\"class.cds--tabs--vertical\") verticalClass = true;\r\n\r\n\t/**\r\n\t * Index of the selected tab for keyboard logic\r\n\t */\r\n\tcurrentSelectedTab = 0;\r\n\r\n\t/**\r\n\t * Focused tab index when `followFocus` is false (manual activation).\r\n\t */\r\n\tactiveIndex: number | null = null;\r\n\r\n\tisOverflowingTop = false;\r\n\tisOverflowingBottom = false;\r\n\r\n\t/**\r\n\t * We use taller rows when any header has a secondary label.\r\n\t */\r\n\t@HostBinding(\"class.cds--tabs--tall\") get tallClass(): boolean {\r\n\t\treturn this.hasSecondaryLabelTabs;\r\n\t}\r\n\r\n\tget hasSecondaryLabelTabs(): boolean {\r\n\t\tif (!this.tabHeaderQuery) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn this.tabHeaderQuery\r\n\t\t\t.toArray()\r\n\t\t\t.some((h) => h.secondaryLabel != null && h.secondaryLabel !== \"\");\r\n\t}\r\n\r\n\tprivate selectedSubscriptionTracker = new Subscription();\r\n\tprivate closeSubscriptionTracker = new Subscription();\r\n\r\n\tprivate resizeObserver: ResizeObserver | null = null;\r\n\tprivate boundListScrollHandler: () => void;\r\n\r\n\tconstructor(\r\n\t\tprotected elementRef: ElementRef,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef,\r\n\t\tprotected eventService: EventService,\r\n\t\tprotected renderer: Renderer2,\r\n\t\tprotected i18n: I18n\r\n\t) {\r\n\t\tsuper(elementRef, changeDetectorRef, eventService, renderer);\r\n\t\tthis.type = \"contained\";\r\n\t\t// Cache a stable reference for add/removeEventListener.\r\n\t\tthis.boundListScrollHandler = () => this.updateOverflowState();\r\n\t}\r\n\r\n\t@HostListener(\"keydown\", [\"$event\"])\r\n\tkeyboardInput(event: KeyboardEvent) {\r\n\t\tif (!this.tabHeaderQuery) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst tabHeadersArray = this.tabHeaderQuery.toArray();\r\n\t\tconst enabledHeaders = tabHeadersArray.filter((h) => !h.disabled);\r\n\t\tif (enabledHeaders.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst referenceIndex = this.followFocus\r\n\t\t\t? this.currentSelectedTab\r\n\t\t\t: (this.activeIndex !== null ? this.activeIndex : this.currentSelectedTab);\r\n\t\tconst currentEnabledIndex = Math.max(0, enabledHeaders.indexOf(tabHeadersArray[referenceIndex]));\r\n\r\n\t\tlet nextEnabledIndex = currentEnabledIndex;\r\n\t\tlet handled = false;\r\n\r\n\t\tif (event.key === \"ArrowDown\") {\r\n\t\t\tnextEnabledIndex = (currentEnabledIndex + 1) % enabledHeaders.length;\r\n\t\t\thandled = true;\r\n\t\t} else if (event.key === \"ArrowUp\") {\r\n\t\t\tnextEnabledIndex = (enabledHeaders.length + currentEnabledIndex - 1) % enabledHeaders.length;\r\n\t\t\thandled = true;\r\n\t\t} else if (event.key === \"Home\") {\r\n\t\t\tnextEnabledIndex = 0;\r\n\t\t\thandled = true;\r\n\t\t} else if (event.key === \"End\") {\r\n\t\t\tnextEnabledIndex = enabledHeaders.length - 1;\r\n\t\t\thandled = true;\r\n\t\t}\r\n\r\n\t\tif (handled) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst nextHeader = enabledHeaders[nextEnabledIndex];\r\n\t\t\tconst nextIndex = tabHeadersArray.indexOf(nextHeader);\r\n\r\n\t\t\tif (this.followFocus) {\r\n\t\t\t\tnextHeader.selectTab();\r\n\t\t\t\tthis.currentSelectedTab = nextIndex;\r\n\t\t\t} else {\r\n\t\t\t\tnextHeader.focus();\r\n\t\t\t\tthis.activeIndex = nextIndex;\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ((event.key === \" \" || event.key === \"Spacebar\") && !this.followFocus) {\r\n\t\t\tconst focusIndex = this.activeIndex !== null ? this.activeIndex : this.currentSelectedTab;\r\n\t\t\ttabHeadersArray[focusIndex].selectTab();\r\n\t\t\tthis.currentSelectedTab = focusIndex;\r\n\t\t}\r\n\t}\r\n\r\n\t@HostListener(\"blur\", [\"$event\"])\r\n\thandleBlur(event: FocusEvent) {\r\n\t\tconst relatedTarget = event.relatedTarget as Node | null;\r\n\t\tconst container = this.headerContainer?.nativeElement;\r\n\t\tif (container && relatedTarget && container.contains(relatedTarget)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!this.followFocus) {\r\n\t\t\tthis.activeIndex = this.currentSelectedTab;\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.resizeObserver = new ResizeObserver(() => {\r\n\t\t\tthis.updateOverflowState();\r\n\t\t\tthis.changeDetectorRef.detectChanges();\r\n\t\t});\r\n\t\tthis.resizeObserver.observe(this.headerContainer.nativeElement);\r\n\t\tthis.headerContainer.nativeElement.addEventListener(\r\n\t\t\t\"scroll\",\r\n\t\t\tthis.boundListScrollHandler\r\n\t\t);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.selectedSubscriptionTracker.unsubscribe();\r\n\t\tthis.closeSubscriptionTracker.unsubscribe();\r\n\t\tthis.resizeObserver?.unobserve(this.headerContainer.nativeElement);\r\n\t\tthis.resizeObserver = null;\r\n\t\tthis.headerContainer.nativeElement.removeEventListener(\r\n\t\t\t\"scroll\",\r\n\t\t\tthis.boundListScrollHandler\r\n\t\t);\r\n\t}\r\n\r\n\tngAfterContentInit() {\r\n\t\t// Reallocate trackers because subscriptions are permanently closed after unsubscribe\r\n\t\tthis.selectedSubscriptionTracker.unsubscribe();\r\n\t\tthis.closeSubscriptionTracker.unsubscribe();\r\n\t\tthis.selectedSubscriptionTracker = new Subscription();\r\n\t\tthis.closeSubscriptionTracker = new Subscription();\r\n\r\n\t\tthis.applyHeaderInputs();\r\n\t\tthis.wireSubscriptions();\r\n\r\n\t\tthis.tabHeaderQuery.changes.subscribe(() => {\r\n\t\t\t// Re-wire when the projected list changes.\r\n\t\t\tthis.selectedSubscriptionTracker.unsubscribe();\r\n\t\t\tthis.closeSubscriptionTracker.unsubscribe();\r\n\t\t\tthis.selectedSubscriptionTracker = new Subscription();\r\n\t\t\tthis.closeSubscriptionTracker = new Subscription();\r\n\t\t\tthis.applyHeaderInputs();\r\n\t\t\tthis.wireSubscriptions();\r\n\t\t\tthis.changeDetectorRef.markForCheck();\r\n\t\t});\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst headers = this.tabHeaderQuery.toArray();\r\n\t\t\tconst activeIdx = headers.findIndex(h => h.active || h.paneReference?.active);\r\n\t\t\tconst initialIndex = activeIdx >= 0 ? activeIdx : 0;\r\n\t\t\tthis.currentSelectedTab = initialIndex;\r\n\t\t\tthis.activeIndex = initialIndex;\r\n\t\t\theaders[initialIndex]?.selectTab();\r\n\t\t\tthis.updateOverflowState();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (this.tabHeaderQuery) {\r\n\t\t\tif (changes.cacheActive) {\r\n\t\t\t\tthis.tabHeaderQuery.toArray().forEach(h => h.cacheActive = this.cacheActive);\r\n\t\t\t}\r\n\t\t\tif (changes.dismissable) {\r\n\t\t\t\tthis.tabHeaderQuery.toArray().forEach(h => h.dismissable = this.dismissable);\r\n\t\t\t}\r\n\t\t\tif (changes.isNavigation) {\r\n\t\t\t\tthis.tabHeaderQuery.toArray()\r\n\t\t\t\t\t.forEach(h => h.paneTabIndex = this.isNavigation ? null : 0);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected updateOverflowState() {\r\n\t\tconst element = this.headerContainer?.nativeElement;\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst halfTabHeight = VERTICAL_TAB_HEIGHT / 2;\r\n\t\tthis.isOverflowingBottom =\r\n\t\t\telement.scrollTop + element.clientHeight + halfTabHeight <= element.scrollHeight;\r\n\t\tthis.isOverflowingTop = element.scrollTop > halfTabHeight;\r\n\t\tthis.changeDetectorRef.markForCheck();\r\n\t}\r\n\r\n\tprotected scrollSelectedTabIntoView() {\r\n\t\tif (!this.scrollIntoView) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst container = this.headerContainer?.nativeElement;\r\n\t\tif (!container) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcontainer.scrollTo({\r\n\t\t\ttop: Math.max(0, (this.currentSelectedTab - 1) * VERTICAL_TAB_HEIGHT),\r\n\t\t\tbehavior: \"smooth\"\r\n\t\t});\r\n\t}\r\n\r\n\tprivate applyHeaderInputs() {\r\n\t\tthis.tabHeaderQuery.toArray().forEach((header) => {\r\n\t\t\theader.cacheActive = this.cacheActive;\r\n\t\t\theader.dismissable = this.dismissable;\r\n\t\t\theader.paneTabIndex = this.isNavigation ? null : 0;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate wireSubscriptions() {\r\n\t\tthis.tabHeaderQuery.toArray().forEach((header) => {\r\n\t\t\tthis.selectedSubscriptionTracker.add(\r\n\t\t\t\theader.selected.subscribe(() => {\r\n\t\t\t\t\tthis.currentSelectedTab = this.tabHeaderQuery\r\n\t\t\t\t\t\t.toArray()\r\n\t\t\t\t\t\t.indexOf(header);\r\n\t\t\t\t\tthis.tabHeaderQuery\r\n\t\t\t\t\t\t.toArray()\r\n\t\t\t\t\t\t.filter((h) => h !== header)\r\n\t\t\t\t\t\t.forEach((other) => {\r\n\t\t\t\t\t\t\tother.active = false;\r\n\t\t\t\t\t\t\tif (other.paneReference) {\r\n\t\t\t\t\t\t\t\tother.paneReference.active = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\tthis.scrollSelectedTabIntoView();\r\n\t\t\t\t})\r\n\t\t\t);\r\n\r\n\t\t\tthis.closeSubscriptionTracker.add(\r\n\t\t\t\theader.tabClose.subscribe(() => {\r\n\t\t\t\t\tconst index = this.tabHeaderQuery.toArray().indexOf(header);\r\n\t\t\t\t\tthis.tabClose.emit(index);\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n}\r\n","import {\r\n\tAfterViewInit,\r\n\tComponent,\r\n\tElementRef,\r\n\tforwardRef,\r\n\tHostBinding,\r\n\tInput,\r\n\tViewChild\r\n} from \"@angular/core\";\r\n\r\nimport { TabHeaderBase } from \"./tab-header.directive\";\r\n\r\n/**\r\n * Tab header with template for label, optional icon, secondary label, badge, and dismissable close.\r\n *\r\n * ```html\r\n * <cds-tab-header-group>\r\n *   <cds-tab-header [paneReference]=\"c1\">Dashboard</cds-tab-header>\r\n *   <cds-tab-header [paneReference]=\"c2\" [icon]=\"iconTpl\" secondaryLabel=\"(1/4)\">\r\n *     Monitoring\r\n *   </cds-tab-header>\r\n * </cds-tab-header-group>\r\n * <cds-tab #c1>...</cds-tab>\r\n * <cds-tab #c2>...</cds-tab>\r\n * ```\r\n */\r\n@Component({\r\n\tselector: \"cds-tab-header, ibm-tab-header\",\r\n\tproviders: [\r\n\t\t// tslint:disable-next-line:no-forward-ref\r\n\t\t{ provide: TabHeaderBase, useExisting: forwardRef(() => TabHeaderComponent) }\r\n\t],\r\n\ttemplate: `\r\n\t\t<cds-tooltip\r\n\t\t\t*ngIf=\"iconOnly; else plainButton\"\r\n\t\t\talign=\"bottom\"\r\n\t\t\t[autoAlign]=\"true\"\r\n\t\t\tclass=\"cds--icon-tooltip\"\r\n\t\t\t[description]=\"iconLabel\"\r\n\t\t\t[enterDelayMs]=\"enterDelayMs\"\r\n\t\t\t[leaveDelayMs]=\"leaveDelayMs\"\r\n\t\t\t[isOpen]=\"isTooltipOpen\"\r\n\t\t\t[disabled]=\"disabled\">\r\n\t\t\t<ng-container *ngTemplateOutlet=\"tabButtonTemplate\"></ng-container>\r\n\t\t</cds-tooltip>\r\n\t\t<ng-template #plainButton>\r\n\t\t\t<ng-container *ngTemplateOutlet=\"tabButtonTemplate\"></ng-container>\r\n\t\t</ng-template>\r\n\t\t<ng-template #tabButtonTemplate>\r\n\t\t\t<button\r\n\t\t\t\t#tabButton\r\n\t\t\t\ttype=\"button\"\r\n\t\t\t\trole=\"tab\"\r\n\t\t\t\tclass=\"cds--tabs__nav-item cds--tabs__nav-link\"\r\n\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\t'cds--tabs__nav-item--selected': active,\r\n\t\t\t\t\t'cds--tabs__nav-item--disabled': disabled,\r\n\t\t\t\t\t'cds--tabs__nav-item--icon-only': iconOnly,\r\n\t\t\t\t\t'cds--tabs__nav-item--icon-only__20': iconOnly && iconSize === 'lg'\r\n\t\t\t\t}\"\r\n\t\t\t\t[attr.aria-selected]=\"active\"\r\n\t\t\t\t[attr.aria-disabled]=\"disabled\"\r\n\t\t\t\t[attr.aria-controls]=\"paneReference?.id || null\"\r\n\t\t\t\t[attr.aria-label]=\"iconOnly ? iconLabel : null\"\r\n\t\t\t\t[attr.tabindex]=\"active ? 0 : -1\"\r\n\t\t\t\t[attr.title]=\"resolvedTitle\"\r\n\t\t\t\t[disabled]=\"disabled\"\r\n\t\t\t\t(click)=\"onTabButtonClick()\"\r\n\t\t\t\t(keydown)=\"onTabButtonKeyDown($event)\">\r\n\t\t\t\t<ng-container *ngIf=\"iconOnly; else labeledTab\">\r\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"icon\"></ng-container>\r\n\t\t\t\t\t<span\r\n\t\t\t\t\t\t*ngIf=\"!disabled && badgeIndicator\"\r\n\t\t\t\t\t\tclass=\"cds--badge-indicator\"\r\n\t\t\t\t\t\taria-hidden=\"true\">\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</ng-container>\r\n\t\t\t\t<ng-template #labeledTab>\r\n\t\t\t\t\t<div class=\"cds--tabs__nav-item-label-wrapper\">\r\n\t\t\t\t\t\t<div *ngIf=\"dismissable && icon\" class=\"cds--tabs__nav-item--icon-left\">\r\n\t\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"icon\"></ng-container>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<span class=\"cds--tabs__nav-item-label\">\r\n\t\t\t\t\t\t\t<ng-content></ng-content>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<div *ngIf=\"!dismissable && icon\" class=\"cds--tabs__nav-item--icon\">\r\n\t\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"icon\"></ng-container>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\t*ngIf=\"secondaryLabel\"\r\n\t\t\t\t\t\tclass=\"cds--tabs__nav-item-secondary-label\"\r\n\t\t\t\t\t\t[attr.title]=\"secondaryLabel\">\r\n\t\t\t\t\t\t{{ secondaryLabel }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</button>\r\n\t\t</ng-template>\r\n\t\t<div *ngIf=\"dismissable\" class=\"cds--tabs__nav-item--close\">\r\n\t\t\t<button\r\n\t\t\t\ttype=\"button\"\r\n\t\t\t\tclass=\"cds--tabs__nav-item--close-icon\"\r\n\t\t\t\t[attr.tabindex]=\"-1\"\r\n\t\t\t\t[attr.aria-disabled]=\"disabled\"\r\n\t\t\t\t[attr.aria-hidden]=\"!(active && !disabled)\"\r\n\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\t'cds--tabs__nav-item--close-icon--selected': active,\r\n\t\t\t\t\t'cds--tabs__nav-item--close-icon--disabled': disabled\r\n\t\t\t\t}\"\r\n\t\t\t\t[disabled]=\"disabled\"\r\n\t\t\t\t[attr.title]=\"closeButtonTitle\"\r\n\t\t\t\t(click)=\"onClose($event)\">\r\n\t\t\t\t<svg\r\n\t\t\t\t\tfocusable=\"false\"\r\n\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\tfill=\"currentColor\"\r\n\t\t\t\t\twidth=\"16\"\r\n\t\t\t\t\theight=\"16\"\r\n\t\t\t\t\tviewBox=\"0 0 32 32\"\r\n\t\t\t\t\t[attr.aria-label]=\"closeButtonAriaLabel\"\r\n\t\t\t\t\t[attr.aria-hidden]=\"!(active && !disabled)\">\r\n\t\t\t\t\t<path d=\"M17.4141 16L24 9.4141 22.5859 8 16 14.5859 9.4143 8 8 9.4141 14.5859 16 8 22.5859 9.4143 24 16 17.4141 22.5859 24 24 22.5859 17.4141 16z\"></path>\r\n\t\t\t\t</svg>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t`\r\n})\r\nexport class TabHeaderComponent extends TabHeaderBase implements AfterViewInit {\r\n\t/**\r\n\t * Icon-only tab: set `icon` and `iconLabel`.\r\n\t */\r\n\t@Input() iconOnly = false;\r\n\t/**\r\n\t * Icon-only tabs: accessible name (`aria-label` / `title`).\r\n\t */\r\n\t@Input() iconLabel: string;\r\n\t/**\r\n\t * **Preview**: Icon-only tabs — show a notification dot on the icon.\r\n\t */\r\n\t@Input() badgeIndicator = false;\r\n\t/**\r\n\t * Icon-only tabs: icon size `default` (16px) or `lg` (20px); usually set on the parent group.\r\n\t */\r\n\t@Input() iconSize: \"default\" | \"lg\" = \"default\";\r\n\t/**\r\n\t * `aria-label` for the dismissable close button.\r\n\t */\r\n\t@Input() closeButtonAriaLabel = \"Press delete to remove tab\";\r\n\t/**\r\n\t * Icon-only tabs: tooltip show delay (ms).\r\n\t */\r\n\t@Input() enterDelayMs: number;\r\n\t/**\r\n\t * Icon-only tabs: tooltip hide delay (ms).\r\n\t */\r\n\t@Input() leaveDelayMs: number;\r\n\t/**\r\n\t * Icon-only tabs: open the tooltip on first render.\r\n\t */\r\n\t@Input() isTooltipOpen = false;\r\n\r\n\t@HostBinding(\"style.display\") displayContents = \"contents\";\r\n\r\n\t@ViewChild(\"tabButton\") tabButton: ElementRef<HTMLButtonElement>;\r\n\r\n\tngAfterViewInit() {\r\n\t\t// Mirror the deprecated directive's title-fallback behavior, but read\r\n\t\t// from the inner rendered button rather than the `display: contents` host.\r\n\t\tsetTimeout(() => {\r\n\t\t\tif (!this.title && this.tabButton?.nativeElement) {\r\n\t\t\t\tconst text = this.tabButton.nativeElement.textContent?.trim();\r\n\t\t\t\tif (text) {\r\n\t\t\t\t\tthis.title = text;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Focus the rendered tab button (not the host).\r\n\t */\r\n\tfocus() {\r\n\t\tthis.tabButton?.nativeElement?.focus();\r\n\t}\r\n\r\n\tonTabButtonClick() {\r\n\t\tthis.selectTab();\r\n\t}\r\n\r\n\t/**\r\n\t * `Delete` closes dismissable tabs when focus is on the tab.\r\n\t */\r\n\tonTabButtonKeyDown(event: KeyboardEvent) {\r\n\t\tif (this.dismissable && event.key === \"Delete\") {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tthis.tabClose.emit();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Close button click; stops propagation so the tab does not activate.\r\n\t */\r\n\tonClose(event: Event) {\r\n\t\tevent.stopPropagation();\r\n\t\tif (this.disabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.tabClose.emit();\r\n\t}\r\n\r\n\tget resolvedTitle(): string | null {\r\n\t\tif (this.iconOnly) {\r\n\t\t\treturn this.iconLabel || null;\r\n\t\t}\r\n\t\treturn this.title || null;\r\n\t}\r\n\r\n\tget closeButtonTitle(): string {\r\n\t\tconst label = this.tabButton?.nativeElement?.textContent?.trim();\r\n\t\treturn label ? `Remove ${label} tab` : \"Remove tab\";\r\n\t}\r\n}\r\n","import {\n\tComponent,\n\tOnInit,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tHostBinding,\n\tTemplateRef\n} from \"@angular/core\";\n\n/**\n* The `Tab` component is a child of the `Tabs` component.\n* It represents one `Tab` item and its content within a panel of other `Tab` items.\n*\n* `Tab` takes a string or `TemplateRef` for the header, and any content for the body of the tab.\n* Disabled states should be handled by the application (ie. switch to the tab, but display some\n* indication as to _why_ the tab is disabled).\n*\n* When the tab is selected the `select` output will be triggered.\n* The `select` output will also be triggered for the active tab when the tabs are loaded or updated.\n*\n*\n* Tab with string header:\n *\n * ```html\n* <cds-tab heading='tab1'>\n* \ttab 1 content\n* </cds-tab>\n* ```\n*\n* Tab with custom header:\n*\n* ```html\n* <ng-template #tabHeading>\n* \t<svg cdsIcon=\"facebook\"\n* \t\tsize=\"sm\"\n* \t\tstyle=\"margin-right: 7px;\">\n* \t</svg>\n* \tHello Tab 1\n* </ng-template>\n* <cds-tabs>\n* \t<cds-tab [heading]=\"tabHeading\">\n* \t\tTab 1 content <svg cdsIcon=\"alert\" size=\"lg\"></svg>\n* \t</cds-tab>\n* \t<cds-tab heading='Tab2'>\n* \t\tTab 2 content\n* \t</cds-tab>\n* \t<cds-tab heading='Tab3'>\n* \t\tTab 3 content\n* \t</cds-tab>\n* </cds-tabs>\n * ```\n */\n@Component({\n\tselector: \"cds-tab, ibm-tab\",\n\ttemplate: `\n\t\t<ng-container *ngIf=\"shouldRender()\">\n\t\t\t<ng-template\n\t\t\t\t*ngIf=\"isTemplate(tabContent)\"\n\t\t\t\t[ngTemplateOutlet]=\"tabContent\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: templateContext }\">\n\t\t\t</ng-template>\n\t\t\t<ng-content></ng-content>\n\t\t</ng-container>\n\t`\n})\nexport class Tab implements OnInit {\n\t@HostBinding(\"attr.id\") get hostId() {\n\t\treturn this.id;\n\t}\n\t@HostBinding(\"attr.aria-labelledby\") get hostAriaLabelledby() {\n\t\treturn `${this.id}-header`;\n\t}\n\t@HostBinding(\"attr.tabindex\") get hostTabIndex() {\n\t\treturn this.tabIndex;\n\t}\n\t/**\n\t * `hidden` + display keep inactive panels out of layout; `null` display when active preserves grid/flex.\n\t */\n\t@HostBinding(\"attr.hidden\") get hostHidden() {\n\t\treturn this.active ? null : \"\";\n\t}\n\t@HostBinding(\"style.display\") get hostDisplay() {\n\t\treturn this.active ? \"block\" : \"none\";\n\t}\n\t/**\n\t * Set to `true` to have `Tab` items cached and not reloaded on tab switching.\n\t */\n\t@Input() set cacheActive(shouldCache: boolean) {\n\t\tthis._cacheActive = shouldCache;\n\t}\n\n\tget cacheActive() {\n\t\treturn this._cacheActive;\n\t}\n\tprivate static counter = 0;\n\t@HostBinding(\"class.cds--tab-content\") tabContentClass = true;\n\t@HostBinding(\"attr.role\") panelRole = \"tabpanel\";\n\t@HostBinding(\"attr.aria-live\") panelAriaLive = \"polite\";\n\t/**\n\t * Boolean value reflects if the `Tab` is using a custom template for the heading.\n\t * Default value is false.\n\t */\n\tpublic headingIsTemplate = false;\n\n\t/**\n\t * The `Tab`'s title to be displayed or custom template for the `Tab` heading.\n\t */\n\t@Input() heading: string | TemplateRef<any>;\n\t/**\n\t * Optional override for the `tabItem's`'s title attribute which is set in `TabHeaders`.\n\t * `tabItem`'s title attribute is automatically set to `heading`.\n\t *\n\t * You might want to use this if you set `heading` to a `TemplateRef`.\n\t */\n\t@Input() title: string;\n\t/**\n\t * Allows the user to pass data to the custom template for the `Tab` heading.\n\t */\n\t@Input() context: any;\n\t/**\n\t * Indicates whether the `Tab` is active/selected.\n\t * Determines whether its tab panel content is rendered.\n\t */\n\t@Input() active = false;\n\t/**\n\t * Indicates whether or not the `Tab` item is disabled.\n\t */\n\t@Input() disabled = false;\n\n\t/**\n\t * `tabindex` on the tab panel, the parent may set this to `null` when `isNavigation` is `true`.\n\t */\n\t@Input() tabIndex = 0;\n\t/**\n\t * Sets the id of the `Tab`. Will be uniquely generated if not provided.\n\t */\n\t@Input() id = `n-tab-${Tab.counter++}`;\n\t/**\n\t * Allows lifecycle hooks to be called on the rendered content.\n\t */\n\t@Input() tabContent: TemplateRef<any>;\n\t/**\n\t * Optional data for templates passed as implicit context.\n\t */\n\t@Input() templateContext: any;\n\t/**\n\t * Optional template that renders an icon inside the `Tab` header.\n\t * Useful for rendering a `cdsIcon` or any other icon next to the tab label.\n\t */\n\t@Input() icon: TemplateRef<any>;\n\t/**\n\t * Optional secondary label rendered below the primary tab label.\n\t * Only displayed when the parent `Tabs` is using `type=\"contained\"`.\n\t */\n\t@Input() secondaryLabel: string;\n\t/**\n\t * Sets the aria-label of the close button when the parent `Tabs` uses `dismissable`.\n\t */\n\t@Input() closeButtonAriaLabel = \"Press delete to remove tab\";\n\t/**\n\t * Icon-only tab: pair with `icon` and `iconLabel`.\n\t */\n\t@Input() iconOnly = false;\n\t/**\n\t * Icon-only tabs: accessible name and tooltip text.\n\t */\n\t@Input() iconLabel: string;\n\t/**\n\t * **Preview**: Icon-only tabs — show a notification dot on the icon.\n\t */\n\t@Input() badgeIndicator = false;\n\t/**\n\t * Icon-only tabs: tooltip show delay (ms).\n\t */\n\t@Input() enterDelayMs: number;\n\t/**\n\t * Icon-only tabs: tooltip hide delay (ms).\n\t */\n\t@Input() leaveDelayMs: number;\n\t/**\n\t * Icon-only tabs: open the tooltip on first render.\n\t */\n\t@Input() isTooltipOpen = false;\n\t/**\n\t * Emits when this tab becomes selected.\n\t */\n\t@Output() selected: EventEmitter<void> = new EventEmitter<void>();\n\t/**\n\t * Emits when this tab's close button is pressed.\n\t */\n\t@Output() tabClose: EventEmitter<void> = new EventEmitter<void>();\n\n\tprotected _cacheActive = false;\n\n\t/**\n\t * Checks for custom heading template on initialization and updates the value\n\t * of the boolean 'headingIsTemplate'.\n\t */\n\tngOnInit() {\n\t\tif (this.heading instanceof TemplateRef) {\n\t\t\tthis.headingIsTemplate = true;\n\t\t}\n\t}\n\n\t/**\n\t * Emit the status of the `Tab`, specifically 'select' and 'selected' properties.\n\t */\n\tdoSelect() {\n\t\tthis.selected.emit();\n\t}\n\n\t/**\n\t* Returns value indicating whether this `Tab` should be rendered in a tab panel.\n\t */\n\tshouldRender() {\n\t\treturn this.active || this.cacheActive;\n\t}\n\n\tpublic isTemplate(value) {\n\t\treturn value instanceof TemplateRef;\n\t}\n}\n","import {\n\tComponent,\n\tQueryList,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tHostListener,\n\tHostBinding,\n\tViewChild,\n\tContentChildren,\n\tAfterContentInit,\n\tViewChildren,\n\tElementRef,\n\tOnChanges,\n\tSimpleChanges,\n\tOnDestroy,\n\tOnInit,\n\tChangeDetectorRef,\n\tRenderer2\n} from \"@angular/core\";\nimport { EventService } from \"carbon-components-angular/utils\";\nimport { I18n } from \"carbon-components-angular/i18n\";\n\nimport { BaseTabHeader } from \"./base-tab-header.component\";\nimport { Tab } from \"./tab.component\";\n\n/**\n * The `TabHeaders` component contains the `Tab` items and controls scroll functionality\n * if content has overflow.\n */\n@Component({\n\tselector: \"cds-tab-headers, ibm-tab-headers\",\n\ttemplate: `\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\t(click)=\"handleOverflowNavClick(-1, tabs.length)\"\n\t\t\t(pointerdown)=\"handleOverflowNavMouseDown(-1)\"\n\t\t\t(pointerup)=\"handleOverflowNavMouseUp()\"\n\t\t\t(pointerleave)=\"handleOverflowNavMouseUp()\"\n\t\t\t(pointerout)=\"handleOverflowNavMouseUp()\"\n\t\t\tclass=\"cds--tab--overflow-nav-button cds--tab--overflow-nav-button--previous\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'cds--tab--overflow-nav-button--hidden': leftOverflowNavButtonHidden\n\t\t\t}\"\n\t\t\t[attr.aria-hidden]=\"leftOverflowNavButtonHidden\"\n\t\t\t[attr.tabindex]=\"-1\"\n\t\t\t[attr.aria-label]=\"translations.BUTTON_ARIA_LEFT\"\n\t\t\t[attr.title]=\"translations.BUTTON_ARIA_LEFT\">\n\t\t\t<svg\n\t\t\t\tfocusable=\"false\"\n\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\twidth=\"16\"\n\t\t\t\theight=\"16\"\n\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\taria-hidden=\"true\">\n\t\t\t\t<path d=\"M5 8L10 3 10.7 3.7 6.4 8 10.7 12.3 10 13z\"></path>\n\t\t\t</svg>\n\t\t</button>\n\t\t<div\n\t\t\t#tabList\n\t\t\tclass=\"cds--tab--list\"\n\t\t\trole=\"tablist\"\n\t\t\t[attr.aria-label]=\"ariaLabel || translations.HEADER_ARIA_LABEL\"\n\t\t\t[attr.aria-labelledby]=\"ariaLabelledby || null\"\n\t\t\t(scroll)=\"handleScroll()\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"contentBefore\"></ng-container>\n\t\t\t<ng-container *ngFor=\"let tab of tabs; let i = index;\">\n\t\t\t\t<cds-tooltip\n\t\t\t\t\t*ngIf=\"tab.iconOnly; else inlineTabItem\"\n\t\t\t\t\talign=\"bottom\"\n\t\t\t\t\t[autoAlign]=\"true\"\n\t\t\t\t\tclass=\"cds--icon-tooltip\"\n\t\t\t\t\t[description]=\"tab.iconLabel\"\n\t\t\t\t\t[enterDelayMs]=\"tab.enterDelayMs ?? 100\"\n\t\t\t\t\t[leaveDelayMs]=\"tab.leaveDelayMs ?? 300\"\n\t\t\t\t\t[isOpen]=\"tab.isTooltipOpen\"\n\t\t\t\t\t[disabled]=\"tab.disabled\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tabItemTpl; context: { tab: tab, i: i }\"></ng-container>\n\t\t\t\t</cds-tooltip>\n\t\t\t\t<ng-template #inlineTabItem>\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tabItemTpl; context: { tab: tab, i: i }\"></ng-container>\n\t\t\t\t</ng-template>\n\t\t\t\t<div\n\t\t\t\t\t*ngIf=\"dismissable\"\n\t\t\t\t\tclass=\"cds--tabs__nav-item--close\">\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t[attr.tabindex]=\"-1\"\n\t\t\t\t\t\t[attr.aria-disabled]=\"tab.disabled\"\n\t\t\t\t\t\t[attr.aria-hidden]=\"!(tab.active && !tab.disabled)\"\n\t\t\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t\t\tclass=\"cds--tabs__nav-item--close-icon\"\n\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t'cds--tabs__nav-item--close-icon--selected': tab.active,\n\t\t\t\t\t\t\t'cds--tabs__nav-item--close-icon--disabled': tab.disabled\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t[attr.title]=\"getCloseTitle(tab)\"\n\t\t\t\t\t\t(click)=\"handleClose($event, tab, i)\">\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\tviewBox=\"0 0 32 32\"\n\t\t\t\t\t\t\t[attr.aria-label]=\"tab.closeButtonAriaLabel\"\n\t\t\t\t\t\t\t[attr.aria-hidden]=\"!(tab.active && !tab.disabled)\">\n\t\t\t\t\t\t\t<path d=\"M17.4141 16L24 9.4141 22.5859 8 16 14.5859 9.4143 8 8 9.4141 14.5859 16 8 22.5859 9.4143 24 16 17.4141 22.5859 24 24 22.5859 17.4141 16z\"></path>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-container [ngTemplateOutlet]=\"contentAfter\"></ng-container>\n\t\t</div>\n\t\t<ng-template #tabItemTpl let-tab=\"tab\" let-i=\"i\">\n\t\t\t<button\n\t\t\t\t#tabItem\n\t\t\t\trole=\"tab\"\n\t\t\t\t[attr.aria-selected]=\"tab.active\"\n\t\t\t\t[attr.tabindex]=\"(tab.active?0:-1)\"\n\t\t\t\t[attr.aria-controls]=\"tab.id\"\n\t\t\t\t[attr.aria-disabled]=\"tab.disabled\"\n\t\t\t\t[attr.aria-label]=\"tab.iconOnly ? tab.iconLabel : null\"\n\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'cds--tabs__nav-item--selected': tab.active,\n\t\t\t\t\t'cds--tabs__nav-item--disabled': tab.disabled,\n\t\t\t\t\t'cds--tabs__nav-item--icon-only': tab.iconOnly,\n\t\t\t\t\t'cds--tabs__nav-item--icon-only__20': tab.iconOnly && iconSize === 'lg'\n\t\t\t\t}\"\n\t\t\t\tclass=\"cds--tabs__nav-item cds--tabs__nav-link\"\n\t\t\t\ttype=\"button\"\n\t\t\t\tdraggable=\"false\"\n\t\t\t\tid=\"{{tab.id}}-header\"\n\t\t\t\t[attr.title]=\"tab.iconOnly ? tab.iconLabel : (tab.title || (!tab.headingIsTemplate ? tab.heading : null))\"\n\t\t\t\t(focus)=\"onTabFocus(tabItem, i)\"\n\t\t\t\t(keydown)=\"handleTabKeyDown($event, tab, i)\"\n\t\t\t\t(click)=\"selectTab(tabItem, tab, i)\">\n\t\t\t\t<ng-container *ngIf=\"tab.iconOnly; else labeledTab\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.icon\"></ng-container>\n\t\t\t\t\t<span\n\t\t\t\t\t\t*ngIf=\"!tab.disabled && tab.badgeIndicator\"\n\t\t\t\t\t\tclass=\"cds--badge-indicator\"\n\t\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t</span>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #labeledTab>\n\t\t\t\t\t<div class=\"cds--tabs__nav-item-label-wrapper\">\n\t\t\t\t\t\t<div *ngIf=\"dismissable && tab.icon\" class=\"cds--tabs__nav-item--icon-left\">\n\t\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.icon\"></ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span class=\"cds--tabs__nav-item-label\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!tab.headingIsTemplate\">\n\t\t\t\t\t\t\t\t{{ tab.heading }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t*ngIf=\"tab.headingIsTemplate\"\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"tab.heading\"\n\t\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{$implicit: tab.context}\">\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"!dismissable && tab.icon\"\n\t\t\t\t\t\t\tclass=\"cds--tabs__nav-item--icon\">\n\t\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.icon\"></ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div\n\t\t\t\t\t\t*ngIf=\"hasSecondaryLabelTabs && tab.secondaryLabel\"\n\t\t\t\t\t\tclass=\"cds--tabs__nav-item-secondary-label\"\n\t\t\t\t\t\t[attr.title]=\"tab.secondaryLabel\">\n\t\t\t\t\t\t{{ tab.secondaryLabel }}\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t</button>\n\t\t</ng-template>\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\t(click)=\"handleOverflowNavClick(1, tabs.length)\"\n\t\t\t(pointerdown)=\"handleOverflowNavMouseDown(1)\"\n\t\t\t(pointerup)=\"handleOverflowNavMouseUp()\"\n\t\t\t(pointerleave)=\"handleOverflowNavMouseUp()\"\n\t\t\t(pointerout)=\"handleOverflowNavMouseUp()\"\n\t\t\tclass=\"cds--tab--overflow-nav-button cds--tab--overflow-nav-button--next\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'cds--tab--overflow-nav-button--hidden': rightOverflowNavButtonHidden\n\t\t\t}\"\n\t\t\t[attr.aria-hidden]=\"rightOverflowNavButtonHidden\"\n\t\t\t[attr.tabindex]=\"-1\"\n\t\t\t[attr.aria-label]=\"translations.BUTTON_ARIA_RIGHT\"\n\t\t\t[attr.title]=\"translations.BUTTON_ARIA_RIGHT\">\n\t\t\t<svg\n\t\t\t\tfocusable=\"false\"\n\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\twidth=\"16\"\n\t\t\t\theight=\"16\"\n\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\taria-hidden=\"true\">\n\t\t\t\t<path d=\"M11 8L6 13 5.3 12.3 9.6 8 5.3 3.7 6 3z\"></path>\n\t\t\t</svg>\n\t\t</button>\n\t`\n})\n\nexport class TabHeaders extends BaseTabHeader implements AfterContentInit, OnChanges, OnDestroy, OnInit {\n\t/**\n\t * List of `Tab` components.\n\t */\n\t// disable the next line because we need to rename the input\n\t// tslint:disable-next-line\n\t@Input(\"tabs\") tabInput: QueryList<Tab>;\n\n\t/**\n\t * i18n strings for overflow controls and the tab list `aria-label` fallback.\n\t */\n\t@Input() translations = this.i18n.get().TABS;\n\n\t/**\n\t * Emits when a tab close control is used (with `dismissable`).\n\t * The emitted value is the tab index.\n\t */\n\t@Output() tabClose: EventEmitter<number> = new EventEmitter<number>();\n\n\t/**\n\t * Gets the Unordered List element that holds the `Tab` headings from the view DOM.\n\t */\n\t@ViewChild(\"tabList\", { static: true }) headerContainer: ElementRef<HTMLElement>;\n\t/**\n\t * ContentChild of all the tabs\n\t */\n\t@ContentChildren(Tab) tabQuery: QueryList<Tab>;\n\t/**\n\t * Set to tabQuery if tabInput is empty\n\t */\n\ttabs: QueryList<Tab>;\n\t/**\n\t * The index of the first visible tab.\n\t */\n\tfirstVisibleTab = 0;\n\t/**\n\t * The DOM element containing the `Tab` headings displayed.\n\t */\n\t@ViewChildren(\"tabItem\") allTabHeaders: QueryList<ElementRef>;\n\n\t/**\n\t * Focused tab index when `followFocus` is false (manual activation).\n\t */\n\tactiveIndex: number | null = null;\n\n\t@HostBinding(\"class.cds--tabs--tall\") get tallClass() {\n\t\treturn this.hasSecondaryLabelTabs;\n\t}\n\n\t@HostBinding(\"class.cds--tabs--full-width\") get fullWidthClass() {\n\t\treturn this.distributeWidth;\n\t}\n\n\tprivate resizeObserver: ResizeObserver;\n\n\tconstructor(\n\t\tprotected elementRef: ElementRef,\n\t\tprotected changeDetectorRef: ChangeDetectorRef,\n\t\tprotected eventService: EventService,\n\t\tprotected renderer: Renderer2,\n\t\tprotected i18n: I18n\n\t) {\n\t\tsuper(elementRef, changeDetectorRef, eventService, renderer);\n\t}\n\n\tget hasSecondaryLabelTabs(): boolean {\n\t\tif (!this.tabs || this.type !== \"contained\") {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.tabs.toArray().some(tab => typeof tab.secondaryLabel !== \"undefined\" && tab.secondaryLabel !== null);\n\t}\n\n\t/**\n\t * True when `fullWidth` applies (contained, fewer than 9 tabs).\n\t */\n\tget distributeWidth(): boolean {\n\t\treturn (\n\t\t\tthis.fullWidth &&\n\t\t\tthis.type === \"contained\" &&\n\t\t\t(this.tabs ? this.tabs.length < 9 : false)\n\t\t);\n\t}\n\n\t// keyboard accessibility\n\t/**\n\t * Controls the keydown events used for tabbing through the headings.\n\t */\n\t@HostListener(\"keydown\", [\"$event\"])\n\tkeyboardInput(event) {\n\t\tconst tabsArray = this.tabs.toArray();\n\t\tconst enabledTabs = tabsArray.filter(tab => !tab.disabled);\n\t\tif (enabledTabs.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst referenceIndex = this.followFocus ?\n\t\t\tthis.currentSelectedTab :\n\t\t\t(this.activeIndex !== null ? this.activeIndex : this.currentSelectedTab);\n\t\tconst currentEnabledIndex = Math.max(0, enabledTabs.indexOf(tabsArray[referenceIndex]));\n\n\t\tlet nextEnabledIndex = currentEnabledIndex;\n\t\tlet handled = false;\n\n\t\tif (event.key === \"ArrowRight\") {\n\t\t\tnextEnabledIndex = (currentEnabledIndex + 1) % enabledTabs.length;\n\t\t\thandled = true;\n\t\t} else if (event.key === \"ArrowLeft\") {\n\t\t\tnextEnabledIndex = (enabledTabs.length + currentEnabledIndex - 1) % enabledTabs.length;\n\t\t\thandled = true;\n\t\t} else if (event.key === \"Home\") {\n\t\t\tnextEnabledIndex = 0;\n\t\t\thandled = true;\n\t\t} else if (event.key === \"End\") {\n\t\t\tnextEnabledIndex = enabledTabs.length - 1;\n\t\t\thandled = true;\n\t\t}\n\n\t\tif (handled) {\n\t\t\tevent.preventDefault();\n\t\t\tconst nextTab = enabledTabs[nextEnabledIndex];\n\t\t\tconst nextIndex = tabsArray.indexOf(nextTab);\n\n\t\t\tif (this.followFocus) {\n\t\t\t\tthis.selectTab(this.allTabHeaders.toArray()[nextIndex].nativeElement, nextTab, nextIndex);\n\t\t\t} else {\n\t\t\t\tthis.activeIndex = nextIndex;\n\t\t\t}\n\t\t\tthis.allTabHeaders.toArray()[nextIndex].nativeElement.focus();\n\t\t\treturn;\n\t\t}\n\n\t\tif ((event.key === \" \" || event.key === \"Spacebar\") && !this.followFocus) {\n\t\t\tconst focusIndex = this.activeIndex !== null ? this.activeIndex : this.currentSelectedTab;\n\t\t\tthis.selectTab(this.allTabHeaders.toArray()[focusIndex].nativeElement, tabsArray[focusIndex], focusIndex);\n\t\t}\n\t}\n\n\t@HostListener(\"blur\", [\"$event\"])\n\thandleBlur(event: FocusEvent) {\n\t\tconst relatedTarget = event.relatedTarget as Node | null;\n\t\tconst container = this.headerContainer?.nativeElement;\n\t\tif (container && relatedTarget && container.contains(relatedTarget)) {\n\t\t\treturn;\n\t\t}\n\t\t// Reset active index to selected tab index when followFocus is false\n\t\tif (!this.followFocus) {\n\t\t\tthis.activeIndex = this.currentSelectedTab;\n\t\t}\n\t}\n\n\t/**\n\t * `Delete` closes dismissable tabs.\n\t */\n\thandleTabKeyDown(event: KeyboardEvent, tab: Tab, index: number) {\n\t\tif (this.dismissable && event.key === \"Delete\") {\n\t\t\tthis.handleClose(event, tab, index);\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\t// Update scroll on resize\n\t\tthis.resizeObserver = new ResizeObserver(() => {\n\t\t\t// Need to explicitly trigger change detection since this runs outside Angular zone\n\t\t\tthis.changeDetectorRef.detectChanges();\n\t\t});\n\t\tthis.resizeObserver.observe(this.headerContainer.nativeElement);\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.resizeObserver?.unobserve(this.headerContainer.nativeElement);\n\t\tclearTimeout(this.scrollDebounceTimer);\n\t}\n\n\tngAfterContentInit() {\n\t\tif (!this.tabInput) {\n\t\t\tthis.tabs = this.tabQuery;\n\t\t} else {\n\t\t\tthis.tabs = this.tabInput;\n\t\t}\n\n\t\tthis.tabs.forEach(tab => tab.cacheActive = this.cacheActive);\n\t\tthis.tabs.changes.subscribe(() => {\n\t\t\tthis.setFirstTab();\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t});\n\t\tthis.setFirstTab();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.tabs && changes.cacheActive) {\n\t\t\tthis.tabs.forEach(tab => tab.cacheActive = this.cacheActive);\n\t\t}\n\t}\n\n\t/**\n\t * Controls manually focusing tabs.\n\t */\n\tonTabFocus(ref: HTMLElement, index: number) {\n\t\tif (this.followFocus) {\n\t\t\tthis.currentSelectedTab = index;\n\t\t} else {\n\t\t\tthis.activeIndex = index;\n\t\t}\n\t\t// reset scroll left because we're already handling it\n\t\tthis.headerContainer.nativeElement.parentElement.scrollLeft = 0;\n\n\t\tif (this.scrollIntoView) {\n\t\t\tthis.scrollTabIntoView(this.allTabHeaders.toArray()[index]?.nativeElement);\n\t\t}\n\t}\n\n\tgetSelectedTab(): any {\n\t\tconst selected = this.tabs.find(tab => tab.active);\n\t\tif (selected) {\n\t\t\treturn selected;\n\t\t}\n\t\treturn { headingIsTemplate: false, heading: \"\" };\n\t}\n\n\t/**\n\t * Selects `Tab` 'tab' and moves it into view on the view DOM if it is not already.\n\t */\n\tselectTab(ref: HTMLElement, tab: Tab, tabIndex: number) {\n\t\tif (tab.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.currentSelectedTab = tabIndex;\n\t\tthis.activeIndex = tabIndex;\n\t\tthis.tabs.forEach(_tab => _tab.active = false);\n\t\ttab.active = true;\n\t\ttab.doSelect();\n\n\t\tif (this.scrollIntoView) {\n\t\t\tthis.scrollTabIntoView(this.allTabHeaders.toArray()[tabIndex]?.nativeElement);\n\t\t}\n\t}\n\n\t/**\n\t * Emit close index and move focus to a nearby enabled tab.\n\t */\n\thandleClose(event: Event, tab: Tab, tabIndex: number) {\n\t\tevent.stopPropagation();\n\t\tif (tab.disabled) {\n\t\t\treturn;\n\t\t}\n\t\ttab.tabClose.emit();\n\t\tthis.tabClose.emit(tabIndex);\n\n\t\t// Move focus to a neighboring enabled tab (next-then-previous).\n\t\tconst headers = this.allTabHeaders?.toArray() ?? [];\n\t\tconst findNextEnabled = (start: number, step: number) => {\n\t\t\tlet i = start;\n\t\t\twhile (i >= 0 && i < headers.length) {\n\t\t\t\tconst candidate = this.tabs.toArray()[i];\n\t\t\t\tif (candidate && !candidate.disabled && i !== tabIndex) {\n\t\t\t\t\treturn headers[i]?.nativeElement;\n\t\t\t\t}\n\t\t\t\ti += step;\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\tconst nextEl = findNextEnabled(tabIndex + 1, 1) || findNextEnabled(tabIndex - 1, -1);\n\t\tif (nextEl) {\n\t\t\t(nextEl as HTMLElement).focus();\n\t\t}\n\t}\n\n\tgetCloseTitle(tab: Tab): string {\n\t\tconst label = !tab.headingIsTemplate && typeof tab.heading === \"string\" ? ` ${tab.heading}` : \"\";\n\t\treturn `Remove${label} tab`;\n\t}\n\n\t/**\n\t * Scroll the given tab element into view if it is not already visible.\n\t */\n\tprotected scrollTabIntoView(tabEl: HTMLElement | null) {\n\t\tif (!tabEl || !this.headerContainer?.nativeElement) {\n\t\t\treturn;\n\t\t}\n\t\tconst container = this.headerContainer.nativeElement;\n\t\tif (container.scrollWidth <= container.clientWidth) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst buttonWidth = this.OVERFLOW_BUTTON_OFFSET;\n\t\tconst tabWidth = tabEl.getBoundingClientRect().width;\n\t\tconst start = tabEl.offsetLeft;\n\t\tconst end = start + tabWidth;\n\t\tconst visibleStart = container.scrollLeft + buttonWidth;\n\t\tconst visibleEnd = container.scrollLeft + container.clientWidth - buttonWidth;\n\n\t\tif (start < visibleStart) {\n\t\t\tcontainer.scrollLeft = start - buttonWidth;\n\t\t} else if (end > visibleEnd) {\n\t\t\tcontainer.scrollLeft = end + buttonWidth - container.clientWidth;\n\t\t}\n\t}\n\n\t/**\n\t * Determines which `Tab` is initially selected.\n\t */\n\tprotected setFirstTab() {\n\t\tsetTimeout(() => {\n\t\t\tlet firstTab = this.tabs.find(tab => tab.active);\n\t\t\tif (!firstTab && this.tabs.first) {\n\t\t\t\tfirstTab = this.tabs.first;\n\t\t\t\tfirstTab.active = true;\n\t\t\t}\n\t\t\tif (firstTab) {\n\t\t\t\tthis.currentSelectedTab = this.tabs.toArray().indexOf(firstTab);\n\t\t\t\tthis.activeIndex = this.currentSelectedTab;\n\t\t\t\tfirstTab.doSelect();\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\r\n\tComponent,\r\n\tQueryList,\r\n\tInput,\r\n\tHostListener,\r\n\tHostBinding,\r\n\tViewChild,\r\n\tContentChildren,\r\n\tAfterContentInit,\r\n\tViewChildren,\r\n\tElementRef,\r\n\tOnChanges,\r\n\tSimpleChanges,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tChangeDetectorRef,\r\n\tRenderer2\r\n} from \"@angular/core\";\r\nimport { EventService } from \"carbon-components-angular/utils\";\r\nimport { I18n } from \"carbon-components-angular/i18n\";\r\n\r\nimport { BaseTabHeader } from \"./base-tab-header.component\";\r\nimport { Tab } from \"./tab.component\";\r\n\r\nconst VERTICAL_TAB_HEIGHT = 64;\r\n\r\n/**\r\n * The `TabHeadersVertical` component renders tab headers in a vertical\r\n * orientation. It contains the `Tab` items and supports keyboard navigation\r\n * via ArrowUp/ArrowDown/Home/End.\r\n */\r\n@Component({\r\n\tselector: \"cds-tab-headers-vertical, ibm-tab-headers-vertical\",\r\n\ttemplate: `\r\n\t\t<div *ngIf=\"isOverflowingTop\" class=\"cds--tab--list-gradient_top\"></div>\r\n\t\t<div\r\n\t\t\t#tabList\r\n\t\t\tclass=\"cds--tab--list\"\r\n\t\t\trole=\"tablist\"\r\n\t\t\t[attr.aria-label]=\"ariaLabel || translations.HEADER_ARIA_LABEL\"\r\n\t\t\t[attr.aria-labelledby]=\"ariaLabelledby || null\">\r\n\t\t\t<ng-container [ngTemplateOutlet]=\"contentBefore\"></ng-container>\r\n\t\t\t<button\r\n\t\t\t\t*ngFor=\"let tab of tabs; let i = index;\"\r\n\t\t\t\t#tabItem\r\n\t\t\t\trole=\"tab\"\r\n\t\t\t\t[attr.aria-selected]=\"tab.active\"\r\n\t\t\t\t[attr.tabindex]=\"(tab.active?0:-1)\"\r\n\t\t\t\t[attr.aria-controls]=\"tab.id\"\r\n\t\t\t\t[attr.aria-disabled]=\"tab.disabled\"\r\n\t\t\t\t[disabled]=\"tab.disabled\"\r\n\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\t'cds--tabs__nav-item--selected': tab.active,\r\n\t\t\t\t\t'cds--tabs__nav-item--disabled': tab.disabled\r\n\t\t\t\t}\"\r\n\t\t\t\tclass=\"cds--tabs__nav-item cds--tabs__nav-link\"\r\n\t\t\t\ttype=\"button\"\r\n\t\t\t\tdraggable=\"false\"\r\n\t\t\t\tid=\"{{tab.id}}-header\"\r\n\t\t\t\t[attr.title]=\"tab.title || (!tab.headingIsTemplate ? tab.heading : null)\"\r\n\t\t\t\t(focus)=\"onTabFocus(i)\"\r\n\t\t\t\t(click)=\"selectTab(tab, i)\">\r\n\t\t\t\t<div class=\"cds--tabs__nav-item-label-wrapper\">\r\n\t\t\t\t\t<span class=\"cds--tabs__nav-item-label\">\r\n\t\t\t\t\t\t<ng-container *ngIf=\"!tab.headingIsTemplate\">\r\n\t\t\t\t\t\t\t{{ tab.heading }}\r\n\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\t\t*ngIf=\"tab.headingIsTemplate\"\r\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"tab.heading\"\r\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{$implicit: tab.context}\">\r\n\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</div>\r\n\t\t\t</button>\r\n\t\t\t<ng-container [ngTemplateOutlet]=\"contentAfter\"></ng-container>\r\n\t\t</div>\r\n\t\t<div *ngIf=\"isOverflowingBottom\" class=\"cds--tab--list-gradient_bottom\"></div>\r\n\t`\r\n})\r\nexport class TabHeadersVertical extends BaseTabHeader implements AfterContentInit, OnChanges, OnDestroy, OnInit {\r\n\t/**\r\n\t * List of `Tab` components.\r\n\t */\r\n\t// disable the next line because we need to rename the input\r\n\t// tslint:disable-next-line\r\n\t@Input(\"tabs\") tabInput: QueryList<Tab>;\r\n\r\n\t/**\r\n\t * i18n strings for the tab list `aria-label` fallback.\r\n\t */\r\n\t@Input() translations = this.i18n.get().TABS;\r\n\r\n\t@HostBinding(\"class.cds--tabs--vertical\") verticalClass = true;\r\n\r\n\t@ViewChild(\"tabList\", { static: true }) headerContainer: ElementRef<HTMLElement>;\r\n\r\n\t/**\r\n\t * ContentChild of all the tabs\r\n\t */\r\n\t@ContentChildren(Tab) tabQuery: QueryList<Tab>;\r\n\ttabs: QueryList<Tab>;\r\n\r\n\t@ViewChildren(\"tabItem\") allTabHeaders: QueryList<ElementRef>;\r\n\r\n\t/**\r\n\t * Focused tab index when `followFocus` is false (manual activation)\r\n\t */\r\n\tactiveIndex: number | null = null;\r\n\r\n\t/**\r\n\t * Whether the tab list is overflowing at the top (some tabs are clipped).\r\n\t */\r\n\tisOverflowingTop = false;\r\n\t/**\r\n\t * Whether the tab list is overflowing at the bottom (some tabs are clipped).\r\n\t */\r\n\tisOverflowingBottom = false;\r\n\r\n\tprivate resizeObserver: ResizeObserver;\r\n\r\n\tconstructor(\r\n\t\tprotected elementRef: ElementRef,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef,\r\n\t\tprotected eventService: EventService,\r\n\t\tprotected renderer: Renderer2,\r\n\t\tprotected i18n: I18n\r\n\t) {\r\n\t\tsuper(elementRef, changeDetectorRef, eventService, renderer);\r\n\t\tthis.type = \"contained\";\r\n\t}\r\n\r\n\t@HostListener(\"keydown\", [\"$event\"])\r\n\tkeyboardInput(event: KeyboardEvent) {\r\n\t\tif (!this.tabs) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst tabsArray = this.tabs.toArray();\r\n\t\tconst enabledTabs = tabsArray.filter(tab => !tab.disabled);\r\n\t\tif (enabledTabs.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst referenceIndex = this.followFocus ?\r\n\t\t\tthis.currentSelectedTab :\r\n\t\t\t(this.activeIndex !== null ? this.activeIndex : this.currentSelectedTab);\r\n\t\tconst currentEnabledIndex = Math.max(0, enabledTabs.indexOf(tabsArray[referenceIndex]));\r\n\r\n\t\tlet nextEnabledIndex = currentEnabledIndex;\r\n\t\tlet handled = false;\r\n\r\n\t\tif (event.key === \"ArrowDown\") {\r\n\t\t\tnextEnabledIndex = (currentEnabledIndex + 1) % enabledTabs.length;\r\n\t\t\thandled = true;\r\n\t\t} else if (event.key === \"ArrowUp\") {\r\n\t\t\tnextEnabledIndex = (enabledTabs.length + currentEnabledIndex - 1) % enabledTabs.length;\r\n\t\t\thandled = true;\r\n\t\t} else if (event.key === \"Home\") {\r\n\t\t\tnextEnabledIndex = 0;\r\n\t\t\thandled = true;\r\n\t\t} else if (event.key === \"End\") {\r\n\t\t\tnextEnabledIndex = enabledTabs.length - 1;\r\n\t\t\thandled = true;\r\n\t\t}\r\n\r\n\t\tif (handled) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst nextTab = enabledTabs[nextEnabledIndex];\r\n\t\t\tconst nextIndex = tabsArray.indexOf(nextTab);\r\n\r\n\t\t\tif (this.followFocus) {\r\n\t\t\t\tthis.selectTab(nextTab, nextIndex);\r\n\t\t\t} else {\r\n\t\t\t\tthis.activeIndex = nextIndex;\r\n\t\t\t}\r\n\t\t\tthis.allTabHeaders.toArray()[nextIndex].nativeElement.focus();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ((event.key === \" \" || event.key === \"Spacebar\") && !this.followFocus) {\r\n\t\t\tconst focusIndex = this.activeIndex !== null ? this.activeIndex : this.currentSelectedTab;\r\n\t\t\tthis.selectTab(tabsArray[focusIndex], focusIndex);\r\n\t\t}\r\n\t}\r\n\r\n\t@HostListener(\"blur\", [\"$event\"])\r\n\thandleBlur(event: FocusEvent) {\r\n\t\tconst relatedTarget = event.relatedTarget as Node | null;\r\n\t\tconst container = this.headerContainer?.nativeElement;\r\n\t\tif (container && relatedTarget && container.contains(relatedTarget)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!this.followFocus) {\r\n\t\t\tthis.activeIndex = this.currentSelectedTab;\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.resizeObserver = new ResizeObserver(() => {\r\n\t\t\tthis.updateOverflowState();\r\n\t\t\tthis.changeDetectorRef.detectChanges();\r\n\t\t});\r\n\t\tthis.resizeObserver.observe(this.headerContainer.nativeElement);\r\n\t\tthis.headerContainer.nativeElement.addEventListener(\"scroll\", this.listScrollHandler);\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.resizeObserver?.unobserve(this.headerContainer.nativeElement);\r\n\t\tthis.headerContainer.nativeElement.removeEventListener(\"scroll\", this.listScrollHandler);\r\n\t}\r\n\r\n\tngAfterContentInit() {\r\n\t\tif (!this.tabInput) {\r\n\t\t\tthis.tabs = this.tabQuery;\r\n\t\t} else {\r\n\t\t\tthis.tabs = this.tabInput;\r\n\t\t}\r\n\r\n\t\tthis.tabs.forEach(tab => tab.cacheActive = this.cacheActive);\r\n\t\tthis.tabs.changes.subscribe(() => {\r\n\t\t\tthis.setFirstTab();\r\n\t\t\tthis.changeDetectorRef.markForCheck();\r\n\t\t});\r\n\t\tthis.setFirstTab();\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (this.tabs && changes.cacheActive) {\r\n\t\t\tthis.tabs.forEach(tab => tab.cacheActive = this.cacheActive);\r\n\t\t}\r\n\t}\r\n\r\n\tonTabFocus(index: number) {\r\n\t\tif (this.followFocus) {\r\n\t\t\tthis.currentSelectedTab = index;\r\n\t\t} else {\r\n\t\t\tthis.activeIndex = index;\r\n\t\t}\r\n\t\tthis.scrollSelectedTabIntoView();\r\n\t}\r\n\r\n\tselectTab(tab: Tab, tabIndex: number) {\r\n\t\tif (tab.disabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.currentSelectedTab = tabIndex;\r\n\t\tthis.activeIndex = tabIndex;\r\n\t\tthis.tabs.forEach(_tab => _tab.active = false);\r\n\t\ttab.active = true;\r\n\t\ttab.doSelect();\r\n\t\tthis.scrollSelectedTabIntoView();\r\n\t}\r\n\r\n\tgetSelectedTab(): any {\r\n\t\tconst selected = this.tabs.find(tab => tab.active);\r\n\t\tif (selected) {\r\n\t\t\treturn selected;\r\n\t\t}\r\n\t\treturn { headingIsTemplate: false, heading: \"\" };\r\n\t}\r\n\r\n\tprotected updateOverflowState() {\r\n\t\tconst element = this.headerContainer?.nativeElement;\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst halfTabHeight = VERTICAL_TAB_HEIGHT / 2;\r\n\t\tthis.isOverflowingBottom =\r\n\t\t\telement.scrollTop + element.clientHeight + halfTabHeight <= element.scrollHeight;\r\n\t\tthis.isOverflowingTop = element.scrollTop > halfTabHeight;\r\n\t\tthis.changeDetectorRef.markForCheck();\r\n\t}\r\n\r\n\tprotected scrollSelectedTabIntoView() {\r\n\t\tconst container = this.headerContainer?.nativeElement;\r\n\t\tif (!container) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst selectedHeader = this.allTabHeaders?.toArray()[this.currentSelectedTab]?.nativeElement;\r\n\t\tif (!selectedHeader) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst containerRect = container.getBoundingClientRect();\r\n\t\tconst selectedRect = selectedHeader.getBoundingClientRect();\r\n\t\tconst halfTabHeight = VERTICAL_TAB_HEIGHT / 2;\r\n\r\n\t\tif (\r\n\t\t\tselectedRect.top - halfTabHeight < containerRect.top ||\r\n\t\t\tselectedRect.top - containerRect.top + VERTICAL_TAB_HEIGHT + halfTabHeight > containerRect.height\r\n\t\t) {\r\n\t\t\tcontainer.scrollTo({\r\n\t\t\t\ttop: Math.max(0, (this.currentSelectedTab - 1) * VERTICAL_TAB_HEIGHT),\r\n\t\t\t\tbehavior: \"smooth\"\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected setFirstTab() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tlet firstTab = this.tabs.find(tab => tab.active);\r\n\t\t\tif (!firstTab && this.tabs.first) {\r\n\t\t\t\tfirstTab = this.tabs.first;\r\n\t\t\t\tfirstTab.active = true;\r\n\t\t\t}\r\n\t\t\tif (firstTab) {\r\n\t\t\t\tthis.currentSelectedTab = this.tabs.toArray().indexOf(firstTab);\r\n\t\t\t\tthis.activeIndex = this.currentSelectedTab;\r\n\t\t\t\tfirstTab.doSelect();\r\n\t\t\t\tthis.updateOverflowState();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\tprivate listScrollHandler = () => this.updateOverflowState();\r\n}\r\n","import {\n\tComponent,\n\tforwardRef,\n\tInput\n} from \"@angular/core\";\nimport { Tab } from \"./tab.component\";\n\n/**\n * Icon-only approach for `cds-tab` variant: `[icon]` template plus `label` for tooltip.\n *\n * ```html\n * <ng-template #i><svg cdsIcon=\"activity\" size=\"16\"></svg></ng-template>\n * <cds-tabs>\n *   <cds-icon-tab label=\"Activity\" [icon]=\"i\">Panel</cds-icon-tab>\n * </cds-tabs>\n * ```\n */\n@Component({\n\tselector: \"cds-icon-tab, ibm-icon-tab\",\n\ttemplate: `\n\t\t<ng-container *ngIf=\"shouldRender()\">\n\t\t\t<ng-template\n\t\t\t\t*ngIf=\"isTemplate(tabContent)\"\n\t\t\t\t[ngTemplateOutlet]=\"tabContent\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: templateContext }\">\n\t\t\t</ng-template>\n\t\t\t<ng-content></ng-content>\n\t\t</ng-container>\n\t`,\n\tproviders: [\n\t\t// tslint:disable-next-line:no-forward-ref\n\t\t{ provide: Tab, useExisting: forwardRef(() => IconTab) }\n\t]\n})\nexport class IconTab extends Tab {\n\t/**\n\t * Accessible label and tooltip text for the icon tab.\n\t */\n\t@Input()\n\tset label(value: string) {\n\t\tthis.iconLabel = value;\n\t}\n\n\tget label(): string {\n\t\treturn this.iconLabel;\n\t}\n\n\t/**\n\t * Icon tabs are only for icons, so iconOnly by default\n\t */\n\toverride iconOnly = true;\n}\n","import {\n\tComponent,\n\tHostBinding,\n\tInput\n} from \"@angular/core\";\n\n/**\n * Skeleton component for tabs\n */\n@Component({\n\tselector: \"cds-tabs-skeleton, ibm-tabs-skeleton\",\n\ttemplate: `\n\t\t<ul class=\"cds--tabs__nav\">\n\t\t\t<li\n\t\t\t\t*ngFor=\"let i of numOfSkeletonTabs\"\n\t\t\t\tclass=\"cds--tabs__nav-item\">\n\t\t\t\t<div class=\"cds--tabs__nav-link\">\n\t\t\t\t\t<span></span>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t</ul>\n\t`\n})\nexport class TabSkeleton {\n\t/**\n\t * Number of skeleton tab placeholders to render, default is 5\n\t */\n\t@Input() set numOftabs(num: number) {\n\t\tthis.numOfSkeletonTabs = new Array(num);\n\t}\n\n\t/**\n\t * Set to `true` to render the contained variant of the skeleton tabs.\n\t */\n\t@Input() contained = false;\n\n\t/**\n\t * Set to `true` to put tabs in a loading state.\n\t */\n\t@HostBinding(\"class.cds--skeleton\") skeleton = true;\n\t@HostBinding(\"class.cds--tabs\") tabs = true;\n\t@HostBinding(\"class.cds--tabs--contained\") get containedClass() {\n\t\treturn this.contained;\n\t}\n\tnumOfSkeletonTabs = new Array(5);\n}\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tContentChildren,\n\tQueryList,\n\tAfterContentInit,\n\tContentChild,\n\tOnChanges,\n\tSimpleChanges\n} from \"@angular/core\";\nimport { Tab } from \"./tab.component\";\nimport { TabHeaders } from \"./tab-headers.component\";\n\n/**\n * Build out your application's tabs using this component.\n * This is the parent of the `Tab` and `TabHeader` components.\n *\n * [See demo](../../?path=/story/components-tabs--basic)\n *\n * `Tabs` expects a set of `n-tab` elements\n *\n * ```html\n * <cds-tabs>\n * \t<cds-tab heading='tab1'>\n * \t\ttab 1 content\n * \t</cds-tab>\n * \t<cds-tab heading='tab1'>\n * \t\ttab 2 content\n * \t</cds-tab>\n * \t<!-- ... -->\n * \t<cds-tab heading='tab1'>\n * \t\ttab n content\n * \t</cds-tab>\n * </cds-tabs>\n * ```\n */\n@Component({\n\tselector: \"cds-tabs, ibm-tabs\",\n\ttemplate: `\n\t\t<ng-container *ngIf=\"skeleton\">\n\t\t\t<cds-tabs-skeleton [contained]=\"type === 'contained'\"></cds-tabs-skeleton>\n\t\t</ng-container>\n\t\t<ng-container *ngIf=\"!skeleton\">\n\t\t\t<cds-tab-headers\n\t\t\t\t*ngIf=\"hasTabHeaders() && position === 'top'\"\n\t\t\t\t[theme]=\"theme\"\n\t\t\t\t[tabs]=\"tabs\"\n\t\t\t\t[followFocus]=\"followFocus\"\n\t\t\t\t[cacheActive]=\"cacheActive\"\n\t\t\t\t[contentBefore]=\"before\"\n\t\t\t\t[contentAfter]=\"after\"\n\t\t\t\t[ariaLabel]=\"ariaLabel\"\n\t\t\t\t[ariaLabelledby]=\"ariaLabelledby\"\n\t\t\t\t[type]=\"type\"\n\t\t\t\t[iconSize]=\"iconSize\"\n\t\t\t\t[fullWidth]=\"fullWidth\"\n\t\t\t\t[dismissable]=\"dismissable\"\n\t\t\t\t[scrollIntoView]=\"scrollIntoView\"\n\t\t\t\t[scrollDebounceWait]=\"scrollDebounceWait\"\n\t\t\t\t(tabClose)=\"tabClose.emit($event)\">\n\t\t\t</cds-tab-headers>\n\t\t\t<ng-content></ng-content>\n\t\t\t<ng-template #before>\n\t\t\t\t<ng-content select=\"[before]\"></ng-content>\n\t\t\t</ng-template>\n\t\t\t<ng-template #after>\n\t\t\t\t<ng-content select=\"[after]\"></ng-content>\n\t\t\t</ng-template>\n\t\t\t<cds-tab-headers\n\t\t\t\t*ngIf=\"hasTabHeaders() && position === 'bottom'\"\n\t\t\t\t[tabs]=\"tabs\"\n\t\t\t\t[cacheActive]=\"cacheActive\"\n\t\t\t\t[type]=\"type\"\n\t\t\t\t[iconSize]=\"iconSize\"\n\t\t\t\t[fullWidth]=\"fullWidth\"\n\t\t\t\t[dismissable]=\"dismissable\"\n\t\t\t\t[scrollIntoView]=\"scrollIntoView\"\n\t\t\t\t[scrollDebounceWait]=\"scrollDebounceWait\"\n\t\t\t\t(tabClose)=\"tabClose.emit($event)\">\n\t\t\t</cds-tab-headers>\n\t\t</ng-container>\n\t`\n})\nexport class Tabs implements AfterContentInit, OnChanges {\n\t/**\n\t * Takes either `top` or `bottom` to place `TabHeader` relative to the tab panels.\n\t */\n\t@Input() position: \"top\" | \"bottom\" = \"top\";\n\t/**\n\t * Set to `true` to have `Tab` items cached and not reloaded on tab switching.\n\t */\n\t@Input() cacheActive = false;\n\t/**\n\t * Set to 'true' to have tabs automatically activated and have their content displayed when they receive focus.\n\t */\n\t@Input() followFocus = true;\n\t/**\n\t * When `true`, sets each tab panel `tabindex` to `-1` for navigation-style usage.\n\t */\n\t@Input() isNavigation = false;\n\t/**\n\t * Sets the aria label on the `TabHeader`s nav element.\n\t */\n\t@Input() ariaLabel: string;\n\t/**\n\t * Sets the aria labelledby on the `TabHeader`s nav element.\n\t */\n\t@Input() ariaLabelledby: string;\n\t/**\n\t * Visual style of the tab headers: `line` or `contained`.\n\t */\n\t@Input() type: \"line\" | \"contained\" = \"line\";\n\t/**\n\t * Theme for tab headers: `light` or `dark`.\n\t */\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\t/**\n\t * When `true`, renders the tabs skeleton loading state.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * When using icon-only tabs, icon size: `default` (16px) or `lg` (20px).\n\t */\n\t@Input() iconSize: \"default\" | \"lg\";\n\t/**\n\t * Evenly sized tabs across the row (contained, fewer than 9 tabs).\n\t */\n\t@Input() fullWidth = false;\n\t/**\n\t * Show a close control on each tab.\n\t */\n\t@Input() dismissable = false;\n\t/**\n\t * Scroll the active tab into view on focus/select.\n\t */\n\t@Input() scrollIntoView = false;\n\t/**\n\t * Debounce (ms) for tab list scroll events; affects overflow chevron updates.\n\t */\n\t@Input() scrollDebounceWait = 200;\n\n\t/**\n\t * Emits when a tab close control is used (with `dismissable`).\n\t * The emitted value is the tab index.\n\t */\n\t@Output() tabClose: EventEmitter<number> = new EventEmitter<number>();\n\n\t/**\n\t * Maintains a `QueryList` of the `Tab` elements and updates if `Tab`s are added or removed.\n\t */\n\t@ContentChildren(Tab, { descendants: false }) tabs: QueryList<Tab>;\n\t/**\n\t * Content child of the projected header component\n\t */\n\t@ContentChild(TabHeaders) tabHeaders;\n\n\t/**\n\t * After content is initialized update `Tab`s to cache (if turned on) and set the initial\n\t * selected Tab item.\n\t */\n\tngAfterContentInit() {\n\t\tif (this.tabHeaders) {\n\t\t\tthis.tabHeaders.cacheActive = this.cacheActive;\n\t\t}\n\n\t\tthis.tabs.forEach(tab => {\n\t\t\ttab.tabIndex = this.isNavigation ? null : 0;\n\t\t});\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.tabHeaders && changes.cacheActive) {\n\t\t\tthis.tabHeaders.cacheActive = this.cacheActive;\n\t\t}\n\n\t\tif (this.tabs && changes.isNavigation) {\n\t\t\tthis.tabs.forEach(tab => {\n\t\t\t\ttab.tabIndex = this.isNavigation ? null : 0;\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * true if the cds-tab's are passed directly to the component as children\n\t */\n\thasTabHeaders() {\n\t\treturn this.tabs.length > 0;\n\t}\n}\n","import {\r\n\tComponent,\r\n\tInput,\r\n\tContentChildren,\r\n\tQueryList,\r\n\tAfterContentInit,\r\n\tContentChild,\r\n\tHostBinding,\r\n\tOnChanges,\r\n\tSimpleChanges\r\n} from \"@angular/core\";\r\nimport { Tab } from \"./tab.component\";\r\nimport { TabHeadersVertical } from \"./tab-headers-vertical.component\";\r\n\r\n/**\r\n * `TabsVertical` is a vertical-orientation variant of `Tabs`. It expects a set\r\n * of `<cds-tab>` elements as children and renders the headers vertically.\r\n *\r\n * ```html\r\n * <cds-tabs-vertical>\r\n * \t<cds-tab heading='tab1'>tab 1 content</cds-tab>\r\n * \t<cds-tab heading='tab2'>tab 2 content</cds-tab>\r\n * </cds-tabs-vertical>\r\n * ```\r\n */\r\n@Component({\r\n\tselector: \"cds-tabs-vertical, ibm-tabs-vertical\",\r\n\ttemplate: `\r\n\t\t<ng-container *ngIf=\"skeleton\">\r\n\t\t\t<cds-tabs-skeleton [contained]=\"true\"></cds-tabs-skeleton>\r\n\t\t</ng-container>\r\n\t\t<ng-container *ngIf=\"!skeleton\">\r\n\t\t\t<cds-tab-headers-vertical\r\n\t\t\t\t*ngIf=\"hasTabHeaders()\"\r\n\t\t\t\t[tabs]=\"tabs\"\r\n\t\t\t\t[followFocus]=\"followFocus\"\r\n\t\t\t\t[cacheActive]=\"cacheActive\"\r\n\t\t\t\t[contentBefore]=\"before\"\r\n\t\t\t\t[contentAfter]=\"after\"\r\n\t\t\t\t[ariaLabel]=\"ariaLabel\"\r\n\t\t\t\t[ariaLabelledby]=\"ariaLabelledby\">\r\n\t\t\t</cds-tab-headers-vertical>\r\n\t\t\t<ng-content></ng-content>\r\n\t\t\t<ng-template #before>\r\n\t\t\t\t<ng-content select=\"[before]\"></ng-content>\r\n\t\t\t</ng-template>\r\n\t\t\t<ng-template #after>\r\n\t\t\t\t<ng-content select=\"[after]\"></ng-content>\r\n\t\t\t</ng-template>\r\n\t\t</ng-container>\r\n\t`\r\n})\r\nexport class TabsVertical implements AfterContentInit, OnChanges {\r\n\t@HostBinding(\"class.cds--css-grid\") cssGridClass = true;\r\n\t@HostBinding(\"style.height\") get hostHeight() {\r\n\t\treturn this.height || null;\r\n\t}\r\n\t/**\r\n\t * Set to `true` to have `Tab` items cached and not reloaded on tab switching.\r\n\t */\r\n\t@Input() cacheActive = false;\r\n\t/**\r\n\t * Set to 'true' to have tabs automatically activated and have their content displayed when they receive focus.\r\n\t */\r\n\t@Input() followFocus = true;\r\n\t/**\r\n\t * When `true`, sets each tab panel `tabindex` to `-1` for navigation-style usage.\r\n\t */\r\n\t@Input() isNavigation = false;\r\n\t/**\r\n\t * Sets the aria label on the `TabHeadersVertical`s nav element.\r\n\t */\r\n\t@Input() ariaLabel: string;\r\n\t/**\r\n\t * Sets the aria labelledby on the `TabHeadersVertical`s nav element.\r\n\t */\r\n\t@Input() ariaLabelledby: string;\r\n\t/**\r\n\t * **Optional**: explicit height for the vertical tab list container; accepts any\r\n\t * valid CSS height value.\r\n\t */\r\n\t@Input() height: string;\r\n\t/**\r\n\t * When `true`, renders the tabs skeleton loading state.\r\n\t */\r\n\t@Input() skeleton = false;\r\n\r\n\t/**\r\n\t * Maintains a `QueryList` of the `Tab` elements and updates if `Tab`s are added or removed.\r\n\t */\r\n\t@ContentChildren(Tab, { descendants: false }) tabs: QueryList<Tab>;\r\n\t/**\r\n\t * Content child of the projected header component.\r\n\t */\r\n\t@ContentChild(TabHeadersVertical) tabHeaders;\r\n\r\n\tngAfterContentInit() {\r\n\t\tif (this.tabHeaders) {\r\n\t\t\tthis.tabHeaders.cacheActive = this.cacheActive;\r\n\t\t}\r\n\t\tthis.tabs.forEach(tab => {\r\n\t\t\ttab.tabIndex = this.isNavigation ? null : 0;\r\n\t\t});\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (this.tabHeaders && changes.cacheActive) {\r\n\t\t\tthis.tabHeaders.cacheActive = this.cacheActive;\r\n\t\t}\r\n\t\tif (this.tabs && changes.isNavigation) {\r\n\t\t\tthis.tabs.forEach(tab => {\r\n\t\t\t\ttab.tabIndex = this.isNavigation ? null : 0;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\thasTabHeaders() {\r\n\t\treturn this.tabs.length > 0;\r\n\t}\r\n}\r\n","import {\r\n\tComponent,\r\n\tHostBinding,\r\n\tInput\r\n} from \"@angular/core\";\r\n\r\n/**\r\n * `TabsVerticalGrouped` is the vertical-orientation counterpart of the\r\n * \"tab-header-group\" composition pattern. It is a thin wrapper that\r\n * supplies the layout context (`cds--css-grid` and an explicit height).\r\n *\r\n * ```html\r\n * <cds-tabs-vertical-grouped height=\"400px\">\r\n *   <cds-tab-header-group-vertical>\r\n *     <cds-tab-header [paneReference]=\"content1\">Dashboard</cds-tab-header>\r\n *     <cds-tab-header [paneReference]=\"content2\"\r\n *       secondaryLabel=\"(21/25)\" [dismissable]=\"true\">\r\n *       Monitoring\r\n *     </cds-tab-header>\r\n *   </cds-tab-header-group-vertical>\r\n *\r\n *   <cds-tab #content1>Tab Content 1</cds-tab>\r\n *   <cds-tab #content2>Tab Content 2</cds-tab>\r\n * </cds-tabs-vertical-grouped>\r\n * ```\r\n */\r\n@Component({\r\n\tselector: \"cds-tabs-vertical-grouped, ibm-tabs-vertical-grouped\",\r\n\ttemplate: `<ng-content></ng-content>`\r\n})\r\nexport class TabsVerticalGrouped {\r\n\t/**\r\n\t * **Optional**: explicit height for the vertical tab list container. Accepts\r\n\t * any valid CSS height value.\r\n\t */\r\n\t@Input() height: string;\r\n\r\n\t@HostBinding(\"class.cds--css-grid\") cssGridClass = true;\r\n\r\n\t@HostBinding(\"style.height\") get hostHeight() {\r\n\t\treturn this.height || null;\r\n\t}\r\n}\r\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { UtilsModule } from \"carbon-components-angular/utils\";\nimport { I18nModule } from \"carbon-components-angular/i18n\";\nimport { TooltipModule } from \"carbon-components-angular/tooltip\";\n\nimport { TabSkeleton } from \"./tab-skeleton.component\";\nimport { BaseTabHeader } from \"./base-tab-header.component\";\nimport { Tabs } from \"./tabs.component\";\nimport { TabsVertical } from \"./tabs-vertical.component\";\nimport { TabsVerticalGrouped } from \"./tabs-vertical-grouped.component\";\nimport { Tab } from \"./tab.component\";\nimport { IconTab } from \"./icon-tab.component\";\nimport { TabHeader } from \"./tab-header.directive\";\nimport { TabHeaderComponent } from \"./tab-header.component\";\nimport { TabHeaders } from \"./tab-headers.component\";\nimport { TabHeadersVertical } from \"./tab-headers-vertical.component\";\nimport { TabHeaderGroup } from \"./tab-header-group.component\";\nimport { TabHeaderGroupVertical } from \"./tab-header-group-vertical.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tBaseTabHeader,\n\t\tTabs,\n\t\tTabsVertical,\n\t\tTabsVerticalGrouped,\n\t\tTab,\n\t\tIconTab,\n\t\tTabHeader,\n\t\tTabHeaderComponent,\n\t\tTabHeaders,\n\t\tTabHeadersVertical,\n\t\tTabHeaderGroup,\n\t\tTabHeaderGroupVertical,\n\t\tTabSkeleton\n\t],\n\texports: [\n\t\tTabs,\n\t\tTabsVertical,\n\t\tTabsVerticalGrouped,\n\t\tTab,\n\t\tIconTab,\n\t\tTabHeader,\n\t\tTabHeaderComponent,\n\t\tTabHeaders,\n\t\tTabHeadersVertical,\n\t\tTabHeaderGroup,\n\t\tTabHeaderGroupVertical,\n\t\tTabSkeleton\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tUtilsModule,\n\t\tI18nModule,\n\t\tTooltipModule\n\t]\n})\nexport class TabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["VERTICAL_TAB_HEIGHT","i1","i2","i4","i2.TabHeaders","i3.TabSkeleton","i2.TabHeadersVertical"],"mappings":"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"}