@skyux/tabs 5.1.0 → 5.5.0-alpha.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 (122) hide show
  1. package/README.md +6 -4
  2. package/documentation.json +265 -36
  3. package/esm2015/index.js +23 -0
  4. package/esm2015/index.js.map +1 -0
  5. package/esm2015/lib/modules/sectioned-form/sectioned-form-section.component.js +67 -0
  6. package/esm2015/lib/modules/sectioned-form/sectioned-form-section.component.js.map +1 -0
  7. package/esm2015/lib/modules/sectioned-form/sectioned-form.component.js +116 -0
  8. package/esm2015/lib/modules/sectioned-form/sectioned-form.component.js.map +1 -0
  9. package/esm2015/lib/modules/sectioned-form/sectioned-form.module.js +35 -0
  10. package/esm2015/lib/modules/sectioned-form/sectioned-form.module.js.map +1 -0
  11. package/esm2015/lib/modules/sectioned-form/sectioned-form.service.js +35 -0
  12. package/esm2015/lib/modules/sectioned-form/sectioned-form.service.js.map +1 -0
  13. package/esm2015/lib/modules/shared/sky-tabs-resources.module.js +52 -0
  14. package/esm2015/lib/modules/shared/sky-tabs-resources.module.js.map +1 -0
  15. package/esm2015/{modules → lib/modules}/tabs/tab-button.component.js +1 -1
  16. package/esm2015/lib/modules/tabs/tab-button.component.js.map +1 -0
  17. package/esm2015/lib/modules/tabs/tab-index.js +2 -0
  18. package/esm2015/lib/modules/tabs/tab-index.js.map +1 -0
  19. package/esm2015/lib/modules/tabs/tab.component.js +135 -0
  20. package/esm2015/lib/modules/tabs/tab.component.js.map +1 -0
  21. package/esm2015/lib/modules/tabs/tabs.module.js +57 -0
  22. package/esm2015/lib/modules/tabs/tabs.module.js.map +1 -0
  23. package/esm2015/lib/modules/tabs/tabset-active-tab-unregistered-args.js +2 -0
  24. package/esm2015/lib/modules/tabs/tabset-active-tab-unregistered-args.js.map +1 -0
  25. package/esm2015/lib/modules/tabs/tabset-adapter.service.js +56 -0
  26. package/esm2015/lib/modules/tabs/tabset-adapter.service.js.map +1 -0
  27. package/esm2015/lib/modules/tabs/tabset-buttons-display-mode.js +2 -0
  28. package/esm2015/lib/modules/tabs/tabset-buttons-display-mode.js.map +1 -0
  29. package/esm2015/lib/modules/tabs/tabset-nav-button.component.js +119 -0
  30. package/esm2015/lib/modules/tabs/tabset-nav-button.component.js.map +1 -0
  31. package/esm2015/lib/modules/tabs/tabset-permalink.service.js +126 -0
  32. package/esm2015/lib/modules/tabs/tabset-permalink.service.js.map +1 -0
  33. package/esm2015/lib/modules/tabs/tabset-style.js +2 -0
  34. package/esm2015/lib/modules/tabs/tabset-style.js.map +1 -0
  35. package/esm2015/lib/modules/tabs/tabset-tab-indexes-change.js +2 -0
  36. package/esm2015/lib/modules/tabs/tabset-tab-indexes-change.js.map +1 -0
  37. package/esm2015/lib/modules/tabs/tabset.component.js +405 -0
  38. package/esm2015/lib/modules/tabs/tabset.component.js.map +1 -0
  39. package/esm2015/lib/modules/tabs/tabset.service.js +110 -0
  40. package/esm2015/lib/modules/tabs/tabset.service.js.map +1 -0
  41. package/esm2015/lib/modules/vertical-tabset/vertical-tab-media-query.service.js +72 -0
  42. package/esm2015/lib/modules/vertical-tabset/vertical-tab-media-query.service.js.map +1 -0
  43. package/esm2015/lib/modules/vertical-tabset/vertical-tab.component.js +203 -0
  44. package/esm2015/lib/modules/vertical-tabset/vertical-tab.component.js.map +1 -0
  45. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-adapter.service.js +48 -0
  46. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-adapter.service.js.map +1 -0
  47. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-group.component.js +89 -0
  48. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-group.component.js.map +1 -0
  49. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.component.js +157 -0
  50. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.component.js.map +1 -0
  51. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.module.js +60 -0
  52. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.module.js.map +1 -0
  53. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.service.js +170 -0
  54. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.service.js.map +1 -0
  55. package/esm2015/skyux-tabs.js +2 -2
  56. package/esm2015/skyux-tabs.js.map +1 -0
  57. package/esm2015/testing/public-api.js +1 -1
  58. package/esm2015/testing/public-api.js.map +1 -0
  59. package/esm2015/testing/skyux-tabs-testing.js +1 -1
  60. package/esm2015/testing/skyux-tabs-testing.js.map +1 -0
  61. package/esm2015/testing/tabs/tab-fixture-tab.js +1 -1
  62. package/esm2015/testing/tabs/tab-fixture-tab.js.map +1 -0
  63. package/esm2015/testing/tabs/tabset-fixture.js +1 -1
  64. package/esm2015/testing/tabs/tabset-fixture.js.map +1 -0
  65. package/fesm2015/skyux-tabs-testing.js.map +1 -1
  66. package/fesm2015/skyux-tabs.js +113 -113
  67. package/fesm2015/skyux-tabs.js.map +1 -1
  68. package/index.d.ts +16 -0
  69. package/{modules → lib/modules}/sectioned-form/sectioned-form-section.component.d.ts +0 -0
  70. package/{modules → lib/modules}/sectioned-form/sectioned-form.component.d.ts +0 -0
  71. package/{modules → lib/modules}/sectioned-form/sectioned-form.module.d.ts +0 -0
  72. package/{modules → lib/modules}/sectioned-form/sectioned-form.service.d.ts +0 -0
  73. package/{modules → lib/modules}/shared/sky-tabs-resources.module.d.ts +0 -0
  74. package/{modules → lib/modules}/tabs/tab-button.component.d.ts +0 -0
  75. package/{modules → lib/modules}/tabs/tab-index.d.ts +0 -0
  76. package/{modules → lib/modules}/tabs/tab.component.d.ts +0 -0
  77. package/{modules → lib/modules}/tabs/tabs.module.d.ts +0 -0
  78. package/{modules → lib/modules}/tabs/tabset-active-tab-unregistered-args.d.ts +0 -0
  79. package/{modules → lib/modules}/tabs/tabset-adapter.service.d.ts +0 -0
  80. package/{modules → lib/modules}/tabs/tabset-buttons-display-mode.d.ts +0 -0
  81. package/{modules → lib/modules}/tabs/tabset-nav-button.component.d.ts +0 -0
  82. package/{modules → lib/modules}/tabs/tabset-permalink.service.d.ts +0 -0
  83. package/{modules → lib/modules}/tabs/tabset-style.d.ts +0 -0
  84. package/{modules → lib/modules}/tabs/tabset-tab-indexes-change.d.ts +0 -0
  85. package/{modules → lib/modules}/tabs/tabset.component.d.ts +0 -0
  86. package/{modules → lib/modules}/tabs/tabset.service.d.ts +0 -0
  87. package/{modules → lib/modules}/vertical-tabset/vertical-tab-media-query.service.d.ts +0 -0
  88. package/{modules → lib/modules}/vertical-tabset/vertical-tab.component.d.ts +0 -0
  89. package/{modules → lib/modules}/vertical-tabset/vertical-tabset-adapter.service.d.ts +0 -0
  90. package/{modules → lib/modules}/vertical-tabset/vertical-tabset-group.component.d.ts +0 -0
  91. package/{modules → lib/modules}/vertical-tabset/vertical-tabset.component.d.ts +0 -0
  92. package/{modules → lib/modules}/vertical-tabset/vertical-tabset.module.d.ts +0 -0
  93. package/{modules → lib/modules}/vertical-tabset/vertical-tabset.service.d.ts +0 -0
  94. package/package.json +8 -8
  95. package/skyux-tabs.d.ts +1 -1
  96. package/LICENSE +0 -21
  97. package/esm2015/modules/sectioned-form/sectioned-form-section.component.js +0 -66
  98. package/esm2015/modules/sectioned-form/sectioned-form.component.js +0 -116
  99. package/esm2015/modules/sectioned-form/sectioned-form.module.js +0 -35
  100. package/esm2015/modules/sectioned-form/sectioned-form.service.js +0 -35
  101. package/esm2015/modules/shared/sky-tabs-resources.module.js +0 -52
  102. package/esm2015/modules/tabs/tab-index.js +0 -2
  103. package/esm2015/modules/tabs/tab.component.js +0 -133
  104. package/esm2015/modules/tabs/tabs.module.js +0 -57
  105. package/esm2015/modules/tabs/tabset-active-tab-unregistered-args.js +0 -2
  106. package/esm2015/modules/tabs/tabset-adapter.service.js +0 -56
  107. package/esm2015/modules/tabs/tabset-buttons-display-mode.js +0 -2
  108. package/esm2015/modules/tabs/tabset-nav-button.component.js +0 -117
  109. package/esm2015/modules/tabs/tabset-permalink.service.js +0 -124
  110. package/esm2015/modules/tabs/tabset-style.js +0 -2
  111. package/esm2015/modules/tabs/tabset-tab-indexes-change.js +0 -2
  112. package/esm2015/modules/tabs/tabset.component.js +0 -405
  113. package/esm2015/modules/tabs/tabset.service.js +0 -110
  114. package/esm2015/modules/vertical-tabset/vertical-tab-media-query.service.js +0 -72
  115. package/esm2015/modules/vertical-tabset/vertical-tab.component.js +0 -201
  116. package/esm2015/modules/vertical-tabset/vertical-tabset-adapter.service.js +0 -48
  117. package/esm2015/modules/vertical-tabset/vertical-tabset-group.component.js +0 -88
  118. package/esm2015/modules/vertical-tabset/vertical-tabset.component.js +0 -155
  119. package/esm2015/modules/vertical-tabset/vertical-tabset.module.js +0 -60
  120. package/esm2015/modules/vertical-tabset/vertical-tabset.service.js +0 -170
  121. package/esm2015/public-api.js +0 -23
  122. package/public-api.d.ts +0 -16
@@ -0,0 +1,57 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { RouterModule } from '@angular/router';
4
+ import { SkyI18nModule } from '@skyux/i18n';
5
+ import { SkyIconModule } from '@skyux/indicators';
6
+ import { SkyDropdownModule } from '@skyux/popovers';
7
+ import { SkyThemeModule } from '@skyux/theme';
8
+ import { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';
9
+ import { SkyTabButtonComponent } from './tab-button.component';
10
+ import { SkyTabComponent } from './tab.component';
11
+ import { SkyTabsetNavButtonComponent } from './tabset-nav-button.component';
12
+ import { SkyTabsetComponent } from './tabset.component';
13
+ import * as i0 from "@angular/core";
14
+ export class SkyTabsModule {
15
+ }
16
+ SkyTabsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
+ SkyTabsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabsModule, declarations: [SkyTabButtonComponent,
18
+ SkyTabComponent,
19
+ SkyTabsetComponent,
20
+ SkyTabsetNavButtonComponent], imports: [CommonModule,
21
+ RouterModule,
22
+ SkyDropdownModule,
23
+ SkyI18nModule,
24
+ SkyIconModule,
25
+ SkyTabsResourcesModule,
26
+ SkyThemeModule], exports: [SkyTabComponent, SkyTabsetComponent, SkyTabsetNavButtonComponent] });
27
+ SkyTabsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabsModule, imports: [[
28
+ CommonModule,
29
+ RouterModule,
30
+ SkyDropdownModule,
31
+ SkyI18nModule,
32
+ SkyIconModule,
33
+ SkyTabsResourcesModule,
34
+ SkyThemeModule,
35
+ ]] });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabsModule, decorators: [{
37
+ type: NgModule,
38
+ args: [{
39
+ declarations: [
40
+ SkyTabButtonComponent,
41
+ SkyTabComponent,
42
+ SkyTabsetComponent,
43
+ SkyTabsetNavButtonComponent,
44
+ ],
45
+ imports: [
46
+ CommonModule,
47
+ RouterModule,
48
+ SkyDropdownModule,
49
+ SkyI18nModule,
50
+ SkyIconModule,
51
+ SkyTabsResourcesModule,
52
+ SkyThemeModule,
53
+ ],
54
+ exports: [SkyTabComponent, SkyTabsetComponent, SkyTabsetNavButtonComponent],
55
+ }]
56
+ }] });
57
+ //# sourceMappingURL=tabs.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabs.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;;AAoBxD,MAAM,OAAO,aAAa;;2GAAb,aAAa;4GAAb,aAAa,iBAhBtB,qBAAqB;QACrB,eAAe;QACf,kBAAkB;QAClB,2BAA2B,aAG3B,YAAY;QACZ,YAAY;QACZ,iBAAiB;QACjB,aAAa;QACb,aAAa;QACb,sBAAsB;QACtB,cAAc,aAEN,eAAe,EAAE,kBAAkB,EAAE,2BAA2B;4GAE/D,aAAa,YAXf;YACP,YAAY;YACZ,YAAY;YACZ,iBAAiB;YACjB,aAAa;YACb,aAAa;YACb,sBAAsB;YACtB,cAAc;SACf;4FAGU,aAAa;kBAlBzB,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,qBAAqB;wBACrB,eAAe;wBACf,kBAAkB;wBAClB,2BAA2B;qBAC5B;oBACD,OAAO,EAAE;wBACP,YAAY;wBACZ,YAAY;wBACZ,iBAAiB;wBACjB,aAAa;wBACb,aAAa;wBACb,sBAAsB;wBACtB,cAAc;qBACf;oBACD,OAAO,EAAE,CAAC,eAAe,EAAE,kBAAkB,EAAE,2BAA2B,CAAC;iBAC5E","sourcesContent":["import { CommonModule } from '@angular/common';\n\nimport { NgModule } from '@angular/core';\n\nimport { RouterModule } from '@angular/router';\n\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { SkyIconModule } from '@skyux/indicators';\n\nimport { SkyDropdownModule } from '@skyux/popovers';\n\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';\n\nimport { SkyTabButtonComponent } from './tab-button.component';\n\nimport { SkyTabComponent } from './tab.component';\n\nimport { SkyTabsetNavButtonComponent } from './tabset-nav-button.component';\n\nimport { SkyTabsetComponent } 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: [SkyTabComponent, SkyTabsetComponent, SkyTabsetNavButtonComponent],\n})\nexport class SkyTabsModule {}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tabset-active-tab-unregistered-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabset-active-tab-unregistered-args.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-active-tab-unregistered-args.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * The arguments for the tabset service's `activeTabUnregistered` event.\n * @internal\n */\nexport interface SkyTabsetActiveTabUnregisteredArgs {\n /**\n * The array index of the active tab, when it has been unregistered.\n */\n arrayIndex: number;\n}\n"]}
@@ -0,0 +1,56 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * @internal
6
+ */
7
+ export class SkyTabsetAdapterService {
8
+ constructor() {
9
+ this._overflowChange = new BehaviorSubject(false);
10
+ }
11
+ get overflowChange() {
12
+ return this._overflowChange.asObservable();
13
+ }
14
+ registerTabset(tabsetRef) {
15
+ this.tabsetRef = tabsetRef;
16
+ this.tabsOffsetLeft = this.getTabsOffsetLeft(tabsetRef.nativeElement);
17
+ }
18
+ /**
19
+ * Detects if the tab buttons are wider than the tabset container.
20
+ */
21
+ detectOverflow() {
22
+ const nativeElement = this.tabsetRef.nativeElement;
23
+ const tabsetRect = nativeElement
24
+ .querySelector('.sky-tabset')
25
+ .getBoundingClientRect();
26
+ const tabButtonsRect = nativeElement
27
+ .querySelector('.sky-tabset-tabs')
28
+ .getBoundingClientRect();
29
+ const tabExtraButtonsRect = nativeElement
30
+ .querySelector('.sky-tabset-btns')
31
+ .getBoundingClientRect();
32
+ const tabButtonsWidth = tabButtonsRect.width + tabExtraButtonsRect.width + this.tabsOffsetLeft;
33
+ const newOverflow = tabButtonsWidth > tabsetRect.width;
34
+ if (this.currentOverflow !== newOverflow) {
35
+ this.currentOverflow = newOverflow;
36
+ this._overflowChange.next(this.currentOverflow);
37
+ }
38
+ }
39
+ /**
40
+ * Returns the number of pixels to the left of the first tab.
41
+ */
42
+ getTabsOffsetLeft(tabsetEl) {
43
+ const tabsetRect = tabsetEl.getBoundingClientRect();
44
+ // The dropdown element is the first "tab" and always exists in the DOM, even when hidden.
45
+ const firstTabRect = tabsetEl
46
+ .querySelector('.sky-tabset-dropdown')
47
+ .getBoundingClientRect();
48
+ return firstTabRect.left - tabsetRect.left;
49
+ }
50
+ }
51
+ SkyTabsetAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabsetAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
52
+ SkyTabsetAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabsetAdapterService });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabsetAdapterService, decorators: [{
54
+ type: Injectable
55
+ }] });
56
+ //# sourceMappingURL=tabset-adapter.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabset-adapter.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-adapter.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,UAAU,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAc,MAAM,MAAM,CAAC;;AAEnD;;GAEG;AAEH,MAAM,OAAO,uBAAuB;IADpC;QAYU,oBAAe,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;KAgD/D;IA1DC,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;IAC7C,CAAC;IAUM,cAAc,CAAC,SAAqB;QACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACI,cAAc;QACnB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;QAEnD,MAAM,UAAU,GAAG,aAAa;aAC7B,aAAa,CAAC,aAAa,CAAC;aAC5B,qBAAqB,EAAE,CAAC;QAE3B,MAAM,cAAc,GAAG,aAAa;aACjC,aAAa,CAAC,kBAAkB,CAAC;aACjC,qBAAqB,EAAE,CAAC;QAE3B,MAAM,mBAAmB,GAAG,aAAa;aACtC,aAAa,CAAC,kBAAkB,CAAC;aACjC,qBAAqB,EAAE,CAAC;QAE3B,MAAM,eAAe,GACnB,cAAc,CAAC,KAAK,GAAG,mBAAmB,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;QAEzE,MAAM,WAAW,GAAG,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC;QACvD,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,EAAE;YACxC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACjD;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,QAAqB;QAC7C,MAAM,UAAU,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QAEpD,0FAA0F;QAC1F,MAAM,YAAY,GAAG,QAAQ;aAC1B,aAAa,CAAC,sBAAsB,CAAC;aACrC,qBAAqB,EAAE,CAAC;QAE3B,OAAO,YAAY,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IAC7C,CAAC;;qHA1DU,uBAAuB;yHAAvB,uBAAuB;4FAAvB,uBAAuB;kBADnC,UAAU","sourcesContent":["import { ElementRef, Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetAdapterService {\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 =\n 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\n .querySelector('.sky-tabset-dropdown')\n .getBoundingClientRect();\n\n return firstTabRect.left - tabsetRect.left;\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tabset-buttons-display-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabset-buttons-display-mode.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-buttons-display-mode.ts"],"names":[],"mappings":"","sourcesContent":["export type SkyTabsetButtonsDisplayMode = 'dropdown' | 'tabs';\n"]}
@@ -0,0 +1,119 @@
1
+ import { ChangeDetectorRef, Component, Input, } from '@angular/core';
2
+ import { SkyLibResourcesService } from '@skyux/i18n';
3
+ import { forkJoin } from 'rxjs';
4
+ import { take } from 'rxjs/operators';
5
+ import { SkyTabsetComponent } from './tabset.component';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@skyux/i18n";
8
+ const buttonTypeNext = 'next';
9
+ const buttonTypePrevious = 'previous';
10
+ /**
11
+ * @internal
12
+ */
13
+ export class SkyTabsetNavButtonComponent {
14
+ constructor(resourceService, changeDetector) {
15
+ this.resourceService = resourceService;
16
+ this.changeDetector = changeDetector;
17
+ }
18
+ set buttonText(value) {
19
+ this._buttonText = value;
20
+ }
21
+ get buttonText() {
22
+ if (this._buttonText) {
23
+ return this._buttonText;
24
+ }
25
+ switch (this.buttonType) {
26
+ case buttonTypePrevious:
27
+ return this.previousButtonText;
28
+ case buttonTypeNext:
29
+ return this.nextButtonText;
30
+ /* istanbul ignore next */
31
+ default:
32
+ return '';
33
+ }
34
+ }
35
+ get disabled() {
36
+ let tabToSelect;
37
+ switch (this.buttonType) {
38
+ case buttonTypePrevious:
39
+ tabToSelect = this.previousTab;
40
+ break;
41
+ case buttonTypeNext:
42
+ tabToSelect = this.nextTab;
43
+ break;
44
+ /* istanbul ignore next */
45
+ default:
46
+ break;
47
+ }
48
+ return !tabToSelect || tabToSelect.disabled;
49
+ }
50
+ get selectedTab() {
51
+ let selectedTab;
52
+ if (this.tabset && this.tabset.tabs) {
53
+ selectedTab = this.tabset.tabs.find((tab) => tab.tabIndex === this.tabset.lastActiveTabIndex);
54
+ }
55
+ return selectedTab;
56
+ }
57
+ get nextTab() {
58
+ let selectedTab = this.selectedTab;
59
+ if (selectedTab) {
60
+ let tabs = this.tabset.tabs.toArray();
61
+ return tabs[tabs.indexOf(selectedTab) + 1];
62
+ }
63
+ return undefined;
64
+ }
65
+ get previousTab() {
66
+ let selectedTab = this.selectedTab;
67
+ if (selectedTab) {
68
+ let tabs = this.tabset.tabs.toArray();
69
+ return tabs[tabs.indexOf(selectedTab) - 1];
70
+ }
71
+ return undefined;
72
+ }
73
+ ngAfterViewInit() {
74
+ forkJoin([
75
+ this.resourceService.getString('skyux_tabs_navigator_previous'),
76
+ this.resourceService.getString('skyux_tabs_navigator_next'),
77
+ ])
78
+ .pipe(take(1))
79
+ .subscribe((resources) => {
80
+ this.previousButtonText = resources[0];
81
+ this.nextButtonText = resources[1];
82
+ this.changeDetector.detectChanges();
83
+ });
84
+ }
85
+ buttonClick() {
86
+ let tabToSelect;
87
+ switch (this.buttonType) {
88
+ case buttonTypePrevious:
89
+ tabToSelect = this.previousTab;
90
+ break;
91
+ case buttonTypeNext:
92
+ tabToSelect = this.nextTab;
93
+ break;
94
+ /* istanbul ignore next */
95
+ default:
96
+ break;
97
+ }
98
+ /* istanbul ignore else */
99
+ if (tabToSelect && !tabToSelect.disabled) {
100
+ this.tabset.active = tabToSelect.tabIndex;
101
+ }
102
+ }
103
+ }
104
+ SkyTabsetNavButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabsetNavButtonComponent, deps: [{ token: i1.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
105
+ SkyTabsetNavButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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" });
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabsetNavButtonComponent, decorators: [{
107
+ type: Component,
108
+ args: [{
109
+ selector: 'sky-tabset-nav-button',
110
+ templateUrl: './tabset-nav-button.component.html',
111
+ }]
112
+ }], ctorParameters: function () { return [{ type: i1.SkyLibResourcesService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { tabset: [{
113
+ type: Input
114
+ }], buttonType: [{
115
+ type: Input
116
+ }], buttonText: [{
117
+ type: Input
118
+ }] } });
119
+ //# sourceMappingURL=tabset-nav-button.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabset-nav-button.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-nav-button.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-nav-button.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input,\n} from '@angular/core';\n\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { forkJoin } from 'rxjs';\n\nimport { take } from 'rxjs/operators';\n\nimport { SkyTabsetComponent } from './tabset.component';\n\nimport { SkyTabComponent } 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 @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(\n (tab) => tab.tabIndex === this.tabset.lastActiveTabIndex\n );\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(\n private resourceService: SkyLibResourcesService,\n private changeDetector: ChangeDetectorRef\n ) {}\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"]}
@@ -0,0 +1,126 @@
1
+ import { Location } from '@angular/common';
2
+ import { Injectable } from '@angular/core';
3
+ import { ActivatedRoute, Router } from '@angular/router';
4
+ import { Subject } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/router";
7
+ import * as i2 from "@angular/common";
8
+ /**
9
+ * @internal
10
+ */
11
+ export class SkyTabsetPermalinkService {
12
+ constructor(activatedRoute, location, router) {
13
+ this.activatedRoute = activatedRoute;
14
+ this.location = location;
15
+ this.router = router;
16
+ this._popStateChange = new Subject();
17
+ }
18
+ get popStateChange() {
19
+ return this._popStateChange.asObservable();
20
+ }
21
+ ngOnDestroy() {
22
+ if (this.subscription) {
23
+ this.subscription.unsubscribe();
24
+ }
25
+ }
26
+ init() {
27
+ this.subscription = this.location.subscribe(() => {
28
+ this._popStateChange.next();
29
+ });
30
+ }
31
+ /**
32
+ * Returns the value of a URL query param.
33
+ */
34
+ getParam(name) {
35
+ return this.getParams()[name];
36
+ }
37
+ /**
38
+ * Sets the value of a URL query param.
39
+ */
40
+ setParam(name, value) {
41
+ const params = this.getParams();
42
+ if (value === null) {
43
+ delete params[name];
44
+ }
45
+ else {
46
+ params[name] = value;
47
+ }
48
+ // Update the URL without triggering a navigation state change.
49
+ // See: https://stackoverflow.com/a/46486677
50
+ const url = this.router
51
+ .createUrlTree(['.'], {
52
+ relativeTo: this.activatedRoute,
53
+ queryParams: params,
54
+ queryParamsHandling: 'merge',
55
+ })
56
+ .toString();
57
+ // Abort redirect if the current URL is equal to the new URL.
58
+ if (this.location.isCurrentPathEqualTo(url)) {
59
+ return;
60
+ }
61
+ this.location.go(url);
62
+ }
63
+ /**
64
+ * Removes the provided query param from the URL.
65
+ */
66
+ clearParam(name) {
67
+ /*tslint:disable-next-line:no-null-keyword*/
68
+ this.setParam(name, null);
69
+ }
70
+ /**
71
+ * Returns a relative URL that includes the provided query parameter. The value is inteded to be
72
+ * used by an HTML anchor element.
73
+ */
74
+ getParamHref(name, value) {
75
+ if (!name) {
76
+ /*tslint:disable-next-line:no-null-keyword*/
77
+ return null;
78
+ }
79
+ const params = this.getParams();
80
+ params[name] = value;
81
+ const baseUrl = this.location.path().split('?')[0];
82
+ const paramString = Object.keys(params)
83
+ .map((k) => `${k}=${params[k]}`)
84
+ .join('&');
85
+ return this.location.prepareExternalUrl(`${baseUrl}?${paramString}`);
86
+ }
87
+ /**
88
+ * Converts the provided string into a value that can be safely used in a URL.
89
+ */
90
+ urlify(value) {
91
+ if (!value) {
92
+ return '';
93
+ }
94
+ const sanitized = value
95
+ .toLowerCase()
96
+ // Remove special characters.
97
+ .replace(/[\_\~\`\@\!\#\$\%\^\&\*\(\)\[\]\{\}\;\:\'\/\\\<\>\,\.\?\=\+\|"]/g, '')
98
+ // Replace space characters with a dash.
99
+ .replace(/\s/g, '-')
100
+ // Remove any double-dashes.
101
+ .replace(/--/g, '-');
102
+ return sanitized;
103
+ }
104
+ /**
105
+ * Returns all query params that exist in the current URL.
106
+ */
107
+ getParams() {
108
+ const params = {};
109
+ const path = this.location.path();
110
+ if (path.indexOf('?') === -1) {
111
+ return params;
112
+ }
113
+ const existingParamPairs = path.split('?')[1].split('&');
114
+ existingParamPairs.forEach((pair) => {
115
+ const fragments = pair.split('=');
116
+ params[fragments[0]] = decodeURIComponent(fragments[1]);
117
+ });
118
+ return params;
119
+ }
120
+ }
121
+ SkyTabsetPermalinkService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabsetPermalinkService, deps: [{ token: i1.ActivatedRoute }, { token: i2.Location }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
122
+ SkyTabsetPermalinkService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabsetPermalinkService });
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabsetPermalinkService, decorators: [{
124
+ type: Injectable
125
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.Location }, { type: i1.Router }]; } });
126
+ //# sourceMappingURL=tabset-permalink.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabset-permalink.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-permalink.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Location } from '@angular/common';\n\nimport { Injectable, OnDestroy } from '@angular/core';\n\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { Observable, Subject, SubscriptionLike } 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 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\n .createUrlTree(['.'], {\n relativeTo: this.activatedRoute,\n queryParams: params,\n queryParamsHandling: 'merge',\n })\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)\n .map((k) => `${k}=${params[k]}`)\n .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\n .toLowerCase()\n\n // Remove special characters.\n .replace(\n /[\\_\\~\\`\\@\\!\\#\\$\\%\\^\\&\\*\\(\\)\\[\\]\\{\\}\\;\\:\\'\\/\\\\\\<\\>\\,\\.\\?\\=\\+\\|\"]/g,\n ''\n )\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"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tabset-style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabset-style.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-style.ts"],"names":[],"mappings":"","sourcesContent":["export type SkyTabsetStyle = 'tabs' | 'wizard';\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tabset-tab-indexes-change.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabset-tab-indexes-change.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-tab-indexes-change.ts"],"names":[],"mappings":"","sourcesContent":["import { SkyTabIndex } from './tab-index';\n\nexport interface SkyTabsetTabIndexesChange {\n tabs?: {\n tabHeading: string;\n\n tabIndex: SkyTabIndex;\n }[];\n}\n"]}