@skyux/tabs 5.9.4 → 6.0.0-beta.10

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 (107) hide show
  1. package/documentation.json +1 -1
  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 +124 -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 +395 -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} +184 -238
  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 +2002 -0
  40. package/fesm2020/skyux-tabs.mjs.map +1 -0
  41. package/package.json +43 -19
  42. package/testing/package.json +5 -5
  43. package/bundles/skyux-tabs-testing.umd.js +0 -498
  44. package/bundles/skyux-tabs.umd.js +0 -2260
  45. package/esm2015/index.js +0 -23
  46. package/esm2015/index.js.map +0 -1
  47. package/esm2015/lib/modules/sectioned-form/sectioned-form-section.component.js +0 -67
  48. package/esm2015/lib/modules/sectioned-form/sectioned-form-section.component.js.map +0 -1
  49. package/esm2015/lib/modules/sectioned-form/sectioned-form.component.js +0 -116
  50. package/esm2015/lib/modules/sectioned-form/sectioned-form.component.js.map +0 -1
  51. package/esm2015/lib/modules/sectioned-form/sectioned-form.module.js +0 -35
  52. package/esm2015/lib/modules/sectioned-form/sectioned-form.module.js.map +0 -1
  53. package/esm2015/lib/modules/sectioned-form/sectioned-form.service.js +0 -35
  54. package/esm2015/lib/modules/sectioned-form/sectioned-form.service.js.map +0 -1
  55. package/esm2015/lib/modules/shared/sky-tabs-resources.module.js +0 -52
  56. package/esm2015/lib/modules/shared/sky-tabs-resources.module.js.map +0 -1
  57. package/esm2015/lib/modules/tabs/tab-button.component.js +0 -76
  58. package/esm2015/lib/modules/tabs/tab-button.component.js.map +0 -1
  59. package/esm2015/lib/modules/tabs/tab-index.js +0 -2
  60. package/esm2015/lib/modules/tabs/tab-index.js.map +0 -1
  61. package/esm2015/lib/modules/tabs/tab.component.js +0 -135
  62. package/esm2015/lib/modules/tabs/tab.component.js.map +0 -1
  63. package/esm2015/lib/modules/tabs/tabs.module.js +0 -57
  64. package/esm2015/lib/modules/tabs/tabs.module.js.map +0 -1
  65. package/esm2015/lib/modules/tabs/tabset-active-tab-unregistered-args.js +0 -2
  66. package/esm2015/lib/modules/tabs/tabset-active-tab-unregistered-args.js.map +0 -1
  67. package/esm2015/lib/modules/tabs/tabset-adapter.service.js +0 -56
  68. package/esm2015/lib/modules/tabs/tabset-adapter.service.js.map +0 -1
  69. package/esm2015/lib/modules/tabs/tabset-buttons-display-mode.js +0 -2
  70. package/esm2015/lib/modules/tabs/tabset-buttons-display-mode.js.map +0 -1
  71. package/esm2015/lib/modules/tabs/tabset-nav-button.component.js +0 -119
  72. package/esm2015/lib/modules/tabs/tabset-nav-button.component.js.map +0 -1
  73. package/esm2015/lib/modules/tabs/tabset-permalink.service.js +0 -126
  74. package/esm2015/lib/modules/tabs/tabset-permalink.service.js.map +0 -1
  75. package/esm2015/lib/modules/tabs/tabset-style.js +0 -2
  76. package/esm2015/lib/modules/tabs/tabset-style.js.map +0 -1
  77. package/esm2015/lib/modules/tabs/tabset-tab-indexes-change.js +0 -2
  78. package/esm2015/lib/modules/tabs/tabset-tab-indexes-change.js.map +0 -1
  79. package/esm2015/lib/modules/tabs/tabset.component.js +0 -407
  80. package/esm2015/lib/modules/tabs/tabset.component.js.map +0 -1
  81. package/esm2015/lib/modules/tabs/tabset.service.js +0 -110
  82. package/esm2015/lib/modules/tabs/tabset.service.js.map +0 -1
  83. package/esm2015/lib/modules/vertical-tabset/vertical-tab-media-query.service.js +0 -72
  84. package/esm2015/lib/modules/vertical-tabset/vertical-tab-media-query.service.js.map +0 -1
  85. package/esm2015/lib/modules/vertical-tabset/vertical-tab.component.js +0 -203
  86. package/esm2015/lib/modules/vertical-tabset/vertical-tab.component.js.map +0 -1
  87. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-adapter.service.js +0 -48
  88. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-adapter.service.js.map +0 -1
  89. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-group.component.js +0 -89
  90. package/esm2015/lib/modules/vertical-tabset/vertical-tabset-group.component.js.map +0 -1
  91. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.component.js +0 -157
  92. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.component.js.map +0 -1
  93. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.module.js +0 -60
  94. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.module.js.map +0 -1
  95. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.service.js +0 -170
  96. package/esm2015/lib/modules/vertical-tabset/vertical-tabset.service.js.map +0 -1
  97. package/esm2015/skyux-tabs.js +0 -5
  98. package/esm2015/skyux-tabs.js.map +0 -1
  99. package/esm2015/testing/public-api.js +0 -3
  100. package/esm2015/testing/public-api.js.map +0 -1
  101. package/esm2015/testing/skyux-tabs-testing.js +0 -5
  102. package/esm2015/testing/skyux-tabs-testing.js.map +0 -1
  103. package/esm2015/testing/tabs/tab-fixture-tab.js +0 -2
  104. package/esm2015/testing/tabs/tab-fixture-tab.js.map +0 -1
  105. package/esm2015/testing/tabs/tabset-fixture.js.map +0 -1
  106. package/fesm2015/skyux-tabs-testing.js.map +0 -1
  107. package/fesm2015/skyux-tabs.js.map +0 -1
@@ -1,135 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import { SkyTabsetPermalinkService } from './tabset-permalink.service';
4
- import { SkyTabsetService } from './tabset.service';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "./tabset-permalink.service";
7
- import * as i2 from "./tabset.service";
8
- let nextId = 0;
9
- export class SkyTabComponent {
10
- constructor(changeDetector, permalinkService, tabsetService) {
11
- this.changeDetector = changeDetector;
12
- this.permalinkService = permalinkService;
13
- this.tabsetService = tabsetService;
14
- /**
15
- * Fires when users click the button to close the tab.
16
- * The close button is added to the tab when you specify a listener for this event.
17
- */
18
- this.close = new EventEmitter(); // eslint-disable-line @angular-eslint/no-output-native
19
- this.showContent = false;
20
- this._activeChange = new BehaviorSubject(undefined);
21
- this._stateChange = new BehaviorSubject(undefined);
22
- this._tabIndexChange = new BehaviorSubject(undefined);
23
- const id = nextId++;
24
- this.tabPanelId = `sky-tab-${id}`;
25
- this.tabButtonId = `${this.tabPanelId}-nav-btn`;
26
- }
27
- /**
28
- * Indicates whether the tab is active when the tabset loads. After initialization, the `active`
29
- * property on the tabset component should be used to set the active tab.
30
- * @default false
31
- */
32
- set active(value) {
33
- if (value !== undefined && value !== this._active) {
34
- this._active = value;
35
- this._activeChange.next();
36
- }
37
- }
38
- get active() {
39
- return this._active || false;
40
- }
41
- get activeChange() {
42
- return this._activeChange.asObservable();
43
- }
44
- /**
45
- * Specifies a custom query parameter value for the tab.
46
- * This works in conjunction with the tabset's `permalinkId` to distinguish
47
- * the tab's unique state in the URL by generating a query parameter that is
48
- * written as `?<queryParam>-active-tab=<sanitized-tab-heading`.
49
- * By default, the query parameter's value is parsed automatically from the tab's heading text.
50
- */
51
- set permalinkValue(value) {
52
- this._permalinkValue = this.permalinkService.urlify(value);
53
- }
54
- get permalinkValue() {
55
- return (this._permalinkValue || this.permalinkService.urlify(this.tabHeading));
56
- }
57
- /**
58
- * Specifies a unique identifier for the tab.
59
- * If not defined, the identifier is set to the position of the tab on load, starting with `0`.
60
- */
61
- set tabIndex(value) {
62
- if (value !== this._tabIndex &&
63
- value !== undefined &&
64
- this._tabIndex !== undefined) {
65
- this.tabsetService.updateTabIndex(this._tabIndex, value);
66
- this._tabIndexChange.next(value);
67
- }
68
- this._tabIndex = value;
69
- }
70
- get tabIndex() {
71
- return this._tabIndex;
72
- }
73
- get closeable() {
74
- return this.close.observers.length > 0;
75
- }
76
- /**
77
- * Alerts the tabset component when this component has changes that need to be reflected in the UI.
78
- */
79
- get stateChange() {
80
- return this._stateChange.asObservable();
81
- }
82
- get tabIndexChange() {
83
- return this._tabIndexChange.asObservable();
84
- }
85
- ngOnChanges(changes) {
86
- if ((changes.disabled && !changes.disabled.firstChange) ||
87
- (changes.tabHeading && !changes.tabHeading.firstChange) ||
88
- (changes.tabHeaderCount && !changes.tabHeaderCount.firstChange) ||
89
- (changes.permalinkValue && !changes.permalinkValue.firstChange)) {
90
- this._stateChange.next();
91
- }
92
- }
93
- ngOnDestroy() {
94
- this._stateChange.complete();
95
- this.tabsetService.unregisterTab(this.tabIndex);
96
- }
97
- init() {
98
- this._tabIndex = this.tabsetService.registerTab(this.tabIndex);
99
- }
100
- activate() {
101
- this._active = true;
102
- this.showContent = true;
103
- this.changeDetector.markForCheck();
104
- }
105
- deactivate() {
106
- this._active = false;
107
- this.showContent = false;
108
- this.changeDetector.markForCheck();
109
- }
110
- }
111
- SkyTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyTabsetPermalinkService }, { token: i2.SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
112
- SkyTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyTabComponent, selector: "sky-tab", inputs: { active: "active", disabled: "disabled", permalinkValue: "permalinkValue", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", tabIndex: "tabIndex" }, outputs: { close: "close" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n>\n <ng-content></ng-content>\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTabComponent, decorators: [{
114
- type: Component,
115
- args: [{
116
- selector: 'sky-tab',
117
- templateUrl: './tab.component.html',
118
- changeDetection: ChangeDetectionStrategy.OnPush,
119
- }]
120
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyTabsetPermalinkService }, { type: i2.SkyTabsetService }]; }, propDecorators: { active: [{
121
- type: Input
122
- }], disabled: [{
123
- type: Input
124
- }], permalinkValue: [{
125
- type: Input
126
- }], tabHeaderCount: [{
127
- type: Input
128
- }], tabHeading: [{
129
- type: Input
130
- }], tabIndex: [{
131
- type: Input
132
- }], close: [{
133
- type: Output
134
- }] } });
135
- //# sourceMappingURL=tab.component.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tab.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tab.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tab.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabsetPermalinkService } from './tabset-permalink.service';\nimport { SkyTabsetService } from './tabset.service';\n\nlet nextId = 0;\n\n@Component({\n selector: 'sky-tab',\n templateUrl: './tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyTabComponent implements OnChanges, OnDestroy {\n /**\n * Indicates whether the tab is active when the tabset loads. After initialization, the `active`\n * property on the tabset component should be used to set the active tab.\n * @default false\n */\n @Input()\n public set active(value: boolean) {\n if (value !== undefined && value !== this._active) {\n this._active = value;\n this._activeChange.next();\n }\n }\n\n public get active(): boolean {\n return this._active || false;\n }\n\n public get activeChange(): Observable<void> {\n return this._activeChange.asObservable();\n }\n\n /**\n * Indicates whether to disable the tab.\n * @default false\n */\n @Input()\n public disabled: boolean;\n\n /**\n * Specifies a custom query parameter value for the tab.\n * This works in conjunction with the tabset's `permalinkId` to distinguish\n * the tab's unique state in the URL by generating a query parameter that is\n * written as `?<queryParam>-active-tab=<sanitized-tab-heading`.\n * By default, the query parameter's value is parsed automatically from the tab's heading text.\n */\n @Input()\n public set permalinkValue(value: string) {\n this._permalinkValue = this.permalinkService.urlify(value);\n }\n\n public get permalinkValue(): string {\n return (\n this._permalinkValue || this.permalinkService.urlify(this.tabHeading)\n );\n }\n\n /**\n * Displays a counter beside the tab header.\n */\n @Input()\n public tabHeaderCount: string | undefined;\n\n /**\n * Specifies the tab header.\n * When using tabs as the main navigation on a page,\n * use [the Angular `Title` service](https://angular.io/docs/ts/latest/cookbook/set-document-title.html)\n * and [the SKY UX `title` configuration property](https://developer.blackbaud.com/skyux/learn/reference/configuration#app)\n * to reflect the tab header in the page title.\n * @required\n */\n @Input()\n public tabHeading: string;\n\n /**\n * Specifies a unique identifier for the tab.\n * If not defined, the identifier is set to the position of the tab on load, starting with `0`.\n */\n @Input()\n public set tabIndex(value: SkyTabIndex) {\n if (\n value !== this._tabIndex &&\n value !== undefined &&\n this._tabIndex !== undefined\n ) {\n this.tabsetService.updateTabIndex(this._tabIndex, value);\n this._tabIndexChange.next(value);\n }\n\n this._tabIndex = value;\n }\n\n public get tabIndex(): SkyTabIndex {\n return this._tabIndex;\n }\n\n /**\n * Fires when users click the button to close the tab.\n * The close button is added to the tab when you specify a listener for this event.\n */\n @Output()\n public close = new EventEmitter<void>(); // eslint-disable-line @angular-eslint/no-output-native\n\n public get closeable(): boolean {\n return this.close.observers.length > 0;\n }\n\n /**\n * Alerts the tabset component when this component has changes that need to be reflected in the UI.\n */\n public get stateChange(): Observable<void> {\n return this._stateChange.asObservable();\n }\n\n public get tabIndexChange(): Observable<SkyTabIndex> {\n return this._tabIndexChange.asObservable();\n }\n\n public showContent = false;\n\n public tabButtonId: string;\n\n public tabPanelId: string;\n\n private _active: boolean;\n\n private _activeChange = new BehaviorSubject<void>(undefined);\n\n private _permalinkValue: string;\n\n private _stateChange = new BehaviorSubject<void>(undefined);\n\n private _tabIndex: SkyTabIndex;\n\n private _tabIndexChange = new BehaviorSubject<SkyTabIndex>(undefined);\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private permalinkService: SkyTabsetPermalinkService,\n private tabsetService: SkyTabsetService\n ) {\n const id = nextId++;\n this.tabPanelId = `sky-tab-${id}`;\n this.tabButtonId = `${this.tabPanelId}-nav-btn`;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\n (changes.disabled && !changes.disabled.firstChange) ||\n (changes.tabHeading && !changes.tabHeading.firstChange) ||\n (changes.tabHeaderCount && !changes.tabHeaderCount.firstChange) ||\n (changes.permalinkValue && !changes.permalinkValue.firstChange)\n ) {\n this._stateChange.next();\n }\n }\n\n public ngOnDestroy(): void {\n this._stateChange.complete();\n this.tabsetService.unregisterTab(this.tabIndex);\n }\n\n public init(): void {\n this._tabIndex = this.tabsetService.registerTab(this.tabIndex);\n }\n\n public activate(): void {\n this._active = true;\n this.showContent = true;\n this.changeDetector.markForCheck();\n }\n\n public deactivate(): void {\n this._active = false;\n this.showContent = false;\n this.changeDetector.markForCheck();\n }\n}\n","<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n>\n <ng-content></ng-content>\n</div>\n"]}
@@ -1,57 +0,0 @@
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
@@ -1 +0,0 @@
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;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,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';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/indicators';\nimport { SkyDropdownModule } from '@skyux/popovers';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';\n\nimport { SkyTabButtonComponent } from './tab-button.component';\nimport { SkyTabComponent } from './tab.component';\nimport { SkyTabsetNavButtonComponent } from './tabset-nav-button.component';\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"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tabset-active-tab-unregistered-args.js.map
@@ -1 +0,0 @@
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"]}
@@ -1,56 +0,0 @@
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
@@ -1 +0,0 @@
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"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tabset-buttons-display-mode.js.map
@@ -1 +0,0 @@
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"]}
@@ -1,119 +0,0 @@
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
- const selectedTab = this.selectedTab;
59
- if (selectedTab) {
60
- const tabs = this.tabset.tabs.toArray();
61
- return tabs[tabs.indexOf(selectedTab) + 1];
62
- }
63
- return undefined;
64
- }
65
- get previousTab() {
66
- const selectedTab = this.selectedTab;
67
- if (selectedTab) {
68
- const 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
@@ -1 +0,0 @@
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';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { forkJoin } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { SkyTabComponent } from './tab.component';\nimport { SkyTabsetComponent } from './tabset.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 const selectedTab = this.selectedTab;\n\n if (selectedTab) {\n const 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 const selectedTab = this.selectedTab;\n\n if (selectedTab) {\n const 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"]}
@@ -1,126 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"tabset-permalink.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-permalink.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAa,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAc,OAAO,EAAoB,MAAM,MAAM,CAAC;;;;AAS7D;;GAEG;AAEH,MAAM,OAAO,yBAAyB;IASpC,YACU,cAA8B,EAC9B,QAAkB,EAClB,MAAc;QAFd,mBAAc,GAAd,cAAc,CAAgB;QAC9B,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAQ;QAPhB,oBAAe,GAAG,IAAI,OAAO,EAAQ,CAAC;IAQ3C,CAAC;IAZJ,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;IAC7C,CAAC;IAYM,WAAW;QAChB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;IACH,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;YAC/C,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,IAAY;QAC1B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,IAAY,EAAE,KAAoB;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhC,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;SACrB;aAAM;YACL,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;SACtB;QAED,+DAA+D;QAC/D,4CAA4C;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM;aACpB,aAAa,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,IAAI,CAAC,cAAc;YAC/B,WAAW,EAAE,MAAM;YACnB,mBAAmB,EAAE,OAAO;SAC7B,CAAC;aACD,QAAQ,EAAE,CAAC;QAEd,6DAA6D;QAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE;YAC3C,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,IAAY;QAC5B,4CAA4C;QAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,IAAY,EAAE,KAAa;QAC7C,IAAI,CAAC,IAAI,EAAE;YACT,4CAA4C;YAC5C,OAAO,IAAI,CAAC;SACb;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAErB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAa;QACzB,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,EAAE,CAAC;SACX;QAED,MAAM,SAAS,GAAG,KAAK;aACpB,WAAW,EAAE;YAEd,6BAA6B;aAC5B,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC;YAEpD,wCAAwC;aACvC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;YAEpB,4BAA4B;aAC3B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,SAAS;QACf,MAAM,MAAM,GAAoB,EAAE,CAAC;QAEnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YAC5B,OAAO,MAAM,CAAC;SACf;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzD,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;;uHAtIU,yBAAyB;2HAAzB,yBAAyB;4FAAzB,yBAAyB;kBADrC,UAAU","sourcesContent":["import { Location } from '@angular/common';\nimport { Injectable, OnDestroy } from '@angular/core';\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(/[_~`@!#$%^&*()[\\]{};:'/\\\\<>,.?=+|\"]/g, '')\n\n // Replace space characters with a dash.\n .replace(/\\s/g, '-')\n\n // Remove any double-dashes.\n .replace(/--/g, '-');\n\n return sanitized;\n }\n\n /**\n * Returns all query params that exist in the current URL.\n */\n private getParams(): PermalinkParams {\n const params: PermalinkParams = {};\n\n const path = this.location.path();\n if (path.indexOf('?') === -1) {\n return params;\n }\n\n const existingParamPairs = path.split('?')[1].split('&');\n existingParamPairs.forEach((pair) => {\n const fragments = pair.split('=');\n params[fragments[0]] = decodeURIComponent(fragments[1]);\n });\n\n return params;\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tabset-style.js.map
@@ -1 +0,0 @@
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"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tabset-tab-indexes-change.js.map
@@ -1 +0,0 @@
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"]}