@skyux/tabs 7.0.0-beta.4 → 7.0.0-beta.6

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 (40) hide show
  1. package/documentation.json +679 -594
  2. package/esm2020/lib/modules/sectioned-form/sectioned-form.component.mjs +2 -2
  3. package/esm2020/lib/modules/tabs/tab-button-view-model.mjs +1 -1
  4. package/esm2020/lib/modules/tabs/tab-button.component.mjs +7 -8
  5. package/esm2020/lib/modules/tabs/tab.component.mjs +73 -33
  6. package/esm2020/lib/modules/tabs/tabs.module.mjs +5 -2
  7. package/esm2020/lib/modules/tabs/tabset-adapter.service.mjs +34 -22
  8. package/esm2020/lib/modules/tabs/tabset-nav-button-disabled.pipe.mjs +22 -0
  9. package/esm2020/lib/modules/tabs/tabset-nav-button.component.mjs +17 -23
  10. package/esm2020/lib/modules/tabs/tabset-permalink.service.mjs +41 -35
  11. package/esm2020/lib/modules/tabs/tabset-tab-indexes-change.mjs +1 -1
  12. package/esm2020/lib/modules/tabs/tabset.component.mjs +222 -221
  13. package/esm2020/lib/modules/tabs/tabset.service.mjs +67 -51
  14. package/esm2020/lib/modules/vertical-tabset/vertical-tab.component.mjs +5 -3
  15. package/esm2020/lib/modules/vertical-tabset/vertical-tabset-group.component.mjs +4 -4
  16. package/esm2020/lib/modules/vertical-tabset/vertical-tabset.component.mjs +2 -2
  17. package/esm2020/testing/tabs/tab-fixture-tab.mjs +1 -1
  18. package/esm2020/testing/tabs/tabset-fixture.mjs +44 -47
  19. package/fesm2015/skyux-tabs-testing.mjs +47 -49
  20. package/fesm2015/skyux-tabs-testing.mjs.map +1 -1
  21. package/fesm2015/skyux-tabs.mjs +484 -395
  22. package/fesm2015/skyux-tabs.mjs.map +1 -1
  23. package/fesm2020/skyux-tabs-testing.mjs +43 -46
  24. package/fesm2020/skyux-tabs-testing.mjs.map +1 -1
  25. package/fesm2020/skyux-tabs.mjs +603 -516
  26. package/fesm2020/skyux-tabs.mjs.map +1 -1
  27. package/lib/modules/tabs/tab-button-view-model.d.ts +5 -5
  28. package/lib/modules/tabs/tab-button.component.d.ts +9 -10
  29. package/lib/modules/tabs/tab.component.d.ts +13 -18
  30. package/lib/modules/tabs/tabs.module.d.ts +9 -8
  31. package/lib/modules/tabs/tabset-adapter.service.d.ts +5 -10
  32. package/lib/modules/tabs/tabset-nav-button-disabled.pipe.d.ts +8 -0
  33. package/lib/modules/tabs/tabset-nav-button.component.d.ts +8 -6
  34. package/lib/modules/tabs/tabset-permalink.service.d.ts +3 -11
  35. package/lib/modules/tabs/tabset-tab-indexes-change.d.ts +2 -2
  36. package/lib/modules/tabs/tabset.component.d.ts +10 -54
  37. package/lib/modules/tabs/tabset.service.d.ts +8 -12
  38. package/package.json +9 -9
  39. package/testing/tabs/tab-fixture-tab.d.ts +3 -3
  40. package/testing/tabs/tabset-fixture.d.ts +3 -9
@@ -1,7 +1,7 @@
1
1
  import * as i4 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { NgModule, Injectable, Component, ChangeDetectionStrategy, Input, ViewChild, HostListener, ContentChildren, EventEmitter, Output, ViewEncapsulation } from '@angular/core';
4
+ import { NgModule, Injectable, Component, ChangeDetectionStrategy, Input, ViewChild, HostListener, ContentChildren, EventEmitter, Output, ViewEncapsulation, Pipe } from '@angular/core';
5
5
  import { SkyCheckboxModule } from '@skyux/forms';
6
6
  import * as i7 from '@skyux/theme';
7
7
  import { SkyThemeModule } from '@skyux/theme';
@@ -502,7 +502,9 @@ _SkyVerticalTabComponent__ariaRole = new WeakMap(), _SkyVerticalTabComponent__co
502
502
  const width = __classPrivateFieldGet(this, _SkyVerticalTabComponent_adapterService, "f").getWidth(this.tabContent);
503
503
  __classPrivateFieldGet(this, _SkyVerticalTabComponent_verticalTabMediaQueryService, "f").setBreakpointForWidth(width);
504
504
  const newBreakpoint = __classPrivateFieldGet(this, _SkyVerticalTabComponent_verticalTabMediaQueryService, "f").current;
505
- __classPrivateFieldGet(this, _SkyVerticalTabComponent_adapterService, "f").setResponsiveClass(this.tabContent, newBreakpoint);
505
+ if (newBreakpoint) {
506
+ __classPrivateFieldGet(this, _SkyVerticalTabComponent_adapterService, "f").setResponsiveClass(this.tabContent, newBreakpoint);
507
+ }
506
508
  __classPrivateFieldGet(this, _SkyVerticalTabComponent_changeRef, "f").markForCheck();
507
509
  }
508
510
  };
@@ -599,10 +601,10 @@ class SkyVerticalTabsetGroupComponent {
599
601
  }
600
602
  _SkyVerticalTabsetGroupComponent_ngUnsubscribe = new WeakMap(), _SkyVerticalTabsetGroupComponent_openBeforeTabsHidden = new WeakMap(), _SkyVerticalTabsetGroupComponent_tabService = new WeakMap(), _SkyVerticalTabsetGroupComponent_changeRef = new WeakMap();
601
603
  SkyVerticalTabsetGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyVerticalTabsetGroupComponent, deps: [{ token: SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
602
- SkyVerticalTabsetGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyVerticalTabsetGroupComponent, selector: "sky-vertical-tabset-group", inputs: { disabled: "disabled", groupHeading: "groupHeading", open: "open" }, queries: [{ propertyName: "tabs", predicate: SkyVerticalTabComponent }], ngImport: i0, template: "<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]=\"!disabled && open\"\n (click)=\"toggleMenuOpen()\"\n #groupHeadingButton\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"!disabled && 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]=\"!disabled && open ? 'down' : 'up'\"\n #groupContent\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header button{cursor:pointer;display:flex;justify-content:space-between;border:none;width:100%;text-align:left;background:none}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-expansion-indicator>button{font-size:14px!important}.sky-vertical-tabset-disabled{cursor:not-allowed;pointer-events:none}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none;margin:10px 0}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-content{border:none;padding-left:25px}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header{position:relative}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none;margin:10px 0}.sky-theme-modern .sky-vertical-tabset-group-content{border:none;padding-left:25px}.sky-theme-modern .sky-vertical-tabset-group-header{position:relative}.sky-theme-modern .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: i5.λ15, selector: "sky-expansion-indicator", inputs: ["direction"] }], animations: [skyAnimationSlide], changeDetection: i0.ChangeDetectionStrategy.OnPush });
604
+ SkyVerticalTabsetGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyVerticalTabsetGroupComponent, selector: "sky-vertical-tabset-group", inputs: { disabled: "disabled", groupHeading: "groupHeading", open: "open" }, queries: [{ propertyName: "tabs", predicate: SkyVerticalTabComponent }], ngImport: i0, template: "<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]=\"!disabled && open\"\n (click)=\"toggleMenuOpen()\"\n #groupHeadingButton\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"!disabled && open ? 'up' : 'down'\"\n >\n </sky-expansion-indicator>\n </button>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n skyId\n [attr.labelledby]=\"groupHeadingButton.id\"\n [@skyAnimationSlide]=\"!disabled && open ? 'down' : 'up'\"\n #groupContent\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header button{cursor:pointer;display:flex;justify-content:space-between;border:none;width:100%;text-align:left;background:none}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-expansion-indicator>button{font-size:14px!important}.sky-vertical-tabset-disabled{cursor:not-allowed;pointer-events:none}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none;margin:10px 0}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-content{border:none;padding-left:25px}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header{position:relative}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none;margin:10px 0}.sky-theme-modern .sky-vertical-tabset-group-content{border:none;padding-left:25px}.sky-theme-modern .sky-vertical-tabset-group-header{position:relative}.sky-theme-modern .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: i5.λ15, selector: "sky-expansion-indicator", inputs: ["direction"] }], animations: [skyAnimationSlide], changeDetection: i0.ChangeDetectionStrategy.OnPush });
603
605
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyVerticalTabsetGroupComponent, decorators: [{
604
606
  type: Component,
605
- args: [{ selector: 'sky-vertical-tabset-group', changeDetection: ChangeDetectionStrategy.OnPush, animations: [skyAnimationSlide], template: "<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]=\"!disabled && open\"\n (click)=\"toggleMenuOpen()\"\n #groupHeadingButton\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"!disabled && 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]=\"!disabled && open ? 'down' : 'up'\"\n #groupContent\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header button{cursor:pointer;display:flex;justify-content:space-between;border:none;width:100%;text-align:left;background:none}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-expansion-indicator>button{font-size:14px!important}.sky-vertical-tabset-disabled{cursor:not-allowed;pointer-events:none}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none;margin:10px 0}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-content{border:none;padding-left:25px}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header{position:relative}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none;margin:10px 0}.sky-theme-modern .sky-vertical-tabset-group-content{border:none;padding-left:25px}.sky-theme-modern .sky-vertical-tabset-group-header{position:relative}.sky-theme-modern .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}\n"] }]
607
+ args: [{ selector: 'sky-vertical-tabset-group', changeDetection: ChangeDetectionStrategy.OnPush, animations: [skyAnimationSlide], template: "<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]=\"!disabled && open\"\n (click)=\"toggleMenuOpen()\"\n #groupHeadingButton\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"!disabled && open ? 'up' : 'down'\"\n >\n </sky-expansion-indicator>\n </button>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n skyId\n [attr.labelledby]=\"groupHeadingButton.id\"\n [@skyAnimationSlide]=\"!disabled && open ? 'down' : 'up'\"\n #groupContent\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header button{cursor:pointer;display:flex;justify-content:space-between;border:none;width:100%;text-align:left;background:none}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-expansion-indicator>button{font-size:14px!important}.sky-vertical-tabset-disabled{cursor:not-allowed;pointer-events:none}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none;margin:10px 0}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-content{border:none;padding-left:25px}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header{position:relative}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none;margin:10px 0}.sky-theme-modern .sky-vertical-tabset-group-content{border:none;padding-left:25px}.sky-theme-modern .sky-vertical-tabset-group-header{position:relative}.sky-theme-modern .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}\n"] }]
606
608
  }], ctorParameters: function () { return [{ type: SkyVerticalTabsetService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
607
609
  type: Input
608
610
  }], groupHeading: [{
@@ -1033,27 +1035,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
1033
1035
  type: Injectable
1034
1036
  }] });
1035
1037
 
1038
+ var _SkyTabsetService_instances, _SkyTabsetService_activeTabIndex, _SkyTabsetService_focusedTabBtnIndex, _SkyTabsetService_activeTabUnregistered, _SkyTabsetService_tabs, _SkyTabsetService_tabCounter, _SkyTabsetService_isTabIndexActive, _SkyTabsetService_getNextTabArrayIndex, _SkyTabsetService_getPrevTabArrayIndex;
1036
1039
  /**
1037
1040
  * @internal
1038
1041
  */
1039
1042
  class SkyTabsetService {
1040
1043
  constructor() {
1044
+ _SkyTabsetService_instances.add(this);
1041
1045
  this.currentActiveTabIndex = 0;
1042
1046
  this.currentFocusedTabBtnIndex = 0;
1043
- this._activeTabIndex = new BehaviorSubject(0);
1044
- this._focusedTabBtnIndex = new Subject();
1045
- this._activeTabUnregistered = new Subject();
1046
- this.tabs = [];
1047
- this.tabCounter = 0;
1047
+ _SkyTabsetService_activeTabIndex.set(this, void 0);
1048
+ _SkyTabsetService_focusedTabBtnIndex.set(this, void 0);
1049
+ _SkyTabsetService_activeTabUnregistered.set(this, void 0);
1050
+ _SkyTabsetService_tabs.set(this, []);
1051
+ _SkyTabsetService_tabCounter.set(this, 0);
1052
+ __classPrivateFieldSet(this, _SkyTabsetService_activeTabIndex, new BehaviorSubject(0), "f");
1053
+ __classPrivateFieldSet(this, _SkyTabsetService_activeTabUnregistered, new Subject(), "f");
1054
+ __classPrivateFieldSet(this, _SkyTabsetService_focusedTabBtnIndex, new Subject(), "f");
1048
1055
  }
1049
1056
  get activeTabUnregistered() {
1050
- return this._activeTabUnregistered.asObservable();
1057
+ return __classPrivateFieldGet(this, _SkyTabsetService_activeTabUnregistered, "f");
1051
1058
  }
1052
1059
  get activeTabIndex() {
1053
- return this._activeTabIndex.asObservable();
1060
+ return __classPrivateFieldGet(this, _SkyTabsetService_activeTabIndex, "f");
1054
1061
  }
1055
1062
  get focusedTabBtnIndex() {
1056
- return this._focusedTabBtnIndex.asObservable();
1063
+ return __classPrivateFieldGet(this, _SkyTabsetService_focusedTabBtnIndex, "f");
1064
+ }
1065
+ ngOnDestroy() {
1066
+ __classPrivateFieldGet(this, _SkyTabsetService_activeTabIndex, "f").complete();
1067
+ __classPrivateFieldGet(this, _SkyTabsetService_activeTabUnregistered, "f").complete();
1068
+ __classPrivateFieldGet(this, _SkyTabsetService_focusedTabBtnIndex, "f").complete();
1057
1069
  }
1058
1070
  /**
1059
1071
  * Sets the active tab by its unique `tabIndex` property.
@@ -1066,26 +1078,26 @@ class SkyTabsetService {
1066
1078
  this.currentActiveTabIndex = value;
1067
1079
  /* istanbul ignore else */
1068
1080
  if (config.emitChange) {
1069
- this._activeTabIndex.next(value);
1081
+ __classPrivateFieldGet(this, _SkyTabsetService_activeTabIndex, "f").next(value);
1070
1082
  }
1071
1083
  this.setFocusedTabBtnIndex(value);
1072
1084
  }
1073
1085
  }
1074
1086
  focusNextTabBtn(tabButtons) {
1075
- const currentTabArrayIndex = this.tabs.findIndex((tab) => this.tabIndexesEqual(tab.tabIndex, this.currentFocusedTabBtnIndex));
1076
- for (let i = this.getNextTabArrayIndex(currentTabArrayIndex); i !== currentTabArrayIndex; i = this.getNextTabArrayIndex(i)) {
1087
+ const currentTabArrayIndex = __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f").findIndex((tab) => this.tabIndexesEqual(tab.tabIndex, this.currentFocusedTabBtnIndex));
1088
+ for (let i = __classPrivateFieldGet(this, _SkyTabsetService_instances, "m", _SkyTabsetService_getNextTabArrayIndex).call(this, currentTabArrayIndex); i !== currentTabArrayIndex; i = __classPrivateFieldGet(this, _SkyTabsetService_instances, "m", _SkyTabsetService_getNextTabArrayIndex).call(this, i)) {
1077
1089
  const tabBtn = tabButtons[i];
1078
- if (!tabBtn.disabled) {
1090
+ if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {
1079
1091
  this.setFocusedTabBtnIndex(tabBtn.tabIndex);
1080
1092
  return;
1081
1093
  }
1082
1094
  }
1083
1095
  }
1084
1096
  focusPrevTabBtn(tabButtons) {
1085
- const currentTabArrayIndex = this.tabs.findIndex((tab) => this.tabIndexesEqual(tab.tabIndex, this.currentFocusedTabBtnIndex));
1086
- for (let i = this.getPrevTabArrayIndex(currentTabArrayIndex); i !== currentTabArrayIndex; i = this.getPrevTabArrayIndex(i)) {
1097
+ const currentTabArrayIndex = __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f").findIndex((tab) => this.tabIndexesEqual(tab.tabIndex, this.currentFocusedTabBtnIndex));
1098
+ for (let i = __classPrivateFieldGet(this, _SkyTabsetService_instances, "m", _SkyTabsetService_getPrevTabArrayIndex).call(this, currentTabArrayIndex); i !== currentTabArrayIndex; i = __classPrivateFieldGet(this, _SkyTabsetService_instances, "m", _SkyTabsetService_getPrevTabArrayIndex).call(this, i)) {
1087
1099
  const tabBtn = tabButtons[i];
1088
- if (!tabBtn.disabled) {
1100
+ if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {
1089
1101
  this.setFocusedTabBtnIndex(tabBtn.tabIndex);
1090
1102
  return;
1091
1103
  }
@@ -1094,7 +1106,7 @@ class SkyTabsetService {
1094
1106
  focusFirstOrNearestTabBtn(tabButtons) {
1095
1107
  for (let i = 0; i < tabButtons.length; i++) {
1096
1108
  const tabBtn = tabButtons[i];
1097
- if (!tabBtn.disabled) {
1109
+ if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {
1098
1110
  this.setFocusedTabBtnIndex(tabBtn.tabIndex);
1099
1111
  return;
1100
1112
  }
@@ -1103,7 +1115,7 @@ class SkyTabsetService {
1103
1115
  focusLastOrNearestTabBtn(tabButtons) {
1104
1116
  for (let i = tabButtons.length - 1; i >= 0; i--) {
1105
1117
  const tabBtn = tabButtons[i];
1106
- if (!tabBtn.disabled) {
1118
+ if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {
1107
1119
  this.setFocusedTabBtnIndex(tabBtn.tabIndex);
1108
1120
  return;
1109
1121
  }
@@ -1111,100 +1123,104 @@ class SkyTabsetService {
1111
1123
  }
1112
1124
  setFocusedTabBtnIndex(tabIndex) {
1113
1125
  this.currentFocusedTabBtnIndex = tabIndex;
1114
- this._focusedTabBtnIndex.next(tabIndex);
1126
+ __classPrivateFieldGet(this, _SkyTabsetService_focusedTabBtnIndex, "f").next(tabIndex);
1115
1127
  }
1116
1128
  /**
1117
1129
  * Registers a tab component.
1118
1130
  */
1119
1131
  registerTab(tabIndex) {
1132
+ var _a;
1120
1133
  if (tabIndex === undefined) {
1121
- tabIndex = this.tabCounter;
1122
- this.tabCounter++;
1134
+ tabIndex = __classPrivateFieldGet(this, _SkyTabsetService_tabCounter, "f");
1135
+ __classPrivateFieldSet(this, _SkyTabsetService_tabCounter, (_a = __classPrivateFieldGet(this, _SkyTabsetService_tabCounter, "f"), _a++, _a), "f");
1123
1136
  }
1124
- this.tabs.push({ tabIndex });
1137
+ __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f").push({ tabIndex });
1125
1138
  return tabIndex;
1126
1139
  }
1127
1140
  updateTabIndex(currentTabIndex, newTabIndex) {
1128
- const found = this.tabs.find((tab) => this.tabIndexesEqual(tab.tabIndex, currentTabIndex));
1129
- found.tabIndex = newTabIndex;
1141
+ const found = __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f").find((tab) => this.tabIndexesEqual(tab.tabIndex, currentTabIndex));
1142
+ if (found) {
1143
+ found.tabIndex = newTabIndex;
1144
+ }
1130
1145
  }
1131
1146
  /**
1132
1147
  * Unregisters a tab component.
1133
1148
  */
1134
1149
  unregisterTab(tabIndex) {
1135
- var _a;
1136
- const index = this.tabs.findIndex((tab) => this.tabIndexesEqual(tab.tabIndex, tabIndex));
1150
+ var _b;
1151
+ const index = __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f").findIndex((tab) => this.tabIndexesEqual(tab.tabIndex, tabIndex));
1137
1152
  // Notify the tabset component when an active tab is unregistered.
1138
- if (this.isTabIndexActive((_a = this.tabs[index]) === null || _a === void 0 ? void 0 : _a.tabIndex)) {
1139
- this._activeTabUnregistered.next({
1153
+ if (__classPrivateFieldGet(this, _SkyTabsetService_instances, "m", _SkyTabsetService_isTabIndexActive).call(this, (_b = __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f")[index]) === null || _b === void 0 ? void 0 : _b.tabIndex)) {
1154
+ __classPrivateFieldGet(this, _SkyTabsetService_activeTabUnregistered, "f").next({
1140
1155
  arrayIndex: index,
1141
1156
  });
1142
1157
  }
1143
- this.tabs.splice(index, 1);
1158
+ __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f").splice(index, 1);
1144
1159
  }
1145
1160
  /**
1146
1161
  * Unregisters all tab components at once.
1147
1162
  */
1148
1163
  unregisterAll() {
1149
- this.tabs = [];
1164
+ __classPrivateFieldSet(this, _SkyTabsetService_tabs, [], "f");
1150
1165
  }
1151
1166
  /**
1152
1167
  * Compares two tab indexes and returns `true` if they are equal.
1153
1168
  */
1154
1169
  tabIndexesEqual(tabIndex1, tabIndex2) {
1155
- return tabIndex1 === tabIndex2 || +tabIndex1 === +tabIndex2;
1170
+ return (tabIndex1 === tabIndex2 ||
1171
+ (tabIndex1 !== undefined &&
1172
+ tabIndex2 !== undefined &&
1173
+ +tabIndex1 === +tabIndex2));
1156
1174
  }
1157
1175
  /**
1158
1176
  * Verifies if a provided tab index is registered.
1159
1177
  */
1160
1178
  isValidTabIndex(tabIndex) {
1161
- return this.tabs.some((tab) => this.tabIndexesEqual(tab.tabIndex, tabIndex));
1179
+ return __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f").some((tab) => this.tabIndexesEqual(tab.tabIndex, tabIndex));
1162
1180
  }
1163
1181
  /**
1164
1182
  * Activates the first registered tab.
1165
1183
  */
1166
1184
  activateFirstTab() {
1167
- const firstTabIndex = this.tabs[0] && this.tabs[0].tabIndex;
1185
+ const firstTabIndex = __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f")[0] && __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f")[0].tabIndex;
1168
1186
  if (firstTabIndex !== undefined) {
1169
1187
  this.setActiveTabIndex(firstTabIndex);
1170
1188
  return firstTabIndex;
1171
1189
  }
1190
+ return undefined;
1172
1191
  }
1173
1192
  /**
1174
1193
  * Activates the next registered tab, or the previous one based on a provided array index.
1175
1194
  */
1176
1195
  activateNearestTab(arrayIndex) {
1177
- const newActiveTab = this.tabs[arrayIndex] || this.tabs[arrayIndex - 1];
1196
+ const newActiveTab = __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f")[arrayIndex] || __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f")[arrayIndex - 1];
1178
1197
  if (newActiveTab) {
1179
1198
  this.currentActiveTabIndex = newActiveTab.tabIndex;
1180
1199
  }
1181
1200
  }
1182
- isTabIndexActive(tabIndex) {
1183
- return this.tabIndexesEqual(tabIndex, this.currentActiveTabIndex);
1184
- }
1185
- getNextTabArrayIndex(currentIndex) {
1186
- let nextIndex = currentIndex + 1;
1187
- if (nextIndex === this.tabs.length) {
1188
- nextIndex = 0;
1189
- }
1190
- return nextIndex;
1191
- }
1192
- getPrevTabArrayIndex(currentIndex) {
1193
- let prevIndex = currentIndex - 1;
1194
- if (prevIndex < 0) {
1195
- prevIndex = this.tabs.length - 1;
1196
- }
1197
- return prevIndex;
1198
- }
1199
1201
  }
1202
+ _SkyTabsetService_activeTabIndex = new WeakMap(), _SkyTabsetService_focusedTabBtnIndex = new WeakMap(), _SkyTabsetService_activeTabUnregistered = new WeakMap(), _SkyTabsetService_tabs = new WeakMap(), _SkyTabsetService_tabCounter = new WeakMap(), _SkyTabsetService_instances = new WeakSet(), _SkyTabsetService_isTabIndexActive = function _SkyTabsetService_isTabIndexActive(tabIndex) {
1203
+ return this.tabIndexesEqual(tabIndex, this.currentActiveTabIndex);
1204
+ }, _SkyTabsetService_getNextTabArrayIndex = function _SkyTabsetService_getNextTabArrayIndex(currentIndex) {
1205
+ let nextIndex = currentIndex + 1;
1206
+ if (nextIndex === __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f").length) {
1207
+ nextIndex = 0;
1208
+ }
1209
+ return nextIndex;
1210
+ }, _SkyTabsetService_getPrevTabArrayIndex = function _SkyTabsetService_getPrevTabArrayIndex(currentIndex) {
1211
+ let prevIndex = currentIndex - 1;
1212
+ if (prevIndex < 0) {
1213
+ prevIndex = __classPrivateFieldGet(this, _SkyTabsetService_tabs, "f").length - 1;
1214
+ }
1215
+ return prevIndex;
1216
+ };
1200
1217
  SkyTabsetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1201
1218
  SkyTabsetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetService });
1202
1219
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetService, decorators: [{
1203
1220
  type: Injectable
1204
- }] });
1221
+ }], ctorParameters: function () { return []; } });
1205
1222
 
1206
1223
  var _SkyTabButtonComponent_instances, _SkyTabButtonComponent__isActive, _SkyTabButtonComponent__isDisabled, _SkyTabButtonComponent__tabStyle, _SkyTabButtonComponent_adapterService, _SkyTabButtonComponent_changeDetectorRef, _SkyTabButtonComponent_elementRef, _SkyTabButtonComponent_tabsetService, _SkyTabButtonComponent_ngUnsubscribe, _SkyTabButtonComponent_updateWizardStepState;
1207
- const DEFAULT_ELEMENT_ROLE$1 = 'tab';
1208
1224
  const DEFAULT_DISABLED = false;
1209
1225
  /**
1210
1226
  * @internal
@@ -1214,7 +1230,6 @@ class SkyTabButtonComponent {
1214
1230
  _SkyTabButtonComponent_instances.add(this);
1215
1231
  this.buttonClick = new EventEmitter();
1216
1232
  this.closeClick = new EventEmitter();
1217
- this.elementRole = DEFAULT_ELEMENT_ROLE$1;
1218
1233
  this.closeBtnTabIndex = '-1';
1219
1234
  _SkyTabButtonComponent__isActive.set(this, false);
1220
1235
  _SkyTabButtonComponent__isDisabled.set(this, DEFAULT_DISABLED);
@@ -1248,14 +1263,13 @@ class SkyTabButtonComponent {
1248
1263
  }
1249
1264
  set tabStyle(style) {
1250
1265
  __classPrivateFieldSet(this, _SkyTabButtonComponent__tabStyle, style, "f");
1251
- this.elementRole = style === 'tabs' ? DEFAULT_ELEMENT_ROLE$1 : undefined;
1252
1266
  __classPrivateFieldGet(this, _SkyTabButtonComponent_instances, "m", _SkyTabButtonComponent_updateWizardStepState).call(this);
1253
1267
  }
1254
1268
  ngAfterViewInit() {
1255
1269
  __classPrivateFieldGet(this, _SkyTabButtonComponent_tabsetService, "f").focusedTabBtnIndex
1256
1270
  .pipe(distinctUntilChanged(), takeUntil(__classPrivateFieldGet(this, _SkyTabButtonComponent_ngUnsubscribe, "f")))
1257
1271
  .subscribe((focusedIndex) => {
1258
- if (focusedIndex === this.tabIndex) {
1272
+ if (this.tabIndex !== undefined && focusedIndex === this.tabIndex) {
1259
1273
  this.closeBtnTabIndex = '0';
1260
1274
  this.focusBtn();
1261
1275
  }
@@ -1300,7 +1314,9 @@ class SkyTabButtonComponent {
1300
1314
  __classPrivateFieldGet(this, _SkyTabButtonComponent_adapterService, "f").focusButtonLink(__classPrivateFieldGet(this, _SkyTabButtonComponent_elementRef, "f"));
1301
1315
  }
1302
1316
  onFocus() {
1303
- __classPrivateFieldGet(this, _SkyTabButtonComponent_tabsetService, "f").setFocusedTabBtnIndex(this.tabIndex);
1317
+ if (this.tabIndex !== undefined) {
1318
+ __classPrivateFieldGet(this, _SkyTabButtonComponent_tabsetService, "f").setFocusedTabBtnIndex(this.tabIndex);
1319
+ }
1304
1320
  }
1305
1321
  }
1306
1322
  _SkyTabButtonComponent__isActive = new WeakMap(), _SkyTabButtonComponent__isDisabled = new WeakMap(), _SkyTabButtonComponent__tabStyle = new WeakMap(), _SkyTabButtonComponent_adapterService = new WeakMap(), _SkyTabButtonComponent_changeDetectorRef = new WeakMap(), _SkyTabButtonComponent_elementRef = new WeakMap(), _SkyTabButtonComponent_tabsetService = new WeakMap(), _SkyTabButtonComponent_ngUnsubscribe = new WeakMap(), _SkyTabButtonComponent_instances = new WeakSet(), _SkyTabButtonComponent_updateWizardStepState = function _SkyTabButtonComponent_updateWizardStepState() {
@@ -1321,10 +1337,10 @@ _SkyTabButtonComponent__isActive = new WeakMap(), _SkyTabButtonComponent__isDisa
1321
1337
  __classPrivateFieldGet(this, _SkyTabButtonComponent_changeDetectorRef, "f").markForCheck();
1322
1338
  };
1323
1339
  SkyTabButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabButtonComponent, deps: [{ token: i0.ElementRef }, { token: SkyTabButtonAdapterService }, { token: i0.ChangeDetectorRef }, { token: SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
1324
- SkyTabButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyTabButtonComponent, selector: "sky-tab-button", inputs: { active: "active", ariaControls: "ariaControls", buttonHref: "buttonHref", buttonId: "buttonId", buttonText: "buttonText", buttonTextCount: "buttonTextCount", closeable: "closeable", disabled: "disabled", tabIndex: "tabIndex", tabNumber: "tabNumber", totalTabsCount: "totalTabsCount", tabStyle: "tabStyle" }, outputs: { buttonClick: "buttonClick", closeClick: "closeClick" }, providers: [SkyTabButtonAdapterService], ngImport: i0, template: "<div\n class=\"sky-btn-tab-wrapper\"\n [ngClass]=\"{\n 'sky-btn-tab-wrapper-selected': active,\n 'sky-btn-tab-wrapper-disabled': disabled\n }\"\n>\n <a\n #tabButtonEl\n class=\"sky-btn-tab\"\n [attr.role]=\"elementRole\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"active\"\n [attr.href]=\"buttonHref\"\n [attr.aria-label]=\"\n (tabStyle === 'wizard'\n ? 'skyux_wizard_sr_step_' + wizardStepState\n : 'skyux_tabs_sr_tab_order'\n ) | skyLibResources: tabNumber:totalTabsCount:buttonText\n \"\n [id]=\"buttonId\"\n [ngClass]=\"{\n 'sky-btn-tab-wizard': tabStyle === 'wizard',\n 'sky-btn-tab-selected': active,\n 'sky-btn-tab-disabled': disabled,\n 'sky-tab-btn-closeable': closeable\n }\"\n [tabindex]=\"active ? '0' : '-1'\"\n (click)=\"onButtonClick($event)\"\n (keydown)=\"onTabButtonKeyDown($event)\"\n (focus)=\"onFocus()\"\n >\n <span class=\"sky-tab-heading\" [attr.aria-hidden]=\"true\">\n {{ buttonText }}\n <span *ngIf=\"buttonTextCount !== undefined\" class=\"sky-tab-header-count\">\n {{ buttonTextCount }}\n </span>\n </span>\n </a>\n\n <button\n *ngIf=\"closeable\"\n class=\"sky-btn-tab-close\"\n [tabindex]=\"closeBtnTabIndex\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_close' | skyLibResources: buttonText\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-tab-close-disabled': disabled\n }\"\n (click)=\"onCloseClick($event)\"\n >\n <sky-icon icon=\"remove\"></sky-icon>\n </button>\n</div>\n", styles: [".sky-btn-tab-wrapper{display:inline-block;position:relative;margin-right:5px}.sky-btn-tab-wrapper .sky-btn-tab-close{position:absolute;top:10px;right:10px;color:#686c73}.sky-btn-tab-wrapper .sky-btn-tab-close:hover{color:#212327;transition:color .15s}.sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#fff}.sky-btn-tab-wrapper.sky-btn-tab-wrapper-disabled{cursor:not-allowed}.sky-tab-btn-closeable{padding-right:43px}:host-context(.sky-theme-modern) .sky-btn-tab-wrapper{margin-right:10px}:host-context(.sky-theme-modern) .sky-btn-tab-wrapper .sky-btn-tab-close{top:12px;right:10px}:host-context(.sky-theme-modern) .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#686c73}:host-context(.sky-theme-modern) .sky-tab-btn-closeable{padding-right:44px}.sky-theme-modern .sky-btn-tab-wrapper{margin-right:10px}.sky-theme-modern .sky-btn-tab-wrapper .sky-btn-tab-close{top:12px;right:10px}.sky-theme-modern .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#686c73}.sky-theme-modern .sky-tab-btn-closeable{padding-right:44px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-btn-tab-wrapper .sky-btn-tab-close{color:#eeeeef}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#eeeeef}.sky-theme-modern.sky-theme-mode-dark .sky-btn-tab-wrapper .sky-btn-tab-close{color:#eeeeef}.sky-theme-modern.sky-theme-mode-dark .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#eeeeef}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1340
+ SkyTabButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyTabButtonComponent, selector: "sky-tab-button", inputs: { active: "active", ariaControls: "ariaControls", buttonHref: "buttonHref", buttonId: "buttonId", buttonText: "buttonText", buttonTextCount: "buttonTextCount", closeable: "closeable", disabled: "disabled", tabIndex: "tabIndex", tabNumber: "tabNumber", totalTabsCount: "totalTabsCount", tabStyle: "tabStyle" }, outputs: { buttonClick: "buttonClick", closeClick: "closeClick" }, providers: [SkyTabButtonAdapterService], ngImport: i0, template: "<div\n class=\"sky-btn-tab-wrapper\"\n [ngClass]=\"{\n 'sky-btn-tab-wrapper-selected': active,\n 'sky-btn-tab-wrapper-disabled': disabled\n }\"\n>\n <a\n #tabButtonEl\n class=\"sky-btn-tab\"\n role=\"tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"active\"\n [attr.href]=\"buttonHref\"\n [attr.aria-label]=\"\n (tabStyle === 'wizard'\n ? 'skyux_wizard_sr_step_' + wizardStepState\n : 'skyux_tabs_sr_tab_order'\n ) | skyLibResources: tabNumber:totalTabsCount:buttonText\n \"\n [id]=\"buttonId\"\n [ngClass]=\"{\n 'sky-btn-tab-wizard': tabStyle === 'wizard',\n 'sky-btn-tab-selected': active,\n 'sky-btn-tab-disabled': disabled,\n 'sky-tab-btn-closeable': closeable\n }\"\n [tabindex]=\"active ? '0' : '-1'\"\n (click)=\"onButtonClick($event)\"\n (keydown)=\"onTabButtonKeyDown($event)\"\n (focus)=\"onFocus()\"\n >\n <span class=\"sky-tab-heading\" [attr.aria-hidden]=\"true\">\n {{ buttonText }}\n <span *ngIf=\"buttonTextCount !== undefined\" class=\"sky-tab-header-count\">\n {{ buttonTextCount }}\n </span>\n </span>\n </a>\n\n <button\n *ngIf=\"closeable\"\n class=\"sky-btn-tab-close\"\n [tabindex]=\"closeBtnTabIndex\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_close' | skyLibResources: buttonText\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-tab-close-disabled': disabled\n }\"\n (click)=\"onCloseClick($event)\"\n >\n <sky-icon icon=\"remove\"></sky-icon>\n </button>\n</div>\n", styles: [".sky-btn-tab-wrapper{display:inline-block;position:relative;margin-right:5px}.sky-btn-tab-wrapper .sky-btn-tab-close{position:absolute;top:10px;right:10px;color:#686c73}.sky-btn-tab-wrapper .sky-btn-tab-close:hover{color:#212327;transition:color .15s}.sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#fff}.sky-btn-tab-wrapper.sky-btn-tab-wrapper-disabled{cursor:not-allowed}.sky-tab-btn-closeable{padding-right:43px}:host-context(.sky-theme-modern) .sky-btn-tab-wrapper{margin-right:10px}:host-context(.sky-theme-modern) .sky-btn-tab-wrapper .sky-btn-tab-close{top:12px;right:10px}:host-context(.sky-theme-modern) .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#686c73}:host-context(.sky-theme-modern) .sky-tab-btn-closeable{padding-right:44px}.sky-theme-modern .sky-btn-tab-wrapper{margin-right:10px}.sky-theme-modern .sky-btn-tab-wrapper .sky-btn-tab-close{top:12px;right:10px}.sky-theme-modern .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#686c73}.sky-theme-modern .sky-tab-btn-closeable{padding-right:44px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-btn-tab-wrapper .sky-btn-tab-close{color:#eeeeef}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#eeeeef}.sky-theme-modern.sky-theme-mode-dark .sky-btn-tab-wrapper .sky-btn-tab-close{color:#eeeeef}.sky-theme-modern.sky-theme-mode-dark .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#eeeeef}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1325
1341
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabButtonComponent, decorators: [{
1326
1342
  type: Component,
1327
- args: [{ selector: 'sky-tab-button', providers: [SkyTabButtonAdapterService], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-btn-tab-wrapper\"\n [ngClass]=\"{\n 'sky-btn-tab-wrapper-selected': active,\n 'sky-btn-tab-wrapper-disabled': disabled\n }\"\n>\n <a\n #tabButtonEl\n class=\"sky-btn-tab\"\n [attr.role]=\"elementRole\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"active\"\n [attr.href]=\"buttonHref\"\n [attr.aria-label]=\"\n (tabStyle === 'wizard'\n ? 'skyux_wizard_sr_step_' + wizardStepState\n : 'skyux_tabs_sr_tab_order'\n ) | skyLibResources: tabNumber:totalTabsCount:buttonText\n \"\n [id]=\"buttonId\"\n [ngClass]=\"{\n 'sky-btn-tab-wizard': tabStyle === 'wizard',\n 'sky-btn-tab-selected': active,\n 'sky-btn-tab-disabled': disabled,\n 'sky-tab-btn-closeable': closeable\n }\"\n [tabindex]=\"active ? '0' : '-1'\"\n (click)=\"onButtonClick($event)\"\n (keydown)=\"onTabButtonKeyDown($event)\"\n (focus)=\"onFocus()\"\n >\n <span class=\"sky-tab-heading\" [attr.aria-hidden]=\"true\">\n {{ buttonText }}\n <span *ngIf=\"buttonTextCount !== undefined\" class=\"sky-tab-header-count\">\n {{ buttonTextCount }}\n </span>\n </span>\n </a>\n\n <button\n *ngIf=\"closeable\"\n class=\"sky-btn-tab-close\"\n [tabindex]=\"closeBtnTabIndex\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_close' | skyLibResources: buttonText\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-tab-close-disabled': disabled\n }\"\n (click)=\"onCloseClick($event)\"\n >\n <sky-icon icon=\"remove\"></sky-icon>\n </button>\n</div>\n", styles: [".sky-btn-tab-wrapper{display:inline-block;position:relative;margin-right:5px}.sky-btn-tab-wrapper .sky-btn-tab-close{position:absolute;top:10px;right:10px;color:#686c73}.sky-btn-tab-wrapper .sky-btn-tab-close:hover{color:#212327;transition:color .15s}.sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#fff}.sky-btn-tab-wrapper.sky-btn-tab-wrapper-disabled{cursor:not-allowed}.sky-tab-btn-closeable{padding-right:43px}:host-context(.sky-theme-modern) .sky-btn-tab-wrapper{margin-right:10px}:host-context(.sky-theme-modern) .sky-btn-tab-wrapper .sky-btn-tab-close{top:12px;right:10px}:host-context(.sky-theme-modern) .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#686c73}:host-context(.sky-theme-modern) .sky-tab-btn-closeable{padding-right:44px}.sky-theme-modern .sky-btn-tab-wrapper{margin-right:10px}.sky-theme-modern .sky-btn-tab-wrapper .sky-btn-tab-close{top:12px;right:10px}.sky-theme-modern .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#686c73}.sky-theme-modern .sky-tab-btn-closeable{padding-right:44px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-btn-tab-wrapper .sky-btn-tab-close{color:#eeeeef}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#eeeeef}.sky-theme-modern.sky-theme-mode-dark .sky-btn-tab-wrapper .sky-btn-tab-close{color:#eeeeef}.sky-theme-modern.sky-theme-mode-dark .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#eeeeef}\n"] }]
1343
+ args: [{ selector: 'sky-tab-button', providers: [SkyTabButtonAdapterService], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-btn-tab-wrapper\"\n [ngClass]=\"{\n 'sky-btn-tab-wrapper-selected': active,\n 'sky-btn-tab-wrapper-disabled': disabled\n }\"\n>\n <a\n #tabButtonEl\n class=\"sky-btn-tab\"\n role=\"tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"active\"\n [attr.href]=\"buttonHref\"\n [attr.aria-label]=\"\n (tabStyle === 'wizard'\n ? 'skyux_wizard_sr_step_' + wizardStepState\n : 'skyux_tabs_sr_tab_order'\n ) | skyLibResources: tabNumber:totalTabsCount:buttonText\n \"\n [id]=\"buttonId\"\n [ngClass]=\"{\n 'sky-btn-tab-wizard': tabStyle === 'wizard',\n 'sky-btn-tab-selected': active,\n 'sky-btn-tab-disabled': disabled,\n 'sky-tab-btn-closeable': closeable\n }\"\n [tabindex]=\"active ? '0' : '-1'\"\n (click)=\"onButtonClick($event)\"\n (keydown)=\"onTabButtonKeyDown($event)\"\n (focus)=\"onFocus()\"\n >\n <span class=\"sky-tab-heading\" [attr.aria-hidden]=\"true\">\n {{ buttonText }}\n <span *ngIf=\"buttonTextCount !== undefined\" class=\"sky-tab-header-count\">\n {{ buttonTextCount }}\n </span>\n </span>\n </a>\n\n <button\n *ngIf=\"closeable\"\n class=\"sky-btn-tab-close\"\n [tabindex]=\"closeBtnTabIndex\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_close' | skyLibResources: buttonText\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-tab-close-disabled': disabled\n }\"\n (click)=\"onCloseClick($event)\"\n >\n <sky-icon icon=\"remove\"></sky-icon>\n </button>\n</div>\n", styles: [".sky-btn-tab-wrapper{display:inline-block;position:relative;margin-right:5px}.sky-btn-tab-wrapper .sky-btn-tab-close{position:absolute;top:10px;right:10px;color:#686c73}.sky-btn-tab-wrapper .sky-btn-tab-close:hover{color:#212327;transition:color .15s}.sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#fff}.sky-btn-tab-wrapper.sky-btn-tab-wrapper-disabled{cursor:not-allowed}.sky-tab-btn-closeable{padding-right:43px}:host-context(.sky-theme-modern) .sky-btn-tab-wrapper{margin-right:10px}:host-context(.sky-theme-modern) .sky-btn-tab-wrapper .sky-btn-tab-close{top:12px;right:10px}:host-context(.sky-theme-modern) .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#686c73}:host-context(.sky-theme-modern) .sky-tab-btn-closeable{padding-right:44px}.sky-theme-modern .sky-btn-tab-wrapper{margin-right:10px}.sky-theme-modern .sky-btn-tab-wrapper .sky-btn-tab-close{top:12px;right:10px}.sky-theme-modern .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#686c73}.sky-theme-modern .sky-tab-btn-closeable{padding-right:44px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-btn-tab-wrapper .sky-btn-tab-close{color:#eeeeef}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#eeeeef}.sky-theme-modern.sky-theme-mode-dark .sky-btn-tab-wrapper .sky-btn-tab-close{color:#eeeeef}.sky-theme-modern.sky-theme-mode-dark .sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:#eeeeef}\n"] }]
1328
1344
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: SkyTabButtonAdapterService }, { type: i0.ChangeDetectorRef }, { type: SkyTabsetService }]; }, propDecorators: { active: [{
1329
1345
  type: Input
1330
1346
  }], ariaControls: [{
@@ -1355,40 +1371,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
1355
1371
  type: Output
1356
1372
  }] } });
1357
1373
 
1374
+ var _SkyTabsetPermalinkService_instances, _SkyTabsetPermalinkService_popStateChange, _SkyTabsetPermalinkService_subscription, _SkyTabsetPermalinkService_activatedRoute, _SkyTabsetPermalinkService_location, _SkyTabsetPermalinkService_router, _SkyTabsetPermalinkService_getParams;
1358
1375
  /**
1359
1376
  * @internal
1360
1377
  */
1361
1378
  class SkyTabsetPermalinkService {
1362
1379
  constructor(activatedRoute, location, router) {
1363
- this.activatedRoute = activatedRoute;
1364
- this.location = location;
1365
- this.router = router;
1366
- this._popStateChange = new Subject();
1380
+ _SkyTabsetPermalinkService_instances.add(this);
1381
+ _SkyTabsetPermalinkService_popStateChange.set(this, void 0);
1382
+ _SkyTabsetPermalinkService_subscription.set(this, void 0);
1383
+ _SkyTabsetPermalinkService_activatedRoute.set(this, void 0);
1384
+ _SkyTabsetPermalinkService_location.set(this, void 0);
1385
+ _SkyTabsetPermalinkService_router.set(this, void 0);
1386
+ __classPrivateFieldSet(this, _SkyTabsetPermalinkService_activatedRoute, activatedRoute, "f");
1387
+ __classPrivateFieldSet(this, _SkyTabsetPermalinkService_location, location, "f");
1388
+ __classPrivateFieldSet(this, _SkyTabsetPermalinkService_router, router, "f");
1389
+ __classPrivateFieldSet(this, _SkyTabsetPermalinkService_popStateChange, new Subject(), "f");
1367
1390
  }
1368
1391
  get popStateChange() {
1369
- return this._popStateChange.asObservable();
1392
+ return __classPrivateFieldGet(this, _SkyTabsetPermalinkService_popStateChange, "f");
1370
1393
  }
1371
1394
  ngOnDestroy() {
1372
- if (this.subscription) {
1373
- this.subscription.unsubscribe();
1395
+ if (__classPrivateFieldGet(this, _SkyTabsetPermalinkService_subscription, "f")) {
1396
+ __classPrivateFieldGet(this, _SkyTabsetPermalinkService_subscription, "f").unsubscribe();
1374
1397
  }
1398
+ __classPrivateFieldGet(this, _SkyTabsetPermalinkService_popStateChange, "f").complete();
1375
1399
  }
1376
1400
  init() {
1377
- this.subscription = this.location.subscribe(() => {
1378
- this._popStateChange.next();
1379
- });
1401
+ __classPrivateFieldSet(this, _SkyTabsetPermalinkService_subscription, __classPrivateFieldGet(this, _SkyTabsetPermalinkService_location, "f").subscribe(() => {
1402
+ __classPrivateFieldGet(this, _SkyTabsetPermalinkService_popStateChange, "f").next();
1403
+ }), "f");
1380
1404
  }
1381
1405
  /**
1382
1406
  * Returns the value of a URL query param.
1383
1407
  */
1384
1408
  getParam(name) {
1385
- return this.getParams()[name];
1409
+ return __classPrivateFieldGet(this, _SkyTabsetPermalinkService_instances, "m", _SkyTabsetPermalinkService_getParams).call(this)[name];
1386
1410
  }
1387
1411
  /**
1388
1412
  * Sets the value of a URL query param.
1389
1413
  */
1390
1414
  setParam(name, value) {
1391
- const params = this.getParams();
1415
+ const params = __classPrivateFieldGet(this, _SkyTabsetPermalinkService_instances, "m", _SkyTabsetPermalinkService_getParams).call(this);
1392
1416
  if (value === null) {
1393
1417
  delete params[name];
1394
1418
  }
@@ -1397,18 +1421,18 @@ class SkyTabsetPermalinkService {
1397
1421
  }
1398
1422
  // Update the URL without triggering a navigation state change.
1399
1423
  // See: https://stackoverflow.com/a/46486677
1400
- const url = this.router
1424
+ const url = __classPrivateFieldGet(this, _SkyTabsetPermalinkService_router, "f")
1401
1425
  .createUrlTree([], {
1402
- relativeTo: this.activatedRoute,
1426
+ relativeTo: __classPrivateFieldGet(this, _SkyTabsetPermalinkService_activatedRoute, "f"),
1403
1427
  queryParams: params,
1404
1428
  queryParamsHandling: 'merge',
1405
1429
  })
1406
1430
  .toString();
1407
1431
  // Abort redirect if the current URL is equal to the new URL.
1408
- if (this.location.isCurrentPathEqualTo(url)) {
1432
+ if (__classPrivateFieldGet(this, _SkyTabsetPermalinkService_location, "f").isCurrentPathEqualTo(url)) {
1409
1433
  return;
1410
1434
  }
1411
- this.location.go(url);
1435
+ __classPrivateFieldGet(this, _SkyTabsetPermalinkService_location, "f").go(url);
1412
1436
  }
1413
1437
  /**
1414
1438
  * Removes the provided query param from the URL.
@@ -1424,13 +1448,13 @@ class SkyTabsetPermalinkService {
1424
1448
  if (!name) {
1425
1449
  return null;
1426
1450
  }
1427
- const params = this.getParams();
1451
+ const params = __classPrivateFieldGet(this, _SkyTabsetPermalinkService_instances, "m", _SkyTabsetPermalinkService_getParams).call(this);
1428
1452
  params[name] = value;
1429
- const baseUrl = this.location.path().split('?')[0];
1453
+ const baseUrl = __classPrivateFieldGet(this, _SkyTabsetPermalinkService_location, "f").path().split('?')[0];
1430
1454
  const paramString = Object.keys(params)
1431
1455
  .map((k) => `${k}=${params[k]}`)
1432
1456
  .join('&');
1433
- return this.location.prepareExternalUrl(`${baseUrl}?${paramString}`);
1457
+ return __classPrivateFieldGet(this, _SkyTabsetPermalinkService_location, "f").prepareExternalUrl(`${baseUrl}?${paramString}`);
1434
1458
  }
1435
1459
  /**
1436
1460
  * Converts the provided string into a value that can be safely used in a URL.
@@ -1449,48 +1473,59 @@ class SkyTabsetPermalinkService {
1449
1473
  .replace(/--/g, '-');
1450
1474
  return sanitized;
1451
1475
  }
1452
- /**
1453
- * Returns all query params that exist in the current URL.
1454
- */
1455
- getParams() {
1456
- const params = {};
1457
- const path = this.location.path();
1458
- if (path.indexOf('?') === -1) {
1459
- return params;
1460
- }
1461
- const existingParamPairs = path.split('?')[1].split('&');
1462
- existingParamPairs.forEach((pair) => {
1463
- const fragments = pair.split('=');
1464
- params[fragments[0]] = decodeURIComponent(fragments[1]);
1465
- });
1476
+ }
1477
+ _SkyTabsetPermalinkService_popStateChange = new WeakMap(), _SkyTabsetPermalinkService_subscription = new WeakMap(), _SkyTabsetPermalinkService_activatedRoute = new WeakMap(), _SkyTabsetPermalinkService_location = new WeakMap(), _SkyTabsetPermalinkService_router = new WeakMap(), _SkyTabsetPermalinkService_instances = new WeakSet(), _SkyTabsetPermalinkService_getParams = function _SkyTabsetPermalinkService_getParams() {
1478
+ const params = {};
1479
+ const path = __classPrivateFieldGet(this, _SkyTabsetPermalinkService_location, "f").path();
1480
+ if (path.indexOf('?') === -1) {
1466
1481
  return params;
1467
1482
  }
1468
- }
1483
+ const existingParamPairs = path.split('?')[1].split('&');
1484
+ existingParamPairs.forEach((pair) => {
1485
+ const fragments = pair.split('=');
1486
+ params[fragments[0]] = decodeURIComponent(fragments[1]);
1487
+ });
1488
+ return params;
1489
+ };
1469
1490
  SkyTabsetPermalinkService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetPermalinkService, deps: [{ token: i1$1.ActivatedRoute }, { token: i4.Location }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1470
1491
  SkyTabsetPermalinkService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetPermalinkService });
1471
1492
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetPermalinkService, decorators: [{
1472
1493
  type: Injectable
1473
1494
  }], ctorParameters: function () { return [{ type: i1$1.ActivatedRoute }, { type: i4.Location }, { type: i1$1.Router }]; } });
1474
1495
 
1496
+ var _SkyTabComponent_instances, _SkyTabComponent__active, _SkyTabComponent_activeChange, _SkyTabComponent__permalinkValue, _SkyTabComponent_stateChange, _SkyTabComponent__tabHeading, _SkyTabComponent__tabIndex, _SkyTabComponent_tabIndexChange, _SkyTabComponent_changeDetector, _SkyTabComponent_permalinkService, _SkyTabComponent_tabsetService, _SkyTabComponent_setPermalinkValueOrDefault;
1475
1497
  let nextId = 0;
1476
1498
  class SkyTabComponent {
1477
1499
  constructor(changeDetector, permalinkService, tabsetService) {
1478
- this.changeDetector = changeDetector;
1479
- this.permalinkService = permalinkService;
1480
- this.tabsetService = tabsetService;
1500
+ _SkyTabComponent_instances.add(this);
1481
1501
  /**
1482
1502
  * Fires when users click the button to close the tab.
1483
1503
  * The close button is added to the tab when you specify a listener for this event.
1484
1504
  * This event only applies when the tabset's `tabStyle` is `"tabs"`.
1485
1505
  */
1486
1506
  this.close = new EventEmitter(); // eslint-disable-line @angular-eslint/no-output-native
1507
+ this.permalinkValueOrDefault = '';
1487
1508
  this.showContent = false;
1488
- this._activeChange = new BehaviorSubject(undefined);
1489
- this._stateChange = new BehaviorSubject(undefined);
1490
- this._tabIndexChange = new BehaviorSubject(undefined);
1509
+ _SkyTabComponent__active.set(this, false);
1510
+ _SkyTabComponent_activeChange.set(this, void 0);
1511
+ _SkyTabComponent__permalinkValue.set(this, void 0);
1512
+ _SkyTabComponent_stateChange.set(this, void 0);
1513
+ _SkyTabComponent__tabHeading.set(this, void 0);
1514
+ _SkyTabComponent__tabIndex.set(this, void 0);
1515
+ _SkyTabComponent_tabIndexChange.set(this, void 0);
1516
+ _SkyTabComponent_changeDetector.set(this, void 0);
1517
+ _SkyTabComponent_permalinkService.set(this, void 0);
1518
+ _SkyTabComponent_tabsetService.set(this, void 0);
1519
+ __classPrivateFieldSet(this, _SkyTabComponent_changeDetector, changeDetector, "f");
1520
+ __classPrivateFieldSet(this, _SkyTabComponent_permalinkService, permalinkService, "f");
1521
+ __classPrivateFieldSet(this, _SkyTabComponent_tabsetService, tabsetService, "f");
1491
1522
  const id = nextId++;
1492
1523
  this.tabPanelId = `sky-tab-${id}`;
1493
1524
  this.tabButtonId = `${this.tabPanelId}-nav-btn`;
1525
+ __classPrivateFieldSet(this, _SkyTabComponent_activeChange, new BehaviorSubject(undefined), "f");
1526
+ __classPrivateFieldSet(this, _SkyTabComponent_stateChange, new BehaviorSubject(undefined), "f");
1527
+ __classPrivateFieldSet(this, _SkyTabComponent_tabIndexChange, new BehaviorSubject(undefined), "f");
1528
+ __classPrivateFieldGet(this, _SkyTabComponent_instances, "m", _SkyTabComponent_setPermalinkValueOrDefault).call(this);
1494
1529
  }
1495
1530
  /**
1496
1531
  * Indicates whether the tab is active when the tabset loads. After initialization, the `active`
@@ -1498,16 +1533,16 @@ class SkyTabComponent {
1498
1533
  * @default false
1499
1534
  */
1500
1535
  set active(value) {
1501
- if (value !== undefined && value !== this._active) {
1502
- this._active = value;
1503
- this._activeChange.next();
1536
+ if (value !== undefined && !!value !== __classPrivateFieldGet(this, _SkyTabComponent__active, "f")) {
1537
+ __classPrivateFieldSet(this, _SkyTabComponent__active, value, "f");
1538
+ __classPrivateFieldGet(this, _SkyTabComponent_activeChange, "f").next();
1504
1539
  }
1505
1540
  }
1506
1541
  get active() {
1507
- return this._active || false;
1542
+ return __classPrivateFieldGet(this, _SkyTabComponent__active, "f");
1508
1543
  }
1509
1544
  get activeChange() {
1510
- return this._activeChange.asObservable();
1545
+ return __classPrivateFieldGet(this, _SkyTabComponent_activeChange, "f");
1511
1546
  }
1512
1547
  /**
1513
1548
  * Specifies a custom query parameter value for the tab.
@@ -1518,65 +1553,90 @@ class SkyTabComponent {
1518
1553
  * This input only applies when the tabset's `tabStyle` is `"tabs"`.
1519
1554
  */
1520
1555
  set permalinkValue(value) {
1521
- this._permalinkValue = this.permalinkService.urlify(value);
1556
+ __classPrivateFieldSet(this, _SkyTabComponent__permalinkValue, value, "f");
1557
+ __classPrivateFieldGet(this, _SkyTabComponent_instances, "m", _SkyTabComponent_setPermalinkValueOrDefault).call(this);
1522
1558
  }
1523
1559
  get permalinkValue() {
1524
- return (this._permalinkValue || this.permalinkService.urlify(this.tabHeading));
1560
+ return __classPrivateFieldGet(this, _SkyTabComponent__permalinkValue, "f");
1561
+ }
1562
+ /**
1563
+ * Specifies the tab header.
1564
+ * When using tabs as the main navigation on a page,
1565
+ * use [the Angular `Title` service](https://angular.io/docs/ts/latest/cookbook/set-document-title.html)
1566
+ * and [the SKY UX `title` configuration property](https://developer.blackbaud.com/skyux/learn/reference/configuration#app)
1567
+ * to reflect the tab header in the page title.
1568
+ * @required
1569
+ */
1570
+ set tabHeading(value) {
1571
+ __classPrivateFieldSet(this, _SkyTabComponent__tabHeading, value, "f");
1572
+ __classPrivateFieldGet(this, _SkyTabComponent_instances, "m", _SkyTabComponent_setPermalinkValueOrDefault).call(this);
1573
+ }
1574
+ get tabHeading() {
1575
+ return __classPrivateFieldGet(this, _SkyTabComponent__tabHeading, "f");
1525
1576
  }
1526
1577
  /**
1527
1578
  * Specifies a unique identifier for the tab.
1528
1579
  * If not defined, the identifier is set to the position of the tab on load, starting with `0`.
1529
1580
  */
1530
1581
  set tabIndex(value) {
1531
- if (value !== this._tabIndex &&
1582
+ if (value !== __classPrivateFieldGet(this, _SkyTabComponent__tabIndex, "f") &&
1532
1583
  value !== undefined &&
1533
- this._tabIndex !== undefined) {
1534
- this.tabsetService.updateTabIndex(this._tabIndex, value);
1535
- this._tabIndexChange.next(value);
1584
+ __classPrivateFieldGet(this, _SkyTabComponent__tabIndex, "f") !== undefined) {
1585
+ __classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").updateTabIndex(__classPrivateFieldGet(this, _SkyTabComponent__tabIndex, "f"), value);
1586
+ __classPrivateFieldGet(this, _SkyTabComponent_tabIndexChange, "f").next(value);
1536
1587
  }
1537
- this._tabIndex = value;
1588
+ __classPrivateFieldSet(this, _SkyTabComponent__tabIndex, value, "f");
1538
1589
  }
1539
1590
  get tabIndex() {
1540
- return this._tabIndex;
1541
- }
1542
- get closeable() {
1543
- return this.close.observers.length > 0;
1591
+ return __classPrivateFieldGet(this, _SkyTabComponent__tabIndex, "f");
1544
1592
  }
1545
1593
  /**
1546
1594
  * Alerts the tabset component when this component has changes that need to be reflected in the UI.
1547
1595
  */
1548
1596
  get stateChange() {
1549
- return this._stateChange.asObservable();
1597
+ return __classPrivateFieldGet(this, _SkyTabComponent_stateChange, "f");
1550
1598
  }
1551
1599
  get tabIndexChange() {
1552
- return this._tabIndexChange.asObservable();
1600
+ return __classPrivateFieldGet(this, _SkyTabComponent_tabIndexChange, "f");
1553
1601
  }
1554
1602
  ngOnChanges(changes) {
1555
1603
  if ((changes.disabled && !changes.disabled.firstChange) ||
1556
1604
  (changes.tabHeading && !changes.tabHeading.firstChange) ||
1557
1605
  (changes.tabHeaderCount && !changes.tabHeaderCount.firstChange) ||
1558
1606
  (changes.permalinkValue && !changes.permalinkValue.firstChange)) {
1559
- this._stateChange.next();
1607
+ __classPrivateFieldGet(this, _SkyTabComponent_stateChange, "f").next();
1560
1608
  }
1561
1609
  }
1562
1610
  ngOnDestroy() {
1563
- this._stateChange.complete();
1564
- this.tabsetService.unregisterTab(this.tabIndex);
1611
+ __classPrivateFieldGet(this, _SkyTabComponent_activeChange, "f").complete();
1612
+ __classPrivateFieldGet(this, _SkyTabComponent_stateChange, "f").complete();
1613
+ __classPrivateFieldGet(this, _SkyTabComponent_tabIndexChange, "f").complete();
1614
+ if (this.tabIndex !== undefined) {
1615
+ __classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").unregisterTab(this.tabIndex);
1616
+ }
1565
1617
  }
1566
1618
  init() {
1567
- this._tabIndex = this.tabsetService.registerTab(this.tabIndex);
1619
+ __classPrivateFieldSet(this, _SkyTabComponent__tabIndex, __classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").registerTab(this.tabIndex), "f");
1568
1620
  }
1569
1621
  activate() {
1570
- this._active = true;
1622
+ __classPrivateFieldSet(this, _SkyTabComponent__active, true, "f");
1571
1623
  this.showContent = true;
1572
- this.changeDetector.markForCheck();
1624
+ __classPrivateFieldGet(this, _SkyTabComponent_changeDetector, "f").markForCheck();
1573
1625
  }
1574
1626
  deactivate() {
1575
- this._active = false;
1627
+ __classPrivateFieldSet(this, _SkyTabComponent__active, false, "f");
1576
1628
  this.showContent = false;
1577
- this.changeDetector.markForCheck();
1629
+ __classPrivateFieldGet(this, _SkyTabComponent_changeDetector, "f").markForCheck();
1630
+ }
1631
+ isCloseable() {
1632
+ return this.close.observers.length > 0;
1578
1633
  }
1579
1634
  }
1635
+ _SkyTabComponent__active = new WeakMap(), _SkyTabComponent_activeChange = new WeakMap(), _SkyTabComponent__permalinkValue = new WeakMap(), _SkyTabComponent_stateChange = new WeakMap(), _SkyTabComponent__tabHeading = new WeakMap(), _SkyTabComponent__tabIndex = new WeakMap(), _SkyTabComponent_tabIndexChange = new WeakMap(), _SkyTabComponent_changeDetector = new WeakMap(), _SkyTabComponent_permalinkService = new WeakMap(), _SkyTabComponent_tabsetService = new WeakMap(), _SkyTabComponent_instances = new WeakSet(), _SkyTabComponent_setPermalinkValueOrDefault = function _SkyTabComponent_setPermalinkValueOrDefault() {
1636
+ this.permalinkValueOrDefault =
1637
+ __classPrivateFieldGet(this, _SkyTabComponent_permalinkService, "f").urlify(this.permalinkValue) ||
1638
+ __classPrivateFieldGet(this, _SkyTabComponent_permalinkService, "f").urlify(this.tabHeading);
1639
+ };
1580
1640
  SkyTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: SkyTabsetPermalinkService }, { token: SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
1581
1641
  SkyTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyTabComponent, selector: "sky-tab", inputs: { active: "active", disabled: "disabled", permalinkValue: "permalinkValue", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", tabIndex: "tabIndex" }, outputs: { close: "close" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n>\n <ng-content></ng-content>\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
1582
1642
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabComponent, decorators: [{
@@ -1598,7 +1658,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
1598
1658
  type: Output
1599
1659
  }] } });
1600
1660
 
1601
- var _SkyTabsetNavButtonComponent_instances, _SkyTabsetNavButtonComponent__buttonType, _SkyTabsetNavButtonComponent__disabled, _SkyTabsetNavButtonComponent__tabset, _SkyTabsetNavButtonComponent_activeIndexNumber, _SkyTabsetNavButtonComponent_activeSkyTabIndex, _SkyTabsetNavButtonComponent_currentTabsetSub, _SkyTabsetNavButtonComponent_logger, _SkyTabsetNavButtonComponent_tabCount, _SkyTabsetNavButtonComponent_tabToSelect, _SkyTabsetNavButtonComponent_ngUnsubscribe, _SkyTabsetNavButtonComponent_updateButtonVisibility, _SkyTabsetNavButtonComponent_updateButtonProperties, _SkyTabsetNavButtonComponent_updateTabToSelect;
1661
+ class SkyTabsetNavButtonDisabledPipe {
1662
+ transform(disabled, buttonType, tabToSelectExists, tabToSelectIsDisabled) {
1663
+ if (disabled !== undefined) {
1664
+ return disabled;
1665
+ }
1666
+ else if (buttonType === 'finish') {
1667
+ return false;
1668
+ }
1669
+ return !tabToSelectExists || !!tabToSelectIsDisabled;
1670
+ }
1671
+ }
1672
+ SkyTabsetNavButtonDisabledPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetNavButtonDisabledPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1673
+ SkyTabsetNavButtonDisabledPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetNavButtonDisabledPipe, name: "skyTabsetNavButtonDisabled" });
1674
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetNavButtonDisabledPipe, decorators: [{
1675
+ type: Pipe,
1676
+ args: [{
1677
+ name: 'skyTabsetNavButtonDisabled',
1678
+ }]
1679
+ }] });
1680
+
1681
+ var _SkyTabsetNavButtonComponent_instances, _SkyTabsetNavButtonComponent__buttonType, _SkyTabsetNavButtonComponent__disabled, _SkyTabsetNavButtonComponent__tabset, _SkyTabsetNavButtonComponent_activeIndexNumber, _SkyTabsetNavButtonComponent_activeSkyTabIndex, _SkyTabsetNavButtonComponent_currentTabsetSub, _SkyTabsetNavButtonComponent_logger, _SkyTabsetNavButtonComponent_tabCount, _SkyTabsetNavButtonComponent_ngUnsubscribe, _SkyTabsetNavButtonComponent_updateButtonVisibility, _SkyTabsetNavButtonComponent_updateButtonProperties, _SkyTabsetNavButtonComponent_updateTabToSelect;
1602
1682
  const buttonTypeNext = 'next';
1603
1683
  const buttonTypePrevious = 'previous';
1604
1684
  const buttonTypeFinish = 'finish';
@@ -1606,6 +1686,7 @@ class SkyTabsetNavButtonComponent {
1606
1686
  constructor(logger) {
1607
1687
  _SkyTabsetNavButtonComponent_instances.add(this);
1608
1688
  this.isVisible = false;
1689
+ this.type = 'submit';
1609
1690
  _SkyTabsetNavButtonComponent__buttonType.set(this, void 0);
1610
1691
  _SkyTabsetNavButtonComponent__disabled.set(this, void 0);
1611
1692
  _SkyTabsetNavButtonComponent__tabset.set(this, void 0);
@@ -1614,7 +1695,6 @@ class SkyTabsetNavButtonComponent {
1614
1695
  _SkyTabsetNavButtonComponent_currentTabsetSub.set(this, void 0);
1615
1696
  _SkyTabsetNavButtonComponent_logger.set(this, void 0);
1616
1697
  _SkyTabsetNavButtonComponent_tabCount.set(this, void 0);
1617
- _SkyTabsetNavButtonComponent_tabToSelect.set(this, void 0);
1618
1698
  _SkyTabsetNavButtonComponent_ngUnsubscribe.set(this, new Subject());
1619
1699
  __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_logger, logger, "f");
1620
1700
  }
@@ -1631,11 +1711,12 @@ class SkyTabsetNavButtonComponent {
1631
1711
  __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_currentTabsetSub, "f").unsubscribe();
1632
1712
  }
1633
1713
  if (value) {
1634
- __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_currentTabsetSub, __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__tabset, "f").activeChange
1714
+ __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_currentTabsetSub, value.activeChange
1635
1715
  .pipe(distinctUntilChanged(), takeUntil(__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_ngUnsubscribe, "f")))
1636
1716
  .subscribe((index) => {
1717
+ var _a, _b;
1637
1718
  __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_activeSkyTabIndex, index, "f");
1638
- __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_tabCount, __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__tabset, "f").tabs.length, "f");
1719
+ __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_tabCount, (_b = (_a = __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__tabset, "f")) === null || _a === void 0 ? void 0 : _a.tabs) === null || _b === void 0 ? void 0 : _b.length, "f");
1639
1720
  __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_instances, "m", _SkyTabsetNavButtonComponent_updateTabToSelect).call(this);
1640
1721
  __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_instances, "m", _SkyTabsetNavButtonComponent_updateButtonVisibility).call(this);
1641
1722
  __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_instances, "m", _SkyTabsetNavButtonComponent_updateButtonProperties).call(this);
@@ -1673,13 +1754,7 @@ class SkyTabsetNavButtonComponent {
1673
1754
  __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent__disabled, value, "f");
1674
1755
  }
1675
1756
  get disabled() {
1676
- if (__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__disabled, "f") !== undefined) {
1677
- return __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__disabled, "f");
1678
- }
1679
- else if (this.buttonType === buttonTypeFinish) {
1680
- return false;
1681
- }
1682
- return !__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabToSelect, "f") || __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabToSelect, "f").disabled;
1757
+ return __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__disabled, "f");
1683
1758
  }
1684
1759
  ngOnDestroy() {
1685
1760
  __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_ngUnsubscribe, "f").next();
@@ -1687,13 +1762,13 @@ class SkyTabsetNavButtonComponent {
1687
1762
  }
1688
1763
  buttonClick() {
1689
1764
  /* istanbul ignore else */
1690
- if (__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabToSelect, "f") && !__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabToSelect, "f").disabled) {
1691
- this.tabset.active = __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabToSelect, "f").tabIndex;
1765
+ if (this.tabToSelect && !this.tabToSelect.disabled && this.tabset) {
1766
+ this.tabset.active = this.tabToSelect.tabIndex;
1692
1767
  }
1693
1768
  }
1694
1769
  }
1695
- _SkyTabsetNavButtonComponent__buttonType = new WeakMap(), _SkyTabsetNavButtonComponent__disabled = new WeakMap(), _SkyTabsetNavButtonComponent__tabset = new WeakMap(), _SkyTabsetNavButtonComponent_activeIndexNumber = new WeakMap(), _SkyTabsetNavButtonComponent_activeSkyTabIndex = new WeakMap(), _SkyTabsetNavButtonComponent_currentTabsetSub = new WeakMap(), _SkyTabsetNavButtonComponent_logger = new WeakMap(), _SkyTabsetNavButtonComponent_tabCount = new WeakMap(), _SkyTabsetNavButtonComponent_tabToSelect = new WeakMap(), _SkyTabsetNavButtonComponent_ngUnsubscribe = new WeakMap(), _SkyTabsetNavButtonComponent_instances = new WeakSet(), _SkyTabsetNavButtonComponent_updateButtonVisibility = function _SkyTabsetNavButtonComponent_updateButtonVisibility() {
1696
- const isLastStep = __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_activeIndexNumber, "f") === __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabCount, "f") - 1;
1770
+ _SkyTabsetNavButtonComponent__buttonType = new WeakMap(), _SkyTabsetNavButtonComponent__disabled = new WeakMap(), _SkyTabsetNavButtonComponent__tabset = new WeakMap(), _SkyTabsetNavButtonComponent_activeIndexNumber = new WeakMap(), _SkyTabsetNavButtonComponent_activeSkyTabIndex = new WeakMap(), _SkyTabsetNavButtonComponent_currentTabsetSub = new WeakMap(), _SkyTabsetNavButtonComponent_logger = new WeakMap(), _SkyTabsetNavButtonComponent_tabCount = new WeakMap(), _SkyTabsetNavButtonComponent_ngUnsubscribe = new WeakMap(), _SkyTabsetNavButtonComponent_instances = new WeakSet(), _SkyTabsetNavButtonComponent_updateButtonVisibility = function _SkyTabsetNavButtonComponent_updateButtonVisibility() {
1771
+ const isLastStep = !!__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabCount, "f") && __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_activeIndexNumber, "f") === __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabCount, "f") - 1;
1697
1772
  if (this.buttonType === buttonTypeFinish) {
1698
1773
  this.isVisible = isLastStep;
1699
1774
  }
@@ -1712,30 +1787,30 @@ _SkyTabsetNavButtonComponent__buttonType = new WeakMap(), _SkyTabsetNavButtonCom
1712
1787
  else {
1713
1788
  this.buttonClassName = 'sky-btn-default';
1714
1789
  }
1715
- this.ariaControls = (_a = __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabToSelect, "f")) === null || _a === void 0 ? void 0 : _a.tabPanelId;
1790
+ this.ariaControls = (_a = this.tabToSelect) === null || _a === void 0 ? void 0 : _a.tabPanelId;
1716
1791
  }, _SkyTabsetNavButtonComponent_updateTabToSelect = function _SkyTabsetNavButtonComponent_updateTabToSelect() {
1717
1792
  var _a;
1718
1793
  if ((_a = this.tabset) === null || _a === void 0 ? void 0 : _a.tabs) {
1719
1794
  const tabs = this.tabset.tabs.toArray();
1720
- __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_tabToSelect, undefined, "f");
1795
+ this.tabToSelect = undefined;
1721
1796
  // tab index can be a number or a string, but we need the actual number index
1722
1797
  __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_activeIndexNumber, tabs.findIndex((tab) => tab.tabIndex === __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_activeSkyTabIndex, "f")), "f");
1723
1798
  /* istanbul ignore else */
1724
1799
  if (__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_activeIndexNumber, "f") !== undefined) {
1725
1800
  if (this.buttonType === buttonTypeNext) {
1726
- __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_tabToSelect, tabs[__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_activeIndexNumber, "f") + 1], "f");
1801
+ this.tabToSelect = tabs[__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_activeIndexNumber, "f") + 1];
1727
1802
  }
1728
1803
  else if (this.buttonType === buttonTypePrevious) {
1729
- __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_tabToSelect, tabs[__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_activeIndexNumber, "f") - 1], "f");
1804
+ this.tabToSelect = tabs[__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_activeIndexNumber, "f") - 1];
1730
1805
  }
1731
1806
  }
1732
1807
  }
1733
1808
  };
1734
1809
  SkyTabsetNavButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetNavButtonComponent, deps: [{ token: i1.SkyLogService }], target: i0.ɵɵFactoryTarget.Component });
1735
- SkyTabsetNavButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyTabsetNavButtonComponent, selector: "sky-tabset-nav-button", inputs: { tabset: "tabset", buttonType: "buttonType", buttonText: "buttonText", disabled: "disabled" }, ngImport: i0, template: "<button\n *ngIf=\"isVisible\"\n class=\"sky-btn sky-margin-inline-sm\"\n [attr.aria-controls]=\"ariaControls\"\n [disabled]=\"disabled\"\n [ngClass]=\"buttonClassName\"\n [type]=\"type\"\n (click)=\"buttonType === 'finish' ? null : buttonClick()\"\n>\n {{ buttonText || ('skyux_tabs_navigator_' + buttonType | skyLibResources) }}\n</button>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }] });
1810
+ SkyTabsetNavButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyTabsetNavButtonComponent, selector: "sky-tabset-nav-button", inputs: { tabset: "tabset", buttonType: "buttonType", buttonText: "buttonText", disabled: "disabled" }, ngImport: i0, template: "<button\n *ngIf=\"isVisible\"\n class=\"sky-btn sky-margin-inline-sm\"\n [attr.aria-controls]=\"ariaControls\"\n [disabled]=\"\n disabled\n | skyTabsetNavButtonDisabled\n : buttonType\n : !!tabToSelect\n : tabToSelect?.disabled\n \"\n [ngClass]=\"buttonClassName\"\n [type]=\"type\"\n (click)=\"buttonType === 'finish' ? null : buttonClick()\"\n>\n {{ buttonText || ('skyux_tabs_navigator_' + buttonType | skyLibResources) }}\n</button>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "pipe", type: SkyTabsetNavButtonDisabledPipe, name: "skyTabsetNavButtonDisabled" }] });
1736
1811
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetNavButtonComponent, decorators: [{
1737
1812
  type: Component,
1738
- args: [{ selector: 'sky-tabset-nav-button', template: "<button\n *ngIf=\"isVisible\"\n class=\"sky-btn sky-margin-inline-sm\"\n [attr.aria-controls]=\"ariaControls\"\n [disabled]=\"disabled\"\n [ngClass]=\"buttonClassName\"\n [type]=\"type\"\n (click)=\"buttonType === 'finish' ? null : buttonClick()\"\n>\n {{ buttonText || ('skyux_tabs_navigator_' + buttonType | skyLibResources) }}\n</button>\n" }]
1813
+ args: [{ selector: 'sky-tabset-nav-button', template: "<button\n *ngIf=\"isVisible\"\n class=\"sky-btn sky-margin-inline-sm\"\n [attr.aria-controls]=\"ariaControls\"\n [disabled]=\"\n disabled\n | skyTabsetNavButtonDisabled\n : buttonType\n : !!tabToSelect\n : tabToSelect?.disabled\n \"\n [ngClass]=\"buttonClassName\"\n [type]=\"type\"\n (click)=\"buttonType === 'finish' ? null : buttonClick()\"\n>\n {{ buttonText || ('skyux_tabs_navigator_' + buttonType | skyLibResources) }}\n</button>\n" }]
1739
1814
  }], ctorParameters: function () { return [{ type: i1.SkyLogService }]; }, propDecorators: { tabset: [{
1740
1815
  type: Input
1741
1816
  }], buttonType: [{
@@ -1746,25 +1821,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
1746
1821
  type: Input
1747
1822
  }] } });
1748
1823
 
1824
+ var _SkyTabsetAdapterService_instances, _SkyTabsetAdapterService_currentOverflow, _SkyTabsetAdapterService_tabsetRef, _SkyTabsetAdapterService_tabsOffsetLeft, _SkyTabsetAdapterService_overflowChange, _SkyTabsetAdapterService_getTabsOffsetLeft;
1749
1825
  /**
1750
1826
  * @internal
1751
1827
  */
1752
1828
  class SkyTabsetAdapterService {
1753
1829
  constructor() {
1754
- this._overflowChange = new BehaviorSubject(false);
1830
+ _SkyTabsetAdapterService_instances.add(this);
1831
+ _SkyTabsetAdapterService_currentOverflow.set(this, false);
1832
+ _SkyTabsetAdapterService_tabsetRef.set(this, void 0);
1833
+ _SkyTabsetAdapterService_tabsOffsetLeft.set(this, void 0);
1834
+ _SkyTabsetAdapterService_overflowChange.set(this, void 0);
1835
+ __classPrivateFieldSet(this, _SkyTabsetAdapterService_overflowChange, new BehaviorSubject(false), "f");
1755
1836
  }
1756
1837
  get overflowChange() {
1757
- return this._overflowChange.asObservable();
1838
+ return __classPrivateFieldGet(this, _SkyTabsetAdapterService_overflowChange, "f");
1839
+ }
1840
+ ngOnDestroy() {
1841
+ __classPrivateFieldGet(this, _SkyTabsetAdapterService_overflowChange, "f").complete();
1758
1842
  }
1759
1843
  registerTabset(tabsetRef) {
1760
- this.tabsetRef = tabsetRef;
1761
- this.tabsOffsetLeft = this.getTabsOffsetLeft(tabsetRef.nativeElement);
1844
+ __classPrivateFieldSet(this, _SkyTabsetAdapterService_tabsetRef, tabsetRef, "f");
1845
+ __classPrivateFieldSet(this, _SkyTabsetAdapterService_tabsOffsetLeft, __classPrivateFieldGet(this, _SkyTabsetAdapterService_instances, "m", _SkyTabsetAdapterService_getTabsOffsetLeft).call(this, tabsetRef.nativeElement), "f");
1762
1846
  }
1763
1847
  /**
1764
1848
  * Detects if the tab buttons are wider than the tabset container.
1765
1849
  */
1766
1850
  detectOverflow() {
1767
- const nativeElement = this.tabsetRef.nativeElement;
1851
+ var _a;
1852
+ const nativeElement = (_a = __classPrivateFieldGet(this, _SkyTabsetAdapterService_tabsetRef, "f")) === null || _a === void 0 ? void 0 : _a.nativeElement;
1768
1853
  const tabsetRect = nativeElement
1769
1854
  .querySelector('.sky-tabset')
1770
1855
  .getBoundingClientRect();
@@ -1774,39 +1859,37 @@ class SkyTabsetAdapterService {
1774
1859
  const tabExtraButtonsRect = nativeElement
1775
1860
  .querySelector('.sky-tabset-btns')
1776
1861
  .getBoundingClientRect();
1777
- const tabButtonsWidth = tabButtonsRect.width + tabExtraButtonsRect.width + this.tabsOffsetLeft;
1862
+ const tabButtonsWidth = tabButtonsRect.width + tabExtraButtonsRect.width + __classPrivateFieldGet(this, _SkyTabsetAdapterService_tabsOffsetLeft, "f");
1778
1863
  const newOverflow = tabButtonsWidth > tabsetRect.width;
1779
- if (this.currentOverflow !== newOverflow) {
1780
- this.currentOverflow = newOverflow;
1781
- this._overflowChange.next(this.currentOverflow);
1864
+ if (__classPrivateFieldGet(this, _SkyTabsetAdapterService_currentOverflow, "f") !== newOverflow) {
1865
+ __classPrivateFieldSet(this, _SkyTabsetAdapterService_currentOverflow, newOverflow, "f");
1866
+ __classPrivateFieldGet(this, _SkyTabsetAdapterService_overflowChange, "f").next(__classPrivateFieldGet(this, _SkyTabsetAdapterService_currentOverflow, "f"));
1782
1867
  }
1783
1868
  }
1784
- /**
1785
- * Returns the number of pixels to the left of the first tab.
1786
- */
1787
- getTabsOffsetLeft(tabsetEl) {
1788
- const tabsetRect = tabsetEl.getBoundingClientRect();
1789
- // The dropdown element is the first "tab" and always exists in the DOM, even when hidden.
1790
- const firstTabRect = tabsetEl
1791
- .querySelector('.sky-tabset-dropdown')
1792
- .getBoundingClientRect();
1793
- return firstTabRect.left - tabsetRect.left;
1794
- }
1795
1869
  }
1870
+ _SkyTabsetAdapterService_currentOverflow = new WeakMap(), _SkyTabsetAdapterService_tabsetRef = new WeakMap(), _SkyTabsetAdapterService_tabsOffsetLeft = new WeakMap(), _SkyTabsetAdapterService_overflowChange = new WeakMap(), _SkyTabsetAdapterService_instances = new WeakSet(), _SkyTabsetAdapterService_getTabsOffsetLeft = function _SkyTabsetAdapterService_getTabsOffsetLeft(tabsetEl) {
1871
+ var _a;
1872
+ const tabsetRect = tabsetEl.getBoundingClientRect();
1873
+ // The dropdown element is the first "tab" and always exists in the DOM, even when hidden.
1874
+ const firstTabRect = (_a = tabsetEl
1875
+ .querySelector('.sky-tabset-dropdown')) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
1876
+ // Safety check
1877
+ /* istanbul ignore next */
1878
+ if (!firstTabRect) {
1879
+ return 0;
1880
+ }
1881
+ return firstTabRect.left - tabsetRect.left;
1882
+ };
1796
1883
  SkyTabsetAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1797
1884
  SkyTabsetAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetAdapterService });
1798
1885
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetAdapterService, decorators: [{
1799
1886
  type: Injectable
1800
- }] });
1887
+ }], ctorParameters: function () { return []; } });
1801
1888
 
1802
- const DEFAULT_ELEMENT_ROLE = 'tablist';
1889
+ var _SkyTabsetComponent_instances, _SkyTabsetComponent_ngUnsubscribe, _SkyTabsetComponent_tabComponentsChangeUnsubscribe, _SkyTabsetComponent_tabComponentsStateChangeUnsubscribe, _SkyTabsetComponent__active, _SkyTabsetComponent__permalinkId, _SkyTabsetComponent__tabs, _SkyTabsetComponent__tabDisplayMode, _SkyTabsetComponent__tabStyle, _SkyTabsetComponent_changeDetector, _SkyTabsetComponent_elementRef, _SkyTabsetComponent_adapterService, _SkyTabsetComponent_permalinkService, _SkyTabsetComponent_tabsetService, _SkyTabsetComponent_getInitialTabIndex, _SkyTabsetComponent_listenActiveIndexChange, _SkyTabsetComponent_listenTabComponentsStateChange, _SkyTabsetComponent_initTabComponents, _SkyTabsetComponent_resetTabComponents, _SkyTabsetComponent_emitTabIndexChange, _SkyTabsetComponent_unsubscribeTabComponentsStateChange, _SkyTabsetComponent_listenTabButtonsOverflowChange, _SkyTabsetComponent_listenLocationPopStateChange, _SkyTabsetComponent_setActiveTabIndexByPermalinkId, _SkyTabsetComponent_getActiveTabIndexByPermalinkId, _SkyTabsetComponent_getActiveTabComponent, _SkyTabsetComponent_createTabButtons, _SkyTabsetComponent_updateTabButtons, _SkyTabsetComponent_updateTabsetComponent;
1803
1890
  class SkyTabsetComponent {
1804
1891
  constructor(changeDetector, elementRef, adapterService, permalinkService, tabsetService) {
1805
- this.changeDetector = changeDetector;
1806
- this.elementRef = elementRef;
1807
- this.adapterService = adapterService;
1808
- this.permalinkService = permalinkService;
1809
- this.tabsetService = tabsetService;
1892
+ _SkyTabsetComponent_instances.add(this);
1810
1893
  /**
1811
1894
  * Fires when the active tab changes. This event emits the index of the active tab.
1812
1895
  */
@@ -1828,41 +1911,57 @@ class SkyTabsetComponent {
1828
1911
  * This event only applies when `tabStyle` is `"tabs"`.
1829
1912
  */
1830
1913
  this.tabIndexesChange = new EventEmitter();
1914
+ this.dropdownTriggerButtonText = '';
1831
1915
  this.tabButtons = [];
1832
- this.elementRole = DEFAULT_ELEMENT_ROLE;
1833
- this.ngUnsubscribe = new Subject();
1834
- this.tabComponentsStateChangeUnsubscribe = new Subject();
1916
+ _SkyTabsetComponent_ngUnsubscribe.set(this, new Subject());
1917
+ _SkyTabsetComponent_tabComponentsChangeUnsubscribe.set(this, new Subject());
1918
+ _SkyTabsetComponent_tabComponentsStateChangeUnsubscribe.set(this, new Subject());
1919
+ _SkyTabsetComponent__active.set(this, void 0);
1920
+ _SkyTabsetComponent__permalinkId.set(this, '');
1921
+ _SkyTabsetComponent__tabs.set(this, void 0);
1922
+ _SkyTabsetComponent__tabDisplayMode.set(this, 'tabs');
1923
+ _SkyTabsetComponent__tabStyle.set(this, 'tabs');
1924
+ _SkyTabsetComponent_changeDetector.set(this, void 0);
1925
+ _SkyTabsetComponent_elementRef.set(this, void 0);
1926
+ _SkyTabsetComponent_adapterService.set(this, void 0);
1927
+ _SkyTabsetComponent_permalinkService.set(this, void 0);
1928
+ _SkyTabsetComponent_tabsetService.set(this, void 0);
1929
+ __classPrivateFieldSet(this, _SkyTabsetComponent_changeDetector, changeDetector, "f");
1930
+ __classPrivateFieldSet(this, _SkyTabsetComponent_elementRef, elementRef, "f");
1931
+ __classPrivateFieldSet(this, _SkyTabsetComponent_adapterService, adapterService, "f");
1932
+ __classPrivateFieldSet(this, _SkyTabsetComponent_permalinkService, permalinkService, "f");
1933
+ __classPrivateFieldSet(this, _SkyTabsetComponent_tabsetService, tabsetService, "f");
1835
1934
  }
1836
1935
  /**
1837
1936
  * Activates a tab by its `tabIndex` property.
1838
1937
  */
1839
1938
  set active(value) {
1840
1939
  if (value === undefined ||
1841
- this.tabsetService.tabIndexesEqual(value, this._active)) {
1940
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").tabIndexesEqual(value, __classPrivateFieldGet(this, _SkyTabsetComponent__active, "f"))) {
1842
1941
  return;
1843
1942
  }
1844
- this._active = value;
1943
+ __classPrivateFieldSet(this, _SkyTabsetComponent__active, value, "f");
1845
1944
  if (this.tabs) {
1846
- this.tabsetService.setActiveTabIndex(value);
1945
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").setActiveTabIndex(value);
1847
1946
  }
1848
1947
  else {
1849
1948
  // On init, wait for children tabs to render before broadcasting the active tab index.
1850
1949
  setTimeout(() => {
1851
- if (this.tabsetService.isValidTabIndex(value)) {
1950
+ if (__classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").isValidTabIndex(value)) {
1852
1951
  // On init, yield to the permalink ID, if it exists.
1853
- if (this.getActiveTabIndexByPermalinkId() === undefined) {
1854
- this.tabsetService.setActiveTabIndex(value);
1952
+ if (__classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_getActiveTabIndexByPermalinkId).call(this) === undefined) {
1953
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").setActiveTabIndex(value);
1855
1954
  }
1856
1955
  }
1857
1956
  else {
1858
1957
  // Activate the first tab if the new tab index is invalid.
1859
- this._active = this.tabsetService.activateFirstTab();
1958
+ __classPrivateFieldSet(this, _SkyTabsetComponent__active, __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").activateFirstTab(), "f");
1860
1959
  }
1861
1960
  });
1862
1961
  }
1863
1962
  }
1864
1963
  get active() {
1865
- return this._active;
1964
+ return __classPrivateFieldGet(this, _SkyTabsetComponent__active, "f");
1866
1965
  }
1867
1966
  /**
1868
1967
  * Distinguishes a tabset's unique state in the URL by generating a query parameter
@@ -1873,72 +1972,85 @@ class SkyTabsetComponent {
1873
1972
  */
1874
1973
  set permalinkId(value) {
1875
1974
  if (!value) {
1876
- return;
1975
+ __classPrivateFieldSet(this, _SkyTabsetComponent__permalinkId, '', "f");
1976
+ }
1977
+ else {
1978
+ const sanitized = __classPrivateFieldGet(this, _SkyTabsetComponent_permalinkService, "f").urlify(value);
1979
+ __classPrivateFieldSet(this, _SkyTabsetComponent__permalinkId, `${sanitized}-active-tab`, "f");
1877
1980
  }
1878
- const sanitized = this.permalinkService.urlify(value);
1879
- this._permalinkId = `${sanitized}-active-tab`;
1880
1981
  }
1881
1982
  get permalinkId() {
1882
- return this._permalinkId || '';
1983
+ return __classPrivateFieldGet(this, _SkyTabsetComponent__permalinkId, "f");
1883
1984
  }
1884
1985
  /**
1885
1986
  * Specifies the behavior for a series of tabs.
1886
1987
  * @default "tabs"
1887
1988
  */
1888
1989
  set tabStyle(value) {
1889
- this._tabStyle = value;
1890
- this.elementRole = value === 'tabs' ? DEFAULT_ELEMENT_ROLE : undefined;
1990
+ __classPrivateFieldSet(this, _SkyTabsetComponent__tabStyle, value || 'tabs', "f");
1891
1991
  }
1892
1992
  get tabStyle() {
1893
- return this._tabStyle || 'tabs';
1993
+ return __classPrivateFieldGet(this, _SkyTabsetComponent__tabStyle, "f");
1894
1994
  }
1895
1995
  set tabDisplayMode(value) {
1896
- this._tabDisplayMode = value;
1897
- this.changeDetector.markForCheck();
1996
+ __classPrivateFieldSet(this, _SkyTabsetComponent__tabDisplayMode, value, "f");
1997
+ __classPrivateFieldGet(this, _SkyTabsetComponent_changeDetector, "f").markForCheck();
1898
1998
  }
1899
1999
  get tabDisplayMode() {
1900
- return this._tabDisplayMode || 'tabs';
2000
+ return __classPrivateFieldGet(this, _SkyTabsetComponent__tabDisplayMode, "f");
2001
+ }
2002
+ set tabs(value) {
2003
+ __classPrivateFieldSet(this, _SkyTabsetComponent__tabs, value, "f");
2004
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabComponentsChangeUnsubscribe, "f").next();
2005
+ value === null || value === void 0 ? void 0 : value.changes.pipe(takeUntil(__classPrivateFieldGet(this, _SkyTabsetComponent_tabComponentsChangeUnsubscribe, "f"))).subscribe(() => {
2006
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_resetTabComponents).call(this);
2007
+ });
2008
+ }
2009
+ get tabs() {
2010
+ return __classPrivateFieldGet(this, _SkyTabsetComponent__tabs, "f");
1901
2011
  }
1902
2012
  ngAfterViewInit() {
1903
- this.initTabComponents();
1904
- this.listenTabComponentsStructuralChange();
1905
- const initialTabIndex = this.getInitialTabIndex();
1906
- this.tabsetService.setActiveTabIndex(initialTabIndex);
1907
- this.listenTabButtonsOverflowChange();
1908
- this.listenLocationPopStateChange();
2013
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_initTabComponents).call(this);
2014
+ const initialTabIndex = __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_getInitialTabIndex).call(this);
2015
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").setActiveTabIndex(initialTabIndex);
2016
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_listenTabButtonsOverflowChange).call(this);
2017
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_listenLocationPopStateChange).call(this);
1909
2018
  // If the currently active tab is getting unregistered, activate the next one.
1910
- this.tabsetService.activeTabUnregistered
1911
- .pipe(takeUntil(this.ngUnsubscribe))
2019
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").activeTabUnregistered
2020
+ .pipe(takeUntil(__classPrivateFieldGet(this, _SkyTabsetComponent_ngUnsubscribe, "f")))
1912
2021
  .subscribe((tab) => {
1913
2022
  // Wait for the new tabs to render before activating.
1914
2023
  setTimeout(() => {
1915
- this.tabsetService.activateNearestTab(tab.arrayIndex);
2024
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").activateNearestTab(tab.arrayIndex);
1916
2025
  });
1917
2026
  });
1918
2027
  // Let the tabset render the initial active index before listening for changes.
1919
2028
  setTimeout(() => {
1920
- this.listenTabComponentsStateChange();
1921
- this.listenActiveIndexChange();
1922
- this.permalinkService.init();
2029
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_listenTabComponentsStateChange).call(this);
2030
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_listenActiveIndexChange).call(this);
2031
+ __classPrivateFieldGet(this, _SkyTabsetComponent_permalinkService, "f").init();
1923
2032
  });
1924
2033
  }
1925
2034
  ngOnDestroy() {
1926
- this.ngUnsubscribe.next();
1927
- this.ngUnsubscribe.complete();
1928
- this.unsubscribeTabComponentsStateChange();
2035
+ __classPrivateFieldGet(this, _SkyTabsetComponent_ngUnsubscribe, "f").next();
2036
+ __classPrivateFieldGet(this, _SkyTabsetComponent_ngUnsubscribe, "f").complete();
2037
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabComponentsChangeUnsubscribe, "f").next();
2038
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabComponentsChangeUnsubscribe, "f").complete();
2039
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_unsubscribeTabComponentsStateChange).call(this);
1929
2040
  if (this.permalinkId) {
1930
- this.permalinkService.clearParam(this.permalinkId);
2041
+ __classPrivateFieldGet(this, _SkyTabsetComponent_permalinkService, "f").clearParam(this.permalinkId);
1931
2042
  }
1932
2043
  }
1933
2044
  onWindowResize() {
1934
- this.adapterService.detectOverflow();
2045
+ __classPrivateFieldGet(this, _SkyTabsetComponent_adapterService, "f").detectOverflow();
1935
2046
  }
1936
2047
  onTabCloseClick(tabButton) {
1937
- const tabComponent = this.tabs.find((tab) => this.tabsetService.tabIndexesEqual(tab.tabIndex, tabButton.tabIndex));
1938
- tabComponent.close.emit();
2048
+ var _a;
2049
+ const tabComponent = (_a = this.tabs) === null || _a === void 0 ? void 0 : _a.find((tab) => __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").tabIndexesEqual(tab.tabIndex, tabButton.tabIndex));
2050
+ tabComponent === null || tabComponent === void 0 ? void 0 : tabComponent.close.emit();
1939
2051
  }
1940
2052
  onTabButtonClick(tabButton) {
1941
- this.tabsetService.setActiveTabIndex(tabButton.tabIndex);
2053
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").setActiveTabIndex(tabButton.tabIndex);
1942
2054
  }
1943
2055
  onNewTabClick() {
1944
2056
  this.newTab.emit();
@@ -1947,230 +2059,205 @@ class SkyTabsetComponent {
1947
2059
  this.openTab.emit();
1948
2060
  }
1949
2061
  onRightKeyDown() {
1950
- this.tabsetService.focusNextTabBtn(this.tabButtons);
2062
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").focusNextTabBtn(this.tabButtons);
1951
2063
  }
1952
2064
  onLeftKeyDown() {
1953
- this.tabsetService.focusPrevTabBtn(this.tabButtons);
2065
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").focusPrevTabBtn(this.tabButtons);
1954
2066
  }
1955
2067
  onHomeKeyDown() {
1956
- this.tabsetService.focusFirstOrNearestTabBtn(this.tabButtons);
2068
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").focusFirstOrNearestTabBtn(this.tabButtons);
1957
2069
  }
1958
2070
  onEndKeyDown() {
1959
- this.tabsetService.focusLastOrNearestTabBtn(this.tabButtons);
2071
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").focusLastOrNearestTabBtn(this.tabButtons);
1960
2072
  }
1961
- /**
1962
- * Sets the initial active tab index based on the following criteria.
1963
- * 1. Does the URL include a query param that reflects this tabset's active tab?
1964
- * 2. Does one of the tab components have their `active` property set to `true`?
1965
- * 3. Is the tabset component's `active` property set to a specific tab index?
1966
- */
1967
- getInitialTabIndex() {
1968
- var _a;
1969
- let activeIndex = this.getActiveTabIndexByPermalinkId();
2073
+ }
2074
+ _SkyTabsetComponent_ngUnsubscribe = new WeakMap(), _SkyTabsetComponent_tabComponentsChangeUnsubscribe = new WeakMap(), _SkyTabsetComponent_tabComponentsStateChangeUnsubscribe = new WeakMap(), _SkyTabsetComponent__active = new WeakMap(), _SkyTabsetComponent__permalinkId = new WeakMap(), _SkyTabsetComponent__tabs = new WeakMap(), _SkyTabsetComponent__tabDisplayMode = new WeakMap(), _SkyTabsetComponent__tabStyle = new WeakMap(), _SkyTabsetComponent_changeDetector = new WeakMap(), _SkyTabsetComponent_elementRef = new WeakMap(), _SkyTabsetComponent_adapterService = new WeakMap(), _SkyTabsetComponent_permalinkService = new WeakMap(), _SkyTabsetComponent_tabsetService = new WeakMap(), _SkyTabsetComponent_instances = new WeakSet(), _SkyTabsetComponent_getInitialTabIndex = function _SkyTabsetComponent_getInitialTabIndex() {
2075
+ var _a;
2076
+ let activeIndex = __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_getActiveTabIndexByPermalinkId).call(this);
2077
+ if (activeIndex === undefined) {
2078
+ activeIndex = (_a = __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_getActiveTabComponent).call(this)) === null || _a === void 0 ? void 0 : _a.tabIndex;
1970
2079
  if (activeIndex === undefined) {
1971
- activeIndex = (_a = this.getActiveTabComponent()) === null || _a === void 0 ? void 0 : _a.tabIndex;
1972
- if (activeIndex === undefined) {
1973
- activeIndex = this.active;
1974
- }
1975
- }
1976
- return activeIndex;
1977
- }
1978
- listenActiveIndexChange() {
1979
- this.tabsetService.activeTabIndex
1980
- .pipe(distinctUntilChanged(), takeUntil(this.ngUnsubscribe))
1981
- .subscribe((activeIndex) => {
1982
- this.updateTabsetComponent(activeIndex);
1983
- });
1984
- }
1985
- listenTabComponentsStructuralChange() {
1986
- this.tabs.changes.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
1987
- this.resetTabComponents();
1988
- });
1989
- }
1990
- listenTabComponentsStateChange() {
2080
+ activeIndex = this.active;
2081
+ }
2082
+ }
2083
+ return activeIndex;
2084
+ }, _SkyTabsetComponent_listenActiveIndexChange = function _SkyTabsetComponent_listenActiveIndexChange() {
2085
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").activeTabIndex
2086
+ .pipe(distinctUntilChanged(), takeUntil(__classPrivateFieldGet(this, _SkyTabsetComponent_ngUnsubscribe, "f")))
2087
+ .subscribe((activeIndex) => {
2088
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_updateTabsetComponent).call(this, activeIndex);
2089
+ });
2090
+ }, _SkyTabsetComponent_listenTabComponentsStateChange = function _SkyTabsetComponent_listenTabComponentsStateChange() {
2091
+ if (this.tabs) {
1991
2092
  combineLatest(this.tabs.map((tab) => tab.activeChange))
1992
- .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))
2093
+ .pipe(takeUntil(race(__classPrivateFieldGet(this, _SkyTabsetComponent_tabComponentsStateChangeUnsubscribe, "f"), __classPrivateFieldGet(this, _SkyTabsetComponent_ngUnsubscribe, "f"))))
1993
2094
  .subscribe(() => {
1994
2095
  // Wait for the tab components to render changes before finding the active one.
1995
2096
  setTimeout(() => {
1996
2097
  var _a;
1997
- const tabIndex = (_a = this.getActiveTabComponent()) === null || _a === void 0 ? void 0 : _a.tabIndex;
1998
- this.tabsetService.setActiveTabIndex(tabIndex);
2098
+ const tabIndex = (_a = __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_getActiveTabComponent).call(this)) === null || _a === void 0 ? void 0 : _a.tabIndex;
2099
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").setActiveTabIndex(tabIndex);
1999
2100
  });
2000
2101
  });
2001
2102
  combineLatest(this.tabs.map((tab) => tab.tabIndexChange))
2002
- .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))
2103
+ .pipe(takeUntil(race(__classPrivateFieldGet(this, _SkyTabsetComponent_tabComponentsStateChangeUnsubscribe, "f"), __classPrivateFieldGet(this, _SkyTabsetComponent_ngUnsubscribe, "f"))))
2003
2104
  .subscribe(() => {
2004
2105
  // Don't emit the first change.
2005
2106
  if (this.lastActiveTabIndex !== undefined) {
2006
2107
  // Wait for the tab components to render changes before updating the view.
2007
2108
  setTimeout(() => {
2008
- this.updateTabsetComponent(this.tabsetService.currentActiveTabIndex, true);
2009
- this.emitTabIndexChange();
2109
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_updateTabsetComponent).call(this, __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").currentActiveTabIndex, true);
2110
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_emitTabIndexChange).call(this);
2010
2111
  });
2011
2112
  }
2012
2113
  });
2013
2114
  combineLatest(this.tabs.map((tab) => tab.stateChange))
2014
- .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))
2115
+ .pipe(takeUntil(race(__classPrivateFieldGet(this, _SkyTabsetComponent_tabComponentsStateChangeUnsubscribe, "f"), __classPrivateFieldGet(this, _SkyTabsetComponent_ngUnsubscribe, "f"))))
2015
2116
  .subscribe(() => {
2016
2117
  // Wait for the tab components to render changes before finding the active one.
2017
2118
  setTimeout(() => {
2018
- this.updateTabsetComponent(this.tabsetService.currentActiveTabIndex, true);
2119
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_updateTabsetComponent).call(this, __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").currentActiveTabIndex, true);
2019
2120
  });
2020
2121
  });
2021
2122
  }
2022
- initTabComponents() {
2023
- this.tabs.forEach((tab) => tab.init());
2024
- }
2025
- resetTabComponents() {
2026
- var _a;
2027
- this.unsubscribeTabComponentsStateChange();
2028
- this.tabsetService.unregisterAll();
2029
- // If there are no tab components, do a hard reset of the view.
2030
- if (this.tabs.length === 0) {
2031
- this.updateTabsetComponent(0, true);
2032
- return;
2033
- }
2034
- this.initTabComponents();
2035
- const activeIndex = (_a = this.getActiveTabComponent()) === null || _a === void 0 ? void 0 : _a.tabIndex;
2036
- this.tabsetService.setActiveTabIndex(activeIndex, {
2037
- emitChange: false,
2038
- });
2039
- this.listenTabComponentsStateChange();
2040
- }
2041
- emitTabIndexChange() {
2042
- this.tabIndexesChange.emit({
2043
- tabs: this.tabs.map((tab) => ({
2044
- tabHeading: tab.tabHeading,
2045
- tabIndex: tab.tabIndex,
2046
- })),
2047
- });
2048
- }
2049
- unsubscribeTabComponentsStateChange() {
2050
- this.tabComponentsStateChangeUnsubscribe.next();
2051
- this.tabComponentsStateChangeUnsubscribe.complete();
2052
- this.tabComponentsStateChangeUnsubscribe = new Subject();
2053
- }
2054
- listenTabButtonsOverflowChange() {
2055
- this.adapterService.registerTabset(this.elementRef);
2056
- this.adapterService.overflowChange
2057
- .pipe(takeUntil(this.ngUnsubscribe))
2058
- .subscribe((isOverflowing) => {
2059
- this.tabDisplayMode = isOverflowing ? 'dropdown' : 'tabs';
2060
- this.changeDetector.markForCheck();
2061
- });
2062
- }
2063
- /**
2064
- * Listen for back/forward history button presses to detect query param changes in the URL.
2065
- */
2066
- listenLocationPopStateChange() {
2067
- this.permalinkService.popStateChange
2068
- .pipe(takeUntil(this.ngUnsubscribe))
2069
- .subscribe(() => {
2070
- this.setActiveTabIndexByPermalinkId();
2071
- });
2072
- }
2073
- setActiveTabIndexByPermalinkId() {
2074
- const activeIndex = this.getActiveTabIndexByPermalinkId();
2075
- this.tabsetService.setActiveTabIndex(activeIndex);
2076
- }
2077
- getActiveTabIndexByPermalinkId() {
2078
- var _a;
2079
- if (this.permalinkId) {
2080
- const paramValue = this.permalinkService.getParam(this.permalinkId);
2081
- if (paramValue) {
2082
- return (_a = this.tabs.find((tab) => tab.permalinkValue === paramValue)) === null || _a === void 0 ? void 0 : _a.tabIndex;
2083
- }
2084
- }
2085
- }
2086
- getActiveTabComponent() {
2087
- return this.tabs
2088
- .toArray()
2089
- .reverse()
2090
- .find((tab) => tab.active === true);
2091
- }
2092
- createTabButtons(activeIndex) {
2093
- return this.tabs.map((tab, index) => ({
2094
- active: this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex),
2095
- closeable: tab.closeable,
2096
- ariaControls: tab.tabPanelId,
2097
- disabled: tab.disabled,
2098
- buttonHref: tab.disabled
2099
- ? null
2100
- : this.permalinkService.getParamHref(this.permalinkId, tab.permalinkValue),
2101
- buttonId: tab.tabButtonId,
2102
- buttonTextCount: tab.tabHeaderCount,
2103
- buttonText: tab.tabHeading,
2123
+ }, _SkyTabsetComponent_initTabComponents = function _SkyTabsetComponent_initTabComponents() {
2124
+ var _a;
2125
+ (_a = this.tabs) === null || _a === void 0 ? void 0 : _a.forEach((tab) => tab.init());
2126
+ }, _SkyTabsetComponent_resetTabComponents = function _SkyTabsetComponent_resetTabComponents() {
2127
+ var _a, _b;
2128
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_unsubscribeTabComponentsStateChange).call(this);
2129
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").unregisterAll();
2130
+ // If there are no tab components, do a hard reset of the view.
2131
+ if (((_a = this.tabs) === null || _a === void 0 ? void 0 : _a.length) === 0) {
2132
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_updateTabsetComponent).call(this, 0, true);
2133
+ return;
2134
+ }
2135
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_initTabComponents).call(this);
2136
+ const activeIndex = (_b = __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_getActiveTabComponent).call(this)) === null || _b === void 0 ? void 0 : _b.tabIndex;
2137
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").setActiveTabIndex(activeIndex, {
2138
+ emitChange: false,
2139
+ });
2140
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_listenTabComponentsStateChange).call(this);
2141
+ }, _SkyTabsetComponent_emitTabIndexChange = function _SkyTabsetComponent_emitTabIndexChange() {
2142
+ var _a;
2143
+ this.tabIndexesChange.emit({
2144
+ tabs: (_a = this.tabs) === null || _a === void 0 ? void 0 : _a.map((tab) => ({
2145
+ tabHeading: tab.tabHeading,
2104
2146
  tabIndex: tab.tabIndex,
2105
- tabNumber: index + 1,
2106
- totalTabsCount: this.tabs.length,
2107
- }));
2108
- }
2109
- updateTabButtons(activeIndex) {
2110
- this.tabButtons.forEach((button) => {
2111
- button.active = this.tabsetService.tabIndexesEqual(button.tabIndex, activeIndex);
2112
- });
2147
+ })),
2148
+ });
2149
+ }, _SkyTabsetComponent_unsubscribeTabComponentsStateChange = function _SkyTabsetComponent_unsubscribeTabComponentsStateChange() {
2150
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabComponentsStateChangeUnsubscribe, "f").next();
2151
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabComponentsStateChangeUnsubscribe, "f").complete();
2152
+ __classPrivateFieldSet(this, _SkyTabsetComponent_tabComponentsStateChangeUnsubscribe, new Subject(), "f");
2153
+ }, _SkyTabsetComponent_listenTabButtonsOverflowChange = function _SkyTabsetComponent_listenTabButtonsOverflowChange() {
2154
+ __classPrivateFieldGet(this, _SkyTabsetComponent_adapterService, "f").registerTabset(__classPrivateFieldGet(this, _SkyTabsetComponent_elementRef, "f"));
2155
+ __classPrivateFieldGet(this, _SkyTabsetComponent_adapterService, "f").overflowChange
2156
+ .pipe(takeUntil(__classPrivateFieldGet(this, _SkyTabsetComponent_ngUnsubscribe, "f")))
2157
+ .subscribe((isOverflowing) => {
2158
+ this.tabDisplayMode = isOverflowing ? 'dropdown' : 'tabs';
2159
+ __classPrivateFieldGet(this, _SkyTabsetComponent_changeDetector, "f").markForCheck();
2160
+ });
2161
+ }, _SkyTabsetComponent_listenLocationPopStateChange = function _SkyTabsetComponent_listenLocationPopStateChange() {
2162
+ __classPrivateFieldGet(this, _SkyTabsetComponent_permalinkService, "f").popStateChange
2163
+ .pipe(takeUntil(__classPrivateFieldGet(this, _SkyTabsetComponent_ngUnsubscribe, "f")))
2164
+ .subscribe(() => {
2165
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_setActiveTabIndexByPermalinkId).call(this);
2166
+ });
2167
+ }, _SkyTabsetComponent_setActiveTabIndexByPermalinkId = function _SkyTabsetComponent_setActiveTabIndexByPermalinkId() {
2168
+ const activeIndex = __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_getActiveTabIndexByPermalinkId).call(this);
2169
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").setActiveTabIndex(activeIndex);
2170
+ }, _SkyTabsetComponent_getActiveTabIndexByPermalinkId = function _SkyTabsetComponent_getActiveTabIndexByPermalinkId() {
2171
+ var _a, _b;
2172
+ if (this.permalinkId) {
2173
+ const paramValue = __classPrivateFieldGet(this, _SkyTabsetComponent_permalinkService, "f").getParam(this.permalinkId);
2174
+ if (paramValue) {
2175
+ return (_b = (_a = this.tabs) === null || _a === void 0 ? void 0 : _a.find((tab) => tab.permalinkValueOrDefault === paramValue)) === null || _b === void 0 ? void 0 : _b.tabIndex;
2176
+ }
2177
+ return undefined;
2178
+ }
2179
+ return undefined;
2180
+ }, _SkyTabsetComponent_getActiveTabComponent = function _SkyTabsetComponent_getActiveTabComponent() {
2181
+ var _a;
2182
+ return (_a = this.tabs) === null || _a === void 0 ? void 0 : _a.toArray().reverse().find((tab) => tab.active === true);
2183
+ }, _SkyTabsetComponent_createTabButtons = function _SkyTabsetComponent_createTabButtons(activeIndex) {
2184
+ // Safety check
2185
+ /* istanbul ignore next */
2186
+ if (!this.tabs) {
2187
+ return [];
2188
+ }
2189
+ return this.tabs.map((tab, index) => ({
2190
+ active: __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").tabIndexesEqual(tab.tabIndex, activeIndex),
2191
+ closeable: tab.isCloseable(),
2192
+ ariaControls: tab.tabPanelId,
2193
+ disabled: tab.disabled,
2194
+ buttonHref: tab.disabled
2195
+ ? null
2196
+ : __classPrivateFieldGet(this, _SkyTabsetComponent_permalinkService, "f").getParamHref(this.permalinkId, tab.permalinkValueOrDefault),
2197
+ buttonId: tab.tabButtonId,
2198
+ buttonTextCount: tab.tabHeaderCount,
2199
+ buttonText: tab.tabHeading,
2200
+ tabIndex: tab.tabIndex,
2201
+ tabNumber: index + 1,
2202
+ totalTabsCount: this.tabs.length,
2203
+ }));
2204
+ }, _SkyTabsetComponent_updateTabButtons = function _SkyTabsetComponent_updateTabButtons(activeIndex) {
2205
+ this.tabButtons.forEach((button) => {
2206
+ button.active = __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").tabIndexesEqual(button.tabIndex, activeIndex);
2207
+ });
2208
+ }, _SkyTabsetComponent_updateTabsetComponent = function _SkyTabsetComponent_updateTabsetComponent(activeIndex, regenerateTabButtons = false) {
2209
+ var _a, _b, _c, _d;
2210
+ // Activate/deactivate tab components.
2211
+ (_a = this.tabs) === null || _a === void 0 ? void 0 : _a.forEach((tab) => {
2212
+ __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").tabIndexesEqual(tab.tabIndex, activeIndex)
2213
+ ? tab.activate()
2214
+ : tab.deactivate();
2215
+ });
2216
+ // Update the tab button models.
2217
+ if (regenerateTabButtons || !this.tabButtons.length) {
2218
+ this.tabButtons = __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_createTabButtons).call(this, activeIndex);
2113
2219
  }
2114
- /**
2115
- * Updates the UI and state of the tabset component after the tab index or
2116
- * tab components have changed.
2117
- * @param activeIndex The currently active tab index.
2118
- * @param regenerateTabButtons Indicates if tab button view models should be regenerated.
2119
- * Setting this value to `false` will simply update the existing tab buttons. Setting this value
2120
- * to `true` is only necessary when the underlying tab components have changed and the tab
2121
- * buttons must reflect those changes.
2122
- */
2123
- updateTabsetComponent(activeIndex, regenerateTabButtons = false) {
2124
- var _a;
2125
- // Activate/deactivate tab components.
2126
- this.tabs.forEach((tab) => {
2127
- this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex)
2128
- ? tab.activate()
2129
- : tab.deactivate();
2130
- });
2131
- // Update the tab button models.
2132
- if (regenerateTabButtons || !this.tabButtons.length) {
2133
- this.tabButtons = this.createTabButtons(activeIndex);
2134
- }
2135
- else {
2136
- this.updateTabButtons(activeIndex);
2137
- }
2138
- // Update the dropdown trigger button text.
2139
- this.dropdownTriggerButtonText = (_a = this.tabButtons.find((b) => {
2140
- return this.tabsetService.tabIndexesEqual(b.tabIndex, activeIndex);
2141
- })) === null || _a === void 0 ? void 0 : _a.buttonText;
2142
- // Set the query params based on active tab.
2143
- if (this.permalinkId) {
2144
- const activeTabComponent = this.tabs.find((tab) => {
2145
- return this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex);
2146
- });
2147
- this.permalinkService.setParam(this.permalinkId, activeTabComponent.permalinkValue);
2148
- }
2149
- // Wait for tab button view models to render before gauging dimensions.
2150
- setTimeout(() => {
2151
- this.adapterService.detectOverflow();
2220
+ else {
2221
+ __classPrivateFieldGet(this, _SkyTabsetComponent_instances, "m", _SkyTabsetComponent_updateTabButtons).call(this, activeIndex);
2222
+ }
2223
+ // Update the dropdown trigger button text.
2224
+ this.dropdownTriggerButtonText =
2225
+ (_c = (_b = this.tabButtons.find((b) => {
2226
+ return __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").tabIndexesEqual(b.tabIndex, activeIndex);
2227
+ })) === null || _b === void 0 ? void 0 : _b.buttonText) !== null && _c !== void 0 ? _c : '';
2228
+ // Set the query params based on active tab.
2229
+ if (this.permalinkId) {
2230
+ const activeTabComponent = (_d = this.tabs) === null || _d === void 0 ? void 0 : _d.find((tab) => {
2231
+ return __classPrivateFieldGet(this, _SkyTabsetComponent_tabsetService, "f").tabIndexesEqual(tab.tabIndex, activeIndex);
2152
2232
  });
2153
- this.changeDetector.markForCheck();
2154
- // Emit the new active index value to consumers.
2155
- if (this.lastActiveTabIndex !== activeIndex) {
2156
- this.lastActiveTabIndex = activeIndex;
2157
- this.activeChange.emit(activeIndex);
2233
+ if (activeTabComponent) {
2234
+ __classPrivateFieldGet(this, _SkyTabsetComponent_permalinkService, "f").setParam(this.permalinkId, activeTabComponent.permalinkValueOrDefault);
2158
2235
  }
2159
2236
  }
2160
- }
2237
+ // Wait for tab button view models to render before gauging dimensions.
2238
+ setTimeout(() => {
2239
+ __classPrivateFieldGet(this, _SkyTabsetComponent_adapterService, "f").detectOverflow();
2240
+ });
2241
+ __classPrivateFieldGet(this, _SkyTabsetComponent_changeDetector, "f").markForCheck();
2242
+ // Emit the new active index value to consumers.
2243
+ if (this.lastActiveTabIndex !== activeIndex) {
2244
+ this.lastActiveTabIndex = activeIndex;
2245
+ this.activeChange.emit(activeIndex);
2246
+ }
2247
+ };
2161
2248
  SkyTabsetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: SkyTabsetAdapterService }, { token: SkyTabsetPermalinkService }, { token: SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
2162
2249
  SkyTabsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyTabsetComponent, selector: "sky-tabset", inputs: { active: "active", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", permalinkId: "permalinkId", tabStyle: "tabStyle" }, outputs: { activeChange: "activeChange", newTab: "newTab", openTab: "openTab", tabIndexesChange: "tabIndexesChange" }, providers: [
2163
2250
  SkyTabsetAdapterService,
2164
2251
  SkyTabsetPermalinkService,
2165
2252
  SkyTabsetService,
2166
- ], queries: [{ propertyName: "tabs", predicate: SkyTabComponent }], ngImport: i0, template: "<div\n class=\"sky-tabset\"\n [attr.role]=\"elementRole\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n \"\n (window:resize)=\"onWindowResize()\"\n (keydown.arrowright)=\"onRightKeyDown()\"\n (keydown.arrowleft)=\"onLeftKeyDown()\"\n (keydown.home)=\"onHomeKeyDown()\"\n (keydown.end)=\"onEndKeyDown()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\" buttonType=\"tab\">\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item\n *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span class=\"sky-tabset-tabs\">\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </ng-container>\n </span>\n <span class=\"sky-tabset-btns\">\n <button\n *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon icon=\"plus-circle\" size=\"lg\"> </sky-icon>\n </button>\n <button\n *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon icon=\"folder-open-o\" size=\"lg\"> </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template let-tabButton #tabButtonTemplate>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabIndex]=\"tabButton.tabIndex\"\n [tabStyle]=\"tabStyle\"\n [tabNumber]=\"tabButton.tabNumber\"\n [totalTabsCount]=\"tabButton.totalTabsCount\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n", styles: [".sky-tabset{align-items:center;border-bottom:2px solid #0974a1;display:flex;list-style-type:none;margin:0;overflow:hidden;padding:0 0 0 15px;white-space:nowrap}.sky-tabset.sky-tabset-style-wizard{border-bottom:none;margin-bottom:10px;padding-left:0}.sky-tabset-btns{order:1;padding-left:10px}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset-mode-dropdown{line-height:0}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:#0974a1}.sky-theme-modern .sky-modal-content .sky-tabset{margin:-10px -30px 30px;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5$1.λ2, selector: "sky-dropdown-button" }, { kind: "component", type: i5$1.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { kind: "component", type: i5$1.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { kind: "component", type: i5$1.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { kind: "component", type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i7.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "component", type: SkyTabButtonComponent, selector: "sky-tab-button", inputs: ["active", "ariaControls", "buttonHref", "buttonId", "buttonText", "buttonTextCount", "closeable", "disabled", "tabIndex", "tabNumber", "totalTabsCount", "tabStyle"], outputs: ["buttonClick", "closeClick"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2253
+ ], queries: [{ propertyName: "tabs", predicate: SkyTabComponent }], ngImport: i0, template: "<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n \"\n (window:resize)=\"onWindowResize()\"\n (keydown.arrowright)=\"onRightKeyDown()\"\n (keydown.arrowleft)=\"onLeftKeyDown()\"\n (keydown.home)=\"onHomeKeyDown()\"\n (keydown.end)=\"onEndKeyDown()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\" buttonType=\"tab\">\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item\n *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span class=\"sky-tabset-tabs\">\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </ng-container>\n </span>\n <span class=\"sky-tabset-btns\">\n <button\n *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon icon=\"plus-circle\" size=\"lg\"> </sky-icon>\n </button>\n <button\n *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon icon=\"folder-open-o\" size=\"lg\"> </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template let-tabButton #tabButtonTemplate>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabIndex]=\"tabButton.tabIndex\"\n [tabStyle]=\"tabStyle\"\n [tabNumber]=\"tabButton.tabNumber\"\n [totalTabsCount]=\"tabButton.totalTabsCount\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n", styles: [".sky-tabset{align-items:center;border-bottom:2px solid #0974a1;display:flex;list-style-type:none;margin:0;overflow:hidden;padding:0 0 0 15px;white-space:nowrap}.sky-tabset.sky-tabset-style-wizard{border-bottom:none;margin-bottom:10px;padding-left:0}.sky-tabset-btns{order:1;padding-left:10px}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset-mode-dropdown{line-height:0}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:#0974a1}.sky-theme-modern .sky-modal-content .sky-tabset{margin:-10px -30px 30px;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5$1.λ2, selector: "sky-dropdown-button" }, { kind: "component", type: i5$1.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { kind: "component", type: i5$1.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { kind: "component", type: i5$1.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { kind: "component", type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i7.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "component", type: SkyTabButtonComponent, selector: "sky-tab-button", inputs: ["active", "ariaControls", "buttonHref", "buttonId", "buttonText", "buttonTextCount", "closeable", "disabled", "tabIndex", "tabNumber", "totalTabsCount", "tabStyle"], outputs: ["buttonClick", "closeClick"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2167
2254
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsetComponent, decorators: [{
2168
2255
  type: Component,
2169
2256
  args: [{ selector: 'sky-tabset', providers: [
2170
2257
  SkyTabsetAdapterService,
2171
2258
  SkyTabsetPermalinkService,
2172
2259
  SkyTabsetService,
2173
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-tabset\"\n [attr.role]=\"elementRole\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n \"\n (window:resize)=\"onWindowResize()\"\n (keydown.arrowright)=\"onRightKeyDown()\"\n (keydown.arrowleft)=\"onLeftKeyDown()\"\n (keydown.home)=\"onHomeKeyDown()\"\n (keydown.end)=\"onEndKeyDown()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\" buttonType=\"tab\">\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item\n *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span class=\"sky-tabset-tabs\">\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </ng-container>\n </span>\n <span class=\"sky-tabset-btns\">\n <button\n *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon icon=\"plus-circle\" size=\"lg\"> </sky-icon>\n </button>\n <button\n *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon icon=\"folder-open-o\" size=\"lg\"> </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template let-tabButton #tabButtonTemplate>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabIndex]=\"tabButton.tabIndex\"\n [tabStyle]=\"tabStyle\"\n [tabNumber]=\"tabButton.tabNumber\"\n [totalTabsCount]=\"tabButton.totalTabsCount\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n", styles: [".sky-tabset{align-items:center;border-bottom:2px solid #0974a1;display:flex;list-style-type:none;margin:0;overflow:hidden;padding:0 0 0 15px;white-space:nowrap}.sky-tabset.sky-tabset-style-wizard{border-bottom:none;margin-bottom:10px;padding-left:0}.sky-tabset-btns{order:1;padding-left:10px}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset-mode-dropdown{line-height:0}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:#0974a1}.sky-theme-modern .sky-modal-content .sky-tabset{margin:-10px -30px 30px;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}\n"] }]
2260
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n \"\n (window:resize)=\"onWindowResize()\"\n (keydown.arrowright)=\"onRightKeyDown()\"\n (keydown.arrowleft)=\"onLeftKeyDown()\"\n (keydown.home)=\"onHomeKeyDown()\"\n (keydown.end)=\"onEndKeyDown()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\" buttonType=\"tab\">\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item\n *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span class=\"sky-tabset-tabs\">\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </ng-container>\n </span>\n <span class=\"sky-tabset-btns\">\n <button\n *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon icon=\"plus-circle\" size=\"lg\"> </sky-icon>\n </button>\n <button\n *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon icon=\"folder-open-o\" size=\"lg\"> </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template let-tabButton #tabButtonTemplate>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabIndex]=\"tabButton.tabIndex\"\n [tabStyle]=\"tabStyle\"\n [tabNumber]=\"tabButton.tabNumber\"\n [totalTabsCount]=\"tabButton.totalTabsCount\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n", styles: [".sky-tabset{align-items:center;border-bottom:2px solid #0974a1;display:flex;list-style-type:none;margin:0;overflow:hidden;padding:0 0 0 15px;white-space:nowrap}.sky-tabset.sky-tabset-style-wizard{border-bottom:none;margin-bottom:10px;padding-left:0}.sky-tabset-btns{order:1;padding-left:10px}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset-mode-dropdown{line-height:0}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:#0974a1}.sky-theme-modern .sky-modal-content .sky-tabset{margin:-10px -30px 30px;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}\n"] }]
2174
2261
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: SkyTabsetAdapterService }, { type: SkyTabsetPermalinkService }, { type: SkyTabsetService }]; }, propDecorators: { active: [{
2175
2262
  type: Input
2176
2263
  }], ariaLabel: [{
@@ -2200,7 +2287,8 @@ SkyTabsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
2200
2287
  SkyTabsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: SkyTabsModule, declarations: [SkyTabButtonComponent,
2201
2288
  SkyTabComponent,
2202
2289
  SkyTabsetComponent,
2203
- SkyTabsetNavButtonComponent], imports: [CommonModule,
2290
+ SkyTabsetNavButtonComponent,
2291
+ SkyTabsetNavButtonDisabledPipe], imports: [CommonModule,
2204
2292
  RouterModule,
2205
2293
  SkyDropdownModule,
2206
2294
  SkyI18nModule,
@@ -2222,6 +2310,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
2222
2310
  SkyTabComponent,
2223
2311
  SkyTabsetComponent,
2224
2312
  SkyTabsetNavButtonComponent,
2313
+ SkyTabsetNavButtonDisabledPipe,
2225
2314
  ],
2226
2315
  imports: [
2227
2316
  CommonModule,