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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/bundles/skyux-tabs.umd.js +102 -84
  2. package/bundles/skyux-tabs.umd.js.map +1 -1
  3. package/documentation.json +220 -195
  4. package/esm2015/modules/sectioned-form/sectioned-form-section.component.js +3 -3
  5. package/esm2015/modules/sectioned-form/sectioned-form.component.js +4 -4
  6. package/esm2015/modules/sectioned-form/sectioned-form.module.js +4 -4
  7. package/esm2015/modules/sectioned-form/sectioned-form.service.js +3 -3
  8. package/esm2015/modules/shared/sky-tabs-resources.module.js +4 -4
  9. package/esm2015/modules/tabs/tab-button.component.js +3 -3
  10. package/esm2015/modules/tabs/tab.component.js +3 -3
  11. package/esm2015/modules/tabs/tabs.module.js +4 -4
  12. package/esm2015/modules/tabs/tabset-adapter.service.js +3 -3
  13. package/esm2015/modules/tabs/tabset-nav-button.component.js +3 -3
  14. package/esm2015/modules/tabs/tabset-permalink.service.js +3 -3
  15. package/esm2015/modules/tabs/tabset.component.js +3 -3
  16. package/esm2015/modules/tabs/tabset.service.js +3 -3
  17. package/esm2015/modules/vertical-tabset/vertical-tab-media-query.service.js +3 -3
  18. package/esm2015/modules/vertical-tabset/vertical-tab.component.js +6 -8
  19. package/esm2015/modules/vertical-tabset/vertical-tabset-adapter.service.js +7 -4
  20. package/esm2015/modules/vertical-tabset/vertical-tabset-group.component.js +4 -4
  21. package/esm2015/modules/vertical-tabset/vertical-tabset.component.js +24 -12
  22. package/esm2015/modules/vertical-tabset/vertical-tabset.module.js +11 -5
  23. package/esm2015/modules/vertical-tabset/vertical-tabset.service.js +3 -3
  24. package/fesm2015/skyux-tabs.js +92 -74
  25. package/fesm2015/skyux-tabs.js.map +1 -1
  26. package/modules/vertical-tabset/vertical-tabset-adapter.service.d.ts +1 -0
  27. package/modules/vertical-tabset/vertical-tabset.component.d.ts +4 -1
  28. package/package.json +8 -8
@@ -162,9 +162,9 @@ export class SkyVerticalTabsetService {
162
162
  this.indexChanged.next(this.activeIndex);
163
163
  }
164
164
  }
165
- SkyVerticalTabsetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetService, deps: [{ token: i1.SkyMediaQueryService }], target: i0.ɵɵFactoryTarget.Injectable });
166
- SkyVerticalTabsetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetService });
167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetService, decorators: [{
165
+ SkyVerticalTabsetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetService, deps: [{ token: i1.SkyMediaQueryService }], target: i0.ɵɵFactoryTarget.Injectable });
166
+ SkyVerticalTabsetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetService });
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetService, decorators: [{
168
168
  type: Injectable
169
169
  }], ctorParameters: function () { return [{ type: i1.SkyMediaQueryService }]; } });
170
170
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YWJzL3NyYy9tb2R1bGVzL3ZlcnRpY2FsLXRhYnNldC92ZXJ0aWNhbC10YWJzZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxtQkFBbUIsRUFFcEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNMLGVBQWUsRUFDZixPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7OztBQU1kLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUVuQzs7R0FFRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUFvQ25DLFlBQTJCLGlCQUF1QztRQUF2QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBbEMzRCxnQkFBVyxHQUFXLFNBQVMsQ0FBQztRQVVoQyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsaUJBQVksR0FBNEIsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdkUsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBRXBDLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekMsb0JBQWUsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVsRCxTQUFJLEdBQW1DLEVBQUUsQ0FBQztRQUUxQyxhQUFRLEdBQXFDLElBQUksT0FBTyxFQUFFLENBQUM7UUFFM0QsZUFBVSxHQUE2QixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUlyRSxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUUvQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUU5QixjQUFT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QUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDeEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLElBQUksYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBRWpFLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxhQUFhLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3JFLFNBQVMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzthQUMzQjtTQUNGO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUUzQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLENBQUMsNEJBQTRCLEdBQUcsYUFBYSxDQUFDO1lBQ2xELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxZQUFZLENBQUM7WUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUI7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7cUhBck1VLHdCQUF3Qjt5SEFBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbGVtZW50UmVmLFxuICBJbmplY3RhYmxlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lNZWRpYUJyZWFrcG9pbnRzLFxuICBTa3lNZWRpYVF1ZXJ5U2VydmljZVxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgU3ViamVjdFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgU2t5VmVydGljYWxUYWJDb21wb25lbnRcbn0gZnJvbSAnLi92ZXJ0aWNhbC10YWIuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IFZJU0lCTEVfU1RBVEUgPSAnc2hvd24nO1xuZXhwb3J0IGNvbnN0IEhJRERFTl9TVEFURSA9ICd2b2lkJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVZlcnRpY2FsVGFic2V0U2VydmljZSB7XG5cbiAgcHVibGljIGFjdGl2ZUluZGV4OiBudW1iZXIgPSB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGU6IHN0cmluZztcblxuICBwdWJsaWMgYW5pbWF0aW9uVGFic1Zpc2libGVTdGF0ZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBzZXQgY29udGVudCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbnRlbnQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBoaWRpbmdUYWJzID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIGluZGV4Q2hhbmdlZDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XG5cbiAgcHVibGljIG1haW50YWluVGFiQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzaG93aW5nVGFicyA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHB1YmxpYyBzd2l0Y2hpbmdNb2JpbGU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyB0YWJzOiBBcnJheTxTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudD4gPSBbXTtcblxuICBwdWJsaWMgdGFiQWRkZWQ6IFN1YmplY3Q8U2t5VmVydGljYWxUYWJDb21wb25lbnQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwdWJsaWMgdGFiQ2xpY2tlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgX2NvbnRlbnQ6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBfY29udGVudEFkZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfdGFic1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9pc01vYmlsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIG1lZGlhUXVlcnlTZXJ2aWNlOiBTa3lNZWRpYVF1ZXJ5U2VydmljZSkge1xuICAgIHRoaXMubWVkaWFRdWVyeVNlcnZpY2Uuc3Vic2NyaWJlKGJyZWFrcG9pbnQgPT4ge1xuICAgICAgY29uc3Qgbm93TW9iaWxlID0gYnJlYWtwb2ludCA9PT0gU2t5TWVkaWFCcmVha3BvaW50cy54cztcblxuICAgICAgaWYgKG5vd01vYmlsZSAmJiAhdGhpcy5faXNNb2JpbGUpIHtcbiAgICAgICAgLy8gc3dpdGNoaW5nIHRvIG1vYmlsZVxuICAgICAgICB0aGlzLnN3aXRjaGluZ01vYmlsZS5uZXh0KHRydWUpO1xuXG4gICAgICAgIGlmICghdGhpcy5fdGFic1Zpc2libGUpIHtcbiAgICAgICAgICB0aGlzLmhpZGluZ1RhYnMubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2UgaWYgKCFub3dNb2JpbGUgJiYgdGhpcy5faXNNb2JpbGUpIHtcbiAgICAgICAgLy8gc3dpdGNoaW5nIHRvIHdpZGVzY3JlZW5cbiAgICAgICAgdGhpcy5zd2l0Y2hpbmdNb2JpbGUubmV4dChmYWxzZSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLl90YWJzVmlzaWJsZSkge1xuICAgICAgICAgIHRoaXMuc2hvd2luZ1RhYnMubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc01vYmlsZSA9IG5vd01vYmlsZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUYWIodGFiOiBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy50YWJzLmxlbmd0aDtcbiAgICB0YWIuaW5kZXggPSBpbmRleDtcblxuICAgIHRoaXMudGFicy5wdXNoKHRhYik7XG5cbiAgICBpZiAodGFiLmFjdGl2ZSkge1xuICAgICAgdGhpcy5hY3RpdmF0ZVRhYih0YWIpO1xuICAgIH1cblxuICAgIHRoaXMudGFiQWRkZWQubmV4dCh0YWIpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3lUYWIodGFiOiBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgIGxldCB0YWJJbmRleCA9IHRoaXMudGFicy5pbmRleE9mKHRhYik7XG4gICAgaWYgKHRhYkluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMubWFpbnRhaW5UYWJDb250ZW50ICYmXG4gICAgICB0YWIuY29udGVudFJlbmRlcmVkICYmXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgdGhpcy5fY29udGVudD8ubmF0aXZlRWxlbWVudC5jb250YWlucyh0YWIudGFiQ29udGVudC5uYXRpdmVFbGVtZW50KVxuICAgICkge1xuICAgICAgdGhpcy5fY29udGVudC5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRhYi50YWJDb250ZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMudGFicy5zcGxpY2UodGFiSW5kZXgsIDEpO1xuICAgIC8vIHVwZGF0ZSB0YWIgaW5kaWNlc1xuICAgIHRoaXMudGFicy5mb3JFYWNoKCh0YWJJdGVtLCBpbmRleCkgPT4gdGFiSXRlbS5pbmRleCA9IGluZGV4KTtcblxuICAgIGlmICh0YWIuYWN0aXZlKSB7XG4gICAgICBpZiAoIXRoaXMubWFpbnRhaW5UYWJDb250ZW50KSB7XG4gICAgICAgIHRoaXMuZGVzdHJveUNvbnRlbnQoKTtcbiAgICAgIH1cbiAgICAgIC8vIFRyeSBzZWxlY3RpbmcgdGhlIG5leHQgdGFiIGZpcnN0LCBhbmQgaWYgdGhlcmUncyBubyBuZXh0IHRhYiB0aGVuXG4gICAgICAvLyB0cnkgc2VsZWN0aW5nIHRoZSBwcmV2aW91cyBvbmUuXG4gICAgICBsZXQgbmV3QWN0aXZlVGFiID0gdGhpcy50YWJzW3RhYkluZGV4XSB8fCB0aGlzLnRhYnNbdGFiSW5kZXggLSAxXTtcbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdBY3RpdmVUYWIpIHtcbiAgICAgICAgbmV3QWN0aXZlVGFiLmFjdGl2YXRlVGFiKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFjdGl2YXRlVGFiKHRhYjogU2t5VmVydGljYWxUYWJDb21wb25lbnQpIHtcblxuICAgIC8vIHVuYWN0aXZhdGUgYWN0aXZlIHRhYlxuICAgIGxldCBhY3RpdmVUYWIgPSB0aGlzLnRhYnMuZmluZCh0ID0+IHQuaW5kZXggPT09IHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgIGlmIChhY3RpdmVUYWIgJiYgYWN0aXZlVGFiLmluZGV4ICE9PSB0YWIuaW5kZXgpIHtcbiAgICAgIGFjdGl2ZVRhYi5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIGFjdGl2ZVRhYi50YWJEZWFjdGl2YXRlZCgpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlSW5kZXggPSB0YWIuaW5kZXg7XG4gICAgdGhpcy50YWJDbGlja2VkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy51cGRhdGVUYWJDbGlja2VkKCk7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZlVGFiKCk6IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy50YWJzLmZpbmQodCA9PiB0LmluZGV4ID09PSB0aGlzLmFjdGl2ZUluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyBpc01vYmlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNNb2JpbGU7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ29udGVudCgpIHtcbiAgICBpZiAoIXRoaXMubWFpbnRhaW5UYWJDb250ZW50KSB7XG4gICAgICBpZiAoIXRoaXMuX2NvbnRlbnRBZGRlZCAmJiB0aGlzLmNvbnRlbnRWaXNpYmxlKCkpIHtcbiAgICAgICAgLy8gY29udGVudCBuZWVkcyB0byBiZSBtb3ZlZFxuICAgICAgICB0aGlzLm1vdmVDb250ZW50KCk7XG5cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fY29udGVudEFkZGVkICYmICF0aGlzLmNvbnRlbnRWaXNpYmxlKCkpIHtcbiAgICAgICAgLy8gY29udGVudCBoaWRkZW5cbiAgICAgICAgdGhpcy5fY29udGVudEFkZGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgaWYgKCF0YWIuY29udGVudFJlbmRlcmVkKSB7XG4gICAgICAgICAgdGhpcy5fY29udGVudC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRhYi50YWJDb250ZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgIHRhYi5jb250ZW50UmVuZGVyZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdGFic1Zpc2libGUoKSB7XG4gICAgcmV0dXJuICF0aGlzLmlzTW9iaWxlKCkgfHwgdGhpcy5fdGFic1Zpc2libGU7XG4gIH1cblxuICBwdWJsaWMgY29udGVudFZpc2libGUoKSB7XG4gICAgcmV0dXJuICF0aGlzLmlzTW9iaWxlKCkgfHwgIXRoaXMuX3RhYnNWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIHNob3dUYWJzKCkge1xuICAgIHRoaXMuX3RhYnNWaXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLl9jb250ZW50QWRkZWQgPSBmYWxzZTtcbiAgICB0aGlzLmFuaW1hdGlvblRhYnNWaXNpYmxlU3RhdGUgPSBWSVNJQkxFX1NUQVRFO1xuICAgIHRoaXMuYW5pbWF0aW9uQ29udGVudFZpc2libGVTdGF0ZSA9IEhJRERFTl9TVEFURTtcbiAgICB0aGlzLnNob3dpbmdUYWJzLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lDb250ZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jb250ZW50KSB7XG4gICAgICB0aGlzLl9jb250ZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG4gICAgfVxuICAgIHRoaXMuY29udGVudCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZUNvbnRlbnQoKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5fY29udGVudCAmJiAhdGhpcy5fY29udGVudEFkZGVkKSB7XG4gICAgICBsZXQgYWN0aXZlVGFiID0gdGhpcy5hY3RpdmVUYWIoKTtcbiAgICAgIGxldCBhY3RpdmVDb250ZW50ID0gYWN0aXZlVGFiID8gYWN0aXZlVGFiLnRhYkNvbnRlbnQgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChhY3RpdmVDb250ZW50ICYmIGFjdGl2ZUNvbnRlbnQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLl9jb250ZW50Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoYWN0aXZlQ29udGVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgYWN0aXZlVGFiLmNvbnRlbnRSZW5kZXJlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRBZGRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYWJDbGlja2VkKCkge1xuICAgIHRoaXMuX2NvbnRlbnRBZGRlZCA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuaXNNb2JpbGUoKSkge1xuICAgICAgdGhpcy5fdGFic1Zpc2libGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuYW5pbWF0aW9uQ29udGVudFZpc2libGVTdGF0ZSA9IFZJU0lCTEVfU1RBVEU7XG4gICAgICB0aGlzLmFuaW1hdGlvblRhYnNWaXNpYmxlU3RhdGUgPSBISURERU5fU1RBVEU7XG4gICAgICB0aGlzLmhpZGluZ1RhYnMubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmluZGV4Q2hhbmdlZC5uZXh0KHRoaXMuYWN0aXZlSW5kZXgpO1xuICB9XG59XG4iXX0=
@@ -11,7 +11,7 @@ import * as i4 from '@skyux/indicators';
11
11
  import { SkyChevronModule, SkyIconModule, SkyStatusIndicatorModule } from '@skyux/indicators';
12
12
  import * as i4$1 from '@skyux/theme';
13
13
  import { SkyThemeModule } from '@skyux/theme';
14
- import * as i2$1 from '@skyux/i18n';
14
+ import * as i3 from '@skyux/i18n';
15
15
  import { getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS } from '@skyux/i18n';
16
16
  import { SkyCheckboxModule } from '@skyux/forms';
17
17
  import * as i1$1 from '@angular/router';
@@ -178,9 +178,9 @@ class SkyVerticalTabsetService {
178
178
  this.indexChanged.next(this.activeIndex);
179
179
  }
180
180
  }
181
- SkyVerticalTabsetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetService, deps: [{ token: i1.SkyMediaQueryService }], target: i0.ɵɵFactoryTarget.Injectable });
182
- SkyVerticalTabsetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetService });
183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetService, decorators: [{
181
+ SkyVerticalTabsetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetService, deps: [{ token: i1.SkyMediaQueryService }], target: i0.ɵɵFactoryTarget.Injectable });
182
+ SkyVerticalTabsetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetService });
183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetService, decorators: [{
184
184
  type: Injectable
185
185
  }], ctorParameters: function () { return [{ type: i1.SkyMediaQueryService }]; } });
186
186
 
@@ -245,8 +245,8 @@ class SkySectionedFormComponent {
245
245
  this.changeRef.markForCheck();
246
246
  }
247
247
  }
248
- SkySectionedFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkySectionedFormComponent, deps: [{ token: SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
249
- SkySectionedFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: SkySectionedFormComponent, selector: "sky-sectioned-form", inputs: { maintainSectionContent: "maintainSectionContent" }, outputs: { indexChanged: "indexChanged" }, providers: [SkyVerticalTabsetService], viewQueries: [{ propertyName: "content", first: true, predicate: ["skySectionSideContent"], descendants: true }], ngImport: i0, template: "<div\n aria-orientation=\"vertical\"\n class=\"sky-sectioned-form\"\n [attr.role]=\"ariaRole\"\n (window:resize)=\"tabService.updateContent()\"\n>\n <div\n *ngIf=\"maintainSectionContent || tabsVisible()\"\n class=\"sky-sectioned-form-tabs\"\n [ngClass]=\"{'sky-sectioned-form-tabs-hidden': !tabsVisible()}\"\n [@tabEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainSectionContent || tabService.contentVisible()\"\n class=\"sky-sectioned-form-content sky-padding-even-large\"\n [ngClass]=\"{'sky-sectioned-form-content-hidden': !tabService.contentVisible()}\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #skySectionSideContent\n >\n </div>\n</div>\n\n", styles: [":host .sky-sectioned-form{display:block;max-height:none}:host .sky-sectioned-form-content{flex-basis:auto;overflow-y:visible}:host .sky-sectioned-form-tabs{flex-basis:auto;overflow-y:visible;border-right:1px solid #e2e3e4}:host-context(.sky-responsive-container-xs) .sky-sectioned-form,:host-context(.sky-responsive-container-sm) .sky-sectioned-form,:host-context(.sky-responsive-container-md) .sky-sectioned-form,:host-context(.sky-responsive-container-lg) .sky-sectioned-form{display:block;max-height:none}:host-context(.sky-responsive-container-xs) .sky-sectioned-form-content,:host-context(.sky-responsive-container-sm) .sky-sectioned-form-content,:host-context(.sky-responsive-container-md) .sky-sectioned-form-content,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-content{flex-basis:auto;overflow-y:visible}:host-context(.sky-responsive-container-xs) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-sm) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-md) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-tabs{flex-basis:auto;overflow-y:visible;border-right:1px solid #e2e3e4}@media (min-width: 768px){:host .sky-sectioned-form{display:flex;max-height:100%}:host .sky-sectioned-form-content{flex-basis:70%;overflow-y:auto}:host .sky-sectioned-form-tabs{flex-basis:30%;overflow-y:auto}}:host-context(.sky-responsive-container-sm) .sky-sectioned-form,:host-context(.sky-responsive-container-md) .sky-sectioned-form,:host-context(.sky-responsive-container-lg) .sky-sectioned-form{display:flex;max-height:100%}:host-context(.sky-responsive-container-sm) .sky-sectioned-form-content,:host-context(.sky-responsive-container-md) .sky-sectioned-form-content,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-content{flex-basis:70%;overflow-y:auto}:host-context(.sky-responsive-container-sm) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-md) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-tabs{flex-basis:30%;overflow-y:auto}.sky-sectioned-form-tabs-hidden{display:none}.sky-sectioned-form-content-hidden{display:none}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
248
+ SkySectionedFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkySectionedFormComponent, deps: [{ token: SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
249
+ SkySectionedFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: SkySectionedFormComponent, selector: "sky-sectioned-form", inputs: { maintainSectionContent: "maintainSectionContent" }, outputs: { indexChanged: "indexChanged" }, providers: [SkyVerticalTabsetService], viewQueries: [{ propertyName: "content", first: true, predicate: ["skySectionSideContent"], descendants: true }], ngImport: i0, template: "<div\n aria-orientation=\"vertical\"\n class=\"sky-sectioned-form\"\n [attr.role]=\"ariaRole\"\n (window:resize)=\"tabService.updateContent()\"\n>\n <div\n *ngIf=\"maintainSectionContent || tabsVisible()\"\n class=\"sky-sectioned-form-tabs\"\n [ngClass]=\"{'sky-sectioned-form-tabs-hidden': !tabsVisible()}\"\n [@tabEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainSectionContent || tabService.contentVisible()\"\n class=\"sky-sectioned-form-content\"\n [ngClass]=\"{'sky-sectioned-form-content-hidden': !tabService.contentVisible()}\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #skySectionSideContent\n >\n </div>\n</div>\n\n", styles: [":host .sky-sectioned-form{display:block;max-height:none}:host .sky-sectioned-form-content{flex-basis:auto;overflow-y:visible}:host .sky-sectioned-form-tabs{flex-basis:auto;overflow-y:visible;border-right:1px solid #e2e3e4}:host-context(.sky-responsive-container-xs) .sky-sectioned-form,:host-context(.sky-responsive-container-sm) .sky-sectioned-form,:host-context(.sky-responsive-container-md) .sky-sectioned-form,:host-context(.sky-responsive-container-lg) .sky-sectioned-form{display:block;max-height:none}:host-context(.sky-responsive-container-xs) .sky-sectioned-form-content,:host-context(.sky-responsive-container-sm) .sky-sectioned-form-content,:host-context(.sky-responsive-container-md) .sky-sectioned-form-content,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-content{flex-basis:auto;overflow-y:visible}:host-context(.sky-responsive-container-xs) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-sm) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-md) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-tabs{flex-basis:auto;overflow-y:visible;border-right:1px solid #e2e3e4}@media (min-width: 768px){:host .sky-sectioned-form{display:flex;max-height:100%}:host .sky-sectioned-form-content{flex-basis:70%;margin:15px;overflow-y:auto}:host .sky-sectioned-form-tabs{flex-basis:30%;overflow-y:auto}}:host-context(.sky-responsive-container-sm) .sky-sectioned-form,:host-context(.sky-responsive-container-md) .sky-sectioned-form,:host-context(.sky-responsive-container-lg) .sky-sectioned-form{display:flex;max-height:100%}:host-context(.sky-responsive-container-sm) .sky-sectioned-form-content,:host-context(.sky-responsive-container-md) .sky-sectioned-form-content,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-content{flex-basis:70%;margin:15px;overflow-y:auto}:host-context(.sky-responsive-container-sm) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-md) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-tabs{flex-basis:30%;overflow-y:auto}.sky-sectioned-form-tabs-hidden{display:none}.sky-sectioned-form-content-hidden{display:none}:host-context(.sky-theme-modern) .sky-sectioned-form-content{margin:15px}:host-context(.sky-theme-modern) .sky-sectioned-form-tabs{border-right:1px solid #d2d2d2}@media (min-width: 768px){:host-context(.sky-theme-modern) :host .sky-sectioned-form-content{margin:20px 30px}}:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-sm) .sky-sectioned-form-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-md) .sky-sectioned-form-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-lg) .sky-sectioned-form-content{margin:20px 30px}.sky-theme-modern .sky-sectioned-form-content{margin:15px}.sky-theme-modern .sky-sectioned-form-tabs{border-right:1px solid #d2d2d2}@media (min-width: 768px){.sky-theme-modern :host .sky-sectioned-form-content{margin:20px 30px}}.sky-theme-modern :host-context(.sky-responsive-container-sm) .sky-sectioned-form-content,.sky-theme-modern :host-context(.sky-responsive-container-md) .sky-sectioned-form-content,.sky-theme-modern :host-context(.sky-responsive-container-lg) .sky-sectioned-form-content{margin:20px 30px}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
250
250
  trigger('tabEnter', [
251
251
  transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [
252
252
  style({ transform: 'translate(-100%)' }),
@@ -260,7 +260,7 @@ SkySectionedFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
260
260
  ])
261
261
  ])
262
262
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
263
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkySectionedFormComponent, decorators: [{
263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkySectionedFormComponent, decorators: [{
264
264
  type: Component,
265
265
  args: [{
266
266
  selector: 'sky-sectioned-form',
@@ -354,9 +354,9 @@ class SkyVerticalTabMediaQueryService {
354
354
  this.currentSubject.complete();
355
355
  }
356
356
  }
357
- SkyVerticalTabMediaQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabMediaQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
358
- SkyVerticalTabMediaQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabMediaQueryService });
359
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabMediaQueryService, decorators: [{
357
+ SkyVerticalTabMediaQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabMediaQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
358
+ SkyVerticalTabMediaQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabMediaQueryService });
359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabMediaQueryService, decorators: [{
360
360
  type: Injectable
361
361
  }], ctorParameters: function () { return []; } });
362
362
 
@@ -368,6 +368,9 @@ class SkyVerticalTabsetAdapterService {
368
368
  getWidth(elementRef) {
369
369
  return elementRef.nativeElement.clientWidth;
370
370
  }
371
+ scrollToContentTop(element) {
372
+ element.nativeElement.scrollTop = 0;
373
+ }
371
374
  setResponsiveClass(element, breakpoint) {
372
375
  const nativeEl = element.nativeElement;
373
376
  this.renderer.removeClass(nativeEl, 'sky-responsive-container-xs');
@@ -396,9 +399,9 @@ class SkyVerticalTabsetAdapterService {
396
399
  this.renderer.addClass(nativeEl, newClass);
397
400
  }
398
401
  }
399
- SkyVerticalTabsetAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
400
- SkyVerticalTabsetAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetAdapterService });
401
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetAdapterService, decorators: [{
402
+ SkyVerticalTabsetAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
403
+ SkyVerticalTabsetAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetAdapterService });
404
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetAdapterService, decorators: [{
402
405
  type: Injectable
403
406
  }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
404
407
 
@@ -528,15 +531,15 @@ class SkyVerticalTabComponent {
528
531
  this.verticalTabMediaQueryService.setBreakpointForWidth(width);
529
532
  const newBreakpiont = this.verticalTabMediaQueryService.current;
530
533
  this.adapterService.setResponsiveClass(this.tabContent, newBreakpiont);
534
+ this.changeRef.markForCheck();
531
535
  }
532
536
  }
533
- SkyVerticalTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabComponent, deps: [{ token: SkyVerticalTabsetAdapterService }, { token: i0.ChangeDetectorRef }, { token: SkyVerticalTabsetService }, { token: SkyVerticalTabMediaQueryService }], target: i0.ɵɵFactoryTarget.Component });
534
- SkyVerticalTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: SkyVerticalTabComponent, selector: "sky-vertical-tab", inputs: { active: "active", ariaControls: "ariaControls", ariaInvalid: "ariaInvalid", ariaRequired: "ariaRequired", ariaRole: "ariaRole", disabled: "disabled", errorIndicator: "errorIndicator", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", showTabRightArrow: "showTabRightArrow", tabId: "tabId" }, host: { listeners: { "window:resize": "onWindowResize()" } }, providers: [
537
+ SkyVerticalTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabComponent, deps: [{ token: SkyVerticalTabsetAdapterService }, { token: i0.ChangeDetectorRef }, { token: SkyVerticalTabsetService }, { token: SkyVerticalTabMediaQueryService }], target: i0.ɵɵFactoryTarget.Component });
538
+ SkyVerticalTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: SkyVerticalTabComponent, selector: "sky-vertical-tab", inputs: { active: "active", ariaControls: "ariaControls", ariaInvalid: "ariaInvalid", ariaRequired: "ariaRequired", ariaRole: "ariaRole", disabled: "disabled", errorIndicator: "errorIndicator", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", showTabRightArrow: "showTabRightArrow", tabId: "tabId" }, host: { listeners: { "window:resize": "onWindowResize()" } }, providers: [
535
539
  SkyVerticalTabMediaQueryService,
536
- SkyVerticalTabsetAdapterService,
537
540
  { provide: SkyMediaQueryService, useExisting: SkyVerticalTabMediaQueryService }
538
- ], viewQueries: [{ propertyName: "tabContent", first: true, predicate: ["tabContentWrapper"], descendants: true }], ngImport: i0, template: "<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired ? ariaRequired : null\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup.enter)=\"activateTab()\">\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\">\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n\n <sky-icon\n *ngIf=\"showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div\n #tabContentWrapper\n>\n <div\n class=\"sky-vertical-tab-content-pane\"\n [ngClass]=\"{'sky-vertical-tab-hidden': !active}\"\n >\n\n <ng-content></ng-content>\n\n <div>\n\n</div>\n\n", styles: [".sky-vertical-tab{cursor:pointer;padding:7px 0 7px 10px;margin:5px 0 5px 10px;display:flex;text-decoration:none}.sky-vertical-tab:not(.sky-deemphasized){color:#212327}.sky-vertical-tab:hover{background-color:#eeeeef}.sky-vertical-tab:focus{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tab:hover .sky-vertical-tab-right-arrow{color:#979ba2}.sky-vertical-tab-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;flex-grow:1}.sky-vertical-tab-heading-error{padding-left:5px}.sky-vertical-tab-count{margin-left:5px}.sky-vertical-tab-disabled{cursor:not-allowed;pointer-events:none;font-style:normal}.sky-vertical-tab-right-arrow{padding:3px 10px 0 0;color:#cdcfd2}:host-context(.sky-theme-modern) .sky-vertical-tab{cursor:pointer;padding:10px 0 10px 10px;margin:10px 0 20px 10px}:host-context(.sky-theme-modern) .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:9px;border-left:1px solid #00b4f1}:host-context(.sky-theme-modern) .sky-vertical-tab:not(:active):focus{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-vertical-tab:focus:active:hover{outline:none;background:none}:host-context(.sky-theme-modern) .sky-vertical-tab:active{border-left:3px solid #00b4f1;padding-left:7px}:host-context(.sky-theme-modern) .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px}:host-context(.sky-theme-modern) .sky-vertical-tab-active{background:none;padding-left:7px;border-left:3px solid #1870B8}.sky-theme-modern .sky-vertical-tab{cursor:pointer;padding:10px 0 10px 10px;margin:10px 0 20px 10px}.sky-theme-modern .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:9px;border-left:1px solid #00b4f1}.sky-theme-modern .sky-vertical-tab:not(:active):focus{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-vertical-tab:focus:active:hover{outline:none;background:none}.sky-theme-modern .sky-vertical-tab:active{border-left:3px solid #00b4f1;padding-left:7px}.sky-theme-modern .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px}.sky-theme-modern .sky-vertical-tab-active{background:none;padding-left:7px;border-left:3px solid #1870B8}\n"], components: [{ type: i4.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription"] }, { type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
539
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabComponent, decorators: [{
541
+ ], viewQueries: [{ propertyName: "tabContent", first: true, predicate: ["tabContentWrapper"], descendants: true }], ngImport: i0, template: "<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired ? ariaRequired : null\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup.enter)=\"activateTab()\">\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\">\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n <sky-icon\n *ngIf=\"showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div\n #tabContentWrapper\n>\n <div\n class=\"sky-vertical-tab-content-pane\"\n [ngClass]=\"{'sky-vertical-tab-hidden': !active}\"\n >\n\n <ng-content></ng-content>\n\n <div>\n\n</div>\n\n", styles: [".sky-vertical-tab{cursor:pointer;padding:7px 0 7px 10px;margin:5px 0 5px 10px;display:flex;text-decoration:none}.sky-vertical-tab:not(.sky-deemphasized){color:#212327}.sky-vertical-tab:hover{background-color:#eeeeef}.sky-vertical-tab:focus-visible{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tab:hover .sky-vertical-tab-right-arrow{color:#979ba2}.sky-vertical-tab-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;flex-grow:1}.sky-vertical-tab-heading-error{padding-left:5px}.sky-vertical-tab-count{margin-left:5px}.sky-vertical-tab-disabled{cursor:not-allowed;pointer-events:none}.sky-vertical-tab-right-arrow{padding:3px 10px 0 0;color:#cdcfd2}:host-context(.sky-theme-modern) .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 10px;margin:10px 0 20px 10px}:host-context(.sky-theme-modern) .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:9px;border-left:1px solid #00b4f1}:host-context(.sky-theme-modern) .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-vertical-tab:focus:active:hover{outline:none;background:none}:host-context(.sky-theme-modern) .sky-vertical-tab:active{border-left:3px solid #00b4f1;color:#212327;padding-left:7px}:host-context(.sky-theme-modern) .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}:host-context(.sky-theme-modern) .sky-vertical-tab-active{background:none;color:#212327;padding-left:7px;border-left:3px solid #1870B8}.sky-theme-modern .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 10px;margin:10px 0 20px 10px}.sky-theme-modern .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:9px;border-left:1px solid #00b4f1}.sky-theme-modern .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-vertical-tab:focus:active:hover{outline:none;background:none}.sky-theme-modern .sky-vertical-tab:active{border-left:3px solid #00b4f1;color:#212327;padding-left:7px}.sky-theme-modern .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}.sky-theme-modern .sky-vertical-tab-active{background:none;color:#212327;padding-left:7px;border-left:3px solid #1870B8}\n"], components: [{ type: i4.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription"] }, { type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
542
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabComponent, decorators: [{
540
543
  type: Component,
541
544
  args: [{
542
545
  selector: 'sky-vertical-tab',
@@ -544,7 +547,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
544
547
  styleUrls: ['./vertical-tab.component.scss'],
545
548
  providers: [
546
549
  SkyVerticalTabMediaQueryService,
547
- SkyVerticalTabsetAdapterService,
548
550
  { provide: SkyMediaQueryService, useExisting: SkyVerticalTabMediaQueryService }
549
551
  ],
550
552
  changeDetection: ChangeDetectionStrategy.OnPush
@@ -605,9 +607,9 @@ class SkySectionedFormService {
605
607
  this.requiredChange.next(isRequired);
606
608
  }
607
609
  }
608
- SkySectionedFormService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkySectionedFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
609
- SkySectionedFormService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkySectionedFormService });
610
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkySectionedFormService, decorators: [{
610
+ SkySectionedFormService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkySectionedFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
611
+ SkySectionedFormService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkySectionedFormService });
612
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkySectionedFormService, decorators: [{
611
613
  type: Injectable
612
614
  }] });
613
615
 
@@ -651,9 +653,9 @@ class SkySectionedFormSectionComponent {
651
653
  this._ngUnsubscribe.complete();
652
654
  }
653
655
  }
654
- SkySectionedFormSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkySectionedFormSectionComponent, deps: [{ token: SkySectionedFormService }, { token: SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
655
- SkySectionedFormSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: SkySectionedFormSectionComponent, selector: "sky-sectioned-form-section", inputs: { heading: "heading", itemCount: "itemCount", active: "active" }, providers: [SkySectionedFormService], viewQueries: [{ propertyName: "tab", first: true, predicate: SkyVerticalTabComponent, descendants: true }], ngImport: i0, template: "<sky-vertical-tab\n [active]=\"active\"\n [ariaControls]=\"sectionContentId\"\n [ariaInvalid]=\"fieldInvalid\"\n [ariaRequired]=\"fieldRequired\"\n [errorIndicator]=\"fieldInvalid\"\n [ngClass]=\"{\n 'sky-tab-field-required': fieldRequired\n }\"\n [showTabRightArrow]=\"true\"\n [tabHeaderCount]=\"itemCount\"\n [tabHeading]=\"heading\"\n [tabId]=\"sectionTabId\">\n <div\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.role]=\"ariaRole\"\n [id]=\"sectionContentId\"\n #tabContent>\n <ng-content></ng-content>\n </div>\n</sky-vertical-tab>\n", styles: [":host .sky-tab-field-required ::ng-deep .sky-vertical-tab-heading:after{content:\"*\";color:#ef4044;padding-left:5px}\n"], components: [{ type: SkyVerticalTabComponent, selector: "sky-vertical-tab", inputs: ["active", "ariaControls", "ariaInvalid", "ariaRequired", "ariaRole", "disabled", "errorIndicator", "tabHeaderCount", "tabHeading", "showTabRightArrow", "tabId"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
656
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkySectionedFormSectionComponent, decorators: [{
656
+ SkySectionedFormSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkySectionedFormSectionComponent, deps: [{ token: SkySectionedFormService }, { token: SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
657
+ SkySectionedFormSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: SkySectionedFormSectionComponent, selector: "sky-sectioned-form-section", inputs: { heading: "heading", itemCount: "itemCount", active: "active" }, providers: [SkySectionedFormService], viewQueries: [{ propertyName: "tab", first: true, predicate: SkyVerticalTabComponent, descendants: true }], ngImport: i0, template: "<sky-vertical-tab\n [active]=\"active\"\n [ariaControls]=\"sectionContentId\"\n [ariaInvalid]=\"fieldInvalid\"\n [ariaRequired]=\"fieldRequired\"\n [errorIndicator]=\"fieldInvalid\"\n [ngClass]=\"{\n 'sky-tab-field-required': fieldRequired\n }\"\n [showTabRightArrow]=\"true\"\n [tabHeaderCount]=\"itemCount\"\n [tabHeading]=\"heading\"\n [tabId]=\"sectionTabId\">\n <div\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.role]=\"ariaRole\"\n [id]=\"sectionContentId\"\n #tabContent>\n <ng-content></ng-content>\n </div>\n</sky-vertical-tab>\n", styles: [":host .sky-tab-field-required ::ng-deep .sky-vertical-tab-heading:after{content:\"*\";color:#ef4044;padding-left:5px}\n"], components: [{ type: SkyVerticalTabComponent, selector: "sky-vertical-tab", inputs: ["active", "ariaControls", "ariaInvalid", "ariaRequired", "ariaRole", "disabled", "errorIndicator", "tabHeaderCount", "tabHeading", "showTabRightArrow", "tabId"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
658
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkySectionedFormSectionComponent, decorators: [{
657
659
  type: Component,
658
660
  args: [{
659
661
  selector: 'sky-sectioned-form-section',
@@ -691,14 +693,14 @@ class SkyTabsResourcesProvider {
691
693
  */
692
694
  class SkyTabsResourcesModule {
693
695
  }
694
- SkyTabsResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
695
- SkyTabsResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsResourcesModule, exports: [SkyI18nModule] });
696
- SkyTabsResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsResourcesModule, providers: [{
696
+ SkyTabsResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
697
+ SkyTabsResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsResourcesModule, exports: [SkyI18nModule] });
698
+ SkyTabsResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsResourcesModule, providers: [{
697
699
  provide: SKY_LIB_RESOURCES_PROVIDERS,
698
700
  useClass: SkyTabsResourcesProvider,
699
701
  multi: true
700
702
  }], imports: [SkyI18nModule] });
701
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsResourcesModule, decorators: [{
703
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsResourcesModule, decorators: [{
702
704
  type: NgModule,
703
705
  args: [{
704
706
  exports: [SkyI18nModule],
@@ -711,7 +713,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
711
713
  }] });
712
714
 
713
715
  class SkyVerticalTabsetComponent {
714
- constructor(tabService, resources, changeRef) {
716
+ constructor(adapterService, tabService, resources, changeRef) {
717
+ this.adapterService = adapterService;
715
718
  this.tabService = tabService;
716
719
  this.resources = resources;
717
720
  this.changeRef = changeRef;
@@ -752,6 +755,9 @@ class SkyVerticalTabsetComponent {
752
755
  .pipe(takeUntil(this._ngUnsubscribe))
753
756
  .subscribe((index) => {
754
757
  this.activeChange.emit(index);
758
+ if (this.contentWrapper) {
759
+ this.adapterService.scrollToContentTop(this.contentWrapper);
760
+ }
755
761
  this.changeRef.markForCheck();
756
762
  });
757
763
  this.tabService.switchingMobile
@@ -786,8 +792,10 @@ class SkyVerticalTabsetComponent {
786
792
  this._ngUnsubscribe.complete();
787
793
  }
788
794
  }
789
- SkyVerticalTabsetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetComponent, deps: [{ token: SkyVerticalTabsetService }, { token: i2$1.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
790
- SkyVerticalTabsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: SkyVerticalTabsetComponent, selector: "sky-vertical-tabset", inputs: { showTabsText: "showTabsText", ariaRole: "ariaRole", maintainTabContent: "maintainTabContent" }, outputs: { activeChange: "activeChange" }, providers: [SkyVerticalTabsetService], viewQueries: [{ propertyName: "tabGroups", first: true, predicate: ["contentWrapper"], descendants: true }, { propertyName: "content", first: true, predicate: ["skySideContent"], descendants: true }], ngImport: i0, template: " <div class=\"sky-vertical-tabset\" (window:resize)=\"tabService.updateContent()\">\n <div\n *ngIf=\"maintainTabContent || tabService.tabsVisible()\"\n #contentWrapper\n class=\"sky-vertical-tabset-group-container\"\n [ngClass]=\"{'sky-vertical-tabset-hidden': !tabService.tabsVisible()}\"\n [attr.role]=\"ariaRole\"\n [@tabGroupEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainTabContent || tabService.contentVisible()\"\n class=\"sky-vertical-tabset-content\"\n [ngClass]=\"{'sky-vertical-tabset-content-hidden': !tabService.contentVisible()}\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n >\n <div #skySideContent></div>\n <button\n *ngIf=\"!tabService.tabsVisible()\"\n (click)=\"tabService.showTabs()\"\n class=\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\"\n >\n <sky-icon icon=\"chevron-left\"></sky-icon>\n {{ showTabsText }}\n </button>\n </div>\n</div>\n", styles: [":host .sky-vertical-tabset{display:block;height:auto}:host .sky-vertical-tabset-group-container{border-right:none}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:block;height:auto}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:none}@media (min-width: 768px){:host .sky-vertical-tabset{display:flex;height:100%}:host .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:flex;height:100%}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}.sky-vertical-tabset-hidden{display:none}.sky-vertical-tabset-content{margin:10px 0 0 10px;flex-basis:75%;overflow-y:auto}.sky-vertical-tabset-content-hidden{display:none}.sky-vertical-tabset-show-tabs-btn{margin-top:10px}.sky-vertical-tabset-group-container{flex-basis:25%;overflow-y:auto}:host-context(sky-modal-content >) .sky-vertical-tabset{margin:-15px}\n"], components: [{ type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
795
+ SkyVerticalTabsetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetComponent, deps: [{ token: SkyVerticalTabsetAdapterService }, { token: SkyVerticalTabsetService }, { token: i3.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
796
+ SkyVerticalTabsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: SkyVerticalTabsetComponent, selector: "sky-vertical-tabset", inputs: { showTabsText: "showTabsText", ariaRole: "ariaRole", maintainTabContent: "maintainTabContent" }, outputs: { activeChange: "activeChange" }, providers: [
797
+ SkyVerticalTabsetService
798
+ ], viewQueries: [{ propertyName: "tabGroups", first: true, predicate: ["groupContainerWrapper"], descendants: true }, { propertyName: "content", first: true, predicate: ["skySideContent"], descendants: true }, { propertyName: "contentWrapper", first: true, predicate: ["contentContainerWrapper"], descendants: true }], ngImport: i0, template: " <div class=\"sky-vertical-tabset\" (window:resize)=\"tabService.updateContent()\">\n <div\n *ngIf=\"maintainTabContent || tabService.tabsVisible()\"\n #groupContainerWrapper\n class=\"sky-vertical-tabset-group-container\"\n [ngClass]=\"{'sky-vertical-tabset-hidden': !tabService.tabsVisible()}\"\n [attr.role]=\"ariaRole\"\n [@tabGroupEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainTabContent || tabService.contentVisible()\"\n class=\"sky-vertical-tabset-content\"\n [ngClass]=\"{'sky-vertical-tabset-content-hidden': !tabService.contentVisible()}\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #contentContainerWrapper\n >\n <div #skySideContent></div>\n <button\n *ngIf=\"!tabService.tabsVisible()\"\n (click)=\"tabService.showTabs()\"\n class=\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\"\n >\n <sky-icon icon=\"chevron-left\"></sky-icon>\n {{ showTabsText }}\n </button>\n </div>\n</div>\n", styles: [":host .sky-vertical-tabset{display:block;height:auto}:host .sky-vertical-tabset-group-container{border-right:none}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:block;height:auto}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:none}@media (min-width: 768px){:host .sky-vertical-tabset{display:flex;height:100%}:host .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:flex;height:100%}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}.sky-vertical-tabset-hidden{display:none}.sky-vertical-tabset-content{margin:10px 0 0 10px;flex-basis:75%;overflow-y:auto}.sky-vertical-tabset-content-hidden{display:none}.sky-vertical-tabset-show-tabs-btn{margin-top:10px}.sky-vertical-tabset-group-container{flex-basis:25%;overflow-y:auto}:host-context(sky-modal-content >) .sky-vertical-tabset{margin:-15px}:host-context(.sky-theme-modern) .sky-vertical-tabset-content{margin:15px}@media (min-width: 768px){:host-context(.sky-theme-modern) :host .sky-vertical-tabset-content{margin:20px 30px}:host-context(.sky-theme-modern) :host .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}}:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:20px 30px}:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}.sky-theme-modern .sky-vertical-tabset-content{margin:15px}@media (min-width: 768px){.sky-theme-modern :host .sky-vertical-tabset-content{margin:20px 30px}.sky-theme-modern :host .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}}.sky-theme-modern :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,.sky-theme-modern :host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,.sky-theme-modern :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:20px 30px}.sky-theme-modern :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,.sky-theme-modern :host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,.sky-theme-modern :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}\n"], components: [{ type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
791
799
  trigger('tabGroupEnter', [
792
800
  transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [
793
801
  style({ transform: 'translate(-100%)' }),
@@ -801,13 +809,15 @@ SkyVerticalTabsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
801
809
  ])
802
810
  ])
803
811
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
804
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetComponent, decorators: [{
812
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetComponent, decorators: [{
805
813
  type: Component,
806
814
  args: [{
807
815
  selector: 'sky-vertical-tabset',
808
816
  templateUrl: './vertical-tabset.component.html',
809
817
  styleUrls: ['./vertical-tabset.component.scss'],
810
- providers: [SkyVerticalTabsetService],
818
+ providers: [
819
+ SkyVerticalTabsetService
820
+ ],
811
821
  changeDetection: ChangeDetectionStrategy.OnPush,
812
822
  animations: [
813
823
  trigger('tabGroupEnter', [
@@ -824,7 +834,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
824
834
  ])
825
835
  ]
826
836
  }]
827
- }], ctorParameters: function () { return [{ type: SkyVerticalTabsetService }, { type: i2$1.SkyLibResourcesService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { showTabsText: [{
837
+ }], ctorParameters: function () { return [{ type: SkyVerticalTabsetAdapterService }, { type: SkyVerticalTabsetService }, { type: i3.SkyLibResourcesService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { showTabsText: [{
828
838
  type: Input
829
839
  }], ariaRole: [{
830
840
  type: Input
@@ -834,10 +844,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
834
844
  type: Output
835
845
  }], tabGroups: [{
836
846
  type: ViewChild,
837
- args: ['contentWrapper']
847
+ args: ['groupContainerWrapper']
838
848
  }], content: [{
839
849
  type: ViewChild,
840
850
  args: ['skySideContent']
851
+ }], contentWrapper: [{
852
+ type: ViewChild,
853
+ args: ['contentContainerWrapper']
841
854
  }] } });
842
855
 
843
856
  class SkyVerticalTabsetGroupComponent {
@@ -896,8 +909,8 @@ class SkyVerticalTabsetGroupComponent {
896
909
  return this.tabs && (this.tabs.find(t => t.active) !== undefined);
897
910
  }
898
911
  }
899
- SkyVerticalTabsetGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetGroupComponent, deps: [{ token: SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
900
- SkyVerticalTabsetGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", 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 <div\n class=\"sky-vertical-tabset-group-header sky-padding-even-default\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-sub-open sky-emphasized': subMenuOpen(),\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n (click)=\"toggleMenuOpen()\"\n (keyup.enter)=\"toggleMenuOpen()\"\n [tabIndex]=\"-1\"\n >\n {{ groupHeading }}\n <sky-chevron *skyThemeIf=\"'default'\"\n class=\"sky-vertical-tabset-group-header-chevron\"\n [direction]=\"open ? 'up' : 'down'\"\n [disabled]=\"disabled\"\n (directionChange)=\"toggleMenuOpen()\"\n (keyup.enter)=\"$event.stopPropagation()\"\n >\n </sky-chevron>\n <ng-container *skyThemeIf=\"'modern'\">\n <button *ngIf=\"!open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-right\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </ng-container>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n *ngIf=\"open\"\n [@tabSlide]\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header{cursor:pointer;display:flex;justify-content:space-between}.sky-vertical-tabset-group-header:focus{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-header-chevron>button{font-size:14px!important}.sky-vertical-tabset-disabled{cursor:not-allowed;pointer-events:none;font-style:normal}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none}: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-header-chevron{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none}.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-header-chevron{position:absolute;top:6px;right:5px}\n"], components: [{ type: i4.λ2, selector: "sky-chevron", inputs: ["direction", "disabled"], outputs: ["directionChange"] }, { type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4$1.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
912
+ SkyVerticalTabsetGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetGroupComponent, deps: [{ token: SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
913
+ SkyVerticalTabsetGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", 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 sky-padding-even-default\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-sub-open sky-font-emphasized sky-emphasized': subMenuOpen(),\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n (click)=\"toggleMenuOpen()\"\n (keyup.enter)=\"toggleMenuOpen()\"\n [tabIndex]=\"-1\"\n >\n {{ groupHeading }}\n <sky-chevron *skyThemeIf=\"'default'\"\n class=\"sky-vertical-tabset-group-header-chevron\"\n [direction]=\"open ? 'up' : 'down'\"\n [disabled]=\"disabled\"\n (directionChange)=\"toggleMenuOpen()\"\n (keyup.enter)=\"$event.stopPropagation()\"\n >\n </sky-chevron>\n <ng-container *skyThemeIf=\"'modern'\">\n <button *ngIf=\"!open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-up\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </ng-container>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n *ngIf=\"open\"\n [@tabSlide]\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header{cursor:pointer;display:flex;justify-content:space-between}.sky-vertical-tabset-group-header:focus-visible{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-header-chevron>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-header-chevron{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-header-chevron{position:absolute;top:6px;right:5px}\n"], components: [{ type: i4.λ2, selector: "sky-chevron", inputs: ["direction", "disabled"], outputs: ["directionChange"] }, { type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4$1.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
901
914
  trigger('tabSlide', [
902
915
  transition(':enter', [
903
916
  style({
@@ -921,7 +934,7 @@ SkyVerticalTabsetGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion:
921
934
  ])
922
935
  ])
923
936
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
924
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetGroupComponent, decorators: [{
937
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetGroupComponent, decorators: [{
925
938
  type: Component,
926
939
  args: [{
927
940
  selector: 'sky-vertical-tabset-group',
@@ -966,8 +979,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
966
979
 
967
980
  class SkyVerticalTabsetModule {
968
981
  }
969
- SkyVerticalTabsetModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
970
- SkyVerticalTabsetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetModule, declarations: [SkyVerticalTabsetComponent,
982
+ SkyVerticalTabsetModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
983
+ SkyVerticalTabsetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetModule, declarations: [SkyVerticalTabsetComponent,
971
984
  SkyVerticalTabsetGroupComponent,
972
985
  SkyVerticalTabComponent], imports: [CommonModule,
973
986
  SkyChevronModule,
@@ -977,7 +990,9 @@ SkyVerticalTabsetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
977
990
  SkyThemeModule], exports: [SkyVerticalTabsetComponent,
978
991
  SkyVerticalTabsetGroupComponent,
979
992
  SkyVerticalTabComponent] });
980
- SkyVerticalTabsetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetModule, imports: [[
993
+ SkyVerticalTabsetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetModule, providers: [
994
+ SkyVerticalTabsetAdapterService
995
+ ], imports: [[
981
996
  CommonModule,
982
997
  SkyChevronModule,
983
998
  SkyIconModule,
@@ -985,7 +1000,7 @@ SkyVerticalTabsetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
985
1000
  SkyTabsResourcesModule,
986
1001
  SkyThemeModule
987
1002
  ]] });
988
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyVerticalTabsetModule, decorators: [{
1003
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabsetModule, decorators: [{
989
1004
  type: NgModule,
990
1005
  args: [{
991
1006
  declarations: [
@@ -1001,6 +1016,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
1001
1016
  SkyTabsResourcesModule,
1002
1017
  SkyThemeModule
1003
1018
  ],
1019
+ providers: [
1020
+ SkyVerticalTabsetAdapterService
1021
+ ],
1004
1022
  exports: [
1005
1023
  SkyVerticalTabsetComponent,
1006
1024
  SkyVerticalTabsetGroupComponent,
@@ -1011,18 +1029,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
1011
1029
 
1012
1030
  class SkySectionedFormModule {
1013
1031
  }
1014
- SkySectionedFormModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkySectionedFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1015
- SkySectionedFormModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkySectionedFormModule, declarations: [SkySectionedFormComponent,
1032
+ SkySectionedFormModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkySectionedFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1033
+ SkySectionedFormModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkySectionedFormModule, declarations: [SkySectionedFormComponent,
1016
1034
  SkySectionedFormSectionComponent], imports: [CommonModule,
1017
1035
  SkyCheckboxModule,
1018
1036
  SkyVerticalTabsetModule], exports: [SkySectionedFormComponent,
1019
1037
  SkySectionedFormSectionComponent] });
1020
- SkySectionedFormModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkySectionedFormModule, imports: [[
1038
+ SkySectionedFormModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkySectionedFormModule, imports: [[
1021
1039
  CommonModule,
1022
1040
  SkyCheckboxModule,
1023
1041
  SkyVerticalTabsetModule
1024
1042
  ]] });
1025
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkySectionedFormModule, decorators: [{
1043
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkySectionedFormModule, decorators: [{
1026
1044
  type: NgModule,
1027
1045
  args: [{
1028
1046
  declarations: [
@@ -1066,9 +1084,9 @@ class SkyTabButtonComponent {
1066
1084
  event.preventDefault();
1067
1085
  }
1068
1086
  }
1069
- SkyTabButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1070
- SkyTabButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: SkyTabButtonComponent, selector: "sky-tab-button", inputs: { active: "active", ariaControls: "ariaControls", buttonHref: "buttonHref", buttonId: "buttonId", buttonText: "buttonText", buttonTextCount: "buttonTextCount", closeable: "closeable", disabled: "disabled", tabStyle: "tabStyle" }, outputs: { buttonClick: "buttonClick", closeClick: "closeClick" }, 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 class=\"sky-btn-tab\"\n role=\"tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"active\"\n [attr.href]=\"buttonHref\"\n [id]=\"buttonId\"\n [ngClass]=\"{\n 'sky-btn-tab-wizard': tabStyle === 'wizard',\n 'sky-btn-tab-selected': active,\n 'sky-btn-tab-disabled': disabled,\n 'sky-tab-btn-closeable': closeable\n }\"\n [tabindex]=\"disabled ? '-1' : '0'\"\n (click)=\"onButtonClick($event)\"\n (keydown.enter)=\"onButtonEnterKeyDown($event)\"\n >\n <span\n class=\"sky-tab-heading\"\n >\n {{ buttonText }}\n <span *ngIf=\"buttonTextCount !== undefined\"\n class=\"sky-tab-header-count\"\n >\n {{ buttonTextCount }}\n </span>\n </span>\n </a>\n\n <button *ngIf=\"closeable\"\n class=\"sky-btn-tab-close\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_close' | skyLibResources:buttonText\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-tab-close-disabled': disabled\n }\"\n (click)=\"onCloseClick($event)\"\n >\n <sky-icon\n icon=\"remove\"\n ></sky-icon>\n </button>\n</div>\n", 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-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"], components: [{ type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "skyLibResources": i2$1.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1071
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabButtonComponent, decorators: [{
1087
+ SkyTabButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1088
+ SkyTabButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: SkyTabButtonComponent, selector: "sky-tab-button", inputs: { active: "active", ariaControls: "ariaControls", buttonHref: "buttonHref", buttonId: "buttonId", buttonText: "buttonText", buttonTextCount: "buttonTextCount", closeable: "closeable", disabled: "disabled", tabStyle: "tabStyle" }, outputs: { buttonClick: "buttonClick", closeClick: "closeClick" }, 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 class=\"sky-btn-tab\"\n role=\"tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"active\"\n [attr.href]=\"buttonHref\"\n [id]=\"buttonId\"\n [ngClass]=\"{\n 'sky-btn-tab-wizard': tabStyle === 'wizard',\n 'sky-btn-tab-selected': active,\n 'sky-btn-tab-disabled': disabled,\n 'sky-tab-btn-closeable': closeable\n }\"\n [tabindex]=\"disabled ? '-1' : '0'\"\n (click)=\"onButtonClick($event)\"\n (keydown.enter)=\"onButtonEnterKeyDown($event)\"\n >\n <span\n class=\"sky-tab-heading\"\n >\n {{ buttonText }}\n <span *ngIf=\"buttonTextCount !== undefined\"\n class=\"sky-tab-header-count\"\n >\n {{ buttonTextCount }}\n </span>\n </span>\n </a>\n\n <button *ngIf=\"closeable\"\n class=\"sky-btn-tab-close\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_close' | skyLibResources:buttonText\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-tab-close-disabled': disabled\n }\"\n (click)=\"onCloseClick($event)\"\n >\n <sky-icon\n icon=\"remove\"\n ></sky-icon>\n </button>\n</div>\n", 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-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"], components: [{ type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1089
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabButtonComponent, decorators: [{
1072
1090
  type: Component,
1073
1091
  args: [{
1074
1092
  selector: 'sky-tab-button',
@@ -1209,9 +1227,9 @@ class SkyTabsetPermalinkService {
1209
1227
  return params;
1210
1228
  }
1211
1229
  }
1212
- SkyTabsetPermalinkService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsetPermalinkService, deps: [{ token: i1$1.ActivatedRoute }, { token: i2.Location }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1213
- SkyTabsetPermalinkService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsetPermalinkService });
1214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsetPermalinkService, decorators: [{
1230
+ SkyTabsetPermalinkService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetPermalinkService, deps: [{ token: i1$1.ActivatedRoute }, { token: i2.Location }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1231
+ SkyTabsetPermalinkService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetPermalinkService });
1232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetPermalinkService, decorators: [{
1215
1233
  type: Injectable
1216
1234
  }], ctorParameters: function () { return [{ type: i1$1.ActivatedRoute }, { type: i2.Location }, { type: i1$1.Router }]; } });
1217
1235
 
@@ -1317,9 +1335,9 @@ class SkyTabsetService {
1317
1335
  return this.tabIndexesEqual(tabIndex, this.currentActiveTabIndex);
1318
1336
  }
1319
1337
  }
1320
- SkyTabsetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1321
- SkyTabsetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsetService });
1322
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsetService, decorators: [{
1338
+ SkyTabsetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1339
+ SkyTabsetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetService });
1340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetService, decorators: [{
1323
1341
  type: Injectable
1324
1342
  }] });
1325
1343
 
@@ -1427,9 +1445,9 @@ class SkyTabComponent {
1427
1445
  this.changeDetector.markForCheck();
1428
1446
  }
1429
1447
  }
1430
- SkyTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: SkyTabsetPermalinkService }, { token: SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
1431
- SkyTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", 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 });
1432
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabComponent, decorators: [{
1448
+ SkyTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: SkyTabsetPermalinkService }, { token: SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
1449
+ SkyTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", 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 });
1450
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabComponent, decorators: [{
1433
1451
  type: Component,
1434
1452
  args: [{
1435
1453
  selector: 'sky-tab',
@@ -1548,15 +1566,15 @@ class SkyTabsetNavButtonComponent {
1548
1566
  }
1549
1567
  }
1550
1568
  }
1551
- SkyTabsetNavButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsetNavButtonComponent, deps: [{ token: i2$1.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1552
- SkyTabsetNavButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: SkyTabsetNavButtonComponent, selector: "sky-tabset-nav-button", inputs: { tabset: "tabset", buttonType: "buttonType", buttonText: "buttonText" }, ngImport: i0, template: "<button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"buttonClick()\"\n>\n {{ buttonText }}\n</button>\n" });
1553
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsetNavButtonComponent, decorators: [{
1569
+ SkyTabsetNavButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetNavButtonComponent, deps: [{ token: i3.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1570
+ SkyTabsetNavButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: SkyTabsetNavButtonComponent, selector: "sky-tabset-nav-button", inputs: { tabset: "tabset", buttonType: "buttonType", buttonText: "buttonText" }, ngImport: i0, template: "<button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"buttonClick()\"\n>\n {{ buttonText }}\n</button>\n" });
1571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetNavButtonComponent, decorators: [{
1554
1572
  type: Component,
1555
1573
  args: [{
1556
1574
  selector: 'sky-tabset-nav-button',
1557
1575
  templateUrl: './tabset-nav-button.component.html'
1558
1576
  }]
1559
- }], ctorParameters: function () { return [{ type: i2$1.SkyLibResourcesService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { tabset: [{
1577
+ }], ctorParameters: function () { return [{ type: i3.SkyLibResourcesService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { tabset: [{
1560
1578
  type: Input
1561
1579
  }], buttonType: [{
1562
1580
  type: Input
@@ -1609,9 +1627,9 @@ class SkyTabsetAdapterService {
1609
1627
  return firstTabRect.left - tabsetRect.left;
1610
1628
  }
1611
1629
  }
1612
- SkyTabsetAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsetAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1613
- SkyTabsetAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsetAdapterService });
1614
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsetAdapterService, decorators: [{
1630
+ SkyTabsetAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1631
+ SkyTabsetAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetAdapterService });
1632
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetAdapterService, decorators: [{
1615
1633
  type: Injectable
1616
1634
  }] });
1617
1635
 
@@ -1957,13 +1975,13 @@ class SkyTabsetComponent {
1957
1975
  }
1958
1976
  }
1959
1977
  }
1960
- SkyTabsetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: SkyTabsetAdapterService }, { token: SkyTabsetPermalinkService }, { token: SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
1961
- SkyTabsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", 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: [
1978
+ SkyTabsetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: SkyTabsetAdapterService }, { token: SkyTabsetPermalinkService }, { token: SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
1979
+ SkyTabsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", 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: [
1962
1980
  SkyTabsetAdapterService,
1963
1981
  SkyTabsetPermalinkService,
1964
1982
  SkyTabsetService
1965
- ], 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]=\"'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\"\n (window:resize)=\"onWindowResize()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\"\n buttonType=\"tab\"\n >\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span\n class=\"sky-tabset-tabs\"\n >\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </ng-container>\n </span>\n <span\n class=\"sky-tabset-btns\"\n >\n <button *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon\n icon=\"plus-circle\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon\n icon=\"folder-open-o\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template\n let-tabButton\n #tabButtonTemplate\n>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabStyle]=\"tabStyle\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n", 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;padding-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-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}\n"], components: [{ type: i4$2.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { type: i4$2.λ2, selector: "sky-dropdown-button" }, { type: i4$2.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { type: i4$2.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: SkyTabButtonComponent, selector: "sky-tab-button", inputs: ["active", "ariaControls", "buttonHref", "buttonId", "buttonText", "buttonTextCount", "closeable", "disabled", "tabStyle"], outputs: ["buttonClick", "closeClick"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4$1.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }], pipes: { "skyLibResources": i2$1.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1966
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsetComponent, decorators: [{
1983
+ ], 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]=\"'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\"\n (window:resize)=\"onWindowResize()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\"\n buttonType=\"tab\"\n >\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span\n class=\"sky-tabset-tabs\"\n >\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </ng-container>\n </span>\n <span\n class=\"sky-tabset-btns\"\n >\n <button *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon\n icon=\"plus-circle\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon\n icon=\"folder-open-o\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template\n let-tabButton\n #tabButtonTemplate\n>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabStyle]=\"tabStyle\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n", 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;padding-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-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}\n"], components: [{ type: i4$2.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { type: i4$2.λ2, selector: "sky-dropdown-button" }, { type: i4$2.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { type: i4$2.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: SkyTabButtonComponent, selector: "sky-tab-button", inputs: ["active", "ariaControls", "buttonHref", "buttonId", "buttonText", "buttonTextCount", "closeable", "disabled", "tabStyle"], outputs: ["buttonClick", "closeClick"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4$1.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1984
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetComponent, decorators: [{
1967
1985
  type: Component,
1968
1986
  args: [{
1969
1987
  selector: 'sky-tabset',
@@ -2002,8 +2020,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
2002
2020
 
2003
2021
  class SkyTabsModule {
2004
2022
  }
2005
- SkyTabsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2006
- SkyTabsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsModule, declarations: [SkyTabButtonComponent,
2023
+ SkyTabsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2024
+ SkyTabsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsModule, declarations: [SkyTabButtonComponent,
2007
2025
  SkyTabComponent,
2008
2026
  SkyTabsetComponent,
2009
2027
  SkyTabsetNavButtonComponent], imports: [CommonModule,
@@ -2015,7 +2033,7 @@ SkyTabsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
2015
2033
  SkyThemeModule], exports: [SkyTabComponent,
2016
2034
  SkyTabsetComponent,
2017
2035
  SkyTabsetNavButtonComponent] });
2018
- SkyTabsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsModule, imports: [[
2036
+ SkyTabsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsModule, imports: [[
2019
2037
  CommonModule,
2020
2038
  RouterModule,
2021
2039
  SkyDropdownModule,
@@ -2024,7 +2042,7 @@ SkyTabsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
2024
2042
  SkyTabsResourcesModule,
2025
2043
  SkyThemeModule
2026
2044
  ]] });
2027
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: SkyTabsModule, decorators: [{
2045
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsModule, decorators: [{
2028
2046
  type: NgModule,
2029
2047
  args: [{
2030
2048
  declarations: [
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-tabs.js","sources":["../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.service.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.component.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.component.html","../../../projects/tabs/src/modules/vertical-tabset/vertical-tab-media-query.service.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset-adapter.service.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tab.component.html","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.service.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form-section.component.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form-section.component.html","../../../projects/tabs/src/modules/shared/sky-tabs-resources.module.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.html","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset-group.component.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset-group.component.html","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.module.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.module.ts","../../../projects/tabs/src/modules/tabs/tab-button.component.ts","../../../projects/tabs/src/modules/tabs/tab-button.component.html","../../../projects/tabs/src/modules/tabs/tabset-permalink.service.ts","../../../projects/tabs/src/modules/tabs/tabset.service.ts","../../../projects/tabs/src/modules/tabs/tab.component.ts","../../../projects/tabs/src/modules/tabs/tab.component.html","../../../projects/tabs/src/modules/tabs/tabset-nav-button.component.ts","../../../projects/tabs/src/modules/tabs/tabset-nav-button.component.html","../../../projects/tabs/src/modules/tabs/tabset-adapter.service.ts","../../../projects/tabs/src/modules/tabs/tabset.component.ts","../../../projects/tabs/src/modules/tabs/tabset.component.html","../../../projects/tabs/src/modules/tabs/tabs.module.ts","../../../projects/tabs/src/skyux-tabs.ts"],"sourcesContent":["import {\n ElementRef,\n Injectable\n} from '@angular/core';\n\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryService\n} from '@skyux/core';\n\nimport {\n BehaviorSubject,\n Subject\n} from 'rxjs';\n\nimport {\n SkyVerticalTabComponent\n} from './vertical-tab.component';\n\nexport const VISIBLE_STATE = 'shown';\nexport const HIDDEN_STATE = 'void';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyVerticalTabsetService {\n\n public activeIndex: number = undefined;\n\n public animationContentVisibleState: string;\n\n public animationTabsVisibleState: string;\n\n public set content(value: ElementRef) {\n this._content = value;\n }\n\n public hidingTabs = new BehaviorSubject(false);\n\n public indexChanged: BehaviorSubject<number> = new BehaviorSubject(undefined);\n\n public maintainTabContent: boolean = false;\n\n public showingTabs = new BehaviorSubject(false);\n\n public switchingMobile: Subject<boolean> = new Subject();\n\n public tabs: Array<SkyVerticalTabComponent> = [];\n\n public tabAdded: Subject<SkyVerticalTabComponent> = new Subject();\n\n public tabClicked: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\n\n private _content: ElementRef;\n\n private _contentAdded: boolean = false;\n\n private _tabsVisible: boolean = false;\n\n private _isMobile: boolean = false;\n\n public constructor(private mediaQueryService: SkyMediaQueryService) {\n this.mediaQueryService.subscribe(breakpoint => {\n const nowMobile = breakpoint === SkyMediaBreakpoints.xs;\n\n if (nowMobile && !this._isMobile) {\n // switching to mobile\n this.switchingMobile.next(true);\n\n if (!this._tabsVisible) {\n this.hidingTabs.next(true);\n }\n\n } else if (!nowMobile && this._isMobile) {\n // switching to widescreen\n this.switchingMobile.next(false);\n\n if (!this._tabsVisible) {\n this.showingTabs.next(true);\n }\n }\n\n this._isMobile = nowMobile;\n });\n }\n\n public addTab(tab: SkyVerticalTabComponent) {\n const index = this.tabs.length;\n tab.index = index;\n\n this.tabs.push(tab);\n\n if (tab.active) {\n this.activateTab(tab);\n }\n\n this.tabAdded.next(tab);\n }\n\n public destroyTab(tab: SkyVerticalTabComponent): void {\n let tabIndex = this.tabs.indexOf(tab);\n if (tabIndex === -1) {\n return;\n }\n\n if (\n this.maintainTabContent &&\n tab.contentRendered &&\n /* istanbul ignore next */\n this._content?.nativeElement.contains(tab.tabContent.nativeElement)\n ) {\n this._content.nativeElement.removeChild(tab.tabContent.nativeElement);\n }\n\n this.tabs.splice(tabIndex, 1);\n // update tab indices\n this.tabs.forEach((tabItem, index) => tabItem.index = index);\n\n if (tab.active) {\n if (!this.maintainTabContent) {\n this.destroyContent();\n }\n // Try selecting the next tab first, and if there's no next tab then\n // try selecting the previous one.\n let newActiveTab = this.tabs[tabIndex] || this.tabs[tabIndex - 1];\n /*istanbul ignore else */\n if (newActiveTab) {\n newActiveTab.activateTab();\n }\n }\n }\n\n public activateTab(tab: SkyVerticalTabComponent) {\n\n // unactivate active tab\n let activeTab = this.tabs.find(t => t.index === this.activeIndex);\n if (activeTab && activeTab.index !== tab.index) {\n activeTab.active = false;\n activeTab.tabDeactivated();\n }\n\n this.activeIndex = tab.index;\n this.tabClicked.next(true);\n this.updateTabClicked();\n }\n\n public activeTab(): SkyVerticalTabComponent {\n return this.tabs.find(t => t.index === this.activeIndex);\n }\n\n public isMobile() {\n return this._isMobile;\n }\n\n public updateContent() {\n if (!this.maintainTabContent) {\n if (!this._contentAdded && this.contentVisible()) {\n // content needs to be moved\n this.moveContent();\n\n } else if (this._contentAdded && !this.contentVisible()) {\n // content hidden\n this._contentAdded = false;\n }\n } else {\n this.tabs.forEach((tab) => {\n if (!tab.contentRendered) {\n this._content.nativeElement.appendChild(tab.tabContent.nativeElement);\n tab.contentRendered = true;\n }\n });\n }\n }\n\n public tabsVisible() {\n return !this.isMobile() || this._tabsVisible;\n }\n\n public contentVisible() {\n return !this.isMobile() || !this._tabsVisible;\n }\n\n public showTabs() {\n this._tabsVisible = true;\n this._contentAdded = false;\n this.animationTabsVisibleState = VISIBLE_STATE;\n this.animationContentVisibleState = HIDDEN_STATE;\n this.showingTabs.next(true);\n }\n\n private destroyContent(): void {\n if (this._content) {\n this._content.nativeElement.innerHTML = '';\n }\n this.content = undefined;\n }\n\n private moveContent() {\n /* istanbul ignore else */\n if (this._content && !this._contentAdded) {\n let activeTab = this.activeTab();\n let activeContent = activeTab ? activeTab.tabContent : undefined;\n\n if (activeContent && activeContent.nativeElement) {\n this._content.nativeElement.appendChild(activeContent.nativeElement);\n activeTab.contentRendered = true;\n this._contentAdded = true;\n }\n }\n }\n\n private updateTabClicked() {\n this._contentAdded = false;\n\n if (this.isMobile()) {\n this._tabsVisible = false;\n this.animationContentVisibleState = VISIBLE_STATE;\n this.animationTabsVisibleState = HIDDEN_STATE;\n this.hidingTabs.next(true);\n }\n\n this.indexChanged.next(this.activeIndex);\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n ElementRef,\n ViewChild,\n EventEmitter,\n Output,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Input\n} from '@angular/core';\n\nimport {\n style,\n trigger,\n transition,\n animate\n} from '@angular/animations';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabsetService,\n HIDDEN_STATE,\n VISIBLE_STATE\n} from './../vertical-tabset/vertical-tabset.service';\n\n/**\n * Creates a container for the sectioned forms.\n */\n@Component({\n selector: 'sky-sectioned-form',\n templateUrl: './sectioned-form.component.html',\n styleUrls: ['./sectioned-form.component.scss'],\n providers: [SkyVerticalTabsetService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(-100%)'}),\n animate('150ms ease-in')\n ])\n ]\n ),\n trigger(\n 'contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(100%)'}),\n animate('150ms ease-in')\n ])\n ]\n )\n ]\n})\nexport class SkySectionedFormComponent implements OnInit, OnDestroy, AfterViewChecked {\n\n /**\n * Indicates whether the sectioned form loads section content during initialization so that it\n * displays content without moving around elements in the content container.\n * @default false\n */\n @Input()\n public maintainSectionContent: boolean = false;\n\n/**\n * Fires when the active tab changes and emits the index of the active\n * section. The index is based on the section's position when the form loads.\n */\n @Output()\n public indexChanged: EventEmitter<number> = new EventEmitter();\n\n public get ariaRole(): string {\n return this.isMobile ? undefined : 'tablist';\n }\n\n @ViewChild('skySectionSideContent')\n public content: ElementRef;\n\n private isMobile = false;\n private _ngUnsubscribe = new Subject();\n\n constructor(\n public tabService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef) {}\n\n public ngOnInit() {\n this.tabService.maintainTabContent = this.maintainSectionContent;\n\n this.tabService.indexChanged\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(index => {\n this.indexChanged.emit(index);\n this.changeRef.markForCheck();\n });\n\n this.tabService.switchingMobile\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.markForCheck();\n });\n\n if (this.tabService.isMobile()) {\n this.isMobile = true;\n this.tabService.animationContentVisibleState = VISIBLE_STATE;\n this.changeRef.markForCheck();\n }\n }\n\n public ngAfterViewChecked() {\n this.tabService.content = this.content;\n this.tabService.updateContent();\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n\n public tabsVisible() {\n this.changeRef.markForCheck();\n return this.tabService.tabsVisible();\n }\n\n public showTabs() {\n this.tabService.showTabs();\n this.changeRef.markForCheck();\n }\n}\n","<div\n aria-orientation=\"vertical\"\n class=\"sky-sectioned-form\"\n [attr.role]=\"ariaRole\"\n (window:resize)=\"tabService.updateContent()\"\n>\n <div\n *ngIf=\"maintainSectionContent || tabsVisible()\"\n class=\"sky-sectioned-form-tabs\"\n [ngClass]=\"{'sky-sectioned-form-tabs-hidden': !tabsVisible()}\"\n [@tabEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainSectionContent || tabService.contentVisible()\"\n class=\"sky-sectioned-form-content sky-padding-even-large\"\n [ngClass]=\"{'sky-sectioned-form-content-hidden': !tabService.contentVisible()}\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #skySectionSideContent\n >\n </div>\n</div>\n\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryListener\n} from '@skyux/core';\n\nimport {\n BehaviorSubject,\n Subscription\n} from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyVerticalTabMediaQueryService {\n\n public get current(): SkyMediaBreakpoints {\n return this._current;\n }\n\n private currentSubject = new BehaviorSubject<SkyMediaBreakpoints>(this.current);\n\n private _current = SkyMediaBreakpoints.xs;\n\n constructor() {\n this.currentSubject.next(this._current);\n }\n\n public subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.currentSubject.subscribe({\n next: (breakpoints: SkyMediaBreakpoints) => {\n listener(breakpoints);\n }\n });\n }\n\n public setBreakpointForWidth(width: number): void {\n let breakpoint: SkyMediaBreakpoints;\n\n if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.xs)) {\n breakpoint = SkyMediaBreakpoints.xs;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.sm)) {\n breakpoint = SkyMediaBreakpoints.sm;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.md)) {\n breakpoint = SkyMediaBreakpoints.md;\n } else {\n breakpoint = SkyMediaBreakpoints.lg;\n }\n\n this._current = breakpoint;\n this.currentSubject.next(this._current);\n }\n\n public isWidthWithinBreakpiont(width: number, breakpoint: SkyMediaBreakpoints): boolean {\n const xsBreakpointMaxPixels = 767;\n const smBreakpointMinPixels = 768;\n const smBreakpointMaxPixels = 991;\n const mdBreakpointMinPixels = 992;\n const mdBreakpointMaxPixels = 1199;\n const lgBreakpointMinPixels = 1200;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n return (width <= xsBreakpointMaxPixels);\n }\n case SkyMediaBreakpoints.sm: {\n return (width >= smBreakpointMinPixels && width <= smBreakpointMaxPixels);\n }\n case SkyMediaBreakpoints.md: {\n return (width >= mdBreakpointMinPixels && width <= mdBreakpointMaxPixels);\n }\n default: {\n return (width >= lgBreakpointMinPixels);\n }\n }\n }\n\n public destroy(): void {\n this.currentSubject.complete();\n }\n}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2\n} from '@angular/core';\n\nimport {\n SkyMediaBreakpoints\n} from '@skyux/core';\n\n@Injectable()\nexport class SkyVerticalTabsetAdapterService {\n private renderer: Renderer2;\n\n constructor(\n private rendererFactory: RendererFactory2\n ) {\n this.renderer = this.rendererFactory.createRenderer(undefined, undefined);\n }\n\n public getWidth(elementRef: ElementRef): number {\n return elementRef.nativeElement.clientWidth;\n }\n\n public setResponsiveClass(element: ElementRef, breakpoint: SkyMediaBreakpoints): void {\n const nativeEl: HTMLElement = element.nativeElement;\n\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-xs');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-sm');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-md');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-lg');\n\n let newClass: string;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n newClass = 'sky-responsive-container-xs';\n break;\n }\n case SkyMediaBreakpoints.sm: {\n newClass = 'sky-responsive-container-sm';\n break;\n }\n case SkyMediaBreakpoints.md: {\n newClass = 'sky-responsive-container-md';\n break;\n }\n default: {\n newClass = 'sky-responsive-container-lg';\n break;\n }\n }\n\n this.renderer.addClass(nativeEl, newClass);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\n\nimport {\n SkyMediaQueryService\n} from '@skyux/core';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabMediaQueryService\n} from './vertical-tab-media-query.service';\n\nimport {\n SkyVerticalTabsetService\n} from './vertical-tabset.service';\n\nimport {\n SkyVerticalTabsetAdapterService\n} from './vertical-tabset-adapter.service';\n\n@Component({\n selector: 'sky-vertical-tab',\n templateUrl: './vertical-tab.component.html',\n styleUrls: ['./vertical-tab.component.scss'],\n providers: [\n SkyVerticalTabMediaQueryService,\n SkyVerticalTabsetAdapterService,\n { provide: SkyMediaQueryService, useExisting: SkyVerticalTabMediaQueryService }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkyVerticalTabComponent implements OnInit, OnDestroy {\n /**\n * Indicates whether the tab is active when the tabset loads.\n */\n @Input()\n public active: boolean = false;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that contains\n * the content that the vertical tab displays, which corresponds to the `tabId`. This property\n * [supports accessibility rules for disclosures](https://www.w3.org/TR/wai-aria-practices-1.1/#disclosure).\n */\n @Input()\n public get ariaControls(): string {\n return this.isMobile ? undefined : this._ariaControls;\n }\n public set ariaControls(value: string) {\n this._ariaControls = value;\n }\n\n /**\n * @internal\n */\n @Input()\n public ariaInvalid: boolean;\n\n /**\n * @internal\n */\n @Input()\n public ariaRequired: boolean;\n\n /**\n * Specifies an ARIA role for the vertical tab\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * by indicating how the tab functions and what it controls. For information about how\n * an ARIA role indicates what an item represents on a web page, see the\n * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).\n * @default \"tab\"\n */\n @Input()\n public get ariaRole(): string {\n if (this.isMobile) {\n return undefined;\n }\n return this._ariaRole || 'tab';\n }\n public set ariaRole(value: string) {\n this._ariaRole = value;\n }\n\n /**\n * Indicates whether to disable the tab.\n */\n @Input()\n public disabled: boolean = false;\n\n /**\n * Indicates whether to indicate that the tab has an error.\n * @internal This is used for sectioned forms and is not currently a supported design for pure vertical tabs.\n */\n @Input()\n public errorIndicator: boolean = false;\n\n /**\n * Displays an item count alongside the tab header to indicate how many list items the tab contains.\n */\n @Input()\n public tabHeaderCount: number;\n\n /**\n * Specifies the tab header.\n * @required\n */\n @Input()\n public tabHeading: string;\n\n /**\n * Indicates whether to display a chevron-right icon in the righthand side of the tab.\n * @internal\n */\n @Input()\n public get showTabRightArrow() {\n return this._showTabRightArrow && this.tabsetService.isMobile();\n }\n\n public set showTabRightArrow(value: boolean) {\n this._showTabRightArrow = value;\n }\n\n /**\n * Specifies an ID for the tab.\n */\n @Input()\n public tabId: string;\n\n public set contentRendered(value: boolean) {\n this._contentRendered = value;\n\n /* istanbul ignore else */\n if (this._contentRendered) {\n // NOTE: Wrapped in a setTimeout here to ensure that everything has completed rendering.\n setTimeout(() => {\n this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));\n });\n }\n }\n\n public get contentRendered(): boolean {\n return this._contentRendered;\n }\n\n public index: number;\n\n @ViewChild('tabContentWrapper')\n public tabContent: ElementRef;\n\n private isMobile = false;\n\n private _ariaControls: string;\n\n private _ariaRole: string;\n\n private _contentRendered: boolean = false;\n\n private _mobileSubscription = new Subject();\n\n private _ngUnsubscribe = new Subject();\n\n private _showTabRightArrow: boolean = false;\n\n constructor(\n private adapterService: SkyVerticalTabsetAdapterService,\n private changeRef: ChangeDetectorRef,\n private tabsetService: SkyVerticalTabsetService,\n private verticalTabMediaQueryService: SkyVerticalTabMediaQueryService\n ) {}\n\n public ngOnInit(): void {\n this.isMobile = this.tabsetService.isMobile();\n this.changeRef.markForCheck();\n\n this.tabsetService.switchingMobile\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.markForCheck();\n });\n\n // Update the breakpoint and responsive class here just as a sanity check since we can not\n // watch for element resizing.\n this.tabsetService.indexChanged\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((index) => {\n if (this.index === index && this.contentRendered) {\n this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));\n }\n });\n\n this.tabsetService.addTab(this);\n }\n\n public ngOnDestroy(): void {\n this._mobileSubscription.unsubscribe();\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n this.tabsetService.destroyTab(this);\n }\n\n public tabIndex(): number {\n if (!this.disabled) {\n return 0;\n } else {\n return -1;\n }\n }\n\n public activateTab(): void {\n if (!this.disabled) {\n this.active = true;\n this.tabsetService.activateTab(this);\n\n this.changeRef.markForCheck();\n }\n }\n\n @HostListener('window:resize')\n public onWindowResize(): void {\n this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));\n }\n\n public tabDeactivated(): void {\n this.changeRef.markForCheck();\n }\n\n private updateBreakpointAndResponsiveClass(width: number): void {\n this.verticalTabMediaQueryService.setBreakpointForWidth(width);\n\n const newBreakpiont = this.verticalTabMediaQueryService.current;\n\n this.adapterService.setResponsiveClass(this.tabContent, newBreakpiont);\n }\n}\n","<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired ? ariaRequired : null\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup.enter)=\"activateTab()\">\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\">\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n\n <sky-icon\n *ngIf=\"showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div\n #tabContentWrapper\n>\n <div\n class=\"sky-vertical-tab-content-pane\"\n [ngClass]=\"{'sky-vertical-tab-hidden': !active}\"\n >\n\n <ng-content></ng-content>\n\n <div>\n\n</div>\n\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n BehaviorSubject\n} from 'rxjs';\n\n@Injectable()\nexport class SkySectionedFormService {\n/**\n * @internal\n */\n public invalidChange: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\n/**\n * @internal\n */\n public requiredChange: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\n\n /**\n * Sets the current section's invalid state based on the `isInvalid` parameter.\n * This method is used within a `sky-sectioned-form-section` element.\n */\n public invalidFieldChanged(isInvalid: boolean): void {\n this.invalidChange.next(isInvalid);\n }\n\n /**\n * Sets the current section's required state based on the `isRequired` parameter.\n * This method is used within a `sky-sectioned-form-section` element.\n */\n public requiredFieldChanged(isRequired: boolean): void {\n this.requiredChange.next(isRequired);\n }\n}\n","import {\n Component,\n Input,\n ViewChild,\n OnInit,\n OnDestroy,\n ChangeDetectorRef\n} from '@angular/core';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabComponent\n} from './../vertical-tabset/vertical-tab.component';\nimport {\n SkySectionedFormService\n} from './sectioned-form.service';\nimport {\n SkyVerticalTabsetService\n} from '../vertical-tabset/vertical-tabset.service';\n\nlet nextId = 0;\n\n/**\n * Creates an individual form to display as a section within the sectioned form.\n */\n@Component({\n selector: 'sky-sectioned-form-section',\n templateUrl: './sectioned-form-section.component.html',\n providers: [SkySectionedFormService],\n styleUrls: ['./sectioned-form-section.component.scss']\n})\nexport class SkySectionedFormSectionComponent implements OnInit, OnDestroy {\n public sectionTabId = `sky-sectioned-form-tab-${++nextId}`;\n public sectionContentId = `sky-sectioned-form-section-${++nextId}`;\n\n/**\n * Specifies the section header.\n * @required\n */\n @Input()\n public heading: string;\n\n/**\n * Indicates the number of items within the section and displays a\n * counter alongside the section header.\n */\n @Input()\n public itemCount: number;\n\n/**\n * Indicates whether the section is active when the form loads.\n * @default false\n */\n @Input()\n public active: boolean;\n\n public get ariaRole(): string {\n return this.isMobile ? undefined : 'tabpanel';\n }\n\n public get ariaLabelledby() {\n return this.isMobile ? undefined : this.sectionTabId;\n }\n\n public fieldRequired: boolean;\n public fieldInvalid: boolean;\n\n @ViewChild(SkyVerticalTabComponent)\n public tab: SkyVerticalTabComponent;\n\n private isMobile = false;\n private _ngUnsubscribe = new Subject();\n\n constructor(\n private sectionedFormService: SkySectionedFormService,\n private tabsetService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef\n ) {}\n\n public ngOnInit() {\n this.isMobile = this.tabsetService.isMobile();\n this.changeRef.detectChanges();\n\n this.tabsetService.switchingMobile\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.detectChanges();\n });\n\n this.sectionedFormService.requiredChange\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((required: boolean) => this.fieldRequired = required);\n\n this.sectionedFormService.invalidChange\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((invalid: boolean) => this.fieldInvalid = invalid);\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n}\n","<sky-vertical-tab\n [active]=\"active\"\n [ariaControls]=\"sectionContentId\"\n [ariaInvalid]=\"fieldInvalid\"\n [ariaRequired]=\"fieldRequired\"\n [errorIndicator]=\"fieldInvalid\"\n [ngClass]=\"{\n 'sky-tab-field-required': fieldRequired\n }\"\n [showTabRightArrow]=\"true\"\n [tabHeaderCount]=\"itemCount\"\n [tabHeading]=\"heading\"\n [tabId]=\"sectionTabId\">\n <div\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.role]=\"ariaRole\"\n [id]=\"sectionContentId\"\n #tabContent>\n <ng-content></ng-content>\n </div>\n</sky-vertical-tab>\n","/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module modules/shared/sky-tabs' schematic.\n * To update this file, simply rerun the command.\n */\n\nimport { NgModule } from '@angular/core';\nimport {\n getLibStringForLocale,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n SKY_LIB_RESOURCES_PROVIDERS\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\"skyux_tab_add\":{\"message\":\"Add tab\"},\"skyux_tab_close\":{\"message\":\"Close {0} tab\"},\"skyux_tabs_navigator_next\":{\"message\":\"Next\"},\"skyux_tabs_navigator_previous\":{\"message\":\"Previous\"},\"skyux_tab_open\":{\"message\":\"Open tab\"},\"skyux_vertical_tabs_show_tabs_text\":{\"message\":\"Tab list\"}},\n};\n\nexport class SkyTabsResourcesProvider implements SkyLibResourcesProvider {\n public getString(localeInfo: SkyAppLocaleInfo, name: string): string {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [{\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyTabsResourcesProvider,\n multi: true\n }]\n})\nexport class SkyTabsResourcesModule { }\n","import {\n Component,\n ElementRef,\n ViewChild,\n Input,\n OnInit,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n AfterViewChecked,\n ChangeDetectorRef,\n OnDestroy\n} from '@angular/core';\n\nimport {\n style,\n trigger,\n transition,\n animate\n} from '@angular/animations';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n take,\n takeUntil\n} from 'rxjs/operators';\n\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport {\n SkyVerticalTabsetService,\n HIDDEN_STATE,\n VISIBLE_STATE\n} from './vertical-tabset.service';\n\n@Component({\n selector: 'sky-vertical-tabset',\n templateUrl: './vertical-tabset.component.html',\n styleUrls: ['./vertical-tabset.component.scss'],\n providers: [SkyVerticalTabsetService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabGroupEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(-100%)'}),\n animate('150ms ease-in')\n ])\n ]\n ),\n trigger(\n 'contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(100%)'}),\n animate('150ms ease-in')\n ])\n ]\n )\n ]\n})\nexport class SkyVerticalTabsetComponent implements OnInit, AfterViewChecked, OnDestroy {\n\n /**\n * Specifies the text to display on the show tabs button on mobile devices.\n */\n @Input()\n public showTabsText: string;\n\n /**\n * Specifies an ARIA role for the vertical tabset\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * by indicating how the tabset functions and what it controls. For information about how\n * an ARIA role indicates what an item represents on a web page, see the\n * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).\n * @default \"tablist\"\n */\n @Input()\n public get ariaRole(): string {\n if (this.isMobile) {\n return undefined;\n }\n return this._ariaRole || 'tablist';\n }\n public set ariaRole(value: string) {\n this._ariaRole = value;\n }\n\n /**\n * Indicates whether the vertical tabset loads tab content during initialization so that it\n * displays content without moving around elements in the content container.\n * @default 'false'\n */\n @Input()\n public maintainTabContent: boolean = false;\n\n /**\n * Fires when the active tab changes. Emits the index of the active tab. The\n * index is based on the tab's position when it loads.\n */\n @Output()\n public activeChange = new EventEmitter<number>();\n\n @ViewChild('contentWrapper')\n public tabGroups: ElementRef;\n\n @ViewChild('skySideContent')\n public content: ElementRef;\n\n private isMobile = false;\n private _ngUnsubscribe = new Subject();\n private _ariaRole: string;\n\n constructor(\n public tabService: SkyVerticalTabsetService,\n private resources: SkyLibResourcesService,\n private changeRef: ChangeDetectorRef) {}\n\n public ngOnInit() {\n this.tabService.maintainTabContent = this.maintainTabContent;\n\n this.tabService.indexChanged\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((index: any) => {\n this.activeChange.emit(index);\n this.changeRef.markForCheck();\n });\n\n this.tabService.switchingMobile\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.markForCheck();\n });\n\n if (this.tabService.isMobile()) {\n this.isMobile = true;\n this.tabService.animationContentVisibleState = VISIBLE_STATE;\n this.changeRef.markForCheck();\n }\n if (!this.showTabsText) {\n this.resources.getString('skyux_vertical_tabs_show_tabs_text')\n .pipe(take(1))\n .subscribe(resource => {\n /* sanity check */\n /* istanbul ignore else */\n if (!this.showTabsText) {\n this.showTabsText = resource;\n }\n });\n }\n }\n\n public ngAfterViewChecked() {\n this.tabService.content = this.content;\n this.tabService.updateContent();\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n}\n"," <div class=\"sky-vertical-tabset\" (window:resize)=\"tabService.updateContent()\">\n <div\n *ngIf=\"maintainTabContent || tabService.tabsVisible()\"\n #contentWrapper\n class=\"sky-vertical-tabset-group-container\"\n [ngClass]=\"{'sky-vertical-tabset-hidden': !tabService.tabsVisible()}\"\n [attr.role]=\"ariaRole\"\n [@tabGroupEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainTabContent || tabService.contentVisible()\"\n class=\"sky-vertical-tabset-content\"\n [ngClass]=\"{'sky-vertical-tabset-content-hidden': !tabService.contentVisible()}\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n >\n <div #skySideContent></div>\n <button\n *ngIf=\"!tabService.tabsVisible()\"\n (click)=\"tabService.showTabs()\"\n class=\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\"\n >\n <sky-icon icon=\"chevron-left\"></sky-icon>\n {{ showTabsText }}\n </button>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Input,\n OnDestroy,\n OnInit,\n QueryList\n} from '@angular/core';\n\nimport {\n animate,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabComponent\n} from './vertical-tab.component';\n\nimport {\n SkyVerticalTabsetService\n} from './vertical-tabset.service';\n\n@Component({\n selector: 'sky-vertical-tabset-group',\n templateUrl: './vertical-tabset-group.component.html',\n styleUrls: ['./vertical-tabset-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabSlide', [\n transition(':enter', [\n style({\n height: '0',\n visibility: 'hidden'\n }),\n animate('150ms ease-in', style({\n height: '*',\n visibility: 'visible'\n }))\n ]),\n transition(':leave', [\n style({\n height: '*',\n visibility: 'visible'\n }),\n animate('150ms ease-in', style({\n height: '0',\n visibility: 'hidden'\n }))\n ])\n ])\n ]\n})\nexport class SkyVerticalTabsetGroupComponent implements OnInit, OnDestroy {\n\n /**\n * Indicates whether to disable the ability to expand and collapse the group.\n * @default \"false\"\n */\n @Input()\n public disabled: boolean;\n\n /**\n * Specifies the header for the collapsible group of tabs.\n */\n @Input()\n public groupHeading: string;\n\n /**\n * Indicates whether the collapsible group is expanded.\n * @default \"false\"\n */\n @Input()\n public set open(value: boolean) {\n this._open = value;\n }\n\n public get open(): boolean {\n return !this.disabled && this._open;\n }\n\n @ContentChildren(SkyVerticalTabComponent)\n private tabs: QueryList<SkyVerticalTabComponent>;\n\n private ngUnsubscribe = new Subject();\n\n private openBeforeTabsHidden: boolean = false;\n\n private _open: boolean = false;\n\n constructor(\n private tabService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef\n ) {}\n\n public ngOnInit(): void {\n this.tabService.hidingTabs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.tabsHidden);\n\n this.tabService.showingTabs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.tabsShown);\n\n this.tabService.tabClicked\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.tabClicked);\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public toggleMenuOpen(): void {\n if (!this.disabled) {\n this.open = !this.open;\n }\n\n this.changeRef.markForCheck();\n }\n\n public subMenuOpen(): boolean {\n return this.tabs && (this.tabs.find(t => t.active) !== undefined);\n }\n\n public tabClicked = () => {\n this.changeRef.markForCheck();\n }\n\n public tabsHidden = () => {\n // this fixes an animation bug with ngIf when the parent component goes from visible to hidden\n this.openBeforeTabsHidden = this.open;\n this.open = false;\n this.changeRef.markForCheck();\n }\n\n public tabsShown = () => {\n this.open = this.openBeforeTabsHidden;\n this.changeRef.markForCheck();\n }\n}\n","<div class=\"sky-vertical-tabset-group\">\n <div\n class=\"sky-vertical-tabset-group-header sky-padding-even-default\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-sub-open sky-emphasized': subMenuOpen(),\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n (click)=\"toggleMenuOpen()\"\n (keyup.enter)=\"toggleMenuOpen()\"\n [tabIndex]=\"-1\"\n >\n {{ groupHeading }}\n <sky-chevron *skyThemeIf=\"'default'\"\n class=\"sky-vertical-tabset-group-header-chevron\"\n [direction]=\"open ? 'up' : 'down'\"\n [disabled]=\"disabled\"\n (directionChange)=\"toggleMenuOpen()\"\n (keyup.enter)=\"$event.stopPropagation()\"\n >\n </sky-chevron>\n <ng-container *skyThemeIf=\"'modern'\">\n <button *ngIf=\"!open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-right\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </ng-container>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n *ngIf=\"open\"\n [@tabSlide]\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n NgModule\n} from '@angular/core';\n\nimport {\n CommonModule\n} from '@angular/common';\n\nimport {\n SkyChevronModule,\n SkyIconModule,\n SkyStatusIndicatorModule\n} from '@skyux/indicators';\n\nimport {\n SkyThemeModule\n} from '@skyux/theme';\n\nimport {\n SkyTabsResourcesModule\n} from '../shared/sky-tabs-resources.module';\n\nimport {\n SkyVerticalTabsetComponent\n} from './vertical-tabset.component';\n\nimport {\n SkyVerticalTabComponent\n} from './vertical-tab.component';\n\nimport {\n SkyVerticalTabsetGroupComponent\n} from './vertical-tabset-group.component';\n\n@NgModule({\n declarations: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent\n ],\n imports: [\n CommonModule,\n SkyChevronModule,\n SkyIconModule,\n SkyStatusIndicatorModule,\n SkyTabsResourcesModule,\n SkyThemeModule\n ],\n exports: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent\n ]\n})\nexport class SkyVerticalTabsetModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SkySectionedFormComponent } from './sectioned-form.component';\nimport { SkySectionedFormSectionComponent } from './sectioned-form-section.component';\nimport { SkyVerticalTabsetModule } from '../vertical-tabset/vertical-tabset.module';\nimport { SkyCheckboxModule } from '@skyux/forms';\n\n@NgModule({\n declarations: [\n SkySectionedFormComponent,\n SkySectionedFormSectionComponent\n ],\n imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyVerticalTabsetModule\n ],\n exports: [\n SkySectionedFormComponent,\n SkySectionedFormSectionComponent\n ]\n})\nexport class SkySectionedFormModule { }\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {\n SkyTabsetStyle\n} from './tabset-style';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-tab-button',\n templateUrl: './tab-button.component.html',\n styleUrls: ['./tab-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SkyTabButtonComponent {\n\n @Input()\n public active: boolean;\n\n @Input()\n public ariaControls: string;\n\n @Input()\n public buttonHref: string;\n\n @Input()\n public buttonId: string;\n\n @Input()\n public buttonText: string;\n\n @Input()\n public buttonTextCount: string;\n\n @Input()\n public closeable: boolean;\n\n @Input()\n public disabled: boolean;\n\n @Input()\n public tabStyle: SkyTabsetStyle;\n\n @Output()\n public buttonClick = new EventEmitter<void>();\n\n @Output()\n public closeClick = new EventEmitter<void>();\n\n public onButtonClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.buttonClick.emit();\n event.preventDefault();\n }\n }\n\n public onButtonEnterKeyDown(event: any): void {\n this.onButtonClick(event);\n }\n\n public onCloseClick(event: any): void {\n this.closeClick.emit();\n\n // Prevent the click event from bubbling up to the anchor tag;\n // otherwise it will trigger a page refresh.\n event.stopPropagation();\n event.preventDefault();\n }\n}\n","<div\n class=\"sky-btn-tab-wrapper\"\n [ngClass]=\"{\n 'sky-btn-tab-wrapper-selected': active,\n 'sky-btn-tab-wrapper-disabled': disabled\n }\"\n>\n <a\n class=\"sky-btn-tab\"\n role=\"tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"active\"\n [attr.href]=\"buttonHref\"\n [id]=\"buttonId\"\n [ngClass]=\"{\n 'sky-btn-tab-wizard': tabStyle === 'wizard',\n 'sky-btn-tab-selected': active,\n 'sky-btn-tab-disabled': disabled,\n 'sky-tab-btn-closeable': closeable\n }\"\n [tabindex]=\"disabled ? '-1' : '0'\"\n (click)=\"onButtonClick($event)\"\n (keydown.enter)=\"onButtonEnterKeyDown($event)\"\n >\n <span\n class=\"sky-tab-heading\"\n >\n {{ buttonText }}\n <span *ngIf=\"buttonTextCount !== undefined\"\n class=\"sky-tab-header-count\"\n >\n {{ buttonTextCount }}\n </span>\n </span>\n </a>\n\n <button *ngIf=\"closeable\"\n class=\"sky-btn-tab-close\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_close' | skyLibResources:buttonText\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-tab-close-disabled': disabled\n }\"\n (click)=\"onCloseClick($event)\"\n >\n <sky-icon\n icon=\"remove\"\n ></sky-icon>\n </button>\n</div>\n","import {\n Location\n} from '@angular/common';\n\nimport {\n Injectable,\n OnDestroy\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router\n} from '@angular/router';\n\nimport {\n Observable,\n Subject,\n SubscriptionLike\n} from 'rxjs';\n\n/**\n * @internal\n */\ninterface PermalinkParams {\n [_: string]: string;\n}\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetPermalinkService implements OnDestroy {\n\n public get popStateChange(): Observable<void> {\n return this._popStateChange.asObservable();\n }\n\n private _popStateChange = new Subject<void>();\n\n private subscription: SubscriptionLike;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private location: Location,\n private router: Router\n ) { }\n\n public ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n public init(): void {\n this.subscription = this.location.subscribe(() => {\n this._popStateChange.next();\n });\n }\n\n /**\n * Returns the value of a URL query param.\n */\n public getParam(name: string): string {\n return this.getParams()[name];\n }\n\n /**\n * Sets the value of a URL query param.\n */\n public setParam(name: string, value: string | null): void {\n const params = this.getParams();\n\n if (value === null) {\n delete params[name];\n } else {\n params[name] = value;\n }\n\n // Update the URL without triggering a navigation state change.\n // See: https://stackoverflow.com/a/46486677\n const url = this.router.createUrlTree(['.'], {\n relativeTo: this.activatedRoute,\n queryParams: params,\n queryParamsHandling: 'merge'\n }).toString();\n\n // Abort redirect if the current URL is equal to the new URL.\n if (this.location.isCurrentPathEqualTo(url)) {\n return;\n }\n\n this.location.go(url);\n }\n\n /**\n * Removes the provided query param from the URL.\n */\n public clearParam(name: string): void {\n /*tslint:disable-next-line:no-null-keyword*/\n this.setParam(name, null);\n }\n\n /**\n * Returns a relative URL that includes the provided query parameter. The value is inteded to be\n * used by an HTML anchor element.\n */\n public getParamHref(name: string, value: string): string | null {\n if (!name) {\n /*tslint:disable-next-line:no-null-keyword*/\n return null;\n }\n\n const params = this.getParams();\n params[name] = value;\n\n const baseUrl = this.location.path().split('?')[0];\n const paramString = Object.keys(params).map(k => `${k}=${params[k]}`).join('&');\n\n return this.location.prepareExternalUrl(`${baseUrl}?${paramString}`);\n }\n\n /**\n * Converts the provided string into a value that can be safely used in a URL.\n */\n public urlify(value: string): string {\n if (!value) {\n return '';\n }\n\n const sanitized = value.toLowerCase()\n\n // Remove special characters.\n .replace(/[\\_\\~\\`\\@\\!\\#\\$\\%\\^\\&\\*\\(\\)\\[\\]\\{\\}\\;\\:\\'\\/\\\\\\<\\>\\,\\.\\?\\=\\+\\|\"]/g, '')\n\n // Replace space characters with a dash.\n .replace(/\\s/g, '-')\n\n // Remove any double-dashes.\n .replace(/--/g, '-');\n\n return sanitized;\n }\n\n /**\n * Returns all query params that exist in the current URL.\n */\n private getParams(): PermalinkParams {\n const params: PermalinkParams = {};\n\n const path = this.location.path();\n if (path.indexOf('?') === -1) {\n return params;\n }\n\n const existingParamPairs = path.split('?')[1].split('&');\n existingParamPairs.forEach((pair) => {\n const fragments = pair.split('=');\n params[fragments[0]] = decodeURIComponent(fragments[1]);\n });\n\n return params;\n }\n\n}\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n BehaviorSubject,\n Observable,\n Subject\n} from 'rxjs';\n\nimport {\n SkyTabIndex\n} from './tab-index';\n\nimport {\n SkyTabsetActiveTabUnregisteredArgs\n} from './tabset-active-tab-unregistered-args';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetService {\n\n public get activeTabUnregistered(): Observable<SkyTabsetActiveTabUnregisteredArgs> {\n return this._activeTabUnregistered.asObservable();\n }\n\n public get activeTabIndex(): Observable<SkyTabIndex> {\n return this._activeTabIndex.asObservable();\n }\n\n public currentActiveTabIndex: SkyTabIndex = 0;\n\n private _activeTabIndex = new BehaviorSubject<SkyTabIndex>(0);\n\n private _activeTabUnregistered = new Subject<SkyTabsetActiveTabUnregisteredArgs>();\n\n private tabs: {\n tabIndex: SkyTabIndex;\n }[] = [];\n\n private tabCounter = 0;\n\n /**\n * Sets the active tab by its unique `tabIndex` property.\n */\n public setActiveTabIndex(value: SkyTabIndex, config = {\n emitChange: true\n }): void {\n if (\n value !== undefined &&\n !this.tabIndexesEqual(value, this.currentActiveTabIndex)\n ) {\n this.currentActiveTabIndex = value;\n /* istanbul ignore else */\n if (config.emitChange) {\n this._activeTabIndex.next(value);\n }\n }\n }\n\n /**\n * Registers a tab component.\n */\n public registerTab(tabIndex?: SkyTabIndex): SkyTabIndex {\n if (tabIndex === undefined) {\n tabIndex = this.tabCounter;\n this.tabCounter++;\n }\n\n this.tabs.push({ tabIndex });\n\n return tabIndex;\n }\n\n public updateTabIndex(currentTabIndex: SkyTabIndex, newTabIndex: SkyTabIndex): void {\n const found = this.tabs.find(tab => this.tabIndexesEqual(tab.tabIndex, currentTabIndex));\n found.tabIndex = newTabIndex;\n }\n\n /**\n * Unregisters a tab component.\n */\n public unregisterTab(tabIndex: SkyTabIndex): void {\n const index = this.tabs.findIndex(tab => this.tabIndexesEqual(tab.tabIndex, tabIndex));\n\n // Notify the tabset component when an active tab is unregistered.\n if (this.isTabIndexActive(this.tabs[index].tabIndex)) {\n this._activeTabUnregistered.next({\n arrayIndex: index\n });\n }\n\n this.tabs.splice(index, 1);\n }\n\n /**\n * Unregisters all tab components at once.\n */\n public unregisterAll(): void {\n this.tabs = [];\n }\n\n /**\n * Compares two tab indexes and returns `true` if they are equal.\n */\n public tabIndexesEqual(tabIndex1: SkyTabIndex, tabIndex2: SkyTabIndex): boolean {\n return (\n tabIndex1 === tabIndex2 ||\n +tabIndex1 === +tabIndex2\n );\n }\n\n /**\n * Verifies if a provided tab index is registered.\n */\n public isValidTabIndex(tabIndex: SkyTabIndex): boolean {\n return this.tabs.some(tab => this.tabIndexesEqual(tab.tabIndex, tabIndex));\n }\n\n /**\n * Activates the first registered tab.\n */\n public activateFirstTab(): SkyTabIndex | undefined {\n const firstTabIndex = this.tabs[0] && this.tabs[0].tabIndex;\n if (firstTabIndex !== undefined) {\n this.setActiveTabIndex(firstTabIndex);\n return firstTabIndex;\n }\n }\n\n /**\n * Activates the next registered tab, or the previous one based on a provided array index.\n */\n public activateNearestTab(arrayIndex: number): void {\n const newActiveTab = this.tabs[arrayIndex] || this.tabs[arrayIndex - 1];\n if (newActiveTab) {\n this.currentActiveTabIndex = newActiveTab.tabIndex;\n }\n }\n\n private isTabIndexActive(tabIndex: SkyTabIndex): boolean {\n return this.tabIndexesEqual(tabIndex, this.currentActiveTabIndex);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nimport {\n BehaviorSubject,\n Observable\n} from 'rxjs';\n\nimport {\n SkyTabIndex\n} from './tab-index';\n\nimport {\n SkyTabsetPermalinkService\n} from './tabset-permalink.service';\n\nimport {\n SkyTabsetService\n} from './tabset.service';\n\nlet nextId = 0;\n\n@Component({\n selector: 'sky-tab',\n templateUrl: './tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkyTabComponent implements OnChanges, OnDestroy {\n\n /**\n * Indicates whether the tab is active when the tabset loads. After initialization, the `active`\n * property on the tabset component should be used to set the active tab.\n * @default false\n */\n @Input()\n public set active(value: boolean) {\n if (\n value !== undefined &&\n value !== this._active\n ) {\n this._active = value;\n this._activeChange.next();\n }\n }\n\n public get active(): boolean {\n return this._active || false;\n }\n\n public get activeChange(): Observable<void> {\n return this._activeChange.asObservable();\n }\n\n /**\n * Indicates whether to disable the tab.\n * @default false\n */\n @Input()\n public disabled: boolean;\n\n /**\n * Specifies a custom query parameter value for the tab.\n * This works in conjunction with the tabset's `permalinkId` to distinguish\n * the tab's unique state in the URL by generating a query parameter that is\n * written as `?<queryParam>-active-tab=<sanitized-tab-heading`.\n * By default, the query parameter's value is parsed automatically from the tab's heading text.\n */\n @Input()\n public set permalinkValue(value: string) {\n this._permalinkValue = this.permalinkService.urlify(value);\n }\n\n public get permalinkValue(): string {\n return this._permalinkValue || this.permalinkService.urlify(this.tabHeading);\n }\n\n /**\n * Displays a counter beside the tab header.\n */\n @Input()\n public tabHeaderCount: string;\n\n /**\n * Specifies the tab header.\n * When using tabs as the main navigation on a page,\n * use [the Angular `Title` service](https://angular.io/docs/ts/latest/cookbook/set-document-title.html)\n * and [the SKY UX `title` configuration property](https://developer.blackbaud.com/skyux/learn/reference/configuration#app)\n * to reflect the tab header in the page title.\n * @required\n */\n @Input()\n public tabHeading: string;\n\n /**\n * Specifies a unique identifier for the tab.\n * If not defined, the identifier is set to the position of the tab on load, starting with `0`.\n */\n @Input()\n public set tabIndex(value: SkyTabIndex) {\n if (\n value !== this._tabIndex &&\n value !== undefined &&\n this._tabIndex !== undefined\n ) {\n this.tabsetService.updateTabIndex(this._tabIndex, value);\n this._tabIndexChange.next(value);\n }\n\n this._tabIndex = value;\n }\n\n public get tabIndex(): SkyTabIndex {\n return this._tabIndex;\n }\n\n /**\n * Fires when users click the button to close the tab.\n * The close button is added to the tab when you specify a listener for this event.\n */\n @Output()\n public close = new EventEmitter<void>();\n\n public get closeable(): boolean {\n return this.close.observers.length > 0;\n }\n\n /**\n * Alerts the tabset component when this component has changes that need to be reflected in the UI.\n */\n public get stateChange(): Observable<void> {\n return this._stateChange.asObservable();\n }\n\n public get tabIndexChange(): Observable<SkyTabIndex> {\n return this._tabIndexChange.asObservable();\n }\n\n public showContent: boolean = false;\n\n public tabButtonId: string;\n\n public tabPanelId: string;\n\n private _active: boolean;\n\n private _activeChange = new BehaviorSubject<void>(undefined);\n\n private _permalinkValue: string;\n\n private _stateChange = new BehaviorSubject<void>(undefined);\n\n private _tabIndex: SkyTabIndex;\n\n private _tabIndexChange = new BehaviorSubject<SkyTabIndex>(undefined);\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private permalinkService: SkyTabsetPermalinkService,\n private tabsetService: SkyTabsetService\n ) {\n const id = nextId++;\n this.tabPanelId = `sky-tab-${id}`;\n this.tabButtonId = `${this.tabPanelId}-nav-btn`;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.disabled && !changes.disabled.firstChange ||\n changes.tabHeading && !changes.tabHeading.firstChange ||\n changes.tabHeaderCount && !changes.tabHeaderCount.firstChange ||\n changes.permalinkValue && !changes.permalinkValue.firstChange\n ) {\n this._stateChange.next();\n }\n }\n\n public ngOnDestroy(): void {\n this._stateChange.complete();\n this.tabsetService.unregisterTab(this.tabIndex);\n }\n\n public init(): void {\n this._tabIndex = this.tabsetService.registerTab(this.tabIndex);\n }\n\n public activate(): void {\n this._active = true;\n this.showContent = true;\n this.changeDetector.markForCheck();\n }\n\n public deactivate(): void {\n this._active = false;\n this.showContent = false;\n this.changeDetector.markForCheck();\n }\n\n}\n","<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n>\n <ng-content></ng-content>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input\n} from '@angular/core';\n\nimport {\n SkyLibResourcesService\n} from '@skyux/i18n';\n\nimport {\n forkJoin\n} from 'rxjs';\n\nimport {\n take\n} from 'rxjs/operators';\n\nimport {\n SkyTabsetComponent\n} from './tabset.component';\n\nimport {\n SkyTabComponent\n} from './tab.component';\n\nconst buttonTypeNext = 'next';\n\nconst buttonTypePrevious = 'previous';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-tabset-nav-button',\n templateUrl: './tabset-nav-button.component.html'\n})\nexport class SkyTabsetNavButtonComponent implements AfterViewInit {\n\n @Input()\n public tabset: SkyTabsetComponent;\n\n @Input()\n public buttonType: string;\n\n @Input()\n public set buttonText(value: string) {\n this._buttonText = value;\n }\n\n public get buttonText(): string {\n if (this._buttonText) {\n return this._buttonText;\n }\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n return this.previousButtonText;\n case buttonTypeNext:\n return this.nextButtonText;\n /* istanbul ignore next */\n default:\n return '';\n }\n }\n\n public get disabled(): boolean {\n let tabToSelect: SkyTabComponent;\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n tabToSelect = this.previousTab;\n break;\n case buttonTypeNext:\n tabToSelect = this.nextTab;\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n\n return !tabToSelect || tabToSelect.disabled;\n }\n\n private get selectedTab(): SkyTabComponent {\n let selectedTab: SkyTabComponent;\n\n if (this.tabset && this.tabset.tabs) {\n selectedTab = this.tabset.tabs.find((tab) => tab.tabIndex === this.tabset.lastActiveTabIndex);\n }\n\n return selectedTab;\n }\n\n private get nextTab(): SkyTabComponent {\n let selectedTab = this.selectedTab;\n\n if (selectedTab) {\n let tabs = this.tabset.tabs.toArray();\n return tabs[tabs.indexOf(selectedTab) + 1];\n }\n\n return undefined;\n }\n\n private get previousTab(): SkyTabComponent {\n let selectedTab = this.selectedTab;\n\n if (selectedTab) {\n let tabs = this.tabset.tabs.toArray();\n return tabs[tabs.indexOf(selectedTab) - 1];\n }\n\n return undefined;\n }\n\n private _buttonText: string;\n private previousButtonText: string;\n private nextButtonText: string;\n\n constructor(private resourceService: SkyLibResourcesService, private changeDetector: ChangeDetectorRef) { }\n\n public ngAfterViewInit() {\n forkJoin([\n this.resourceService.getString('skyux_tabs_navigator_previous'),\n this.resourceService.getString('skyux_tabs_navigator_next')\n ])\n .pipe(take(1))\n .subscribe(resources => {\n this.previousButtonText = resources[0];\n this.nextButtonText = resources[1];\n this.changeDetector.detectChanges();\n });\n }\n\n public buttonClick() {\n let tabToSelect: SkyTabComponent;\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n tabToSelect = this.previousTab;\n break;\n case buttonTypeNext:\n tabToSelect = this.nextTab;\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n\n /* istanbul ignore else */\n if (tabToSelect && !tabToSelect.disabled) {\n this.tabset.active = tabToSelect.tabIndex;\n }\n }\n}\n","<button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"buttonClick()\"\n>\n {{ buttonText }}\n</button>\n","import {\n ElementRef,\n Injectable\n} from '@angular/core';\n\nimport {\n BehaviorSubject,\n Observable\n} from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetAdapterService {\n\n public get overflowChange(): Observable<boolean> {\n return this._overflowChange.asObservable();\n }\n\n private currentOverflow: boolean;\n\n private tabsetRef: ElementRef;\n\n private tabsOffsetLeft: number;\n\n private _overflowChange = new BehaviorSubject<boolean>(false);\n\n public registerTabset(tabsetRef: ElementRef): void {\n this.tabsetRef = tabsetRef;\n this.tabsOffsetLeft = this.getTabsOffsetLeft(tabsetRef.nativeElement);\n }\n\n /**\n * Detects if the tab buttons are wider than the tabset container.\n */\n public detectOverflow(): void {\n const nativeElement = this.tabsetRef.nativeElement;\n\n const tabsetRect = nativeElement\n .querySelector('.sky-tabset')\n .getBoundingClientRect();\n\n const tabButtonsRect = nativeElement\n .querySelector('.sky-tabset-tabs')\n .getBoundingClientRect();\n\n const tabExtraButtonsRect = nativeElement\n .querySelector('.sky-tabset-btns')\n .getBoundingClientRect();\n\n const tabButtonsWidth = tabButtonsRect.width + tabExtraButtonsRect.width + this.tabsOffsetLeft;\n\n const newOverflow = (tabButtonsWidth > tabsetRect.width);\n if (this.currentOverflow !== newOverflow) {\n this.currentOverflow = newOverflow;\n this._overflowChange.next(this.currentOverflow);\n }\n }\n\n /**\n * Returns the number of pixels to the left of the first tab.\n */\n private getTabsOffsetLeft(tabsetEl: HTMLElement): number {\n const tabsetRect = tabsetEl.getBoundingClientRect();\n\n // The dropdown element is the first \"tab\" and always exists in the DOM, even when hidden.\n const firstTabRect = tabsetEl.querySelector('.sky-tabset-dropdown').getBoundingClientRect();\n\n return firstTabRect.left - tabsetRect.left;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {\n combineLatest,\n race,\n Subject\n} from 'rxjs';\n\nimport {\n distinctUntilChanged,\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyTabIndex\n} from './tab-index';\n\nimport {\n SkyTabsetStyle\n} from './tabset-style';\n\nimport {\n SkyTabComponent\n} from './tab.component';\n\nimport {\n SkyTabsetAdapterService\n} from './tabset-adapter.service';\n\nimport {\n SkyTabsetButtonsDisplayMode\n} from './tabset-buttons-display-mode';\n\nimport {\n SkyTabsetPermalinkService\n} from './tabset-permalink.service';\n\nimport {\n SkyTabsetService\n} from './tabset.service';\n\nimport {\n SkyTabsetTabIndexesChange\n} from './tabset-tab-indexes-change';\n\n/**\n * @internal\n */\ninterface TabButtonViewModel {\n active: boolean;\n ariaControls: string;\n buttonHref: string;\n buttonId: string;\n buttonText: string;\n buttonTextCount: string;\n closeable: boolean;\n disabled: boolean;\n tabIndex: SkyTabIndex;\n}\n\n@Component({\n selector: 'sky-tabset',\n styleUrls: ['./tabset.component.scss'],\n templateUrl: './tabset.component.html',\n providers: [\n SkyTabsetAdapterService,\n SkyTabsetPermalinkService,\n SkyTabsetService\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SkyTabsetComponent implements AfterViewInit, OnDestroy {\n\n /**\n * Activates a tab by its `tabIndex` property.\n */\n @Input()\n public set active(value: SkyTabIndex) {\n if (\n value === undefined ||\n this.tabsetService.tabIndexesEqual(value, this._active)\n ) {\n return;\n }\n\n this._active = value;\n\n if (this.tabs) {\n this.tabsetService.setActiveTabIndex(value);\n } else {\n // On init, wait for children tabs to render before broadcasting the active tab index.\n setTimeout(() => {\n if (this.tabsetService.isValidTabIndex(value)) {\n // On init, yield to the permalink ID, if it exists.\n if (this.getActiveTabIndexByPermalinkId() === undefined) {\n this.tabsetService.setActiveTabIndex(value);\n }\n } else {\n // Activate the first tab if the new tab index is invalid.\n this._active = this.tabsetService.activateFirstTab();\n }\n });\n }\n }\n\n public get active(): SkyTabIndex {\n return this._active;\n }\n\n /**\n * Specifies an ARIA label for the tabset. This sets the tabset's `aria-label` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset includes a visible label, use `ariaLabelledBy` instead.\n */\n @Input()\n public ariaLabel: string;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that labels\n * the tabset. This sets the tabset's `aria-labelledby` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset does not include a visible label, use `ariaLabel` instead.\n */\n @Input()\n public ariaLabelledBy: string;\n\n /**\n * Distinguishes a tabset's unique state in the URL by generating a query parameter\n * that is written as `?<queryParam>-active-tab=<sanitized-tab-heading>`.\n * The query parameter's value is parsed automatically from the selected tab's heading text,\n * but you can supply a custom query parameter value for each tab with its `permalinkValue`.\n */\n @Input()\n public set permalinkId(value: string) {\n if (!value) {\n return;\n }\n\n const sanitized = this.permalinkService.urlify(value);\n this._permalinkId = `${sanitized}-active-tab`;\n }\n\n public get permalinkId(): string {\n return this._permalinkId || '';\n }\n\n /**\n * Specifies the behavior for a series of tabs.\n * @deprecated The property was designed to create wizards by setting tabStyle=\"wizard\" on tabsets in modals,\n * but this wizard implementation was replaced by the\n * [progress indicator component](https://developer.blackbaud.com/skyux/components/progress-indicator).\n * @default 'tabs'\n */\n @Input()\n public set tabStyle(value: SkyTabsetStyle) {\n /*istanbul ignore else*/\n if (value && value.toLowerCase() === 'wizard') {\n console.warn(\n 'The tabset wizard is deprecated. Please implement the new approach using ' +\n 'progress indicator as documented here: https://developer.blackbaud.com/skyux/components/wizard.'\n );\n }\n\n this._tabStyle = value;\n }\n\n public get tabStyle(): SkyTabsetStyle {\n return this._tabStyle || 'tabs';\n }\n\n /**\n * Fires when the active tab changes. This event emits the index of the active tab.\n */\n @Output()\n public activeChange = new EventEmitter<SkyTabIndex>();\n\n /**\n * Fires when users click the button to add a new tab.\n * The new tab button is added to the tab area when you specify a listener for this event.\n */\n @Output()\n public newTab = new EventEmitter<void>();\n\n /**\n * Fires when users click the button to open a tab.\n * The open tab button is added to the tab area when you specify a listener for this event.\n */\n @Output()\n public openTab = new EventEmitter<void>();\n\n /**\n * Fires when any tab's `tabIndex` value changes.\n */\n @Output()\n public tabIndexesChange = new EventEmitter<SkyTabsetTabIndexesChange>();\n\n public set tabDisplayMode(value: SkyTabsetButtonsDisplayMode) {\n this._tabDisplayMode = value;\n this.changeDetector.markForCheck();\n }\n\n public get tabDisplayMode(): SkyTabsetButtonsDisplayMode {\n return this._tabDisplayMode || 'tabs';\n }\n\n @ContentChildren(SkyTabComponent)\n public tabs: QueryList<SkyTabComponent>;\n\n public dropdownTriggerButtonText: string;\n\n /**\n * This property is used by the deprecated tabset-nav-button component.\n * @internal\n */\n public lastActiveTabIndex: SkyTabIndex;\n\n public tabButtons: TabButtonViewModel[] = [];\n\n private ngUnsubscribe = new Subject<void>();\n\n private tabComponentsStateChangeUnsubscribe = new Subject<void>();\n\n private _active: SkyTabIndex;\n\n private _permalinkId: string;\n\n private _tabDisplayMode: SkyTabsetButtonsDisplayMode;\n\n private _tabStyle: SkyTabsetStyle;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private adapterService: SkyTabsetAdapterService,\n private permalinkService: SkyTabsetPermalinkService,\n private tabsetService: SkyTabsetService\n ) { }\n\n public ngAfterViewInit(): void {\n\n this.initTabComponents();\n this.listenTabComponentsStructuralChange();\n\n const initialTabIndex = this.getInitialTabIndex();\n this.tabsetService.setActiveTabIndex(initialTabIndex);\n\n this.listenTabButtonsOverflowChange();\n this.listenLocationPopStateChange();\n\n // If the currently active tab is getting unregistered, activate the next one.\n this.tabsetService.activeTabUnregistered\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(tab => {\n // Wait for the new tabs to render before activating.\n setTimeout(() => {\n this.tabsetService.activateNearestTab(tab.arrayIndex);\n });\n });\n\n // Let the tabset render the initial active index before listening for changes.\n setTimeout(() => {\n this.listenTabComponentsStateChange();\n this.listenActiveIndexChange();\n this.permalinkService.init();\n });\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.unsubscribeTabComponentsStateChange();\n this.permalinkService.clearParam(this.permalinkId);\n }\n\n public onWindowResize(): void {\n this.adapterService.detectOverflow();\n }\n\n public onTabCloseClick(tabButton: TabButtonViewModel): void {\n const tabComponent = this.tabs.find(tab =>\n this.tabsetService.tabIndexesEqual(tab.tabIndex, tabButton.tabIndex)\n );\n\n tabComponent.close.emit();\n }\n\n public onTabButtonClick(tabButton: TabButtonViewModel): void {\n this.tabsetService.setActiveTabIndex(tabButton.tabIndex);\n }\n\n public onNewTabClick(): void {\n this.newTab.emit();\n }\n\n public onOpenTabClick(): void {\n this.openTab.emit();\n }\n\n /**\n * Sets the initial active tab index based on the following criteria.\n * 1. Does the URL include a query param that reflects this tabset's active tab?\n * 2. Does one of the tab components have their `active` property set to `true`?\n * 3. Is the tabset component's `active` property set to a specific tab index?\n */\n private getInitialTabIndex(): SkyTabIndex {\n let activeIndex: SkyTabIndex = this.getActiveTabIndexByPermalinkId();\n if (activeIndex === undefined) {\n activeIndex = this.getActiveTabComponent()?.tabIndex;\n if (activeIndex === undefined) {\n activeIndex = this.active;\n }\n }\n\n return activeIndex;\n }\n\n private listenActiveIndexChange(): void {\n this.tabsetService.activeTabIndex\n .pipe(\n distinctUntilChanged(),\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe(activeIndex => {\n this.updateTabsetComponent(activeIndex);\n });\n }\n\n private listenTabComponentsStructuralChange(): void {\n this.tabs.changes\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.resetTabComponents();\n });\n }\n\n private listenTabComponentsStateChange(): void {\n combineLatest(this.tabs.map(tab => tab.activeChange))\n .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n const tabIndex = this.getActiveTabComponent()?.tabIndex;\n this.tabsetService.setActiveTabIndex(tabIndex);\n });\n });\n\n combineLatest(this.tabs.map(tab => tab.tabIndexChange))\n .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))\n .subscribe(() => {\n // Don't emit the first change.\n if (this.lastActiveTabIndex !== undefined) {\n // Wait for the tab components to render changes before updating the view.\n setTimeout(() => {\n this.updateTabsetComponent(this.tabsetService.currentActiveTabIndex, true);\n this.emitTabIndexChange();\n });\n }\n });\n\n combineLatest(this.tabs.map(tab => tab.stateChange))\n .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n this.updateTabsetComponent(this.tabsetService.currentActiveTabIndex, true);\n });\n });\n }\n\n private initTabComponents(): void {\n this.tabs.forEach(tab => tab.init());\n }\n\n private resetTabComponents(): void {\n this.unsubscribeTabComponentsStateChange();\n this.tabsetService.unregisterAll();\n\n // If there are no tab components, do a hard reset of the view.\n if (this.tabs.length === 0) {\n this.updateTabsetComponent(0, true);\n return;\n }\n\n this.initTabComponents();\n const activeIndex = this.getActiveTabComponent()?.tabIndex;\n this.tabsetService.setActiveTabIndex(activeIndex, {\n emitChange: false\n });\n this.listenTabComponentsStateChange();\n }\n\n private emitTabIndexChange(): void {\n this.tabIndexesChange.emit({\n tabs: this.tabs.map(tab => ({\n tabHeading: tab.tabHeading,\n tabIndex: tab.tabIndex\n }))\n });\n }\n\n private unsubscribeTabComponentsStateChange(): void {\n this.tabComponentsStateChangeUnsubscribe.next();\n this.tabComponentsStateChangeUnsubscribe.complete();\n this.tabComponentsStateChangeUnsubscribe = new Subject<void>();\n }\n\n private listenTabButtonsOverflowChange(): void {\n this.adapterService.registerTabset(this.elementRef);\n this.adapterService.overflowChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(isOverflowing => {\n this.tabDisplayMode = (isOverflowing) ? 'dropdown' : 'tabs';\n this.changeDetector.markForCheck();\n });\n }\n\n /**\n * Listen for back/forward history button presses to detect query param changes in the URL.\n */\n private listenLocationPopStateChange(): void {\n this.permalinkService.popStateChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.setActiveTabIndexByPermalinkId();\n });\n }\n\n private setActiveTabIndexByPermalinkId(): void {\n const activeIndex = this.getActiveTabIndexByPermalinkId();\n this.tabsetService.setActiveTabIndex(activeIndex);\n }\n\n private getActiveTabIndexByPermalinkId(): SkyTabIndex {\n if (this.permalinkId) {\n const paramValue = this.permalinkService.getParam(this.permalinkId);\n if (paramValue) {\n return this.tabs.find(tab => tab.permalinkValue === paramValue)?.tabIndex;\n }\n }\n }\n\n private getActiveTabComponent(): SkyTabComponent {\n return this.tabs.toArray().reverse().find(tab => tab.active === true);\n }\n\n private createTabButtons(activeIndex: SkyTabIndex): TabButtonViewModel[] {\n return this.tabs.map(tab => ({\n active: this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex),\n closeable: tab.closeable,\n ariaControls: tab.tabPanelId,\n disabled: tab.disabled,\n /*tslint:disable-next-line:no-null-keyword*/\n buttonHref: (tab.disabled) ? null : this.permalinkService.getParamHref(\n this.permalinkId,\n tab.permalinkValue\n ),\n buttonId: tab.tabButtonId,\n buttonTextCount: tab.tabHeaderCount,\n buttonText: tab.tabHeading,\n tabIndex: tab.tabIndex\n }));\n }\n\n private updateTabButtons(activeIndex: SkyTabIndex): void {\n this.tabButtons.forEach(button => {\n button.active = this.tabsetService.tabIndexesEqual(button.tabIndex, activeIndex);\n });\n }\n\n /**\n * Updates the UI and state of the tabset component after the tab index or\n * tab components have changed.\n * @param activeIndex The currently active tab index.\n * @param regenerateTabButtons Indicates if tab button view models should be regenerated.\n * Setting this value to `false` will simply update the existing tab buttons. Setting this value\n * to `true` is only necessary when the underlying tab components have changed and the tab\n * buttons must reflect those changes.\n */\n private updateTabsetComponent(\n activeIndex: SkyTabIndex,\n regenerateTabButtons = false\n ): void {\n\n // Activate/deactivate tab components.\n this.tabs.forEach(tab => {\n this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex)\n ? tab.activate()\n : tab.deactivate();\n });\n\n // Update the tab button models.\n if (regenerateTabButtons || !this.tabButtons.length) {\n this.tabButtons = this.createTabButtons(activeIndex);\n } else {\n this.updateTabButtons(activeIndex);\n }\n\n // Update the dropdown trigger button text.\n this.dropdownTriggerButtonText = this.tabButtons.find(b => {\n return this.tabsetService.tabIndexesEqual(b.tabIndex, activeIndex);\n })?.buttonText;\n\n // Set the query params based on active tab.\n if (this.permalinkId) {\n const activeTabComponent = this.tabs.find(tab => {\n return this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex);\n });\n this.permalinkService.setParam(this.permalinkId, activeTabComponent.permalinkValue);\n }\n\n // Wait for tab button view models to render before gauging dimensions.\n setTimeout(() => {\n this.adapterService.detectOverflow();\n });\n\n this.changeDetector.markForCheck();\n\n // Emit the new active index value to consumers.\n if (this.lastActiveTabIndex !== activeIndex) {\n this.lastActiveTabIndex = activeIndex;\n this.activeChange.emit(activeIndex);\n }\n }\n}\n","<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\"\n (window:resize)=\"onWindowResize()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\"\n buttonType=\"tab\"\n >\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span\n class=\"sky-tabset-tabs\"\n >\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </ng-container>\n </span>\n <span\n class=\"sky-tabset-btns\"\n >\n <button *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon\n icon=\"plus-circle\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon\n icon=\"folder-open-o\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template\n let-tabButton\n #tabButtonTemplate\n>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabStyle]=\"tabStyle\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n","import {\n CommonModule\n} from '@angular/common';\n\nimport {\n NgModule\n} from '@angular/core';\n\nimport {\n RouterModule\n} from '@angular/router';\n\nimport {\n SkyI18nModule\n} from '@skyux/i18n';\n\nimport {\n SkyIconModule\n} from '@skyux/indicators';\n\nimport {\n SkyDropdownModule\n} from '@skyux/popovers';\n\nimport {\n SkyThemeModule\n} from '@skyux/theme';\n\nimport {\n SkyTabsResourcesModule\n} from '../shared/sky-tabs-resources.module';\n\nimport {\n SkyTabButtonComponent\n} from './tab-button.component';\n\nimport {\n SkyTabComponent\n} from './tab.component';\n\nimport {\n SkyTabsetNavButtonComponent\n} from './tabset-nav-button.component';\n\nimport {\n SkyTabsetComponent\n} from './tabset.component';\n\n@NgModule({\n declarations: [\n SkyTabButtonComponent,\n SkyTabComponent,\n SkyTabsetComponent,\n SkyTabsetNavButtonComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n SkyDropdownModule,\n SkyI18nModule,\n SkyIconModule,\n SkyTabsResourcesModule,\n SkyThemeModule\n ],\n exports: [\n SkyTabComponent,\n SkyTabsetComponent,\n SkyTabsetNavButtonComponent\n ]\n})\nexport class SkyTabsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId"],"mappings":"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"}
1
+ {"version":3,"file":"skyux-tabs.js","sources":["../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.service.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.component.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.component.html","../../../projects/tabs/src/modules/vertical-tabset/vertical-tab-media-query.service.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset-adapter.service.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tab.component.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tab.component.html","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.service.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form-section.component.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form-section.component.html","../../../projects/tabs/src/modules/shared/sky-tabs-resources.module.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.component.html","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset-group.component.ts","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset-group.component.html","../../../projects/tabs/src/modules/vertical-tabset/vertical-tabset.module.ts","../../../projects/tabs/src/modules/sectioned-form/sectioned-form.module.ts","../../../projects/tabs/src/modules/tabs/tab-button.component.ts","../../../projects/tabs/src/modules/tabs/tab-button.component.html","../../../projects/tabs/src/modules/tabs/tabset-permalink.service.ts","../../../projects/tabs/src/modules/tabs/tabset.service.ts","../../../projects/tabs/src/modules/tabs/tab.component.ts","../../../projects/tabs/src/modules/tabs/tab.component.html","../../../projects/tabs/src/modules/tabs/tabset-nav-button.component.ts","../../../projects/tabs/src/modules/tabs/tabset-nav-button.component.html","../../../projects/tabs/src/modules/tabs/tabset-adapter.service.ts","../../../projects/tabs/src/modules/tabs/tabset.component.ts","../../../projects/tabs/src/modules/tabs/tabset.component.html","../../../projects/tabs/src/modules/tabs/tabs.module.ts","../../../projects/tabs/src/skyux-tabs.ts"],"sourcesContent":["import {\n ElementRef,\n Injectable\n} from '@angular/core';\n\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryService\n} from '@skyux/core';\n\nimport {\n BehaviorSubject,\n Subject\n} from 'rxjs';\n\nimport {\n SkyVerticalTabComponent\n} from './vertical-tab.component';\n\nexport const VISIBLE_STATE = 'shown';\nexport const HIDDEN_STATE = 'void';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyVerticalTabsetService {\n\n public activeIndex: number = undefined;\n\n public animationContentVisibleState: string;\n\n public animationTabsVisibleState: string;\n\n public set content(value: ElementRef) {\n this._content = value;\n }\n\n public hidingTabs = new BehaviorSubject(false);\n\n public indexChanged: BehaviorSubject<number> = new BehaviorSubject(undefined);\n\n public maintainTabContent: boolean = false;\n\n public showingTabs = new BehaviorSubject(false);\n\n public switchingMobile: Subject<boolean> = new Subject();\n\n public tabs: Array<SkyVerticalTabComponent> = [];\n\n public tabAdded: Subject<SkyVerticalTabComponent> = new Subject();\n\n public tabClicked: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\n\n private _content: ElementRef;\n\n private _contentAdded: boolean = false;\n\n private _tabsVisible: boolean = false;\n\n private _isMobile: boolean = false;\n\n public constructor(private mediaQueryService: SkyMediaQueryService) {\n this.mediaQueryService.subscribe(breakpoint => {\n const nowMobile = breakpoint === SkyMediaBreakpoints.xs;\n\n if (nowMobile && !this._isMobile) {\n // switching to mobile\n this.switchingMobile.next(true);\n\n if (!this._tabsVisible) {\n this.hidingTabs.next(true);\n }\n\n } else if (!nowMobile && this._isMobile) {\n // switching to widescreen\n this.switchingMobile.next(false);\n\n if (!this._tabsVisible) {\n this.showingTabs.next(true);\n }\n }\n\n this._isMobile = nowMobile;\n });\n }\n\n public addTab(tab: SkyVerticalTabComponent) {\n const index = this.tabs.length;\n tab.index = index;\n\n this.tabs.push(tab);\n\n if (tab.active) {\n this.activateTab(tab);\n }\n\n this.tabAdded.next(tab);\n }\n\n public destroyTab(tab: SkyVerticalTabComponent): void {\n let tabIndex = this.tabs.indexOf(tab);\n if (tabIndex === -1) {\n return;\n }\n\n if (\n this.maintainTabContent &&\n tab.contentRendered &&\n /* istanbul ignore next */\n this._content?.nativeElement.contains(tab.tabContent.nativeElement)\n ) {\n this._content.nativeElement.removeChild(tab.tabContent.nativeElement);\n }\n\n this.tabs.splice(tabIndex, 1);\n // update tab indices\n this.tabs.forEach((tabItem, index) => tabItem.index = index);\n\n if (tab.active) {\n if (!this.maintainTabContent) {\n this.destroyContent();\n }\n // Try selecting the next tab first, and if there's no next tab then\n // try selecting the previous one.\n let newActiveTab = this.tabs[tabIndex] || this.tabs[tabIndex - 1];\n /*istanbul ignore else */\n if (newActiveTab) {\n newActiveTab.activateTab();\n }\n }\n }\n\n public activateTab(tab: SkyVerticalTabComponent) {\n\n // unactivate active tab\n let activeTab = this.tabs.find(t => t.index === this.activeIndex);\n if (activeTab && activeTab.index !== tab.index) {\n activeTab.active = false;\n activeTab.tabDeactivated();\n }\n\n this.activeIndex = tab.index;\n this.tabClicked.next(true);\n this.updateTabClicked();\n }\n\n public activeTab(): SkyVerticalTabComponent {\n return this.tabs.find(t => t.index === this.activeIndex);\n }\n\n public isMobile() {\n return this._isMobile;\n }\n\n public updateContent() {\n if (!this.maintainTabContent) {\n if (!this._contentAdded && this.contentVisible()) {\n // content needs to be moved\n this.moveContent();\n\n } else if (this._contentAdded && !this.contentVisible()) {\n // content hidden\n this._contentAdded = false;\n }\n } else {\n this.tabs.forEach((tab) => {\n if (!tab.contentRendered) {\n this._content.nativeElement.appendChild(tab.tabContent.nativeElement);\n tab.contentRendered = true;\n }\n });\n }\n }\n\n public tabsVisible() {\n return !this.isMobile() || this._tabsVisible;\n }\n\n public contentVisible() {\n return !this.isMobile() || !this._tabsVisible;\n }\n\n public showTabs() {\n this._tabsVisible = true;\n this._contentAdded = false;\n this.animationTabsVisibleState = VISIBLE_STATE;\n this.animationContentVisibleState = HIDDEN_STATE;\n this.showingTabs.next(true);\n }\n\n private destroyContent(): void {\n if (this._content) {\n this._content.nativeElement.innerHTML = '';\n }\n this.content = undefined;\n }\n\n private moveContent() {\n /* istanbul ignore else */\n if (this._content && !this._contentAdded) {\n let activeTab = this.activeTab();\n let activeContent = activeTab ? activeTab.tabContent : undefined;\n\n if (activeContent && activeContent.nativeElement) {\n this._content.nativeElement.appendChild(activeContent.nativeElement);\n activeTab.contentRendered = true;\n this._contentAdded = true;\n }\n }\n }\n\n private updateTabClicked() {\n this._contentAdded = false;\n\n if (this.isMobile()) {\n this._tabsVisible = false;\n this.animationContentVisibleState = VISIBLE_STATE;\n this.animationTabsVisibleState = HIDDEN_STATE;\n this.hidingTabs.next(true);\n }\n\n this.indexChanged.next(this.activeIndex);\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n ElementRef,\n ViewChild,\n EventEmitter,\n Output,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Input\n} from '@angular/core';\n\nimport {\n style,\n trigger,\n transition,\n animate\n} from '@angular/animations';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabsetService,\n HIDDEN_STATE,\n VISIBLE_STATE\n} from './../vertical-tabset/vertical-tabset.service';\n\n/**\n * Creates a container for the sectioned forms.\n */\n@Component({\n selector: 'sky-sectioned-form',\n templateUrl: './sectioned-form.component.html',\n styleUrls: ['./sectioned-form.component.scss'],\n providers: [SkyVerticalTabsetService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(-100%)'}),\n animate('150ms ease-in')\n ])\n ]\n ),\n trigger(\n 'contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(100%)'}),\n animate('150ms ease-in')\n ])\n ]\n )\n ]\n})\nexport class SkySectionedFormComponent implements OnInit, OnDestroy, AfterViewChecked {\n\n /**\n * Indicates whether the sectioned form loads section content during initialization so that it\n * displays content without moving around elements in the content container.\n * @default false\n */\n @Input()\n public maintainSectionContent: boolean = false;\n\n/**\n * Fires when the active tab changes and emits the index of the active\n * section. The index is based on the section's position when the form loads.\n */\n @Output()\n public indexChanged: EventEmitter<number> = new EventEmitter();\n\n public get ariaRole(): string {\n return this.isMobile ? undefined : 'tablist';\n }\n\n @ViewChild('skySectionSideContent')\n public content: ElementRef;\n\n private isMobile = false;\n private _ngUnsubscribe = new Subject();\n\n constructor(\n public tabService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef) {}\n\n public ngOnInit() {\n this.tabService.maintainTabContent = this.maintainSectionContent;\n\n this.tabService.indexChanged\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(index => {\n this.indexChanged.emit(index);\n this.changeRef.markForCheck();\n });\n\n this.tabService.switchingMobile\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.markForCheck();\n });\n\n if (this.tabService.isMobile()) {\n this.isMobile = true;\n this.tabService.animationContentVisibleState = VISIBLE_STATE;\n this.changeRef.markForCheck();\n }\n }\n\n public ngAfterViewChecked() {\n this.tabService.content = this.content;\n this.tabService.updateContent();\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n\n public tabsVisible() {\n this.changeRef.markForCheck();\n return this.tabService.tabsVisible();\n }\n\n public showTabs() {\n this.tabService.showTabs();\n this.changeRef.markForCheck();\n }\n}\n","<div\n aria-orientation=\"vertical\"\n class=\"sky-sectioned-form\"\n [attr.role]=\"ariaRole\"\n (window:resize)=\"tabService.updateContent()\"\n>\n <div\n *ngIf=\"maintainSectionContent || tabsVisible()\"\n class=\"sky-sectioned-form-tabs\"\n [ngClass]=\"{'sky-sectioned-form-tabs-hidden': !tabsVisible()}\"\n [@tabEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainSectionContent || tabService.contentVisible()\"\n class=\"sky-sectioned-form-content\"\n [ngClass]=\"{'sky-sectioned-form-content-hidden': !tabService.contentVisible()}\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #skySectionSideContent\n >\n </div>\n</div>\n\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryListener\n} from '@skyux/core';\n\nimport {\n BehaviorSubject,\n Subscription\n} from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyVerticalTabMediaQueryService {\n\n public get current(): SkyMediaBreakpoints {\n return this._current;\n }\n\n private currentSubject = new BehaviorSubject<SkyMediaBreakpoints>(this.current);\n\n private _current = SkyMediaBreakpoints.xs;\n\n constructor() {\n this.currentSubject.next(this._current);\n }\n\n public subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.currentSubject.subscribe({\n next: (breakpoints: SkyMediaBreakpoints) => {\n listener(breakpoints);\n }\n });\n }\n\n public setBreakpointForWidth(width: number): void {\n let breakpoint: SkyMediaBreakpoints;\n\n if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.xs)) {\n breakpoint = SkyMediaBreakpoints.xs;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.sm)) {\n breakpoint = SkyMediaBreakpoints.sm;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.md)) {\n breakpoint = SkyMediaBreakpoints.md;\n } else {\n breakpoint = SkyMediaBreakpoints.lg;\n }\n\n this._current = breakpoint;\n this.currentSubject.next(this._current);\n }\n\n public isWidthWithinBreakpiont(width: number, breakpoint: SkyMediaBreakpoints): boolean {\n const xsBreakpointMaxPixels = 767;\n const smBreakpointMinPixels = 768;\n const smBreakpointMaxPixels = 991;\n const mdBreakpointMinPixels = 992;\n const mdBreakpointMaxPixels = 1199;\n const lgBreakpointMinPixels = 1200;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n return (width <= xsBreakpointMaxPixels);\n }\n case SkyMediaBreakpoints.sm: {\n return (width >= smBreakpointMinPixels && width <= smBreakpointMaxPixels);\n }\n case SkyMediaBreakpoints.md: {\n return (width >= mdBreakpointMinPixels && width <= mdBreakpointMaxPixels);\n }\n default: {\n return (width >= lgBreakpointMinPixels);\n }\n }\n }\n\n public destroy(): void {\n this.currentSubject.complete();\n }\n}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2\n} from '@angular/core';\n\nimport {\n SkyMediaBreakpoints\n} from '@skyux/core';\n\n@Injectable()\nexport class SkyVerticalTabsetAdapterService {\n private renderer: Renderer2;\n\n constructor(\n private rendererFactory: RendererFactory2\n ) {\n this.renderer = this.rendererFactory.createRenderer(undefined, undefined);\n }\n\n public getWidth(elementRef: ElementRef): number {\n return elementRef.nativeElement.clientWidth;\n }\n\n public scrollToContentTop(element: ElementRef): void {\n element.nativeElement.scrollTop = 0;\n }\n\n public setResponsiveClass(element: ElementRef, breakpoint: SkyMediaBreakpoints): void {\n const nativeEl: HTMLElement = element.nativeElement;\n\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-xs');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-sm');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-md');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-lg');\n\n let newClass: string;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n newClass = 'sky-responsive-container-xs';\n break;\n }\n case SkyMediaBreakpoints.sm: {\n newClass = 'sky-responsive-container-sm';\n break;\n }\n case SkyMediaBreakpoints.md: {\n newClass = 'sky-responsive-container-md';\n break;\n }\n default: {\n newClass = 'sky-responsive-container-lg';\n break;\n }\n }\n\n this.renderer.addClass(nativeEl, newClass);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\n\nimport {\n SkyMediaQueryService\n} from '@skyux/core';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabMediaQueryService\n} from './vertical-tab-media-query.service';\n\nimport {\n SkyVerticalTabsetService\n} from './vertical-tabset.service';\n\nimport {\n SkyVerticalTabsetAdapterService\n} from './vertical-tabset-adapter.service';\n\n@Component({\n selector: 'sky-vertical-tab',\n templateUrl: './vertical-tab.component.html',\n styleUrls: ['./vertical-tab.component.scss'],\n providers: [\n SkyVerticalTabMediaQueryService,\n { provide: SkyMediaQueryService, useExisting: SkyVerticalTabMediaQueryService }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkyVerticalTabComponent implements OnInit, OnDestroy {\n /**\n * Indicates whether the tab is active when the tabset loads.\n */\n @Input()\n public active: boolean = false;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that contains\n * the content that the vertical tab displays, which corresponds to the `tabId`. This property\n * [supports accessibility rules for disclosures](https://www.w3.org/TR/wai-aria-practices-1.1/#disclosure).\n */\n @Input()\n public get ariaControls(): string {\n return this.isMobile ? undefined : this._ariaControls;\n }\n public set ariaControls(value: string) {\n this._ariaControls = value;\n }\n\n /**\n * @internal\n */\n @Input()\n public ariaInvalid: boolean;\n\n /**\n * @internal\n */\n @Input()\n public ariaRequired: boolean;\n\n /**\n * Specifies an ARIA role for the vertical tab\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * by indicating how the tab functions and what it controls. For information about how\n * an ARIA role indicates what an item represents on a web page, see the\n * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).\n * @default \"tab\"\n */\n @Input()\n public get ariaRole(): string {\n if (this.isMobile) {\n return undefined;\n }\n return this._ariaRole || 'tab';\n }\n public set ariaRole(value: string) {\n this._ariaRole = value;\n }\n\n /**\n * Indicates whether to disable the tab.\n */\n @Input()\n public disabled: boolean = false;\n\n /**\n * Indicates whether to indicate that the tab has an error.\n * @internal This is used for sectioned forms and is not currently a supported design for pure vertical tabs.\n */\n @Input()\n public errorIndicator: boolean = false;\n\n /**\n * Displays an item count alongside the tab header to indicate how many list items the tab contains.\n */\n @Input()\n public tabHeaderCount: number;\n\n /**\n * Specifies the tab header.\n * @required\n */\n @Input()\n public tabHeading: string;\n\n /**\n * Indicates whether to display a chevron-right icon in the righthand side of the tab.\n * @internal\n */\n @Input()\n public get showTabRightArrow() {\n return this._showTabRightArrow && this.tabsetService.isMobile();\n }\n\n public set showTabRightArrow(value: boolean) {\n this._showTabRightArrow = value;\n }\n\n /**\n * Specifies an ID for the tab.\n */\n @Input()\n public tabId: string;\n\n public set contentRendered(value: boolean) {\n this._contentRendered = value;\n\n /* istanbul ignore else */\n if (this._contentRendered) {\n // NOTE: Wrapped in a setTimeout here to ensure that everything has completed rendering.\n setTimeout(() => {\n this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));\n });\n }\n }\n\n public get contentRendered(): boolean {\n return this._contentRendered;\n }\n\n public index: number;\n\n @ViewChild('tabContentWrapper')\n public tabContent: ElementRef;\n\n private isMobile = false;\n\n private _ariaControls: string;\n\n private _ariaRole: string;\n\n private _contentRendered: boolean = false;\n\n private _mobileSubscription = new Subject();\n\n private _ngUnsubscribe = new Subject();\n\n private _showTabRightArrow: boolean = false;\n\n constructor(\n private adapterService: SkyVerticalTabsetAdapterService,\n private changeRef: ChangeDetectorRef,\n private tabsetService: SkyVerticalTabsetService,\n private verticalTabMediaQueryService: SkyVerticalTabMediaQueryService\n ) {}\n\n public ngOnInit(): void {\n this.isMobile = this.tabsetService.isMobile();\n this.changeRef.markForCheck();\n\n this.tabsetService.switchingMobile\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.markForCheck();\n });\n\n // Update the breakpoint and responsive class here just as a sanity check since we can not\n // watch for element resizing.\n this.tabsetService.indexChanged\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((index) => {\n if (this.index === index && this.contentRendered) {\n this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));\n }\n });\n\n this.tabsetService.addTab(this);\n }\n\n public ngOnDestroy(): void {\n this._mobileSubscription.unsubscribe();\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n this.tabsetService.destroyTab(this);\n }\n\n public tabIndex(): number {\n if (!this.disabled) {\n return 0;\n } else {\n return -1;\n }\n }\n\n public activateTab(): void {\n if (!this.disabled) {\n this.active = true;\n this.tabsetService.activateTab(this);\n\n this.changeRef.markForCheck();\n }\n }\n\n @HostListener('window:resize')\n public onWindowResize(): void {\n this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));\n }\n\n public tabDeactivated(): void {\n this.changeRef.markForCheck();\n }\n\n private updateBreakpointAndResponsiveClass(width: number): void {\n this.verticalTabMediaQueryService.setBreakpointForWidth(width);\n\n const newBreakpiont = this.verticalTabMediaQueryService.current;\n\n this.adapterService.setResponsiveClass(this.tabContent, newBreakpiont);\n\n this.changeRef.markForCheck();\n }\n}\n","<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired ? ariaRequired : null\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup.enter)=\"activateTab()\">\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\">\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n <sky-icon\n *ngIf=\"showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div\n #tabContentWrapper\n>\n <div\n class=\"sky-vertical-tab-content-pane\"\n [ngClass]=\"{'sky-vertical-tab-hidden': !active}\"\n >\n\n <ng-content></ng-content>\n\n <div>\n\n</div>\n\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n BehaviorSubject\n} from 'rxjs';\n\n@Injectable()\nexport class SkySectionedFormService {\n/**\n * @internal\n */\n public invalidChange: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\n/**\n * @internal\n */\n public requiredChange: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\n\n /**\n * Sets the current section's invalid state based on the `isInvalid` parameter.\n * This method is used within a `sky-sectioned-form-section` element.\n */\n public invalidFieldChanged(isInvalid: boolean): void {\n this.invalidChange.next(isInvalid);\n }\n\n /**\n * Sets the current section's required state based on the `isRequired` parameter.\n * This method is used within a `sky-sectioned-form-section` element.\n */\n public requiredFieldChanged(isRequired: boolean): void {\n this.requiredChange.next(isRequired);\n }\n}\n","import {\n Component,\n Input,\n ViewChild,\n OnInit,\n OnDestroy,\n ChangeDetectorRef\n} from '@angular/core';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabComponent\n} from './../vertical-tabset/vertical-tab.component';\nimport {\n SkySectionedFormService\n} from './sectioned-form.service';\nimport {\n SkyVerticalTabsetService\n} from '../vertical-tabset/vertical-tabset.service';\n\nlet nextId = 0;\n\n/**\n * Creates an individual form to display as a section within the sectioned form.\n */\n@Component({\n selector: 'sky-sectioned-form-section',\n templateUrl: './sectioned-form-section.component.html',\n providers: [SkySectionedFormService],\n styleUrls: ['./sectioned-form-section.component.scss']\n})\nexport class SkySectionedFormSectionComponent implements OnInit, OnDestroy {\n public sectionTabId = `sky-sectioned-form-tab-${++nextId}`;\n public sectionContentId = `sky-sectioned-form-section-${++nextId}`;\n\n/**\n * Specifies the section header.\n * @required\n */\n @Input()\n public heading: string;\n\n/**\n * Indicates the number of items within the section and displays a\n * counter alongside the section header.\n */\n @Input()\n public itemCount: number;\n\n/**\n * Indicates whether the section is active when the form loads.\n * @default false\n */\n @Input()\n public active: boolean;\n\n public get ariaRole(): string {\n return this.isMobile ? undefined : 'tabpanel';\n }\n\n public get ariaLabelledby() {\n return this.isMobile ? undefined : this.sectionTabId;\n }\n\n public fieldRequired: boolean;\n public fieldInvalid: boolean;\n\n @ViewChild(SkyVerticalTabComponent)\n public tab: SkyVerticalTabComponent;\n\n private isMobile = false;\n private _ngUnsubscribe = new Subject();\n\n constructor(\n private sectionedFormService: SkySectionedFormService,\n private tabsetService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef\n ) {}\n\n public ngOnInit() {\n this.isMobile = this.tabsetService.isMobile();\n this.changeRef.detectChanges();\n\n this.tabsetService.switchingMobile\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.detectChanges();\n });\n\n this.sectionedFormService.requiredChange\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((required: boolean) => this.fieldRequired = required);\n\n this.sectionedFormService.invalidChange\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((invalid: boolean) => this.fieldInvalid = invalid);\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n}\n","<sky-vertical-tab\n [active]=\"active\"\n [ariaControls]=\"sectionContentId\"\n [ariaInvalid]=\"fieldInvalid\"\n [ariaRequired]=\"fieldRequired\"\n [errorIndicator]=\"fieldInvalid\"\n [ngClass]=\"{\n 'sky-tab-field-required': fieldRequired\n }\"\n [showTabRightArrow]=\"true\"\n [tabHeaderCount]=\"itemCount\"\n [tabHeading]=\"heading\"\n [tabId]=\"sectionTabId\">\n <div\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.role]=\"ariaRole\"\n [id]=\"sectionContentId\"\n #tabContent>\n <ng-content></ng-content>\n </div>\n</sky-vertical-tab>\n","/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module modules/shared/sky-tabs' schematic.\n * To update this file, simply rerun the command.\n */\n\nimport { NgModule } from '@angular/core';\nimport {\n getLibStringForLocale,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n SKY_LIB_RESOURCES_PROVIDERS\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\"skyux_tab_add\":{\"message\":\"Add tab\"},\"skyux_tab_close\":{\"message\":\"Close {0} tab\"},\"skyux_tabs_navigator_next\":{\"message\":\"Next\"},\"skyux_tabs_navigator_previous\":{\"message\":\"Previous\"},\"skyux_tab_open\":{\"message\":\"Open tab\"},\"skyux_vertical_tabs_show_tabs_text\":{\"message\":\"Tab list\"}},\n};\n\nexport class SkyTabsResourcesProvider implements SkyLibResourcesProvider {\n public getString(localeInfo: SkyAppLocaleInfo, name: string): string {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [{\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyTabsResourcesProvider,\n multi: true\n }]\n})\nexport class SkyTabsResourcesModule { }\n","import {\n Component,\n ElementRef,\n ViewChild,\n Input,\n OnInit,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n AfterViewChecked,\n ChangeDetectorRef,\n OnDestroy\n} from '@angular/core';\n\nimport {\n style,\n trigger,\n transition,\n animate\n} from '@angular/animations';\n\nimport {\n SkyLibResourcesService\n} from '@skyux/i18n';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n take,\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabsetAdapterService\n} from './vertical-tabset-adapter.service';\n\nimport {\n SkyVerticalTabsetService,\n HIDDEN_STATE,\n VISIBLE_STATE\n} from './vertical-tabset.service';\n\n@Component({\n selector: 'sky-vertical-tabset',\n templateUrl: './vertical-tabset.component.html',\n styleUrls: ['./vertical-tabset.component.scss'],\n providers: [\n SkyVerticalTabsetService\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabGroupEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(-100%)'}),\n animate('150ms ease-in')\n ])\n ]\n ),\n trigger(\n 'contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({transform: 'translate(100%)'}),\n animate('150ms ease-in')\n ])\n ]\n )\n ]\n})\nexport class SkyVerticalTabsetComponent implements OnInit, AfterViewChecked, OnDestroy {\n\n /**\n * Specifies the text to display on the show tabs button on mobile devices.\n */\n @Input()\n public showTabsText: string;\n\n /**\n * Specifies an ARIA role for the vertical tabset\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * by indicating how the tabset functions and what it controls. For information about how\n * an ARIA role indicates what an item represents on a web page, see the\n * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).\n * @default \"tablist\"\n */\n @Input()\n public get ariaRole(): string {\n if (this.isMobile) {\n return undefined;\n }\n return this._ariaRole || 'tablist';\n }\n public set ariaRole(value: string) {\n this._ariaRole = value;\n }\n\n /**\n * Indicates whether the vertical tabset loads tab content during initialization so that it\n * displays content without moving around elements in the content container.\n * @default 'false'\n */\n @Input()\n public maintainTabContent: boolean = false;\n\n /**\n * Fires when the active tab changes. Emits the index of the active tab. The\n * index is based on the tab's position when it loads.\n */\n @Output()\n public activeChange = new EventEmitter<number>();\n\n @ViewChild('groupContainerWrapper')\n public tabGroups: ElementRef;\n\n @ViewChild('skySideContent')\n public content: ElementRef;\n\n @ViewChild('contentContainerWrapper')\n private contentWrapper: ElementRef;\n\n private isMobile = false;\n private _ngUnsubscribe = new Subject();\n private _ariaRole: string;\n\n constructor(\n public adapterService: SkyVerticalTabsetAdapterService,\n public tabService: SkyVerticalTabsetService,\n private resources: SkyLibResourcesService,\n private changeRef: ChangeDetectorRef) {}\n\n public ngOnInit() {\n this.tabService.maintainTabContent = this.maintainTabContent;\n\n this.tabService.indexChanged\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((index: any) => {\n this.activeChange.emit(index);\n if (this.contentWrapper) {\n this.adapterService.scrollToContentTop(this.contentWrapper);\n }\n this.changeRef.markForCheck();\n });\n\n this.tabService.switchingMobile\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.markForCheck();\n });\n\n if (this.tabService.isMobile()) {\n this.isMobile = true;\n this.tabService.animationContentVisibleState = VISIBLE_STATE;\n this.changeRef.markForCheck();\n }\n if (!this.showTabsText) {\n this.resources.getString('skyux_vertical_tabs_show_tabs_text')\n .pipe(take(1))\n .subscribe(resource => {\n /* sanity check */\n /* istanbul ignore else */\n if (!this.showTabsText) {\n this.showTabsText = resource;\n }\n });\n }\n }\n\n public ngAfterViewChecked() {\n this.tabService.content = this.content;\n this.tabService.updateContent();\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n}\n"," <div class=\"sky-vertical-tabset\" (window:resize)=\"tabService.updateContent()\">\n <div\n *ngIf=\"maintainTabContent || tabService.tabsVisible()\"\n #groupContainerWrapper\n class=\"sky-vertical-tabset-group-container\"\n [ngClass]=\"{'sky-vertical-tabset-hidden': !tabService.tabsVisible()}\"\n [attr.role]=\"ariaRole\"\n [@tabGroupEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainTabContent || tabService.contentVisible()\"\n class=\"sky-vertical-tabset-content\"\n [ngClass]=\"{'sky-vertical-tabset-content-hidden': !tabService.contentVisible()}\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #contentContainerWrapper\n >\n <div #skySideContent></div>\n <button\n *ngIf=\"!tabService.tabsVisible()\"\n (click)=\"tabService.showTabs()\"\n class=\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\"\n >\n <sky-icon icon=\"chevron-left\"></sky-icon>\n {{ showTabsText }}\n </button>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Input,\n OnDestroy,\n OnInit,\n QueryList\n} from '@angular/core';\n\nimport {\n animate,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyVerticalTabComponent\n} from './vertical-tab.component';\n\nimport {\n SkyVerticalTabsetService\n} from './vertical-tabset.service';\n\n@Component({\n selector: 'sky-vertical-tabset-group',\n templateUrl: './vertical-tabset-group.component.html',\n styleUrls: ['./vertical-tabset-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\n 'tabSlide', [\n transition(':enter', [\n style({\n height: '0',\n visibility: 'hidden'\n }),\n animate('150ms ease-in', style({\n height: '*',\n visibility: 'visible'\n }))\n ]),\n transition(':leave', [\n style({\n height: '*',\n visibility: 'visible'\n }),\n animate('150ms ease-in', style({\n height: '0',\n visibility: 'hidden'\n }))\n ])\n ])\n ]\n})\nexport class SkyVerticalTabsetGroupComponent implements OnInit, OnDestroy {\n\n /**\n * Indicates whether to disable the ability to expand and collapse the group.\n * @default \"false\"\n */\n @Input()\n public disabled: boolean;\n\n /**\n * Specifies the header for the collapsible group of tabs.\n */\n @Input()\n public groupHeading: string;\n\n /**\n * Indicates whether the collapsible group is expanded.\n * @default \"false\"\n */\n @Input()\n public set open(value: boolean) {\n this._open = value;\n }\n\n public get open(): boolean {\n return !this.disabled && this._open;\n }\n\n @ContentChildren(SkyVerticalTabComponent)\n private tabs: QueryList<SkyVerticalTabComponent>;\n\n private ngUnsubscribe = new Subject();\n\n private openBeforeTabsHidden: boolean = false;\n\n private _open: boolean = false;\n\n constructor(\n private tabService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef\n ) {}\n\n public ngOnInit(): void {\n this.tabService.hidingTabs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.tabsHidden);\n\n this.tabService.showingTabs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.tabsShown);\n\n this.tabService.tabClicked\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.tabClicked);\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public toggleMenuOpen(): void {\n if (!this.disabled) {\n this.open = !this.open;\n }\n\n this.changeRef.markForCheck();\n }\n\n public subMenuOpen(): boolean {\n return this.tabs && (this.tabs.find(t => t.active) !== undefined);\n }\n\n public tabClicked = () => {\n this.changeRef.markForCheck();\n }\n\n public tabsHidden = () => {\n // this fixes an animation bug with ngIf when the parent component goes from visible to hidden\n this.openBeforeTabsHidden = this.open;\n this.open = false;\n this.changeRef.markForCheck();\n }\n\n public tabsShown = () => {\n this.open = this.openBeforeTabsHidden;\n this.changeRef.markForCheck();\n }\n}\n","<div class=\"sky-vertical-tabset-group\">\n <!-- [ngClass] includes font classes for both modern and default styles -->\n <div\n class=\"sky-vertical-tabset-group-header sky-padding-even-default\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-sub-open sky-font-emphasized sky-emphasized': subMenuOpen(),\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n (click)=\"toggleMenuOpen()\"\n (keyup.enter)=\"toggleMenuOpen()\"\n [tabIndex]=\"-1\"\n >\n {{ groupHeading }}\n <sky-chevron *skyThemeIf=\"'default'\"\n class=\"sky-vertical-tabset-group-header-chevron\"\n [direction]=\"open ? 'up' : 'down'\"\n [disabled]=\"disabled\"\n (directionChange)=\"toggleMenuOpen()\"\n (keyup.enter)=\"$event.stopPropagation()\"\n >\n </sky-chevron>\n <ng-container *skyThemeIf=\"'modern'\">\n <button *ngIf=\"!open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-up\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </ng-container>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n *ngIf=\"open\"\n [@tabSlide]\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n NgModule\n} from '@angular/core';\n\nimport {\n CommonModule\n} from '@angular/common';\n\nimport {\n SkyChevronModule,\n SkyIconModule,\n SkyStatusIndicatorModule\n} from '@skyux/indicators';\n\nimport {\n SkyThemeModule\n} from '@skyux/theme';\n\nimport {\n SkyTabsResourcesModule\n} from '../shared/sky-tabs-resources.module';\n\nimport {\n SkyVerticalTabsetComponent\n} from './vertical-tabset.component';\n\nimport {\n SkyVerticalTabComponent\n} from './vertical-tab.component';\n\nimport {\n SkyVerticalTabsetGroupComponent\n} from './vertical-tabset-group.component';\n\nimport {\n SkyVerticalTabsetAdapterService\n} from './vertical-tabset-adapter.service';\n\n@NgModule({\n declarations: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent\n ],\n imports: [\n CommonModule,\n SkyChevronModule,\n SkyIconModule,\n SkyStatusIndicatorModule,\n SkyTabsResourcesModule,\n SkyThemeModule\n ],\n providers: [\n SkyVerticalTabsetAdapterService\n ],\n exports: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent\n ]\n})\nexport class SkyVerticalTabsetModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SkySectionedFormComponent } from './sectioned-form.component';\nimport { SkySectionedFormSectionComponent } from './sectioned-form-section.component';\nimport { SkyVerticalTabsetModule } from '../vertical-tabset/vertical-tabset.module';\nimport { SkyCheckboxModule } from '@skyux/forms';\n\n@NgModule({\n declarations: [\n SkySectionedFormComponent,\n SkySectionedFormSectionComponent\n ],\n imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyVerticalTabsetModule\n ],\n exports: [\n SkySectionedFormComponent,\n SkySectionedFormSectionComponent\n ]\n})\nexport class SkySectionedFormModule { }\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {\n SkyTabsetStyle\n} from './tabset-style';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-tab-button',\n templateUrl: './tab-button.component.html',\n styleUrls: ['./tab-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SkyTabButtonComponent {\n\n @Input()\n public active: boolean;\n\n @Input()\n public ariaControls: string;\n\n @Input()\n public buttonHref: string;\n\n @Input()\n public buttonId: string;\n\n @Input()\n public buttonText: string;\n\n @Input()\n public buttonTextCount: string;\n\n @Input()\n public closeable: boolean;\n\n @Input()\n public disabled: boolean;\n\n @Input()\n public tabStyle: SkyTabsetStyle;\n\n @Output()\n public buttonClick = new EventEmitter<void>();\n\n @Output()\n public closeClick = new EventEmitter<void>();\n\n public onButtonClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.buttonClick.emit();\n event.preventDefault();\n }\n }\n\n public onButtonEnterKeyDown(event: any): void {\n this.onButtonClick(event);\n }\n\n public onCloseClick(event: any): void {\n this.closeClick.emit();\n\n // Prevent the click event from bubbling up to the anchor tag;\n // otherwise it will trigger a page refresh.\n event.stopPropagation();\n event.preventDefault();\n }\n}\n","<div\n class=\"sky-btn-tab-wrapper\"\n [ngClass]=\"{\n 'sky-btn-tab-wrapper-selected': active,\n 'sky-btn-tab-wrapper-disabled': disabled\n }\"\n>\n <a\n class=\"sky-btn-tab\"\n role=\"tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"active\"\n [attr.href]=\"buttonHref\"\n [id]=\"buttonId\"\n [ngClass]=\"{\n 'sky-btn-tab-wizard': tabStyle === 'wizard',\n 'sky-btn-tab-selected': active,\n 'sky-btn-tab-disabled': disabled,\n 'sky-tab-btn-closeable': closeable\n }\"\n [tabindex]=\"disabled ? '-1' : '0'\"\n (click)=\"onButtonClick($event)\"\n (keydown.enter)=\"onButtonEnterKeyDown($event)\"\n >\n <span\n class=\"sky-tab-heading\"\n >\n {{ buttonText }}\n <span *ngIf=\"buttonTextCount !== undefined\"\n class=\"sky-tab-header-count\"\n >\n {{ buttonTextCount }}\n </span>\n </span>\n </a>\n\n <button *ngIf=\"closeable\"\n class=\"sky-btn-tab-close\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_close' | skyLibResources:buttonText\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-tab-close-disabled': disabled\n }\"\n (click)=\"onCloseClick($event)\"\n >\n <sky-icon\n icon=\"remove\"\n ></sky-icon>\n </button>\n</div>\n","import {\n Location\n} from '@angular/common';\n\nimport {\n Injectable,\n OnDestroy\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router\n} from '@angular/router';\n\nimport {\n Observable,\n Subject,\n SubscriptionLike\n} from 'rxjs';\n\n/**\n * @internal\n */\ninterface PermalinkParams {\n [_: string]: string;\n}\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetPermalinkService implements OnDestroy {\n\n public get popStateChange(): Observable<void> {\n return this._popStateChange.asObservable();\n }\n\n private _popStateChange = new Subject<void>();\n\n private subscription: SubscriptionLike;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private location: Location,\n private router: Router\n ) { }\n\n public ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n public init(): void {\n this.subscription = this.location.subscribe(() => {\n this._popStateChange.next();\n });\n }\n\n /**\n * Returns the value of a URL query param.\n */\n public getParam(name: string): string {\n return this.getParams()[name];\n }\n\n /**\n * Sets the value of a URL query param.\n */\n public setParam(name: string, value: string | null): void {\n const params = this.getParams();\n\n if (value === null) {\n delete params[name];\n } else {\n params[name] = value;\n }\n\n // Update the URL without triggering a navigation state change.\n // See: https://stackoverflow.com/a/46486677\n const url = this.router.createUrlTree(['.'], {\n relativeTo: this.activatedRoute,\n queryParams: params,\n queryParamsHandling: 'merge'\n }).toString();\n\n // Abort redirect if the current URL is equal to the new URL.\n if (this.location.isCurrentPathEqualTo(url)) {\n return;\n }\n\n this.location.go(url);\n }\n\n /**\n * Removes the provided query param from the URL.\n */\n public clearParam(name: string): void {\n /*tslint:disable-next-line:no-null-keyword*/\n this.setParam(name, null);\n }\n\n /**\n * Returns a relative URL that includes the provided query parameter. The value is inteded to be\n * used by an HTML anchor element.\n */\n public getParamHref(name: string, value: string): string | null {\n if (!name) {\n /*tslint:disable-next-line:no-null-keyword*/\n return null;\n }\n\n const params = this.getParams();\n params[name] = value;\n\n const baseUrl = this.location.path().split('?')[0];\n const paramString = Object.keys(params).map(k => `${k}=${params[k]}`).join('&');\n\n return this.location.prepareExternalUrl(`${baseUrl}?${paramString}`);\n }\n\n /**\n * Converts the provided string into a value that can be safely used in a URL.\n */\n public urlify(value: string): string {\n if (!value) {\n return '';\n }\n\n const sanitized = value.toLowerCase()\n\n // Remove special characters.\n .replace(/[\\_\\~\\`\\@\\!\\#\\$\\%\\^\\&\\*\\(\\)\\[\\]\\{\\}\\;\\:\\'\\/\\\\\\<\\>\\,\\.\\?\\=\\+\\|\"]/g, '')\n\n // Replace space characters with a dash.\n .replace(/\\s/g, '-')\n\n // Remove any double-dashes.\n .replace(/--/g, '-');\n\n return sanitized;\n }\n\n /**\n * Returns all query params that exist in the current URL.\n */\n private getParams(): PermalinkParams {\n const params: PermalinkParams = {};\n\n const path = this.location.path();\n if (path.indexOf('?') === -1) {\n return params;\n }\n\n const existingParamPairs = path.split('?')[1].split('&');\n existingParamPairs.forEach((pair) => {\n const fragments = pair.split('=');\n params[fragments[0]] = decodeURIComponent(fragments[1]);\n });\n\n return params;\n }\n\n}\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n BehaviorSubject,\n Observable,\n Subject\n} from 'rxjs';\n\nimport {\n SkyTabIndex\n} from './tab-index';\n\nimport {\n SkyTabsetActiveTabUnregisteredArgs\n} from './tabset-active-tab-unregistered-args';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetService {\n\n public get activeTabUnregistered(): Observable<SkyTabsetActiveTabUnregisteredArgs> {\n return this._activeTabUnregistered.asObservable();\n }\n\n public get activeTabIndex(): Observable<SkyTabIndex> {\n return this._activeTabIndex.asObservable();\n }\n\n public currentActiveTabIndex: SkyTabIndex = 0;\n\n private _activeTabIndex = new BehaviorSubject<SkyTabIndex>(0);\n\n private _activeTabUnregistered = new Subject<SkyTabsetActiveTabUnregisteredArgs>();\n\n private tabs: {\n tabIndex: SkyTabIndex;\n }[] = [];\n\n private tabCounter = 0;\n\n /**\n * Sets the active tab by its unique `tabIndex` property.\n */\n public setActiveTabIndex(value: SkyTabIndex, config = {\n emitChange: true\n }): void {\n if (\n value !== undefined &&\n !this.tabIndexesEqual(value, this.currentActiveTabIndex)\n ) {\n this.currentActiveTabIndex = value;\n /* istanbul ignore else */\n if (config.emitChange) {\n this._activeTabIndex.next(value);\n }\n }\n }\n\n /**\n * Registers a tab component.\n */\n public registerTab(tabIndex?: SkyTabIndex): SkyTabIndex {\n if (tabIndex === undefined) {\n tabIndex = this.tabCounter;\n this.tabCounter++;\n }\n\n this.tabs.push({ tabIndex });\n\n return tabIndex;\n }\n\n public updateTabIndex(currentTabIndex: SkyTabIndex, newTabIndex: SkyTabIndex): void {\n const found = this.tabs.find(tab => this.tabIndexesEqual(tab.tabIndex, currentTabIndex));\n found.tabIndex = newTabIndex;\n }\n\n /**\n * Unregisters a tab component.\n */\n public unregisterTab(tabIndex: SkyTabIndex): void {\n const index = this.tabs.findIndex(tab => this.tabIndexesEqual(tab.tabIndex, tabIndex));\n\n // Notify the tabset component when an active tab is unregistered.\n if (this.isTabIndexActive(this.tabs[index].tabIndex)) {\n this._activeTabUnregistered.next({\n arrayIndex: index\n });\n }\n\n this.tabs.splice(index, 1);\n }\n\n /**\n * Unregisters all tab components at once.\n */\n public unregisterAll(): void {\n this.tabs = [];\n }\n\n /**\n * Compares two tab indexes and returns `true` if they are equal.\n */\n public tabIndexesEqual(tabIndex1: SkyTabIndex, tabIndex2: SkyTabIndex): boolean {\n return (\n tabIndex1 === tabIndex2 ||\n +tabIndex1 === +tabIndex2\n );\n }\n\n /**\n * Verifies if a provided tab index is registered.\n */\n public isValidTabIndex(tabIndex: SkyTabIndex): boolean {\n return this.tabs.some(tab => this.tabIndexesEqual(tab.tabIndex, tabIndex));\n }\n\n /**\n * Activates the first registered tab.\n */\n public activateFirstTab(): SkyTabIndex | undefined {\n const firstTabIndex = this.tabs[0] && this.tabs[0].tabIndex;\n if (firstTabIndex !== undefined) {\n this.setActiveTabIndex(firstTabIndex);\n return firstTabIndex;\n }\n }\n\n /**\n * Activates the next registered tab, or the previous one based on a provided array index.\n */\n public activateNearestTab(arrayIndex: number): void {\n const newActiveTab = this.tabs[arrayIndex] || this.tabs[arrayIndex - 1];\n if (newActiveTab) {\n this.currentActiveTabIndex = newActiveTab.tabIndex;\n }\n }\n\n private isTabIndexActive(tabIndex: SkyTabIndex): boolean {\n return this.tabIndexesEqual(tabIndex, this.currentActiveTabIndex);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nimport {\n BehaviorSubject,\n Observable\n} from 'rxjs';\n\nimport {\n SkyTabIndex\n} from './tab-index';\n\nimport {\n SkyTabsetPermalinkService\n} from './tabset-permalink.service';\n\nimport {\n SkyTabsetService\n} from './tabset.service';\n\nlet nextId = 0;\n\n@Component({\n selector: 'sky-tab',\n templateUrl: './tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkyTabComponent implements OnChanges, OnDestroy {\n\n /**\n * Indicates whether the tab is active when the tabset loads. After initialization, the `active`\n * property on the tabset component should be used to set the active tab.\n * @default false\n */\n @Input()\n public set active(value: boolean) {\n if (\n value !== undefined &&\n value !== this._active\n ) {\n this._active = value;\n this._activeChange.next();\n }\n }\n\n public get active(): boolean {\n return this._active || false;\n }\n\n public get activeChange(): Observable<void> {\n return this._activeChange.asObservable();\n }\n\n /**\n * Indicates whether to disable the tab.\n * @default false\n */\n @Input()\n public disabled: boolean;\n\n /**\n * Specifies a custom query parameter value for the tab.\n * This works in conjunction with the tabset's `permalinkId` to distinguish\n * the tab's unique state in the URL by generating a query parameter that is\n * written as `?<queryParam>-active-tab=<sanitized-tab-heading`.\n * By default, the query parameter's value is parsed automatically from the tab's heading text.\n */\n @Input()\n public set permalinkValue(value: string) {\n this._permalinkValue = this.permalinkService.urlify(value);\n }\n\n public get permalinkValue(): string {\n return this._permalinkValue || this.permalinkService.urlify(this.tabHeading);\n }\n\n /**\n * Displays a counter beside the tab header.\n */\n @Input()\n public tabHeaderCount: string;\n\n /**\n * Specifies the tab header.\n * When using tabs as the main navigation on a page,\n * use [the Angular `Title` service](https://angular.io/docs/ts/latest/cookbook/set-document-title.html)\n * and [the SKY UX `title` configuration property](https://developer.blackbaud.com/skyux/learn/reference/configuration#app)\n * to reflect the tab header in the page title.\n * @required\n */\n @Input()\n public tabHeading: string;\n\n /**\n * Specifies a unique identifier for the tab.\n * If not defined, the identifier is set to the position of the tab on load, starting with `0`.\n */\n @Input()\n public set tabIndex(value: SkyTabIndex) {\n if (\n value !== this._tabIndex &&\n value !== undefined &&\n this._tabIndex !== undefined\n ) {\n this.tabsetService.updateTabIndex(this._tabIndex, value);\n this._tabIndexChange.next(value);\n }\n\n this._tabIndex = value;\n }\n\n public get tabIndex(): SkyTabIndex {\n return this._tabIndex;\n }\n\n /**\n * Fires when users click the button to close the tab.\n * The close button is added to the tab when you specify a listener for this event.\n */\n @Output()\n public close = new EventEmitter<void>();\n\n public get closeable(): boolean {\n return this.close.observers.length > 0;\n }\n\n /**\n * Alerts the tabset component when this component has changes that need to be reflected in the UI.\n */\n public get stateChange(): Observable<void> {\n return this._stateChange.asObservable();\n }\n\n public get tabIndexChange(): Observable<SkyTabIndex> {\n return this._tabIndexChange.asObservable();\n }\n\n public showContent: boolean = false;\n\n public tabButtonId: string;\n\n public tabPanelId: string;\n\n private _active: boolean;\n\n private _activeChange = new BehaviorSubject<void>(undefined);\n\n private _permalinkValue: string;\n\n private _stateChange = new BehaviorSubject<void>(undefined);\n\n private _tabIndex: SkyTabIndex;\n\n private _tabIndexChange = new BehaviorSubject<SkyTabIndex>(undefined);\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private permalinkService: SkyTabsetPermalinkService,\n private tabsetService: SkyTabsetService\n ) {\n const id = nextId++;\n this.tabPanelId = `sky-tab-${id}`;\n this.tabButtonId = `${this.tabPanelId}-nav-btn`;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.disabled && !changes.disabled.firstChange ||\n changes.tabHeading && !changes.tabHeading.firstChange ||\n changes.tabHeaderCount && !changes.tabHeaderCount.firstChange ||\n changes.permalinkValue && !changes.permalinkValue.firstChange\n ) {\n this._stateChange.next();\n }\n }\n\n public ngOnDestroy(): void {\n this._stateChange.complete();\n this.tabsetService.unregisterTab(this.tabIndex);\n }\n\n public init(): void {\n this._tabIndex = this.tabsetService.registerTab(this.tabIndex);\n }\n\n public activate(): void {\n this._active = true;\n this.showContent = true;\n this.changeDetector.markForCheck();\n }\n\n public deactivate(): void {\n this._active = false;\n this.showContent = false;\n this.changeDetector.markForCheck();\n }\n\n}\n","<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n>\n <ng-content></ng-content>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input\n} from '@angular/core';\n\nimport {\n SkyLibResourcesService\n} from '@skyux/i18n';\n\nimport {\n forkJoin\n} from 'rxjs';\n\nimport {\n take\n} from 'rxjs/operators';\n\nimport {\n SkyTabsetComponent\n} from './tabset.component';\n\nimport {\n SkyTabComponent\n} from './tab.component';\n\nconst buttonTypeNext = 'next';\n\nconst buttonTypePrevious = 'previous';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-tabset-nav-button',\n templateUrl: './tabset-nav-button.component.html'\n})\nexport class SkyTabsetNavButtonComponent implements AfterViewInit {\n\n @Input()\n public tabset: SkyTabsetComponent;\n\n @Input()\n public buttonType: string;\n\n @Input()\n public set buttonText(value: string) {\n this._buttonText = value;\n }\n\n public get buttonText(): string {\n if (this._buttonText) {\n return this._buttonText;\n }\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n return this.previousButtonText;\n case buttonTypeNext:\n return this.nextButtonText;\n /* istanbul ignore next */\n default:\n return '';\n }\n }\n\n public get disabled(): boolean {\n let tabToSelect: SkyTabComponent;\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n tabToSelect = this.previousTab;\n break;\n case buttonTypeNext:\n tabToSelect = this.nextTab;\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n\n return !tabToSelect || tabToSelect.disabled;\n }\n\n private get selectedTab(): SkyTabComponent {\n let selectedTab: SkyTabComponent;\n\n if (this.tabset && this.tabset.tabs) {\n selectedTab = this.tabset.tabs.find((tab) => tab.tabIndex === this.tabset.lastActiveTabIndex);\n }\n\n return selectedTab;\n }\n\n private get nextTab(): SkyTabComponent {\n let selectedTab = this.selectedTab;\n\n if (selectedTab) {\n let tabs = this.tabset.tabs.toArray();\n return tabs[tabs.indexOf(selectedTab) + 1];\n }\n\n return undefined;\n }\n\n private get previousTab(): SkyTabComponent {\n let selectedTab = this.selectedTab;\n\n if (selectedTab) {\n let tabs = this.tabset.tabs.toArray();\n return tabs[tabs.indexOf(selectedTab) - 1];\n }\n\n return undefined;\n }\n\n private _buttonText: string;\n private previousButtonText: string;\n private nextButtonText: string;\n\n constructor(private resourceService: SkyLibResourcesService, private changeDetector: ChangeDetectorRef) { }\n\n public ngAfterViewInit() {\n forkJoin([\n this.resourceService.getString('skyux_tabs_navigator_previous'),\n this.resourceService.getString('skyux_tabs_navigator_next')\n ])\n .pipe(take(1))\n .subscribe(resources => {\n this.previousButtonText = resources[0];\n this.nextButtonText = resources[1];\n this.changeDetector.detectChanges();\n });\n }\n\n public buttonClick() {\n let tabToSelect: SkyTabComponent;\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n tabToSelect = this.previousTab;\n break;\n case buttonTypeNext:\n tabToSelect = this.nextTab;\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n\n /* istanbul ignore else */\n if (tabToSelect && !tabToSelect.disabled) {\n this.tabset.active = tabToSelect.tabIndex;\n }\n }\n}\n","<button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"buttonClick()\"\n>\n {{ buttonText }}\n</button>\n","import {\n ElementRef,\n Injectable\n} from '@angular/core';\n\nimport {\n BehaviorSubject,\n Observable\n} from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetAdapterService {\n\n public get overflowChange(): Observable<boolean> {\n return this._overflowChange.asObservable();\n }\n\n private currentOverflow: boolean;\n\n private tabsetRef: ElementRef;\n\n private tabsOffsetLeft: number;\n\n private _overflowChange = new BehaviorSubject<boolean>(false);\n\n public registerTabset(tabsetRef: ElementRef): void {\n this.tabsetRef = tabsetRef;\n this.tabsOffsetLeft = this.getTabsOffsetLeft(tabsetRef.nativeElement);\n }\n\n /**\n * Detects if the tab buttons are wider than the tabset container.\n */\n public detectOverflow(): void {\n const nativeElement = this.tabsetRef.nativeElement;\n\n const tabsetRect = nativeElement\n .querySelector('.sky-tabset')\n .getBoundingClientRect();\n\n const tabButtonsRect = nativeElement\n .querySelector('.sky-tabset-tabs')\n .getBoundingClientRect();\n\n const tabExtraButtonsRect = nativeElement\n .querySelector('.sky-tabset-btns')\n .getBoundingClientRect();\n\n const tabButtonsWidth = tabButtonsRect.width + tabExtraButtonsRect.width + this.tabsOffsetLeft;\n\n const newOverflow = (tabButtonsWidth > tabsetRect.width);\n if (this.currentOverflow !== newOverflow) {\n this.currentOverflow = newOverflow;\n this._overflowChange.next(this.currentOverflow);\n }\n }\n\n /**\n * Returns the number of pixels to the left of the first tab.\n */\n private getTabsOffsetLeft(tabsetEl: HTMLElement): number {\n const tabsetRect = tabsetEl.getBoundingClientRect();\n\n // The dropdown element is the first \"tab\" and always exists in the DOM, even when hidden.\n const firstTabRect = tabsetEl.querySelector('.sky-tabset-dropdown').getBoundingClientRect();\n\n return firstTabRect.left - tabsetRect.left;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {\n combineLatest,\n race,\n Subject\n} from 'rxjs';\n\nimport {\n distinctUntilChanged,\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyTabIndex\n} from './tab-index';\n\nimport {\n SkyTabsetStyle\n} from './tabset-style';\n\nimport {\n SkyTabComponent\n} from './tab.component';\n\nimport {\n SkyTabsetAdapterService\n} from './tabset-adapter.service';\n\nimport {\n SkyTabsetButtonsDisplayMode\n} from './tabset-buttons-display-mode';\n\nimport {\n SkyTabsetPermalinkService\n} from './tabset-permalink.service';\n\nimport {\n SkyTabsetService\n} from './tabset.service';\n\nimport {\n SkyTabsetTabIndexesChange\n} from './tabset-tab-indexes-change';\n\n/**\n * @internal\n */\ninterface TabButtonViewModel {\n active: boolean;\n ariaControls: string;\n buttonHref: string;\n buttonId: string;\n buttonText: string;\n buttonTextCount: string;\n closeable: boolean;\n disabled: boolean;\n tabIndex: SkyTabIndex;\n}\n\n@Component({\n selector: 'sky-tabset',\n styleUrls: ['./tabset.component.scss'],\n templateUrl: './tabset.component.html',\n providers: [\n SkyTabsetAdapterService,\n SkyTabsetPermalinkService,\n SkyTabsetService\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SkyTabsetComponent implements AfterViewInit, OnDestroy {\n\n /**\n * Activates a tab by its `tabIndex` property.\n */\n @Input()\n public set active(value: SkyTabIndex) {\n if (\n value === undefined ||\n this.tabsetService.tabIndexesEqual(value, this._active)\n ) {\n return;\n }\n\n this._active = value;\n\n if (this.tabs) {\n this.tabsetService.setActiveTabIndex(value);\n } else {\n // On init, wait for children tabs to render before broadcasting the active tab index.\n setTimeout(() => {\n if (this.tabsetService.isValidTabIndex(value)) {\n // On init, yield to the permalink ID, if it exists.\n if (this.getActiveTabIndexByPermalinkId() === undefined) {\n this.tabsetService.setActiveTabIndex(value);\n }\n } else {\n // Activate the first tab if the new tab index is invalid.\n this._active = this.tabsetService.activateFirstTab();\n }\n });\n }\n }\n\n public get active(): SkyTabIndex {\n return this._active;\n }\n\n /**\n * Specifies an ARIA label for the tabset. This sets the tabset's `aria-label` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset includes a visible label, use `ariaLabelledBy` instead.\n */\n @Input()\n public ariaLabel: string;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that labels\n * the tabset. This sets the tabset's `aria-labelledby` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset does not include a visible label, use `ariaLabel` instead.\n */\n @Input()\n public ariaLabelledBy: string;\n\n /**\n * Distinguishes a tabset's unique state in the URL by generating a query parameter\n * that is written as `?<queryParam>-active-tab=<sanitized-tab-heading>`.\n * The query parameter's value is parsed automatically from the selected tab's heading text,\n * but you can supply a custom query parameter value for each tab with its `permalinkValue`.\n */\n @Input()\n public set permalinkId(value: string) {\n if (!value) {\n return;\n }\n\n const sanitized = this.permalinkService.urlify(value);\n this._permalinkId = `${sanitized}-active-tab`;\n }\n\n public get permalinkId(): string {\n return this._permalinkId || '';\n }\n\n /**\n * Specifies the behavior for a series of tabs.\n * @deprecated The property was designed to create wizards by setting tabStyle=\"wizard\" on tabsets in modals,\n * but this wizard implementation was replaced by the\n * [progress indicator component](https://developer.blackbaud.com/skyux/components/progress-indicator).\n * @default 'tabs'\n */\n @Input()\n public set tabStyle(value: SkyTabsetStyle) {\n /*istanbul ignore else*/\n if (value && value.toLowerCase() === 'wizard') {\n console.warn(\n 'The tabset wizard is deprecated. Please implement the new approach using ' +\n 'progress indicator as documented here: https://developer.blackbaud.com/skyux/components/wizard.'\n );\n }\n\n this._tabStyle = value;\n }\n\n public get tabStyle(): SkyTabsetStyle {\n return this._tabStyle || 'tabs';\n }\n\n /**\n * Fires when the active tab changes. This event emits the index of the active tab.\n */\n @Output()\n public activeChange = new EventEmitter<SkyTabIndex>();\n\n /**\n * Fires when users click the button to add a new tab.\n * The new tab button is added to the tab area when you specify a listener for this event.\n */\n @Output()\n public newTab = new EventEmitter<void>();\n\n /**\n * Fires when users click the button to open a tab.\n * The open tab button is added to the tab area when you specify a listener for this event.\n */\n @Output()\n public openTab = new EventEmitter<void>();\n\n /**\n * Fires when any tab's `tabIndex` value changes.\n */\n @Output()\n public tabIndexesChange = new EventEmitter<SkyTabsetTabIndexesChange>();\n\n public set tabDisplayMode(value: SkyTabsetButtonsDisplayMode) {\n this._tabDisplayMode = value;\n this.changeDetector.markForCheck();\n }\n\n public get tabDisplayMode(): SkyTabsetButtonsDisplayMode {\n return this._tabDisplayMode || 'tabs';\n }\n\n @ContentChildren(SkyTabComponent)\n public tabs: QueryList<SkyTabComponent>;\n\n public dropdownTriggerButtonText: string;\n\n /**\n * This property is used by the deprecated tabset-nav-button component.\n * @internal\n */\n public lastActiveTabIndex: SkyTabIndex;\n\n public tabButtons: TabButtonViewModel[] = [];\n\n private ngUnsubscribe = new Subject<void>();\n\n private tabComponentsStateChangeUnsubscribe = new Subject<void>();\n\n private _active: SkyTabIndex;\n\n private _permalinkId: string;\n\n private _tabDisplayMode: SkyTabsetButtonsDisplayMode;\n\n private _tabStyle: SkyTabsetStyle;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private adapterService: SkyTabsetAdapterService,\n private permalinkService: SkyTabsetPermalinkService,\n private tabsetService: SkyTabsetService\n ) { }\n\n public ngAfterViewInit(): void {\n\n this.initTabComponents();\n this.listenTabComponentsStructuralChange();\n\n const initialTabIndex = this.getInitialTabIndex();\n this.tabsetService.setActiveTabIndex(initialTabIndex);\n\n this.listenTabButtonsOverflowChange();\n this.listenLocationPopStateChange();\n\n // If the currently active tab is getting unregistered, activate the next one.\n this.tabsetService.activeTabUnregistered\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(tab => {\n // Wait for the new tabs to render before activating.\n setTimeout(() => {\n this.tabsetService.activateNearestTab(tab.arrayIndex);\n });\n });\n\n // Let the tabset render the initial active index before listening for changes.\n setTimeout(() => {\n this.listenTabComponentsStateChange();\n this.listenActiveIndexChange();\n this.permalinkService.init();\n });\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.unsubscribeTabComponentsStateChange();\n this.permalinkService.clearParam(this.permalinkId);\n }\n\n public onWindowResize(): void {\n this.adapterService.detectOverflow();\n }\n\n public onTabCloseClick(tabButton: TabButtonViewModel): void {\n const tabComponent = this.tabs.find(tab =>\n this.tabsetService.tabIndexesEqual(tab.tabIndex, tabButton.tabIndex)\n );\n\n tabComponent.close.emit();\n }\n\n public onTabButtonClick(tabButton: TabButtonViewModel): void {\n this.tabsetService.setActiveTabIndex(tabButton.tabIndex);\n }\n\n public onNewTabClick(): void {\n this.newTab.emit();\n }\n\n public onOpenTabClick(): void {\n this.openTab.emit();\n }\n\n /**\n * Sets the initial active tab index based on the following criteria.\n * 1. Does the URL include a query param that reflects this tabset's active tab?\n * 2. Does one of the tab components have their `active` property set to `true`?\n * 3. Is the tabset component's `active` property set to a specific tab index?\n */\n private getInitialTabIndex(): SkyTabIndex {\n let activeIndex: SkyTabIndex = this.getActiveTabIndexByPermalinkId();\n if (activeIndex === undefined) {\n activeIndex = this.getActiveTabComponent()?.tabIndex;\n if (activeIndex === undefined) {\n activeIndex = this.active;\n }\n }\n\n return activeIndex;\n }\n\n private listenActiveIndexChange(): void {\n this.tabsetService.activeTabIndex\n .pipe(\n distinctUntilChanged(),\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe(activeIndex => {\n this.updateTabsetComponent(activeIndex);\n });\n }\n\n private listenTabComponentsStructuralChange(): void {\n this.tabs.changes\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.resetTabComponents();\n });\n }\n\n private listenTabComponentsStateChange(): void {\n combineLatest(this.tabs.map(tab => tab.activeChange))\n .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n const tabIndex = this.getActiveTabComponent()?.tabIndex;\n this.tabsetService.setActiveTabIndex(tabIndex);\n });\n });\n\n combineLatest(this.tabs.map(tab => tab.tabIndexChange))\n .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))\n .subscribe(() => {\n // Don't emit the first change.\n if (this.lastActiveTabIndex !== undefined) {\n // Wait for the tab components to render changes before updating the view.\n setTimeout(() => {\n this.updateTabsetComponent(this.tabsetService.currentActiveTabIndex, true);\n this.emitTabIndexChange();\n });\n }\n });\n\n combineLatest(this.tabs.map(tab => tab.stateChange))\n .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n this.updateTabsetComponent(this.tabsetService.currentActiveTabIndex, true);\n });\n });\n }\n\n private initTabComponents(): void {\n this.tabs.forEach(tab => tab.init());\n }\n\n private resetTabComponents(): void {\n this.unsubscribeTabComponentsStateChange();\n this.tabsetService.unregisterAll();\n\n // If there are no tab components, do a hard reset of the view.\n if (this.tabs.length === 0) {\n this.updateTabsetComponent(0, true);\n return;\n }\n\n this.initTabComponents();\n const activeIndex = this.getActiveTabComponent()?.tabIndex;\n this.tabsetService.setActiveTabIndex(activeIndex, {\n emitChange: false\n });\n this.listenTabComponentsStateChange();\n }\n\n private emitTabIndexChange(): void {\n this.tabIndexesChange.emit({\n tabs: this.tabs.map(tab => ({\n tabHeading: tab.tabHeading,\n tabIndex: tab.tabIndex\n }))\n });\n }\n\n private unsubscribeTabComponentsStateChange(): void {\n this.tabComponentsStateChangeUnsubscribe.next();\n this.tabComponentsStateChangeUnsubscribe.complete();\n this.tabComponentsStateChangeUnsubscribe = new Subject<void>();\n }\n\n private listenTabButtonsOverflowChange(): void {\n this.adapterService.registerTabset(this.elementRef);\n this.adapterService.overflowChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(isOverflowing => {\n this.tabDisplayMode = (isOverflowing) ? 'dropdown' : 'tabs';\n this.changeDetector.markForCheck();\n });\n }\n\n /**\n * Listen for back/forward history button presses to detect query param changes in the URL.\n */\n private listenLocationPopStateChange(): void {\n this.permalinkService.popStateChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.setActiveTabIndexByPermalinkId();\n });\n }\n\n private setActiveTabIndexByPermalinkId(): void {\n const activeIndex = this.getActiveTabIndexByPermalinkId();\n this.tabsetService.setActiveTabIndex(activeIndex);\n }\n\n private getActiveTabIndexByPermalinkId(): SkyTabIndex {\n if (this.permalinkId) {\n const paramValue = this.permalinkService.getParam(this.permalinkId);\n if (paramValue) {\n return this.tabs.find(tab => tab.permalinkValue === paramValue)?.tabIndex;\n }\n }\n }\n\n private getActiveTabComponent(): SkyTabComponent {\n return this.tabs.toArray().reverse().find(tab => tab.active === true);\n }\n\n private createTabButtons(activeIndex: SkyTabIndex): TabButtonViewModel[] {\n return this.tabs.map(tab => ({\n active: this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex),\n closeable: tab.closeable,\n ariaControls: tab.tabPanelId,\n disabled: tab.disabled,\n /*tslint:disable-next-line:no-null-keyword*/\n buttonHref: (tab.disabled) ? null : this.permalinkService.getParamHref(\n this.permalinkId,\n tab.permalinkValue\n ),\n buttonId: tab.tabButtonId,\n buttonTextCount: tab.tabHeaderCount,\n buttonText: tab.tabHeading,\n tabIndex: tab.tabIndex\n }));\n }\n\n private updateTabButtons(activeIndex: SkyTabIndex): void {\n this.tabButtons.forEach(button => {\n button.active = this.tabsetService.tabIndexesEqual(button.tabIndex, activeIndex);\n });\n }\n\n /**\n * Updates the UI and state of the tabset component after the tab index or\n * tab components have changed.\n * @param activeIndex The currently active tab index.\n * @param regenerateTabButtons Indicates if tab button view models should be regenerated.\n * Setting this value to `false` will simply update the existing tab buttons. Setting this value\n * to `true` is only necessary when the underlying tab components have changed and the tab\n * buttons must reflect those changes.\n */\n private updateTabsetComponent(\n activeIndex: SkyTabIndex,\n regenerateTabButtons = false\n ): void {\n\n // Activate/deactivate tab components.\n this.tabs.forEach(tab => {\n this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex)\n ? tab.activate()\n : tab.deactivate();\n });\n\n // Update the tab button models.\n if (regenerateTabButtons || !this.tabButtons.length) {\n this.tabButtons = this.createTabButtons(activeIndex);\n } else {\n this.updateTabButtons(activeIndex);\n }\n\n // Update the dropdown trigger button text.\n this.dropdownTriggerButtonText = this.tabButtons.find(b => {\n return this.tabsetService.tabIndexesEqual(b.tabIndex, activeIndex);\n })?.buttonText;\n\n // Set the query params based on active tab.\n if (this.permalinkId) {\n const activeTabComponent = this.tabs.find(tab => {\n return this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex);\n });\n this.permalinkService.setParam(this.permalinkId, activeTabComponent.permalinkValue);\n }\n\n // Wait for tab button view models to render before gauging dimensions.\n setTimeout(() => {\n this.adapterService.detectOverflow();\n });\n\n this.changeDetector.markForCheck();\n\n // Emit the new active index value to consumers.\n if (this.lastActiveTabIndex !== activeIndex) {\n this.lastActiveTabIndex = activeIndex;\n this.activeChange.emit(activeIndex);\n }\n }\n}\n","<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\"\n (window:resize)=\"onWindowResize()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\"\n buttonType=\"tab\"\n >\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span\n class=\"sky-tabset-tabs\"\n >\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </ng-container>\n </span>\n <span\n class=\"sky-tabset-btns\"\n >\n <button *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon\n icon=\"plus-circle\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon\n icon=\"folder-open-o\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template\n let-tabButton\n #tabButtonTemplate\n>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabStyle]=\"tabStyle\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n","import {\n CommonModule\n} from '@angular/common';\n\nimport {\n NgModule\n} from '@angular/core';\n\nimport {\n RouterModule\n} from '@angular/router';\n\nimport {\n SkyI18nModule\n} from '@skyux/i18n';\n\nimport {\n SkyIconModule\n} from '@skyux/indicators';\n\nimport {\n SkyDropdownModule\n} from '@skyux/popovers';\n\nimport {\n SkyThemeModule\n} from '@skyux/theme';\n\nimport {\n SkyTabsResourcesModule\n} from '../shared/sky-tabs-resources.module';\n\nimport {\n SkyTabButtonComponent\n} from './tab-button.component';\n\nimport {\n SkyTabComponent\n} from './tab.component';\n\nimport {\n SkyTabsetNavButtonComponent\n} from './tabset-nav-button.component';\n\nimport {\n SkyTabsetComponent\n} from './tabset.component';\n\n@NgModule({\n declarations: [\n SkyTabButtonComponent,\n SkyTabComponent,\n SkyTabsetComponent,\n SkyTabsetNavButtonComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n SkyDropdownModule,\n SkyI18nModule,\n SkyIconModule,\n SkyTabsResourcesModule,\n SkyThemeModule\n ],\n exports: [\n SkyTabComponent,\n SkyTabsetComponent,\n SkyTabsetNavButtonComponent\n ]\n})\nexport class SkyTabsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId"],"mappings":"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"}
@@ -6,6 +6,7 @@ export declare class SkyVerticalTabsetAdapterService {
6
6
  private renderer;
7
7
  constructor(rendererFactory: RendererFactory2);
8
8
  getWidth(elementRef: ElementRef): number;
9
+ scrollToContentTop(element: ElementRef): void;
9
10
  setResponsiveClass(element: ElementRef, breakpoint: SkyMediaBreakpoints): void;
10
11
  static ɵfac: i0.ɵɵFactoryDeclaration<SkyVerticalTabsetAdapterService, never>;
11
12
  static ɵprov: i0.ɵɵInjectableDeclaration<SkyVerticalTabsetAdapterService>;