@skyux/tabs 5.6.2 → 6.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/documentation.json +6 -6
  2. package/esm2020/index.mjs +23 -0
  3. package/esm2020/lib/modules/sectioned-form/sectioned-form-section.component.mjs +62 -0
  4. package/esm2020/lib/modules/sectioned-form/sectioned-form.component.mjs +109 -0
  5. package/esm2020/lib/modules/sectioned-form/sectioned-form.module.mjs +35 -0
  6. package/esm2020/lib/modules/sectioned-form/sectioned-form.service.mjs +35 -0
  7. package/esm2020/lib/modules/shared/sky-tabs-resources.module.mjs +52 -0
  8. package/esm2020/lib/modules/tabs/tab-button.component.mjs +70 -0
  9. package/esm2020/lib/modules/tabs/tab-index.mjs +2 -0
  10. package/esm2020/lib/modules/tabs/tab.component.mjs +131 -0
  11. package/esm2020/lib/modules/tabs/tabs.module.mjs +57 -0
  12. package/esm2020/lib/modules/tabs/tabset-active-tab-unregistered-args.mjs +2 -0
  13. package/esm2020/lib/modules/tabs/tabset-adapter.service.mjs +56 -0
  14. package/esm2020/lib/modules/tabs/tabset-buttons-display-mode.mjs +2 -0
  15. package/esm2020/lib/modules/tabs/tabset-nav-button.component.mjs +116 -0
  16. package/esm2020/lib/modules/tabs/tabset-permalink.service.mjs +126 -0
  17. package/esm2020/lib/modules/tabs/tabset-style.mjs +2 -0
  18. package/esm2020/lib/modules/tabs/tabset-tab-indexes-change.mjs +2 -0
  19. package/esm2020/lib/modules/tabs/tabset.component.mjs +396 -0
  20. package/esm2020/lib/modules/tabs/tabset.service.mjs +110 -0
  21. package/esm2020/lib/modules/vertical-tabset/vertical-tab-media-query.service.mjs +72 -0
  22. package/esm2020/lib/modules/vertical-tabset/vertical-tab.component.mjs +197 -0
  23. package/esm2020/lib/modules/vertical-tabset/vertical-tabset-adapter.service.mjs +48 -0
  24. package/esm2020/lib/modules/vertical-tabset/vertical-tabset-group.component.mjs +83 -0
  25. package/esm2020/lib/modules/vertical-tabset/vertical-tabset.component.mjs +150 -0
  26. package/esm2020/lib/modules/vertical-tabset/vertical-tabset.module.mjs +60 -0
  27. package/esm2020/lib/modules/vertical-tabset/vertical-tabset.service.mjs +168 -0
  28. package/esm2020/skyux-tabs.mjs +5 -0
  29. package/esm2020/testing/public-api.mjs +3 -0
  30. package/esm2020/testing/skyux-tabs-testing.mjs +5 -0
  31. package/esm2020/testing/tabs/tab-fixture-tab.mjs +2 -0
  32. package/esm2020/testing/tabs/tabset-fixture.mjs +130 -0
  33. package/fesm2015/{skyux-tabs-testing.js → skyux-tabs-testing.mjs} +1 -1
  34. package/fesm2015/skyux-tabs-testing.mjs.map +1 -0
  35. package/fesm2015/{skyux-tabs.js → skyux-tabs.mjs} +188 -237
  36. package/fesm2015/skyux-tabs.mjs.map +1 -0
  37. package/{esm2015/testing/tabs/tabset-fixture.js → fesm2020/skyux-tabs-testing.mjs} +39 -43
  38. package/fesm2020/skyux-tabs-testing.mjs.map +1 -0
  39. package/fesm2020/skyux-tabs.mjs +2005 -0
  40. package/fesm2020/skyux-tabs.mjs.map +1 -0
  41. package/lib/modules/shared/sky-tabs-resources.module.d.ts +1 -1
  42. package/package.json +40 -19
  43. package/testing/package.json +5 -5
  44. package/bundles/skyux-tabs-testing.umd.js +0 -498
  45. package/bundles/skyux-tabs.umd.js +0 -2258
  46. package/esm2015/index.js +0 -23
  47. package/esm2015/index.js.map +0 -1
  48. package/esm2015/lib/modules/sectioned-form/sectioned-form-section.component.js +0 -67
  49. package/esm2015/lib/modules/sectioned-form/sectioned-form-section.component.js.map +0 -1
  50. package/esm2015/lib/modules/sectioned-form/sectioned-form.component.js +0 -116
  51. package/esm2015/lib/modules/sectioned-form/sectioned-form.component.js.map +0 -1
  52. package/esm2015/lib/modules/sectioned-form/sectioned-form.module.js +0 -35
  53. package/esm2015/lib/modules/sectioned-form/sectioned-form.module.js.map +0 -1
  54. package/esm2015/lib/modules/sectioned-form/sectioned-form.service.js +0 -35
  55. package/esm2015/lib/modules/sectioned-form/sectioned-form.service.js.map +0 -1
  56. package/esm2015/lib/modules/shared/sky-tabs-resources.module.js +0 -52
  57. package/esm2015/lib/modules/shared/sky-tabs-resources.module.js.map +0 -1
  58. package/esm2015/lib/modules/tabs/tab-button.component.js +0 -76
  59. package/esm2015/lib/modules/tabs/tab-button.component.js.map +0 -1
  60. package/esm2015/lib/modules/tabs/tab-index.js +0 -2
  61. package/esm2015/lib/modules/tabs/tab-index.js.map +0 -1
  62. package/esm2015/lib/modules/tabs/tab.component.js +0 -135
  63. package/esm2015/lib/modules/tabs/tab.component.js.map +0 -1
  64. package/esm2015/lib/modules/tabs/tabs.module.js +0 -57
  65. package/esm2015/lib/modules/tabs/tabs.module.js.map +0 -1
  66. package/esm2015/lib/modules/tabs/tabset-active-tab-unregistered-args.js +0 -2
  67. package/esm2015/lib/modules/tabs/tabset-active-tab-unregistered-args.js.map +0 -1
  68. package/esm2015/lib/modules/tabs/tabset-adapter.service.js +0 -56
  69. package/esm2015/lib/modules/tabs/tabset-adapter.service.js.map +0 -1
  70. package/esm2015/lib/modules/tabs/tabset-buttons-display-mode.js +0 -2
  71. package/esm2015/lib/modules/tabs/tabset-buttons-display-mode.js.map +0 -1
  72. package/esm2015/lib/modules/tabs/tabset-nav-button.component.js +0 -119
  73. package/esm2015/lib/modules/tabs/tabset-nav-button.component.js.map +0 -1
  74. package/esm2015/lib/modules/tabs/tabset-permalink.service.js +0 -126
  75. package/esm2015/lib/modules/tabs/tabset-permalink.service.js.map +0 -1
  76. package/esm2015/lib/modules/tabs/tabset-style.js +0 -2
  77. package/esm2015/lib/modules/tabs/tabset-style.js.map +0 -1
  78. package/esm2015/lib/modules/tabs/tabset-tab-indexes-change.js +0 -2
  79. package/esm2015/lib/modules/tabs/tabset-tab-indexes-change.js.map +0 -1
  80. package/esm2015/lib/modules/tabs/tabset.component.js +0 -405
  81. package/esm2015/lib/modules/tabs/tabset.component.js.map +0 -1
  82. package/esm2015/lib/modules/tabs/tabset.service.js +0 -110
  83. package/esm2015/lib/modules/tabs/tabset.service.js.map +0 -1
  84. package/esm2015/lib/modules/vertical-tabset/vertical-tab-media-query.service.js +0 -72
  85. package/esm2015/lib/modules/vertical-tabset/vertical-tab-media-query.service.js.map +0 -1
  86. package/esm2015/lib/modules/vertical-tabset/vertical-tab.component.js +0 -203
  87. package/esm2015/lib/modules/vertical-tabset/vertical-tab.component.js.map +0 -1
  88. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-adapter.service.js +0 -48
  89. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-adapter.service.js.map +0 -1
  90. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-group.component.js +0 -89
  91. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-group.component.js.map +0 -1
  92. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.component.js +0 -157
  93. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.component.js.map +0 -1
  94. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.module.js +0 -60
  95. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.module.js.map +0 -1
  96. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.service.js +0 -170
  97. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.service.js.map +0 -1
  98. package/esm2015/skyux-tabs.js +0 -5
  99. package/esm2015/skyux-tabs.js.map +0 -1
  100. package/esm2015/testing/public-api.js +0 -3
  101. package/esm2015/testing/public-api.js.map +0 -1
  102. package/esm2015/testing/skyux-tabs-testing.js +0 -5
  103. package/esm2015/testing/skyux-tabs-testing.js.map +0 -1
  104. package/esm2015/testing/tabs/tab-fixture-tab.js +0 -2
  105. package/esm2015/testing/tabs/tab-fixture-tab.js.map +0 -1
  106. package/esm2015/testing/tabs/tabset-fixture.js.map +0 -1
  107. package/fesm2015/skyux-tabs-testing.js.map +0 -1
  108. package/fesm2015/skyux-tabs.js.map +0 -1
@@ -0,0 +1,72 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { SkyMediaBreakpoints } from '@skyux/core';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * @internal
7
+ */
8
+ export class SkyVerticalTabMediaQueryService {
9
+ constructor() {
10
+ this.currentSubject = new BehaviorSubject(this.current);
11
+ this._current = SkyMediaBreakpoints.xs;
12
+ this.currentSubject.next(this._current);
13
+ }
14
+ get current() {
15
+ return this._current;
16
+ }
17
+ subscribe(listener) {
18
+ return this.currentSubject.subscribe({
19
+ next: (breakpoints) => {
20
+ listener(breakpoints);
21
+ },
22
+ });
23
+ }
24
+ setBreakpointForWidth(width) {
25
+ let breakpoint;
26
+ if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.xs)) {
27
+ breakpoint = SkyMediaBreakpoints.xs;
28
+ }
29
+ else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.sm)) {
30
+ breakpoint = SkyMediaBreakpoints.sm;
31
+ }
32
+ else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.md)) {
33
+ breakpoint = SkyMediaBreakpoints.md;
34
+ }
35
+ else {
36
+ breakpoint = SkyMediaBreakpoints.lg;
37
+ }
38
+ this._current = breakpoint;
39
+ this.currentSubject.next(this._current);
40
+ }
41
+ isWidthWithinBreakpiont(width, breakpoint) {
42
+ const xsBreakpointMaxPixels = 767;
43
+ const smBreakpointMinPixels = 768;
44
+ const smBreakpointMaxPixels = 991;
45
+ const mdBreakpointMinPixels = 992;
46
+ const mdBreakpointMaxPixels = 1199;
47
+ const lgBreakpointMinPixels = 1200;
48
+ switch (breakpoint) {
49
+ case SkyMediaBreakpoints.xs: {
50
+ return width <= xsBreakpointMaxPixels;
51
+ }
52
+ case SkyMediaBreakpoints.sm: {
53
+ return width >= smBreakpointMinPixels && width <= smBreakpointMaxPixels;
54
+ }
55
+ case SkyMediaBreakpoints.md: {
56
+ return width >= mdBreakpointMinPixels && width <= mdBreakpointMaxPixels;
57
+ }
58
+ default: {
59
+ return width >= lgBreakpointMinPixels;
60
+ }
61
+ }
62
+ }
63
+ destroy() {
64
+ this.currentSubject.complete();
65
+ }
66
+ }
67
+ SkyVerticalTabMediaQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyVerticalTabMediaQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
68
+ SkyVerticalTabMediaQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyVerticalTabMediaQueryService });
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyVerticalTabMediaQueryService, decorators: [{
70
+ type: Injectable
71
+ }], ctorParameters: function () { return []; } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFiLW1lZGlhLXF1ZXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYi1tZWRpYS1xdWVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUF5QixNQUFNLGFBQWEsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQzs7QUFFckQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sK0JBQStCO0lBVzFDO1FBTlEsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FDMUMsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO1FBRU0sYUFBUSxHQUFHLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUd4QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQVpELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQVlNLFNBQVMsQ0FBQyxRQUErQjtRQUM5QyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO1lBQ25DLElBQUksRUFBRSxDQUFDLFdBQWdDLEVBQUUsRUFBRTtnQkFDekMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0scUJBQXFCLENBQUMsS0FBYTtRQUN4QyxJQUFJLFVBQStCLENBQUM7UUFFcEMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQy9ELFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7U0FDckM7YUFBTSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDdEUsVUFBVSxHQUFHLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztTQUNyQzthQUFNLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUN0RSxVQUFVLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1NBQ3JDO2FBQU07WUFDTCxVQUFVLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1NBQ3JDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSx1QkFBdUIsQ0FDNUIsS0FBYSxFQUNiLFVBQStCO1FBRS9CLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ25DLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBRW5DLFFBQVEsVUFBVSxFQUFFO1lBQ2xCLEtBQUssbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sS0FBSyxJQUFJLHFCQUFxQixDQUFDO2FBQ3ZDO1lBQ0QsS0FBSyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0IsT0FBTyxLQUFLLElBQUkscUJBQXFCLElBQUksS0FBSyxJQUFJLHFCQUFxQixDQUFDO2FBQ3pFO1lBQ0QsS0FBSyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0IsT0FBTyxLQUFLLElBQUkscUJBQXFCLElBQUksS0FBSyxJQUFJLHFCQUFxQixDQUFDO2FBQ3pFO1lBQ0QsT0FBTyxDQUFDLENBQUM7Z0JBQ1AsT0FBTyxLQUFLLElBQUkscUJBQXFCLENBQUM7YUFDdkM7U0FDRjtJQUNILENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzs0SEFyRVUsK0JBQStCO2dJQUEvQiwrQkFBK0I7MkZBQS9CLCtCQUErQjtrQkFEM0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreU1lZGlhQnJlYWtwb2ludHMsIFNreU1lZGlhUXVlcnlMaXN0ZW5lciB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVZlcnRpY2FsVGFiTWVkaWFRdWVyeVNlcnZpY2Uge1xuICBwdWJsaWMgZ2V0IGN1cnJlbnQoKTogU2t5TWVkaWFCcmVha3BvaW50cyB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQ7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTa3lNZWRpYUJyZWFrcG9pbnRzPihcbiAgICB0aGlzLmN1cnJlbnRcbiAgKTtcblxuICBwcml2YXRlIF9jdXJyZW50ID0gU2t5TWVkaWFCcmVha3BvaW50cy54cztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmN1cnJlbnRTdWJqZWN0Lm5leHQodGhpcy5fY3VycmVudCk7XG4gIH1cblxuICBwdWJsaWMgc3Vic2NyaWJlKGxpc3RlbmVyOiBTa3lNZWRpYVF1ZXJ5TGlzdGVuZXIpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdWJqZWN0LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoYnJlYWtwb2ludHM6IFNreU1lZGlhQnJlYWtwb2ludHMpID0+IHtcbiAgICAgICAgbGlzdGVuZXIoYnJlYWtwb2ludHMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRCcmVha3BvaW50Rm9yV2lkdGgod2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgIGxldCBicmVha3BvaW50OiBTa3lNZWRpYUJyZWFrcG9pbnRzO1xuXG4gICAgaWYgKHRoaXMuaXNXaWR0aFdpdGhpbkJyZWFrcGlvbnQod2lkdGgsIFNreU1lZGlhQnJlYWtwb2ludHMueHMpKSB7XG4gICAgICBicmVha3BvaW50ID0gU2t5TWVkaWFCcmVha3BvaW50cy54cztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNXaWR0aFdpdGhpbkJyZWFrcGlvbnQod2lkdGgsIFNreU1lZGlhQnJlYWtwb2ludHMuc20pKSB7XG4gICAgICBicmVha3BvaW50ID0gU2t5TWVkaWFCcmVha3BvaW50cy5zbTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNXaWR0aFdpdGhpbkJyZWFrcGlvbnQod2lkdGgsIFNreU1lZGlhQnJlYWtwb2ludHMubWQpKSB7XG4gICAgICBicmVha3BvaW50ID0gU2t5TWVkaWFCcmVha3BvaW50cy5tZDtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWtwb2ludCA9IFNreU1lZGlhQnJlYWtwb2ludHMubGc7XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVudCA9IGJyZWFrcG9pbnQ7XG4gICAgdGhpcy5jdXJyZW50U3ViamVjdC5uZXh0KHRoaXMuX2N1cnJlbnQpO1xuICB9XG5cbiAgcHVibGljIGlzV2lkdGhXaXRoaW5CcmVha3Bpb250KFxuICAgIHdpZHRoOiBudW1iZXIsXG4gICAgYnJlYWtwb2ludDogU2t5TWVkaWFCcmVha3BvaW50c1xuICApOiBib29sZWFuIHtcbiAgICBjb25zdCB4c0JyZWFrcG9pbnRNYXhQaXhlbHMgPSA3Njc7XG4gICAgY29uc3Qgc21CcmVha3BvaW50TWluUGl4ZWxzID0gNzY4O1xuICAgIGNvbnN0IHNtQnJlYWtwb2ludE1heFBpeGVscyA9IDk5MTtcbiAgICBjb25zdCBtZEJyZWFrcG9pbnRNaW5QaXhlbHMgPSA5OTI7XG4gICAgY29uc3QgbWRCcmVha3BvaW50TWF4UGl4ZWxzID0gMTE5OTtcbiAgICBjb25zdCBsZ0JyZWFrcG9pbnRNaW5QaXhlbHMgPSAxMjAwO1xuXG4gICAgc3dpdGNoIChicmVha3BvaW50KSB7XG4gICAgICBjYXNlIFNreU1lZGlhQnJlYWtwb2ludHMueHM6IHtcbiAgICAgICAgcmV0dXJuIHdpZHRoIDw9IHhzQnJlYWtwb2ludE1heFBpeGVscztcbiAgICAgIH1cbiAgICAgIGNhc2UgU2t5TWVkaWFCcmVha3BvaW50cy5zbToge1xuICAgICAgICByZXR1cm4gd2lkdGggPj0gc21CcmVha3BvaW50TWluUGl4ZWxzICYmIHdpZHRoIDw9IHNtQnJlYWtwb2ludE1heFBpeGVscztcbiAgICAgIH1cbiAgICAgIGNhc2UgU2t5TWVkaWFCcmVha3BvaW50cy5tZDoge1xuICAgICAgICByZXR1cm4gd2lkdGggPj0gbWRCcmVha3BvaW50TWluUGl4ZWxzICYmIHdpZHRoIDw9IG1kQnJlYWtwb2ludE1heFBpeGVscztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIHdpZHRoID49IGxnQnJlYWtwb2ludE1pblBpeGVscztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRTdWJqZWN0LmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,197 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, Input, ViewChild, } from '@angular/core';
2
+ import { SkyMediaQueryService } from '@skyux/core';
3
+ import { Subject } from 'rxjs';
4
+ import { takeUntil } from 'rxjs/operators';
5
+ import { SkyVerticalTabMediaQueryService } from './vertical-tab-media-query.service';
6
+ import { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';
7
+ import { SkyVerticalTabsetService } from './vertical-tabset.service';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "./vertical-tabset-adapter.service";
10
+ import * as i2 from "./vertical-tabset.service";
11
+ import * as i3 from "./vertical-tab-media-query.service";
12
+ import * as i4 from "@skyux/indicators";
13
+ import * as i5 from "@angular/common";
14
+ import * as i6 from "@skyux/core";
15
+ let nextId = 0;
16
+ export class SkyVerticalTabComponent {
17
+ constructor(adapterService, changeRef, tabsetService, verticalTabMediaQueryService) {
18
+ this.adapterService = adapterService;
19
+ this.changeRef = changeRef;
20
+ this.tabsetService = tabsetService;
21
+ this.verticalTabMediaQueryService = verticalTabMediaQueryService;
22
+ /**
23
+ * Indicates whether the tab is active when the tabset loads.
24
+ */
25
+ this.active = false;
26
+ /**
27
+ * Indicates whether to disable the tab.
28
+ */
29
+ this.disabled = false;
30
+ /**
31
+ * Indicates whether to indicate that the tab has an error.
32
+ * @internal This is used for sectioned forms and is not currently a supported design for pure vertical tabs.
33
+ */
34
+ this.errorIndicator = false;
35
+ /**
36
+ * Specifies an ID for the tab.
37
+ * @deprecated Now that the vertical tabs provide aria labels automatically, this input is no longer necessary.
38
+ */
39
+ this.tabId = `sky-vertical-tab-${++nextId}`;
40
+ this.isMobile = false;
41
+ this._contentRendered = false;
42
+ this._mobileSubscription = new Subject();
43
+ this._ngUnsubscribe = new Subject();
44
+ this._showTabRightArrow = false;
45
+ }
46
+ /**
47
+ * Specifies an ARIA role for the vertical tab
48
+ * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)
49
+ * by indicating how the tab functions and what it controls. For information about how
50
+ * an ARIA role indicates what an item represents on a web page, see the
51
+ * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).
52
+ * @default "tab"
53
+ * @deprecated Any other value than `tab` could lead to a poor user experience for users with assistive technology.
54
+ * In the next major version, this property will be automatically set to `tab`.
55
+ */
56
+ get ariaRole() {
57
+ if (this.isMobile) {
58
+ return undefined;
59
+ }
60
+ return this._ariaRole || 'tab';
61
+ }
62
+ set ariaRole(value) {
63
+ this._ariaRole = value;
64
+ }
65
+ /**
66
+ * Indicates whether to display a chevron-right icon in the righthand side of the tab.
67
+ * @internal
68
+ */
69
+ get showTabRightArrow() {
70
+ return this._showTabRightArrow && this.tabsetService.isMobile();
71
+ }
72
+ set showTabRightArrow(value) {
73
+ this._showTabRightArrow = value;
74
+ }
75
+ set contentRendered(value) {
76
+ this._contentRendered = value;
77
+ /* istanbul ignore else */
78
+ if (this._contentRendered) {
79
+ // NOTE: Wrapped in a setTimeout here to ensure that everything has completed rendering.
80
+ setTimeout(() => {
81
+ this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));
82
+ });
83
+ }
84
+ }
85
+ get contentRendered() {
86
+ return this._contentRendered;
87
+ }
88
+ ngOnInit() {
89
+ this.isMobile = this.tabsetService.isMobile();
90
+ this.changeRef.markForCheck();
91
+ this.tabsetService.switchingMobile.subscribe((mobile) => {
92
+ this.isMobile = mobile;
93
+ this.changeRef.markForCheck();
94
+ });
95
+ // Update the breakpoint and responsive class here just as a sanity check since we can not
96
+ // watch for element resizing.
97
+ this.tabsetService.indexChanged
98
+ .pipe(takeUntil(this._ngUnsubscribe))
99
+ .subscribe((index) => {
100
+ if (this.index === index && this.contentRendered) {
101
+ this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));
102
+ }
103
+ });
104
+ this.tabsetService.addTab(this);
105
+ }
106
+ ngOnDestroy() {
107
+ this._mobileSubscription.unsubscribe();
108
+ this._ngUnsubscribe.next();
109
+ this._ngUnsubscribe.complete();
110
+ this.tabsetService.destroyTab(this);
111
+ }
112
+ tabIndex() {
113
+ if (!this.disabled) {
114
+ return 0;
115
+ }
116
+ else {
117
+ return -1;
118
+ }
119
+ }
120
+ activateTab() {
121
+ if (!this.disabled) {
122
+ this.active = true;
123
+ this.tabsetService.activateTab(this);
124
+ this.changeRef.markForCheck();
125
+ }
126
+ }
127
+ onTabButtonKeyUp(event) {
128
+ /*istanbul ignore else */
129
+ if (event.key) {
130
+ switch (event.key.toUpperCase()) {
131
+ case ' ':
132
+ case 'ENTER':
133
+ this.activateTab();
134
+ event.stopPropagation();
135
+ break;
136
+ /* istanbul ignore next */
137
+ default:
138
+ break;
139
+ }
140
+ }
141
+ }
142
+ onWindowResize() {
143
+ this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));
144
+ }
145
+ tabDeactivated() {
146
+ this.changeRef.markForCheck();
147
+ }
148
+ updateBreakpointAndResponsiveClass(width) {
149
+ this.verticalTabMediaQueryService.setBreakpointForWidth(width);
150
+ const newBreakpiont = this.verticalTabMediaQueryService.current;
151
+ this.adapterService.setResponsiveClass(this.tabContent, newBreakpiont);
152
+ this.changeRef.markForCheck();
153
+ }
154
+ }
155
+ SkyVerticalTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyVerticalTabComponent, deps: [{ token: i1.SkyVerticalTabsetAdapterService }, { token: i0.ChangeDetectorRef }, { token: i2.SkyVerticalTabsetService }, { token: i3.SkyVerticalTabMediaQueryService }], target: i0.ɵɵFactoryTarget.Component });
156
+ SkyVerticalTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyVerticalTabComponent, selector: "sky-vertical-tab", inputs: { active: "active", ariaControls: "ariaControls", ariaRole: "ariaRole", disabled: "disabled", errorIndicator: "errorIndicator", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", showTabRightArrow: "showTabRightArrow", tabId: "tabId" }, host: { listeners: { "window:resize": "onWindowResize()" } }, providers: [
157
+ SkyVerticalTabMediaQueryService,
158
+ {
159
+ provide: SkyMediaQueryService,
160
+ useExisting: SkyVerticalTabMediaQueryService,
161
+ },
162
+ ], viewQueries: [{ propertyName: "tabContent", first: true, predicate: ["tabContentWrapper"], descendants: true }], ngImport: i0, template: "<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"isMobile ? null : ariaControls || tabContentPane.id\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup)=\"onTabButtonKeyUp($event)\"\n>\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\"\n >\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator\n *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n <sky-icon\n *ngIf=\"showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div #tabContentWrapper>\n <div\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n #tabContentPane\n >\n <ng-content></ng-content>\n\n <div></div>\n </div>\n</div>\n", 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: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.λ2, selector: "[skyId]", exportAs: ["skyId"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyVerticalTabComponent, decorators: [{
164
+ type: Component,
165
+ args: [{ selector: 'sky-vertical-tab', providers: [
166
+ SkyVerticalTabMediaQueryService,
167
+ {
168
+ provide: SkyMediaQueryService,
169
+ useExisting: SkyVerticalTabMediaQueryService,
170
+ },
171
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"isMobile ? null : ariaControls || tabContentPane.id\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup)=\"onTabButtonKeyUp($event)\"\n>\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\"\n >\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator\n *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n <sky-icon\n *ngIf=\"showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div #tabContentWrapper>\n <div\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n #tabContentPane\n >\n <ng-content></ng-content>\n\n <div></div>\n </div>\n</div>\n", 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"] }]
172
+ }], ctorParameters: function () { return [{ type: i1.SkyVerticalTabsetAdapterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyVerticalTabsetService }, { type: i3.SkyVerticalTabMediaQueryService }]; }, propDecorators: { active: [{
173
+ type: Input
174
+ }], ariaControls: [{
175
+ type: Input
176
+ }], ariaRole: [{
177
+ type: Input
178
+ }], disabled: [{
179
+ type: Input
180
+ }], errorIndicator: [{
181
+ type: Input
182
+ }], tabHeaderCount: [{
183
+ type: Input
184
+ }], tabHeading: [{
185
+ type: Input
186
+ }], showTabRightArrow: [{
187
+ type: Input
188
+ }], tabId: [{
189
+ type: Input
190
+ }], tabContent: [{
191
+ type: ViewChild,
192
+ args: ['tabContentWrapper']
193
+ }], onWindowResize: [{
194
+ type: HostListener,
195
+ args: ['window:resize']
196
+ }] } });
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7OztBQUVyRSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFlZixNQUFNLE9BQU8sdUJBQXVCO0lBc0hsQyxZQUNVLGNBQStDLEVBQy9DLFNBQTRCLEVBQzVCLGFBQXVDLEVBQ3ZDLDRCQUE2RDtRQUg3RCxtQkFBYyxHQUFkLGNBQWMsQ0FBaUM7UUFDL0MsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLGlDQUE0QixHQUE1Qiw0QkFB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LENBQUMsS0FBYTtRQUN0RCxJQUFJLENBQUMsNEJBQTRCLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQztRQUVoRSxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFdkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoQyxDQUFDOztvSEFoTlUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsdVdBVHZCO1FBQ1QsK0JBQStCO1FBQy9CO1lBQ0UsT0FBTyxFQUFFLG9CQUFvQjtZQUM3QixXQUFXLEVBQUUsK0JBQStCO1NBQzdDO0tBQ0YsMklDaENILHUvQ0F3REE7MkZEckJhLHVCQUF1QjtrQkFibkMsU0FBUzsrQkFDRSxrQkFBa0IsYUFHakI7d0JBQ1QsK0JBQStCO3dCQUMvQjs0QkFDRSxPQUFPLEVBQUUsb0JBQW9COzRCQUM3QixXQUFXLEVBQUUsK0JBQStCO3lCQUM3QztxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTsyT0FPeEMsTUFBTTtzQkFEWixLQUFLO2dCQVVDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBY0ssUUFBUTtzQkFEbEIsS0FBSztnQkFlQyxRQUFRO3NCQURkLEtBQUs7Z0JBUUMsY0FBYztzQkFEcEIsS0FBSztnQkFPQyxjQUFjO3NCQURwQixLQUFLO2dCQVFDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBUUssaUJBQWlCO3NCQUQzQixLQUFLO2dCQWNDLEtBQUs7c0JBRFgsS0FBSztnQkEwQkMsVUFBVTtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBcUZ2QixjQUFjO3NCQURwQixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lNZWRpYVF1ZXJ5U2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYk1lZGlhUXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi92ZXJ0aWNhbC10YWItbWVkaWEtcXVlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYnNldEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi92ZXJ0aWNhbC10YWJzZXQtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0U2VydmljZSB9IGZyb20gJy4vdmVydGljYWwtdGFic2V0LnNlcnZpY2UnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXZlcnRpY2FsLXRhYicsXG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJ0aWNhbC10YWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92ZXJ0aWNhbC10YWIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5VmVydGljYWxUYWJNZWRpYVF1ZXJ5U2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBTa3lNZWRpYVF1ZXJ5U2VydmljZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lWZXJ0aWNhbFRhYk1lZGlhUXVlcnlTZXJ2aWNlLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSB0YWIgaXMgYWN0aXZlIHdoZW4gdGhlIHRhYnNldCBsb2Fkcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY3RpdmUgPSBmYWxzZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBIVE1MIGVsZW1lbnQgSUQgKHdpdGhvdXQgdGhlIGxlYWRpbmcgYCNgKSBvZiB0aGUgZWxlbWVudCB0aGF0IGNvbnRhaW5zXG4gICAqIHRoZSBjb250ZW50IHRoYXQgdGhlIHZlcnRpY2FsIHRhYiBkaXNwbGF5cywgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIGB0YWJJZGAuIFRoaXMgcHJvcGVydHlcbiAgICogW3N1cHBvcnRzIGFjY2Vzc2liaWxpdHkgcnVsZXMgZm9yIGRpc2Nsb3N1cmVzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS8jZGlzY2xvc3VyZSkuXG4gICAqIEBkZXByZWNhdGVkIE5vdyB0aGF0IHRoZSB2ZXJ0aWNhbCB0YWJzIHByb3ZpZGUgYXJpYSBsYWJlbHMgYXV0b21hdGljYWxseSwgdGhpcyBpbnB1dCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFDb250cm9sczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gQVJJQSByb2xlIGZvciB0aGUgdmVydGljYWwgdGFiXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSlcbiAgICogYnkgaW5kaWNhdGluZyBob3cgdGhlIHRhYiBmdW5jdGlvbnMgYW5kIHdoYXQgaXQgY29udHJvbHMuIEZvciBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICogYW4gQVJJQSByb2xlIGluZGljYXRlcyB3aGF0IGFuIGl0ZW0gcmVwcmVzZW50cyBvbiBhIHdlYiBwYWdlLCBzZWUgdGhlXG4gICAqIFtXQUktQVJJQSByb2xlcyBtb2RlbF0oaHR0cHM6Ly93d3cudzMub3JnL1dBSS9QRi9hcmlhL3JvbGVzKS5cbiAgICogQGRlZmF1bHQgXCJ0YWJcIlxuICAgKiBAZGVwcmVjYXRlZCBBbnkgb3RoZXIgdmFsdWUgdGhhbiBgdGFiYCBjb3VsZCBsZWFkIHRvIGEgcG9vciB1c2VyIGV4cGVyaWVuY2UgZm9yIHVzZXJzIHdpdGggYXNzaXN0aXZlIHRlY2hub2xvZ3kuXG4gICAqIEluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24sIHRoaXMgcHJvcGVydHkgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNldCB0byBgdGFiYC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgYXJpYVJvbGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2FyaWFSb2xlIHx8ICd0YWInO1xuICB9XG4gIHB1YmxpYyBzZXQgYXJpYVJvbGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2FyaWFSb2xlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdGFiLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGluZGljYXRlIHRoYXQgdGhlIHRhYiBoYXMgYW4gZXJyb3IuXG4gICAqIEBpbnRlcm5hbCBUaGlzIGlzIHVzZWQgZm9yIHNlY3Rpb25lZCBmb3JtcyBhbmQgaXMgbm90IGN1cnJlbnRseSBhIHN1cHBvcnRlZCBkZXNpZ24gZm9yIHB1cmUgdmVydGljYWwgdGFicy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlcnJvckluZGljYXRvciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBhbiBpdGVtIGNvdW50IGFsb25nc2lkZSB0aGUgdGFiIGhlYWRlciB0byBpbmRpY2F0ZSBob3cgbWFueSBsaXN0IGl0ZW1zIHRoZSB0YWIgY29udGFpbnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdGFiSGVhZGVyQ291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0YWIgaGVhZGVyLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0YWJIZWFkaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgYSBjaGV2cm9uLXJpZ2h0IGljb24gaW4gdGhlIHJpZ2h0aGFuZCBzaWRlIG9mIHRoZSB0YWIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBzaG93VGFiUmlnaHRBcnJvdygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvd1RhYlJpZ2h0QXJyb3cgJiYgdGhpcy50YWJzZXRTZXJ2aWNlLmlzTW9iaWxlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNob3dUYWJSaWdodEFycm93KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd1RhYlJpZ2h0QXJyb3cgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gSUQgZm9yIHRoZSB0YWIuXG4gICAqIEBkZXByZWNhdGVkIE5vdyB0aGF0IHRoZSB2ZXJ0aWNhbCB0YWJzIHByb3ZpZGUgYXJpYSBsYWJlbHMgYXV0b21hdGljYWxseSwgdGhpcyBpbnB1dCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRhYklkID0gYHNreS12ZXJ0aWNhbC10YWItJHsrK25leHRJZH1gO1xuXG4gIHB1YmxpYyBzZXQgY29udGVudFJlbmRlcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY29udGVudFJlbmRlcmVkID0gdmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLl9jb250ZW50UmVuZGVyZWQpIHtcbiAgICAgIC8vIE5PVEU6IFdyYXBwZWQgaW4gYSBzZXRUaW1lb3V0IGhlcmUgdG8gZW5zdXJlIHRoYXQgZXZlcnl0aGluZyBoYXMgY29tcGxldGVkIHJlbmRlcmluZy5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUJyZWFrcG9pbnRBbmRSZXNwb25zaXZlQ2xhc3MoXG4gICAgICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5nZXRXaWR0aCh0aGlzLnRhYkNvbnRlbnQpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRlbnRSZW5kZXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudFJlbmRlcmVkO1xuICB9XG5cbiAgcHVibGljIGluZGV4OiBudW1iZXI7XG5cbiAgcHVibGljIGlzTW9iaWxlID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgndGFiQ29udGVudFdyYXBwZXInKVxuICBwdWJsaWMgdGFiQ29udGVudDogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIF9hcmlhUm9sZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2NvbnRlbnRSZW5kZXJlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX21vYmlsZVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBfc2hvd1RhYlJpZ2h0QXJyb3cgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFkYXB0ZXJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldEFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHRhYnNldFNlcnZpY2U6IFNreVZlcnRpY2FsVGFic2V0U2VydmljZSxcbiAgICBwcml2YXRlIHZlcnRpY2FsVGFiTWVkaWFRdWVyeVNlcnZpY2U6IFNreVZlcnRpY2FsVGFiTWVkaWFRdWVyeVNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTW9iaWxlID0gdGhpcy50YWJzZXRTZXJ2aWNlLmlzTW9iaWxlKCk7XG4gICAgdGhpcy5jaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0aGlzLnRhYnNldFNlcnZpY2Uuc3dpdGNoaW5nTW9iaWxlLnN1YnNjcmliZSgobW9iaWxlOiBib29sZWFuKSA9PiB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gbW9iaWxlO1xuICAgICAgdGhpcy5jaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGJyZWFrcG9pbnQgYW5kIHJlc3BvbnNpdmUgY2xhc3MgaGVyZSBqdXN0IGFzIGEgc2FuaXR5IGNoZWNrIHNpbmNlIHdlIGNhbiBub3RcbiAgICAvLyB3YXRjaCBmb3IgZWxlbWVudCByZXNpemluZy5cbiAgICB0aGlzLnRhYnNldFNlcnZpY2UuaW5kZXhDaGFuZ2VkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pbmRleCA9PT0gaW5kZXggJiYgdGhpcy5jb250ZW50UmVuZGVyZWQpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUJyZWFrcG9pbnRBbmRSZXNwb25zaXZlQ2xhc3MoXG4gICAgICAgICAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLmdldFdpZHRoKHRoaXMudGFiQ29udGVudClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMudGFic2V0U2VydmljZS5hZGRUYWIodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fbW9iaWxlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMudGFic2V0U2VydmljZS5kZXN0cm95VGFiKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIHRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhY3RpdmF0ZVRhYigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICAgIHRoaXMudGFic2V0U2VydmljZS5hY3RpdmF0ZVRhYih0aGlzKTtcblxuICAgICAgdGhpcy5jaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVGFiQnV0dG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50LmtleSkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkudG9VcHBlckNhc2UoKSkge1xuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgY2FzZSAnRU5URVInOlxuICAgICAgICAgIHRoaXMuYWN0aXZhdGVUYWIoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgcHVibGljIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQnJlYWtwb2ludEFuZFJlc3BvbnNpdmVDbGFzcyhcbiAgICAgIHRoaXMuYWRhcHRlclNlcnZpY2UuZ2V0V2lkdGgodGhpcy50YWJDb250ZW50KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgdGFiRGVhY3RpdmF0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUJyZWFrcG9pbnRBbmRSZXNwb25zaXZlQ2xhc3Mod2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudmVydGljYWxUYWJNZWRpYVF1ZXJ5U2VydmljZS5zZXRCcmVha3BvaW50Rm9yV2lkdGgod2lkdGgpO1xuXG4gICAgY29uc3QgbmV3QnJlYWtwaW9udCA9IHRoaXMudmVydGljYWxUYWJNZWRpYVF1ZXJ5U2VydmljZS5jdXJyZW50O1xuXG4gICAgdGhpcy5hZGFwdGVyU2VydmljZS5zZXRSZXNwb25zaXZlQ2xhc3ModGhpcy50YWJDb250ZW50LCBuZXdCcmVha3Bpb250KTtcblxuICAgIHRoaXMuY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8YVxuICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJcIlxuICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlzTW9iaWxlID8gbnVsbCA6IGFyaWFDb250cm9scyB8fCB0YWJDb250ZW50UGFuZS5pZFwiXG4gIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiYWN0aXZlXCJcbiAgW2F0dHIuaWRdPVwidGFiSWRcIlxuICBbYXR0ci5yb2xlXT1cImFyaWFSb2xlXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktdmVydGljYWwtdGFiLWFjdGl2ZSc6IGFjdGl2ZSxcbiAgICAnc2t5LXZlcnRpY2FsLXRhYi1kaXNhYmxlZCc6IGRpc2FibGVkLFxuICAgICdza3ktZm9udC1kZWVtcGhhc2l6ZWQnOiBkaXNhYmxlZCxcbiAgICAnc2t5LWRlZW1waGFzaXplZCc6IGRpc2FibGVkXG4gIH1cIlxuICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gIChjbGljayk9XCJhY3RpdmF0ZVRhYigpXCJcbiAgKGtleXVwKT1cIm9uVGFiQnV0dG9uS2V5VXAoJGV2ZW50KVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJza3ktdmVydGljYWwtdGFiLWRpc3BsYXlcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYi1oZWFkaW5nXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWItaGVhZGluZy12YWx1ZVwiPnt7IHRhYkhlYWRpbmcgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWItY291bnRcIlxuICAgICAgICAqbmdJZj1cInRhYkhlYWRlckNvdW50IHx8IHRhYkhlYWRlckNvdW50ID09PSAwXCJcbiAgICAgID5cbiAgICAgICAgKHt7IHRhYkhlYWRlckNvdW50IH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxza3ktc3RhdHVzLWluZGljYXRvclxuICAgICAgKm5nSWY9XCJlcnJvckluZGljYXRvclwiXG4gICAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWItaGVhZGluZy1lcnJvclwiXG4gICAgICBkZXNjcmlwdGlvblR5cGU9XCJlcnJvclwiXG4gICAgICBpbmRpY2F0b3JUeXBlPVwiZGFuZ2VyXCJcbiAgICA+PC9za3ktc3RhdHVzLWluZGljYXRvcj5cbiAgICA8c2t5LWljb25cbiAgICAgICpuZ0lmPVwic2hvd1RhYlJpZ2h0QXJyb3dcIlxuICAgICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFiLXJpZ2h0LWFycm93XCJcbiAgICAgIGljb249XCJjaGV2cm9uLXJpZ2h0XCJcbiAgICA+XG4gICAgPC9za3ktaWNvbj5cbiAgPC9kaXY+XG48L2E+XG5cbjxkaXYgI3RhYkNvbnRlbnRXcmFwcGVyPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFiLWNvbnRlbnQtcGFuZVwiXG4gICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIHNreUlkXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRhYklkXCJcbiAgICBbbmdDbGFzc109XCJ7ICdza3ktdmVydGljYWwtdGFiLWhpZGRlbic6ICFhY3RpdmUgfVwiXG4gICAgI3RhYkNvbnRlbnRQYW5lXG4gID5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8ZGl2PjwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,48 @@
1
+ import { Injectable, RendererFactory2, } from '@angular/core';
2
+ import { SkyMediaBreakpoints } from '@skyux/core';
3
+ import * as i0 from "@angular/core";
4
+ export class SkyVerticalTabsetAdapterService {
5
+ constructor(rendererFactory) {
6
+ this.rendererFactory = rendererFactory;
7
+ this.renderer = this.rendererFactory.createRenderer(undefined, undefined);
8
+ }
9
+ getWidth(elementRef) {
10
+ return elementRef.nativeElement.clientWidth;
11
+ }
12
+ scrollToContentTop(element) {
13
+ element.nativeElement.scrollTop = 0;
14
+ }
15
+ setResponsiveClass(element, breakpoint) {
16
+ const nativeEl = element.nativeElement;
17
+ this.renderer.removeClass(nativeEl, 'sky-responsive-container-xs');
18
+ this.renderer.removeClass(nativeEl, 'sky-responsive-container-sm');
19
+ this.renderer.removeClass(nativeEl, 'sky-responsive-container-md');
20
+ this.renderer.removeClass(nativeEl, 'sky-responsive-container-lg');
21
+ let newClass;
22
+ switch (breakpoint) {
23
+ case SkyMediaBreakpoints.xs: {
24
+ newClass = 'sky-responsive-container-xs';
25
+ break;
26
+ }
27
+ case SkyMediaBreakpoints.sm: {
28
+ newClass = 'sky-responsive-container-sm';
29
+ break;
30
+ }
31
+ case SkyMediaBreakpoints.md: {
32
+ newClass = 'sky-responsive-container-md';
33
+ break;
34
+ }
35
+ default: {
36
+ newClass = 'sky-responsive-container-lg';
37
+ break;
38
+ }
39
+ }
40
+ this.renderer.addClass(nativeEl, newClass);
41
+ }
42
+ }
43
+ SkyVerticalTabsetAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyVerticalTabsetAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
44
+ SkyVerticalTabsetAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyVerticalTabsetAdapterService });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyVerticalTabsetAdapterService, decorators: [{
46
+ type: Injectable
47
+ }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsVUFBVSxFQUVWLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBR2xELE1BQU0sT0FBTywrQkFBK0I7SUFHMUMsWUFBb0IsZUFBaUM7UUFBakMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBQ25ELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxRQUFRLENBQUMsVUFBc0I7UUFDcEMsT0FBTyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztJQUM5QyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsT0FBbUI7UUFDM0MsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxrQkFBa0IsQ0FDdkIsT0FBbUIsRUFDbkIsVUFBK0I7UUFFL0IsTUFBTSxRQUFRLEdBQWdCLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFFcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFFbkUsSUFBSSxRQUFnQixDQUFDO1FBRXJCLFFBQVEsVUFBVSxFQUFFO1lBQ2xCLEtBQUssbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzNCLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQztnQkFDekMsTUFBTTthQUNQO1lBQ0QsS0FBSyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0IsUUFBUSxHQUFHLDZCQUE2QixDQUFDO2dCQUN6QyxNQUFNO2FBQ1A7WUFDRCxLQUFLLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixRQUFRLEdBQUcsNkJBQTZCLENBQUM7Z0JBQ3pDLE1BQU07YUFDUDtZQUNELE9BQU8sQ0FBQyxDQUFDO2dCQUNQLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQztnQkFDekMsTUFBTTthQUNQO1NBQ0Y7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7NEhBaERVLCtCQUErQjtnSUFBL0IsK0JBQStCOzJGQUEvQiwrQkFBK0I7a0JBRDNDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbGVtZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TWVkaWFCcmVha3BvaW50cyB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2Uge1xuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIpIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gdGhpcy5yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGljIGdldFdpZHRoKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiBudW1iZXIge1xuICAgIHJldHVybiBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIH1cblxuICBwdWJsaWMgc2Nyb2xsVG9Db250ZW50VG9wKGVsZW1lbnQ6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSZXNwb25zaXZlQ2xhc3MoXG4gICAgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBicmVha3BvaW50OiBTa3lNZWRpYUJyZWFrcG9pbnRzXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IG5hdGl2ZUVsOiBIVE1MRWxlbWVudCA9IGVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MobmF0aXZlRWwsICdza3ktcmVzcG9uc2l2ZS1jb250YWluZXIteHMnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKG5hdGl2ZUVsLCAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLXNtJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhuYXRpdmVFbCwgJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci1tZCcpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MobmF0aXZlRWwsICdza3ktcmVzcG9uc2l2ZS1jb250YWluZXItbGcnKTtcblxuICAgIGxldCBuZXdDbGFzczogc3RyaW5nO1xuXG4gICAgc3dpdGNoIChicmVha3BvaW50KSB7XG4gICAgICBjYXNlIFNreU1lZGlhQnJlYWtwb2ludHMueHM6IHtcbiAgICAgICAgbmV3Q2xhc3MgPSAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLXhzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFNreU1lZGlhQnJlYWtwb2ludHMuc206IHtcbiAgICAgICAgbmV3Q2xhc3MgPSAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLXNtJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFNreU1lZGlhQnJlYWtwb2ludHMubWQ6IHtcbiAgICAgICAgbmV3Q2xhc3MgPSAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLW1kJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIG5ld0NsYXNzID0gJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci1sZyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MobmF0aXZlRWwsIG5ld0NsYXNzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,83 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Input, QueryList, } from '@angular/core';
2
+ import { skyAnimationSlide } from '@skyux/animations';
3
+ import { Subject } from 'rxjs';
4
+ import { takeUntil } from 'rxjs/operators';
5
+ import { SkyVerticalTabComponent } from './vertical-tab.component';
6
+ import { SkyVerticalTabsetService } from './vertical-tabset.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./vertical-tabset.service";
9
+ import * as i2 from "@skyux/indicators";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@skyux/core";
12
+ export class SkyVerticalTabsetGroupComponent {
13
+ constructor(tabService, changeRef) {
14
+ this.tabService = tabService;
15
+ this.changeRef = changeRef;
16
+ this.ngUnsubscribe = new Subject();
17
+ this.openBeforeTabsHidden = false;
18
+ this._open = false;
19
+ this.tabClicked = () => {
20
+ this.changeRef.markForCheck();
21
+ };
22
+ this.tabsHidden = () => {
23
+ // this fixes an animation bug with ngIf when the parent component goes from visible to hidden
24
+ this.openBeforeTabsHidden = this.open;
25
+ this.open = false;
26
+ this.changeRef.markForCheck();
27
+ };
28
+ this.tabsShown = () => {
29
+ this.open = this.openBeforeTabsHidden;
30
+ this.changeRef.markForCheck();
31
+ };
32
+ }
33
+ /**
34
+ * Indicates whether the collapsible group is expanded.
35
+ * @default false
36
+ */
37
+ set open(value) {
38
+ this._open = value;
39
+ }
40
+ get open() {
41
+ return !this.disabled && this._open;
42
+ }
43
+ ngOnInit() {
44
+ this.tabService.hidingTabs
45
+ .pipe(takeUntil(this.ngUnsubscribe))
46
+ .subscribe(this.tabsHidden);
47
+ this.tabService.showingTabs
48
+ .pipe(takeUntil(this.ngUnsubscribe))
49
+ .subscribe(this.tabsShown);
50
+ this.tabService.tabClicked
51
+ .pipe(takeUntil(this.ngUnsubscribe))
52
+ .subscribe(this.tabClicked);
53
+ }
54
+ ngOnDestroy() {
55
+ this.ngUnsubscribe.next();
56
+ this.ngUnsubscribe.complete();
57
+ }
58
+ toggleMenuOpen() {
59
+ if (!this.disabled) {
60
+ this.open = !this.open;
61
+ }
62
+ this.changeRef.markForCheck();
63
+ }
64
+ subMenuOpen() {
65
+ return this.tabs && this.tabs.find((t) => t.active) !== undefined;
66
+ }
67
+ }
68
+ SkyVerticalTabsetGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyVerticalTabsetGroupComponent, deps: [{ token: i1.SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
69
+ SkyVerticalTabsetGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyVerticalTabsetGroupComponent, selector: "sky-vertical-tabset-group", inputs: { disabled: "disabled", groupHeading: "groupHeading", open: "open" }, queries: [{ propertyName: "tabs", predicate: SkyVerticalTabComponent }], ngImport: i0, template: "<div class=\"sky-vertical-tabset-group\">\n <!-- [ngClass] includes font classes for both modern and default styles -->\n <div\n class=\"sky-vertical-tabset-group-header\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-sub-open sky-font-emphasized sky-emphasized':\n subMenuOpen(),\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n [tabIndex]=\"-1\"\n >\n <button\n class=\"sky-padding-even-default\"\n type=\"button\"\n skyId\n [attr.aria-controls]=\"groupContent.id\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggleMenuOpen()\"\n #groupHeadingButton\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"open ? 'up' : 'down'\"\n >\n </sky-expansion-indicator>\n </button>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n role=\"region\"\n skyId\n [attr.labelledby]=\"groupHeadingButton.id\"\n [@skyAnimationSlide]=\"open ? 'down' : 'up'\"\n #groupContent\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header button{cursor:pointer;display:flex;justify-content:space-between;border:none;width:100%;text-align:left;background:none}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-expansion-indicator>button{font-size:14px!important}.sky-vertical-tabset-disabled{cursor:not-allowed;pointer-events:none}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none;margin:10px 0}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-content{border:none;padding-left:25px}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header{position:relative}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none;margin:10px 0}.sky-theme-modern .sky-vertical-tabset-group-content{border:none;padding-left:25px}.sky-theme-modern .sky-vertical-tabset-group-header{position:relative}.sky-theme-modern .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}\n"], components: [{ type: i2.λ15, selector: "sky-expansion-indicator", inputs: ["direction"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.λ2, selector: "[skyId]", exportAs: ["skyId"] }], animations: [skyAnimationSlide], changeDetection: i0.ChangeDetectionStrategy.OnPush });
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyVerticalTabsetGroupComponent, decorators: [{
71
+ type: Component,
72
+ args: [{ selector: 'sky-vertical-tabset-group', changeDetection: ChangeDetectionStrategy.OnPush, animations: [skyAnimationSlide], template: "<div class=\"sky-vertical-tabset-group\">\n <!-- [ngClass] includes font classes for both modern and default styles -->\n <div\n class=\"sky-vertical-tabset-group-header\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-sub-open sky-font-emphasized sky-emphasized':\n subMenuOpen(),\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n [tabIndex]=\"-1\"\n >\n <button\n class=\"sky-padding-even-default\"\n type=\"button\"\n skyId\n [attr.aria-controls]=\"groupContent.id\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggleMenuOpen()\"\n #groupHeadingButton\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"open ? 'up' : 'down'\"\n >\n </sky-expansion-indicator>\n </button>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n role=\"region\"\n skyId\n [attr.labelledby]=\"groupHeadingButton.id\"\n [@skyAnimationSlide]=\"open ? 'down' : 'up'\"\n #groupContent\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header button{cursor:pointer;display:flex;justify-content:space-between;border:none;width:100%;text-align:left;background:none}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-expansion-indicator>button{font-size:14px!important}.sky-vertical-tabset-disabled{cursor:not-allowed;pointer-events:none}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none;margin:10px 0}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-content{border:none;padding-left:25px}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header{position:relative}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none;margin:10px 0}.sky-theme-modern .sky-vertical-tabset-group-content{border:none;padding-left:25px}.sky-theme-modern .sky-vertical-tabset-group-header{position:relative}.sky-theme-modern .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}\n"] }]
73
+ }], ctorParameters: function () { return [{ type: i1.SkyVerticalTabsetService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
74
+ type: Input
75
+ }], groupHeading: [{
76
+ type: Input
77
+ }], open: [{
78
+ type: Input
79
+ }], tabs: [{
80
+ type: ContentChildren,
81
+ args: [SkyVerticalTabComponent]
82
+ }] } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUdMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBU3JFLE1BQU0sT0FBTywrQkFBK0I7SUFvQzFDLFlBQ1UsVUFBb0MsRUFDcEMsU0FBNEI7UUFENUIsZUFBVSxHQUFWLFVBQVUsQ0FBMEI7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFSOUIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTlCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUU3QixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBc0NmLGVBQVUsR0FBRyxHQUFHLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUM7UUFFSyxlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ3ZCLDhGQUE4RjtZQUM5RixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN0QyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hDLENBQUMsQ0FBQztRQUVLLGNBQVMsR0FBRyxHQUFHLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUM7SUEvQ0MsQ0FBQztJQXpCSjs7O09BR0c7SUFDSCxJQUNXLElBQUksQ0FBQyxLQUFjO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFnQk0sUUFBUTtRQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVTthQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVzthQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVTthQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFDO0lBQ3BFLENBQUM7OzRIQXRFVSwrQkFBK0I7Z0hBQS9CLCtCQUErQixvS0EyQnpCLHVCQUF1Qiw2QkNwRDFDLG1zQ0F5Q0EsazdDRGxCYyxDQUFDLGlCQUFpQixDQUFDOzJGQUVwQiwrQkFBK0I7a0JBUDNDLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLENBQUMsaUJBQWlCLENBQUM7K0lBUXhCLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxZQUFZO3NCQURsQixLQUFLO2dCQVFLLElBQUk7c0JBRGQsS0FBSztnQkFVRSxJQUFJO3NCQURYLGVBQWU7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2t5QW5pbWF0aW9uU2xpZGUgfSBmcm9tICdAc2t5dXgvYW5pbWF0aW9ucyc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJDb21wb25lbnQgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlIH0gZnJvbSAnLi92ZXJ0aWNhbC10YWJzZXQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbc2t5QW5pbWF0aW9uU2xpZGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lWZXJ0aWNhbFRhYnNldEdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgYWJpbGl0eSB0byBleHBhbmQgYW5kIGNvbGxhcHNlIHRoZSBncm91cC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBoZWFkZXIgZm9yIHRoZSBjb2xsYXBzaWJsZSBncm91cCBvZiB0YWJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdyb3VwSGVhZGluZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29sbGFwc2libGUgZ3JvdXAgaXMgZXhwYW5kZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG9wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcGVuID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmRpc2FibGVkICYmIHRoaXMuX29wZW47XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKFNreVZlcnRpY2FsVGFiQ29tcG9uZW50KVxuICBwcml2YXRlIHRhYnM6IFF1ZXJ5TGlzdDxTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIG9wZW5CZWZvcmVUYWJzSGlkZGVuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfb3BlbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGFiU2VydmljZTogU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGFiU2VydmljZS5oaWRpbmdUYWJzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUodGhpcy50YWJzSGlkZGVuKTtcblxuICAgIHRoaXMudGFiU2VydmljZS5zaG93aW5nVGFic1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKHRoaXMudGFic1Nob3duKTtcblxuICAgIHRoaXMudGFiU2VydmljZS50YWJDbGlja2VkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUodGhpcy50YWJDbGlja2VkKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZU1lbnVPcGVuKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJNZW51T3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJzICYmIHRoaXMudGFicy5maW5kKCh0KSA9PiB0LmFjdGl2ZSkgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyB0YWJDbGlja2VkID0gKCkgPT4ge1xuICAgIHRoaXMuY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9O1xuXG4gIHB1YmxpYyB0YWJzSGlkZGVuID0gKCkgPT4ge1xuICAgIC8vIHRoaXMgZml4ZXMgYW4gYW5pbWF0aW9uIGJ1ZyB3aXRoIG5nSWYgd2hlbiB0aGUgcGFyZW50IGNvbXBvbmVudCBnb2VzIGZyb20gdmlzaWJsZSB0byBoaWRkZW5cbiAgICB0aGlzLm9wZW5CZWZvcmVUYWJzSGlkZGVuID0gdGhpcy5vcGVuO1xuICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9O1xuXG4gIHB1YmxpYyB0YWJzU2hvd24gPSAoKSA9PiB7XG4gICAgdGhpcy5vcGVuID0gdGhpcy5vcGVuQmVmb3JlVGFic0hpZGRlbjtcbiAgICB0aGlzLmNoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWdyb3VwXCI+XG4gIDwhLS0gW25nQ2xhc3NdIGluY2x1ZGVzIGZvbnQgY2xhc3NlcyBmb3IgYm90aCBtb2Rlcm4gYW5kIGRlZmF1bHQgc3R5bGVzIC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWhlYWRlclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtaGVhZGVyLXN1Yi1vcGVuIHNreS1mb250LWVtcGhhc2l6ZWQgc2t5LWVtcGhhc2l6ZWQnOlxuICAgICAgICBzdWJNZW51T3BlbigpLFxuICAgICAgJ3NreS1mb250LWRlZW1waGFzaXplZCc6IGRpc2FibGVkLFxuICAgICAgJ3NreS1kZWVtcGhhc2l6ZWQnOiBkaXNhYmxlZCxcbiAgICAgICdza3ktdmVydGljYWwtdGFic2V0LWRpc2FibGVkJzogZGlzYWJsZWRcbiAgICB9XCJcbiAgICBbdGFiSW5kZXhdPVwiLTFcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJza3ktcGFkZGluZy1ldmVuLWRlZmF1bHRcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBza3lJZFxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJncm91cENvbnRlbnQuaWRcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVNZW51T3BlbigpXCJcbiAgICAgICNncm91cEhlYWRpbmdCdXR0b25cbiAgICA+XG4gICAgICB7eyBncm91cEhlYWRpbmcgfX1cbiAgICAgIDxza3ktZXhwYW5zaW9uLWluZGljYXRvclxuICAgICAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtZXhwYW5zaW9uLWluZGljYXRvclwiXG4gICAgICAgIFtkaXJlY3Rpb25dPVwib3BlbiA/ICd1cCcgOiAnZG93bidcIlxuICAgICAgPlxuICAgICAgPC9za3ktZXhwYW5zaW9uLWluZGljYXRvcj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtY29udGVudFwiXG4gICAgcm9sZT1cInJlZ2lvblwiXG4gICAgc2t5SWRcbiAgICBbYXR0ci5sYWJlbGxlZGJ5XT1cImdyb3VwSGVhZGluZ0J1dHRvbi5pZFwiXG4gICAgW0Bza3lBbmltYXRpb25TbGlkZV09XCJvcGVuID8gJ2Rvd24nIDogJ3VwJ1wiXG4gICAgI2dyb3VwQ29udGVudFxuICA+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19