@skyux/tabs 8.7.2 → 9.0.0-alpha.1
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.
- package/documentation.json +100 -100
- package/esm2022/lib/modules/sectioned-form/sectioned-form-section.component.mjs +65 -0
- package/esm2022/lib/modules/sectioned-form/sectioned-form.component.mjs +187 -0
- package/{esm2020 → esm2022}/lib/modules/sectioned-form/sectioned-form.module.mjs +11 -11
- package/{esm2020 → esm2022}/lib/modules/sectioned-form/sectioned-form.service.mjs +4 -4
- package/esm2022/lib/modules/shared/sky-tabs-resources.module.mjs +61 -0
- package/esm2022/lib/modules/shared/tab-id.service.mjs +50 -0
- package/{esm2020 → esm2022}/lib/modules/tabs/tab-button-adapter.service.mjs +4 -4
- package/esm2022/lib/modules/tabs/tab-button.component.mjs +162 -0
- package/esm2022/lib/modules/tabs/tab.component.mjs +197 -0
- package/{esm2020 → esm2022}/lib/modules/tabs/tabs.module.mjs +21 -21
- package/esm2022/lib/modules/tabs/tabset-adapter.service.mjs +68 -0
- package/{esm2020 → esm2022}/lib/modules/tabs/tabset-nav-button-disabled.pipe.mjs +4 -4
- package/esm2022/lib/modules/tabs/tabset-nav-button.component.mjs +149 -0
- package/esm2022/lib/modules/tabs/tabset-permalink.service.mjs +128 -0
- package/esm2022/lib/modules/tabs/tabset.component.mjs +466 -0
- package/esm2022/lib/modules/tabs/tabset.service.mjs +198 -0
- package/esm2022/lib/modules/vertical-tabset/vertical-tab-media-query.service.mjs +68 -0
- package/esm2022/lib/modules/vertical-tabset/vertical-tab.component.mjs +217 -0
- package/esm2022/lib/modules/vertical-tabset/vertical-tabset-adapter.service.mjs +48 -0
- package/esm2022/lib/modules/vertical-tabset/vertical-tabset-group.component.mjs +108 -0
- package/esm2022/lib/modules/vertical-tabset/vertical-tabset.component.mjs +158 -0
- package/{esm2020 → esm2022}/lib/modules/vertical-tabset/vertical-tabset.module.mjs +21 -21
- package/esm2022/lib/modules/vertical-tabset/vertical-tabset.service.mjs +169 -0
- package/esm2022/testing/tabs/tabset-fixture.mjs +129 -0
- package/fesm2022/skyux-tabs-testing.mjs +136 -0
- package/{fesm2020 → fesm2022}/skyux-tabs-testing.mjs.map +1 -1
- package/fesm2022/skyux-tabs.mjs +2586 -0
- package/{fesm2020 → fesm2022}/skyux-tabs.mjs.map +1 -1
- package/lib/modules/sectioned-form/sectioned-form-section.component.d.ts +1 -1
- package/lib/modules/sectioned-form/sectioned-form.component.d.ts +1 -1
- package/lib/modules/tabs/tab-button.component.d.ts +1 -1
- package/lib/modules/tabs/tab.component.d.ts +1 -1
- package/lib/modules/tabs/tabset-nav-button.component.d.ts +1 -1
- package/lib/modules/tabs/tabset.component.d.ts +1 -1
- package/lib/modules/vertical-tabset/vertical-tab.component.d.ts +1 -1
- package/lib/modules/vertical-tabset/vertical-tabset-group.component.d.ts +1 -1
- package/lib/modules/vertical-tabset/vertical-tabset.component.d.ts +1 -1
- package/package.json +21 -29
- package/esm2020/lib/modules/sectioned-form/sectioned-form-section.component.mjs +0 -67
- package/esm2020/lib/modules/sectioned-form/sectioned-form.component.mjs +0 -187
- package/esm2020/lib/modules/shared/sky-tabs-resources.module.mjs +0 -61
- package/esm2020/lib/modules/shared/tab-id.service.mjs +0 -53
- package/esm2020/lib/modules/tabs/tab-button.component.mjs +0 -162
- package/esm2020/lib/modules/tabs/tab.component.mjs +0 -198
- package/esm2020/lib/modules/tabs/tabset-adapter.service.mjs +0 -68
- package/esm2020/lib/modules/tabs/tabset-nav-button.component.mjs +0 -149
- package/esm2020/lib/modules/tabs/tabset-permalink.service.mjs +0 -128
- package/esm2020/lib/modules/tabs/tabset.component.mjs +0 -429
- package/esm2020/lib/modules/tabs/tabset.service.mjs +0 -196
- package/esm2020/lib/modules/vertical-tabset/vertical-tab-media-query.service.mjs +0 -71
- package/esm2020/lib/modules/vertical-tabset/vertical-tab.component.mjs +0 -216
- package/esm2020/lib/modules/vertical-tabset/vertical-tabset-adapter.service.mjs +0 -51
- package/esm2020/lib/modules/vertical-tabset/vertical-tabset-group.component.mjs +0 -110
- package/esm2020/lib/modules/vertical-tabset/vertical-tabset.component.mjs +0 -159
- package/esm2020/lib/modules/vertical-tabset/vertical-tabset.service.mjs +0 -167
- package/esm2020/testing/tabs/tabset-fixture.mjs +0 -128
- package/fesm2015/skyux-tabs-testing.mjs +0 -147
- package/fesm2015/skyux-tabs-testing.mjs.map +0 -1
- package/fesm2015/skyux-tabs.mjs +0 -2560
- package/fesm2015/skyux-tabs.mjs.map +0 -1
- package/fesm2020/skyux-tabs-testing.mjs +0 -135
- package/fesm2020/skyux-tabs.mjs +0 -2544
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/sectioned-form/types/sectioned-form-message-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/sectioned-form/types/sectioned-form-message.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/tabs/tab-button-view-model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/tabs/tab-index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/tabs/tab-layout-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/tabs/tabset-active-tab-unregistered-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/tabs/tabset-buttons-display-mode.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/tabs/tabset-nav-button-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/tabs/tabset-style.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/tabs/tabset-tab-indexes-change.mjs +0 -0
- /package/{esm2020 → esm2022}/skyux-tabs.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/skyux-tabs-testing.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/tabs/tab-fixture-tab.mjs +0 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, Input, } 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 * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./vertical-tabset.service";
|
|
8
|
+
import * as i2 from "@angular/common";
|
|
9
|
+
import * as i3 from "@skyux/core";
|
|
10
|
+
import * as i4 from "@skyux/indicators";
|
|
11
|
+
export class SkyVerticalTabsetGroupComponent {
|
|
12
|
+
/**
|
|
13
|
+
* Whether to disable the ability to expand and collapse the group.
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
set disabled(value) {
|
|
17
|
+
this.#_disabled = value;
|
|
18
|
+
this.#updateSlideDirection(false);
|
|
19
|
+
}
|
|
20
|
+
get disabled() {
|
|
21
|
+
return this.#_disabled;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Whether the collapsible group is expanded.
|
|
25
|
+
* @default false
|
|
26
|
+
*/
|
|
27
|
+
set open(value) {
|
|
28
|
+
this.#_open = value;
|
|
29
|
+
this.#updateSlideDirection(false);
|
|
30
|
+
}
|
|
31
|
+
get open() {
|
|
32
|
+
return this.#_open;
|
|
33
|
+
}
|
|
34
|
+
#ngUnsubscribe;
|
|
35
|
+
#tabService;
|
|
36
|
+
#changeRef;
|
|
37
|
+
#_disabled;
|
|
38
|
+
#_open;
|
|
39
|
+
constructor(tabService, changeRef) {
|
|
40
|
+
this.animationDisabled = false;
|
|
41
|
+
this.slideDirection = 'up';
|
|
42
|
+
this.#ngUnsubscribe = new Subject();
|
|
43
|
+
this.tabClicked = () => {
|
|
44
|
+
this.#changeRef.markForCheck();
|
|
45
|
+
};
|
|
46
|
+
this.tabsHidden = () => {
|
|
47
|
+
// Angular will sometimes place the animation into the "void" state when tabs are hidden. Update our internal variable to reflect that.
|
|
48
|
+
this.slideDirection = 'void';
|
|
49
|
+
this.#changeRef.markForCheck();
|
|
50
|
+
};
|
|
51
|
+
this.tabsShown = () => {
|
|
52
|
+
// Set the animation back up so that the "void" state is returned to where it was prior to the tabs being hidden.
|
|
53
|
+
// This will be instantaneous due to there not being a "void -> *" state on the slide animation.
|
|
54
|
+
this.#updateSlideDirection(true);
|
|
55
|
+
this.#changeRef.markForCheck();
|
|
56
|
+
};
|
|
57
|
+
this.#tabService = tabService;
|
|
58
|
+
this.#changeRef = changeRef;
|
|
59
|
+
}
|
|
60
|
+
ngOnInit() {
|
|
61
|
+
this.#tabService.hidingTabs
|
|
62
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
|
63
|
+
.subscribe(this.tabsHidden);
|
|
64
|
+
this.#tabService.showingTabs
|
|
65
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
|
66
|
+
.subscribe(this.tabsShown);
|
|
67
|
+
this.#tabService.tabClicked
|
|
68
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
|
69
|
+
.subscribe(this.tabClicked);
|
|
70
|
+
}
|
|
71
|
+
ngOnDestroy() {
|
|
72
|
+
this.#ngUnsubscribe.next();
|
|
73
|
+
this.#ngUnsubscribe.complete();
|
|
74
|
+
}
|
|
75
|
+
updateSlideDirection(event) {
|
|
76
|
+
this.slideDirection = event.toState;
|
|
77
|
+
}
|
|
78
|
+
toggleMenuOpen() {
|
|
79
|
+
if (!this.disabled) {
|
|
80
|
+
this.open = !this.open;
|
|
81
|
+
}
|
|
82
|
+
this.#updateSlideDirection(true);
|
|
83
|
+
this.#changeRef.markForCheck();
|
|
84
|
+
}
|
|
85
|
+
subMenuOpen() {
|
|
86
|
+
return !!this.tabs && this.tabs.find((t) => !!t.active) !== undefined;
|
|
87
|
+
}
|
|
88
|
+
#updateSlideDirection(animate) {
|
|
89
|
+
this.animationDisabled = !animate;
|
|
90
|
+
this.slideDirection = this.open && !this.disabled ? 'down' : 'up';
|
|
91
|
+
}
|
|
92
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyVerticalTabsetGroupComponent, deps: [{ token: i1.SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
93
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.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':\n subMenuOpen(),\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n [tabIndex]=\"-1\"\n >\n <button\n class=\"sky-padding-even-default\"\n type=\"button\"\n skyId\n [attr.aria-controls]=\"groupContent.id\"\n [attr.aria-expanded]=\"!disabled && open\"\n (click)=\"toggleMenuOpen()\"\n #groupHeadingButton\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"!disabled && open ? 'up' : 'down'\"\n >\n </sky-expansion-indicator>\n </button>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n skyId\n [attr.labelledby]=\"groupHeadingButton.id\"\n [@.disabled]=\"animationDisabled\"\n [@skyAnimationSlide]=\"slideDirection\"\n (@skyAnimationSlide.done)=\"updateSlideDirection($event)\"\n #groupContent\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header button{cursor:pointer;display:flex;justify-content:space-between;border:none;width:100%;text-align:left;background:none}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-expansion-indicator>button{font-size:14px!important}.sky-vertical-tabset-disabled{cursor:not-allowed;pointer-events:none}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none;margin:10px 0}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-content{border:none;padding-left:25px}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header{position:relative}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none;margin:10px 0}.sky-theme-modern .sky-vertical-tabset-group-content{border:none;padding-left:25px}.sky-theme-modern .sky-vertical-tabset-group-header{position:relative}.sky-theme-modern .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: i4.λ15, selector: "sky-expansion-indicator", inputs: ["direction"] }], animations: [skyAnimationSlide], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
94
|
+
}
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyVerticalTabsetGroupComponent, decorators: [{
|
|
96
|
+
type: Component,
|
|
97
|
+
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':\n subMenuOpen(),\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n [tabIndex]=\"-1\"\n >\n <button\n class=\"sky-padding-even-default\"\n type=\"button\"\n skyId\n [attr.aria-controls]=\"groupContent.id\"\n [attr.aria-expanded]=\"!disabled && open\"\n (click)=\"toggleMenuOpen()\"\n #groupHeadingButton\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"!disabled && open ? 'up' : 'down'\"\n >\n </sky-expansion-indicator>\n </button>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n skyId\n [attr.labelledby]=\"groupHeadingButton.id\"\n [@.disabled]=\"animationDisabled\"\n [@skyAnimationSlide]=\"slideDirection\"\n (@skyAnimationSlide.done)=\"updateSlideDirection($event)\"\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"] }]
|
|
98
|
+
}], ctorParameters: function () { return [{ type: i1.SkyVerticalTabsetService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], groupHeading: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], open: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], tabs: [{
|
|
105
|
+
type: ContentChildren,
|
|
106
|
+
args: [SkyVerticalTabComponent]
|
|
107
|
+
}] } });
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixLQUFLLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQVVuRSxNQUFNLE9BQU8sK0JBQStCO0lBQzFDOzs7T0FHRztJQUNILElBQ1csUUFBUSxDQUFDLEtBQTBCO1FBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBUUQ7OztPQUdHO0lBQ0gsSUFDVyxJQUFJLENBQUMsS0FBMEI7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLHFCQUFxQixDQUFD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LENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BFLENBQUM7OEdBakhVLCtCQUErQjtrR0FBL0IsK0JBQStCLG9LQW1DekIsdUJBQXVCLDZCQzVEMUMsMnhDQTBDQSwrOUNEbkJjLENBQUMsaUJBQWlCLENBQUM7OzJGQUVwQiwrQkFBK0I7a0JBUDNDLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLENBQUMsaUJBQWlCLENBQUM7K0lBUXBCLFFBQVE7c0JBRGxCLEtBQUs7Z0JBY0MsWUFBWTtzQkFEbEIsS0FBSztnQkFRSyxJQUFJO3NCQURkLEtBQUs7Z0JBV0MsSUFBSTtzQkFEVixlQUFlO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNreUFuaW1hdGlvblNsaWRlIH0gZnJvbSAnQHNreXV4L2FuaW1hdGlvbnMnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50IH0gZnJvbSAnLi92ZXJ0aWNhbC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0U2VydmljZSB9IGZyb20gJy4vdmVydGljYWwtdGFic2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdmVydGljYWwtdGFic2V0LWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcnRpY2FsLXRhYnNldC1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZlcnRpY2FsLXRhYnNldC1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW3NreUFuaW1hdGlvblNsaWRlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJzZXRHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgYWJpbGl0eSB0byBleHBhbmQgYW5kIGNvbGxhcHNlIHRoZSBncm91cC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVTbGlkZURpcmVjdGlvbihmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGhlYWRlciBmb3IgdGhlIGNvbGxhcHNpYmxlIGdyb3VwIG9mIHRhYnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ3JvdXBIZWFkaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbGxhcHNpYmxlIGdyb3VwIGlzIGV4cGFuZGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBvcGVuKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX29wZW4gPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVTbGlkZURpcmVjdGlvbihmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZW4oKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19vcGVuO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudClcbiAgcHVibGljIHRhYnM6IFF1ZXJ5TGlzdDxTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGFuaW1hdGlvbkRpc2FibGVkID0gZmFsc2U7XG4gIHB1YmxpYyBzbGlkZURpcmVjdGlvbjogJ2Rvd24nIHwgJ3VwJyB8ICd2b2lkJyA9ICd1cCc7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICN0YWJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2U7XG4gICNjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmO1xuXG4gICNfZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICNfb3BlbjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB0YWJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2UsXG4gICAgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLiN0YWJTZXJ2aWNlID0gdGFiU2VydmljZTtcbiAgICB0aGlzLiNjaGFuZ2VSZWYgPSBjaGFuZ2VSZWY7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jdGFiU2VydmljZS5oaWRpbmdUYWJzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKHRoaXMudGFic0hpZGRlbik7XG5cbiAgICB0aGlzLiN0YWJTZXJ2aWNlLnNob3dpbmdUYWJzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKHRoaXMudGFic1Nob3duKTtcblxuICAgIHRoaXMuI3RhYlNlcnZpY2UudGFiQ2xpY2tlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLnRhYkNsaWNrZWQpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTbGlkZURpcmVjdGlvbihldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zbGlkZURpcmVjdGlvbiA9IGV2ZW50LnRvU3RhdGU7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlTWVudU9wZW4oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgIH1cblxuICAgIHRoaXMuI3VwZGF0ZVNsaWRlRGlyZWN0aW9uKHRydWUpO1xuICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJNZW51T3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRhYnMgJiYgdGhpcy50YWJzLmZpbmQoKHQpID0+ICEhdC5hY3RpdmUpICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgdGFiQ2xpY2tlZCA9ICgpID0+IHtcbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH07XG5cbiAgcHVibGljIHRhYnNIaWRkZW4gPSAoKSA9PiB7XG4gICAgLy8gQW5ndWxhciB3aWxsIHNvbWV0aW1lcyBwbGFjZSB0aGUgYW5pbWF0aW9uIGludG8gdGhlIFwidm9pZFwiIHN0YXRlIHdoZW4gdGFicyBhcmUgaGlkZGVuLiBVcGRhdGUgb3VyIGludGVybmFsIHZhcmlhYmxlIHRvIHJlZmxlY3QgdGhhdC5cbiAgICB0aGlzLnNsaWRlRGlyZWN0aW9uID0gJ3ZvaWQnO1xuICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfTtcblxuICBwdWJsaWMgdGFic1Nob3duID0gKCkgPT4ge1xuICAgIC8vIFNldCB0aGUgYW5pbWF0aW9uIGJhY2sgdXAgc28gdGhhdCB0aGUgXCJ2b2lkXCIgc3RhdGUgaXMgcmV0dXJuZWQgdG8gd2hlcmUgaXQgd2FzIHByaW9yIHRvIHRoZSB0YWJzIGJlaW5nIGhpZGRlbi5cbiAgICAvLyBUaGlzIHdpbGwgYmUgaW5zdGFudGFuZW91cyBkdWUgdG8gdGhlcmUgbm90IGJlaW5nIGEgXCJ2b2lkIC0+ICpcIiBzdGF0ZSBvbiB0aGUgc2xpZGUgYW5pbWF0aW9uLlxuICAgIHRoaXMuI3VwZGF0ZVNsaWRlRGlyZWN0aW9uKHRydWUpO1xuICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfTtcblxuICAjdXBkYXRlU2xpZGVEaXJlY3Rpb24oYW5pbWF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuYW5pbWF0aW9uRGlzYWJsZWQgPSAhYW5pbWF0ZTtcbiAgICB0aGlzLnNsaWRlRGlyZWN0aW9uID0gdGhpcy5vcGVuICYmICF0aGlzLmRpc2FibGVkID8gJ2Rvd24nIDogJ3VwJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXBcIj5cbiAgPCEtLSBbbmdDbGFzc10gaW5jbHVkZXMgZm9udCBjbGFzc2VzIGZvciBib3RoIG1vZGVybiBhbmQgZGVmYXVsdCBzdHlsZXMgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtaGVhZGVyXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LXZlcnRpY2FsLXRhYnNldC1ncm91cC1oZWFkZXItc3ViLW9wZW4gc2t5LWZvbnQtZW1waGFzaXplZCc6XG4gICAgICAgIHN1Yk1lbnVPcGVuKCksXG4gICAgICAnc2t5LWZvbnQtZGVlbXBoYXNpemVkJzogZGlzYWJsZWQsXG4gICAgICAnc2t5LWRlZW1waGFzaXplZCc6IGRpc2FibGVkLFxuICAgICAgJ3NreS12ZXJ0aWNhbC10YWJzZXQtZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgIH1cIlxuICAgIFt0YWJJbmRleF09XCItMVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInNreS1wYWRkaW5nLWV2ZW4tZGVmYXVsdFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHNreUlkXG4gICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImdyb3VwQ29udGVudC5pZFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIiFkaXNhYmxlZCAmJiBvcGVuXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVNZW51T3BlbigpXCJcbiAgICAgICNncm91cEhlYWRpbmdCdXR0b25cbiAgICA+XG4gICAgICB7eyBncm91cEhlYWRpbmcgfX1cbiAgICAgIDxza3ktZXhwYW5zaW9uLWluZGljYXRvclxuICAgICAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtZXhwYW5zaW9uLWluZGljYXRvclwiXG4gICAgICAgIFtkaXJlY3Rpb25dPVwiIWRpc2FibGVkICYmIG9wZW4gPyAndXAnIDogJ2Rvd24nXCJcbiAgICAgID5cbiAgICAgIDwvc2t5LWV4cGFuc2lvbi1pbmRpY2F0b3I+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWNvbnRlbnRcIlxuICAgIHNreUlkXG4gICAgW2F0dHIubGFiZWxsZWRieV09XCJncm91cEhlYWRpbmdCdXR0b24uaWRcIlxuICAgIFtALmRpc2FibGVkXT1cImFuaW1hdGlvbkRpc2FibGVkXCJcbiAgICBbQHNreUFuaW1hdGlvblNsaWRlXT1cInNsaWRlRGlyZWN0aW9uXCJcbiAgICAoQHNreUFuaW1hdGlvblNsaWRlLmRvbmUpPVwidXBkYXRlU2xpZGVEaXJlY3Rpb24oJGV2ZW50KVwiXG4gICAgI2dyb3VwQ29udGVudFxuICA+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { animate, style, transition, trigger } from '@angular/animations';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { take, takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { SkyTabIdService } from '../shared/tab-id.service';
|
|
6
|
+
import { HIDDEN_STATE, SkyVerticalTabsetService, VISIBLE_STATE, } from './vertical-tabset.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./vertical-tabset-adapter.service";
|
|
9
|
+
import * as i2 from "./vertical-tabset.service";
|
|
10
|
+
import * as i3 from "@skyux/i18n";
|
|
11
|
+
import * as i4 from "../shared/tab-id.service";
|
|
12
|
+
import * as i5 from "@angular/common";
|
|
13
|
+
import * as i6 from "@skyux/indicators";
|
|
14
|
+
export class SkyVerticalTabsetComponent {
|
|
15
|
+
/**
|
|
16
|
+
* The ARIA role for the vertical tabset
|
|
17
|
+
* [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)
|
|
18
|
+
* by indicating how the tabset functions and what it controls. For information about how
|
|
19
|
+
* an ARIA role indicates what an item represents on a web page, see the
|
|
20
|
+
* [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/#roles).
|
|
21
|
+
* @default "tablist"
|
|
22
|
+
* @deprecated Any other value than `tablist` could lead to a poor user experience for users with assistive technology.
|
|
23
|
+
* In the next major version, this property will be automatically set to `tablist`.
|
|
24
|
+
*/
|
|
25
|
+
get ariaRole() {
|
|
26
|
+
return this.#_ariaRole;
|
|
27
|
+
}
|
|
28
|
+
set ariaRole(value) {
|
|
29
|
+
this.#_ariaRole = value ?? 'tablist';
|
|
30
|
+
}
|
|
31
|
+
#ngUnsubscribe;
|
|
32
|
+
#_ariaRole;
|
|
33
|
+
#resources;
|
|
34
|
+
#changeRef;
|
|
35
|
+
#tabIdSvc;
|
|
36
|
+
constructor(adapterService, tabService, resources, changeRef, tabIdSvc) {
|
|
37
|
+
this.adapterService = adapterService;
|
|
38
|
+
this.tabService = tabService;
|
|
39
|
+
/**
|
|
40
|
+
* Whether the vertical tabset loads tab content during initialization so that it
|
|
41
|
+
* displays content without moving around elements in the content container.
|
|
42
|
+
* @default false
|
|
43
|
+
*/
|
|
44
|
+
this.maintainTabContent = false;
|
|
45
|
+
/**
|
|
46
|
+
* Fires when the active tab changes. Emits the index of the active tab. The
|
|
47
|
+
* index is based on the tab's position when it loads.
|
|
48
|
+
*/
|
|
49
|
+
this.activeChange = new EventEmitter();
|
|
50
|
+
this.isMobile = false;
|
|
51
|
+
this.#ngUnsubscribe = new Subject();
|
|
52
|
+
this.#_ariaRole = 'tablist';
|
|
53
|
+
this.#resources = resources;
|
|
54
|
+
this.#changeRef = changeRef;
|
|
55
|
+
this.#tabIdSvc = tabIdSvc;
|
|
56
|
+
this.#tabIdSvc.ids.pipe(takeUntil(this.#ngUnsubscribe)).subscribe((ids) => {
|
|
57
|
+
this.ariaOwns = ids.join(' ') || undefined;
|
|
58
|
+
this.#changeRef.markForCheck();
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
ngOnInit() {
|
|
62
|
+
this.tabService.maintainTabContent = this.maintainTabContent;
|
|
63
|
+
this.tabService.indexChanged
|
|
64
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
|
65
|
+
.subscribe((index) => {
|
|
66
|
+
this.activeChange.emit(index);
|
|
67
|
+
if (this.contentWrapper) {
|
|
68
|
+
this.adapterService.scrollToContentTop(this.contentWrapper);
|
|
69
|
+
}
|
|
70
|
+
this.#changeRef.markForCheck();
|
|
71
|
+
});
|
|
72
|
+
this.tabService.switchingMobile
|
|
73
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
|
74
|
+
.subscribe((mobile) => {
|
|
75
|
+
this.isMobile = mobile;
|
|
76
|
+
this.#changeRef.markForCheck();
|
|
77
|
+
});
|
|
78
|
+
if (this.tabService.isMobile()) {
|
|
79
|
+
this.isMobile = true;
|
|
80
|
+
this.tabService.animationContentVisibleState = VISIBLE_STATE;
|
|
81
|
+
this.#changeRef.markForCheck();
|
|
82
|
+
}
|
|
83
|
+
if (!this.showTabsText) {
|
|
84
|
+
this.#resources
|
|
85
|
+
.getString('skyux_vertical_tabs_show_tabs_text')
|
|
86
|
+
.pipe(take(1))
|
|
87
|
+
.subscribe((resource) => {
|
|
88
|
+
/* sanity check */
|
|
89
|
+
/* istanbul ignore else */
|
|
90
|
+
if (!this.showTabsText) {
|
|
91
|
+
this.showTabsText = resource;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
ngAfterViewChecked() {
|
|
97
|
+
this.tabService.content = this.content;
|
|
98
|
+
this.tabService.updateContent();
|
|
99
|
+
}
|
|
100
|
+
ngOnDestroy() {
|
|
101
|
+
this.#ngUnsubscribe.next();
|
|
102
|
+
this.#ngUnsubscribe.complete();
|
|
103
|
+
}
|
|
104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyVerticalTabsetComponent, deps: [{ token: i1.SkyVerticalTabsetAdapterService }, { token: i2.SkyVerticalTabsetService }, { token: i3.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }, { token: i4.SkyTabIdService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
105
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyVerticalTabsetComponent, selector: "sky-vertical-tabset", inputs: { showTabsText: "showTabsText", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaRole: "ariaRole", maintainTabContent: "maintainTabContent" }, outputs: { activeChange: "activeChange" }, providers: [SkyTabIdService, SkyVerticalTabsetService], viewQueries: [{ propertyName: "tabGroups", first: true, predicate: ["groupContainerWrapper"], descendants: true }, { propertyName: "content", first: true, predicate: ["skySideContent"], descendants: true }, { propertyName: "contentWrapper", first: true, predicate: ["contentContainerWrapper"], descendants: true }], ngImport: i0, template: "<div class=\"sky-vertical-tabset\">\n <!--\n ARIA rules do not allow tabpanel elements to be children of a tablist element.\n However, the markup for each sky-vertical-tab component includes both the tab button\n and its panel, making the panel element a child of its tablist. Moreover, our\n sky-vertical-tab components can be grouped within collapsible containers, which also\n violates accessibility rules because only tab buttons can be children of a tablist.\n To address this, we create an empty tablist element with an aria-owns attribute,\n pointing to each tab element individually. That way, we don't have to worry about the\n structure for each sky-vertical-tab component in order to satisfy accessibility\n guidelines.\n -->\n <span\n aria-orientation=\"vertical\"\n class=\"sky-vertical-tabset-tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n ></span>\n <div\n *ngIf=\"maintainTabContent || tabService.tabsVisible()\"\n class=\"sky-vertical-tabset-group-container\"\n [@tabGroupEnter]=\"tabService.animationTabsVisibleState\"\n [ngClass]=\"{ 'sky-vertical-tabset-hidden': !tabService.tabsVisible() }\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainTabContent || tabService.contentVisible()\"\n class=\"sky-vertical-tabset-content\"\n [ngClass]=\"{\n 'sky-vertical-tabset-content-hidden': !tabService.contentVisible()\n }\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #contentContainerWrapper\n >\n <div #skySideContent></div>\n <button\n *ngIf=\"!tabService.tabsVisible()\"\n (click)=\"tabService.showTabs()\"\n class=\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\"\n >\n <sky-icon icon=\"chevron-left\"></sky-icon>\n {{ showTabsText }}\n </button>\n </div>\n</div>\n", styles: [":host .sky-vertical-tabset{display:block;height:auto}:host .sky-vertical-tabset-group-container{border-right:none}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:block;height:auto}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:none}@media (min-width: 768px){:host .sky-vertical-tabset{display:flex;height:100%}:host .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:flex;height:100%}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}.sky-vertical-tabset-hidden{display:none}.sky-vertical-tabset-content{margin:10px 0 0 10px;flex-basis:75%;overflow-y:auto}.sky-vertical-tabset-content-hidden{display:none}.sky-vertical-tabset-show-tabs-btn{margin-top:10px}.sky-vertical-tabset-group-container{flex-basis:25%;overflow-y:auto}:host-context(sky-modal-content)>.sky-vertical-tabset{margin:-15px}:host-context(.sky-theme-modern) .sky-vertical-tabset-content{margin:15px}@media (min-width: 768px){:host-context(.sky-theme-modern) :host .sky-vertical-tabset-content{margin:20px 30px}:host-context(.sky-theme-modern) :host .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}}:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:20px 30px}:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}.sky-theme-modern .sky-vertical-tabset-content{margin:15px}@media (min-width: 768px){.sky-theme-modern :host .sky-vertical-tabset-content{margin:20px 30px}.sky-theme-modern :host .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}}.sky-theme-modern :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,.sky-theme-modern :host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,.sky-theme-modern :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:20px 30px}.sky-theme-modern :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,.sky-theme-modern :host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,.sky-theme-modern :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], animations: [
|
|
106
|
+
trigger('tabGroupEnter', [
|
|
107
|
+
transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [
|
|
108
|
+
style({ transform: 'translate(-100%)' }),
|
|
109
|
+
animate('150ms ease-in'),
|
|
110
|
+
]),
|
|
111
|
+
]),
|
|
112
|
+
trigger('contentEnter', [
|
|
113
|
+
transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [
|
|
114
|
+
style({ transform: 'translate(100%)' }),
|
|
115
|
+
animate('150ms ease-in'),
|
|
116
|
+
]),
|
|
117
|
+
]),
|
|
118
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
119
|
+
}
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyVerticalTabsetComponent, decorators: [{
|
|
121
|
+
type: Component,
|
|
122
|
+
args: [{ selector: 'sky-vertical-tabset', providers: [SkyTabIdService, SkyVerticalTabsetService], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
123
|
+
trigger('tabGroupEnter', [
|
|
124
|
+
transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [
|
|
125
|
+
style({ transform: 'translate(-100%)' }),
|
|
126
|
+
animate('150ms ease-in'),
|
|
127
|
+
]),
|
|
128
|
+
]),
|
|
129
|
+
trigger('contentEnter', [
|
|
130
|
+
transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [
|
|
131
|
+
style({ transform: 'translate(100%)' }),
|
|
132
|
+
animate('150ms ease-in'),
|
|
133
|
+
]),
|
|
134
|
+
]),
|
|
135
|
+
], template: "<div class=\"sky-vertical-tabset\">\n <!--\n ARIA rules do not allow tabpanel elements to be children of a tablist element.\n However, the markup for each sky-vertical-tab component includes both the tab button\n and its panel, making the panel element a child of its tablist. Moreover, our\n sky-vertical-tab components can be grouped within collapsible containers, which also\n violates accessibility rules because only tab buttons can be children of a tablist.\n To address this, we create an empty tablist element with an aria-owns attribute,\n pointing to each tab element individually. That way, we don't have to worry about the\n structure for each sky-vertical-tab component in order to satisfy accessibility\n guidelines.\n -->\n <span\n aria-orientation=\"vertical\"\n class=\"sky-vertical-tabset-tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n ></span>\n <div\n *ngIf=\"maintainTabContent || tabService.tabsVisible()\"\n class=\"sky-vertical-tabset-group-container\"\n [@tabGroupEnter]=\"tabService.animationTabsVisibleState\"\n [ngClass]=\"{ 'sky-vertical-tabset-hidden': !tabService.tabsVisible() }\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainTabContent || tabService.contentVisible()\"\n class=\"sky-vertical-tabset-content\"\n [ngClass]=\"{\n 'sky-vertical-tabset-content-hidden': !tabService.contentVisible()\n }\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #contentContainerWrapper\n >\n <div #skySideContent></div>\n <button\n *ngIf=\"!tabService.tabsVisible()\"\n (click)=\"tabService.showTabs()\"\n class=\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\"\n >\n <sky-icon icon=\"chevron-left\"></sky-icon>\n {{ showTabsText }}\n </button>\n </div>\n</div>\n", styles: [":host .sky-vertical-tabset{display:block;height:auto}:host .sky-vertical-tabset-group-container{border-right:none}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:block;height:auto}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:none}@media (min-width: 768px){:host .sky-vertical-tabset{display:flex;height:100%}:host .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:flex;height:100%}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}.sky-vertical-tabset-hidden{display:none}.sky-vertical-tabset-content{margin:10px 0 0 10px;flex-basis:75%;overflow-y:auto}.sky-vertical-tabset-content-hidden{display:none}.sky-vertical-tabset-show-tabs-btn{margin-top:10px}.sky-vertical-tabset-group-container{flex-basis:25%;overflow-y:auto}:host-context(sky-modal-content)>.sky-vertical-tabset{margin:-15px}:host-context(.sky-theme-modern) .sky-vertical-tabset-content{margin:15px}@media (min-width: 768px){:host-context(.sky-theme-modern) :host .sky-vertical-tabset-content{margin:20px 30px}:host-context(.sky-theme-modern) :host .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}}:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:20px 30px}:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}.sky-theme-modern .sky-vertical-tabset-content{margin:15px}@media (min-width: 768px){.sky-theme-modern :host .sky-vertical-tabset-content{margin:20px 30px}.sky-theme-modern :host .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}}.sky-theme-modern :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,.sky-theme-modern :host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,.sky-theme-modern :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:20px 30px}.sky-theme-modern :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,.sky-theme-modern :host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,.sky-theme-modern :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}\n"] }]
|
|
136
|
+
}], ctorParameters: function () { return [{ type: i1.SkyVerticalTabsetAdapterService }, { type: i2.SkyVerticalTabsetService }, { type: i3.SkyLibResourcesService }, { type: i0.ChangeDetectorRef }, { type: i4.SkyTabIdService }]; }, propDecorators: { showTabsText: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}], ariaLabel: [{
|
|
139
|
+
type: Input
|
|
140
|
+
}], ariaLabelledBy: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], ariaRole: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}], maintainTabContent: [{
|
|
145
|
+
type: Input
|
|
146
|
+
}], activeChange: [{
|
|
147
|
+
type: Output
|
|
148
|
+
}], tabGroups: [{
|
|
149
|
+
type: ViewChild,
|
|
150
|
+
args: ['groupContainerWrapper']
|
|
151
|
+
}], content: [{
|
|
152
|
+
type: ViewChild,
|
|
153
|
+
args: ['skySideContent']
|
|
154
|
+
}], contentWrapper: [{
|
|
155
|
+
type: ViewChild,
|
|
156
|
+
args: ['contentContainerWrapper']
|
|
157
|
+
}] } });
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUczRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLHdCQUF3QixFQUN4QixhQUFhLEdBQ2QsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUF1Qm5DLE1BQU0sT0FBTywwQkFBMEI7SUE0QnJDOzs7Ozs7Ozs7T0FTRztJQUNILElBQ1csUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsUUFBUSxDQUFDLEtBQXlCO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBNkJELGNBQWMsQ0FBdUI7SUFD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QUUsQ0FBQztnQ0FDeEMsT0FBTyxDQUFDLGVBQWUsQ0FBQzs2QkFDekIsQ0FBQzt5QkFDSCxDQUFDO3dCQUNGLE9BQU8sQ0FBQyxjQUFjLEVBQUU7NEJBQ3RCLFVBQVUsQ0FBQyxHQUFHLFlBQVksT0FBTyxhQUFhLEVBQUUsRUFBRTtnQ0FDaEQsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUM7Z0NBQ3ZDLE9BQU8sQ0FBQyxlQUFlLENBQUM7NkJBQ3pCLENBQUM7eUJBQ0gsQ0FBQztxQkFDSDtnUUFTTSxZQUFZO3NCQURsQixLQUFLO2dCQVVDLFNBQVM7c0JBRGYsS0FBSztnQkFXQyxjQUFjO3NCQURwQixLQUFLO2dCQWNLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBZUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQVFDLFlBQVk7c0JBRGxCLE1BQU07Z0JBSUEsU0FBUztzQkFEZixTQUFTO3VCQUFDLHVCQUF1QjtnQkFJM0IsT0FBTztzQkFEYixTQUFTO3VCQUFDLGdCQUFnQjtnQkFJcEIsY0FBYztzQkFEcEIsU0FBUzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVRhYklkU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC90YWItaWQuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgSElEREVOX1NUQVRFLFxuICBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2UsXG4gIFZJU0lCTEVfU1RBVEUsXG59IGZyb20gJy4vdmVydGljYWwtdGFic2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdmVydGljYWwtdGFic2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcnRpY2FsLXRhYnNldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZlcnRpY2FsLXRhYnNldC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTa3lUYWJJZFNlcnZpY2UsIFNreVZlcnRpY2FsVGFic2V0U2VydmljZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcigndGFiR3JvdXBFbnRlcicsIFtcbiAgICAgIHRyYW5zaXRpb24oYCR7SElEREVOX1NUQVRFfSA9PiAke1ZJU0lCTEVfU1RBVEV9YCwgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgtMTAwJSknIH0pLFxuICAgICAgICBhbmltYXRlKCcxNTBtcyBlYXNlLWluJyksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCdjb250ZW50RW50ZXInLCBbXG4gICAgICB0cmFuc2l0aW9uKGAke0hJRERFTl9TVEFURX0gPT4gJHtWSVNJQkxFX1NUQVRFfWAsIFtcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoMTAwJSknIH0pLFxuICAgICAgICBhbmltYXRlKCcxNTBtcyBlYXNlLWluJyksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJzZXRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogVGhlIHRleHQgdG8gZGlzcGxheSBvbiB0aGUgc2hvdyB0YWJzIGJ1dHRvbiBvbiBtb2JpbGUgZGV2aWNlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93VGFic1RleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIEFSSUEgbGFiZWwgZm9yIHRoZSB0YWJzZXQuIFRoaXMgc2V0cyB0aGUgdGFic2V0J3MgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgdGFic2V0IGluY2x1ZGVzIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIGVsZW1lbnQgSUQgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHNcbiAgICogdGhlIHRhYnNldC4gVGhpcyBzZXRzIHRoZSB0YWJzZXQncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIHRhYnNldCBkb2VzIG5vdCBpbmNsdWRlIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbGxlZGJ5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSByb2xlIGZvciB0aGUgdmVydGljYWwgdGFic2V0XG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSlcbiAgICogYnkgaW5kaWNhdGluZyBob3cgdGhlIHRhYnNldCBmdW5jdGlvbnMgYW5kIHdoYXQgaXQgY29udHJvbHMuIEZvciBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICogYW4gQVJJQSByb2xlIGluZGljYXRlcyB3aGF0IGFuIGl0ZW0gcmVwcmVzZW50cyBvbiBhIHdlYiBwYWdlLCBzZWUgdGhlXG4gICAqIFtXQUktQVJJQSByb2xlcyBtb2RlbF0oaHR0cHM6Ly93d3cudzMub3JnL1dBSS9QRi9hcmlhLyNyb2xlcykuXG4gICAqIEBkZWZhdWx0IFwidGFibGlzdFwiXG4gICAqIEBkZXByZWNhdGVkIEFueSBvdGhlciB2YWx1ZSB0aGFuIGB0YWJsaXN0YCBjb3VsZCBsZWFkIHRvIGEgcG9vciB1c2VyIGV4cGVyaWVuY2UgZm9yIHVzZXJzIHdpdGggYXNzaXN0aXZlIHRlY2hub2xvZ3kuXG4gICAqIEluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24sIHRoaXMgcHJvcGVydHkgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNldCB0byBgdGFibGlzdGAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGFyaWFSb2xlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI19hcmlhUm9sZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgYXJpYVJvbGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19hcmlhUm9sZSA9IHZhbHVlID8/ICd0YWJsaXN0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB2ZXJ0aWNhbCB0YWJzZXQgbG9hZHMgdGFiIGNvbnRlbnQgZHVyaW5nIGluaXRpYWxpemF0aW9uIHNvIHRoYXQgaXRcbiAgICogZGlzcGxheXMgY29udGVudCB3aXRob3V0IG1vdmluZyBhcm91bmQgZWxlbWVudHMgaW4gdGhlIGNvbnRlbnQgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1haW50YWluVGFiQ29udGVudDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBhY3RpdmUgdGFiIGNoYW5nZXMuIEVtaXRzIHRoZSBpbmRleCBvZiB0aGUgYWN0aXZlIHRhYi4gVGhlXG4gICAqIGluZGV4IGlzIGJhc2VkIG9uIHRoZSB0YWIncyBwb3NpdGlvbiB3aGVuIGl0IGxvYWRzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhY3RpdmVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBAVmlld0NoaWxkKCdncm91cENvbnRhaW5lcldyYXBwZXInKVxuICBwdWJsaWMgdGFiR3JvdXBzOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ3NreVNpZGVDb250ZW50JylcbiAgcHVibGljIGNvbnRlbnQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudENvbnRhaW5lcldyYXBwZXInKVxuICBwdWJsaWMgY29udGVudFdyYXBwZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGFyaWFPd25zOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGlzTW9iaWxlID0gZmFsc2U7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI19hcmlhUm9sZSA9ICd0YWJsaXN0JztcblxuICAjcmVzb3VyY2VzOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlO1xuICAjY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI3RhYklkU3ZjOiBTa3lUYWJJZFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFkYXB0ZXJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldEFkYXB0ZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyB0YWJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2UsXG4gICAgcmVzb3VyY2VzOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxuICAgIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgdGFiSWRTdmM6IFNreVRhYklkU2VydmljZVxuICApIHtcbiAgICB0aGlzLiNyZXNvdXJjZXMgPSByZXNvdXJjZXM7XG4gICAgdGhpcy4jY2hhbmdlUmVmID0gY2hhbmdlUmVmO1xuICAgIHRoaXMuI3RhYklkU3ZjID0gdGFiSWRTdmM7XG5cbiAgICB0aGlzLiN0YWJJZFN2Yy5pZHMucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoaWRzKSA9PiB7XG4gICAgICB0aGlzLmFyaWFPd25zID0gaWRzLmpvaW4oJyAnKSB8fCB1bmRlZmluZWQ7XG4gICAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50YWJTZXJ2aWNlLm1haW50YWluVGFiQ29udGVudCA9IHRoaXMubWFpbnRhaW5UYWJDb250ZW50O1xuXG4gICAgdGhpcy50YWJTZXJ2aWNlLmluZGV4Q2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KGluZGV4KTtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudFdyYXBwZXIpIHtcbiAgICAgICAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLnNjcm9sbFRvQ29udGVudFRvcCh0aGlzLmNvbnRlbnRXcmFwcGVyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMudGFiU2VydmljZS5zd2l0Y2hpbmdNb2JpbGVcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKG1vYmlsZTogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmlzTW9iaWxlID0gbW9iaWxlO1xuICAgICAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLnRhYlNlcnZpY2UuaXNNb2JpbGUoKSkge1xuICAgICAgdGhpcy5pc01vYmlsZSA9IHRydWU7XG4gICAgICB0aGlzLnRhYlNlcnZpY2UuYW5pbWF0aW9uQ29udGVudFZpc2libGVTdGF0ZSA9IFZJU0lCTEVfU1RBVEU7XG4gICAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5zaG93VGFic1RleHQpIHtcbiAgICAgIHRoaXMuI3Jlc291cmNlc1xuICAgICAgICAuZ2V0U3RyaW5nKCdza3l1eF92ZXJ0aWNhbF90YWJzX3Nob3dfdGFic190ZXh0JylcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzb3VyY2UpID0+IHtcbiAgICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICghdGhpcy5zaG93VGFic1RleHQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1RhYnNUZXh0ID0gcmVzb3VyY2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIHRoaXMudGFiU2VydmljZS5jb250ZW50ID0gdGhpcy5jb250ZW50O1xuICAgIHRoaXMudGFiU2VydmljZS51cGRhdGVDb250ZW50KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldFwiPlxuICA8IS0tXG4gICAgQVJJQSBydWxlcyBkbyBub3QgYWxsb3cgdGFicGFuZWwgZWxlbWVudHMgdG8gYmUgY2hpbGRyZW4gb2YgYSB0YWJsaXN0IGVsZW1lbnQuXG4gICAgSG93ZXZlciwgdGhlIG1hcmt1cCBmb3IgZWFjaCBza3ktdmVydGljYWwtdGFiIGNvbXBvbmVudCBpbmNsdWRlcyBib3RoIHRoZSB0YWIgYnV0dG9uXG4gICAgYW5kIGl0cyBwYW5lbCwgbWFraW5nIHRoZSBwYW5lbCBlbGVtZW50IGEgY2hpbGQgb2YgaXRzIHRhYmxpc3QuIE1vcmVvdmVyLCBvdXJcbiAgICBza3ktdmVydGljYWwtdGFiIGNvbXBvbmVudHMgY2FuIGJlIGdyb3VwZWQgd2l0aGluIGNvbGxhcHNpYmxlIGNvbnRhaW5lcnMsIHdoaWNoIGFsc29cbiAgICB2aW9sYXRlcyBhY2Nlc3NpYmlsaXR5IHJ1bGVzIGJlY2F1c2Ugb25seSB0YWIgYnV0dG9ucyBjYW4gYmUgY2hpbGRyZW4gb2YgYSB0YWJsaXN0LlxuICAgIFRvIGFkZHJlc3MgdGhpcywgd2UgY3JlYXRlIGFuIGVtcHR5IHRhYmxpc3QgZWxlbWVudCB3aXRoIGFuIGFyaWEtb3ducyBhdHRyaWJ1dGUsXG4gICAgcG9pbnRpbmcgdG8gZWFjaCB0YWIgZWxlbWVudCBpbmRpdmlkdWFsbHkuIFRoYXQgd2F5LCB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZVxuICAgIHN0cnVjdHVyZSBmb3IgZWFjaCBza3ktdmVydGljYWwtdGFiIGNvbXBvbmVudCBpbiBvcmRlciB0byBzYXRpc2Z5IGFjY2Vzc2liaWxpdHlcbiAgICBndWlkZWxpbmVzLlxuICAtLT5cbiAgPHNwYW5cbiAgICBhcmlhLW9yaWVudGF0aW9uPVwidmVydGljYWxcIlxuICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC10YWJsaXN0XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICBbYXR0ci5hcmlhLW93bnNdPVwiYXJpYU93bnNcIlxuICAgIFthdHRyLnJvbGVdPVwiaXNNb2JpbGUgPyB1bmRlZmluZWQgOiBhcmlhUm9sZVwiXG4gID48L3NwYW4+XG4gIDxkaXZcbiAgICAqbmdJZj1cIm1haW50YWluVGFiQ29udGVudCB8fCB0YWJTZXJ2aWNlLnRhYnNWaXNpYmxlKClcIlxuICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC1ncm91cC1jb250YWluZXJcIlxuICAgIFtAdGFiR3JvdXBFbnRlcl09XCJ0YWJTZXJ2aWNlLmFuaW1hdGlvblRhYnNWaXNpYmxlU3RhdGVcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3NreS12ZXJ0aWNhbC10YWJzZXQtaGlkZGVuJzogIXRhYlNlcnZpY2UudGFic1Zpc2libGUoKSB9XCJcbiAgPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqbmdJZj1cIm1haW50YWluVGFiQ29udGVudCB8fCB0YWJTZXJ2aWNlLmNvbnRlbnRWaXNpYmxlKClcIlxuICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC1jb250ZW50XCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LXZlcnRpY2FsLXRhYnNldC1jb250ZW50LWhpZGRlbic6ICF0YWJTZXJ2aWNlLmNvbnRlbnRWaXNpYmxlKClcbiAgICB9XCJcbiAgICBbQGNvbnRlbnRFbnRlcl09XCJ0YWJTZXJ2aWNlLmFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGVcIlxuICAgICNjb250ZW50Q29udGFpbmVyV3JhcHBlclxuICA+XG4gICAgPGRpdiAjc2t5U2lkZUNvbnRlbnQ+PC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIhdGFiU2VydmljZS50YWJzVmlzaWJsZSgpXCJcbiAgICAgIChjbGljayk9XCJ0YWJTZXJ2aWNlLnNob3dUYWJzKClcIlxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tcHJpbWFyeSBza3ktdmVydGljYWwtdGFic2V0LXNob3ctdGFicy1idG5cIlxuICAgID5cbiAgICAgIDxza3ktaWNvbiBpY29uPVwiY2hldnJvbi1sZWZ0XCI+PC9za3ktaWNvbj5cbiAgICAgIHt7IHNob3dUYWJzVGV4dCB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -10,27 +10,27 @@ import { SkyVerticalTabsetGroupComponent } from './vertical-tabset-group.compone
|
|
|
10
10
|
import { SkyVerticalTabsetComponent } from './vertical-tabset.component';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
export class SkyVerticalTabsetModule {
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyVerticalTabsetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyVerticalTabsetModule, declarations: [SkyVerticalTabsetComponent,
|
|
15
|
+
SkyVerticalTabsetGroupComponent,
|
|
16
|
+
SkyVerticalTabComponent], imports: [CommonModule,
|
|
17
|
+
SkyIconModule,
|
|
18
|
+
SkyIdModule,
|
|
19
|
+
SkyExpansionIndicatorModule,
|
|
20
|
+
SkyStatusIndicatorModule,
|
|
21
|
+
SkyTabsResourcesModule,
|
|
22
|
+
SkyThemeModule], exports: [SkyVerticalTabsetComponent,
|
|
23
|
+
SkyVerticalTabsetGroupComponent,
|
|
24
|
+
SkyVerticalTabComponent] }); }
|
|
25
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyVerticalTabsetModule, providers: [SkyVerticalTabsetAdapterService], imports: [CommonModule,
|
|
26
|
+
SkyIconModule,
|
|
27
|
+
SkyIdModule,
|
|
28
|
+
SkyExpansionIndicatorModule,
|
|
29
|
+
SkyStatusIndicatorModule,
|
|
30
|
+
SkyTabsResourcesModule,
|
|
31
|
+
SkyThemeModule] }); }
|
|
13
32
|
}
|
|
14
|
-
|
|
15
|
-
SkyVerticalTabsetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyVerticalTabsetModule, declarations: [SkyVerticalTabsetComponent,
|
|
16
|
-
SkyVerticalTabsetGroupComponent,
|
|
17
|
-
SkyVerticalTabComponent], imports: [CommonModule,
|
|
18
|
-
SkyIconModule,
|
|
19
|
-
SkyIdModule,
|
|
20
|
-
SkyExpansionIndicatorModule,
|
|
21
|
-
SkyStatusIndicatorModule,
|
|
22
|
-
SkyTabsResourcesModule,
|
|
23
|
-
SkyThemeModule], exports: [SkyVerticalTabsetComponent,
|
|
24
|
-
SkyVerticalTabsetGroupComponent,
|
|
25
|
-
SkyVerticalTabComponent] });
|
|
26
|
-
SkyVerticalTabsetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyVerticalTabsetModule, providers: [SkyVerticalTabsetAdapterService], imports: [CommonModule,
|
|
27
|
-
SkyIconModule,
|
|
28
|
-
SkyIdModule,
|
|
29
|
-
SkyExpansionIndicatorModule,
|
|
30
|
-
SkyStatusIndicatorModule,
|
|
31
|
-
SkyTabsResourcesModule,
|
|
32
|
-
SkyThemeModule] });
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyVerticalTabsetModule, decorators: [{
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyVerticalTabsetModule, decorators: [{
|
|
34
34
|
type: NgModule,
|
|
35
35
|
args: [{
|
|
36
36
|
declarations: [
|
|
@@ -55,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
55
55
|
],
|
|
56
56
|
}]
|
|
57
57
|
}] });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsYUFBYSxFQUNiLHdCQUF3QixHQUN6QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBd0J6RSxNQUFNLE9BQU8sdUJBQXVCOzhHQUF2Qix1QkFBdUI7K0dBQXZCLHVCQUF1QixpQkFwQmhDLDBCQUEwQjtZQUMxQiwrQkFBK0I7WUFDL0IsdUJBQXVCLGFBR3ZCLFlBQVk7WUFDWixhQUFhO1lBQ2IsV0FBVztZQUNYLDJCQUEyQjtZQUMzQix3QkFBd0I7WUFDeEIsc0JBQXNCO1lBQ3RCLGNBQWMsYUFJZCwwQkFBMEI7WUFDMUIsK0JBQStCO1lBQy9CLHVCQUF1QjsrR0FHZCx1QkFBdUIsYUFQdkIsQ0FBQywrQkFBK0IsQ0FBQyxZQVIxQyxZQUFZO1lBQ1osYUFBYTtZQUNiLFdBQVc7WUFDWCwyQkFBMkI7WUFDM0Isd0JBQXdCO1lBQ3hCLHNCQUFzQjtZQUN0QixjQUFjOzsyRkFTTCx1QkFBdUI7a0JBdEJuQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWiwwQkFBMEI7d0JBQzFCLCtCQUErQjt3QkFDL0IsdUJBQXVCO3FCQUN4QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsMkJBQTJCO3dCQUMzQix3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsY0FBYztxQkFDZjtvQkFDRCxTQUFTLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDNUMsT0FBTyxFQUFFO3dCQUNQLDBCQUEwQjt3QkFDMUIsK0JBQStCO3dCQUMvQix1QkFBdUI7cUJBQ3hCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lJZE1vZHVsZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7XG4gIFNreUV4cGFuc2lvbkluZGljYXRvck1vZHVsZSxcbiAgU2t5SWNvbk1vZHVsZSxcbiAgU2t5U3RhdHVzSW5kaWNhdG9yTW9kdWxlLFxufSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycyc7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreVRhYnNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LXRhYnMtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50IH0gZnJvbSAnLi92ZXJ0aWNhbC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJzZXRHcm91cENvbXBvbmVudCB9IGZyb20gJy4vdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYnNldENvbXBvbmVudCB9IGZyb20gJy4vdmVydGljYWwtdGFic2V0LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNreVZlcnRpY2FsVGFic2V0Q29tcG9uZW50LFxuICAgIFNreVZlcnRpY2FsVGFic2V0R3JvdXBDb21wb25lbnQsXG4gICAgU2t5VmVydGljYWxUYWJDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lJZE1vZHVsZSxcbiAgICBTa3lFeHBhbnNpb25JbmRpY2F0b3JNb2R1bGUsXG4gICAgU2t5U3RhdHVzSW5kaWNhdG9yTW9kdWxlLFxuICAgIFNreVRhYnNSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5VGhlbWVNb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1NreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2VdLFxuICBleHBvcnRzOiBbXG4gICAgU2t5VmVydGljYWxUYWJzZXRDb21wb25lbnQsXG4gICAgU2t5VmVydGljYWxUYWJzZXRHcm91cENvbXBvbmVudCxcbiAgICBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJzZXRNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { SkyMediaBreakpoints } from '@skyux/core';
|
|
3
|
+
import { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@skyux/core";
|
|
6
|
+
export const VISIBLE_STATE = 'shown';
|
|
7
|
+
export const HIDDEN_STATE = 'void';
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export class SkyVerticalTabsetService {
|
|
12
|
+
#contentAdded;
|
|
13
|
+
#tabsVisible;
|
|
14
|
+
#isMobile;
|
|
15
|
+
#mediaQueryService;
|
|
16
|
+
constructor(mediaQueryService) {
|
|
17
|
+
this.activeIndex = undefined;
|
|
18
|
+
this.hidingTabs = new BehaviorSubject(false);
|
|
19
|
+
this.indexChanged = new ReplaySubject(1);
|
|
20
|
+
this.maintainTabContent = false;
|
|
21
|
+
this.showingTabs = new BehaviorSubject(false);
|
|
22
|
+
this.switchingMobile = new Subject();
|
|
23
|
+
this.tabs = [];
|
|
24
|
+
this.tabAdded = new Subject();
|
|
25
|
+
this.tabClicked = new ReplaySubject(1);
|
|
26
|
+
this.#contentAdded = false;
|
|
27
|
+
this.#tabsVisible = false;
|
|
28
|
+
this.#isMobile = false;
|
|
29
|
+
this.#mediaQueryService = mediaQueryService;
|
|
30
|
+
this.#mediaQueryService.subscribe((breakpoint) => {
|
|
31
|
+
const nowMobile = breakpoint === SkyMediaBreakpoints.xs;
|
|
32
|
+
if (nowMobile && !this.#isMobile) {
|
|
33
|
+
// switching to mobile
|
|
34
|
+
this.switchingMobile.next(true);
|
|
35
|
+
if (!this.#tabsVisible) {
|
|
36
|
+
this.hidingTabs.next(true);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else if (!nowMobile && this.#isMobile) {
|
|
40
|
+
// switching to widescreen
|
|
41
|
+
this.switchingMobile.next(false);
|
|
42
|
+
if (!this.#tabsVisible) {
|
|
43
|
+
this.showingTabs.next(true);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
this.#isMobile = nowMobile;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
addTab(tab) {
|
|
50
|
+
const index = this.tabs.length;
|
|
51
|
+
tab.index = index;
|
|
52
|
+
this.tabs.push(tab);
|
|
53
|
+
if (tab.active) {
|
|
54
|
+
this.activateTab(tab);
|
|
55
|
+
}
|
|
56
|
+
this.tabAdded.next(tab);
|
|
57
|
+
}
|
|
58
|
+
destroyTab(tab) {
|
|
59
|
+
const tabIndex = this.tabs.indexOf(tab);
|
|
60
|
+
if (tabIndex === -1) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (this.maintainTabContent &&
|
|
64
|
+
tab.contentRendered &&
|
|
65
|
+
/* istanbul ignore next */
|
|
66
|
+
this.content?.nativeElement.contains(tab.tabContent?.nativeElement)) {
|
|
67
|
+
this.content?.nativeElement.removeChild(tab.tabContent?.nativeElement);
|
|
68
|
+
}
|
|
69
|
+
this.tabs.splice(tabIndex, 1);
|
|
70
|
+
// update tab indices
|
|
71
|
+
this.tabs.forEach((tabItem, index) => (tabItem.index = index));
|
|
72
|
+
if (tab.active) {
|
|
73
|
+
if (!this.maintainTabContent) {
|
|
74
|
+
this.#destroyContent();
|
|
75
|
+
}
|
|
76
|
+
// Try selecting the next tab first, and if there's no next tab then
|
|
77
|
+
// try selecting the previous one.
|
|
78
|
+
const newActiveTab = this.tabs[tabIndex] || this.tabs[tabIndex - 1];
|
|
79
|
+
/*istanbul ignore else */
|
|
80
|
+
if (newActiveTab) {
|
|
81
|
+
newActiveTab.activateTab();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
activateTab(tab) {
|
|
86
|
+
// deactivate active tab
|
|
87
|
+
const activeTab = this.tabs.find((t) => t.index === this.activeIndex);
|
|
88
|
+
if (activeTab && activeTab.index !== tab.index) {
|
|
89
|
+
activeTab.active = false;
|
|
90
|
+
activeTab.tabDeactivated();
|
|
91
|
+
}
|
|
92
|
+
this.activeIndex = tab.index;
|
|
93
|
+
this.tabClicked.next(true);
|
|
94
|
+
this.#updateTabClicked();
|
|
95
|
+
}
|
|
96
|
+
activeTab() {
|
|
97
|
+
return this.tabs.find((t) => t.index === this.activeIndex);
|
|
98
|
+
}
|
|
99
|
+
isMobile() {
|
|
100
|
+
return this.#isMobile;
|
|
101
|
+
}
|
|
102
|
+
updateContent() {
|
|
103
|
+
if (!this.maintainTabContent) {
|
|
104
|
+
if (!this.#contentAdded && this.contentVisible()) {
|
|
105
|
+
// content needs to be moved
|
|
106
|
+
this.#moveContent();
|
|
107
|
+
}
|
|
108
|
+
else if (this.#contentAdded && !this.contentVisible()) {
|
|
109
|
+
// content hidden
|
|
110
|
+
this.#contentAdded = false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
this.tabs.forEach((tab) => {
|
|
115
|
+
if (!tab.contentRendered) {
|
|
116
|
+
this.content?.nativeElement.appendChild(tab.tabContent?.nativeElement);
|
|
117
|
+
tab.contentRendered = true;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
tabsVisible() {
|
|
123
|
+
return !this.isMobile() || this.#tabsVisible;
|
|
124
|
+
}
|
|
125
|
+
contentVisible() {
|
|
126
|
+
return !this.isMobile() || !this.#tabsVisible;
|
|
127
|
+
}
|
|
128
|
+
showTabs() {
|
|
129
|
+
this.#tabsVisible = true;
|
|
130
|
+
this.#contentAdded = false;
|
|
131
|
+
this.animationTabsVisibleState = VISIBLE_STATE;
|
|
132
|
+
this.animationContentVisibleState = HIDDEN_STATE;
|
|
133
|
+
this.showingTabs.next(true);
|
|
134
|
+
}
|
|
135
|
+
#destroyContent() {
|
|
136
|
+
if (this.content) {
|
|
137
|
+
this.content.nativeElement.innerHTML = '';
|
|
138
|
+
}
|
|
139
|
+
this.content = undefined;
|
|
140
|
+
}
|
|
141
|
+
#moveContent() {
|
|
142
|
+
/* istanbul ignore else */
|
|
143
|
+
if (this.content && !this.#contentAdded) {
|
|
144
|
+
const activeTab = this.activeTab();
|
|
145
|
+
const activeContent = activeTab ? activeTab.tabContent : undefined;
|
|
146
|
+
if (activeContent && activeTab && activeContent.nativeElement) {
|
|
147
|
+
this.content.nativeElement.appendChild(activeContent.nativeElement);
|
|
148
|
+
activeTab.contentRendered = true;
|
|
149
|
+
this.#contentAdded = true;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
#updateTabClicked() {
|
|
154
|
+
this.#contentAdded = false;
|
|
155
|
+
if (this.isMobile()) {
|
|
156
|
+
this.#tabsVisible = false;
|
|
157
|
+
this.animationContentVisibleState = VISIBLE_STATE;
|
|
158
|
+
this.animationTabsVisibleState = HIDDEN_STATE;
|
|
159
|
+
this.hidingTabs.next(true);
|
|
160
|
+
}
|
|
161
|
+
this.indexChanged.next(this.activeIndex);
|
|
162
|
+
}
|
|
163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyVerticalTabsetService, deps: [{ token: i1.SkyMediaQueryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
164
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyVerticalTabsetService }); }
|
|
165
|
+
}
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyVerticalTabsetService, decorators: [{
|
|
167
|
+
type: Injectable
|
|
168
|
+
}], ctorParameters: function () { return [{ type: i1.SkyMediaQueryService }]; } });
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUF3QixNQUFNLGFBQWEsQ0FBQztBQUV4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUkvRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUM7QUFFbkM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sd0JBQXdCO0lBeUJuQyxhQUFhLENBQVM7SUFFdEIsWUFBWSxDQUFTO0lBRXJCLFNBQVMsQ0FBUztJQUVsQixrQkFBa0IsQ0FBdUI7SUFFekMsWUFBWSxpQkFBdUM7UUFoQzVDLGdCQUFXLEdBQXVCLFNBQVMsQ0FBQztRQVE1QyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsaUJBQVksR0FBc0MsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkUsdUJBQWtCLEdBQXdCLEtBQUssQ0FBQztRQUVoRCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLG9CQUFlLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFbEQsU0FBSSxHQUFtQyxFQUFFLENBQUM7UUFFMUMsYUFBUSxHQUFxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTNELGVBQVUsR0FBMkIsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENB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QUNWLDBCQUEwQjtRQUMxQixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVuRSxJQUFJLGFBQWEsSUFBSSxTQUFTLElBQUksYUFBYSxDQUFDLGFBQWEsRUFBRTtnQkFDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDcEUsU0FBUyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQzNCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFFM0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsSUFBSSxDQUFDLDRCQUE0QixHQUFHLGFBQWEsQ0FBQztZQUNsRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsWUFBWSxDQUFDO1lBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OEdBbE1VLHdCQUF3QjtrSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TWVkaWFCcmVha3BvaW50cywgU2t5TWVkaWFRdWVyeVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCB9IGZyb20gJy4vdmVydGljYWwtdGFiLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBWSVNJQkxFX1NUQVRFID0gJ3Nob3duJztcbmV4cG9ydCBjb25zdCBISURERU5fU1RBVEUgPSAndm9pZCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2Uge1xuICBwdWJsaWMgYWN0aXZlSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgYW5pbWF0aW9uQ29udGVudFZpc2libGVTdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBhbmltYXRpb25UYWJzVmlzaWJsZVN0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGNvbnRlbnQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGhpZGluZ1RhYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwdWJsaWMgaW5kZXhDaGFuZ2VkOiBSZXBsYXlTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcblxuICBwdWJsaWMgbWFpbnRhaW5UYWJDb250ZW50OiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgcHVibGljIHNob3dpbmdUYWJzID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIHN3aXRjaGluZ01vYmlsZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHVibGljIHRhYnM6IEFycmF5PFNreVZlcnRpY2FsVGFiQ29tcG9uZW50PiA9IFtdO1xuXG4gIHB1YmxpYyB0YWJBZGRlZDogU3ViamVjdDxTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyB0YWJDbGlja2VkOiBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG5cbiAgI2NvbnRlbnRBZGRlZCA9IGZhbHNlO1xuXG4gICN0YWJzVmlzaWJsZSA9IGZhbHNlO1xuXG4gICNpc01vYmlsZSA9IGZhbHNlO1xuXG4gICNtZWRpYVF1ZXJ5U2VydmljZTogU2t5TWVkaWFRdWVyeVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IobWVkaWFRdWVyeVNlcnZpY2U6IFNreU1lZGlhUXVlcnlTZXJ2aWNlKSB7XG4gICAgdGhpcy4jbWVkaWFRdWVyeVNlcnZpY2UgPSBtZWRpYVF1ZXJ5U2VydmljZTtcbiAgICB0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZS5zdWJzY3JpYmUoKGJyZWFrcG9pbnQpID0+IHtcbiAgICAgIGNvbnN0IG5vd01vYmlsZSA9IGJyZWFrcG9pbnQgPT09IFNreU1lZGlhQnJlYWtwb2ludHMueHM7XG5cbiAgICAgIGlmIChub3dNb2JpbGUgJiYgIXRoaXMuI2lzTW9iaWxlKSB7XG4gICAgICAgIC8vIHN3aXRjaGluZyB0byBtb2JpbGVcbiAgICAgICAgdGhpcy5zd2l0Y2hpbmdNb2JpbGUubmV4dCh0cnVlKTtcblxuICAgICAgICBpZiAoIXRoaXMuI3RhYnNWaXNpYmxlKSB7XG4gICAgICAgICAgdGhpcy5oaWRpbmdUYWJzLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIW5vd01vYmlsZSAmJiB0aGlzLiNpc01vYmlsZSkge1xuICAgICAgICAvLyBzd2l0Y2hpbmcgdG8gd2lkZXNjcmVlblxuICAgICAgICB0aGlzLnN3aXRjaGluZ01vYmlsZS5uZXh0KGZhbHNlKTtcblxuICAgICAgICBpZiAoIXRoaXMuI3RhYnNWaXNpYmxlKSB7XG4gICAgICAgICAgdGhpcy5zaG93aW5nVGFicy5uZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI2lzTW9iaWxlID0gbm93TW9iaWxlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRhYih0YWI6IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYnMubGVuZ3RoO1xuICAgIHRhYi5pbmRleCA9IGluZGV4O1xuXG4gICAgdGhpcy50YWJzLnB1c2godGFiKTtcblxuICAgIGlmICh0YWIuYWN0aXZlKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlVGFiKHRhYik7XG4gICAgfVxuXG4gICAgdGhpcy50YWJBZGRlZC5uZXh0KHRhYik7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveVRhYih0YWI6IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLnRhYnMuaW5kZXhPZih0YWIpO1xuICAgIGlmICh0YWJJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm1haW50YWluVGFiQ29udGVudCAmJlxuICAgICAgdGFiLmNvbnRlbnRSZW5kZXJlZCAmJlxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHRoaXMuY29udGVudD8ubmF0aXZlRWxlbWVudC5jb250YWlucyh0YWIudGFiQ29udGVudD8ubmF0aXZlRWxlbWVudClcbiAgICApIHtcbiAgICAgIHRoaXMuY29udGVudD8ubmF0aXZlRWxlbWVudC5yZW1vdmVDaGlsZCh0YWIudGFiQ29udGVudD8ubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy50YWJzLnNwbGljZSh0YWJJbmRleCwgMSk7XG4gICAgLy8gdXBkYXRlIHRhYiBpbmRpY2VzXG4gICAgdGhpcy50YWJzLmZvckVhY2goKHRhYkl0ZW0sIGluZGV4KSA9PiAodGFiSXRlbS5pbmRleCA9IGluZGV4KSk7XG5cbiAgICBpZiAodGFiLmFjdGl2ZSkge1xuICAgICAgaWYgKCF0aGlzLm1haW50YWluVGFiQ29udGVudCkge1xuICAgICAgICB0aGlzLiNkZXN0cm95Q29udGVudCgpO1xuICAgICAgfVxuICAgICAgLy8gVHJ5IHNlbGVjdGluZyB0aGUgbmV4dCB0YWIgZmlyc3QsIGFuZCBpZiB0aGVyZSdzIG5vIG5leHQgdGFiIHRoZW5cbiAgICAgIC8vIHRyeSBzZWxlY3RpbmcgdGhlIHByZXZpb3VzIG9uZS5cbiAgICAgIGNvbnN0IG5ld0FjdGl2ZVRhYiA9IHRoaXMudGFic1t0YWJJbmRleF0gfHwgdGhpcy50YWJzW3RhYkluZGV4IC0gMV07XG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAobmV3QWN0aXZlVGFiKSB7XG4gICAgICAgIG5ld0FjdGl2ZVRhYi5hY3RpdmF0ZVRhYigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhY3RpdmF0ZVRhYih0YWI6IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgLy8gZGVhY3RpdmF0ZSBhY3RpdmUgdGFiXG4gICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy50YWJzLmZpbmQoKHQpID0+IHQuaW5kZXggPT09IHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgIGlmIChhY3RpdmVUYWIgJiYgYWN0aXZlVGFiLmluZGV4ICE9PSB0YWIuaW5kZXgpIHtcbiAgICAgIGFjdGl2ZVRhYi5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIGFjdGl2ZVRhYi50YWJEZWFjdGl2YXRlZCgpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlSW5kZXggPSB0YWIuaW5kZXg7XG4gICAgdGhpcy50YWJDbGlja2VkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy4jdXBkYXRlVGFiQ2xpY2tlZCgpO1xuICB9XG5cbiAgcHVibGljIGFjdGl2ZVRhYigpOiBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudGFicy5maW5kKCh0KSA9PiB0LmluZGV4ID09PSB0aGlzLmFjdGl2ZUluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jaXNNb2JpbGU7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ29udGVudCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubWFpbnRhaW5UYWJDb250ZW50KSB7XG4gICAgICBpZiAoIXRoaXMuI2NvbnRlbnRBZGRlZCAmJiB0aGlzLmNvbnRlbnRWaXNpYmxlKCkpIHtcbiAgICAgICAgLy8gY29udGVudCBuZWVkcyB0byBiZSBtb3ZlZFxuICAgICAgICB0aGlzLiNtb3ZlQ29udGVudCgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLiNjb250ZW50QWRkZWQgJiYgIXRoaXMuY29udGVudFZpc2libGUoKSkge1xuICAgICAgICAvLyBjb250ZW50IGhpZGRlblxuICAgICAgICB0aGlzLiNjb250ZW50QWRkZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICBpZiAoIXRhYi5jb250ZW50UmVuZGVyZWQpIHtcbiAgICAgICAgICB0aGlzLmNvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoXG4gICAgICAgICAgICB0YWIudGFiQ29udGVudD8ubmF0aXZlRWxlbWVudFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGFiLmNvbnRlbnRSZW5kZXJlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0YWJzVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNNb2JpbGUoKSB8fCB0aGlzLiN0YWJzVmlzaWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBjb250ZW50VmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNNb2JpbGUoKSB8fCAhdGhpcy4jdGFic1Zpc2libGU7XG4gIH1cblxuICBwdWJsaWMgc2hvd1RhYnMoKTogdm9pZCB7XG4gICAgdGhpcy4jdGFic1Zpc2libGUgPSB0cnVlO1xuICAgIHRoaXMuI2NvbnRlbnRBZGRlZCA9IGZhbHNlO1xuICAgIHRoaXMuYW5pbWF0aW9uVGFic1Zpc2libGVTdGF0ZSA9IFZJU0lCTEVfU1RBVEU7XG4gICAgdGhpcy5hbmltYXRpb25Db250ZW50VmlzaWJsZVN0YXRlID0gSElEREVOX1NUQVRFO1xuICAgIHRoaXMuc2hvd2luZ1RhYnMubmV4dCh0cnVlKTtcbiAgfVxuXG4gICNkZXN0cm95Q29udGVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICB9XG4gICAgdGhpcy5jb250ZW50ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgI21vdmVDb250ZW50KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuY29udGVudCAmJiAhdGhpcy4jY29udGVudEFkZGVkKSB7XG4gICAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLmFjdGl2ZVRhYigpO1xuICAgICAgY29uc3QgYWN0aXZlQ29udGVudCA9IGFjdGl2ZVRhYiA/IGFjdGl2ZVRhYi50YWJDb250ZW50IDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoYWN0aXZlQ29udGVudCAmJiBhY3RpdmVUYWIgJiYgYWN0aXZlQ29udGVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGFjdGl2ZUNvbnRlbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGFjdGl2ZVRhYi5jb250ZW50UmVuZGVyZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLiNjb250ZW50QWRkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVUYWJDbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuI2NvbnRlbnRBZGRlZCA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuaXNNb2JpbGUoKSkge1xuICAgICAgdGhpcy4jdGFic1Zpc2libGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuYW5pbWF0aW9uQ29udGVudFZpc2libGVTdGF0ZSA9IFZJU0lCTEVfU1RBVEU7XG4gICAgICB0aGlzLmFuaW1hdGlvblRhYnNWaXNpYmxlU3RhdGUgPSBISURERU5fU1RBVEU7XG4gICAgICB0aGlzLmhpZGluZ1RhYnMubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmluZGV4Q2hhbmdlZC5uZXh0KHRoaXMuYWN0aXZlSW5kZXgpO1xuICB9XG59XG4iXX0=
|