@skyux/tabs 5.5.0-beta.0 → 5.6.1

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 (41) hide show
  1. package/bundles/skyux-tabs.umd.js +511 -511
  2. package/documentation.json +111 -111
  3. package/esm2015/lib/modules/sectioned-form/sectioned-form-section.component.js +2 -2
  4. package/esm2015/lib/modules/sectioned-form/sectioned-form-section.component.js.map +1 -1
  5. package/esm2015/lib/modules/sectioned-form/sectioned-form.component.js +3 -3
  6. package/esm2015/lib/modules/sectioned-form/sectioned-form.component.js.map +1 -1
  7. package/esm2015/lib/modules/sectioned-form/sectioned-form.module.js +4 -4
  8. package/esm2015/lib/modules/sectioned-form/sectioned-form.module.js.map +1 -1
  9. package/esm2015/lib/modules/shared/sky-tabs-resources.module.js +1 -1
  10. package/esm2015/lib/modules/shared/sky-tabs-resources.module.js.map +1 -1
  11. package/esm2015/lib/modules/tabs/tab.component.js.map +1 -1
  12. package/esm2015/lib/modules/tabs/tabs.module.js.map +1 -1
  13. package/esm2015/lib/modules/tabs/tabset-nav-button.component.js +4 -4
  14. package/esm2015/lib/modules/tabs/tabset-nav-button.component.js.map +1 -1
  15. package/esm2015/lib/modules/tabs/tabset-permalink.service.js +1 -1
  16. package/esm2015/lib/modules/tabs/tabset-permalink.service.js.map +1 -1
  17. package/esm2015/lib/modules/tabs/tabset.component.js +1 -1
  18. package/esm2015/lib/modules/tabs/tabset.component.js.map +1 -1
  19. package/esm2015/lib/modules/tabs/tabset.service.js.map +1 -1
  20. package/esm2015/lib/modules/vertical-tabset/vertical-tab-media-query.service.js.map +1 -1
  21. package/esm2015/lib/modules/vertical-tabset/vertical-tab.component.js +1 -1
  22. package/esm2015/lib/modules/vertical-tabset/vertical-tab.component.js.map +1 -1
  23. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-adapter.service.js.map +1 -1
  24. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-group.component.js +1 -1
  25. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-group.component.js.map +1 -1
  26. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.component.js +3 -3
  27. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.component.js.map +1 -1
  28. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.module.js +4 -4
  29. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.module.js.map +1 -1
  30. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.service.js +5 -5
  31. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.service.js.map +1 -1
  32. package/esm2015/testing/tabs/tabset-fixture.js.map +1 -1
  33. package/fesm2015/skyux-tabs-testing.js.map +1 -1
  34. package/fesm2015/skyux-tabs.js +473 -473
  35. package/fesm2015/skyux-tabs.js.map +1 -1
  36. package/lib/modules/sectioned-form/sectioned-form-section.component.d.ts +2 -2
  37. package/lib/modules/sectioned-form/sectioned-form.component.d.ts +1 -1
  38. package/lib/modules/tabs/tabset.component.d.ts +2 -2
  39. package/lib/modules/vertical-tabset/vertical-tab.component.d.ts +1 -1
  40. package/lib/modules/vertical-tabset/vertical-tabset.component.d.ts +1 -1
  41. package/package.json +19 -16
@@ -1 +1 @@
1
- {"version":3,"file":"vertical-tab.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tab.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tab.component.html"],"names":[],"mappings":"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","sourcesContent":["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 { SkyMediaQueryService } from '@skyux/core';\n\nimport { Subject } from 'rxjs';\n\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyVerticalTabMediaQueryService } from './vertical-tab-media-query.service';\n\nimport { SkyVerticalTabsetService } from './vertical-tabset.service';\n\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\n\nlet nextId = 0;\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 {\n provide: SkyMediaQueryService,\n useExisting: SkyVerticalTabMediaQueryService,\n },\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 * @deprecated Now that the vertical tabs provide aria labels automatically, this input is no longer necessary.\n */\n @Input()\n public ariaControls: string;\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 * @deprecated Any other value than `tab` could lead to a poor user experience for users with assistive technology.\n * In the next major version, this property will be automatically set to `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 * @deprecated Now that the vertical tabs provide aria labels automatically, this input is no longer necessary.\n */\n @Input()\n public tabId: string = `sky-vertical-tab-${++nextId}`;\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(\n this.adapterService.getWidth(this.tabContent)\n );\n });\n }\n }\n\n public get contentRendered(): boolean {\n return this._contentRendered;\n }\n\n public index: number;\n\n public isMobile = false;\n\n @ViewChild('tabContentWrapper')\n public tabContent: ElementRef;\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.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(\n this.adapterService.getWidth(this.tabContent)\n );\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 public onTabButtonKeyUp(event: KeyboardEvent): void {\n /*istanbul ignore else */\n if (event.key) {\n switch (event.key.toUpperCase()) {\n case ' ':\n case 'ENTER':\n this.activateTab();\n event.stopPropagation();\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n }\n }\n\n @HostListener('window:resize')\n public onWindowResize(): void {\n this.updateBreakpointAndResponsiveClass(\n this.adapterService.getWidth(this.tabContent)\n );\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]=\"isMobile ? null : ariaControls || tabContentPane.id\"\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)=\"onTabButtonKeyUp($event)\"\n>\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 >\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator\n *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 #tabContentWrapper>\n <div\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n #tabContentPane\n >\n <ng-content></ng-content>\n\n <div></div>\n </div>\n</div>\n"]}
1
+ {"version":3,"file":"vertical-tab.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tab.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tab.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { SkyMediaQueryService } from '@skyux/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyVerticalTabMediaQueryService } from './vertical-tab-media-query.service';\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyVerticalTabsetService } from './vertical-tabset.service';\n\nlet nextId = 0;\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 {\n provide: SkyMediaQueryService,\n useExisting: SkyVerticalTabMediaQueryService,\n },\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 = 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 * @deprecated Now that the vertical tabs provide aria labels automatically, this input is no longer necessary.\n */\n @Input()\n public ariaControls: string;\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 * @deprecated Any other value than `tab` could lead to a poor user experience for users with assistive technology.\n * In the next major version, this property will be automatically set to `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 = 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 = 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 * @deprecated Now that the vertical tabs provide aria labels automatically, this input is no longer necessary.\n */\n @Input()\n public tabId = `sky-vertical-tab-${++nextId}`;\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(\n this.adapterService.getWidth(this.tabContent)\n );\n });\n }\n }\n\n public get contentRendered(): boolean {\n return this._contentRendered;\n }\n\n public index: number;\n\n public isMobile = false;\n\n @ViewChild('tabContentWrapper')\n public tabContent: ElementRef;\n\n private _ariaRole: string;\n\n private _contentRendered = false;\n\n private _mobileSubscription = new Subject();\n\n private _ngUnsubscribe = new Subject();\n\n private _showTabRightArrow = 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.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(\n this.adapterService.getWidth(this.tabContent)\n );\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 public onTabButtonKeyUp(event: KeyboardEvent): void {\n /*istanbul ignore else */\n if (event.key) {\n switch (event.key.toUpperCase()) {\n case ' ':\n case 'ENTER':\n this.activateTab();\n event.stopPropagation();\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n }\n }\n\n @HostListener('window:resize')\n public onWindowResize(): void {\n this.updateBreakpointAndResponsiveClass(\n this.adapterService.getWidth(this.tabContent)\n );\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]=\"isMobile ? null : ariaControls || tabContentPane.id\"\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)=\"onTabButtonKeyUp($event)\"\n>\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 >\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator\n *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 #tabContentWrapper>\n <div\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n #tabContentPane\n >\n <ng-content></ng-content>\n\n <div></div>\n </div>\n</div>\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"vertical-tabset-adapter.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-adapter.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAEV,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;;AAGlD,MAAM,OAAO,+BAA+B;IAG1C,YAAoB,eAAiC;QAAjC,oBAAe,GAAf,eAAe,CAAkB;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC;IAEM,QAAQ,CAAC,UAAsB;QACpC,OAAO,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC;IAC9C,CAAC;IAEM,kBAAkB,CAAC,OAAmB;QAC3C,OAAO,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;IACtC,CAAC;IAEM,kBAAkB,CACvB,OAAmB,EACnB,UAA+B;QAE/B,MAAM,QAAQ,GAAgB,OAAO,CAAC,aAAa,CAAC;QAEpD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;QAEnE,IAAI,QAAgB,CAAC;QAErB,QAAQ,UAAU,EAAE;YAClB,KAAK,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBAC3B,QAAQ,GAAG,6BAA6B,CAAC;gBACzC,MAAM;aACP;YACD,KAAK,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBAC3B,QAAQ,GAAG,6BAA6B,CAAC;gBACzC,MAAM;aACP;YACD,KAAK,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBAC3B,QAAQ,GAAG,6BAA6B,CAAC;gBACzC,MAAM;aACP;YACD,OAAO,CAAC,CAAC;gBACP,QAAQ,GAAG,6BAA6B,CAAC;gBACzC,MAAM;aACP;SACF;QAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;;6HAhDU,+BAA+B;iIAA/B,+BAA+B;4FAA/B,+BAA+B;kBAD3C,UAAU","sourcesContent":["import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\n\nimport { SkyMediaBreakpoints } from '@skyux/core';\n\n@Injectable()\nexport class SkyVerticalTabsetAdapterService {\n private renderer: Renderer2;\n\n constructor(private rendererFactory: RendererFactory2) {\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(\n element: ElementRef,\n breakpoint: SkyMediaBreakpoints\n ): 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"]}
1
+ {"version":3,"file":"vertical-tabset-adapter.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-adapter.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAEV,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;;AAGlD,MAAM,OAAO,+BAA+B;IAG1C,YAAoB,eAAiC;QAAjC,oBAAe,GAAf,eAAe,CAAkB;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC;IAEM,QAAQ,CAAC,UAAsB;QACpC,OAAO,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC;IAC9C,CAAC;IAEM,kBAAkB,CAAC,OAAmB;QAC3C,OAAO,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;IACtC,CAAC;IAEM,kBAAkB,CACvB,OAAmB,EACnB,UAA+B;QAE/B,MAAM,QAAQ,GAAgB,OAAO,CAAC,aAAa,CAAC;QAEpD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;QAEnE,IAAI,QAAgB,CAAC;QAErB,QAAQ,UAAU,EAAE;YAClB,KAAK,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBAC3B,QAAQ,GAAG,6BAA6B,CAAC;gBACzC,MAAM;aACP;YACD,KAAK,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBAC3B,QAAQ,GAAG,6BAA6B,CAAC;gBACzC,MAAM;aACP;YACD,KAAK,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBAC3B,QAAQ,GAAG,6BAA6B,CAAC;gBACzC,MAAM;aACP;YACD,OAAO,CAAC,CAAC;gBACP,QAAQ,GAAG,6BAA6B,CAAC;gBACzC,MAAM;aACP;SACF;QAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;;6HAhDU,+BAA+B;iIAA/B,+BAA+B;4FAA/B,+BAA+B;kBAD3C,UAAU","sourcesContent":["import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\nimport { SkyMediaBreakpoints } from '@skyux/core';\n\n@Injectable()\nexport class SkyVerticalTabsetAdapterService {\n private renderer: Renderer2;\n\n constructor(private rendererFactory: RendererFactory2) {\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(\n element: ElementRef,\n breakpoint: SkyMediaBreakpoints\n ): 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"]}
@@ -1,9 +1,9 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Input, QueryList, } from '@angular/core';
2
+ import { skyAnimationSlide } from '@skyux/animations';
2
3
  import { Subject } from 'rxjs';
3
4
  import { takeUntil } from 'rxjs/operators';
4
5
  import { SkyVerticalTabComponent } from './vertical-tab.component';
5
6
  import { SkyVerticalTabsetService } from './vertical-tabset.service';
6
- import { skyAnimationSlide } from '@skyux/animations';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "./vertical-tabset.service";
9
9
  import * as i2 from "@skyux/indicators";
@@ -1 +1 @@
1
- {"version":3,"file":"vertical-tabset-group.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-group.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-group.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyVerticalTabComponent } from './vertical-tab.component';\n\nimport { SkyVerticalTabsetService } from './vertical-tabset.service';\nimport { skyAnimationSlide } from '@skyux/animations';\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: [skyAnimationSlide],\n})\nexport class SkyVerticalTabsetGroupComponent implements OnInit, OnDestroy {\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\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-sub-open sky-font-emphasized sky-emphasized':\n subMenuOpen(),\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n [tabIndex]=\"-1\"\n >\n <button\n class=\"sky-padding-even-default\"\n type=\"button\"\n skyId\n [attr.aria-controls]=\"groupContent.id\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggleMenuOpen()\"\n #groupHeadingButton\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"open ? 'up' : 'down'\"\n >\n </sky-expansion-indicator>\n </button>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n role=\"region\"\n skyId\n [attr.labelledby]=\"groupHeadingButton.id\"\n [@skyAnimationSlide]=\"open ? 'down' : 'up'\"\n #groupContent\n >\n <ng-content></ng-content>\n </div>\n</div>\n"]}
1
+ {"version":3,"file":"vertical-tabset-group.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-group.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-group.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n} from '@angular/core';\nimport { skyAnimationSlide } from '@skyux/animations';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyVerticalTabComponent } from './vertical-tab.component';\nimport { SkyVerticalTabsetService } 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: [skyAnimationSlide],\n})\nexport class SkyVerticalTabsetGroupComponent implements OnInit, OnDestroy {\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 = false;\n\n private _open = 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\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-sub-open sky-font-emphasized sky-emphasized':\n subMenuOpen(),\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n [tabIndex]=\"-1\"\n >\n <button\n class=\"sky-padding-even-default\"\n type=\"button\"\n skyId\n [attr.aria-controls]=\"groupContent.id\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggleMenuOpen()\"\n #groupHeadingButton\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"open ? 'up' : 'down'\"\n >\n </sky-expansion-indicator>\n </button>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n role=\"region\"\n skyId\n [attr.labelledby]=\"groupHeadingButton.id\"\n [@skyAnimationSlide]=\"open ? 'down' : 'up'\"\n #groupContent\n >\n <ng-content></ng-content>\n </div>\n</div>\n"]}
@@ -1,10 +1,10 @@
1
- import { Component, ElementRef, ViewChild, Input, ChangeDetectionStrategy, Output, EventEmitter, ChangeDetectorRef, } from '@angular/core';
2
- import { style, trigger, transition, animate } from '@angular/animations';
1
+ import { animate, style, transition, trigger } from '@angular/animations';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
3
3
  import { SkyLibResourcesService } from '@skyux/i18n';
4
4
  import { Subject } from 'rxjs';
5
5
  import { take, takeUntil } from 'rxjs/operators';
6
6
  import { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';
7
- import { SkyVerticalTabsetService, HIDDEN_STATE, VISIBLE_STATE, } from './vertical-tabset.service';
7
+ import { HIDDEN_STATE, SkyVerticalTabsetService, VISIBLE_STATE, } from './vertical-tabset.service';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "./vertical-tabset-adapter.service";
10
10
  import * as i2 from "./vertical-tabset.service";
@@ -1 +1 @@
1
- {"version":3,"file":"vertical-tabset.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.component.html"],"names":[],"mappings":"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","sourcesContent":["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 { style, trigger, transition, animate } from '@angular/animations';\n\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Subject } from 'rxjs';\n\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyVerticalTabsetAdapterService } 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: [SkyVerticalTabsetService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('tabGroupEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(-100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n trigger('contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n ],\n})\nexport class SkyVerticalTabsetComponent\n 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 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 * 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 * @deprecated Any other value than `tablist` could lead to a poor user experience for users with assistive technology.\n * In the next major version, this property will be automatically set to `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\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\n .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 aria-orientation=\"vertical\"\n class=\"sky-vertical-tabset-group-container\"\n [ngClass]=\"{ 'sky-vertical-tabset-hidden': !tabService.tabsVisible() }\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.role]=\"ariaRole\"\n [@tabGroupEnter]=\"tabService.animationTabsVisibleState\"\n #groupContainerWrapper\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainTabContent || tabService.contentVisible()\"\n class=\"sky-vertical-tabset-content\"\n [ngClass]=\"{\n 'sky-vertical-tabset-content-hidden': !tabService.contentVisible()\n }\"\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"]}
1
+ {"version":3,"file":"vertical-tabset.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.component.html"],"names":[],"mappings":"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","sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport {\n HIDDEN_STATE,\n SkyVerticalTabsetService,\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('tabGroupEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(-100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n trigger('contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n ],\n})\nexport class SkyVerticalTabsetComponent\n 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 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 * 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 * @deprecated Any other value than `tablist` could lead to a poor user experience for users with assistive technology.\n * In the next major version, this property will be automatically set to `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 = 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\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\n .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 aria-orientation=\"vertical\"\n class=\"sky-vertical-tabset-group-container\"\n [ngClass]=\"{ 'sky-vertical-tabset-hidden': !tabService.tabsVisible() }\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.role]=\"ariaRole\"\n [@tabGroupEnter]=\"tabService.animationTabsVisibleState\"\n #groupContainerWrapper\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainTabContent || tabService.contentVisible()\"\n class=\"sky-vertical-tabset-content\"\n [ngClass]=\"{\n 'sky-vertical-tabset-content-hidden': !tabService.contentVisible()\n }\"\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"]}
@@ -1,13 +1,13 @@
1
- import { NgModule } from '@angular/core';
2
1
  import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { SkyIdModule } from '@skyux/core';
3
4
  import { SkyExpansionIndicatorModule, SkyIconModule, SkyStatusIndicatorModule, } from '@skyux/indicators';
4
5
  import { SkyThemeModule } from '@skyux/theme';
5
6
  import { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';
6
- import { SkyVerticalTabsetComponent } from './vertical-tabset.component';
7
7
  import { SkyVerticalTabComponent } from './vertical-tab.component';
8
- import { SkyVerticalTabsetGroupComponent } from './vertical-tabset-group.component';
9
8
  import { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';
10
- import { SkyIdModule } from '@skyux/core';
9
+ import { SkyVerticalTabsetGroupComponent } from './vertical-tabset-group.component';
10
+ import { SkyVerticalTabsetComponent } from './vertical-tabset.component';
11
11
  import * as i0 from "@angular/core";
12
12
  export class SkyVerticalTabsetModule {
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vertical-tabset.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EACL,2BAA2B,EAC3B,aAAa,EACb,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAEpF,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;;AAwB1C,MAAM,OAAO,uBAAuB;;qHAAvB,uBAAuB;sHAAvB,uBAAuB,iBApBhC,0BAA0B;QAC1B,+BAA+B;QAC/B,uBAAuB,aAGvB,YAAY;QACZ,aAAa;QACb,WAAW;QACX,2BAA2B;QAC3B,wBAAwB;QACxB,sBAAsB;QACtB,cAAc,aAId,0BAA0B;QAC1B,+BAA+B;QAC/B,uBAAuB;sHAGd,uBAAuB,aAPvB,CAAC,+BAA+B,CAAC,YATnC;YACP,YAAY;YACZ,aAAa;YACb,WAAW;YACX,2BAA2B;YAC3B,wBAAwB;YACxB,sBAAsB;YACtB,cAAc;SACf;4FAQU,uBAAuB;kBAtBnC,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,0BAA0B;wBAC1B,+BAA+B;wBAC/B,uBAAuB;qBACxB;oBACD,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,WAAW;wBACX,2BAA2B;wBAC3B,wBAAwB;wBACxB,sBAAsB;wBACtB,cAAc;qBACf;oBACD,SAAS,EAAE,CAAC,+BAA+B,CAAC;oBAC5C,OAAO,EAAE;wBACP,0BAA0B;wBAC1B,+BAA+B;wBAC/B,uBAAuB;qBACxB;iBACF","sourcesContent":["import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\nimport {\n SkyExpansionIndicatorModule,\n SkyIconModule,\n SkyStatusIndicatorModule,\n} from '@skyux/indicators';\n\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';\n\nimport { SkyVerticalTabsetComponent } from './vertical-tabset.component';\n\nimport { SkyVerticalTabComponent } from './vertical-tab.component';\n\nimport { SkyVerticalTabsetGroupComponent } from './vertical-tabset-group.component';\n\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyIdModule } from '@skyux/core';\n\n@NgModule({\n declarations: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent,\n ],\n imports: [\n CommonModule,\n SkyIconModule,\n SkyIdModule,\n SkyExpansionIndicatorModule,\n SkyStatusIndicatorModule,\n SkyTabsResourcesModule,\n SkyThemeModule,\n ],\n providers: [SkyVerticalTabsetAdapterService],\n exports: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent,\n ],\n})\nexport class SkyVerticalTabsetModule {}\n"]}
1
+ {"version":3,"file":"vertical-tabset.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,2BAA2B,EAC3B,aAAa,EACb,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;;AAwBzE,MAAM,OAAO,uBAAuB;;qHAAvB,uBAAuB;sHAAvB,uBAAuB,iBApBhC,0BAA0B;QAC1B,+BAA+B;QAC/B,uBAAuB,aAGvB,YAAY;QACZ,aAAa;QACb,WAAW;QACX,2BAA2B;QAC3B,wBAAwB;QACxB,sBAAsB;QACtB,cAAc,aAId,0BAA0B;QAC1B,+BAA+B;QAC/B,uBAAuB;sHAGd,uBAAuB,aAPvB,CAAC,+BAA+B,CAAC,YATnC;YACP,YAAY;YACZ,aAAa;YACb,WAAW;YACX,2BAA2B;YAC3B,wBAAwB;YACxB,sBAAsB;YACtB,cAAc;SACf;4FAQU,uBAAuB;kBAtBnC,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,0BAA0B;wBAC1B,+BAA+B;wBAC/B,uBAAuB;qBACxB;oBACD,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,WAAW;wBACX,2BAA2B;wBAC3B,wBAAwB;wBACxB,sBAAsB;wBACtB,cAAc;qBACf;oBACD,SAAS,EAAE,CAAC,+BAA+B,CAAC;oBAC5C,OAAO,EAAE;wBACP,0BAA0B;wBAC1B,+BAA+B;wBAC/B,uBAAuB;qBACxB;iBACF","sourcesContent":["import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIdModule } from '@skyux/core';\nimport {\n SkyExpansionIndicatorModule,\n SkyIconModule,\n SkyStatusIndicatorModule,\n} from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';\n\nimport { SkyVerticalTabComponent } from './vertical-tab.component';\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyVerticalTabsetGroupComponent } from './vertical-tabset-group.component';\nimport { SkyVerticalTabsetComponent } from './vertical-tabset.component';\n\n@NgModule({\n declarations: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent,\n ],\n imports: [\n CommonModule,\n SkyIconModule,\n SkyIdModule,\n SkyExpansionIndicatorModule,\n SkyStatusIndicatorModule,\n SkyTabsResourcesModule,\n SkyThemeModule,\n ],\n providers: [SkyVerticalTabsetAdapterService],\n exports: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent,\n ],\n})\nexport class SkyVerticalTabsetModule {}\n"]}
@@ -56,7 +56,7 @@ export class SkyVerticalTabsetService {
56
56
  }
57
57
  destroyTab(tab) {
58
58
  var _a;
59
- let tabIndex = this.tabs.indexOf(tab);
59
+ const tabIndex = this.tabs.indexOf(tab);
60
60
  if (tabIndex === -1) {
61
61
  return;
62
62
  }
@@ -76,7 +76,7 @@ export class SkyVerticalTabsetService {
76
76
  }
77
77
  // Try selecting the next tab first, and if there's no next tab then
78
78
  // try selecting the previous one.
79
- let newActiveTab = this.tabs[tabIndex] || this.tabs[tabIndex - 1];
79
+ const newActiveTab = this.tabs[tabIndex] || this.tabs[tabIndex - 1];
80
80
  /*istanbul ignore else */
81
81
  if (newActiveTab) {
82
82
  newActiveTab.activateTab();
@@ -85,7 +85,7 @@ export class SkyVerticalTabsetService {
85
85
  }
86
86
  activateTab(tab) {
87
87
  // unactivate active tab
88
- let activeTab = this.tabs.find((t) => t.index === this.activeIndex);
88
+ const activeTab = this.tabs.find((t) => t.index === this.activeIndex);
89
89
  if (activeTab && activeTab.index !== tab.index) {
90
90
  activeTab.active = false;
91
91
  activeTab.tabDeactivated();
@@ -142,8 +142,8 @@ export class SkyVerticalTabsetService {
142
142
  moveContent() {
143
143
  /* istanbul ignore else */
144
144
  if (this._content && !this._contentAdded) {
145
- let activeTab = this.activeTab();
146
- let activeContent = activeTab ? activeTab.tabContent : undefined;
145
+ const activeTab = this.activeTab();
146
+ const activeContent = activeTab ? activeTab.tabContent : undefined;
147
147
  if (activeContent && activeContent.nativeElement) {
148
148
  this._content.nativeElement.appendChild(activeContent.nativeElement);
149
149
  activeTab.contentRendered = true;
@@ -1 +1 @@
1
- {"version":3,"file":"vertical-tabset.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { ElementRef, Injectable } from '@angular/core';\n\nimport { SkyMediaBreakpoints, SkyMediaQueryService } from '@skyux/core';\n\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nimport { SkyVerticalTabComponent } 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 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 } 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 // 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 } 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"]}
1
+ {"version":3,"file":"vertical-tabset.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,UAAU,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;;;AAIhD,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AAEnC;;GAEG;AAEH,MAAM,OAAO,wBAAwB;IAmCnC,YAA2B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;QAlC3D,gBAAW,GAAW,SAAS,CAAC;QAUhC,eAAU,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAExC,iBAAY,GAA4B,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;QAEvE,uBAAkB,GAAG,KAAK,CAAC;QAE3B,gBAAW,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAEzC,oBAAe,GAAqB,IAAI,OAAO,EAAE,CAAC;QAElD,SAAI,GAAmC,EAAE,CAAC;QAE1C,aAAQ,GAAqC,IAAI,OAAO,EAAE,CAAC;QAE3D,eAAU,GAA6B,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;QAIrE,kBAAa,GAAG,KAAK,CAAC;QAEtB,iBAAY,GAAG,KAAK,CAAC;QAErB,cAAS,GAAG,KAAK,CAAC;QAGxB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE;YAC9C,MAAM,SAAS,GAAG,UAAU,KAAK,mBAAmB,CAAC,EAAE,CAAC;YAExD,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBAChC,sBAAsB;gBACtB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEhC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;oBACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC5B;aACF;iBAAM,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;gBACvC,0BAA0B;gBAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEjC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;oBACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC7B;aACF;YAED,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAlDD,IAAW,OAAO,CAAC,KAAiB;QAClC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAkDM,MAAM,CAAC,GAA4B;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;QAElB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEpB,IAAI,GAAG,CAAC,MAAM,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SACvB;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEM,UAAU,CAAC,GAA4B;;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;YACnB,OAAO;SACR;QAED,IACE,IAAI,CAAC,kBAAkB;YACvB,GAAG,CAAC,eAAe;;YACnB,0BAA0B;YAC1B,MAAA,IAAI,CAAC,QAAQ,0CAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA,EACnE;YACA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;SACvE;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC9B,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;QAE/D,IAAI,GAAG,CAAC,MAAM,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;YACD,oEAAoE;YACpE,kCAAkC;YAClC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACpE,yBAAyB;YACzB,IAAI,YAAY,EAAE;gBAChB,YAAY,CAAC,WAAW,EAAE,CAAC;aAC5B;SACF;IACH,CAAC;IAEM,WAAW,CAAC,GAA4B;QAC7C,wBAAwB;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;QACtE,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE;YAC9C,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;YACzB,SAAS,CAAC,cAAc,EAAE,CAAC;SAC5B;QAED,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,aAAa;QAClB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;gBAChD,4BAA4B;gBAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;iBAAM,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;gBACvD,iBAAiB;gBACjB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;aAC5B;SACF;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACxB,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;oBACxB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;oBACtE,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC;iBAC5B;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEM,WAAW;QAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;IAC/C,CAAC;IAEM,cAAc;QACnB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IAChD,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,yBAAyB,GAAG,aAAa,CAAC;QAC/C,IAAI,CAAC,4BAA4B,GAAG,YAAY,CAAC;QACjD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;SAC5C;QACD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3B,CAAC;IAEO,WAAW;QACjB,0BAA0B;QAC1B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACxC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAEnE,IAAI,aAAa,IAAI,aAAa,CAAC,aAAa,EAAE;gBAChD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;gBACrE,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC;gBACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC3B;SACF;IACH,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,4BAA4B,GAAG,aAAa,CAAC;YAClD,IAAI,CAAC,yBAAyB,GAAG,YAAY,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC5B;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;;sHAjMU,wBAAwB;0HAAxB,wBAAwB;4FAAxB,wBAAwB;kBADpC,UAAU","sourcesContent":["import { ElementRef, Injectable } from '@angular/core';\nimport { SkyMediaBreakpoints, SkyMediaQueryService } from '@skyux/core';\n\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nimport { SkyVerticalTabComponent } 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 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 = 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 = false;\n\n private _tabsVisible = false;\n\n private _isMobile = 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 } 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 const 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 const 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 // unactivate active tab\n const 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 } 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 const activeTab = this.activeTab();\n const 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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tabset-fixture.js","sourceRoot":"","sources":["../../../../../../../libs/components/tabs/testing/src/tabs/tabset-fixture.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentFixture } from '@angular/core/testing';\n\nimport { DebugElement } from '@angular/core';\n\nimport { By } from '@angular/platform-browser';\n\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\nimport { SkyTabsetFixtureTab } from './tab-fixture-tab';\n\n/**\n * Allows interaction with a SKY UX tabset component.\n */\nexport class SkyTabsetFixture {\n /**\n * The tabset component's ARIA label.\n */\n public get ariaLabel(): string {\n const tabsetEl = this.getTabsetEl();\n return tabsetEl.getAttribute('aria-label') || undefined;\n }\n\n /**\n * The tabset component's ARIA labelled by attribute.\n */\n public get ariaLabelledBy(): string {\n const tabsetEl = this.getTabsetEl();\n return tabsetEl.getAttribute('aria-labelledby') || undefined;\n }\n\n /**\n * The index of the currently selected tab.\n */\n public get activeTabIndex(): number {\n const tabLinkEls = this.getTabLinkEls();\n\n for (let i = 0, n = tabLinkEls.length; i < n; i++) {\n if (tabLinkEls.item(i).classList.contains('sky-btn-tab-selected')) {\n return i;\n }\n }\n\n return -1;\n }\n\n private debugEl: DebugElement;\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this.debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-tabset'\n );\n }\n\n /**\n * Retrieves information about the tab at the specified index.\n * @param tabIndex The index of the tab.\n */\n public getTab(tabIndex: number): SkyTabsetFixtureTab {\n const tabLinkEl = this.getTabLinkEl(tabIndex);\n\n const active = this.activeTabIndex === tabIndex;\n const disabled = tabLinkEl.classList.contains('sky-btn-tab-disabled');\n const tabHeading = this.getTextContent(\n tabLinkEl.querySelector('.sky-tab-heading').childNodes[0]\n );\n const tabHeaderCount = this.getTextContent(\n tabLinkEl.querySelector('.sky-tab-header-count')\n );\n\n let permalinkValue: string;\n\n if (tabLinkEl.href) {\n const permalink = tabLinkEl.href.split('?')[1];\n if (permalink) {\n const permalinkParts = permalink.split('=');\n\n permalinkValue = decodeURIComponent(permalinkParts[1]);\n }\n }\n\n return {\n active,\n disabled,\n permalinkValue,\n tabHeaderCount,\n tabHeading,\n };\n }\n\n /**\n * Clicks the tabset's \"new\" button.\n */\n public async clickNewButton(): Promise<any> {\n return this.clickButton('sky-tabset-btn-new');\n }\n\n /**\n * Clicks the tabset's \"open\" button.\n */\n public async clickOpenButton(): Promise<any> {\n return this.clickButton('sky-tabset-btn-open');\n }\n\n /**\n * Clicks the tab button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTab(tabIndex: number): Promise<any> {\n const tabLinkEl = this.getTabLinkEl(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n tabLinkEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n /**\n * Click's the tab's close button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTabClose(tabIndex: number): Promise<any> {\n const tabWrapperEl = this.getTabsetEl().querySelectorAll(\n `.sky-tabset-tabs .sky-btn-tab-wrapper`\n )[tabIndex];\n\n if (!tabWrapperEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n const closeBtnEl = tabWrapperEl.querySelector(\n '.sky-btn-tab-close'\n ) as HTMLButtonElement;\n\n if (!closeBtnEl) {\n throw new Error('The specified tab does not have a close button.');\n }\n\n closeBtnEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private async clickButton(buttonCls: string): Promise<any> {\n const tabsetEl = this.getTabsetEl();\n\n const newButtonEl = tabsetEl.querySelector(\n `.sky-tabset-btns .${buttonCls}`\n ) as HTMLButtonElement;\n\n newButtonEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private getTabsetEl(): HTMLDivElement {\n const tabsetEl = this.debugEl.query(By.css('.sky-tabset')).nativeElement;\n\n return tabsetEl;\n }\n\n private getTabLinkEls(): NodeListOf<HTMLAnchorElement> {\n return this.getTabsetEl().querySelectorAll(`.sky-tabset-tabs .sky-btn-tab`);\n }\n\n private getTabLinkEl(tabIndex: number): HTMLAnchorElement {\n const tabLinkEl = this.getTabLinkEls().item(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n return tabLinkEl;\n }\n\n private getTextContent(el: Element | Node): string {\n return (el && el.textContent.trim()) || undefined;\n }\n}\n"]}
1
+ {"version":3,"file":"tabset-fixture.js","sourceRoot":"","sources":["../../../../../../../libs/components/tabs/testing/src/tabs/tabset-fixture.ts"],"names":[],"mappings":"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","sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\nimport { SkyTabsetFixtureTab } from './tab-fixture-tab';\n\n/**\n * Allows interaction with a SKY UX tabset component.\n */\nexport class SkyTabsetFixture {\n /**\n * The tabset component's ARIA label.\n */\n public get ariaLabel(): string {\n const tabsetEl = this.getTabsetEl();\n return tabsetEl.getAttribute('aria-label') || undefined;\n }\n\n /**\n * The tabset component's ARIA labelled by attribute.\n */\n public get ariaLabelledBy(): string {\n const tabsetEl = this.getTabsetEl();\n return tabsetEl.getAttribute('aria-labelledby') || undefined;\n }\n\n /**\n * The index of the currently selected tab.\n */\n public get activeTabIndex(): number {\n const tabLinkEls = this.getTabLinkEls();\n\n for (let i = 0, n = tabLinkEls.length; i < n; i++) {\n if (tabLinkEls.item(i).classList.contains('sky-btn-tab-selected')) {\n return i;\n }\n }\n\n return -1;\n }\n\n private debugEl: DebugElement;\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this.debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-tabset'\n );\n }\n\n /**\n * Retrieves information about the tab at the specified index.\n * @param tabIndex The index of the tab.\n */\n public getTab(tabIndex: number): SkyTabsetFixtureTab {\n const tabLinkEl = this.getTabLinkEl(tabIndex);\n\n const active = this.activeTabIndex === tabIndex;\n const disabled = tabLinkEl.classList.contains('sky-btn-tab-disabled');\n const tabHeading = this.getTextContent(\n tabLinkEl.querySelector('.sky-tab-heading').childNodes[0]\n );\n const tabHeaderCount = this.getTextContent(\n tabLinkEl.querySelector('.sky-tab-header-count')\n );\n\n let permalinkValue: string;\n\n if (tabLinkEl.href) {\n const permalink = tabLinkEl.href.split('?')[1];\n if (permalink) {\n const permalinkParts = permalink.split('=');\n\n permalinkValue = decodeURIComponent(permalinkParts[1]);\n }\n }\n\n return {\n active,\n disabled,\n permalinkValue,\n tabHeaderCount,\n tabHeading,\n };\n }\n\n /**\n * Clicks the tabset's \"new\" button.\n */\n public async clickNewButton(): Promise<any> {\n return this.clickButton('sky-tabset-btn-new');\n }\n\n /**\n * Clicks the tabset's \"open\" button.\n */\n public async clickOpenButton(): Promise<any> {\n return this.clickButton('sky-tabset-btn-open');\n }\n\n /**\n * Clicks the tab button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTab(tabIndex: number): Promise<any> {\n const tabLinkEl = this.getTabLinkEl(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n tabLinkEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n /**\n * Click's the tab's close button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTabClose(tabIndex: number): Promise<any> {\n const tabWrapperEl = this.getTabsetEl().querySelectorAll(\n `.sky-tabset-tabs .sky-btn-tab-wrapper`\n )[tabIndex];\n\n if (!tabWrapperEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n const closeBtnEl = tabWrapperEl.querySelector(\n '.sky-btn-tab-close'\n ) as HTMLButtonElement;\n\n if (!closeBtnEl) {\n throw new Error('The specified tab does not have a close button.');\n }\n\n closeBtnEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private async clickButton(buttonCls: string): Promise<any> {\n const tabsetEl = this.getTabsetEl();\n\n const newButtonEl = tabsetEl.querySelector(\n `.sky-tabset-btns .${buttonCls}`\n ) as HTMLButtonElement;\n\n newButtonEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private getTabsetEl(): HTMLDivElement {\n const tabsetEl = this.debugEl.query(By.css('.sky-tabset')).nativeElement;\n\n return tabsetEl;\n }\n\n private getTabLinkEls(): NodeListOf<HTMLAnchorElement> {\n return this.getTabsetEl().querySelectorAll(`.sky-tabset-tabs .sky-btn-tab`);\n }\n\n private getTabLinkEl(tabIndex: number): HTMLAnchorElement {\n const tabLinkEl = this.getTabLinkEls().item(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n return tabLinkEl;\n }\n\n private getTextContent(el: Element | Node): string {\n return (el && el.textContent.trim()) || undefined;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-tabs-testing.js","sources":["../../../../../libs/components/tabs/testing/src/tabs/tabset-fixture.ts","../../../../../libs/components/tabs/testing/src/skyux-tabs-testing.ts"],"sourcesContent":["import { ComponentFixture } from '@angular/core/testing';\n\nimport { DebugElement } from '@angular/core';\n\nimport { By } from '@angular/platform-browser';\n\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\nimport { SkyTabsetFixtureTab } from './tab-fixture-tab';\n\n/**\n * Allows interaction with a SKY UX tabset component.\n */\nexport class SkyTabsetFixture {\n /**\n * The tabset component's ARIA label.\n */\n public get ariaLabel(): string {\n const tabsetEl = this.getTabsetEl();\n return tabsetEl.getAttribute('aria-label') || undefined;\n }\n\n /**\n * The tabset component's ARIA labelled by attribute.\n */\n public get ariaLabelledBy(): string {\n const tabsetEl = this.getTabsetEl();\n return tabsetEl.getAttribute('aria-labelledby') || undefined;\n }\n\n /**\n * The index of the currently selected tab.\n */\n public get activeTabIndex(): number {\n const tabLinkEls = this.getTabLinkEls();\n\n for (let i = 0, n = tabLinkEls.length; i < n; i++) {\n if (tabLinkEls.item(i).classList.contains('sky-btn-tab-selected')) {\n return i;\n }\n }\n\n return -1;\n }\n\n private debugEl: DebugElement;\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this.debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-tabset'\n );\n }\n\n /**\n * Retrieves information about the tab at the specified index.\n * @param tabIndex The index of the tab.\n */\n public getTab(tabIndex: number): SkyTabsetFixtureTab {\n const tabLinkEl = this.getTabLinkEl(tabIndex);\n\n const active = this.activeTabIndex === tabIndex;\n const disabled = tabLinkEl.classList.contains('sky-btn-tab-disabled');\n const tabHeading = this.getTextContent(\n tabLinkEl.querySelector('.sky-tab-heading').childNodes[0]\n );\n const tabHeaderCount = this.getTextContent(\n tabLinkEl.querySelector('.sky-tab-header-count')\n );\n\n let permalinkValue: string;\n\n if (tabLinkEl.href) {\n const permalink = tabLinkEl.href.split('?')[1];\n if (permalink) {\n const permalinkParts = permalink.split('=');\n\n permalinkValue = decodeURIComponent(permalinkParts[1]);\n }\n }\n\n return {\n active,\n disabled,\n permalinkValue,\n tabHeaderCount,\n tabHeading,\n };\n }\n\n /**\n * Clicks the tabset's \"new\" button.\n */\n public async clickNewButton(): Promise<any> {\n return this.clickButton('sky-tabset-btn-new');\n }\n\n /**\n * Clicks the tabset's \"open\" button.\n */\n public async clickOpenButton(): Promise<any> {\n return this.clickButton('sky-tabset-btn-open');\n }\n\n /**\n * Clicks the tab button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTab(tabIndex: number): Promise<any> {\n const tabLinkEl = this.getTabLinkEl(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n tabLinkEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n /**\n * Click's the tab's close button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTabClose(tabIndex: number): Promise<any> {\n const tabWrapperEl = this.getTabsetEl().querySelectorAll(\n `.sky-tabset-tabs .sky-btn-tab-wrapper`\n )[tabIndex];\n\n if (!tabWrapperEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n const closeBtnEl = tabWrapperEl.querySelector(\n '.sky-btn-tab-close'\n ) as HTMLButtonElement;\n\n if (!closeBtnEl) {\n throw new Error('The specified tab does not have a close button.');\n }\n\n closeBtnEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private async clickButton(buttonCls: string): Promise<any> {\n const tabsetEl = this.getTabsetEl();\n\n const newButtonEl = tabsetEl.querySelector(\n `.sky-tabset-btns .${buttonCls}`\n ) as HTMLButtonElement;\n\n newButtonEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private getTabsetEl(): HTMLDivElement {\n const tabsetEl = this.debugEl.query(By.css('.sky-tabset')).nativeElement;\n\n return tabsetEl;\n }\n\n private getTabLinkEls(): NodeListOf<HTMLAnchorElement> {\n return this.getTabsetEl().querySelectorAll(`.sky-tabset-tabs .sky-btn-tab`);\n }\n\n private getTabLinkEl(tabIndex: number): HTMLAnchorElement {\n const tabLinkEl = this.getTabLinkEls().item(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n return tabLinkEl;\n }\n\n private getTextContent(el: Element | Node): string {\n return (el && el.textContent.trim()) || undefined;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skyux-tabs-testing.js","sources":["../../../../../libs/components/tabs/testing/src/tabs/tabset-fixture.ts","../../../../../libs/components/tabs/testing/src/skyux-tabs-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\nimport { SkyTabsetFixtureTab } from './tab-fixture-tab';\n\n/**\n * Allows interaction with a SKY UX tabset component.\n */\nexport class SkyTabsetFixture {\n /**\n * The tabset component's ARIA label.\n */\n public get ariaLabel(): string {\n const tabsetEl = this.getTabsetEl();\n return tabsetEl.getAttribute('aria-label') || undefined;\n }\n\n /**\n * The tabset component's ARIA labelled by attribute.\n */\n public get ariaLabelledBy(): string {\n const tabsetEl = this.getTabsetEl();\n return tabsetEl.getAttribute('aria-labelledby') || undefined;\n }\n\n /**\n * The index of the currently selected tab.\n */\n public get activeTabIndex(): number {\n const tabLinkEls = this.getTabLinkEls();\n\n for (let i = 0, n = tabLinkEls.length; i < n; i++) {\n if (tabLinkEls.item(i).classList.contains('sky-btn-tab-selected')) {\n return i;\n }\n }\n\n return -1;\n }\n\n private debugEl: DebugElement;\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this.debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-tabset'\n );\n }\n\n /**\n * Retrieves information about the tab at the specified index.\n * @param tabIndex The index of the tab.\n */\n public getTab(tabIndex: number): SkyTabsetFixtureTab {\n const tabLinkEl = this.getTabLinkEl(tabIndex);\n\n const active = this.activeTabIndex === tabIndex;\n const disabled = tabLinkEl.classList.contains('sky-btn-tab-disabled');\n const tabHeading = this.getTextContent(\n tabLinkEl.querySelector('.sky-tab-heading').childNodes[0]\n );\n const tabHeaderCount = this.getTextContent(\n tabLinkEl.querySelector('.sky-tab-header-count')\n );\n\n let permalinkValue: string;\n\n if (tabLinkEl.href) {\n const permalink = tabLinkEl.href.split('?')[1];\n if (permalink) {\n const permalinkParts = permalink.split('=');\n\n permalinkValue = decodeURIComponent(permalinkParts[1]);\n }\n }\n\n return {\n active,\n disabled,\n permalinkValue,\n tabHeaderCount,\n tabHeading,\n };\n }\n\n /**\n * Clicks the tabset's \"new\" button.\n */\n public async clickNewButton(): Promise<any> {\n return this.clickButton('sky-tabset-btn-new');\n }\n\n /**\n * Clicks the tabset's \"open\" button.\n */\n public async clickOpenButton(): Promise<any> {\n return this.clickButton('sky-tabset-btn-open');\n }\n\n /**\n * Clicks the tab button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTab(tabIndex: number): Promise<any> {\n const tabLinkEl = this.getTabLinkEl(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n tabLinkEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n /**\n * Click's the tab's close button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTabClose(tabIndex: number): Promise<any> {\n const tabWrapperEl = this.getTabsetEl().querySelectorAll(\n `.sky-tabset-tabs .sky-btn-tab-wrapper`\n )[tabIndex];\n\n if (!tabWrapperEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n const closeBtnEl = tabWrapperEl.querySelector(\n '.sky-btn-tab-close'\n ) as HTMLButtonElement;\n\n if (!closeBtnEl) {\n throw new Error('The specified tab does not have a close button.');\n }\n\n closeBtnEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private async clickButton(buttonCls: string): Promise<any> {\n const tabsetEl = this.getTabsetEl();\n\n const newButtonEl = tabsetEl.querySelector(\n `.sky-tabset-btns .${buttonCls}`\n ) as HTMLButtonElement;\n\n newButtonEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private getTabsetEl(): HTMLDivElement {\n const tabsetEl = this.debugEl.query(By.css('.sky-tabset')).nativeElement;\n\n return tabsetEl;\n }\n\n private getTabLinkEls(): NodeListOf<HTMLAnchorElement> {\n return this.getTabsetEl().querySelectorAll(`.sky-tabset-tabs .sky-btn-tab`);\n }\n\n private getTabLinkEl(tabIndex: number): HTMLAnchorElement {\n const tabLinkEl = this.getTabLinkEls().item(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n return tabLinkEl;\n }\n\n private getTextContent(el: Element | Node): string {\n return (el && el.textContent.trim()) || undefined;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}