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