@skyux/tabs 5.6.2 → 6.0.0-beta.0

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 (108) hide show
  1. package/documentation.json +6 -6
  2. package/esm2020/index.mjs +23 -0
  3. package/esm2020/lib/modules/sectioned-form/sectioned-form-section.component.mjs +62 -0
  4. package/esm2020/lib/modules/sectioned-form/sectioned-form.component.mjs +109 -0
  5. package/esm2020/lib/modules/sectioned-form/sectioned-form.module.mjs +35 -0
  6. package/esm2020/lib/modules/sectioned-form/sectioned-form.service.mjs +35 -0
  7. package/esm2020/lib/modules/shared/sky-tabs-resources.module.mjs +52 -0
  8. package/esm2020/lib/modules/tabs/tab-button.component.mjs +70 -0
  9. package/esm2020/lib/modules/tabs/tab-index.mjs +2 -0
  10. package/esm2020/lib/modules/tabs/tab.component.mjs +131 -0
  11. package/esm2020/lib/modules/tabs/tabs.module.mjs +57 -0
  12. package/esm2020/lib/modules/tabs/tabset-active-tab-unregistered-args.mjs +2 -0
  13. package/esm2020/lib/modules/tabs/tabset-adapter.service.mjs +56 -0
  14. package/esm2020/lib/modules/tabs/tabset-buttons-display-mode.mjs +2 -0
  15. package/esm2020/lib/modules/tabs/tabset-nav-button.component.mjs +116 -0
  16. package/esm2020/lib/modules/tabs/tabset-permalink.service.mjs +126 -0
  17. package/esm2020/lib/modules/tabs/tabset-style.mjs +2 -0
  18. package/esm2020/lib/modules/tabs/tabset-tab-indexes-change.mjs +2 -0
  19. package/esm2020/lib/modules/tabs/tabset.component.mjs +396 -0
  20. package/esm2020/lib/modules/tabs/tabset.service.mjs +110 -0
  21. package/esm2020/lib/modules/vertical-tabset/vertical-tab-media-query.service.mjs +72 -0
  22. package/esm2020/lib/modules/vertical-tabset/vertical-tab.component.mjs +197 -0
  23. package/esm2020/lib/modules/vertical-tabset/vertical-tabset-adapter.service.mjs +48 -0
  24. package/esm2020/lib/modules/vertical-tabset/vertical-tabset-group.component.mjs +83 -0
  25. package/esm2020/lib/modules/vertical-tabset/vertical-tabset.component.mjs +150 -0
  26. package/esm2020/lib/modules/vertical-tabset/vertical-tabset.module.mjs +60 -0
  27. package/esm2020/lib/modules/vertical-tabset/vertical-tabset.service.mjs +168 -0
  28. package/esm2020/skyux-tabs.mjs +5 -0
  29. package/esm2020/testing/public-api.mjs +3 -0
  30. package/esm2020/testing/skyux-tabs-testing.mjs +5 -0
  31. package/esm2020/testing/tabs/tab-fixture-tab.mjs +2 -0
  32. package/esm2020/testing/tabs/tabset-fixture.mjs +130 -0
  33. package/fesm2015/{skyux-tabs-testing.js → skyux-tabs-testing.mjs} +1 -1
  34. package/fesm2015/skyux-tabs-testing.mjs.map +1 -0
  35. package/fesm2015/{skyux-tabs.js → skyux-tabs.mjs} +188 -237
  36. package/fesm2015/skyux-tabs.mjs.map +1 -0
  37. package/{esm2015/testing/tabs/tabset-fixture.js → fesm2020/skyux-tabs-testing.mjs} +39 -43
  38. package/fesm2020/skyux-tabs-testing.mjs.map +1 -0
  39. package/fesm2020/skyux-tabs.mjs +2005 -0
  40. package/fesm2020/skyux-tabs.mjs.map +1 -0
  41. package/lib/modules/shared/sky-tabs-resources.module.d.ts +1 -1
  42. package/package.json +40 -19
  43. package/testing/package.json +5 -5
  44. package/bundles/skyux-tabs-testing.umd.js +0 -498
  45. package/bundles/skyux-tabs.umd.js +0 -2258
  46. package/esm2015/index.js +0 -23
  47. package/esm2015/index.js.map +0 -1
  48. package/esm2015/lib/modules/sectioned-form/sectioned-form-section.component.js +0 -67
  49. package/esm2015/lib/modules/sectioned-form/sectioned-form-section.component.js.map +0 -1
  50. package/esm2015/lib/modules/sectioned-form/sectioned-form.component.js +0 -116
  51. package/esm2015/lib/modules/sectioned-form/sectioned-form.component.js.map +0 -1
  52. package/esm2015/lib/modules/sectioned-form/sectioned-form.module.js +0 -35
  53. package/esm2015/lib/modules/sectioned-form/sectioned-form.module.js.map +0 -1
  54. package/esm2015/lib/modules/sectioned-form/sectioned-form.service.js +0 -35
  55. package/esm2015/lib/modules/sectioned-form/sectioned-form.service.js.map +0 -1
  56. package/esm2015/lib/modules/shared/sky-tabs-resources.module.js +0 -52
  57. package/esm2015/lib/modules/shared/sky-tabs-resources.module.js.map +0 -1
  58. package/esm2015/lib/modules/tabs/tab-button.component.js +0 -76
  59. package/esm2015/lib/modules/tabs/tab-button.component.js.map +0 -1
  60. package/esm2015/lib/modules/tabs/tab-index.js +0 -2
  61. package/esm2015/lib/modules/tabs/tab-index.js.map +0 -1
  62. package/esm2015/lib/modules/tabs/tab.component.js +0 -135
  63. package/esm2015/lib/modules/tabs/tab.component.js.map +0 -1
  64. package/esm2015/lib/modules/tabs/tabs.module.js +0 -57
  65. package/esm2015/lib/modules/tabs/tabs.module.js.map +0 -1
  66. package/esm2015/lib/modules/tabs/tabset-active-tab-unregistered-args.js +0 -2
  67. package/esm2015/lib/modules/tabs/tabset-active-tab-unregistered-args.js.map +0 -1
  68. package/esm2015/lib/modules/tabs/tabset-adapter.service.js +0 -56
  69. package/esm2015/lib/modules/tabs/tabset-adapter.service.js.map +0 -1
  70. package/esm2015/lib/modules/tabs/tabset-buttons-display-mode.js +0 -2
  71. package/esm2015/lib/modules/tabs/tabset-buttons-display-mode.js.map +0 -1
  72. package/esm2015/lib/modules/tabs/tabset-nav-button.component.js +0 -119
  73. package/esm2015/lib/modules/tabs/tabset-nav-button.component.js.map +0 -1
  74. package/esm2015/lib/modules/tabs/tabset-permalink.service.js +0 -126
  75. package/esm2015/lib/modules/tabs/tabset-permalink.service.js.map +0 -1
  76. package/esm2015/lib/modules/tabs/tabset-style.js +0 -2
  77. package/esm2015/lib/modules/tabs/tabset-style.js.map +0 -1
  78. package/esm2015/lib/modules/tabs/tabset-tab-indexes-change.js +0 -2
  79. package/esm2015/lib/modules/tabs/tabset-tab-indexes-change.js.map +0 -1
  80. package/esm2015/lib/modules/tabs/tabset.component.js +0 -405
  81. package/esm2015/lib/modules/tabs/tabset.component.js.map +0 -1
  82. package/esm2015/lib/modules/tabs/tabset.service.js +0 -110
  83. package/esm2015/lib/modules/tabs/tabset.service.js.map +0 -1
  84. package/esm2015/lib/modules/vertical-tabset/vertical-tab-media-query.service.js +0 -72
  85. package/esm2015/lib/modules/vertical-tabset/vertical-tab-media-query.service.js.map +0 -1
  86. package/esm2015/lib/modules/vertical-tabset/vertical-tab.component.js +0 -203
  87. package/esm2015/lib/modules/vertical-tabset/vertical-tab.component.js.map +0 -1
  88. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-adapter.service.js +0 -48
  89. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-adapter.service.js.map +0 -1
  90. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-group.component.js +0 -89
  91. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-group.component.js.map +0 -1
  92. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.component.js +0 -157
  93. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.component.js.map +0 -1
  94. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.module.js +0 -60
  95. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.module.js.map +0 -1
  96. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.service.js +0 -170
  97. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.service.js.map +0 -1
  98. package/esm2015/skyux-tabs.js +0 -5
  99. package/esm2015/skyux-tabs.js.map +0 -1
  100. package/esm2015/testing/public-api.js +0 -3
  101. package/esm2015/testing/public-api.js.map +0 -1
  102. package/esm2015/testing/skyux-tabs-testing.js +0 -5
  103. package/esm2015/testing/skyux-tabs-testing.js.map +0 -1
  104. package/esm2015/testing/tabs/tab-fixture-tab.js +0 -2
  105. package/esm2015/testing/tabs/tab-fixture-tab.js.map +0 -1
  106. package/esm2015/testing/tabs/tabset-fixture.js.map +0 -1
  107. package/fesm2015/skyux-tabs-testing.js.map +0 -1
  108. package/fesm2015/skyux-tabs.js.map +0 -1
@@ -1,157 +0,0 @@
1
- import { animate, style, transition, trigger } from '@angular/animations';
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
3
- import { SkyLibResourcesService } from '@skyux/i18n';
4
- import { Subject } from 'rxjs';
5
- import { take, takeUntil } from 'rxjs/operators';
6
- import { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';
7
- import { HIDDEN_STATE, SkyVerticalTabsetService, VISIBLE_STATE, } from './vertical-tabset.service';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "./vertical-tabset-adapter.service";
10
- import * as i2 from "./vertical-tabset.service";
11
- import * as i3 from "@skyux/i18n";
12
- import * as i4 from "@skyux/indicators";
13
- import * as i5 from "@angular/common";
14
- export class SkyVerticalTabsetComponent {
15
- constructor(adapterService, tabService, resources, changeRef) {
16
- this.adapterService = adapterService;
17
- this.tabService = tabService;
18
- this.resources = resources;
19
- this.changeRef = changeRef;
20
- /**
21
- * Indicates whether the vertical tabset loads tab content during initialization so that it
22
- * displays content without moving around elements in the content container.
23
- * @default false
24
- */
25
- this.maintainTabContent = false;
26
- /**
27
- * Fires when the active tab changes. Emits the index of the active tab. The
28
- * index is based on the tab's position when it loads.
29
- */
30
- this.activeChange = new EventEmitter();
31
- this.isMobile = false;
32
- this._ngUnsubscribe = new Subject();
33
- }
34
- /**
35
- * Specifies an ARIA role for the vertical tabset
36
- * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)
37
- * by indicating how the tabset functions and what it controls. For information about how
38
- * an ARIA role indicates what an item represents on a web page, see the
39
- * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).
40
- * @default "tablist"
41
- * @deprecated Any other value than `tablist` could lead to a poor user experience for users with assistive technology.
42
- * In the next major version, this property will be automatically set to `tablist`.
43
- */
44
- get ariaRole() {
45
- if (this.isMobile) {
46
- return undefined;
47
- }
48
- return this._ariaRole || 'tablist';
49
- }
50
- set ariaRole(value) {
51
- this._ariaRole = value;
52
- }
53
- ngOnInit() {
54
- this.tabService.maintainTabContent = this.maintainTabContent;
55
- this.tabService.indexChanged
56
- .pipe(takeUntil(this._ngUnsubscribe))
57
- .subscribe((index) => {
58
- this.activeChange.emit(index);
59
- if (this.contentWrapper) {
60
- this.adapterService.scrollToContentTop(this.contentWrapper);
61
- }
62
- this.changeRef.markForCheck();
63
- });
64
- this.tabService.switchingMobile
65
- .pipe(takeUntil(this._ngUnsubscribe))
66
- .subscribe((mobile) => {
67
- this.isMobile = mobile;
68
- this.changeRef.markForCheck();
69
- });
70
- if (this.tabService.isMobile()) {
71
- this.isMobile = true;
72
- this.tabService.animationContentVisibleState = VISIBLE_STATE;
73
- this.changeRef.markForCheck();
74
- }
75
- if (!this.showTabsText) {
76
- this.resources
77
- .getString('skyux_vertical_tabs_show_tabs_text')
78
- .pipe(take(1))
79
- .subscribe((resource) => {
80
- /* sanity check */
81
- /* istanbul ignore else */
82
- if (!this.showTabsText) {
83
- this.showTabsText = resource;
84
- }
85
- });
86
- }
87
- }
88
- ngAfterViewChecked() {
89
- this.tabService.content = this.content;
90
- this.tabService.updateContent();
91
- }
92
- ngOnDestroy() {
93
- this._ngUnsubscribe.next();
94
- this._ngUnsubscribe.complete();
95
- }
96
- }
97
- SkyVerticalTabsetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetComponent, deps: [{ token: i1.SkyVerticalTabsetAdapterService }, { token: i2.SkyVerticalTabsetService }, { token: i3.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
98
- SkyVerticalTabsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyVerticalTabsetComponent, selector: "sky-vertical-tabset", inputs: { showTabsText: "showTabsText", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaRole: "ariaRole", maintainTabContent: "maintainTabContent" }, outputs: { activeChange: "activeChange" }, providers: [SkyVerticalTabsetService], viewQueries: [{ propertyName: "tabGroups", first: true, predicate: ["groupContainerWrapper"], descendants: true }, { propertyName: "content", first: true, predicate: ["skySideContent"], descendants: true }, { propertyName: "contentWrapper", first: true, predicate: ["contentContainerWrapper"], descendants: true }], ngImport: i0, template: "<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", styles: [":host .sky-vertical-tabset{display:block;height:auto}:host .sky-vertical-tabset-group-container{border-right:none}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:block;height:auto}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:none}@media (min-width: 768px){:host .sky-vertical-tabset{display:flex;height:100%}:host .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:flex;height:100%}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}.sky-vertical-tabset-hidden{display:none}.sky-vertical-tabset-content{margin:10px 0 0 10px;flex-basis:75%;overflow-y:auto}.sky-vertical-tabset-content-hidden{display:none}.sky-vertical-tabset-show-tabs-btn{margin-top:10px}.sky-vertical-tabset-group-container{flex-basis:25%;overflow-y:auto}:host-context(sky-modal-content >) .sky-vertical-tabset{margin:-15px}:host-context(.sky-theme-modern) .sky-vertical-tabset-content{margin:15px}@media (min-width: 768px){:host-context(.sky-theme-modern) :host .sky-vertical-tabset-content{margin:20px 30px}:host-context(.sky-theme-modern) :host .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}}:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:20px 30px}:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}.sky-theme-modern .sky-vertical-tabset-content{margin:15px}@media (min-width: 768px){.sky-theme-modern :host .sky-vertical-tabset-content{margin:20px 30px}.sky-theme-modern :host .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}}.sky-theme-modern :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,.sky-theme-modern :host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,.sky-theme-modern :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:20px 30px}.sky-theme-modern :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,.sky-theme-modern :host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,.sky-theme-modern :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}\n"], components: [{ type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
99
- trigger('tabGroupEnter', [
100
- transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [
101
- style({ transform: 'translate(-100%)' }),
102
- animate('150ms ease-in'),
103
- ]),
104
- ]),
105
- trigger('contentEnter', [
106
- transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [
107
- style({ transform: 'translate(100%)' }),
108
- animate('150ms ease-in'),
109
- ]),
110
- ]),
111
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetComponent, decorators: [{
113
- type: Component,
114
- args: [{
115
- selector: 'sky-vertical-tabset',
116
- templateUrl: './vertical-tabset.component.html',
117
- styleUrls: ['./vertical-tabset.component.scss'],
118
- providers: [SkyVerticalTabsetService],
119
- changeDetection: ChangeDetectionStrategy.OnPush,
120
- animations: [
121
- trigger('tabGroupEnter', [
122
- transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [
123
- style({ transform: 'translate(-100%)' }),
124
- animate('150ms ease-in'),
125
- ]),
126
- ]),
127
- trigger('contentEnter', [
128
- transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [
129
- style({ transform: 'translate(100%)' }),
130
- animate('150ms ease-in'),
131
- ]),
132
- ]),
133
- ],
134
- }]
135
- }], ctorParameters: function () { return [{ type: i1.SkyVerticalTabsetAdapterService }, { type: i2.SkyVerticalTabsetService }, { type: i3.SkyLibResourcesService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { showTabsText: [{
136
- type: Input
137
- }], ariaLabel: [{
138
- type: Input
139
- }], ariaLabelledBy: [{
140
- type: Input
141
- }], ariaRole: [{
142
- type: Input
143
- }], maintainTabContent: [{
144
- type: Input
145
- }], activeChange: [{
146
- type: Output
147
- }], tabGroups: [{
148
- type: ViewChild,
149
- args: ['groupContainerWrapper']
150
- }], content: [{
151
- type: ViewChild,
152
- args: ['skySideContent']
153
- }], contentWrapper: [{
154
- type: ViewChild,
155
- args: ['contentContainerWrapper']
156
- }] } });
157
- //# sourceMappingURL=vertical-tabset.component.js.map
@@ -1 +0,0 @@
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,60 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { SkyIdModule } from '@skyux/core';
4
- import { SkyExpansionIndicatorModule, SkyIconModule, SkyStatusIndicatorModule, } from '@skyux/indicators';
5
- import { SkyThemeModule } from '@skyux/theme';
6
- import { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';
7
- import { SkyVerticalTabComponent } from './vertical-tab.component';
8
- import { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';
9
- import { SkyVerticalTabsetGroupComponent } from './vertical-tabset-group.component';
10
- import { SkyVerticalTabsetComponent } from './vertical-tabset.component';
11
- import * as i0 from "@angular/core";
12
- export class SkyVerticalTabsetModule {
13
- }
14
- SkyVerticalTabsetModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
- SkyVerticalTabsetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetModule, declarations: [SkyVerticalTabsetComponent,
16
- SkyVerticalTabsetGroupComponent,
17
- SkyVerticalTabComponent], imports: [CommonModule,
18
- SkyIconModule,
19
- SkyIdModule,
20
- SkyExpansionIndicatorModule,
21
- SkyStatusIndicatorModule,
22
- SkyTabsResourcesModule,
23
- SkyThemeModule], exports: [SkyVerticalTabsetComponent,
24
- SkyVerticalTabsetGroupComponent,
25
- SkyVerticalTabComponent] });
26
- SkyVerticalTabsetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetModule, providers: [SkyVerticalTabsetAdapterService], imports: [[
27
- CommonModule,
28
- SkyIconModule,
29
- SkyIdModule,
30
- SkyExpansionIndicatorModule,
31
- SkyStatusIndicatorModule,
32
- SkyTabsResourcesModule,
33
- SkyThemeModule,
34
- ]] });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetModule, decorators: [{
36
- type: NgModule,
37
- args: [{
38
- declarations: [
39
- SkyVerticalTabsetComponent,
40
- SkyVerticalTabsetGroupComponent,
41
- SkyVerticalTabComponent,
42
- ],
43
- imports: [
44
- CommonModule,
45
- SkyIconModule,
46
- SkyIdModule,
47
- SkyExpansionIndicatorModule,
48
- SkyStatusIndicatorModule,
49
- SkyTabsResourcesModule,
50
- SkyThemeModule,
51
- ],
52
- providers: [SkyVerticalTabsetAdapterService],
53
- exports: [
54
- SkyVerticalTabsetComponent,
55
- SkyVerticalTabsetGroupComponent,
56
- SkyVerticalTabComponent,
57
- ],
58
- }]
59
- }] });
60
- //# sourceMappingURL=vertical-tabset.module.js.map
@@ -1 +0,0 @@
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"]}
@@ -1,170 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { SkyMediaBreakpoints, SkyMediaQueryService } from '@skyux/core';
3
- import { BehaviorSubject, Subject } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@skyux/core";
6
- export const VISIBLE_STATE = 'shown';
7
- export const HIDDEN_STATE = 'void';
8
- /**
9
- * @internal
10
- */
11
- export class SkyVerticalTabsetService {
12
- constructor(mediaQueryService) {
13
- this.mediaQueryService = mediaQueryService;
14
- this.activeIndex = undefined;
15
- this.hidingTabs = new BehaviorSubject(false);
16
- this.indexChanged = new BehaviorSubject(undefined);
17
- this.maintainTabContent = false;
18
- this.showingTabs = new BehaviorSubject(false);
19
- this.switchingMobile = new Subject();
20
- this.tabs = [];
21
- this.tabAdded = new Subject();
22
- this.tabClicked = new BehaviorSubject(undefined);
23
- this._contentAdded = false;
24
- this._tabsVisible = false;
25
- this._isMobile = false;
26
- this.mediaQueryService.subscribe((breakpoint) => {
27
- const nowMobile = breakpoint === SkyMediaBreakpoints.xs;
28
- if (nowMobile && !this._isMobile) {
29
- // switching to mobile
30
- this.switchingMobile.next(true);
31
- if (!this._tabsVisible) {
32
- this.hidingTabs.next(true);
33
- }
34
- }
35
- else if (!nowMobile && this._isMobile) {
36
- // switching to widescreen
37
- this.switchingMobile.next(false);
38
- if (!this._tabsVisible) {
39
- this.showingTabs.next(true);
40
- }
41
- }
42
- this._isMobile = nowMobile;
43
- });
44
- }
45
- set content(value) {
46
- this._content = value;
47
- }
48
- addTab(tab) {
49
- const index = this.tabs.length;
50
- tab.index = index;
51
- this.tabs.push(tab);
52
- if (tab.active) {
53
- this.activateTab(tab);
54
- }
55
- this.tabAdded.next(tab);
56
- }
57
- destroyTab(tab) {
58
- var _a;
59
- const tabIndex = this.tabs.indexOf(tab);
60
- if (tabIndex === -1) {
61
- return;
62
- }
63
- if (this.maintainTabContent &&
64
- tab.contentRendered &&
65
- (
66
- /* istanbul ignore next */
67
- (_a = this._content) === null || _a === void 0 ? void 0 : _a.nativeElement.contains(tab.tabContent.nativeElement))) {
68
- this._content.nativeElement.removeChild(tab.tabContent.nativeElement);
69
- }
70
- this.tabs.splice(tabIndex, 1);
71
- // update tab indices
72
- this.tabs.forEach((tabItem, index) => (tabItem.index = index));
73
- if (tab.active) {
74
- if (!this.maintainTabContent) {
75
- this.destroyContent();
76
- }
77
- // Try selecting the next tab first, and if there's no next tab then
78
- // try selecting the previous one.
79
- const newActiveTab = this.tabs[tabIndex] || this.tabs[tabIndex - 1];
80
- /*istanbul ignore else */
81
- if (newActiveTab) {
82
- newActiveTab.activateTab();
83
- }
84
- }
85
- }
86
- activateTab(tab) {
87
- // unactivate active tab
88
- const activeTab = this.tabs.find((t) => t.index === this.activeIndex);
89
- if (activeTab && activeTab.index !== tab.index) {
90
- activeTab.active = false;
91
- activeTab.tabDeactivated();
92
- }
93
- this.activeIndex = tab.index;
94
- this.tabClicked.next(true);
95
- this.updateTabClicked();
96
- }
97
- activeTab() {
98
- return this.tabs.find((t) => t.index === this.activeIndex);
99
- }
100
- isMobile() {
101
- return this._isMobile;
102
- }
103
- updateContent() {
104
- if (!this.maintainTabContent) {
105
- if (!this._contentAdded && this.contentVisible()) {
106
- // content needs to be moved
107
- this.moveContent();
108
- }
109
- else if (this._contentAdded && !this.contentVisible()) {
110
- // content hidden
111
- this._contentAdded = false;
112
- }
113
- }
114
- else {
115
- this.tabs.forEach((tab) => {
116
- if (!tab.contentRendered) {
117
- this._content.nativeElement.appendChild(tab.tabContent.nativeElement);
118
- tab.contentRendered = true;
119
- }
120
- });
121
- }
122
- }
123
- tabsVisible() {
124
- return !this.isMobile() || this._tabsVisible;
125
- }
126
- contentVisible() {
127
- return !this.isMobile() || !this._tabsVisible;
128
- }
129
- showTabs() {
130
- this._tabsVisible = true;
131
- this._contentAdded = false;
132
- this.animationTabsVisibleState = VISIBLE_STATE;
133
- this.animationContentVisibleState = HIDDEN_STATE;
134
- this.showingTabs.next(true);
135
- }
136
- destroyContent() {
137
- if (this._content) {
138
- this._content.nativeElement.innerHTML = '';
139
- }
140
- this.content = undefined;
141
- }
142
- moveContent() {
143
- /* istanbul ignore else */
144
- if (this._content && !this._contentAdded) {
145
- const activeTab = this.activeTab();
146
- const activeContent = activeTab ? activeTab.tabContent : undefined;
147
- if (activeContent && activeContent.nativeElement) {
148
- this._content.nativeElement.appendChild(activeContent.nativeElement);
149
- activeTab.contentRendered = true;
150
- this._contentAdded = true;
151
- }
152
- }
153
- }
154
- updateTabClicked() {
155
- this._contentAdded = false;
156
- if (this.isMobile()) {
157
- this._tabsVisible = false;
158
- this.animationContentVisibleState = VISIBLE_STATE;
159
- this.animationTabsVisibleState = HIDDEN_STATE;
160
- this.hidingTabs.next(true);
161
- }
162
- this.indexChanged.next(this.activeIndex);
163
- }
164
- }
165
- SkyVerticalTabsetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetService, deps: [{ token: i1.SkyMediaQueryService }], target: i0.ɵɵFactoryTarget.Injectable });
166
- SkyVerticalTabsetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetService });
167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetService, decorators: [{
168
- type: Injectable
169
- }], ctorParameters: function () { return [{ type: i1.SkyMediaQueryService }]; } });
170
- //# sourceMappingURL=vertical-tabset.service.js.map
@@ -1 +0,0 @@
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';\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,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=skyux-tabs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skyux-tabs.js","sourceRoot":"","sources":["../../../../../libs/components/tabs/src/skyux-tabs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC","sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"]}
@@ -1,3 +0,0 @@
1
- export * from './tabs/tab-fixture-tab';
2
- export * from './tabs/tabset-fixture';
3
- //# sourceMappingURL=public-api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"public-api.js","sourceRoot":"","sources":["../../../../../../libs/components/tabs/testing/src/public-api.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC","sourcesContent":["export * from './tabs/tab-fixture-tab';\nexport * from './tabs/tabset-fixture';\n"]}
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=skyux-tabs-testing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skyux-tabs-testing.js","sourceRoot":"","sources":["../../../../../../libs/components/tabs/testing/src/skyux-tabs-testing.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,cAAc,CAAC","sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tab-fixture-tab.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tab-fixture-tab.js","sourceRoot":"","sources":["../../../../../../../libs/components/tabs/testing/src/tabs/tab-fixture-tab.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Properties of a SKY UX tab.\n */\nexport interface SkyTabsetFixtureTab {\n /**\n * Indicates whether the tab is the currently selected tab.\n */\n active: boolean;\n\n /**\n * Indicates whether the tab is disabled.\n */\n disabled: boolean;\n\n /**\n * The permalink value specified for the tab.\n */\n permalinkValue: string;\n\n /**\n * The count displayed in the tab header.\n */\n tabHeaderCount: string;\n\n /**\n * The text displayed in the tab header.\n */\n tabHeading: string;\n}\n"]}
@@ -1 +0,0 @@
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 +0,0 @@
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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"}