@skyux/tabs 5.0.0-beta.2 → 5.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/bundles/skyux-tabs.umd.js +102 -84
  2. package/bundles/skyux-tabs.umd.js.map +1 -1
  3. package/documentation.json +220 -195
  4. package/esm2015/modules/sectioned-form/sectioned-form-section.component.js +3 -3
  5. package/esm2015/modules/sectioned-form/sectioned-form.component.js +4 -4
  6. package/esm2015/modules/sectioned-form/sectioned-form.module.js +4 -4
  7. package/esm2015/modules/sectioned-form/sectioned-form.service.js +3 -3
  8. package/esm2015/modules/shared/sky-tabs-resources.module.js +4 -4
  9. package/esm2015/modules/tabs/tab-button.component.js +3 -3
  10. package/esm2015/modules/tabs/tab.component.js +3 -3
  11. package/esm2015/modules/tabs/tabs.module.js +4 -4
  12. package/esm2015/modules/tabs/tabset-adapter.service.js +3 -3
  13. package/esm2015/modules/tabs/tabset-nav-button.component.js +3 -3
  14. package/esm2015/modules/tabs/tabset-permalink.service.js +3 -3
  15. package/esm2015/modules/tabs/tabset.component.js +3 -3
  16. package/esm2015/modules/tabs/tabset.service.js +3 -3
  17. package/esm2015/modules/vertical-tabset/vertical-tab-media-query.service.js +3 -3
  18. package/esm2015/modules/vertical-tabset/vertical-tab.component.js +6 -8
  19. package/esm2015/modules/vertical-tabset/vertical-tabset-adapter.service.js +7 -4
  20. package/esm2015/modules/vertical-tabset/vertical-tabset-group.component.js +4 -4
  21. package/esm2015/modules/vertical-tabset/vertical-tabset.component.js +24 -12
  22. package/esm2015/modules/vertical-tabset/vertical-tabset.module.js +11 -5
  23. package/esm2015/modules/vertical-tabset/vertical-tabset.service.js +3 -3
  24. package/fesm2015/skyux-tabs.js +92 -74
  25. package/fesm2015/skyux-tabs.js.map +1 -1
  26. package/modules/vertical-tabset/vertical-tabset-adapter.service.d.ts +1 -0
  27. package/modules/vertical-tabset/vertical-tabset.component.d.ts +4 -1
  28. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-tabs.umd.js","sources":["../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.service.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.component.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.component.html","../../../projects/tabs/src/modules/vertical-tabset/vertical-tab-media-query.service.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset-adapter.service.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tab.component.html","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.service.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form-section.component.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form-section.component.html","../../../projects/tabs/src/modules/shared/sky-tabs-resources.module.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.html","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset-group.component.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset-group.component.html","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.module.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.module.ts","../../../projects/tabs/src/modules/tabs/tab-button.component.ts","../../../projects/tabs/src/modules/tabs/tab-button.component.html","../../../projects/tabs/src/modules/tabs/tabset-permalink.service.ts","../../../projects/tabs/src/modules/tabs/tabset.service.ts","../../../projects/tabs/src/modules/tabs/tab.component.ts","../../../projects/tabs/src/modules/tabs/tab.component.html","../../../projects/tabs/src/modules/tabs/tabset-nav-button.component.ts","../../../projects/tabs/src/modules/tabs/tabset-nav-button.component.html","../../../projects/tabs/src/modules/tabs/tabset-adapter.service.ts","../../../projects/tabs/src/modules/tabs/tabset.component.ts","../../../projects/tabs/src/modules/tabs/tabset.component.html","../../../projects/tabs/src/modules/tabs/tabs.module.ts","../../../projects/tabs/src/skyux-tabs.ts"],"sourcesContent":["import {\n ElementRef,\n Injectable\n} from '@angular/core';\n\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryService\n} from '@skyux/core';\n\nimport {\n BehaviorSubject,\n Subject\n} from 'rxjs';\n\nimport {\n SkyVerticalTabComponent\n} from './vertical-tab.component';\n\nexport const VISIBLE_STATE = 'shown';\nexport const HIDDEN_STATE = 'void';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyVerticalTabsetService {\n\n public activeIndex: number = undefined;\n\n public animationContentVisibleState: string;\n\n public animationTabsVisibleState: string;\n\n public set content(value: ElementRef) {\n this._content = value;\n }\n\n public hidingTabs = new BehaviorSubject(false);\n\n public indexChanged: BehaviorSubject<number> = new BehaviorSubject(undefined);\n\n public maintainTabContent: boolean = false;\n\n public showingTabs = new BehaviorSubject(false);\n\n public switchingMobile: Subject<boolean> = new Subject();\n\n public tabs: Array<SkyVerticalTabComponent> = [];\n\n public tabAdded: Subject<SkyVerticalTabComponent> = new Subject();\n\n public tabClicked: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\n\n private _content: ElementRef;\n\n private _contentAdded: boolean = false;\n\n private _tabsVisible: boolean = false;\n\n private _isMobile: boolean = false;\n\n public constructor(private mediaQueryService: SkyMediaQueryService) {\n this.mediaQueryService.subscribe(breakpoint => {\n const nowMobile = breakpoint === SkyMediaBreakpoints.xs;\n\n if (nowMobile && !this._isMobile) {\n // switching to mobile\n this.switchingMobile.next(true);\n\n if (!this._tabsVisible) {\n this.hidingTabs.next(true);\n }\n\n } else if (!nowMobile && this._isMobile) {\n // switching to widescreen\n this.switchingMobile.next(false);\n\n if (!this._tabsVisible) {\n this.showingTabs.next(true);\n }\n }\n\n this._isMobile = nowMobile;\n });\n }\n\n public addTab(tab: SkyVerticalTabComponent) {\n const index = this.tabs.length;\n tab.index = index;\n\n this.tabs.push(tab);\n\n if (tab.active) {\n this.activateTab(tab);\n }\n\n this.tabAdded.next(tab);\n }\n\n public destroyTab(tab: SkyVerticalTabComponent): void {\n let tabIndex = this.tabs.indexOf(tab);\n if (tabIndex === -1) {\n return;\n }\n\n if (\n this.maintainTabContent &&\n tab.contentRendered &&\n /* istanbul ignore next */\n this._content?.nativeElement.contains(tab.tabContent.nativeElement)\n ) {\n this._content.nativeElement.removeChild(tab.tabContent.nativeElement);\n }\n\n this.tabs.splice(tabIndex, 1);\n // update tab indices\n this.tabs.forEach((tabItem, index) => tabItem.index = index);\n\n if (tab.active) {\n if (!this.maintainTabContent) {\n this.destroyContent();\n }\n // Try selecting the next tab first, and if there's no next tab then\n // try selecting the previous one.\n let newActiveTab = this.tabs[tabIndex] || this.tabs[tabIndex - 1];\n /*istanbul ignore else */\n if (newActiveTab) {\n newActiveTab.activateTab();\n }\n }\n }\n\n public activateTab(tab: SkyVerticalTabComponent) {\n\n // unactivate active tab\n let activeTab = this.tabs.find(t => t.index === this.activeIndex);\n if (activeTab && activeTab.index !== tab.index) {\n activeTab.active = false;\n activeTab.tabDeactivated();\n }\n\n this.activeIndex = tab.index;\n this.tabClicked.next(true);\n this.updateTabClicked();\n }\n\n public activeTab(): SkyVerticalTabComponent {\n return this.tabs.find(t => t.index === this.activeIndex);\n }\n\n public isMobile() {\n return this._isMobile;\n }\n\n public updateContent() {\n if (!this.maintainTabContent) {\n if (!this._contentAdded && this.contentVisible()) {\n // content needs to be moved\n this.moveContent();\n\n } else if (this._contentAdded && !this.contentVisible()) {\n // content hidden\n this._contentAdded = false;\n }\n } else {\n this.tabs.forEach((tab) => {\n if (!tab.contentRendered) {\n this._content.nativeElement.appendChild(tab.tabContent.nativeElement);\n tab.contentRendered = true;\n }\n });\n }\n }\n\n public tabsVisible() {\n return !this.isMobile() || this._tabsVisible;\n }\n\n public contentVisible() {\n return !this.isMobile() || !this._tabsVisible;\n }\n\n public showTabs() {\n this._tabsVisible = true;\n this._contentAdded = false;\n this.animationTabsVisibleState = VISIBLE_STATE;\n this.animationContentVisibleState = HIDDEN_STATE;\n this.showingTabs.next(true);\n }\n\n private destroyContent(): void {\n if (this._content) {\n this._content.nativeElement.innerHTML = '';\n }\n this.content = undefined;\n }\n\n private moveContent() {\n /* istanbul ignore else */\n if (this._content && !this._contentAdded) {\n let activeTab = this.activeTab();\n let activeContent = activeTab ? activeTab.tabContent : undefined;\n\n if (activeContent && activeContent.nativeElement) {\n this._content.nativeElement.appendChild(activeContent.nativeElement);\n activeTab.contentRendered = true;\n this._contentAdded = true;\n }\n }\n }\n\n private updateTabClicked() {\n this._contentAdded = false;\n\n if (this.isMobile()) {\n this._tabsVisible = false;\n this.animationContentVisibleState = VISIBLE_STATE;\n this.animationTabsVisibleState = HIDDEN_STATE;\n this.hidingTabs.next(true);\n }\n\n this.indexChanged.next(this.activeIndex);\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n ElementRef,\n ViewChild,\n EventEmitter,\n Output,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Input\n} from '@angular/core';\n\nimport {\n style,\n trigger,\n transition,\n animate\n} from '@angular/animations';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabsetService,\n HIDDEN_STATE,\n VISIBLE_STATE\n} from './../vertical-tabset/vertical-tabset.service';\n\n/**\n * Creates a container for the sectioned forms.\n */\n@Component({\n selector: 'sky-sectioned-form',\n templateUrl: './sectioned-form.component.html',\n styleUrls: ['./sectioned-form.component.scss'],\n providers: [SkyVerticalTabsetService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(-100%)'}),\n animate('150ms ease-in')\n ])\n ]\n ),\n trigger(\n 'contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(100%)'}),\n animate('150ms ease-in')\n ])\n ]\n )\n ]\n})\nexport class SkySectionedFormComponent implements OnInit, OnDestroy, AfterViewChecked {\n\n /**\n * Indicates whether the sectioned form loads section content during initialization so that it\n * displays content without moving around elements in the content container.\n * @default false\n */\n @Input()\n public maintainSectionContent: boolean = false;\n\n/**\n * Fires when the active tab changes and emits the index of the active\n * section. The index is based on the section's position when the form loads.\n */\n @Output()\n public indexChanged: EventEmitter<number> = new EventEmitter();\n\n public get ariaRole(): string {\n return this.isMobile ? undefined : 'tablist';\n }\n\n @ViewChild('skySectionSideContent')\n public content: ElementRef;\n\n private isMobile = false;\n private _ngUnsubscribe = new Subject();\n\n constructor(\n public tabService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef) {}\n\n public ngOnInit() {\n this.tabService.maintainTabContent = this.maintainSectionContent;\n\n this.tabService.indexChanged\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(index => {\n this.indexChanged.emit(index);\n this.changeRef.markForCheck();\n });\n\n this.tabService.switchingMobile\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.markForCheck();\n });\n\n if (this.tabService.isMobile()) {\n this.isMobile = true;\n this.tabService.animationContentVisibleState = VISIBLE_STATE;\n this.changeRef.markForCheck();\n }\n }\n\n public ngAfterViewChecked() {\n this.tabService.content = this.content;\n this.tabService.updateContent();\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n\n public tabsVisible() {\n this.changeRef.markForCheck();\n return this.tabService.tabsVisible();\n }\n\n public showTabs() {\n this.tabService.showTabs();\n this.changeRef.markForCheck();\n }\n}\n","<div\n aria-orientation=\"vertical\"\n class=\"sky-sectioned-form\"\n [attr.role]=\"ariaRole\"\n (window:resize)=\"tabService.updateContent()\"\n>\n <div\n *ngIf=\"maintainSectionContent || tabsVisible()\"\n class=\"sky-sectioned-form-tabs\"\n [ngClass]=\"{'sky-sectioned-form-tabs-hidden': !tabsVisible()}\"\n [@tabEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainSectionContent || tabService.contentVisible()\"\n class=\"sky-sectioned-form-content sky-padding-even-large\"\n [ngClass]=\"{'sky-sectioned-form-content-hidden': !tabService.contentVisible()}\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #skySectionSideContent\n >\n </div>\n</div>\n\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryListener\n} from '@skyux/core';\n\nimport {\n BehaviorSubject,\n Subscription\n} from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyVerticalTabMediaQueryService {\n\n public get current(): SkyMediaBreakpoints {\n return this._current;\n }\n\n private currentSubject = new BehaviorSubject<SkyMediaBreakpoints>(this.current);\n\n private _current = SkyMediaBreakpoints.xs;\n\n constructor() {\n this.currentSubject.next(this._current);\n }\n\n public subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.currentSubject.subscribe({\n next: (breakpoints: SkyMediaBreakpoints) => {\n listener(breakpoints);\n }\n });\n }\n\n public setBreakpointForWidth(width: number): void {\n let breakpoint: SkyMediaBreakpoints;\n\n if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.xs)) {\n breakpoint = SkyMediaBreakpoints.xs;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.sm)) {\n breakpoint = SkyMediaBreakpoints.sm;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.md)) {\n breakpoint = SkyMediaBreakpoints.md;\n } else {\n breakpoint = SkyMediaBreakpoints.lg;\n }\n\n this._current = breakpoint;\n this.currentSubject.next(this._current);\n }\n\n public isWidthWithinBreakpiont(width: number, breakpoint: SkyMediaBreakpoints): boolean {\n const xsBreakpointMaxPixels = 767;\n const smBreakpointMinPixels = 768;\n const smBreakpointMaxPixels = 991;\n const mdBreakpointMinPixels = 992;\n const mdBreakpointMaxPixels = 1199;\n const lgBreakpointMinPixels = 1200;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n return (width <= xsBreakpointMaxPixels);\n }\n case SkyMediaBreakpoints.sm: {\n return (width >= smBreakpointMinPixels && width <= smBreakpointMaxPixels);\n }\n case SkyMediaBreakpoints.md: {\n return (width >= mdBreakpointMinPixels && width <= mdBreakpointMaxPixels);\n }\n default: {\n return (width >= lgBreakpointMinPixels);\n }\n }\n }\n\n public destroy(): void {\n this.currentSubject.complete();\n }\n}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2\n} from '@angular/core';\n\nimport {\n SkyMediaBreakpoints\n} from '@skyux/core';\n\n@Injectable()\nexport class SkyVerticalTabsetAdapterService {\n private renderer: Renderer2;\n\n constructor(\n private rendererFactory: RendererFactory2\n ) {\n this.renderer = this.rendererFactory.createRenderer(undefined, undefined);\n }\n\n public getWidth(elementRef: ElementRef): number {\n return elementRef.nativeElement.clientWidth;\n }\n\n public setResponsiveClass(element: ElementRef, breakpoint: SkyMediaBreakpoints): void {\n const nativeEl: HTMLElement = element.nativeElement;\n\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-xs');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-sm');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-md');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-lg');\n\n let newClass: string;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n newClass = 'sky-responsive-container-xs';\n break;\n }\n case SkyMediaBreakpoints.sm: {\n newClass = 'sky-responsive-container-sm';\n break;\n }\n case SkyMediaBreakpoints.md: {\n newClass = 'sky-responsive-container-md';\n break;\n }\n default: {\n newClass = 'sky-responsive-container-lg';\n break;\n }\n }\n\n this.renderer.addClass(nativeEl, newClass);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\n\nimport {\n SkyMediaQueryService\n} from '@skyux/core';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabMediaQueryService\n} from './vertical-tab-media-query.service';\n\nimport {\n SkyVerticalTabsetService\n} from './vertical-tabset.service';\n\nimport {\n SkyVerticalTabsetAdapterService\n} from './vertical-tabset-adapter.service';\n\n@Component({\n selector: 'sky-vertical-tab',\n templateUrl: './vertical-tab.component.html',\n styleUrls: ['./vertical-tab.component.scss'],\n providers: [\n SkyVerticalTabMediaQueryService,\n SkyVerticalTabsetAdapterService,\n { provide: SkyMediaQueryService, useExisting: SkyVerticalTabMediaQueryService }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkyVerticalTabComponent implements OnInit, OnDestroy {\n /**\n * Indicates whether the tab is active when the tabset loads.\n */\n @Input()\n public active: boolean = false;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that contains\n * the content that the vertical tab displays, which corresponds to the `tabId`. This property\n * [supports accessibility rules for disclosures](https://www.w3.org/TR/wai-aria-practices-1.1/#disclosure).\n */\n @Input()\n public get ariaControls(): string {\n return this.isMobile ? undefined : this._ariaControls;\n }\n public set ariaControls(value: string) {\n this._ariaControls = value;\n }\n\n /**\n * @internal\n */\n @Input()\n public ariaInvalid: boolean;\n\n /**\n * @internal\n */\n @Input()\n public ariaRequired: boolean;\n\n /**\n * Specifies an ARIA role for the vertical tab\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * by indicating how the tab functions and what it controls. For information about how\n * an ARIA role indicates what an item represents on a web page, see the\n * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).\n * @default \"tab\"\n */\n @Input()\n public get ariaRole(): string {\n if (this.isMobile) {\n return undefined;\n }\n return this._ariaRole || 'tab';\n }\n public set ariaRole(value: string) {\n this._ariaRole = value;\n }\n\n /**\n * Indicates whether to disable the tab.\n */\n @Input()\n public disabled: boolean = false;\n\n /**\n * Indicates whether to indicate that the tab has an error.\n * @internal This is used for sectioned forms and is not currently a supported design for pure vertical tabs.\n */\n @Input()\n public errorIndicator: boolean = false;\n\n /**\n * Displays an item count alongside the tab header to indicate how many list items the tab contains.\n */\n @Input()\n public tabHeaderCount: number;\n\n /**\n * Specifies the tab header.\n * @required\n */\n @Input()\n public tabHeading: string;\n\n /**\n * Indicates whether to display a chevron-right icon in the righthand side of the tab.\n * @internal\n */\n @Input()\n public get showTabRightArrow() {\n return this._showTabRightArrow && this.tabsetService.isMobile();\n }\n\n public set showTabRightArrow(value: boolean) {\n this._showTabRightArrow = value;\n }\n\n /**\n * Specifies an ID for the tab.\n */\n @Input()\n public tabId: string;\n\n public set contentRendered(value: boolean) {\n this._contentRendered = value;\n\n /* istanbul ignore else */\n if (this._contentRendered) {\n // NOTE: Wrapped in a setTimeout here to ensure that everything has completed rendering.\n setTimeout(() => {\n this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));\n });\n }\n }\n\n public get contentRendered(): boolean {\n return this._contentRendered;\n }\n\n public index: number;\n\n @ViewChild('tabContentWrapper')\n public tabContent: ElementRef;\n\n private isMobile = false;\n\n private _ariaControls: string;\n\n private _ariaRole: string;\n\n private _contentRendered: boolean = false;\n\n private _mobileSubscription = new Subject();\n\n private _ngUnsubscribe = new Subject();\n\n private _showTabRightArrow: boolean = false;\n\n constructor(\n private adapterService: SkyVerticalTabsetAdapterService,\n private changeRef: ChangeDetectorRef,\n private tabsetService: SkyVerticalTabsetService,\n private verticalTabMediaQueryService: SkyVerticalTabMediaQueryService\n ) {}\n\n public ngOnInit(): void {\n this.isMobile = this.tabsetService.isMobile();\n this.changeRef.markForCheck();\n\n this.tabsetService.switchingMobile\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.markForCheck();\n });\n\n // Update the breakpoint and responsive class here just as a sanity check since we can not\n // watch for element resizing.\n this.tabsetService.indexChanged\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((index) => {\n if (this.index === index && this.contentRendered) {\n this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));\n }\n });\n\n this.tabsetService.addTab(this);\n }\n\n public ngOnDestroy(): void {\n this._mobileSubscription.unsubscribe();\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n this.tabsetService.destroyTab(this);\n }\n\n public tabIndex(): number {\n if (!this.disabled) {\n return 0;\n } else {\n return -1;\n }\n }\n\n public activateTab(): void {\n if (!this.disabled) {\n this.active = true;\n this.tabsetService.activateTab(this);\n\n this.changeRef.markForCheck();\n }\n }\n\n @HostListener('window:resize')\n public onWindowResize(): void {\n this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));\n }\n\n public tabDeactivated(): void {\n this.changeRef.markForCheck();\n }\n\n private updateBreakpointAndResponsiveClass(width: number): void {\n this.verticalTabMediaQueryService.setBreakpointForWidth(width);\n\n const newBreakpiont = this.verticalTabMediaQueryService.current;\n\n this.adapterService.setResponsiveClass(this.tabContent, newBreakpiont);\n }\n}\n","<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired ? ariaRequired : null\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup.enter)=\"activateTab()\">\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\">\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n\n <sky-icon\n *ngIf=\"showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div\n #tabContentWrapper\n>\n <div\n class=\"sky-vertical-tab-content-pane\"\n [ngClass]=\"{'sky-vertical-tab-hidden': !active}\"\n >\n\n <ng-content></ng-content>\n\n <div>\n\n</div>\n\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n BehaviorSubject\n} from 'rxjs';\n\n@Injectable()\nexport class SkySectionedFormService {\n/**\n * @internal\n */\n public invalidChange: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\n/**\n * @internal\n */\n public requiredChange: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\n\n /**\n * Sets the current section's invalid state based on the `isInvalid` parameter.\n * This method is used within a `sky-sectioned-form-section` element.\n */\n public invalidFieldChanged(isInvalid: boolean): void {\n this.invalidChange.next(isInvalid);\n }\n\n /**\n * Sets the current section's required state based on the `isRequired` parameter.\n * This method is used within a `sky-sectioned-form-section` element.\n */\n public requiredFieldChanged(isRequired: boolean): void {\n this.requiredChange.next(isRequired);\n }\n}\n","import {\n Component,\n Input,\n ViewChild,\n OnInit,\n OnDestroy,\n ChangeDetectorRef\n} from '@angular/core';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabComponent\n} from './../vertical-tabset/vertical-tab.component';\nimport {\n SkySectionedFormService\n} from './sectioned-form.service';\nimport {\n SkyVerticalTabsetService\n} from '../vertical-tabset/vertical-tabset.service';\n\nlet nextId = 0;\n\n/**\n * Creates an individual form to display as a section within the sectioned form.\n */\n@Component({\n selector: 'sky-sectioned-form-section',\n templateUrl: './sectioned-form-section.component.html',\n providers: [SkySectionedFormService],\n styleUrls: ['./sectioned-form-section.component.scss']\n})\nexport class SkySectionedFormSectionComponent implements OnInit, OnDestroy {\n public sectionTabId = `sky-sectioned-form-tab-${++nextId}`;\n public sectionContentId = `sky-sectioned-form-section-${++nextId}`;\n\n/**\n * Specifies the section header.\n * @required\n */\n @Input()\n public heading: string;\n\n/**\n * Indicates the number of items within the section and displays a\n * counter alongside the section header.\n */\n @Input()\n public itemCount: number;\n\n/**\n * Indicates whether the section is active when the form loads.\n * @default false\n */\n @Input()\n public active: boolean;\n\n public get ariaRole(): string {\n return this.isMobile ? undefined : 'tabpanel';\n }\n\n public get ariaLabelledby() {\n return this.isMobile ? undefined : this.sectionTabId;\n }\n\n public fieldRequired: boolean;\n public fieldInvalid: boolean;\n\n @ViewChild(SkyVerticalTabComponent)\n public tab: SkyVerticalTabComponent;\n\n private isMobile = false;\n private _ngUnsubscribe = new Subject();\n\n constructor(\n private sectionedFormService: SkySectionedFormService,\n private tabsetService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef\n ) {}\n\n public ngOnInit() {\n this.isMobile = this.tabsetService.isMobile();\n this.changeRef.detectChanges();\n\n this.tabsetService.switchingMobile\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.detectChanges();\n });\n\n this.sectionedFormService.requiredChange\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((required: boolean) => this.fieldRequired = required);\n\n this.sectionedFormService.invalidChange\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((invalid: boolean) => this.fieldInvalid = invalid);\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n}\n","<sky-vertical-tab\n [active]=\"active\"\n [ariaControls]=\"sectionContentId\"\n [ariaInvalid]=\"fieldInvalid\"\n [ariaRequired]=\"fieldRequired\"\n [errorIndicator]=\"fieldInvalid\"\n [ngClass]=\"{\n 'sky-tab-field-required': fieldRequired\n }\"\n [showTabRightArrow]=\"true\"\n [tabHeaderCount]=\"itemCount\"\n [tabHeading]=\"heading\"\n [tabId]=\"sectionTabId\">\n <div\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.role]=\"ariaRole\"\n [id]=\"sectionContentId\"\n #tabContent>\n <ng-content></ng-content>\n </div>\n</sky-vertical-tab>\n","/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module modules/shared/sky-tabs' schematic.\n * To update this file, simply rerun the command.\n */\n\nimport { NgModule } from '@angular/core';\nimport {\n getLibStringForLocale,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n SKY_LIB_RESOURCES_PROVIDERS\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\"skyux_tab_add\":{\"message\":\"Add tab\"},\"skyux_tab_close\":{\"message\":\"Close {0} tab\"},\"skyux_tabs_navigator_next\":{\"message\":\"Next\"},\"skyux_tabs_navigator_previous\":{\"message\":\"Previous\"},\"skyux_tab_open\":{\"message\":\"Open tab\"},\"skyux_vertical_tabs_show_tabs_text\":{\"message\":\"Tab list\"}},\n};\n\nexport class SkyTabsResourcesProvider implements SkyLibResourcesProvider {\n public getString(localeInfo: SkyAppLocaleInfo, name: string): string {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [{\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyTabsResourcesProvider,\n multi: true\n }]\n})\nexport class SkyTabsResourcesModule { }\n","import {\n Component,\n ElementRef,\n ViewChild,\n Input,\n OnInit,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n AfterViewChecked,\n ChangeDetectorRef,\n OnDestroy\n} from '@angular/core';\n\nimport {\n style,\n trigger,\n transition,\n animate\n} from '@angular/animations';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n take,\n takeUntil\n} from 'rxjs/operators';\n\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport {\n SkyVerticalTabsetService,\n HIDDEN_STATE,\n VISIBLE_STATE\n} from './vertical-tabset.service';\n\n@Component({\n selector: 'sky-vertical-tabset',\n templateUrl: './vertical-tabset.component.html',\n styleUrls: ['./vertical-tabset.component.scss'],\n providers: [SkyVerticalTabsetService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabGroupEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(-100%)'}),\n animate('150ms ease-in')\n ])\n ]\n ),\n trigger(\n 'contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(100%)'}),\n animate('150ms ease-in')\n ])\n ]\n )\n ]\n})\nexport class SkyVerticalTabsetComponent implements OnInit, AfterViewChecked, OnDestroy {\n\n /**\n * Specifies the text to display on the show tabs button on mobile devices.\n */\n @Input()\n public showTabsText: string;\n\n /**\n * Specifies an ARIA role for the vertical tabset\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * by indicating how the tabset functions and what it controls. For information about how\n * an ARIA role indicates what an item represents on a web page, see the\n * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).\n * @default \"tablist\"\n */\n @Input()\n public get ariaRole(): string {\n if (this.isMobile) {\n return undefined;\n }\n return this._ariaRole || 'tablist';\n }\n public set ariaRole(value: string) {\n this._ariaRole = value;\n }\n\n /**\n * Indicates whether the vertical tabset loads tab content during initialization so that it\n * displays content without moving around elements in the content container.\n * @default 'false'\n */\n @Input()\n public maintainTabContent: boolean = false;\n\n /**\n * Fires when the active tab changes. Emits the index of the active tab. The\n * index is based on the tab's position when it loads.\n */\n @Output()\n public activeChange = new EventEmitter<number>();\n\n @ViewChild('contentWrapper')\n public tabGroups: ElementRef;\n\n @ViewChild('skySideContent')\n public content: ElementRef;\n\n private isMobile = false;\n private _ngUnsubscribe = new Subject();\n private _ariaRole: string;\n\n constructor(\n public tabService: SkyVerticalTabsetService,\n private resources: SkyLibResourcesService,\n private changeRef: ChangeDetectorRef) {}\n\n public ngOnInit() {\n this.tabService.maintainTabContent = this.maintainTabContent;\n\n this.tabService.indexChanged\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((index: any) => {\n this.activeChange.emit(index);\n this.changeRef.markForCheck();\n });\n\n this.tabService.switchingMobile\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.markForCheck();\n });\n\n if (this.tabService.isMobile()) {\n this.isMobile = true;\n this.tabService.animationContentVisibleState = VISIBLE_STATE;\n this.changeRef.markForCheck();\n }\n if (!this.showTabsText) {\n this.resources.getString('skyux_vertical_tabs_show_tabs_text')\n .pipe(take(1))\n .subscribe(resource => {\n /* sanity check */\n /* istanbul ignore else */\n if (!this.showTabsText) {\n this.showTabsText = resource;\n }\n });\n }\n }\n\n public ngAfterViewChecked() {\n this.tabService.content = this.content;\n this.tabService.updateContent();\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n}\n"," <div class=\"sky-vertical-tabset\" (window:resize)=\"tabService.updateContent()\">\n <div\n *ngIf=\"maintainTabContent || tabService.tabsVisible()\"\n #contentWrapper\n class=\"sky-vertical-tabset-group-container\"\n [ngClass]=\"{'sky-vertical-tabset-hidden': !tabService.tabsVisible()}\"\n [attr.role]=\"ariaRole\"\n [@tabGroupEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainTabContent || tabService.contentVisible()\"\n class=\"sky-vertical-tabset-content\"\n [ngClass]=\"{'sky-vertical-tabset-content-hidden': !tabService.contentVisible()}\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n >\n <div #skySideContent></div>\n <button\n *ngIf=\"!tabService.tabsVisible()\"\n (click)=\"tabService.showTabs()\"\n class=\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\"\n >\n <sky-icon icon=\"chevron-left\"></sky-icon>\n {{ showTabsText }}\n </button>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Input,\n OnDestroy,\n OnInit,\n QueryList\n} from '@angular/core';\n\nimport {\n animate,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabComponent\n} from './vertical-tab.component';\n\nimport {\n SkyVerticalTabsetService\n} from './vertical-tabset.service';\n\n@Component({\n selector: 'sky-vertical-tabset-group',\n templateUrl: './vertical-tabset-group.component.html',\n styleUrls: ['./vertical-tabset-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabSlide', [\n transition(':enter', [\n style({\n height: '0',\n visibility: 'hidden'\n }),\n animate('150ms ease-in', style({\n height: '*',\n visibility: 'visible'\n }))\n ]),\n transition(':leave', [\n style({\n height: '*',\n visibility: 'visible'\n }),\n animate('150ms ease-in', style({\n height: '0',\n visibility: 'hidden'\n }))\n ])\n ])\n ]\n})\nexport class SkyVerticalTabsetGroupComponent implements OnInit, OnDestroy {\n\n /**\n * Indicates whether to disable the ability to expand and collapse the group.\n * @default \"false\"\n */\n @Input()\n public disabled: boolean;\n\n /**\n * Specifies the header for the collapsible group of tabs.\n */\n @Input()\n public groupHeading: string;\n\n /**\n * Indicates whether the collapsible group is expanded.\n * @default \"false\"\n */\n @Input()\n public set open(value: boolean) {\n this._open = value;\n }\n\n public get open(): boolean {\n return !this.disabled && this._open;\n }\n\n @ContentChildren(SkyVerticalTabComponent)\n private tabs: QueryList<SkyVerticalTabComponent>;\n\n private ngUnsubscribe = new Subject();\n\n private openBeforeTabsHidden: boolean = false;\n\n private _open: boolean = false;\n\n constructor(\n private tabService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef\n ) {}\n\n public ngOnInit(): void {\n this.tabService.hidingTabs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.tabsHidden);\n\n this.tabService.showingTabs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.tabsShown);\n\n this.tabService.tabClicked\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.tabClicked);\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public toggleMenuOpen(): void {\n if (!this.disabled) {\n this.open = !this.open;\n }\n\n this.changeRef.markForCheck();\n }\n\n public subMenuOpen(): boolean {\n return this.tabs && (this.tabs.find(t => t.active) !== undefined);\n }\n\n public tabClicked = () => {\n this.changeRef.markForCheck();\n }\n\n public tabsHidden = () => {\n // this fixes an animation bug with ngIf when the parent component goes from visible to hidden\n this.openBeforeTabsHidden = this.open;\n this.open = false;\n this.changeRef.markForCheck();\n }\n\n public tabsShown = () => {\n this.open = this.openBeforeTabsHidden;\n this.changeRef.markForCheck();\n }\n}\n","<div class=\"sky-vertical-tabset-group\">\n <div\n class=\"sky-vertical-tabset-group-header sky-padding-even-default\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-sub-open sky-emphasized': subMenuOpen(),\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n (click)=\"toggleMenuOpen()\"\n (keyup.enter)=\"toggleMenuOpen()\"\n [tabIndex]=\"-1\"\n >\n {{ groupHeading }}\n <sky-chevron *skyThemeIf=\"'default'\"\n class=\"sky-vertical-tabset-group-header-chevron\"\n [direction]=\"open ? 'up' : 'down'\"\n [disabled]=\"disabled\"\n (directionChange)=\"toggleMenuOpen()\"\n (keyup.enter)=\"$event.stopPropagation()\"\n >\n </sky-chevron>\n <ng-container *skyThemeIf=\"'modern'\">\n <button *ngIf=\"!open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-right\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </ng-container>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n *ngIf=\"open\"\n [@tabSlide]\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n NgModule\n} from '@angular/core';\n\nimport {\n CommonModule\n} from '@angular/common';\n\nimport {\n SkyChevronModule,\n SkyIconModule,\n SkyStatusIndicatorModule\n} from '@skyux/indicators';\n\nimport {\n SkyThemeModule\n} from '@skyux/theme';\n\nimport {\n SkyTabsResourcesModule\n} from '../shared/sky-tabs-resources.module';\n\nimport {\n SkyVerticalTabsetComponent\n} from './vertical-tabset.component';\n\nimport {\n SkyVerticalTabComponent\n} from './vertical-tab.component';\n\nimport {\n SkyVerticalTabsetGroupComponent\n} from './vertical-tabset-group.component';\n\n@NgModule({\n declarations: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent\n ],\n imports: [\n CommonModule,\n SkyChevronModule,\n SkyIconModule,\n SkyStatusIndicatorModule,\n SkyTabsResourcesModule,\n SkyThemeModule\n ],\n exports: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent\n ]\n})\nexport class SkyVerticalTabsetModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SkySectionedFormComponent } from './sectioned-form.component';\nimport { SkySectionedFormSectionComponent } from './sectioned-form-section.component';\nimport { SkyVerticalTabsetModule } from '../vertical-tabset/vertical-tabset.module';\nimport { SkyCheckboxModule } from '@skyux/forms';\n\n@NgModule({\n declarations: [\n SkySectionedFormComponent,\n SkySectionedFormSectionComponent\n ],\n imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyVerticalTabsetModule\n ],\n exports: [\n SkySectionedFormComponent,\n SkySectionedFormSectionComponent\n ]\n})\nexport class SkySectionedFormModule { }\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {\n SkyTabsetStyle\n} from './tabset-style';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-tab-button',\n templateUrl: './tab-button.component.html',\n styleUrls: ['./tab-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SkyTabButtonComponent {\n\n @Input()\n public active: boolean;\n\n @Input()\n public ariaControls: string;\n\n @Input()\n public buttonHref: string;\n\n @Input()\n public buttonId: string;\n\n @Input()\n public buttonText: string;\n\n @Input()\n public buttonTextCount: string;\n\n @Input()\n public closeable: boolean;\n\n @Input()\n public disabled: boolean;\n\n @Input()\n public tabStyle: SkyTabsetStyle;\n\n @Output()\n public buttonClick = new EventEmitter<void>();\n\n @Output()\n public closeClick = new EventEmitter<void>();\n\n public onButtonClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.buttonClick.emit();\n event.preventDefault();\n }\n }\n\n public onButtonEnterKeyDown(event: any): void {\n this.onButtonClick(event);\n }\n\n public onCloseClick(event: any): void {\n this.closeClick.emit();\n\n // Prevent the click event from bubbling up to the anchor tag;\n // otherwise it will trigger a page refresh.\n event.stopPropagation();\n event.preventDefault();\n }\n}\n","<div\n class=\"sky-btn-tab-wrapper\"\n [ngClass]=\"{\n 'sky-btn-tab-wrapper-selected': active,\n 'sky-btn-tab-wrapper-disabled': disabled\n }\"\n>\n <a\n class=\"sky-btn-tab\"\n role=\"tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"active\"\n [attr.href]=\"buttonHref\"\n [id]=\"buttonId\"\n [ngClass]=\"{\n 'sky-btn-tab-wizard': tabStyle === 'wizard',\n 'sky-btn-tab-selected': active,\n 'sky-btn-tab-disabled': disabled,\n 'sky-tab-btn-closeable': closeable\n }\"\n [tabindex]=\"disabled ? '-1' : '0'\"\n (click)=\"onButtonClick($event)\"\n (keydown.enter)=\"onButtonEnterKeyDown($event)\"\n >\n <span\n class=\"sky-tab-heading\"\n >\n {{ buttonText }}\n <span *ngIf=\"buttonTextCount !== undefined\"\n class=\"sky-tab-header-count\"\n >\n {{ buttonTextCount }}\n </span>\n </span>\n </a>\n\n <button *ngIf=\"closeable\"\n class=\"sky-btn-tab-close\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_close' | skyLibResources:buttonText\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-tab-close-disabled': disabled\n }\"\n (click)=\"onCloseClick($event)\"\n >\n <sky-icon\n icon=\"remove\"\n ></sky-icon>\n </button>\n</div>\n","import {\n Location\n} from '@angular/common';\n\nimport {\n Injectable,\n OnDestroy\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router\n} from '@angular/router';\n\nimport {\n Observable,\n Subject,\n SubscriptionLike\n} from 'rxjs';\n\n/**\n * @internal\n */\ninterface PermalinkParams {\n [_: string]: string;\n}\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetPermalinkService implements OnDestroy {\n\n public get popStateChange(): Observable<void> {\n return this._popStateChange.asObservable();\n }\n\n private _popStateChange = new Subject<void>();\n\n private subscription: SubscriptionLike;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private location: Location,\n private router: Router\n ) { }\n\n public ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n public init(): void {\n this.subscription = this.location.subscribe(() => {\n this._popStateChange.next();\n });\n }\n\n /**\n * Returns the value of a URL query param.\n */\n public getParam(name: string): string {\n return this.getParams()[name];\n }\n\n /**\n * Sets the value of a URL query param.\n */\n public setParam(name: string, value: string | null): void {\n const params = this.getParams();\n\n if (value === null) {\n delete params[name];\n } else {\n params[name] = value;\n }\n\n // Update the URL without triggering a navigation state change.\n // See: https://stackoverflow.com/a/46486677\n const url = this.router.createUrlTree(['.'], {\n relativeTo: this.activatedRoute,\n queryParams: params,\n queryParamsHandling: 'merge'\n }).toString();\n\n // Abort redirect if the current URL is equal to the new URL.\n if (this.location.isCurrentPathEqualTo(url)) {\n return;\n }\n\n this.location.go(url);\n }\n\n /**\n * Removes the provided query param from the URL.\n */\n public clearParam(name: string): void {\n /*tslint:disable-next-line:no-null-keyword*/\n this.setParam(name, null);\n }\n\n /**\n * Returns a relative URL that includes the provided query parameter. The value is inteded to be\n * used by an HTML anchor element.\n */\n public getParamHref(name: string, value: string): string | null {\n if (!name) {\n /*tslint:disable-next-line:no-null-keyword*/\n return null;\n }\n\n const params = this.getParams();\n params[name] = value;\n\n const baseUrl = this.location.path().split('?')[0];\n const paramString = Object.keys(params).map(k => `${k}=${params[k]}`).join('&');\n\n return this.location.prepareExternalUrl(`${baseUrl}?${paramString}`);\n }\n\n /**\n * Converts the provided string into a value that can be safely used in a URL.\n */\n public urlify(value: string): string {\n if (!value) {\n return '';\n }\n\n const sanitized = value.toLowerCase()\n\n // Remove special characters.\n .replace(/[\\_\\~\\`\\@\\!\\#\\$\\%\\^\\&\\*\\(\\)\\[\\]\\{\\}\\;\\:\\'\\/\\\\\\<\\>\\,\\.\\?\\=\\+\\|\"]/g, '')\n\n // Replace space characters with a dash.\n .replace(/\\s/g, '-')\n\n // Remove any double-dashes.\n .replace(/--/g, '-');\n\n return sanitized;\n }\n\n /**\n * Returns all query params that exist in the current URL.\n */\n private getParams(): PermalinkParams {\n const params: PermalinkParams = {};\n\n const path = this.location.path();\n if (path.indexOf('?') === -1) {\n return params;\n }\n\n const existingParamPairs = path.split('?')[1].split('&');\n existingParamPairs.forEach((pair) => {\n const fragments = pair.split('=');\n params[fragments[0]] = decodeURIComponent(fragments[1]);\n });\n\n return params;\n }\n\n}\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n BehaviorSubject,\n Observable,\n Subject\n} from 'rxjs';\n\nimport {\n SkyTabIndex\n} from './tab-index';\n\nimport {\n SkyTabsetActiveTabUnregisteredArgs\n} from './tabset-active-tab-unregistered-args';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetService {\n\n public get activeTabUnregistered(): Observable<SkyTabsetActiveTabUnregisteredArgs> {\n return this._activeTabUnregistered.asObservable();\n }\n\n public get activeTabIndex(): Observable<SkyTabIndex> {\n return this._activeTabIndex.asObservable();\n }\n\n public currentActiveTabIndex: SkyTabIndex = 0;\n\n private _activeTabIndex = new BehaviorSubject<SkyTabIndex>(0);\n\n private _activeTabUnregistered = new Subject<SkyTabsetActiveTabUnregisteredArgs>();\n\n private tabs: {\n tabIndex: SkyTabIndex;\n }[] = [];\n\n private tabCounter = 0;\n\n /**\n * Sets the active tab by its unique `tabIndex` property.\n */\n public setActiveTabIndex(value: SkyTabIndex, config = {\n emitChange: true\n }): void {\n if (\n value !== undefined &&\n !this.tabIndexesEqual(value, this.currentActiveTabIndex)\n ) {\n this.currentActiveTabIndex = value;\n /* istanbul ignore else */\n if (config.emitChange) {\n this._activeTabIndex.next(value);\n }\n }\n }\n\n /**\n * Registers a tab component.\n */\n public registerTab(tabIndex?: SkyTabIndex): SkyTabIndex {\n if (tabIndex === undefined) {\n tabIndex = this.tabCounter;\n this.tabCounter++;\n }\n\n this.tabs.push({ tabIndex });\n\n return tabIndex;\n }\n\n public updateTabIndex(currentTabIndex: SkyTabIndex, newTabIndex: SkyTabIndex): void {\n const found = this.tabs.find(tab => this.tabIndexesEqual(tab.tabIndex, currentTabIndex));\n found.tabIndex = newTabIndex;\n }\n\n /**\n * Unregisters a tab component.\n */\n public unregisterTab(tabIndex: SkyTabIndex): void {\n const index = this.tabs.findIndex(tab => this.tabIndexesEqual(tab.tabIndex, tabIndex));\n\n // Notify the tabset component when an active tab is unregistered.\n if (this.isTabIndexActive(this.tabs[index].tabIndex)) {\n this._activeTabUnregistered.next({\n arrayIndex: index\n });\n }\n\n this.tabs.splice(index, 1);\n }\n\n /**\n * Unregisters all tab components at once.\n */\n public unregisterAll(): void {\n this.tabs = [];\n }\n\n /**\n * Compares two tab indexes and returns `true` if they are equal.\n */\n public tabIndexesEqual(tabIndex1: SkyTabIndex, tabIndex2: SkyTabIndex): boolean {\n return (\n tabIndex1 === tabIndex2 ||\n +tabIndex1 === +tabIndex2\n );\n }\n\n /**\n * Verifies if a provided tab index is registered.\n */\n public isValidTabIndex(tabIndex: SkyTabIndex): boolean {\n return this.tabs.some(tab => this.tabIndexesEqual(tab.tabIndex, tabIndex));\n }\n\n /**\n * Activates the first registered tab.\n */\n public activateFirstTab(): SkyTabIndex | undefined {\n const firstTabIndex = this.tabs[0] && this.tabs[0].tabIndex;\n if (firstTabIndex !== undefined) {\n this.setActiveTabIndex(firstTabIndex);\n return firstTabIndex;\n }\n }\n\n /**\n * Activates the next registered tab, or the previous one based on a provided array index.\n */\n public activateNearestTab(arrayIndex: number): void {\n const newActiveTab = this.tabs[arrayIndex] || this.tabs[arrayIndex - 1];\n if (newActiveTab) {\n this.currentActiveTabIndex = newActiveTab.tabIndex;\n }\n }\n\n private isTabIndexActive(tabIndex: SkyTabIndex): boolean {\n return this.tabIndexesEqual(tabIndex, this.currentActiveTabIndex);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nimport {\n BehaviorSubject,\n Observable\n} from 'rxjs';\n\nimport {\n SkyTabIndex\n} from './tab-index';\n\nimport {\n SkyTabsetPermalinkService\n} from './tabset-permalink.service';\n\nimport {\n SkyTabsetService\n} from './tabset.service';\n\nlet nextId = 0;\n\n@Component({\n selector: 'sky-tab',\n templateUrl: './tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkyTabComponent implements OnChanges, OnDestroy {\n\n /**\n * Indicates whether the tab is active when the tabset loads. After initialization, the `active`\n * property on the tabset component should be used to set the active tab.\n * @default false\n */\n @Input()\n public set active(value: boolean) {\n if (\n value !== undefined &&\n value !== this._active\n ) {\n this._active = value;\n this._activeChange.next();\n }\n }\n\n public get active(): boolean {\n return this._active || false;\n }\n\n public get activeChange(): Observable<void> {\n return this._activeChange.asObservable();\n }\n\n /**\n * Indicates whether to disable the tab.\n * @default false\n */\n @Input()\n public disabled: boolean;\n\n /**\n * Specifies a custom query parameter value for the tab.\n * This works in conjunction with the tabset's `permalinkId` to distinguish\n * the tab's unique state in the URL by generating a query parameter that is\n * written as `?<queryParam>-active-tab=<sanitized-tab-heading`.\n * By default, the query parameter's value is parsed automatically from the tab's heading text.\n */\n @Input()\n public set permalinkValue(value: string) {\n this._permalinkValue = this.permalinkService.urlify(value);\n }\n\n public get permalinkValue(): string {\n return this._permalinkValue || this.permalinkService.urlify(this.tabHeading);\n }\n\n /**\n * Displays a counter beside the tab header.\n */\n @Input()\n public tabHeaderCount: string;\n\n /**\n * Specifies the tab header.\n * When using tabs as the main navigation on a page,\n * use [the Angular `Title` service](https://angular.io/docs/ts/latest/cookbook/set-document-title.html)\n * and [the SKY UX `title` configuration property](https://developer.blackbaud.com/skyux/learn/reference/configuration#app)\n * to reflect the tab header in the page title.\n * @required\n */\n @Input()\n public tabHeading: string;\n\n /**\n * Specifies a unique identifier for the tab.\n * If not defined, the identifier is set to the position of the tab on load, starting with `0`.\n */\n @Input()\n public set tabIndex(value: SkyTabIndex) {\n if (\n value !== this._tabIndex &&\n value !== undefined &&\n this._tabIndex !== undefined\n ) {\n this.tabsetService.updateTabIndex(this._tabIndex, value);\n this._tabIndexChange.next(value);\n }\n\n this._tabIndex = value;\n }\n\n public get tabIndex(): SkyTabIndex {\n return this._tabIndex;\n }\n\n /**\n * Fires when users click the button to close the tab.\n * The close button is added to the tab when you specify a listener for this event.\n */\n @Output()\n public close = new EventEmitter<void>();\n\n public get closeable(): boolean {\n return this.close.observers.length > 0;\n }\n\n /**\n * Alerts the tabset component when this component has changes that need to be reflected in the UI.\n */\n public get stateChange(): Observable<void> {\n return this._stateChange.asObservable();\n }\n\n public get tabIndexChange(): Observable<SkyTabIndex> {\n return this._tabIndexChange.asObservable();\n }\n\n public showContent: boolean = false;\n\n public tabButtonId: string;\n\n public tabPanelId: string;\n\n private _active: boolean;\n\n private _activeChange = new BehaviorSubject<void>(undefined);\n\n private _permalinkValue: string;\n\n private _stateChange = new BehaviorSubject<void>(undefined);\n\n private _tabIndex: SkyTabIndex;\n\n private _tabIndexChange = new BehaviorSubject<SkyTabIndex>(undefined);\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private permalinkService: SkyTabsetPermalinkService,\n private tabsetService: SkyTabsetService\n ) {\n const id = nextId++;\n this.tabPanelId = `sky-tab-${id}`;\n this.tabButtonId = `${this.tabPanelId}-nav-btn`;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.disabled && !changes.disabled.firstChange ||\n changes.tabHeading && !changes.tabHeading.firstChange ||\n changes.tabHeaderCount && !changes.tabHeaderCount.firstChange ||\n changes.permalinkValue && !changes.permalinkValue.firstChange\n ) {\n this._stateChange.next();\n }\n }\n\n public ngOnDestroy(): void {\n this._stateChange.complete();\n this.tabsetService.unregisterTab(this.tabIndex);\n }\n\n public init(): void {\n this._tabIndex = this.tabsetService.registerTab(this.tabIndex);\n }\n\n public activate(): void {\n this._active = true;\n this.showContent = true;\n this.changeDetector.markForCheck();\n }\n\n public deactivate(): void {\n this._active = false;\n this.showContent = false;\n this.changeDetector.markForCheck();\n }\n\n}\n","<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n>\n <ng-content></ng-content>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input\n} from '@angular/core';\n\nimport {\n SkyLibResourcesService\n} from '@skyux/i18n';\n\nimport {\n forkJoin\n} from 'rxjs';\n\nimport {\n take\n} from 'rxjs/operators';\n\nimport {\n SkyTabsetComponent\n} from './tabset.component';\n\nimport {\n SkyTabComponent\n} from './tab.component';\n\nconst buttonTypeNext = 'next';\n\nconst buttonTypePrevious = 'previous';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-tabset-nav-button',\n templateUrl: './tabset-nav-button.component.html'\n})\nexport class SkyTabsetNavButtonComponent implements AfterViewInit {\n\n @Input()\n public tabset: SkyTabsetComponent;\n\n @Input()\n public buttonType: string;\n\n @Input()\n public set buttonText(value: string) {\n this._buttonText = value;\n }\n\n public get buttonText(): string {\n if (this._buttonText) {\n return this._buttonText;\n }\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n return this.previousButtonText;\n case buttonTypeNext:\n return this.nextButtonText;\n /* istanbul ignore next */\n default:\n return '';\n }\n }\n\n public get disabled(): boolean {\n let tabToSelect: SkyTabComponent;\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n tabToSelect = this.previousTab;\n break;\n case buttonTypeNext:\n tabToSelect = this.nextTab;\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n\n return !tabToSelect || tabToSelect.disabled;\n }\n\n private get selectedTab(): SkyTabComponent {\n let selectedTab: SkyTabComponent;\n\n if (this.tabset && this.tabset.tabs) {\n selectedTab = this.tabset.tabs.find((tab) => tab.tabIndex === this.tabset.lastActiveTabIndex);\n }\n\n return selectedTab;\n }\n\n private get nextTab(): SkyTabComponent {\n let selectedTab = this.selectedTab;\n\n if (selectedTab) {\n let tabs = this.tabset.tabs.toArray();\n return tabs[tabs.indexOf(selectedTab) + 1];\n }\n\n return undefined;\n }\n\n private get previousTab(): SkyTabComponent {\n let selectedTab = this.selectedTab;\n\n if (selectedTab) {\n let tabs = this.tabset.tabs.toArray();\n return tabs[tabs.indexOf(selectedTab) - 1];\n }\n\n return undefined;\n }\n\n private _buttonText: string;\n private previousButtonText: string;\n private nextButtonText: string;\n\n constructor(private resourceService: SkyLibResourcesService, private changeDetector: ChangeDetectorRef) { }\n\n public ngAfterViewInit() {\n forkJoin([\n this.resourceService.getString('skyux_tabs_navigator_previous'),\n this.resourceService.getString('skyux_tabs_navigator_next')\n ])\n .pipe(take(1))\n .subscribe(resources => {\n this.previousButtonText = resources[0];\n this.nextButtonText = resources[1];\n this.changeDetector.detectChanges();\n });\n }\n\n public buttonClick() {\n let tabToSelect: SkyTabComponent;\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n tabToSelect = this.previousTab;\n break;\n case buttonTypeNext:\n tabToSelect = this.nextTab;\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n\n /* istanbul ignore else */\n if (tabToSelect && !tabToSelect.disabled) {\n this.tabset.active = tabToSelect.tabIndex;\n }\n }\n}\n","<button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"buttonClick()\"\n>\n {{ buttonText }}\n</button>\n","import {\n ElementRef,\n Injectable\n} from '@angular/core';\n\nimport {\n BehaviorSubject,\n Observable\n} from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetAdapterService {\n\n public get overflowChange(): Observable<boolean> {\n return this._overflowChange.asObservable();\n }\n\n private currentOverflow: boolean;\n\n private tabsetRef: ElementRef;\n\n private tabsOffsetLeft: number;\n\n private _overflowChange = new BehaviorSubject<boolean>(false);\n\n public registerTabset(tabsetRef: ElementRef): void {\n this.tabsetRef = tabsetRef;\n this.tabsOffsetLeft = this.getTabsOffsetLeft(tabsetRef.nativeElement);\n }\n\n /**\n * Detects if the tab buttons are wider than the tabset container.\n */\n public detectOverflow(): void {\n const nativeElement = this.tabsetRef.nativeElement;\n\n const tabsetRect = nativeElement\n .querySelector('.sky-tabset')\n .getBoundingClientRect();\n\n const tabButtonsRect = nativeElement\n .querySelector('.sky-tabset-tabs')\n .getBoundingClientRect();\n\n const tabExtraButtonsRect = nativeElement\n .querySelector('.sky-tabset-btns')\n .getBoundingClientRect();\n\n const tabButtonsWidth = tabButtonsRect.width + tabExtraButtonsRect.width + this.tabsOffsetLeft;\n\n const newOverflow = (tabButtonsWidth > tabsetRect.width);\n if (this.currentOverflow !== newOverflow) {\n this.currentOverflow = newOverflow;\n this._overflowChange.next(this.currentOverflow);\n }\n }\n\n /**\n * Returns the number of pixels to the left of the first tab.\n */\n private getTabsOffsetLeft(tabsetEl: HTMLElement): number {\n const tabsetRect = tabsetEl.getBoundingClientRect();\n\n // The dropdown element is the first \"tab\" and always exists in the DOM, even when hidden.\n const firstTabRect = tabsetEl.querySelector('.sky-tabset-dropdown').getBoundingClientRect();\n\n return firstTabRect.left - tabsetRect.left;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {\n combineLatest,\n race,\n Subject\n} from 'rxjs';\n\nimport {\n distinctUntilChanged,\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyTabIndex\n} from './tab-index';\n\nimport {\n SkyTabsetStyle\n} from './tabset-style';\n\nimport {\n SkyTabComponent\n} from './tab.component';\n\nimport {\n SkyTabsetAdapterService\n} from './tabset-adapter.service';\n\nimport {\n SkyTabsetButtonsDisplayMode\n} from './tabset-buttons-display-mode';\n\nimport {\n SkyTabsetPermalinkService\n} from './tabset-permalink.service';\n\nimport {\n SkyTabsetService\n} from './tabset.service';\n\nimport {\n SkyTabsetTabIndexesChange\n} from './tabset-tab-indexes-change';\n\n/**\n * @internal\n */\ninterface TabButtonViewModel {\n active: boolean;\n ariaControls: string;\n buttonHref: string;\n buttonId: string;\n buttonText: string;\n buttonTextCount: string;\n closeable: boolean;\n disabled: boolean;\n tabIndex: SkyTabIndex;\n}\n\n@Component({\n selector: 'sky-tabset',\n styleUrls: ['./tabset.component.scss'],\n templateUrl: './tabset.component.html',\n providers: [\n SkyTabsetAdapterService,\n SkyTabsetPermalinkService,\n SkyTabsetService\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SkyTabsetComponent implements AfterViewInit, OnDestroy {\n\n /**\n * Activates a tab by its `tabIndex` property.\n */\n @Input()\n public set active(value: SkyTabIndex) {\n if (\n value === undefined ||\n this.tabsetService.tabIndexesEqual(value, this._active)\n ) {\n return;\n }\n\n this._active = value;\n\n if (this.tabs) {\n this.tabsetService.setActiveTabIndex(value);\n } else {\n // On init, wait for children tabs to render before broadcasting the active tab index.\n setTimeout(() => {\n if (this.tabsetService.isValidTabIndex(value)) {\n // On init, yield to the permalink ID, if it exists.\n if (this.getActiveTabIndexByPermalinkId() === undefined) {\n this.tabsetService.setActiveTabIndex(value);\n }\n } else {\n // Activate the first tab if the new tab index is invalid.\n this._active = this.tabsetService.activateFirstTab();\n }\n });\n }\n }\n\n public get active(): SkyTabIndex {\n return this._active;\n }\n\n /**\n * Specifies an ARIA label for the tabset. This sets the tabset's `aria-label` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset includes a visible label, use `ariaLabelledBy` instead.\n */\n @Input()\n public ariaLabel: string;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that labels\n * the tabset. This sets the tabset's `aria-labelledby` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset does not include a visible label, use `ariaLabel` instead.\n */\n @Input()\n public ariaLabelledBy: string;\n\n /**\n * Distinguishes a tabset's unique state in the URL by generating a query parameter\n * that is written as `?<queryParam>-active-tab=<sanitized-tab-heading>`.\n * The query parameter's value is parsed automatically from the selected tab's heading text,\n * but you can supply a custom query parameter value for each tab with its `permalinkValue`.\n */\n @Input()\n public set permalinkId(value: string) {\n if (!value) {\n return;\n }\n\n const sanitized = this.permalinkService.urlify(value);\n this._permalinkId = `${sanitized}-active-tab`;\n }\n\n public get permalinkId(): string {\n return this._permalinkId || '';\n }\n\n /**\n * Specifies the behavior for a series of tabs.\n * @deprecated The property was designed to create wizards by setting tabStyle=\"wizard\" on tabsets in modals,\n * but this wizard implementation was replaced by the\n * [progress indicator component](https://developer.blackbaud.com/skyux/components/progress-indicator).\n * @default 'tabs'\n */\n @Input()\n public set tabStyle(value: SkyTabsetStyle) {\n /*istanbul ignore else*/\n if (value && value.toLowerCase() === 'wizard') {\n console.warn(\n 'The tabset wizard is deprecated. Please implement the new approach using ' +\n 'progress indicator as documented here: https://developer.blackbaud.com/skyux/components/wizard.'\n );\n }\n\n this._tabStyle = value;\n }\n\n public get tabStyle(): SkyTabsetStyle {\n return this._tabStyle || 'tabs';\n }\n\n /**\n * Fires when the active tab changes. This event emits the index of the active tab.\n */\n @Output()\n public activeChange = new EventEmitter<SkyTabIndex>();\n\n /**\n * Fires when users click the button to add a new tab.\n * The new tab button is added to the tab area when you specify a listener for this event.\n */\n @Output()\n public newTab = new EventEmitter<void>();\n\n /**\n * Fires when users click the button to open a tab.\n * The open tab button is added to the tab area when you specify a listener for this event.\n */\n @Output()\n public openTab = new EventEmitter<void>();\n\n /**\n * Fires when any tab's `tabIndex` value changes.\n */\n @Output()\n public tabIndexesChange = new EventEmitter<SkyTabsetTabIndexesChange>();\n\n public set tabDisplayMode(value: SkyTabsetButtonsDisplayMode) {\n this._tabDisplayMode = value;\n this.changeDetector.markForCheck();\n }\n\n public get tabDisplayMode(): SkyTabsetButtonsDisplayMode {\n return this._tabDisplayMode || 'tabs';\n }\n\n @ContentChildren(SkyTabComponent)\n public tabs: QueryList<SkyTabComponent>;\n\n public dropdownTriggerButtonText: string;\n\n /**\n * This property is used by the deprecated tabset-nav-button component.\n * @internal\n */\n public lastActiveTabIndex: SkyTabIndex;\n\n public tabButtons: TabButtonViewModel[] = [];\n\n private ngUnsubscribe = new Subject<void>();\n\n private tabComponentsStateChangeUnsubscribe = new Subject<void>();\n\n private _active: SkyTabIndex;\n\n private _permalinkId: string;\n\n private _tabDisplayMode: SkyTabsetButtonsDisplayMode;\n\n private _tabStyle: SkyTabsetStyle;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private adapterService: SkyTabsetAdapterService,\n private permalinkService: SkyTabsetPermalinkService,\n private tabsetService: SkyTabsetService\n ) { }\n\n public ngAfterViewInit(): void {\n\n this.initTabComponents();\n this.listenTabComponentsStructuralChange();\n\n const initialTabIndex = this.getInitialTabIndex();\n this.tabsetService.setActiveTabIndex(initialTabIndex);\n\n this.listenTabButtonsOverflowChange();\n this.listenLocationPopStateChange();\n\n // If the currently active tab is getting unregistered, activate the next one.\n this.tabsetService.activeTabUnregistered\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(tab => {\n // Wait for the new tabs to render before activating.\n setTimeout(() => {\n this.tabsetService.activateNearestTab(tab.arrayIndex);\n });\n });\n\n // Let the tabset render the initial active index before listening for changes.\n setTimeout(() => {\n this.listenTabComponentsStateChange();\n this.listenActiveIndexChange();\n this.permalinkService.init();\n });\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.unsubscribeTabComponentsStateChange();\n this.permalinkService.clearParam(this.permalinkId);\n }\n\n public onWindowResize(): void {\n this.adapterService.detectOverflow();\n }\n\n public onTabCloseClick(tabButton: TabButtonViewModel): void {\n const tabComponent = this.tabs.find(tab =>\n this.tabsetService.tabIndexesEqual(tab.tabIndex, tabButton.tabIndex)\n );\n\n tabComponent.close.emit();\n }\n\n public onTabButtonClick(tabButton: TabButtonViewModel): void {\n this.tabsetService.setActiveTabIndex(tabButton.tabIndex);\n }\n\n public onNewTabClick(): void {\n this.newTab.emit();\n }\n\n public onOpenTabClick(): void {\n this.openTab.emit();\n }\n\n /**\n * Sets the initial active tab index based on the following criteria.\n * 1. Does the URL include a query param that reflects this tabset's active tab?\n * 2. Does one of the tab components have their `active` property set to `true`?\n * 3. Is the tabset component's `active` property set to a specific tab index?\n */\n private getInitialTabIndex(): SkyTabIndex {\n let activeIndex: SkyTabIndex = this.getActiveTabIndexByPermalinkId();\n if (activeIndex === undefined) {\n activeIndex = this.getActiveTabComponent()?.tabIndex;\n if (activeIndex === undefined) {\n activeIndex = this.active;\n }\n }\n\n return activeIndex;\n }\n\n private listenActiveIndexChange(): void {\n this.tabsetService.activeTabIndex\n .pipe(\n distinctUntilChanged(),\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe(activeIndex => {\n this.updateTabsetComponent(activeIndex);\n });\n }\n\n private listenTabComponentsStructuralChange(): void {\n this.tabs.changes\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.resetTabComponents();\n });\n }\n\n private listenTabComponentsStateChange(): void {\n combineLatest(this.tabs.map(tab => tab.activeChange))\n .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n const tabIndex = this.getActiveTabComponent()?.tabIndex;\n this.tabsetService.setActiveTabIndex(tabIndex);\n });\n });\n\n combineLatest(this.tabs.map(tab => tab.tabIndexChange))\n .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))\n .subscribe(() => {\n // Don't emit the first change.\n if (this.lastActiveTabIndex !== undefined) {\n // Wait for the tab components to render changes before updating the view.\n setTimeout(() => {\n this.updateTabsetComponent(this.tabsetService.currentActiveTabIndex, true);\n this.emitTabIndexChange();\n });\n }\n });\n\n combineLatest(this.tabs.map(tab => tab.stateChange))\n .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n this.updateTabsetComponent(this.tabsetService.currentActiveTabIndex, true);\n });\n });\n }\n\n private initTabComponents(): void {\n this.tabs.forEach(tab => tab.init());\n }\n\n private resetTabComponents(): void {\n this.unsubscribeTabComponentsStateChange();\n this.tabsetService.unregisterAll();\n\n // If there are no tab components, do a hard reset of the view.\n if (this.tabs.length === 0) {\n this.updateTabsetComponent(0, true);\n return;\n }\n\n this.initTabComponents();\n const activeIndex = this.getActiveTabComponent()?.tabIndex;\n this.tabsetService.setActiveTabIndex(activeIndex, {\n emitChange: false\n });\n this.listenTabComponentsStateChange();\n }\n\n private emitTabIndexChange(): void {\n this.tabIndexesChange.emit({\n tabs: this.tabs.map(tab => ({\n tabHeading: tab.tabHeading,\n tabIndex: tab.tabIndex\n }))\n });\n }\n\n private unsubscribeTabComponentsStateChange(): void {\n this.tabComponentsStateChangeUnsubscribe.next();\n this.tabComponentsStateChangeUnsubscribe.complete();\n this.tabComponentsStateChangeUnsubscribe = new Subject<void>();\n }\n\n private listenTabButtonsOverflowChange(): void {\n this.adapterService.registerTabset(this.elementRef);\n this.adapterService.overflowChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(isOverflowing => {\n this.tabDisplayMode = (isOverflowing) ? 'dropdown' : 'tabs';\n this.changeDetector.markForCheck();\n });\n }\n\n /**\n * Listen for back/forward history button presses to detect query param changes in the URL.\n */\n private listenLocationPopStateChange(): void {\n this.permalinkService.popStateChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.setActiveTabIndexByPermalinkId();\n });\n }\n\n private setActiveTabIndexByPermalinkId(): void {\n const activeIndex = this.getActiveTabIndexByPermalinkId();\n this.tabsetService.setActiveTabIndex(activeIndex);\n }\n\n private getActiveTabIndexByPermalinkId(): SkyTabIndex {\n if (this.permalinkId) {\n const paramValue = this.permalinkService.getParam(this.permalinkId);\n if (paramValue) {\n return this.tabs.find(tab => tab.permalinkValue === paramValue)?.tabIndex;\n }\n }\n }\n\n private getActiveTabComponent(): SkyTabComponent {\n return this.tabs.toArray().reverse().find(tab => tab.active === true);\n }\n\n private createTabButtons(activeIndex: SkyTabIndex): TabButtonViewModel[] {\n return this.tabs.map(tab => ({\n active: this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex),\n closeable: tab.closeable,\n ariaControls: tab.tabPanelId,\n disabled: tab.disabled,\n /*tslint:disable-next-line:no-null-keyword*/\n buttonHref: (tab.disabled) ? null : this.permalinkService.getParamHref(\n this.permalinkId,\n tab.permalinkValue\n ),\n buttonId: tab.tabButtonId,\n buttonTextCount: tab.tabHeaderCount,\n buttonText: tab.tabHeading,\n tabIndex: tab.tabIndex\n }));\n }\n\n private updateTabButtons(activeIndex: SkyTabIndex): void {\n this.tabButtons.forEach(button => {\n button.active = this.tabsetService.tabIndexesEqual(button.tabIndex, activeIndex);\n });\n }\n\n /**\n * Updates the UI and state of the tabset component after the tab index or\n * tab components have changed.\n * @param activeIndex The currently active tab index.\n * @param regenerateTabButtons Indicates if tab button view models should be regenerated.\n * Setting this value to `false` will simply update the existing tab buttons. Setting this value\n * to `true` is only necessary when the underlying tab components have changed and the tab\n * buttons must reflect those changes.\n */\n private updateTabsetComponent(\n activeIndex: SkyTabIndex,\n regenerateTabButtons = false\n ): void {\n\n // Activate/deactivate tab components.\n this.tabs.forEach(tab => {\n this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex)\n ? tab.activate()\n : tab.deactivate();\n });\n\n // Update the tab button models.\n if (regenerateTabButtons || !this.tabButtons.length) {\n this.tabButtons = this.createTabButtons(activeIndex);\n } else {\n this.updateTabButtons(activeIndex);\n }\n\n // Update the dropdown trigger button text.\n this.dropdownTriggerButtonText = this.tabButtons.find(b => {\n return this.tabsetService.tabIndexesEqual(b.tabIndex, activeIndex);\n })?.buttonText;\n\n // Set the query params based on active tab.\n if (this.permalinkId) {\n const activeTabComponent = this.tabs.find(tab => {\n return this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex);\n });\n this.permalinkService.setParam(this.permalinkId, activeTabComponent.permalinkValue);\n }\n\n // Wait for tab button view models to render before gauging dimensions.\n setTimeout(() => {\n this.adapterService.detectOverflow();\n });\n\n this.changeDetector.markForCheck();\n\n // Emit the new active index value to consumers.\n if (this.lastActiveTabIndex !== activeIndex) {\n this.lastActiveTabIndex = activeIndex;\n this.activeChange.emit(activeIndex);\n }\n }\n}\n","<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\"\n (window:resize)=\"onWindowResize()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\"\n buttonType=\"tab\"\n >\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span\n class=\"sky-tabset-tabs\"\n >\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </ng-container>\n </span>\n <span\n class=\"sky-tabset-btns\"\n >\n <button *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon\n icon=\"plus-circle\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon\n icon=\"folder-open-o\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template\n let-tabButton\n #tabButtonTemplate\n>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabStyle]=\"tabStyle\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n","import {\n CommonModule\n} from '@angular/common';\n\nimport {\n NgModule\n} from '@angular/core';\n\nimport {\n RouterModule\n} from '@angular/router';\n\nimport {\n SkyI18nModule\n} from '@skyux/i18n';\n\nimport {\n SkyIconModule\n} from '@skyux/indicators';\n\nimport {\n SkyDropdownModule\n} from '@skyux/popovers';\n\nimport {\n SkyThemeModule\n} from '@skyux/theme';\n\nimport {\n SkyTabsResourcesModule\n} from '../shared/sky-tabs-resources.module';\n\nimport {\n SkyTabButtonComponent\n} from './tab-button.component';\n\nimport {\n SkyTabComponent\n} from './tab.component';\n\nimport {\n SkyTabsetNavButtonComponent\n} from './tabset-nav-button.component';\n\nimport {\n SkyTabsetComponent\n} from './tabset.component';\n\n@NgModule({\n declarations: [\n SkyTabButtonComponent,\n SkyTabComponent,\n SkyTabsetComponent,\n SkyTabsetNavButtonComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n SkyDropdownModule,\n SkyI18nModule,\n SkyIconModule,\n SkyTabsResourcesModule,\n SkyThemeModule\n ],\n exports: [\n SkyTabComponent,\n SkyTabsetComponent,\n SkyTabsetNavButtonComponent\n ]\n})\nexport class SkyTabsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["BehaviorSubject","Subject","SkyMediaBreakpoints","Injectable","EventEmitter","takeUntil","trigger","transition","style","animate","Component","ChangeDetectionStrategy","Input","Output","ViewChild","SkyMediaQueryService","HostListener","nextId","getLibStringForLocale","SkyI18nModule","SKY_LIB_RESOURCES_PROVIDERS","NgModule","take","ContentChildren","CommonModule","SkyChevronModule","SkyIconModule","SkyStatusIndicatorModule","SkyThemeModule","SkyCheckboxModule","ViewEncapsulation","forkJoin","distinctUntilChanged","combineLatest","race","RouterModule","SkyDropdownModule"],"mappings":"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"}
1
+ {"version":3,"file":"skyux-tabs.umd.js","sources":["../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.service.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.component.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.component.html","../../../projects/tabs/src/modules/vertical-tabset/vertical-tab-media-query.service.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset-adapter.service.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tab.component.html","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.service.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form-section.component.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form-section.component.html","../../../projects/tabs/src/modules/shared/sky-tabs-resources.module.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.html","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset-group.component.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset-group.component.html","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.module.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.module.ts","../../../projects/tabs/src/modules/tabs/tab-button.component.ts","../../../projects/tabs/src/modules/tabs/tab-button.component.html","../../../projects/tabs/src/modules/tabs/tabset-permalink.service.ts","../../../projects/tabs/src/modules/tabs/tabset.service.ts","../../../projects/tabs/src/modules/tabs/tab.component.ts","../../../projects/tabs/src/modules/tabs/tab.component.html","../../../projects/tabs/src/modules/tabs/tabset-nav-button.component.ts","../../../projects/tabs/src/modules/tabs/tabset-nav-button.component.html","../../../projects/tabs/src/modules/tabs/tabset-adapter.service.ts","../../../projects/tabs/src/modules/tabs/tabset.component.ts","../../../projects/tabs/src/modules/tabs/tabset.component.html","../../../projects/tabs/src/modules/tabs/tabs.module.ts","../../../projects/tabs/src/skyux-tabs.ts"],"sourcesContent":["import {\n ElementRef,\n Injectable\n} from '@angular/core';\n\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryService\n} from '@skyux/core';\n\nimport {\n BehaviorSubject,\n Subject\n} from 'rxjs';\n\nimport {\n SkyVerticalTabComponent\n} from './vertical-tab.component';\n\nexport const VISIBLE_STATE = 'shown';\nexport const HIDDEN_STATE = 'void';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyVerticalTabsetService {\n\n public activeIndex: number = undefined;\n\n public animationContentVisibleState: string;\n\n public animationTabsVisibleState: string;\n\n public set content(value: ElementRef) {\n this._content = value;\n }\n\n public hidingTabs = new BehaviorSubject(false);\n\n public indexChanged: BehaviorSubject<number> = new BehaviorSubject(undefined);\n\n public maintainTabContent: boolean = false;\n\n public showingTabs = new BehaviorSubject(false);\n\n public switchingMobile: Subject<boolean> = new Subject();\n\n public tabs: Array<SkyVerticalTabComponent> = [];\n\n public tabAdded: Subject<SkyVerticalTabComponent> = new Subject();\n\n public tabClicked: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\n\n private _content: ElementRef;\n\n private _contentAdded: boolean = false;\n\n private _tabsVisible: boolean = false;\n\n private _isMobile: boolean = false;\n\n public constructor(private mediaQueryService: SkyMediaQueryService) {\n this.mediaQueryService.subscribe(breakpoint => {\n const nowMobile = breakpoint === SkyMediaBreakpoints.xs;\n\n if (nowMobile && !this._isMobile) {\n // switching to mobile\n this.switchingMobile.next(true);\n\n if (!this._tabsVisible) {\n this.hidingTabs.next(true);\n }\n\n } else if (!nowMobile && this._isMobile) {\n // switching to widescreen\n this.switchingMobile.next(false);\n\n if (!this._tabsVisible) {\n this.showingTabs.next(true);\n }\n }\n\n this._isMobile = nowMobile;\n });\n }\n\n public addTab(tab: SkyVerticalTabComponent) {\n const index = this.tabs.length;\n tab.index = index;\n\n this.tabs.push(tab);\n\n if (tab.active) {\n this.activateTab(tab);\n }\n\n this.tabAdded.next(tab);\n }\n\n public destroyTab(tab: SkyVerticalTabComponent): void {\n let tabIndex = this.tabs.indexOf(tab);\n if (tabIndex === -1) {\n return;\n }\n\n if (\n this.maintainTabContent &&\n tab.contentRendered &&\n /* istanbul ignore next */\n this._content?.nativeElement.contains(tab.tabContent.nativeElement)\n ) {\n this._content.nativeElement.removeChild(tab.tabContent.nativeElement);\n }\n\n this.tabs.splice(tabIndex, 1);\n // update tab indices\n this.tabs.forEach((tabItem, index) => tabItem.index = index);\n\n if (tab.active) {\n if (!this.maintainTabContent) {\n this.destroyContent();\n }\n // Try selecting the next tab first, and if there's no next tab then\n // try selecting the previous one.\n let newActiveTab = this.tabs[tabIndex] || this.tabs[tabIndex - 1];\n /*istanbul ignore else */\n if (newActiveTab) {\n newActiveTab.activateTab();\n }\n }\n }\n\n public activateTab(tab: SkyVerticalTabComponent) {\n\n // unactivate active tab\n let activeTab = this.tabs.find(t => t.index === this.activeIndex);\n if (activeTab && activeTab.index !== tab.index) {\n activeTab.active = false;\n activeTab.tabDeactivated();\n }\n\n this.activeIndex = tab.index;\n this.tabClicked.next(true);\n this.updateTabClicked();\n }\n\n public activeTab(): SkyVerticalTabComponent {\n return this.tabs.find(t => t.index === this.activeIndex);\n }\n\n public isMobile() {\n return this._isMobile;\n }\n\n public updateContent() {\n if (!this.maintainTabContent) {\n if (!this._contentAdded && this.contentVisible()) {\n // content needs to be moved\n this.moveContent();\n\n } else if (this._contentAdded && !this.contentVisible()) {\n // content hidden\n this._contentAdded = false;\n }\n } else {\n this.tabs.forEach((tab) => {\n if (!tab.contentRendered) {\n this._content.nativeElement.appendChild(tab.tabContent.nativeElement);\n tab.contentRendered = true;\n }\n });\n }\n }\n\n public tabsVisible() {\n return !this.isMobile() || this._tabsVisible;\n }\n\n public contentVisible() {\n return !this.isMobile() || !this._tabsVisible;\n }\n\n public showTabs() {\n this._tabsVisible = true;\n this._contentAdded = false;\n this.animationTabsVisibleState = VISIBLE_STATE;\n this.animationContentVisibleState = HIDDEN_STATE;\n this.showingTabs.next(true);\n }\n\n private destroyContent(): void {\n if (this._content) {\n this._content.nativeElement.innerHTML = '';\n }\n this.content = undefined;\n }\n\n private moveContent() {\n /* istanbul ignore else */\n if (this._content && !this._contentAdded) {\n let activeTab = this.activeTab();\n let activeContent = activeTab ? activeTab.tabContent : undefined;\n\n if (activeContent && activeContent.nativeElement) {\n this._content.nativeElement.appendChild(activeContent.nativeElement);\n activeTab.contentRendered = true;\n this._contentAdded = true;\n }\n }\n }\n\n private updateTabClicked() {\n this._contentAdded = false;\n\n if (this.isMobile()) {\n this._tabsVisible = false;\n this.animationContentVisibleState = VISIBLE_STATE;\n this.animationTabsVisibleState = HIDDEN_STATE;\n this.hidingTabs.next(true);\n }\n\n this.indexChanged.next(this.activeIndex);\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n ElementRef,\n ViewChild,\n EventEmitter,\n Output,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Input\n} from '@angular/core';\n\nimport {\n style,\n trigger,\n transition,\n animate\n} from '@angular/animations';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabsetService,\n HIDDEN_STATE,\n VISIBLE_STATE\n} from './../vertical-tabset/vertical-tabset.service';\n\n/**\n * Creates a container for the sectioned forms.\n */\n@Component({\n selector: 'sky-sectioned-form',\n templateUrl: './sectioned-form.component.html',\n styleUrls: ['./sectioned-form.component.scss'],\n providers: [SkyVerticalTabsetService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(-100%)'}),\n animate('150ms ease-in')\n ])\n ]\n ),\n trigger(\n 'contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(100%)'}),\n animate('150ms ease-in')\n ])\n ]\n )\n ]\n})\nexport class SkySectionedFormComponent implements OnInit, OnDestroy, AfterViewChecked {\n\n /**\n * Indicates whether the sectioned form loads section content during initialization so that it\n * displays content without moving around elements in the content container.\n * @default false\n */\n @Input()\n public maintainSectionContent: boolean = false;\n\n/**\n * Fires when the active tab changes and emits the index of the active\n * section. The index is based on the section's position when the form loads.\n */\n @Output()\n public indexChanged: EventEmitter<number> = new EventEmitter();\n\n public get ariaRole(): string {\n return this.isMobile ? undefined : 'tablist';\n }\n\n @ViewChild('skySectionSideContent')\n public content: ElementRef;\n\n private isMobile = false;\n private _ngUnsubscribe = new Subject();\n\n constructor(\n public tabService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef) {}\n\n public ngOnInit() {\n this.tabService.maintainTabContent = this.maintainSectionContent;\n\n this.tabService.indexChanged\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(index => {\n this.indexChanged.emit(index);\n this.changeRef.markForCheck();\n });\n\n this.tabService.switchingMobile\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.markForCheck();\n });\n\n if (this.tabService.isMobile()) {\n this.isMobile = true;\n this.tabService.animationContentVisibleState = VISIBLE_STATE;\n this.changeRef.markForCheck();\n }\n }\n\n public ngAfterViewChecked() {\n this.tabService.content = this.content;\n this.tabService.updateContent();\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n\n public tabsVisible() {\n this.changeRef.markForCheck();\n return this.tabService.tabsVisible();\n }\n\n public showTabs() {\n this.tabService.showTabs();\n this.changeRef.markForCheck();\n }\n}\n","<div\n aria-orientation=\"vertical\"\n class=\"sky-sectioned-form\"\n [attr.role]=\"ariaRole\"\n (window:resize)=\"tabService.updateContent()\"\n>\n <div\n *ngIf=\"maintainSectionContent || tabsVisible()\"\n class=\"sky-sectioned-form-tabs\"\n [ngClass]=\"{'sky-sectioned-form-tabs-hidden': !tabsVisible()}\"\n [@tabEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainSectionContent || tabService.contentVisible()\"\n class=\"sky-sectioned-form-content\"\n [ngClass]=\"{'sky-sectioned-form-content-hidden': !tabService.contentVisible()}\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #skySectionSideContent\n >\n </div>\n</div>\n\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryListener\n} from '@skyux/core';\n\nimport {\n BehaviorSubject,\n Subscription\n} from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyVerticalTabMediaQueryService {\n\n public get current(): SkyMediaBreakpoints {\n return this._current;\n }\n\n private currentSubject = new BehaviorSubject<SkyMediaBreakpoints>(this.current);\n\n private _current = SkyMediaBreakpoints.xs;\n\n constructor() {\n this.currentSubject.next(this._current);\n }\n\n public subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.currentSubject.subscribe({\n next: (breakpoints: SkyMediaBreakpoints) => {\n listener(breakpoints);\n }\n });\n }\n\n public setBreakpointForWidth(width: number): void {\n let breakpoint: SkyMediaBreakpoints;\n\n if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.xs)) {\n breakpoint = SkyMediaBreakpoints.xs;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.sm)) {\n breakpoint = SkyMediaBreakpoints.sm;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.md)) {\n breakpoint = SkyMediaBreakpoints.md;\n } else {\n breakpoint = SkyMediaBreakpoints.lg;\n }\n\n this._current = breakpoint;\n this.currentSubject.next(this._current);\n }\n\n public isWidthWithinBreakpiont(width: number, breakpoint: SkyMediaBreakpoints): boolean {\n const xsBreakpointMaxPixels = 767;\n const smBreakpointMinPixels = 768;\n const smBreakpointMaxPixels = 991;\n const mdBreakpointMinPixels = 992;\n const mdBreakpointMaxPixels = 1199;\n const lgBreakpointMinPixels = 1200;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n return (width <= xsBreakpointMaxPixels);\n }\n case SkyMediaBreakpoints.sm: {\n return (width >= smBreakpointMinPixels && width <= smBreakpointMaxPixels);\n }\n case SkyMediaBreakpoints.md: {\n return (width >= mdBreakpointMinPixels && width <= mdBreakpointMaxPixels);\n }\n default: {\n return (width >= lgBreakpointMinPixels);\n }\n }\n }\n\n public destroy(): void {\n this.currentSubject.complete();\n }\n}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2\n} from '@angular/core';\n\nimport {\n SkyMediaBreakpoints\n} from '@skyux/core';\n\n@Injectable()\nexport class SkyVerticalTabsetAdapterService {\n private renderer: Renderer2;\n\n constructor(\n private rendererFactory: RendererFactory2\n ) {\n this.renderer = this.rendererFactory.createRenderer(undefined, undefined);\n }\n\n public getWidth(elementRef: ElementRef): number {\n return elementRef.nativeElement.clientWidth;\n }\n\n public scrollToContentTop(element: ElementRef): void {\n element.nativeElement.scrollTop = 0;\n }\n\n public setResponsiveClass(element: ElementRef, breakpoint: SkyMediaBreakpoints): void {\n const nativeEl: HTMLElement = element.nativeElement;\n\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-xs');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-sm');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-md');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-lg');\n\n let newClass: string;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n newClass = 'sky-responsive-container-xs';\n break;\n }\n case SkyMediaBreakpoints.sm: {\n newClass = 'sky-responsive-container-sm';\n break;\n }\n case SkyMediaBreakpoints.md: {\n newClass = 'sky-responsive-container-md';\n break;\n }\n default: {\n newClass = 'sky-responsive-container-lg';\n break;\n }\n }\n\n this.renderer.addClass(nativeEl, newClass);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\n\nimport {\n SkyMediaQueryService\n} from '@skyux/core';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabMediaQueryService\n} from './vertical-tab-media-query.service';\n\nimport {\n SkyVerticalTabsetService\n} from './vertical-tabset.service';\n\nimport {\n SkyVerticalTabsetAdapterService\n} from './vertical-tabset-adapter.service';\n\n@Component({\n selector: 'sky-vertical-tab',\n templateUrl: './vertical-tab.component.html',\n styleUrls: ['./vertical-tab.component.scss'],\n providers: [\n SkyVerticalTabMediaQueryService,\n { provide: SkyMediaQueryService, useExisting: SkyVerticalTabMediaQueryService }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkyVerticalTabComponent implements OnInit, OnDestroy {\n /**\n * Indicates whether the tab is active when the tabset loads.\n */\n @Input()\n public active: boolean = false;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that contains\n * the content that the vertical tab displays, which corresponds to the `tabId`. This property\n * [supports accessibility rules for disclosures](https://www.w3.org/TR/wai-aria-practices-1.1/#disclosure).\n */\n @Input()\n public get ariaControls(): string {\n return this.isMobile ? undefined : this._ariaControls;\n }\n public set ariaControls(value: string) {\n this._ariaControls = value;\n }\n\n /**\n * @internal\n */\n @Input()\n public ariaInvalid: boolean;\n\n /**\n * @internal\n */\n @Input()\n public ariaRequired: boolean;\n\n /**\n * Specifies an ARIA role for the vertical tab\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * by indicating how the tab functions and what it controls. For information about how\n * an ARIA role indicates what an item represents on a web page, see the\n * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).\n * @default \"tab\"\n */\n @Input()\n public get ariaRole(): string {\n if (this.isMobile) {\n return undefined;\n }\n return this._ariaRole || 'tab';\n }\n public set ariaRole(value: string) {\n this._ariaRole = value;\n }\n\n /**\n * Indicates whether to disable the tab.\n */\n @Input()\n public disabled: boolean = false;\n\n /**\n * Indicates whether to indicate that the tab has an error.\n * @internal This is used for sectioned forms and is not currently a supported design for pure vertical tabs.\n */\n @Input()\n public errorIndicator: boolean = false;\n\n /**\n * Displays an item count alongside the tab header to indicate how many list items the tab contains.\n */\n @Input()\n public tabHeaderCount: number;\n\n /**\n * Specifies the tab header.\n * @required\n */\n @Input()\n public tabHeading: string;\n\n /**\n * Indicates whether to display a chevron-right icon in the righthand side of the tab.\n * @internal\n */\n @Input()\n public get showTabRightArrow() {\n return this._showTabRightArrow && this.tabsetService.isMobile();\n }\n\n public set showTabRightArrow(value: boolean) {\n this._showTabRightArrow = value;\n }\n\n /**\n * Specifies an ID for the tab.\n */\n @Input()\n public tabId: string;\n\n public set contentRendered(value: boolean) {\n this._contentRendered = value;\n\n /* istanbul ignore else */\n if (this._contentRendered) {\n // NOTE: Wrapped in a setTimeout here to ensure that everything has completed rendering.\n setTimeout(() => {\n this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));\n });\n }\n }\n\n public get contentRendered(): boolean {\n return this._contentRendered;\n }\n\n public index: number;\n\n @ViewChild('tabContentWrapper')\n public tabContent: ElementRef;\n\n private isMobile = false;\n\n private _ariaControls: string;\n\n private _ariaRole: string;\n\n private _contentRendered: boolean = false;\n\n private _mobileSubscription = new Subject();\n\n private _ngUnsubscribe = new Subject();\n\n private _showTabRightArrow: boolean = false;\n\n constructor(\n private adapterService: SkyVerticalTabsetAdapterService,\n private changeRef: ChangeDetectorRef,\n private tabsetService: SkyVerticalTabsetService,\n private verticalTabMediaQueryService: SkyVerticalTabMediaQueryService\n ) {}\n\n public ngOnInit(): void {\n this.isMobile = this.tabsetService.isMobile();\n this.changeRef.markForCheck();\n\n this.tabsetService.switchingMobile\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.markForCheck();\n });\n\n // Update the breakpoint and responsive class here just as a sanity check since we can not\n // watch for element resizing.\n this.tabsetService.indexChanged\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((index) => {\n if (this.index === index && this.contentRendered) {\n this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));\n }\n });\n\n this.tabsetService.addTab(this);\n }\n\n public ngOnDestroy(): void {\n this._mobileSubscription.unsubscribe();\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n this.tabsetService.destroyTab(this);\n }\n\n public tabIndex(): number {\n if (!this.disabled) {\n return 0;\n } else {\n return -1;\n }\n }\n\n public activateTab(): void {\n if (!this.disabled) {\n this.active = true;\n this.tabsetService.activateTab(this);\n\n this.changeRef.markForCheck();\n }\n }\n\n @HostListener('window:resize')\n public onWindowResize(): void {\n this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));\n }\n\n public tabDeactivated(): void {\n this.changeRef.markForCheck();\n }\n\n private updateBreakpointAndResponsiveClass(width: number): void {\n this.verticalTabMediaQueryService.setBreakpointForWidth(width);\n\n const newBreakpiont = this.verticalTabMediaQueryService.current;\n\n this.adapterService.setResponsiveClass(this.tabContent, newBreakpiont);\n\n this.changeRef.markForCheck();\n }\n}\n","<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired ? ariaRequired : null\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup.enter)=\"activateTab()\">\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\">\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n <sky-icon\n *ngIf=\"showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div\n #tabContentWrapper\n>\n <div\n class=\"sky-vertical-tab-content-pane\"\n [ngClass]=\"{'sky-vertical-tab-hidden': !active}\"\n >\n\n <ng-content></ng-content>\n\n <div>\n\n</div>\n\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n BehaviorSubject\n} from 'rxjs';\n\n@Injectable()\nexport class SkySectionedFormService {\n/**\n * @internal\n */\n public invalidChange: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\n/**\n * @internal\n */\n public requiredChange: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\n\n /**\n * Sets the current section's invalid state based on the `isInvalid` parameter.\n * This method is used within a `sky-sectioned-form-section` element.\n */\n public invalidFieldChanged(isInvalid: boolean): void {\n this.invalidChange.next(isInvalid);\n }\n\n /**\n * Sets the current section's required state based on the `isRequired` parameter.\n * This method is used within a `sky-sectioned-form-section` element.\n */\n public requiredFieldChanged(isRequired: boolean): void {\n this.requiredChange.next(isRequired);\n }\n}\n","import {\n Component,\n Input,\n ViewChild,\n OnInit,\n OnDestroy,\n ChangeDetectorRef\n} from '@angular/core';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabComponent\n} from './../vertical-tabset/vertical-tab.component';\nimport {\n SkySectionedFormService\n} from './sectioned-form.service';\nimport {\n SkyVerticalTabsetService\n} from '../vertical-tabset/vertical-tabset.service';\n\nlet nextId = 0;\n\n/**\n * Creates an individual form to display as a section within the sectioned form.\n */\n@Component({\n selector: 'sky-sectioned-form-section',\n templateUrl: './sectioned-form-section.component.html',\n providers: [SkySectionedFormService],\n styleUrls: ['./sectioned-form-section.component.scss']\n})\nexport class SkySectionedFormSectionComponent implements OnInit, OnDestroy {\n public sectionTabId = `sky-sectioned-form-tab-${++nextId}`;\n public sectionContentId = `sky-sectioned-form-section-${++nextId}`;\n\n/**\n * Specifies the section header.\n * @required\n */\n @Input()\n public heading: string;\n\n/**\n * Indicates the number of items within the section and displays a\n * counter alongside the section header.\n */\n @Input()\n public itemCount: number;\n\n/**\n * Indicates whether the section is active when the form loads.\n * @default false\n */\n @Input()\n public active: boolean;\n\n public get ariaRole(): string {\n return this.isMobile ? undefined : 'tabpanel';\n }\n\n public get ariaLabelledby() {\n return this.isMobile ? undefined : this.sectionTabId;\n }\n\n public fieldRequired: boolean;\n public fieldInvalid: boolean;\n\n @ViewChild(SkyVerticalTabComponent)\n public tab: SkyVerticalTabComponent;\n\n private isMobile = false;\n private _ngUnsubscribe = new Subject();\n\n constructor(\n private sectionedFormService: SkySectionedFormService,\n private tabsetService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef\n ) {}\n\n public ngOnInit() {\n this.isMobile = this.tabsetService.isMobile();\n this.changeRef.detectChanges();\n\n this.tabsetService.switchingMobile\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.detectChanges();\n });\n\n this.sectionedFormService.requiredChange\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((required: boolean) => this.fieldRequired = required);\n\n this.sectionedFormService.invalidChange\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((invalid: boolean) => this.fieldInvalid = invalid);\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n}\n","<sky-vertical-tab\n [active]=\"active\"\n [ariaControls]=\"sectionContentId\"\n [ariaInvalid]=\"fieldInvalid\"\n [ariaRequired]=\"fieldRequired\"\n [errorIndicator]=\"fieldInvalid\"\n [ngClass]=\"{\n 'sky-tab-field-required': fieldRequired\n }\"\n [showTabRightArrow]=\"true\"\n [tabHeaderCount]=\"itemCount\"\n [tabHeading]=\"heading\"\n [tabId]=\"sectionTabId\">\n <div\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.role]=\"ariaRole\"\n [id]=\"sectionContentId\"\n #tabContent>\n <ng-content></ng-content>\n </div>\n</sky-vertical-tab>\n","/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module modules/shared/sky-tabs' schematic.\n * To update this file, simply rerun the command.\n */\n\nimport { NgModule } from '@angular/core';\nimport {\n getLibStringForLocale,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n SKY_LIB_RESOURCES_PROVIDERS\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\"skyux_tab_add\":{\"message\":\"Add tab\"},\"skyux_tab_close\":{\"message\":\"Close {0} tab\"},\"skyux_tabs_navigator_next\":{\"message\":\"Next\"},\"skyux_tabs_navigator_previous\":{\"message\":\"Previous\"},\"skyux_tab_open\":{\"message\":\"Open tab\"},\"skyux_vertical_tabs_show_tabs_text\":{\"message\":\"Tab list\"}},\n};\n\nexport class SkyTabsResourcesProvider implements SkyLibResourcesProvider {\n public getString(localeInfo: SkyAppLocaleInfo, name: string): string {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [{\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyTabsResourcesProvider,\n multi: true\n }]\n})\nexport class SkyTabsResourcesModule { }\n","import {\n Component,\n ElementRef,\n ViewChild,\n Input,\n OnInit,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n AfterViewChecked,\n ChangeDetectorRef,\n OnDestroy\n} from '@angular/core';\n\nimport {\n style,\n trigger,\n transition,\n animate\n} from '@angular/animations';\n\nimport {\n SkyLibResourcesService\n} from '@skyux/i18n';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n take,\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabsetAdapterService\n} from './vertical-tabset-adapter.service';\n\nimport {\n SkyVerticalTabsetService,\n HIDDEN_STATE,\n VISIBLE_STATE\n} from './vertical-tabset.service';\n\n@Component({\n selector: 'sky-vertical-tabset',\n templateUrl: './vertical-tabset.component.html',\n styleUrls: ['./vertical-tabset.component.scss'],\n providers: [\n SkyVerticalTabsetService\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabGroupEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(-100%)'}),\n animate('150ms ease-in')\n ])\n ]\n ),\n trigger(\n 'contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(100%)'}),\n animate('150ms ease-in')\n ])\n ]\n )\n ]\n})\nexport class SkyVerticalTabsetComponent implements OnInit, AfterViewChecked, OnDestroy {\n\n /**\n * Specifies the text to display on the show tabs button on mobile devices.\n */\n @Input()\n public showTabsText: string;\n\n /**\n * Specifies an ARIA role for the vertical tabset\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * by indicating how the tabset functions and what it controls. For information about how\n * an ARIA role indicates what an item represents on a web page, see the\n * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).\n * @default \"tablist\"\n */\n @Input()\n public get ariaRole(): string {\n if (this.isMobile) {\n return undefined;\n }\n return this._ariaRole || 'tablist';\n }\n public set ariaRole(value: string) {\n this._ariaRole = value;\n }\n\n /**\n * Indicates whether the vertical tabset loads tab content during initialization so that it\n * displays content without moving around elements in the content container.\n * @default 'false'\n */\n @Input()\n public maintainTabContent: boolean = false;\n\n /**\n * Fires when the active tab changes. Emits the index of the active tab. The\n * index is based on the tab's position when it loads.\n */\n @Output()\n public activeChange = new EventEmitter<number>();\n\n @ViewChild('groupContainerWrapper')\n public tabGroups: ElementRef;\n\n @ViewChild('skySideContent')\n public content: ElementRef;\n\n @ViewChild('contentContainerWrapper')\n private contentWrapper: ElementRef;\n\n private isMobile = false;\n private _ngUnsubscribe = new Subject();\n private _ariaRole: string;\n\n constructor(\n public adapterService: SkyVerticalTabsetAdapterService,\n public tabService: SkyVerticalTabsetService,\n private resources: SkyLibResourcesService,\n private changeRef: ChangeDetectorRef) {}\n\n public ngOnInit() {\n this.tabService.maintainTabContent = this.maintainTabContent;\n\n this.tabService.indexChanged\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((index: any) => {\n this.activeChange.emit(index);\n if (this.contentWrapper) {\n this.adapterService.scrollToContentTop(this.contentWrapper);\n }\n this.changeRef.markForCheck();\n });\n\n this.tabService.switchingMobile\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.markForCheck();\n });\n\n if (this.tabService.isMobile()) {\n this.isMobile = true;\n this.tabService.animationContentVisibleState = VISIBLE_STATE;\n this.changeRef.markForCheck();\n }\n if (!this.showTabsText) {\n this.resources.getString('skyux_vertical_tabs_show_tabs_text')\n .pipe(take(1))\n .subscribe(resource => {\n /* sanity check */\n /* istanbul ignore else */\n if (!this.showTabsText) {\n this.showTabsText = resource;\n }\n });\n }\n }\n\n public ngAfterViewChecked() {\n this.tabService.content = this.content;\n this.tabService.updateContent();\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n}\n"," <div class=\"sky-vertical-tabset\" (window:resize)=\"tabService.updateContent()\">\n <div\n *ngIf=\"maintainTabContent || tabService.tabsVisible()\"\n #groupContainerWrapper\n class=\"sky-vertical-tabset-group-container\"\n [ngClass]=\"{'sky-vertical-tabset-hidden': !tabService.tabsVisible()}\"\n [attr.role]=\"ariaRole\"\n [@tabGroupEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainTabContent || tabService.contentVisible()\"\n class=\"sky-vertical-tabset-content\"\n [ngClass]=\"{'sky-vertical-tabset-content-hidden': !tabService.contentVisible()}\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #contentContainerWrapper\n >\n <div #skySideContent></div>\n <button\n *ngIf=\"!tabService.tabsVisible()\"\n (click)=\"tabService.showTabs()\"\n class=\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\"\n >\n <sky-icon icon=\"chevron-left\"></sky-icon>\n {{ showTabsText }}\n </button>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Input,\n OnDestroy,\n OnInit,\n QueryList\n} from '@angular/core';\n\nimport {\n animate,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabComponent\n} from './vertical-tab.component';\n\nimport {\n SkyVerticalTabsetService\n} from './vertical-tabset.service';\n\n@Component({\n selector: 'sky-vertical-tabset-group',\n templateUrl: './vertical-tabset-group.component.html',\n styleUrls: ['./vertical-tabset-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabSlide', [\n transition(':enter', [\n style({\n height: '0',\n visibility: 'hidden'\n }),\n animate('150ms ease-in', style({\n height: '*',\n visibility: 'visible'\n }))\n ]),\n transition(':leave', [\n style({\n height: '*',\n visibility: 'visible'\n }),\n animate('150ms ease-in', style({\n height: '0',\n visibility: 'hidden'\n }))\n ])\n ])\n ]\n})\nexport class SkyVerticalTabsetGroupComponent implements OnInit, OnDestroy {\n\n /**\n * Indicates whether to disable the ability to expand and collapse the group.\n * @default \"false\"\n */\n @Input()\n public disabled: boolean;\n\n /**\n * Specifies the header for the collapsible group of tabs.\n */\n @Input()\n public groupHeading: string;\n\n /**\n * Indicates whether the collapsible group is expanded.\n * @default \"false\"\n */\n @Input()\n public set open(value: boolean) {\n this._open = value;\n }\n\n public get open(): boolean {\n return !this.disabled && this._open;\n }\n\n @ContentChildren(SkyVerticalTabComponent)\n private tabs: QueryList<SkyVerticalTabComponent>;\n\n private ngUnsubscribe = new Subject();\n\n private openBeforeTabsHidden: boolean = false;\n\n private _open: boolean = false;\n\n constructor(\n private tabService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef\n ) {}\n\n public ngOnInit(): void {\n this.tabService.hidingTabs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.tabsHidden);\n\n this.tabService.showingTabs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.tabsShown);\n\n this.tabService.tabClicked\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.tabClicked);\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public toggleMenuOpen(): void {\n if (!this.disabled) {\n this.open = !this.open;\n }\n\n this.changeRef.markForCheck();\n }\n\n public subMenuOpen(): boolean {\n return this.tabs && (this.tabs.find(t => t.active) !== undefined);\n }\n\n public tabClicked = () => {\n this.changeRef.markForCheck();\n }\n\n public tabsHidden = () => {\n // this fixes an animation bug with ngIf when the parent component goes from visible to hidden\n this.openBeforeTabsHidden = this.open;\n this.open = false;\n this.changeRef.markForCheck();\n }\n\n public tabsShown = () => {\n this.open = this.openBeforeTabsHidden;\n this.changeRef.markForCheck();\n }\n}\n","<div class=\"sky-vertical-tabset-group\">\n <!-- [ngClass] includes font classes for both modern and default styles -->\n <div\n class=\"sky-vertical-tabset-group-header sky-padding-even-default\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-sub-open sky-font-emphasized sky-emphasized': subMenuOpen(),\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n (click)=\"toggleMenuOpen()\"\n (keyup.enter)=\"toggleMenuOpen()\"\n [tabIndex]=\"-1\"\n >\n {{ groupHeading }}\n <sky-chevron *skyThemeIf=\"'default'\"\n class=\"sky-vertical-tabset-group-header-chevron\"\n [direction]=\"open ? 'up' : 'down'\"\n [disabled]=\"disabled\"\n (directionChange)=\"toggleMenuOpen()\"\n (keyup.enter)=\"$event.stopPropagation()\"\n >\n </sky-chevron>\n <ng-container *skyThemeIf=\"'modern'\">\n <button *ngIf=\"!open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-up\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </ng-container>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n *ngIf=\"open\"\n [@tabSlide]\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n NgModule\n} from '@angular/core';\n\nimport {\n CommonModule\n} from '@angular/common';\n\nimport {\n SkyChevronModule,\n SkyIconModule,\n SkyStatusIndicatorModule\n} from '@skyux/indicators';\n\nimport {\n SkyThemeModule\n} from '@skyux/theme';\n\nimport {\n SkyTabsResourcesModule\n} from '../shared/sky-tabs-resources.module';\n\nimport {\n SkyVerticalTabsetComponent\n} from './vertical-tabset.component';\n\nimport {\n SkyVerticalTabComponent\n} from './vertical-tab.component';\n\nimport {\n SkyVerticalTabsetGroupComponent\n} from './vertical-tabset-group.component';\n\nimport {\n SkyVerticalTabsetAdapterService\n} from './vertical-tabset-adapter.service';\n\n@NgModule({\n declarations: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent\n ],\n imports: [\n CommonModule,\n SkyChevronModule,\n SkyIconModule,\n SkyStatusIndicatorModule,\n SkyTabsResourcesModule,\n SkyThemeModule\n ],\n providers: [\n SkyVerticalTabsetAdapterService\n ],\n exports: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent\n ]\n})\nexport class SkyVerticalTabsetModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SkySectionedFormComponent } from './sectioned-form.component';\nimport { SkySectionedFormSectionComponent } from './sectioned-form-section.component';\nimport { SkyVerticalTabsetModule } from '../vertical-tabset/vertical-tabset.module';\nimport { SkyCheckboxModule } from '@skyux/forms';\n\n@NgModule({\n declarations: [\n SkySectionedFormComponent,\n SkySectionedFormSectionComponent\n ],\n imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyVerticalTabsetModule\n ],\n exports: [\n SkySectionedFormComponent,\n SkySectionedFormSectionComponent\n ]\n})\nexport class SkySectionedFormModule { }\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {\n SkyTabsetStyle\n} from './tabset-style';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-tab-button',\n templateUrl: './tab-button.component.html',\n styleUrls: ['./tab-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SkyTabButtonComponent {\n\n @Input()\n public active: boolean;\n\n @Input()\n public ariaControls: string;\n\n @Input()\n public buttonHref: string;\n\n @Input()\n public buttonId: string;\n\n @Input()\n public buttonText: string;\n\n @Input()\n public buttonTextCount: string;\n\n @Input()\n public closeable: boolean;\n\n @Input()\n public disabled: boolean;\n\n @Input()\n public tabStyle: SkyTabsetStyle;\n\n @Output()\n public buttonClick = new EventEmitter<void>();\n\n @Output()\n public closeClick = new EventEmitter<void>();\n\n public onButtonClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.buttonClick.emit();\n event.preventDefault();\n }\n }\n\n public onButtonEnterKeyDown(event: any): void {\n this.onButtonClick(event);\n }\n\n public onCloseClick(event: any): void {\n this.closeClick.emit();\n\n // Prevent the click event from bubbling up to the anchor tag;\n // otherwise it will trigger a page refresh.\n event.stopPropagation();\n event.preventDefault();\n }\n}\n","<div\n class=\"sky-btn-tab-wrapper\"\n [ngClass]=\"{\n 'sky-btn-tab-wrapper-selected': active,\n 'sky-btn-tab-wrapper-disabled': disabled\n }\"\n>\n <a\n class=\"sky-btn-tab\"\n role=\"tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"active\"\n [attr.href]=\"buttonHref\"\n [id]=\"buttonId\"\n [ngClass]=\"{\n 'sky-btn-tab-wizard': tabStyle === 'wizard',\n 'sky-btn-tab-selected': active,\n 'sky-btn-tab-disabled': disabled,\n 'sky-tab-btn-closeable': closeable\n }\"\n [tabindex]=\"disabled ? '-1' : '0'\"\n (click)=\"onButtonClick($event)\"\n (keydown.enter)=\"onButtonEnterKeyDown($event)\"\n >\n <span\n class=\"sky-tab-heading\"\n >\n {{ buttonText }}\n <span *ngIf=\"buttonTextCount !== undefined\"\n class=\"sky-tab-header-count\"\n >\n {{ buttonTextCount }}\n </span>\n </span>\n </a>\n\n <button *ngIf=\"closeable\"\n class=\"sky-btn-tab-close\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_close' | skyLibResources:buttonText\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-tab-close-disabled': disabled\n }\"\n (click)=\"onCloseClick($event)\"\n >\n <sky-icon\n icon=\"remove\"\n ></sky-icon>\n </button>\n</div>\n","import {\n Location\n} from '@angular/common';\n\nimport {\n Injectable,\n OnDestroy\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router\n} from '@angular/router';\n\nimport {\n Observable,\n Subject,\n SubscriptionLike\n} from 'rxjs';\n\n/**\n * @internal\n */\ninterface PermalinkParams {\n [_: string]: string;\n}\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetPermalinkService implements OnDestroy {\n\n public get popStateChange(): Observable<void> {\n return this._popStateChange.asObservable();\n }\n\n private _popStateChange = new Subject<void>();\n\n private subscription: SubscriptionLike;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private location: Location,\n private router: Router\n ) { }\n\n public ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n public init(): void {\n this.subscription = this.location.subscribe(() => {\n this._popStateChange.next();\n });\n }\n\n /**\n * Returns the value of a URL query param.\n */\n public getParam(name: string): string {\n return this.getParams()[name];\n }\n\n /**\n * Sets the value of a URL query param.\n */\n public setParam(name: string, value: string | null): void {\n const params = this.getParams();\n\n if (value === null) {\n delete params[name];\n } else {\n params[name] = value;\n }\n\n // Update the URL without triggering a navigation state change.\n // See: https://stackoverflow.com/a/46486677\n const url = this.router.createUrlTree(['.'], {\n relativeTo: this.activatedRoute,\n queryParams: params,\n queryParamsHandling: 'merge'\n }).toString();\n\n // Abort redirect if the current URL is equal to the new URL.\n if (this.location.isCurrentPathEqualTo(url)) {\n return;\n }\n\n this.location.go(url);\n }\n\n /**\n * Removes the provided query param from the URL.\n */\n public clearParam(name: string): void {\n /*tslint:disable-next-line:no-null-keyword*/\n this.setParam(name, null);\n }\n\n /**\n * Returns a relative URL that includes the provided query parameter. The value is inteded to be\n * used by an HTML anchor element.\n */\n public getParamHref(name: string, value: string): string | null {\n if (!name) {\n /*tslint:disable-next-line:no-null-keyword*/\n return null;\n }\n\n const params = this.getParams();\n params[name] = value;\n\n const baseUrl = this.location.path().split('?')[0];\n const paramString = Object.keys(params).map(k => `${k}=${params[k]}`).join('&');\n\n return this.location.prepareExternalUrl(`${baseUrl}?${paramString}`);\n }\n\n /**\n * Converts the provided string into a value that can be safely used in a URL.\n */\n public urlify(value: string): string {\n if (!value) {\n return '';\n }\n\n const sanitized = value.toLowerCase()\n\n // Remove special characters.\n .replace(/[\\_\\~\\`\\@\\!\\#\\$\\%\\^\\&\\*\\(\\)\\[\\]\\{\\}\\;\\:\\'\\/\\\\\\<\\>\\,\\.\\?\\=\\+\\|\"]/g, '')\n\n // Replace space characters with a dash.\n .replace(/\\s/g, '-')\n\n // Remove any double-dashes.\n .replace(/--/g, '-');\n\n return sanitized;\n }\n\n /**\n * Returns all query params that exist in the current URL.\n */\n private getParams(): PermalinkParams {\n const params: PermalinkParams = {};\n\n const path = this.location.path();\n if (path.indexOf('?') === -1) {\n return params;\n }\n\n const existingParamPairs = path.split('?')[1].split('&');\n existingParamPairs.forEach((pair) => {\n const fragments = pair.split('=');\n params[fragments[0]] = decodeURIComponent(fragments[1]);\n });\n\n return params;\n }\n\n}\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n BehaviorSubject,\n Observable,\n Subject\n} from 'rxjs';\n\nimport {\n SkyTabIndex\n} from './tab-index';\n\nimport {\n SkyTabsetActiveTabUnregisteredArgs\n} from './tabset-active-tab-unregistered-args';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetService {\n\n public get activeTabUnregistered(): Observable<SkyTabsetActiveTabUnregisteredArgs> {\n return this._activeTabUnregistered.asObservable();\n }\n\n public get activeTabIndex(): Observable<SkyTabIndex> {\n return this._activeTabIndex.asObservable();\n }\n\n public currentActiveTabIndex: SkyTabIndex = 0;\n\n private _activeTabIndex = new BehaviorSubject<SkyTabIndex>(0);\n\n private _activeTabUnregistered = new Subject<SkyTabsetActiveTabUnregisteredArgs>();\n\n private tabs: {\n tabIndex: SkyTabIndex;\n }[] = [];\n\n private tabCounter = 0;\n\n /**\n * Sets the active tab by its unique `tabIndex` property.\n */\n public setActiveTabIndex(value: SkyTabIndex, config = {\n emitChange: true\n }): void {\n if (\n value !== undefined &&\n !this.tabIndexesEqual(value, this.currentActiveTabIndex)\n ) {\n this.currentActiveTabIndex = value;\n /* istanbul ignore else */\n if (config.emitChange) {\n this._activeTabIndex.next(value);\n }\n }\n }\n\n /**\n * Registers a tab component.\n */\n public registerTab(tabIndex?: SkyTabIndex): SkyTabIndex {\n if (tabIndex === undefined) {\n tabIndex = this.tabCounter;\n this.tabCounter++;\n }\n\n this.tabs.push({ tabIndex });\n\n return tabIndex;\n }\n\n public updateTabIndex(currentTabIndex: SkyTabIndex, newTabIndex: SkyTabIndex): void {\n const found = this.tabs.find(tab => this.tabIndexesEqual(tab.tabIndex, currentTabIndex));\n found.tabIndex = newTabIndex;\n }\n\n /**\n * Unregisters a tab component.\n */\n public unregisterTab(tabIndex: SkyTabIndex): void {\n const index = this.tabs.findIndex(tab => this.tabIndexesEqual(tab.tabIndex, tabIndex));\n\n // Notify the tabset component when an active tab is unregistered.\n if (this.isTabIndexActive(this.tabs[index].tabIndex)) {\n this._activeTabUnregistered.next({\n arrayIndex: index\n });\n }\n\n this.tabs.splice(index, 1);\n }\n\n /**\n * Unregisters all tab components at once.\n */\n public unregisterAll(): void {\n this.tabs = [];\n }\n\n /**\n * Compares two tab indexes and returns `true` if they are equal.\n */\n public tabIndexesEqual(tabIndex1: SkyTabIndex, tabIndex2: SkyTabIndex): boolean {\n return (\n tabIndex1 === tabIndex2 ||\n +tabIndex1 === +tabIndex2\n );\n }\n\n /**\n * Verifies if a provided tab index is registered.\n */\n public isValidTabIndex(tabIndex: SkyTabIndex): boolean {\n return this.tabs.some(tab => this.tabIndexesEqual(tab.tabIndex, tabIndex));\n }\n\n /**\n * Activates the first registered tab.\n */\n public activateFirstTab(): SkyTabIndex | undefined {\n const firstTabIndex = this.tabs[0] && this.tabs[0].tabIndex;\n if (firstTabIndex !== undefined) {\n this.setActiveTabIndex(firstTabIndex);\n return firstTabIndex;\n }\n }\n\n /**\n * Activates the next registered tab, or the previous one based on a provided array index.\n */\n public activateNearestTab(arrayIndex: number): void {\n const newActiveTab = this.tabs[arrayIndex] || this.tabs[arrayIndex - 1];\n if (newActiveTab) {\n this.currentActiveTabIndex = newActiveTab.tabIndex;\n }\n }\n\n private isTabIndexActive(tabIndex: SkyTabIndex): boolean {\n return this.tabIndexesEqual(tabIndex, this.currentActiveTabIndex);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nimport {\n BehaviorSubject,\n Observable\n} from 'rxjs';\n\nimport {\n SkyTabIndex\n} from './tab-index';\n\nimport {\n SkyTabsetPermalinkService\n} from './tabset-permalink.service';\n\nimport {\n SkyTabsetService\n} from './tabset.service';\n\nlet nextId = 0;\n\n@Component({\n selector: 'sky-tab',\n templateUrl: './tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkyTabComponent implements OnChanges, OnDestroy {\n\n /**\n * Indicates whether the tab is active when the tabset loads. After initialization, the `active`\n * property on the tabset component should be used to set the active tab.\n * @default false\n */\n @Input()\n public set active(value: boolean) {\n if (\n value !== undefined &&\n value !== this._active\n ) {\n this._active = value;\n this._activeChange.next();\n }\n }\n\n public get active(): boolean {\n return this._active || false;\n }\n\n public get activeChange(): Observable<void> {\n return this._activeChange.asObservable();\n }\n\n /**\n * Indicates whether to disable the tab.\n * @default false\n */\n @Input()\n public disabled: boolean;\n\n /**\n * Specifies a custom query parameter value for the tab.\n * This works in conjunction with the tabset's `permalinkId` to distinguish\n * the tab's unique state in the URL by generating a query parameter that is\n * written as `?<queryParam>-active-tab=<sanitized-tab-heading`.\n * By default, the query parameter's value is parsed automatically from the tab's heading text.\n */\n @Input()\n public set permalinkValue(value: string) {\n this._permalinkValue = this.permalinkService.urlify(value);\n }\n\n public get permalinkValue(): string {\n return this._permalinkValue || this.permalinkService.urlify(this.tabHeading);\n }\n\n /**\n * Displays a counter beside the tab header.\n */\n @Input()\n public tabHeaderCount: string;\n\n /**\n * Specifies the tab header.\n * When using tabs as the main navigation on a page,\n * use [the Angular `Title` service](https://angular.io/docs/ts/latest/cookbook/set-document-title.html)\n * and [the SKY UX `title` configuration property](https://developer.blackbaud.com/skyux/learn/reference/configuration#app)\n * to reflect the tab header in the page title.\n * @required\n */\n @Input()\n public tabHeading: string;\n\n /**\n * Specifies a unique identifier for the tab.\n * If not defined, the identifier is set to the position of the tab on load, starting with `0`.\n */\n @Input()\n public set tabIndex(value: SkyTabIndex) {\n if (\n value !== this._tabIndex &&\n value !== undefined &&\n this._tabIndex !== undefined\n ) {\n this.tabsetService.updateTabIndex(this._tabIndex, value);\n this._tabIndexChange.next(value);\n }\n\n this._tabIndex = value;\n }\n\n public get tabIndex(): SkyTabIndex {\n return this._tabIndex;\n }\n\n /**\n * Fires when users click the button to close the tab.\n * The close button is added to the tab when you specify a listener for this event.\n */\n @Output()\n public close = new EventEmitter<void>();\n\n public get closeable(): boolean {\n return this.close.observers.length > 0;\n }\n\n /**\n * Alerts the tabset component when this component has changes that need to be reflected in the UI.\n */\n public get stateChange(): Observable<void> {\n return this._stateChange.asObservable();\n }\n\n public get tabIndexChange(): Observable<SkyTabIndex> {\n return this._tabIndexChange.asObservable();\n }\n\n public showContent: boolean = false;\n\n public tabButtonId: string;\n\n public tabPanelId: string;\n\n private _active: boolean;\n\n private _activeChange = new BehaviorSubject<void>(undefined);\n\n private _permalinkValue: string;\n\n private _stateChange = new BehaviorSubject<void>(undefined);\n\n private _tabIndex: SkyTabIndex;\n\n private _tabIndexChange = new BehaviorSubject<SkyTabIndex>(undefined);\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private permalinkService: SkyTabsetPermalinkService,\n private tabsetService: SkyTabsetService\n ) {\n const id = nextId++;\n this.tabPanelId = `sky-tab-${id}`;\n this.tabButtonId = `${this.tabPanelId}-nav-btn`;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.disabled && !changes.disabled.firstChange ||\n changes.tabHeading && !changes.tabHeading.firstChange ||\n changes.tabHeaderCount && !changes.tabHeaderCount.firstChange ||\n changes.permalinkValue && !changes.permalinkValue.firstChange\n ) {\n this._stateChange.next();\n }\n }\n\n public ngOnDestroy(): void {\n this._stateChange.complete();\n this.tabsetService.unregisterTab(this.tabIndex);\n }\n\n public init(): void {\n this._tabIndex = this.tabsetService.registerTab(this.tabIndex);\n }\n\n public activate(): void {\n this._active = true;\n this.showContent = true;\n this.changeDetector.markForCheck();\n }\n\n public deactivate(): void {\n this._active = false;\n this.showContent = false;\n this.changeDetector.markForCheck();\n }\n\n}\n","<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n>\n <ng-content></ng-content>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input\n} from '@angular/core';\n\nimport {\n SkyLibResourcesService\n} from '@skyux/i18n';\n\nimport {\n forkJoin\n} from 'rxjs';\n\nimport {\n take\n} from 'rxjs/operators';\n\nimport {\n SkyTabsetComponent\n} from './tabset.component';\n\nimport {\n SkyTabComponent\n} from './tab.component';\n\nconst buttonTypeNext = 'next';\n\nconst buttonTypePrevious = 'previous';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-tabset-nav-button',\n templateUrl: './tabset-nav-button.component.html'\n})\nexport class SkyTabsetNavButtonComponent implements AfterViewInit {\n\n @Input()\n public tabset: SkyTabsetComponent;\n\n @Input()\n public buttonType: string;\n\n @Input()\n public set buttonText(value: string) {\n this._buttonText = value;\n }\n\n public get buttonText(): string {\n if (this._buttonText) {\n return this._buttonText;\n }\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n return this.previousButtonText;\n case buttonTypeNext:\n return this.nextButtonText;\n /* istanbul ignore next */\n default:\n return '';\n }\n }\n\n public get disabled(): boolean {\n let tabToSelect: SkyTabComponent;\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n tabToSelect = this.previousTab;\n break;\n case buttonTypeNext:\n tabToSelect = this.nextTab;\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n\n return !tabToSelect || tabToSelect.disabled;\n }\n\n private get selectedTab(): SkyTabComponent {\n let selectedTab: SkyTabComponent;\n\n if (this.tabset && this.tabset.tabs) {\n selectedTab = this.tabset.tabs.find((tab) => tab.tabIndex === this.tabset.lastActiveTabIndex);\n }\n\n return selectedTab;\n }\n\n private get nextTab(): SkyTabComponent {\n let selectedTab = this.selectedTab;\n\n if (selectedTab) {\n let tabs = this.tabset.tabs.toArray();\n return tabs[tabs.indexOf(selectedTab) + 1];\n }\n\n return undefined;\n }\n\n private get previousTab(): SkyTabComponent {\n let selectedTab = this.selectedTab;\n\n if (selectedTab) {\n let tabs = this.tabset.tabs.toArray();\n return tabs[tabs.indexOf(selectedTab) - 1];\n }\n\n return undefined;\n }\n\n private _buttonText: string;\n private previousButtonText: string;\n private nextButtonText: string;\n\n constructor(private resourceService: SkyLibResourcesService, private changeDetector: ChangeDetectorRef) { }\n\n public ngAfterViewInit() {\n forkJoin([\n this.resourceService.getString('skyux_tabs_navigator_previous'),\n this.resourceService.getString('skyux_tabs_navigator_next')\n ])\n .pipe(take(1))\n .subscribe(resources => {\n this.previousButtonText = resources[0];\n this.nextButtonText = resources[1];\n this.changeDetector.detectChanges();\n });\n }\n\n public buttonClick() {\n let tabToSelect: SkyTabComponent;\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n tabToSelect = this.previousTab;\n break;\n case buttonTypeNext:\n tabToSelect = this.nextTab;\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n\n /* istanbul ignore else */\n if (tabToSelect && !tabToSelect.disabled) {\n this.tabset.active = tabToSelect.tabIndex;\n }\n }\n}\n","<button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"buttonClick()\"\n>\n {{ buttonText }}\n</button>\n","import {\n ElementRef,\n Injectable\n} from '@angular/core';\n\nimport {\n BehaviorSubject,\n Observable\n} from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetAdapterService {\n\n public get overflowChange(): Observable<boolean> {\n return this._overflowChange.asObservable();\n }\n\n private currentOverflow: boolean;\n\n private tabsetRef: ElementRef;\n\n private tabsOffsetLeft: number;\n\n private _overflowChange = new BehaviorSubject<boolean>(false);\n\n public registerTabset(tabsetRef: ElementRef): void {\n this.tabsetRef = tabsetRef;\n this.tabsOffsetLeft = this.getTabsOffsetLeft(tabsetRef.nativeElement);\n }\n\n /**\n * Detects if the tab buttons are wider than the tabset container.\n */\n public detectOverflow(): void {\n const nativeElement = this.tabsetRef.nativeElement;\n\n const tabsetRect = nativeElement\n .querySelector('.sky-tabset')\n .getBoundingClientRect();\n\n const tabButtonsRect = nativeElement\n .querySelector('.sky-tabset-tabs')\n .getBoundingClientRect();\n\n const tabExtraButtonsRect = nativeElement\n .querySelector('.sky-tabset-btns')\n .getBoundingClientRect();\n\n const tabButtonsWidth = tabButtonsRect.width + tabExtraButtonsRect.width + this.tabsOffsetLeft;\n\n const newOverflow = (tabButtonsWidth > tabsetRect.width);\n if (this.currentOverflow !== newOverflow) {\n this.currentOverflow = newOverflow;\n this._overflowChange.next(this.currentOverflow);\n }\n }\n\n /**\n * Returns the number of pixels to the left of the first tab.\n */\n private getTabsOffsetLeft(tabsetEl: HTMLElement): number {\n const tabsetRect = tabsetEl.getBoundingClientRect();\n\n // The dropdown element is the first \"tab\" and always exists in the DOM, even when hidden.\n const firstTabRect = tabsetEl.querySelector('.sky-tabset-dropdown').getBoundingClientRect();\n\n return firstTabRect.left - tabsetRect.left;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {\n combineLatest,\n race,\n Subject\n} from 'rxjs';\n\nimport {\n distinctUntilChanged,\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyTabIndex\n} from './tab-index';\n\nimport {\n SkyTabsetStyle\n} from './tabset-style';\n\nimport {\n SkyTabComponent\n} from './tab.component';\n\nimport {\n SkyTabsetAdapterService\n} from './tabset-adapter.service';\n\nimport {\n SkyTabsetButtonsDisplayMode\n} from './tabset-buttons-display-mode';\n\nimport {\n SkyTabsetPermalinkService\n} from './tabset-permalink.service';\n\nimport {\n SkyTabsetService\n} from './tabset.service';\n\nimport {\n SkyTabsetTabIndexesChange\n} from './tabset-tab-indexes-change';\n\n/**\n * @internal\n */\ninterface TabButtonViewModel {\n active: boolean;\n ariaControls: string;\n buttonHref: string;\n buttonId: string;\n buttonText: string;\n buttonTextCount: string;\n closeable: boolean;\n disabled: boolean;\n tabIndex: SkyTabIndex;\n}\n\n@Component({\n selector: 'sky-tabset',\n styleUrls: ['./tabset.component.scss'],\n templateUrl: './tabset.component.html',\n providers: [\n SkyTabsetAdapterService,\n SkyTabsetPermalinkService,\n SkyTabsetService\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SkyTabsetComponent implements AfterViewInit, OnDestroy {\n\n /**\n * Activates a tab by its `tabIndex` property.\n */\n @Input()\n public set active(value: SkyTabIndex) {\n if (\n value === undefined ||\n this.tabsetService.tabIndexesEqual(value, this._active)\n ) {\n return;\n }\n\n this._active = value;\n\n if (this.tabs) {\n this.tabsetService.setActiveTabIndex(value);\n } else {\n // On init, wait for children tabs to render before broadcasting the active tab index.\n setTimeout(() => {\n if (this.tabsetService.isValidTabIndex(value)) {\n // On init, yield to the permalink ID, if it exists.\n if (this.getActiveTabIndexByPermalinkId() === undefined) {\n this.tabsetService.setActiveTabIndex(value);\n }\n } else {\n // Activate the first tab if the new tab index is invalid.\n this._active = this.tabsetService.activateFirstTab();\n }\n });\n }\n }\n\n public get active(): SkyTabIndex {\n return this._active;\n }\n\n /**\n * Specifies an ARIA label for the tabset. This sets the tabset's `aria-label` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset includes a visible label, use `ariaLabelledBy` instead.\n */\n @Input()\n public ariaLabel: string;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that labels\n * the tabset. This sets the tabset's `aria-labelledby` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset does not include a visible label, use `ariaLabel` instead.\n */\n @Input()\n public ariaLabelledBy: string;\n\n /**\n * Distinguishes a tabset's unique state in the URL by generating a query parameter\n * that is written as `?<queryParam>-active-tab=<sanitized-tab-heading>`.\n * The query parameter's value is parsed automatically from the selected tab's heading text,\n * but you can supply a custom query parameter value for each tab with its `permalinkValue`.\n */\n @Input()\n public set permalinkId(value: string) {\n if (!value) {\n return;\n }\n\n const sanitized = this.permalinkService.urlify(value);\n this._permalinkId = `${sanitized}-active-tab`;\n }\n\n public get permalinkId(): string {\n return this._permalinkId || '';\n }\n\n /**\n * Specifies the behavior for a series of tabs.\n * @deprecated The property was designed to create wizards by setting tabStyle=\"wizard\" on tabsets in modals,\n * but this wizard implementation was replaced by the\n * [progress indicator component](https://developer.blackbaud.com/skyux/components/progress-indicator).\n * @default 'tabs'\n */\n @Input()\n public set tabStyle(value: SkyTabsetStyle) {\n /*istanbul ignore else*/\n if (value && value.toLowerCase() === 'wizard') {\n console.warn(\n 'The tabset wizard is deprecated. Please implement the new approach using ' +\n 'progress indicator as documented here: https://developer.blackbaud.com/skyux/components/wizard.'\n );\n }\n\n this._tabStyle = value;\n }\n\n public get tabStyle(): SkyTabsetStyle {\n return this._tabStyle || 'tabs';\n }\n\n /**\n * Fires when the active tab changes. This event emits the index of the active tab.\n */\n @Output()\n public activeChange = new EventEmitter<SkyTabIndex>();\n\n /**\n * Fires when users click the button to add a new tab.\n * The new tab button is added to the tab area when you specify a listener for this event.\n */\n @Output()\n public newTab = new EventEmitter<void>();\n\n /**\n * Fires when users click the button to open a tab.\n * The open tab button is added to the tab area when you specify a listener for this event.\n */\n @Output()\n public openTab = new EventEmitter<void>();\n\n /**\n * Fires when any tab's `tabIndex` value changes.\n */\n @Output()\n public tabIndexesChange = new EventEmitter<SkyTabsetTabIndexesChange>();\n\n public set tabDisplayMode(value: SkyTabsetButtonsDisplayMode) {\n this._tabDisplayMode = value;\n this.changeDetector.markForCheck();\n }\n\n public get tabDisplayMode(): SkyTabsetButtonsDisplayMode {\n return this._tabDisplayMode || 'tabs';\n }\n\n @ContentChildren(SkyTabComponent)\n public tabs: QueryList<SkyTabComponent>;\n\n public dropdownTriggerButtonText: string;\n\n /**\n * This property is used by the deprecated tabset-nav-button component.\n * @internal\n */\n public lastActiveTabIndex: SkyTabIndex;\n\n public tabButtons: TabButtonViewModel[] = [];\n\n private ngUnsubscribe = new Subject<void>();\n\n private tabComponentsStateChangeUnsubscribe = new Subject<void>();\n\n private _active: SkyTabIndex;\n\n private _permalinkId: string;\n\n private _tabDisplayMode: SkyTabsetButtonsDisplayMode;\n\n private _tabStyle: SkyTabsetStyle;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private adapterService: SkyTabsetAdapterService,\n private permalinkService: SkyTabsetPermalinkService,\n private tabsetService: SkyTabsetService\n ) { }\n\n public ngAfterViewInit(): void {\n\n this.initTabComponents();\n this.listenTabComponentsStructuralChange();\n\n const initialTabIndex = this.getInitialTabIndex();\n this.tabsetService.setActiveTabIndex(initialTabIndex);\n\n this.listenTabButtonsOverflowChange();\n this.listenLocationPopStateChange();\n\n // If the currently active tab is getting unregistered, activate the next one.\n this.tabsetService.activeTabUnregistered\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(tab => {\n // Wait for the new tabs to render before activating.\n setTimeout(() => {\n this.tabsetService.activateNearestTab(tab.arrayIndex);\n });\n });\n\n // Let the tabset render the initial active index before listening for changes.\n setTimeout(() => {\n this.listenTabComponentsStateChange();\n this.listenActiveIndexChange();\n this.permalinkService.init();\n });\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.unsubscribeTabComponentsStateChange();\n this.permalinkService.clearParam(this.permalinkId);\n }\n\n public onWindowResize(): void {\n this.adapterService.detectOverflow();\n }\n\n public onTabCloseClick(tabButton: TabButtonViewModel): void {\n const tabComponent = this.tabs.find(tab =>\n this.tabsetService.tabIndexesEqual(tab.tabIndex, tabButton.tabIndex)\n );\n\n tabComponent.close.emit();\n }\n\n public onTabButtonClick(tabButton: TabButtonViewModel): void {\n this.tabsetService.setActiveTabIndex(tabButton.tabIndex);\n }\n\n public onNewTabClick(): void {\n this.newTab.emit();\n }\n\n public onOpenTabClick(): void {\n this.openTab.emit();\n }\n\n /**\n * Sets the initial active tab index based on the following criteria.\n * 1. Does the URL include a query param that reflects this tabset's active tab?\n * 2. Does one of the tab components have their `active` property set to `true`?\n * 3. Is the tabset component's `active` property set to a specific tab index?\n */\n private getInitialTabIndex(): SkyTabIndex {\n let activeIndex: SkyTabIndex = this.getActiveTabIndexByPermalinkId();\n if (activeIndex === undefined) {\n activeIndex = this.getActiveTabComponent()?.tabIndex;\n if (activeIndex === undefined) {\n activeIndex = this.active;\n }\n }\n\n return activeIndex;\n }\n\n private listenActiveIndexChange(): void {\n this.tabsetService.activeTabIndex\n .pipe(\n distinctUntilChanged(),\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe(activeIndex => {\n this.updateTabsetComponent(activeIndex);\n });\n }\n\n private listenTabComponentsStructuralChange(): void {\n this.tabs.changes\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.resetTabComponents();\n });\n }\n\n private listenTabComponentsStateChange(): void {\n combineLatest(this.tabs.map(tab => tab.activeChange))\n .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n const tabIndex = this.getActiveTabComponent()?.tabIndex;\n this.tabsetService.setActiveTabIndex(tabIndex);\n });\n });\n\n combineLatest(this.tabs.map(tab => tab.tabIndexChange))\n .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))\n .subscribe(() => {\n // Don't emit the first change.\n if (this.lastActiveTabIndex !== undefined) {\n // Wait for the tab components to render changes before updating the view.\n setTimeout(() => {\n this.updateTabsetComponent(this.tabsetService.currentActiveTabIndex, true);\n this.emitTabIndexChange();\n });\n }\n });\n\n combineLatest(this.tabs.map(tab => tab.stateChange))\n .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n this.updateTabsetComponent(this.tabsetService.currentActiveTabIndex, true);\n });\n });\n }\n\n private initTabComponents(): void {\n this.tabs.forEach(tab => tab.init());\n }\n\n private resetTabComponents(): void {\n this.unsubscribeTabComponentsStateChange();\n this.tabsetService.unregisterAll();\n\n // If there are no tab components, do a hard reset of the view.\n if (this.tabs.length === 0) {\n this.updateTabsetComponent(0, true);\n return;\n }\n\n this.initTabComponents();\n const activeIndex = this.getActiveTabComponent()?.tabIndex;\n this.tabsetService.setActiveTabIndex(activeIndex, {\n emitChange: false\n });\n this.listenTabComponentsStateChange();\n }\n\n private emitTabIndexChange(): void {\n this.tabIndexesChange.emit({\n tabs: this.tabs.map(tab => ({\n tabHeading: tab.tabHeading,\n tabIndex: tab.tabIndex\n }))\n });\n }\n\n private unsubscribeTabComponentsStateChange(): void {\n this.tabComponentsStateChangeUnsubscribe.next();\n this.tabComponentsStateChangeUnsubscribe.complete();\n this.tabComponentsStateChangeUnsubscribe = new Subject<void>();\n }\n\n private listenTabButtonsOverflowChange(): void {\n this.adapterService.registerTabset(this.elementRef);\n this.adapterService.overflowChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(isOverflowing => {\n this.tabDisplayMode = (isOverflowing) ? 'dropdown' : 'tabs';\n this.changeDetector.markForCheck();\n });\n }\n\n /**\n * Listen for back/forward history button presses to detect query param changes in the URL.\n */\n private listenLocationPopStateChange(): void {\n this.permalinkService.popStateChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.setActiveTabIndexByPermalinkId();\n });\n }\n\n private setActiveTabIndexByPermalinkId(): void {\n const activeIndex = this.getActiveTabIndexByPermalinkId();\n this.tabsetService.setActiveTabIndex(activeIndex);\n }\n\n private getActiveTabIndexByPermalinkId(): SkyTabIndex {\n if (this.permalinkId) {\n const paramValue = this.permalinkService.getParam(this.permalinkId);\n if (paramValue) {\n return this.tabs.find(tab => tab.permalinkValue === paramValue)?.tabIndex;\n }\n }\n }\n\n private getActiveTabComponent(): SkyTabComponent {\n return this.tabs.toArray().reverse().find(tab => tab.active === true);\n }\n\n private createTabButtons(activeIndex: SkyTabIndex): TabButtonViewModel[] {\n return this.tabs.map(tab => ({\n active: this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex),\n closeable: tab.closeable,\n ariaControls: tab.tabPanelId,\n disabled: tab.disabled,\n /*tslint:disable-next-line:no-null-keyword*/\n buttonHref: (tab.disabled) ? null : this.permalinkService.getParamHref(\n this.permalinkId,\n tab.permalinkValue\n ),\n buttonId: tab.tabButtonId,\n buttonTextCount: tab.tabHeaderCount,\n buttonText: tab.tabHeading,\n tabIndex: tab.tabIndex\n }));\n }\n\n private updateTabButtons(activeIndex: SkyTabIndex): void {\n this.tabButtons.forEach(button => {\n button.active = this.tabsetService.tabIndexesEqual(button.tabIndex, activeIndex);\n });\n }\n\n /**\n * Updates the UI and state of the tabset component after the tab index or\n * tab components have changed.\n * @param activeIndex The currently active tab index.\n * @param regenerateTabButtons Indicates if tab button view models should be regenerated.\n * Setting this value to `false` will simply update the existing tab buttons. Setting this value\n * to `true` is only necessary when the underlying tab components have changed and the tab\n * buttons must reflect those changes.\n */\n private updateTabsetComponent(\n activeIndex: SkyTabIndex,\n regenerateTabButtons = false\n ): void {\n\n // Activate/deactivate tab components.\n this.tabs.forEach(tab => {\n this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex)\n ? tab.activate()\n : tab.deactivate();\n });\n\n // Update the tab button models.\n if (regenerateTabButtons || !this.tabButtons.length) {\n this.tabButtons = this.createTabButtons(activeIndex);\n } else {\n this.updateTabButtons(activeIndex);\n }\n\n // Update the dropdown trigger button text.\n this.dropdownTriggerButtonText = this.tabButtons.find(b => {\n return this.tabsetService.tabIndexesEqual(b.tabIndex, activeIndex);\n })?.buttonText;\n\n // Set the query params based on active tab.\n if (this.permalinkId) {\n const activeTabComponent = this.tabs.find(tab => {\n return this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex);\n });\n this.permalinkService.setParam(this.permalinkId, activeTabComponent.permalinkValue);\n }\n\n // Wait for tab button view models to render before gauging dimensions.\n setTimeout(() => {\n this.adapterService.detectOverflow();\n });\n\n this.changeDetector.markForCheck();\n\n // Emit the new active index value to consumers.\n if (this.lastActiveTabIndex !== activeIndex) {\n this.lastActiveTabIndex = activeIndex;\n this.activeChange.emit(activeIndex);\n }\n }\n}\n","<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\"\n (window:resize)=\"onWindowResize()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\"\n buttonType=\"tab\"\n >\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span\n class=\"sky-tabset-tabs\"\n >\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </ng-container>\n </span>\n <span\n class=\"sky-tabset-btns\"\n >\n <button *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon\n icon=\"plus-circle\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon\n icon=\"folder-open-o\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template\n let-tabButton\n #tabButtonTemplate\n>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabStyle]=\"tabStyle\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n","import {\n CommonModule\n} from '@angular/common';\n\nimport {\n NgModule\n} from '@angular/core';\n\nimport {\n RouterModule\n} from '@angular/router';\n\nimport {\n SkyI18nModule\n} from '@skyux/i18n';\n\nimport {\n SkyIconModule\n} from '@skyux/indicators';\n\nimport {\n SkyDropdownModule\n} from '@skyux/popovers';\n\nimport {\n SkyThemeModule\n} from '@skyux/theme';\n\nimport {\n SkyTabsResourcesModule\n} from '../shared/sky-tabs-resources.module';\n\nimport {\n SkyTabButtonComponent\n} from './tab-button.component';\n\nimport {\n SkyTabComponent\n} from './tab.component';\n\nimport {\n SkyTabsetNavButtonComponent\n} from './tabset-nav-button.component';\n\nimport {\n SkyTabsetComponent\n} from './tabset.component';\n\n@NgModule({\n declarations: [\n SkyTabButtonComponent,\n SkyTabComponent,\n SkyTabsetComponent,\n SkyTabsetNavButtonComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n SkyDropdownModule,\n SkyI18nModule,\n SkyIconModule,\n SkyTabsResourcesModule,\n SkyThemeModule\n ],\n exports: [\n SkyTabComponent,\n SkyTabsetComponent,\n SkyTabsetNavButtonComponent\n ]\n})\nexport class SkyTabsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["BehaviorSubject","Subject","SkyMediaBreakpoints","Injectable","EventEmitter","takeUntil","trigger","transition","style","animate","Component","ChangeDetectionStrategy","Input","Output","ViewChild","SkyMediaQueryService","HostListener","nextId","getLibStringForLocale","SkyI18nModule","SKY_LIB_RESOURCES_PROVIDERS","NgModule","take","ContentChildren","CommonModule","SkyChevronModule","SkyIconModule","SkyStatusIndicatorModule","SkyThemeModule","SkyCheckboxModule","ViewEncapsulation","forkJoin","distinctUntilChanged","combineLatest","race","RouterModule","SkyDropdownModule"],"mappings":"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"}
@@ -25,7 +25,7 @@
25
25
  "originalName": "",
26
26
  "children": [
27
27
  {
28
- "id": 330,
28
+ "id": 333,
29
29
  "name": "SkySectionedFormComponent",
30
30
  "kind": 128,
31
31
  "kindString": "Class",
@@ -47,7 +47,7 @@
47
47
  ],
48
48
  "children": [
49
49
  {
50
- "id": 331,
50
+ "id": 334,
51
51
  "name": "constructor",
52
52
  "kind": 512,
53
53
  "kindString": "Constructor",
@@ -61,14 +61,14 @@
61
61
  ],
62
62
  "signatures": [
63
63
  {
64
- "id": 332,
64
+ "id": 335,
65
65
  "name": "new SkySectionedFormComponent",
66
66
  "kind": 16384,
67
67
  "kindString": "Constructor signature",
68
68
  "flags": {},
69
69
  "parameters": [
70
70
  {
71
- "id": 333,
71
+ "id": 336,
72
72
  "name": "tabService",
73
73
  "kind": 32768,
74
74
  "kindString": "Parameter",
@@ -79,7 +79,7 @@
79
79
  }
80
80
  },
81
81
  {
82
- "id": 334,
82
+ "id": 337,
83
83
  "name": "changeRef",
84
84
  "kind": 32768,
85
85
  "kindString": "Parameter",
@@ -92,14 +92,14 @@
92
92
  ],
93
93
  "type": {
94
94
  "type": "reference",
95
- "id": 330,
95
+ "id": 333,
96
96
  "name": "SkySectionedFormComponent"
97
97
  }
98
98
  }
99
99
  ]
100
100
  },
101
101
  {
102
- "id": 339,
102
+ "id": 342,
103
103
  "name": "content",
104
104
  "kind": 1024,
105
105
  "kindString": "Property",
@@ -137,7 +137,7 @@
137
137
  }
138
138
  },
139
139
  {
140
- "id": 336,
140
+ "id": 339,
141
141
  "name": "indexChanged",
142
142
  "kind": 1024,
143
143
  "kindString": "Property",
@@ -177,7 +177,7 @@
177
177
  "defaultValue": "..."
178
178
  },
179
179
  {
180
- "id": 335,
180
+ "id": 338,
181
181
  "name": "maintainSectionContent",
182
182
  "kind": 1024,
183
183
  "kindString": "Property",
@@ -217,7 +217,7 @@
217
217
  "defaultValue": "false"
218
218
  },
219
219
  {
220
- "id": 342,
220
+ "id": 345,
221
221
  "name": "tabService",
222
222
  "kind": 1024,
223
223
  "kindString": "Property",
@@ -230,7 +230,7 @@
230
230
  }
231
231
  },
232
232
  {
233
- "id": 337,
233
+ "id": 340,
234
234
  "name": "ariaRole",
235
235
  "kind": 262144,
236
236
  "kindString": "Accessor",
@@ -246,7 +246,7 @@
246
246
  ],
247
247
  "getSignature": [
248
248
  {
249
- "id": 338,
249
+ "id": 341,
250
250
  "name": "ariaRole",
251
251
  "kind": 524288,
252
252
  "kindString": "Get signature",
@@ -259,7 +259,7 @@
259
259
  ]
260
260
  },
261
261
  {
262
- "id": 345,
262
+ "id": 348,
263
263
  "name": "ngAfterViewChecked",
264
264
  "kind": 2048,
265
265
  "kindString": "Method",
@@ -275,7 +275,7 @@
275
275
  ],
276
276
  "signatures": [
277
277
  {
278
- "id": 346,
278
+ "id": 349,
279
279
  "name": "ngAfterViewChecked",
280
280
  "kind": 4096,
281
281
  "kindString": "Call signature",
@@ -296,7 +296,7 @@
296
296
  }
297
297
  },
298
298
  {
299
- "id": 347,
299
+ "id": 350,
300
300
  "name": "ngOnDestroy",
301
301
  "kind": 2048,
302
302
  "kindString": "Method",
@@ -312,7 +312,7 @@
312
312
  ],
313
313
  "signatures": [
314
314
  {
315
- "id": 348,
315
+ "id": 351,
316
316
  "name": "ngOnDestroy",
317
317
  "kind": 4096,
318
318
  "kindString": "Call signature",
@@ -333,7 +333,7 @@
333
333
  }
334
334
  },
335
335
  {
336
- "id": 343,
336
+ "id": 346,
337
337
  "name": "ngOnInit",
338
338
  "kind": 2048,
339
339
  "kindString": "Method",
@@ -349,7 +349,7 @@
349
349
  ],
350
350
  "signatures": [
351
351
  {
352
- "id": 344,
352
+ "id": 347,
353
353
  "name": "ngOnInit",
354
354
  "kind": 4096,
355
355
  "kindString": "Call signature",
@@ -370,7 +370,7 @@
370
370
  }
371
371
  },
372
372
  {
373
- "id": 351,
373
+ "id": 354,
374
374
  "name": "showTabs",
375
375
  "kind": 2048,
376
376
  "kindString": "Method",
@@ -386,7 +386,7 @@
386
386
  ],
387
387
  "signatures": [
388
388
  {
389
- "id": 352,
389
+ "id": 355,
390
390
  "name": "showTabs",
391
391
  "kind": 4096,
392
392
  "kindString": "Call signature",
@@ -399,7 +399,7 @@
399
399
  ]
400
400
  },
401
401
  {
402
- "id": 349,
402
+ "id": 352,
403
403
  "name": "tabsVisible",
404
404
  "kind": 2048,
405
405
  "kindString": "Method",
@@ -415,7 +415,7 @@
415
415
  ],
416
416
  "signatures": [
417
417
  {
418
- "id": 350,
418
+ "id": 353,
419
419
  "name": "tabsVisible",
420
420
  "kind": 4096,
421
421
  "kindString": "Call signature",
@@ -433,35 +433,35 @@
433
433
  "title": "Constructors",
434
434
  "kind": 512,
435
435
  "children": [
436
- 331
436
+ 334
437
437
  ]
438
438
  },
439
439
  {
440
440
  "title": "Properties",
441
441
  "kind": 1024,
442
442
  "children": [
443
+ 342,
443
444
  339,
444
- 336,
445
- 335,
446
- 342
445
+ 338,
446
+ 345
447
447
  ]
448
448
  },
449
449
  {
450
450
  "title": "Accessors",
451
451
  "kind": 262144,
452
452
  "children": [
453
- 337
453
+ 340
454
454
  ]
455
455
  },
456
456
  {
457
457
  "title": "Methods",
458
458
  "kind": 2048,
459
459
  "children": [
460
- 345,
461
- 347,
462
- 343,
463
- 351,
464
- 349
460
+ 348,
461
+ 350,
462
+ 346,
463
+ 354,
464
+ 352
465
465
  ]
466
466
  }
467
467
  ],
@@ -488,7 +488,7 @@
488
488
  ]
489
489
  },
490
490
  {
491
- "id": 302,
491
+ "id": 305,
492
492
  "name": "SkySectionedFormModule",
493
493
  "kind": 128,
494
494
  "kindString": "Class",
@@ -507,21 +507,21 @@
507
507
  ],
508
508
  "children": [
509
509
  {
510
- "id": 303,
510
+ "id": 306,
511
511
  "name": "constructor",
512
512
  "kind": 512,
513
513
  "kindString": "Constructor",
514
514
  "flags": {},
515
515
  "signatures": [
516
516
  {
517
- "id": 304,
517
+ "id": 307,
518
518
  "name": "new SkySectionedFormModule",
519
519
  "kind": 16384,
520
520
  "kindString": "Constructor signature",
521
521
  "flags": {},
522
522
  "type": {
523
523
  "type": "reference",
524
- "id": 302,
524
+ "id": 305,
525
525
  "name": "SkySectionedFormModule"
526
526
  }
527
527
  }
@@ -533,7 +533,7 @@
533
533
  "title": "Constructors",
534
534
  "kind": 512,
535
535
  "children": [
536
- 303
536
+ 306
537
537
  ]
538
538
  }
539
539
  ],
@@ -546,7 +546,7 @@
546
546
  ]
547
547
  },
548
548
  {
549
- "id": 305,
549
+ "id": 308,
550
550
  "name": "SkySectionedFormService",
551
551
  "kind": 128,
552
552
  "kindString": "Class",
@@ -563,28 +563,28 @@
563
563
  ],
564
564
  "children": [
565
565
  {
566
- "id": 306,
566
+ "id": 309,
567
567
  "name": "constructor",
568
568
  "kind": 512,
569
569
  "kindString": "Constructor",
570
570
  "flags": {},
571
571
  "signatures": [
572
572
  {
573
- "id": 307,
573
+ "id": 310,
574
574
  "name": "new SkySectionedFormService",
575
575
  "kind": 16384,
576
576
  "kindString": "Constructor signature",
577
577
  "flags": {},
578
578
  "type": {
579
579
  "type": "reference",
580
- "id": 305,
580
+ "id": 308,
581
581
  "name": "SkySectionedFormService"
582
582
  }
583
583
  }
584
584
  ]
585
585
  },
586
586
  {
587
- "id": 310,
587
+ "id": 313,
588
588
  "name": "invalidFieldChanged",
589
589
  "kind": 2048,
590
590
  "kindString": "Method",
@@ -600,7 +600,7 @@
600
600
  ],
601
601
  "signatures": [
602
602
  {
603
- "id": 311,
603
+ "id": 314,
604
604
  "name": "invalidFieldChanged",
605
605
  "kind": 4096,
606
606
  "kindString": "Call signature",
@@ -610,7 +610,7 @@
610
610
  },
611
611
  "parameters": [
612
612
  {
613
- "id": 312,
613
+ "id": 315,
614
614
  "name": "isInvalid",
615
615
  "kind": 32768,
616
616
  "kindString": "Parameter",
@@ -629,7 +629,7 @@
629
629
  ]
630
630
  },
631
631
  {
632
- "id": 313,
632
+ "id": 316,
633
633
  "name": "requiredFieldChanged",
634
634
  "kind": 2048,
635
635
  "kindString": "Method",
@@ -645,7 +645,7 @@
645
645
  ],
646
646
  "signatures": [
647
647
  {
648
- "id": 314,
648
+ "id": 317,
649
649
  "name": "requiredFieldChanged",
650
650
  "kind": 4096,
651
651
  "kindString": "Call signature",
@@ -655,7 +655,7 @@
655
655
  },
656
656
  "parameters": [
657
657
  {
658
- "id": 315,
658
+ "id": 318,
659
659
  "name": "isRequired",
660
660
  "kind": 32768,
661
661
  "kindString": "Parameter",
@@ -679,15 +679,15 @@
679
679
  "title": "Constructors",
680
680
  "kind": 512,
681
681
  "children": [
682
- 306
682
+ 309
683
683
  ]
684
684
  },
685
685
  {
686
686
  "title": "Methods",
687
687
  "kind": 2048,
688
688
  "children": [
689
- 310,
690
- 313
689
+ 313,
690
+ 316
691
691
  ]
692
692
  }
693
693
  ],
@@ -700,7 +700,7 @@
700
700
  ]
701
701
  },
702
702
  {
703
- "id": 324,
703
+ "id": 327,
704
704
  "name": "SkyTabsModule",
705
705
  "kind": 128,
706
706
  "kindString": "Class",
@@ -719,21 +719,21 @@
719
719
  ],
720
720
  "children": [
721
721
  {
722
- "id": 325,
722
+ "id": 328,
723
723
  "name": "constructor",
724
724
  "kind": 512,
725
725
  "kindString": "Constructor",
726
726
  "flags": {},
727
727
  "signatures": [
728
728
  {
729
- "id": 326,
729
+ "id": 329,
730
730
  "name": "new SkyTabsModule",
731
731
  "kind": 16384,
732
732
  "kindString": "Constructor signature",
733
733
  "flags": {},
734
734
  "type": {
735
735
  "type": "reference",
736
- "id": 324,
736
+ "id": 327,
737
737
  "name": "SkyTabsModule"
738
738
  }
739
739
  }
@@ -745,7 +745,7 @@
745
745
  "title": "Constructors",
746
746
  "kind": 512,
747
747
  "children": [
748
- 325
748
+ 328
749
749
  ]
750
750
  }
751
751
  ],
@@ -758,7 +758,7 @@
758
758
  ]
759
759
  },
760
760
  {
761
- "id": 327,
761
+ "id": 330,
762
762
  "name": "SkyVerticalTabsetModule",
763
763
  "kind": 128,
764
764
  "kindString": "Class",
@@ -771,27 +771,27 @@
771
771
  "name": "NgModule"
772
772
  },
773
773
  "arguments": {
774
- "obj": "{\n declarations: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent\n ],\n imports: [\n CommonModule,\n SkyChevronModule,\n SkyIconModule,\n SkyStatusIndicatorModule,\n SkyTabsResourcesModule,\n SkyThemeModule\n ],\n exports: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent\n ]\n}"
774
+ "obj": "{\n declarations: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent\n ],\n imports: [\n CommonModule,\n SkyChevronModule,\n SkyIconModule,\n SkyStatusIndicatorModule,\n SkyTabsResourcesModule,\n SkyThemeModule\n ],\n providers: [\n SkyVerticalTabsetAdapterService\n ],\n exports: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent\n ]\n}"
775
775
  }
776
776
  }
777
777
  ],
778
778
  "children": [
779
779
  {
780
- "id": 328,
780
+ "id": 331,
781
781
  "name": "constructor",
782
782
  "kind": 512,
783
783
  "kindString": "Constructor",
784
784
  "flags": {},
785
785
  "signatures": [
786
786
  {
787
- "id": 329,
787
+ "id": 332,
788
788
  "name": "new SkyVerticalTabsetModule",
789
789
  "kind": 16384,
790
790
  "kindString": "Constructor signature",
791
791
  "flags": {},
792
792
  "type": {
793
793
  "type": "reference",
794
- "id": 327,
794
+ "id": 330,
795
795
  "name": "SkyVerticalTabsetModule"
796
796
  }
797
797
  }
@@ -803,14 +803,14 @@
803
803
  "title": "Constructors",
804
804
  "kind": 512,
805
805
  "children": [
806
- 328
806
+ 331
807
807
  ]
808
808
  }
809
809
  ],
810
810
  "sources": [
811
811
  {
812
812
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tabset.module.ts",
813
- "line": 55,
813
+ "line": 62,
814
814
  "character": 13
815
815
  }
816
816
  ]
@@ -1399,7 +1399,7 @@
1399
1399
  },
1400
1400
  "type": {
1401
1401
  "type": "reference",
1402
- "id": 316,
1402
+ "id": 319,
1403
1403
  "name": "SkyTabIndex"
1404
1404
  }
1405
1405
  }
@@ -1423,7 +1423,7 @@
1423
1423
  "flags": {},
1424
1424
  "type": {
1425
1425
  "type": "reference",
1426
- "id": 316,
1426
+ "id": 319,
1427
1427
  "name": "SkyTabIndex"
1428
1428
  }
1429
1429
  }
@@ -1462,7 +1462,7 @@
1462
1462
  "typeArguments": [
1463
1463
  {
1464
1464
  "type": "reference",
1465
- "id": 316,
1465
+ "id": 319,
1466
1466
  "name": "SkyTabIndex"
1467
1467
  }
1468
1468
  ],
@@ -1853,7 +1853,7 @@
1853
1853
  "typeArguments": [
1854
1854
  {
1855
1855
  "type": "reference",
1856
- "id": 316,
1856
+ "id": 319,
1857
1857
  "name": "SkyTabIndex"
1858
1858
  }
1859
1859
  ],
@@ -2084,7 +2084,7 @@
2084
2084
  "typeArguments": [
2085
2085
  {
2086
2086
  "type": "reference",
2087
- "id": 319,
2087
+ "id": 322,
2088
2088
  "name": "SkyTabsetTabIndexesChange"
2089
2089
  }
2090
2090
  ],
@@ -2168,7 +2168,7 @@
2168
2168
  },
2169
2169
  "type": {
2170
2170
  "type": "reference",
2171
- "id": 316,
2171
+ "id": 319,
2172
2172
  "name": "SkyTabIndex"
2173
2173
  }
2174
2174
  }
@@ -2192,7 +2192,7 @@
2192
2192
  "flags": {},
2193
2193
  "type": {
2194
2194
  "type": "reference",
2195
- "id": 316,
2195
+ "id": 319,
2196
2196
  "name": "SkyTabIndex"
2197
2197
  }
2198
2198
  }
@@ -2299,7 +2299,7 @@
2299
2299
  "flags": {},
2300
2300
  "type": {
2301
2301
  "type": "reference",
2302
- "id": 317,
2302
+ "id": 320,
2303
2303
  "name": "SkyTabsetButtonsDisplayMode"
2304
2304
  }
2305
2305
  }
@@ -2320,7 +2320,7 @@
2320
2320
  "flags": {},
2321
2321
  "type": {
2322
2322
  "type": "reference",
2323
- "id": 317,
2323
+ "id": 320,
2324
2324
  "name": "SkyTabsetButtonsDisplayMode"
2325
2325
  }
2326
2326
  }
@@ -2369,7 +2369,7 @@
2369
2369
  },
2370
2370
  "type": {
2371
2371
  "type": "reference",
2372
- "id": 318,
2372
+ "id": 321,
2373
2373
  "name": "SkyTabsetStyle"
2374
2374
  }
2375
2375
  }
@@ -2403,7 +2403,7 @@
2403
2403
  "flags": {},
2404
2404
  "type": {
2405
2405
  "type": "reference",
2406
- "id": 318,
2406
+ "id": 321,
2407
2407
  "name": "SkyTabsetStyle"
2408
2408
  }
2409
2409
  }
@@ -2740,7 +2740,7 @@
2740
2740
  "name": "Component"
2741
2741
  },
2742
2742
  "arguments": {
2743
- "obj": "{\n selector: 'sky-vertical-tab',\n templateUrl: './vertical-tab.component.html',\n styleUrls: ['./vertical-tab.component.scss'],\n providers: [\n SkyVerticalTabMediaQueryService,\n SkyVerticalTabsetAdapterService,\n { provide: SkyMediaQueryService, useExisting: SkyVerticalTabMediaQueryService }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n}"
2743
+ "obj": "{\n selector: 'sky-vertical-tab',\n templateUrl: './vertical-tab.component.html',\n styleUrls: ['./vertical-tab.component.scss'],\n providers: [\n SkyVerticalTabMediaQueryService,\n { provide: SkyMediaQueryService, useExisting: SkyVerticalTabMediaQueryService }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n}"
2744
2744
  }
2745
2745
  }
2746
2746
  ],
@@ -2754,7 +2754,7 @@
2754
2754
  "sources": [
2755
2755
  {
2756
2756
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
2757
- "line": 179,
2757
+ "line": 178,
2758
2758
  "character": 2
2759
2759
  }
2760
2760
  ],
@@ -2843,7 +2843,7 @@
2843
2843
  "sources": [
2844
2844
  {
2845
2845
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
2846
- "line": 53,
2846
+ "line": 52,
2847
2847
  "character": 9
2848
2848
  }
2849
2849
  ],
@@ -2877,7 +2877,7 @@
2877
2877
  "sources": [
2878
2878
  {
2879
2879
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
2880
- "line": 103,
2880
+ "line": 102,
2881
2881
  "character": 9
2882
2882
  }
2883
2883
  ],
@@ -2898,7 +2898,7 @@
2898
2898
  "sources": [
2899
2899
  {
2900
2900
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
2901
- "line": 160,
2901
+ "line": 159,
2902
2902
  "character": 9
2903
2903
  }
2904
2904
  ],
@@ -2930,7 +2930,7 @@
2930
2930
  "sources": [
2931
2931
  {
2932
2932
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
2933
- "line": 163,
2933
+ "line": 162,
2934
2934
  "character": 9
2935
2935
  }
2936
2936
  ],
@@ -2969,7 +2969,7 @@
2969
2969
  "sources": [
2970
2970
  {
2971
2971
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
2972
- "line": 116,
2972
+ "line": 115,
2973
2973
  "character": 9
2974
2974
  }
2975
2975
  ],
@@ -3008,7 +3008,7 @@
3008
3008
  "sources": [
3009
3009
  {
3010
3010
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
3011
- "line": 123,
3011
+ "line": 122,
3012
3012
  "character": 9
3013
3013
  }
3014
3014
  ],
@@ -3041,7 +3041,7 @@
3041
3041
  "sources": [
3042
3042
  {
3043
3043
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
3044
- "line": 142,
3044
+ "line": 141,
3045
3045
  "character": 9
3046
3046
  }
3047
3047
  ],
@@ -3071,7 +3071,7 @@
3071
3071
  "sources": [
3072
3072
  {
3073
3073
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
3074
- "line": 61,
3074
+ "line": 60,
3075
3075
  "character": 13
3076
3076
  }
3077
3077
  ],
@@ -3142,7 +3142,7 @@
3142
3142
  "sources": [
3143
3143
  {
3144
3144
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
3145
- "line": 89,
3145
+ "line": 88,
3146
3146
  "character": 13
3147
3147
  }
3148
3148
  ],
@@ -3209,7 +3209,7 @@
3209
3209
  "sources": [
3210
3210
  {
3211
3211
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
3212
- "line": 144,
3212
+ "line": 143,
3213
3213
  "character": 13
3214
3214
  }
3215
3215
  ],
@@ -3264,7 +3264,7 @@
3264
3264
  "sources": [
3265
3265
  {
3266
3266
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
3267
- "line": 224,
3267
+ "line": 223,
3268
3268
  "character": 9
3269
3269
  }
3270
3270
  ],
@@ -3293,7 +3293,7 @@
3293
3293
  "sources": [
3294
3294
  {
3295
3295
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
3296
- "line": 209,
3296
+ "line": 208,
3297
3297
  "character": 9
3298
3298
  }
3299
3299
  ],
@@ -3330,7 +3330,7 @@
3330
3330
  "sources": [
3331
3331
  {
3332
3332
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
3333
- "line": 186,
3333
+ "line": 185,
3334
3334
  "character": 9
3335
3335
  }
3336
3336
  ],
@@ -3379,7 +3379,7 @@
3379
3379
  "sources": [
3380
3380
  {
3381
3381
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
3382
- "line": 234,
3382
+ "line": 233,
3383
3383
  "character": 9
3384
3384
  }
3385
3385
  ],
@@ -3408,7 +3408,7 @@
3408
3408
  "sources": [
3409
3409
  {
3410
3410
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
3411
- "line": 238,
3411
+ "line": 237,
3412
3412
  "character": 9
3413
3413
  }
3414
3414
  ],
@@ -3437,7 +3437,7 @@
3437
3437
  "sources": [
3438
3438
  {
3439
3439
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
3440
- "line": 216,
3440
+ "line": 215,
3441
3441
  "character": 9
3442
3442
  }
3443
3443
  ],
@@ -3502,7 +3502,7 @@
3502
3502
  "sources": [
3503
3503
  {
3504
3504
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts",
3505
- "line": 48,
3505
+ "line": 47,
3506
3506
  "character": 13
3507
3507
  }
3508
3508
  ],
@@ -3568,7 +3568,7 @@
3568
3568
  "flags": {},
3569
3569
  "type": {
3570
3570
  "type": "reference",
3571
- "id": 305,
3571
+ "id": 308,
3572
3572
  "name": "SkySectionedFormService"
3573
3573
  }
3574
3574
  },
@@ -4033,7 +4033,7 @@
4033
4033
  "name": "Component"
4034
4034
  },
4035
4035
  "arguments": {
4036
- "obj": "{\n selector: 'sky-vertical-tabset',\n templateUrl: './vertical-tabset.component.html',\n styleUrls: ['./vertical-tabset.component.scss'],\n providers: [SkyVerticalTabsetService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabGroupEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(-100%)'}),\n animate('150ms ease-in')\n ])\n ]\n ),\n trigger(\n 'contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(100%)'}),\n animate('150ms ease-in')\n ])\n ]\n )\n ]\n}"
4036
+ "obj": "{\n selector: 'sky-vertical-tabset',\n templateUrl: './vertical-tabset.component.html',\n styleUrls: ['./vertical-tabset.component.scss'],\n providers: [\n SkyVerticalTabsetService\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabGroupEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(-100%)'}),\n animate('150ms ease-in')\n ])\n ]\n ),\n trigger(\n 'contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(100%)'}),\n animate('150ms ease-in')\n ])\n ]\n )\n ]\n}"
4037
4037
  }
4038
4038
  }
4039
4039
  ],
@@ -4047,7 +4047,7 @@
4047
4047
  "sources": [
4048
4048
  {
4049
4049
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts",
4050
- "line": 116,
4050
+ "line": 127,
4051
4051
  "character": 2
4052
4052
  }
4053
4053
  ],
@@ -4061,6 +4061,17 @@
4061
4061
  "parameters": [
4062
4062
  {
4063
4063
  "id": 251,
4064
+ "name": "adapterService",
4065
+ "kind": 32768,
4066
+ "kindString": "Parameter",
4067
+ "flags": {},
4068
+ "type": {
4069
+ "type": "reference",
4070
+ "name": "SkyVerticalTabsetAdapterService"
4071
+ }
4072
+ },
4073
+ {
4074
+ "id": 252,
4064
4075
  "name": "tabService",
4065
4076
  "kind": 32768,
4066
4077
  "kindString": "Parameter",
@@ -4071,7 +4082,7 @@
4071
4082
  }
4072
4083
  },
4073
4084
  {
4074
- "id": 252,
4085
+ "id": 253,
4075
4086
  "name": "resources",
4076
4087
  "kind": 32768,
4077
4088
  "kindString": "Parameter",
@@ -4082,7 +4093,7 @@
4082
4093
  }
4083
4094
  },
4084
4095
  {
4085
- "id": 253,
4096
+ "id": 254,
4086
4097
  "name": "changeRef",
4087
4098
  "kind": 32768,
4088
4099
  "kindString": "Parameter",
@@ -4102,7 +4113,7 @@
4102
4113
  ]
4103
4114
  },
4104
4115
  {
4105
- "id": 260,
4116
+ "id": 261,
4106
4117
  "name": "activeChange",
4107
4118
  "kind": 1024,
4108
4119
  "kindString": "Property",
@@ -4125,7 +4136,7 @@
4125
4136
  "sources": [
4126
4137
  {
4127
4138
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts",
4128
- "line": 104,
4139
+ "line": 112,
4129
4140
  "character": 9
4130
4141
  }
4131
4142
  ],
@@ -4142,7 +4153,20 @@
4142
4153
  "defaultValue": "..."
4143
4154
  },
4144
4155
  {
4145
- "id": 262,
4156
+ "id": 268,
4157
+ "name": "adapterService",
4158
+ "kind": 1024,
4159
+ "kindString": "Property",
4160
+ "flags": {
4161
+ "isPublic": true
4162
+ },
4163
+ "type": {
4164
+ "type": "reference",
4165
+ "name": "SkyVerticalTabsetAdapterService"
4166
+ }
4167
+ },
4168
+ {
4169
+ "id": 263,
4146
4170
  "name": "content",
4147
4171
  "kind": 1024,
4148
4172
  "kindString": "Property",
@@ -4164,7 +4188,7 @@
4164
4188
  "sources": [
4165
4189
  {
4166
4190
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts",
4167
- "line": 110,
4191
+ "line": 118,
4168
4192
  "character": 9
4169
4193
  }
4170
4194
  ],
@@ -4180,7 +4204,7 @@
4180
4204
  }
4181
4205
  },
4182
4206
  {
4183
- "id": 259,
4207
+ "id": 260,
4184
4208
  "name": "maintainTabContent",
4185
4209
  "kind": 1024,
4186
4210
  "kindString": "Property",
@@ -4209,7 +4233,7 @@
4209
4233
  "sources": [
4210
4234
  {
4211
4235
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts",
4212
- "line": 97,
4236
+ "line": 105,
4213
4237
  "character": 9
4214
4238
  }
4215
4239
  ],
@@ -4220,7 +4244,7 @@
4220
4244
  "defaultValue": "false"
4221
4245
  },
4222
4246
  {
4223
- "id": 254,
4247
+ "id": 255,
4224
4248
  "name": "showTabsText",
4225
4249
  "kind": 1024,
4226
4250
  "kindString": "Property",
@@ -4243,7 +4267,7 @@
4243
4267
  "sources": [
4244
4268
  {
4245
4269
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts",
4246
- "line": 70,
4270
+ "line": 78,
4247
4271
  "character": 9
4248
4272
  }
4249
4273
  ],
@@ -4253,7 +4277,7 @@
4253
4277
  }
4254
4278
  },
4255
4279
  {
4256
- "id": 261,
4280
+ "id": 262,
4257
4281
  "name": "tabGroups",
4258
4282
  "kind": 1024,
4259
4283
  "kindString": "Property",
@@ -4268,14 +4292,14 @@
4268
4292
  "name": "ViewChild"
4269
4293
  },
4270
4294
  "arguments": {
4271
- "selector": "'contentWrapper'"
4295
+ "selector": "'groupContainerWrapper'"
4272
4296
  }
4273
4297
  }
4274
4298
  ],
4275
4299
  "sources": [
4276
4300
  {
4277
4301
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts",
4278
- "line": 107,
4302
+ "line": 115,
4279
4303
  "character": 9
4280
4304
  }
4281
4305
  ],
@@ -4291,7 +4315,7 @@
4291
4315
  }
4292
4316
  },
4293
4317
  {
4294
- "id": 266,
4318
+ "id": 269,
4295
4319
  "name": "tabService",
4296
4320
  "kind": 1024,
4297
4321
  "kindString": "Property",
@@ -4304,7 +4328,7 @@
4304
4328
  }
4305
4329
  },
4306
4330
  {
4307
- "id": 255,
4331
+ "id": 256,
4308
4332
  "name": "ariaRole",
4309
4333
  "kind": 262144,
4310
4334
  "kindString": "Accessor",
@@ -4324,13 +4348,13 @@
4324
4348
  "sources": [
4325
4349
  {
4326
4350
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts",
4327
- "line": 81,
4351
+ "line": 89,
4328
4352
  "character": 13
4329
4353
  }
4330
4354
  ],
4331
4355
  "getSignature": [
4332
4356
  {
4333
- "id": 256,
4357
+ "id": 257,
4334
4358
  "name": "ariaRole",
4335
4359
  "kind": 524288,
4336
4360
  "kindString": "Get signature",
@@ -4352,7 +4376,7 @@
4352
4376
  ],
4353
4377
  "setSignature": [
4354
4378
  {
4355
- "id": 257,
4379
+ "id": 258,
4356
4380
  "name": "ariaRole",
4357
4381
  "kind": 1048576,
4358
4382
  "kindString": "Set signature",
@@ -4362,7 +4386,7 @@
4362
4386
  },
4363
4387
  "parameters": [
4364
4388
  {
4365
- "id": 258,
4389
+ "id": 259,
4366
4390
  "name": "value",
4367
4391
  "kind": 32768,
4368
4392
  "kindString": "Parameter",
@@ -4381,7 +4405,7 @@
4381
4405
  ]
4382
4406
  },
4383
4407
  {
4384
- "id": 269,
4408
+ "id": 272,
4385
4409
  "name": "ngAfterViewChecked",
4386
4410
  "kind": 2048,
4387
4411
  "kindString": "Method",
@@ -4391,13 +4415,13 @@
4391
4415
  "sources": [
4392
4416
  {
4393
4417
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts",
4394
- "line": 156,
4418
+ "line": 171,
4395
4419
  "character": 9
4396
4420
  }
4397
4421
  ],
4398
4422
  "signatures": [
4399
4423
  {
4400
- "id": 270,
4424
+ "id": 273,
4401
4425
  "name": "ngAfterViewChecked",
4402
4426
  "kind": 4096,
4403
4427
  "kindString": "Call signature",
@@ -4418,7 +4442,7 @@
4418
4442
  }
4419
4443
  },
4420
4444
  {
4421
- "id": 271,
4445
+ "id": 274,
4422
4446
  "name": "ngOnDestroy",
4423
4447
  "kind": 2048,
4424
4448
  "kindString": "Method",
@@ -4428,13 +4452,13 @@
4428
4452
  "sources": [
4429
4453
  {
4430
4454
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts",
4431
- "line": 161,
4455
+ "line": 176,
4432
4456
  "character": 9
4433
4457
  }
4434
4458
  ],
4435
4459
  "signatures": [
4436
4460
  {
4437
- "id": 272,
4461
+ "id": 275,
4438
4462
  "name": "ngOnDestroy",
4439
4463
  "kind": 4096,
4440
4464
  "kindString": "Call signature",
@@ -4455,7 +4479,7 @@
4455
4479
  }
4456
4480
  },
4457
4481
  {
4458
- "id": 267,
4482
+ "id": 270,
4459
4483
  "name": "ngOnInit",
4460
4484
  "kind": 2048,
4461
4485
  "kindString": "Method",
@@ -4465,13 +4489,13 @@
4465
4489
  "sources": [
4466
4490
  {
4467
4491
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts",
4468
- "line": 121,
4492
+ "line": 133,
4469
4493
  "character": 9
4470
4494
  }
4471
4495
  ],
4472
4496
  "signatures": [
4473
4497
  {
4474
- "id": 268,
4498
+ "id": 271,
4475
4499
  "name": "ngOnInit",
4476
4500
  "kind": 4096,
4477
4501
  "kindString": "Call signature",
@@ -4504,35 +4528,36 @@
4504
4528
  "title": "Properties",
4505
4529
  "kind": 1024,
4506
4530
  "children": [
4531
+ 261,
4532
+ 268,
4533
+ 263,
4507
4534
  260,
4535
+ 255,
4508
4536
  262,
4509
- 259,
4510
- 254,
4511
- 261,
4512
- 266
4537
+ 269
4513
4538
  ]
4514
4539
  },
4515
4540
  {
4516
4541
  "title": "Accessors",
4517
4542
  "kind": 262144,
4518
4543
  "children": [
4519
- 255
4544
+ 256
4520
4545
  ]
4521
4546
  },
4522
4547
  {
4523
4548
  "title": "Methods",
4524
4549
  "kind": 2048,
4525
4550
  "children": [
4526
- 269,
4527
- 271,
4528
- 267
4551
+ 272,
4552
+ 274,
4553
+ 270
4529
4554
  ]
4530
4555
  }
4531
4556
  ],
4532
4557
  "sources": [
4533
4558
  {
4534
4559
  "fileName": "projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts",
4535
- "line": 64,
4560
+ "line": 72,
4536
4561
  "character": 13
4537
4562
  }
4538
4563
  ],
@@ -4552,7 +4577,7 @@
4552
4577
  ]
4553
4578
  },
4554
4579
  {
4555
- "id": 273,
4580
+ "id": 276,
4556
4581
  "name": "SkyVerticalTabsetGroupComponent",
4557
4582
  "kind": 128,
4558
4583
  "kindString": "Class",
@@ -4571,7 +4596,7 @@
4571
4596
  ],
4572
4597
  "children": [
4573
4598
  {
4574
- "id": 274,
4599
+ "id": 277,
4575
4600
  "name": "constructor",
4576
4601
  "kind": 512,
4577
4602
  "kindString": "Constructor",
@@ -4585,14 +4610,14 @@
4585
4610
  ],
4586
4611
  "signatures": [
4587
4612
  {
4588
- "id": 275,
4613
+ "id": 278,
4589
4614
  "name": "SkyVerticalTabsetGroupComponent",
4590
4615
  "kind": 16384,
4591
4616
  "kindString": "Constructor signature",
4592
4617
  "flags": {},
4593
4618
  "parameters": [
4594
4619
  {
4595
- "id": 276,
4620
+ "id": 279,
4596
4621
  "name": "tabService",
4597
4622
  "kind": 32768,
4598
4623
  "kindString": "Parameter",
@@ -4603,7 +4628,7 @@
4603
4628
  }
4604
4629
  },
4605
4630
  {
4606
- "id": 277,
4631
+ "id": 280,
4607
4632
  "name": "changeRef",
4608
4633
  "kind": 32768,
4609
4634
  "kindString": "Parameter",
@@ -4616,14 +4641,14 @@
4616
4641
  ],
4617
4642
  "type": {
4618
4643
  "type": "reference",
4619
- "id": 273,
4644
+ "id": 276,
4620
4645
  "name": "SkyVerticalTabsetGroupComponent"
4621
4646
  }
4622
4647
  }
4623
4648
  ]
4624
4649
  },
4625
4650
  {
4626
- "id": 278,
4651
+ "id": 281,
4627
4652
  "name": "disabled",
4628
4653
  "kind": 1024,
4629
4654
  "kindString": "Property",
@@ -4662,7 +4687,7 @@
4662
4687
  }
4663
4688
  },
4664
4689
  {
4665
- "id": 279,
4690
+ "id": 282,
4666
4691
  "name": "groupHeading",
4667
4692
  "kind": 1024,
4668
4693
  "kindString": "Property",
@@ -4695,7 +4720,7 @@
4695
4720
  }
4696
4721
  },
4697
4722
  {
4698
- "id": 280,
4723
+ "id": 283,
4699
4724
  "name": "open",
4700
4725
  "kind": 262144,
4701
4726
  "kindString": "Accessor",
@@ -4721,7 +4746,7 @@
4721
4746
  ],
4722
4747
  "getSignature": [
4723
4748
  {
4724
- "id": 281,
4749
+ "id": 284,
4725
4750
  "name": "open",
4726
4751
  "kind": 524288,
4727
4752
  "kindString": "Get signature",
@@ -4737,7 +4762,7 @@
4737
4762
  ],
4738
4763
  "setSignature": [
4739
4764
  {
4740
- "id": 282,
4765
+ "id": 285,
4741
4766
  "name": "open",
4742
4767
  "kind": 1048576,
4743
4768
  "kindString": "Set signature",
@@ -4753,7 +4778,7 @@
4753
4778
  },
4754
4779
  "parameters": [
4755
4780
  {
4756
- "id": 283,
4781
+ "id": 286,
4757
4782
  "name": "value",
4758
4783
  "kind": 32768,
4759
4784
  "kindString": "Parameter",
@@ -4772,7 +4797,7 @@
4772
4797
  ]
4773
4798
  },
4774
4799
  {
4775
- "id": 290,
4800
+ "id": 293,
4776
4801
  "name": "ngOnDestroy",
4777
4802
  "kind": 2048,
4778
4803
  "kindString": "Method",
@@ -4788,7 +4813,7 @@
4788
4813
  ],
4789
4814
  "signatures": [
4790
4815
  {
4791
- "id": 291,
4816
+ "id": 294,
4792
4817
  "name": "ngOnDestroy",
4793
4818
  "kind": 4096,
4794
4819
  "kindString": "Call signature",
@@ -4809,7 +4834,7 @@
4809
4834
  }
4810
4835
  },
4811
4836
  {
4812
- "id": 288,
4837
+ "id": 291,
4813
4838
  "name": "ngOnInit",
4814
4839
  "kind": 2048,
4815
4840
  "kindString": "Method",
@@ -4825,7 +4850,7 @@
4825
4850
  ],
4826
4851
  "signatures": [
4827
4852
  {
4828
- "id": 289,
4853
+ "id": 292,
4829
4854
  "name": "ngOnInit",
4830
4855
  "kind": 4096,
4831
4856
  "kindString": "Call signature",
@@ -4846,7 +4871,7 @@
4846
4871
  }
4847
4872
  },
4848
4873
  {
4849
- "id": 294,
4874
+ "id": 297,
4850
4875
  "name": "subMenuOpen",
4851
4876
  "kind": 2048,
4852
4877
  "kindString": "Method",
@@ -4862,7 +4887,7 @@
4862
4887
  ],
4863
4888
  "signatures": [
4864
4889
  {
4865
- "id": 295,
4890
+ "id": 298,
4866
4891
  "name": "subMenuOpen",
4867
4892
  "kind": 4096,
4868
4893
  "kindString": "Call signature",
@@ -4875,7 +4900,7 @@
4875
4900
  ]
4876
4901
  },
4877
4902
  {
4878
- "id": 296,
4903
+ "id": 299,
4879
4904
  "name": "tabClicked",
4880
4905
  "kind": 2048,
4881
4906
  "kindString": "Method",
@@ -4891,7 +4916,7 @@
4891
4916
  ],
4892
4917
  "signatures": [
4893
4918
  {
4894
- "id": 297,
4919
+ "id": 300,
4895
4920
  "name": "tabClicked",
4896
4921
  "kind": 4096,
4897
4922
  "kindString": "Call signature",
@@ -4904,7 +4929,7 @@
4904
4929
  ]
4905
4930
  },
4906
4931
  {
4907
- "id": 298,
4932
+ "id": 301,
4908
4933
  "name": "tabsHidden",
4909
4934
  "kind": 2048,
4910
4935
  "kindString": "Method",
@@ -4920,7 +4945,7 @@
4920
4945
  ],
4921
4946
  "signatures": [
4922
4947
  {
4923
- "id": 299,
4948
+ "id": 302,
4924
4949
  "name": "tabsHidden",
4925
4950
  "kind": 4096,
4926
4951
  "kindString": "Call signature",
@@ -4933,7 +4958,7 @@
4933
4958
  ]
4934
4959
  },
4935
4960
  {
4936
- "id": 300,
4961
+ "id": 303,
4937
4962
  "name": "tabsShown",
4938
4963
  "kind": 2048,
4939
4964
  "kindString": "Method",
@@ -4949,7 +4974,7 @@
4949
4974
  ],
4950
4975
  "signatures": [
4951
4976
  {
4952
- "id": 301,
4977
+ "id": 304,
4953
4978
  "name": "tabsShown",
4954
4979
  "kind": 4096,
4955
4980
  "kindString": "Call signature",
@@ -4962,7 +4987,7 @@
4962
4987
  ]
4963
4988
  },
4964
4989
  {
4965
- "id": 292,
4990
+ "id": 295,
4966
4991
  "name": "toggleMenuOpen",
4967
4992
  "kind": 2048,
4968
4993
  "kindString": "Method",
@@ -4978,7 +5003,7 @@
4978
5003
  ],
4979
5004
  "signatures": [
4980
5005
  {
4981
- "id": 293,
5006
+ "id": 296,
4982
5007
  "name": "toggleMenuOpen",
4983
5008
  "kind": 4096,
4984
5009
  "kindString": "Call signature",
@@ -4996,35 +5021,35 @@
4996
5021
  "title": "Constructors",
4997
5022
  "kind": 512,
4998
5023
  "children": [
4999
- 274
5024
+ 277
5000
5025
  ]
5001
5026
  },
5002
5027
  {
5003
5028
  "title": "Properties",
5004
5029
  "kind": 1024,
5005
5030
  "children": [
5006
- 278,
5007
- 279
5031
+ 281,
5032
+ 282
5008
5033
  ]
5009
5034
  },
5010
5035
  {
5011
5036
  "title": "Accessors",
5012
5037
  "kind": 262144,
5013
5038
  "children": [
5014
- 280
5039
+ 283
5015
5040
  ]
5016
5041
  },
5017
5042
  {
5018
5043
  "title": "Methods",
5019
5044
  "kind": 2048,
5020
5045
  "children": [
5021
- 290,
5022
- 288,
5023
- 294,
5024
- 296,
5025
- 298,
5026
- 300,
5027
- 292
5046
+ 293,
5047
+ 291,
5048
+ 297,
5049
+ 299,
5050
+ 301,
5051
+ 303,
5052
+ 295
5028
5053
  ]
5029
5054
  }
5030
5055
  ],
@@ -5047,14 +5072,14 @@
5047
5072
  ]
5048
5073
  },
5049
5074
  {
5050
- "id": 319,
5075
+ "id": 322,
5051
5076
  "name": "SkyTabsetTabIndexesChange",
5052
5077
  "kind": 256,
5053
5078
  "kindString": "Interface",
5054
5079
  "flags": {},
5055
5080
  "children": [
5056
5081
  {
5057
- "id": 320,
5082
+ "id": 323,
5058
5083
  "name": "tabs",
5059
5084
  "kind": 1024,
5060
5085
  "kindString": "Property",
@@ -5073,14 +5098,14 @@
5073
5098
  "elementType": {
5074
5099
  "type": "reflection",
5075
5100
  "declaration": {
5076
- "id": 321,
5101
+ "id": 324,
5077
5102
  "name": "__type",
5078
5103
  "kind": 65536,
5079
5104
  "kindString": "Type literal",
5080
5105
  "flags": {},
5081
5106
  "children": [
5082
5107
  {
5083
- "id": 322,
5108
+ "id": 325,
5084
5109
  "name": "tabHeading",
5085
5110
  "kind": 1024,
5086
5111
  "kindString": "Property",
@@ -5098,7 +5123,7 @@
5098
5123
  }
5099
5124
  },
5100
5125
  {
5101
- "id": 323,
5126
+ "id": 326,
5102
5127
  "name": "tabIndex",
5103
5128
  "kind": 1024,
5104
5129
  "kindString": "Property",
@@ -5112,7 +5137,7 @@
5112
5137
  ],
5113
5138
  "type": {
5114
5139
  "type": "reference",
5115
- "id": 316,
5140
+ "id": 319,
5116
5141
  "name": "SkyTabIndex"
5117
5142
  }
5118
5143
  }
@@ -5122,8 +5147,8 @@
5122
5147
  "title": "Properties",
5123
5148
  "kind": 1024,
5124
5149
  "children": [
5125
- 322,
5126
- 323
5150
+ 325,
5151
+ 326
5127
5152
  ]
5128
5153
  }
5129
5154
  ]
@@ -5137,7 +5162,7 @@
5137
5162
  "title": "Properties",
5138
5163
  "kind": 1024,
5139
5164
  "children": [
5140
- 320
5165
+ 323
5141
5166
  ]
5142
5167
  }
5143
5168
  ],
@@ -5150,7 +5175,7 @@
5150
5175
  ]
5151
5176
  },
5152
5177
  {
5153
- "id": 316,
5178
+ "id": 319,
5154
5179
  "name": "SkyTabIndex",
5155
5180
  "kind": 4194304,
5156
5181
  "kindString": "Type alias",
@@ -5177,7 +5202,7 @@
5177
5202
  }
5178
5203
  },
5179
5204
  {
5180
- "id": 317,
5205
+ "id": 320,
5181
5206
  "name": "SkyTabsetButtonsDisplayMode",
5182
5207
  "kind": 4194304,
5183
5208
  "kindString": "Type alias",
@@ -5204,7 +5229,7 @@
5204
5229
  }
5205
5230
  },
5206
5231
  {
5207
- "id": 318,
5232
+ "id": 321,
5208
5233
  "name": "SkyTabsetStyle",
5209
5234
  "kind": 4194304,
5210
5235
  "kindString": "Type alias",
@@ -5236,33 +5261,33 @@
5236
5261
  "title": "Classes",
5237
5262
  "kind": 128,
5238
5263
  "children": [
5239
- 330,
5240
- 302,
5264
+ 333,
5241
5265
  305,
5242
- 324,
5266
+ 308,
5243
5267
  327,
5268
+ 330,
5244
5269
  1,
5245
5270
  51,
5246
5271
  169,
5247
5272
  224,
5248
5273
  248,
5249
- 273
5274
+ 276
5250
5275
  ]
5251
5276
  },
5252
5277
  {
5253
5278
  "title": "Interfaces",
5254
5279
  "kind": 256,
5255
5280
  "children": [
5256
- 319
5281
+ 322
5257
5282
  ]
5258
5283
  },
5259
5284
  {
5260
5285
  "title": "Type aliases",
5261
5286
  "kind": 4194304,
5262
5287
  "children": [
5263
- 316,
5264
- 317,
5265
- 318
5288
+ 319,
5289
+ 320,
5290
+ 321
5266
5291
  ]
5267
5292
  }
5268
5293
  ],
@@ -5278,7 +5303,7 @@
5278
5303
  {
5279
5304
  "fileName": "demo-address-form.component.html",
5280
5305
  "filePath": "/projects/tabs/documentation/code-examples/sectioned-form/basic/demo-address-form.component.html",
5281
- "rawContents": "<div\n class=\"sky-emphasized\"\n style=\"margin-bottom: 5px;\"\n>\n <label>\n Home\n </label>\n</div>\n<div>\n 410 17th Street\n</div>\n<div>\n Denver, CO 80202-4402\n</div>\n<div\n class=\"sky-emphasized\"\n style=\"margin: 5px 0 5px 0;\"\n>\n <label>\n Vacation\n </label>\n</div>\n<div>\n 3345 Franciscan Way\n</div>\n<div>\n Tampa, FL 10255-0098\n</div>\n"
5306
+ "rawContents": "<div>Address form</div>\n"
5282
5307
  },
5283
5308
  {
5284
5309
  "fileName": "demo-address-form.component.ts",
@@ -5293,12 +5318,12 @@
5293
5318
  {
5294
5319
  "fileName": "demo-information-form.component.ts",
5295
5320
  "filePath": "/projects/tabs/documentation/code-examples/sectioned-form/basic/demo-information-form.component.ts",
5296
- "rawContents": "import {\n Component,\n OnInit\n} from '@angular/core';\n\nimport {\n FormBuilder,\n FormGroup,\n Validators\n} from '@angular/forms';\n\nimport {\n SkySectionedFormService\n} from '@skyux/tabs';\n\n@Component({\n selector: 'app-demo-information-form',\n templateUrl: './demo-information-form.component.html'\n})\nexport class DemoInformationFormComponent implements OnInit {\n\n public myForm: FormGroup;\n\n constructor(\n private formBuilder: FormBuilder,\n private sectionedFormService: SkySectionedFormService\n ) { }\n\n public ngOnInit(): void {\n this.myForm = this.formBuilder.group({\n name: [undefined, Validators.required],\n id: [undefined, Validators.pattern('^[0-9]+$')]\n });\n\n this.sectionedFormService.requiredFieldChanged(true);\n\n this.myForm.valueChanges.subscribe((cal) => {\n this.sectionedFormService.invalidFieldChanged(!this.myForm.valid);\n });\n }\n}\n"
5321
+ "rawContents": "import {\n Component,\n OnInit\n} from '@angular/core';\n\nimport {\n FormBuilder,\n FormGroup,\n Validators\n} from '@angular/forms';\n\nimport {\n SkySectionedFormService\n} from '@skyux/tabs';\n\n@Component({\n selector: 'app-demo-information-form',\n templateUrl: './demo-information-form.component.html'\n})\nexport class DemoInformationFormComponent implements OnInit {\n public id: string = '5324901';\n public myForm: FormGroup;\n public name: string = '';\n public nameRequired = false;\n\n constructor(\n private formBuilder: FormBuilder,\n private sectionedFormService: SkySectionedFormService\n ) {}\n\n public ngOnInit(): void {\n this.myForm = this.formBuilder.group({\n name: [this.name],\n nameRequired: [this.nameRequired],\n id: [this.id, Validators.pattern('^[0-9]+$')]\n });\n\n this.myForm.valueChanges.subscribe((changes) => {\n console.log(changes);\n this.id = changes.id;\n this.name = changes.name;\n this.nameRequired = changes.nameRequired;\n this.checkValidity();\n });\n }\n\n public checkValidity(): void {\n if (this.nameRequired) {\n this.myForm.get('name').setValidators([Validators.required]);\n this.sectionedFormService.requiredFieldChanged(true);\n } else {\n this.myForm.get('name').setValidators([]);\n this.sectionedFormService.requiredFieldChanged(false);\n }\n\n if (!this.myForm.get('name').value && this.nameRequired) {\n this.sectionedFormService.invalidFieldChanged(true);\n } else {\n this.sectionedFormService.invalidFieldChanged(false);\n }\n }\n}\n"
5297
5322
  },
5298
5323
  {
5299
5324
  "fileName": "demo-phone-form.component.html",
5300
5325
  "filePath": "/projects/tabs/documentation/code-examples/sectioned-form/basic/demo-phone-form.component.html",
5301
- "rawContents": "<div\n class=\"sky-emphasized\"\n style=\"margin-bottom: 5px;\"\n>\n <label>\n Home\n </label>\n</div>\n<div>\n 303.997.3301\n</div>\n\n<div\n class=\"sky-emphasized\"\n style=\"margin: 5px 0 5px 0;\"\n>\n <label>\n Vacation\n </label>\n</div>\n<div>\n 888.387.1211\n</div>\n\n<div\n class=\"sky-emphasized\"\n style=\"margin: 5px 0 5px 0;\"\n>\n <label>\n Vacation\n </label>\n</div>\n<div>\n 303.997.2000\n</div>\n"
5326
+ "rawContents": "<div>Phone form</div>\n"
5302
5327
  },
5303
5328
  {
5304
5329
  "fileName": "demo-phone-form.component.ts",
@@ -5323,7 +5348,7 @@
5323
5348
  {
5324
5349
  "fileName": "demo-address-form.component.html",
5325
5350
  "filePath": "/projects/tabs/documentation/code-examples/sectioned-form/modal/demo-address-form.component.html",
5326
- "rawContents": "<div\n class=\"sky-emphasized\"\n style=\"margin-bottom: 5px;\"\n>\n <label>\n Home\n </label>\n</div>\n<div>\n 410 17th Street\n</div>\n<div>\n Denver, CO 80202-4402\n</div>\n<div\n class=\"sky-emphasized\"\n style=\"margin: 5px 0 5px 0;\"\n>\n <label>\n Vacation\n </label>\n</div>\n<div>\n 3345 Franciscan Way\n</div>\n<div>\n Tampa, FL 10255-0098\n</div>\n"
5351
+ "rawContents": "<div>Address form</div>\n"
5327
5352
  },
5328
5353
  {
5329
5354
  "fileName": "demo-address-form.component.ts",
@@ -5338,12 +5363,12 @@
5338
5363
  {
5339
5364
  "fileName": "demo-information-form.component.ts",
5340
5365
  "filePath": "/projects/tabs/documentation/code-examples/sectioned-form/modal/demo-information-form.component.ts",
5341
- "rawContents": "import {\n Component,\n OnInit\n} from '@angular/core';\n\nimport {\n FormBuilder,\n FormGroup,\n Validators\n} from '@angular/forms';\n\nimport {\n SkySectionedFormService\n} from '@skyux/tabs';\n\n@Component({\n selector: 'app-demo-information-form',\n templateUrl: './demo-information-form.component.html'\n})\nexport class DemoInformationFormComponent implements OnInit {\n\n public myForm: FormGroup;\n\n constructor(\n private formBuilder: FormBuilder,\n private sectionedFormService: SkySectionedFormService\n ) { }\n\n public ngOnInit(): void {\n this.myForm = this.formBuilder.group({\n name: [undefined, Validators.required],\n id: [undefined, Validators.pattern('^[0-9]+$')]\n });\n\n this.sectionedFormService.requiredFieldChanged(true);\n\n this.myForm.valueChanges.subscribe((cal) => {\n this.sectionedFormService.invalidFieldChanged(!this.myForm.valid);\n });\n }\n}\n"
5366
+ "rawContents": "import {\n Component,\n OnInit\n} from '@angular/core';\n\nimport {\n FormBuilder,\n FormGroup,\n Validators\n} from '@angular/forms';\n\nimport {\n SkySectionedFormService\n} from '@skyux/tabs';\n\n@Component({\n selector: 'app-demo-information-form',\n templateUrl: './demo-information-form.component.html'\n})\nexport class DemoInformationFormComponent implements OnInit {\n public id: string = '5324901';\n public myForm: FormGroup;\n public name: string = '';\n public nameRequired = false;\n\n constructor(\n private formBuilder: FormBuilder,\n private sectionedFormService: SkySectionedFormService\n ) {}\n\n public ngOnInit(): void {\n this.myForm = this.formBuilder.group({\n name: [this.name],\n nameRequired: [this.nameRequired],\n id: [this.id, Validators.pattern('^[0-9]+$')]\n });\n\n this.myForm.valueChanges.subscribe((changes) => {\n console.log(changes);\n this.id = changes.id;\n this.name = changes.name;\n this.nameRequired = changes.nameRequired;\n this.checkValidity();\n });\n }\n\n public checkValidity(): void {\n if (this.nameRequired) {\n this.myForm.get('name').setValidators([Validators.required]);\n this.sectionedFormService.requiredFieldChanged(true);\n } else {\n this.myForm.get('name').setValidators([]);\n this.sectionedFormService.requiredFieldChanged(false);\n }\n\n if (!this.myForm.get('name').value && this.nameRequired) {\n this.sectionedFormService.invalidFieldChanged(true);\n } else {\n this.sectionedFormService.invalidFieldChanged(false);\n }\n }\n}\n"
5342
5367
  },
5343
5368
  {
5344
5369
  "fileName": "demo-phone-form.component.html",
5345
5370
  "filePath": "/projects/tabs/documentation/code-examples/sectioned-form/modal/demo-phone-form.component.html",
5346
- "rawContents": "<div\n class=\"sky-emphasized\"\n style=\"margin-bottom: 5px;\"\n>\n <label>\n Home\n </label>\n</div>\n<div>\n 303.997.3301\n</div>\n\n<div\n class=\"sky-emphasized\"\n style=\"margin: 5px 0 5px 0;\"\n>\n <label>\n Vacation\n </label>\n</div>\n<div>\n 888.387.1211\n</div>\n\n<div\n class=\"sky-emphasized\"\n style=\"margin: 5px 0 5px 0;\"\n>\n <label>\n Vacation\n </label>\n</div>\n<div>\n 303.997.2000\n</div>\n"
5371
+ "rawContents": "<div>Phone form</div>\n"
5347
5372
  },
5348
5373
  {
5349
5374
  "fileName": "demo-phone-form.component.ts",