@seniorsistemas/angular-components 17.30.1 → 17.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/seniorsistemas-angular-components.umd.js +53 -31
- package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
- package/bundles/seniorsistemas-angular-components.umd.min.js +1 -1
- package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
- package/components/accordion/accordion.component.d.ts +13 -11
- package/esm2015/components/accordion/accordion.component.js +41 -31
- package/esm5/components/accordion/accordion.component.js +55 -33
- package/fesm2015/seniorsistemas-angular-components.js +40 -30
- package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
- package/fesm5/seniorsistemas-angular-components.js +54 -32
- package/fesm5/seniorsistemas-angular-components.js.map +1 -1
- package/package.json +1 -1
- package/seniorsistemas-angular-components.metadata.json +1 -1
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
import { AfterContentInit, OnChanges, QueryList, SimpleChanges, OnDestroy } from "@angular/core";
|
|
1
|
+
import { AfterContentInit, OnChanges, QueryList, SimpleChanges, OnDestroy, OnInit } from "@angular/core";
|
|
2
2
|
import { AccordionPanelComponent } from "./components/accordion-panel/accordion-panel.component";
|
|
3
|
-
export declare class AccordionComponent implements AfterContentInit, OnChanges, OnDestroy {
|
|
4
|
-
activeIndex: number;
|
|
3
|
+
export declare class AccordionComponent implements AfterContentInit, OnInit, OnChanges, OnDestroy {
|
|
4
|
+
activeIndex: number | number[];
|
|
5
5
|
multiple: boolean;
|
|
6
6
|
panelsComponents: QueryList<AccordionPanelComponent>;
|
|
7
|
-
private
|
|
8
|
-
private
|
|
9
|
-
private
|
|
7
|
+
private unsubscribe$;
|
|
8
|
+
private panels;
|
|
9
|
+
private openSubs;
|
|
10
|
+
ngOnInit(): void;
|
|
10
11
|
ngAfterContentInit(): void;
|
|
11
12
|
ngOnChanges(changes: SimpleChanges): void;
|
|
12
13
|
ngOnDestroy(): void;
|
|
13
|
-
private
|
|
14
|
-
private
|
|
15
|
-
private
|
|
16
|
-
private
|
|
17
|
-
private
|
|
14
|
+
private validateInputs;
|
|
15
|
+
private setupTabs;
|
|
16
|
+
private closeOtherTabs;
|
|
17
|
+
private setBehavior;
|
|
18
|
+
private enableSinglePanelBehavior;
|
|
19
|
+
private enableMultiplePanelBehavior;
|
|
18
20
|
}
|
|
@@ -6,66 +6,76 @@ import { takeUntil } from "rxjs/operators";
|
|
|
6
6
|
let AccordionComponent = class AccordionComponent {
|
|
7
7
|
constructor() {
|
|
8
8
|
this.multiple = false;
|
|
9
|
-
this.
|
|
10
|
-
this.
|
|
9
|
+
this.unsubscribe$ = new Subject();
|
|
10
|
+
this.panels = [];
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
this.validateInputs();
|
|
11
14
|
}
|
|
12
15
|
ngAfterContentInit() {
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
16
|
+
this.panels = this.panelsComponents.toArray();
|
|
17
|
+
this.openSubs = new Array(this.panels.length);
|
|
18
|
+
this.setBehavior(this.multiple);
|
|
19
|
+
this.setupTabs();
|
|
17
20
|
}
|
|
18
21
|
ngOnChanges(changes) {
|
|
19
22
|
if (changes.multiple) {
|
|
20
|
-
this.
|
|
23
|
+
this.setBehavior(changes.multiple.currentValue);
|
|
21
24
|
}
|
|
22
25
|
}
|
|
23
26
|
ngOnDestroy() {
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
27
|
+
this.unsubscribe$.next();
|
|
28
|
+
this.unsubscribe$.complete();
|
|
29
|
+
}
|
|
30
|
+
validateInputs() {
|
|
31
|
+
if (!this.multiple && Array.isArray(this.activeIndex)) {
|
|
32
|
+
throw new Error("The activeIndex should not be an array when multiple is set to false.");
|
|
33
|
+
}
|
|
26
34
|
}
|
|
27
|
-
|
|
35
|
+
setupTabs() {
|
|
28
36
|
var _a;
|
|
29
|
-
if ((_a = this.
|
|
37
|
+
if ((_a = this.panels) === null || _a === void 0 ? void 0 : _a.length) {
|
|
30
38
|
if (this.activeIndex !== undefined && this.activeIndex !== null) {
|
|
31
|
-
const
|
|
32
|
-
|
|
39
|
+
const activeTabs = Array.isArray(this.activeIndex)
|
|
40
|
+
? this.panels.filter((_, index) => this.activeIndex.includes(index))
|
|
41
|
+
: [this.panels[this.activeIndex]];
|
|
42
|
+
if (activeTabs.length === 0) {
|
|
33
43
|
throw new Error("activeIndex does not represent any panel.");
|
|
34
44
|
}
|
|
35
|
-
|
|
36
|
-
|
|
45
|
+
for (const activeTab of activeTabs) {
|
|
46
|
+
if (!activeTab.disabled) {
|
|
47
|
+
activeTab.isOpen = true;
|
|
48
|
+
}
|
|
37
49
|
}
|
|
38
50
|
}
|
|
39
51
|
}
|
|
40
52
|
}
|
|
41
|
-
|
|
42
|
-
this.
|
|
53
|
+
closeOtherTabs(exception) {
|
|
54
|
+
this.panels.forEach((panel, index) => {
|
|
43
55
|
if (index !== exception) {
|
|
44
56
|
panel.isOpen = false;
|
|
45
57
|
}
|
|
46
58
|
});
|
|
47
59
|
}
|
|
48
|
-
|
|
60
|
+
setBehavior(multiple) {
|
|
49
61
|
if (multiple) {
|
|
50
|
-
this.
|
|
62
|
+
this.enableMultiplePanelBehavior();
|
|
51
63
|
}
|
|
52
64
|
else {
|
|
53
|
-
this.
|
|
65
|
+
this.enableSinglePanelBehavior();
|
|
54
66
|
}
|
|
55
67
|
}
|
|
56
|
-
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
59
|
-
.
|
|
60
|
-
.subscribe(() => {
|
|
61
|
-
this._closeOtherTabs(index);
|
|
68
|
+
enableSinglePanelBehavior() {
|
|
69
|
+
this.panels.forEach((panel, index) => {
|
|
70
|
+
this.openSubs[index] = panel.panelOpened.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
71
|
+
this.closeOtherTabs(index);
|
|
62
72
|
});
|
|
63
73
|
});
|
|
64
74
|
}
|
|
65
|
-
|
|
66
|
-
this.
|
|
67
|
-
if (this.
|
|
68
|
-
this.
|
|
75
|
+
enableMultiplePanelBehavior() {
|
|
76
|
+
this.panels.forEach((_, index) => {
|
|
77
|
+
if (this.openSubs[index]) {
|
|
78
|
+
this.openSubs[index].unsubscribe();
|
|
69
79
|
}
|
|
70
80
|
});
|
|
71
81
|
}
|
|
@@ -87,4 +97,4 @@ AccordionComponent = __decorate([
|
|
|
87
97
|
})
|
|
88
98
|
], AccordionComponent);
|
|
89
99
|
export { AccordionComponent };
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2FjY29yZGlvbi9hY2NvcmRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQStCLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUU1SSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPM0MsSUFBYSxrQkFBa0IsR0FBL0IsTUFBYSxrQkFBa0I7SUFBL0I7UUFLVyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS2hCLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNuQyxXQUFNLEdBQThCLEVBQUUsQ0FBQztJQW1GbkQsQ0FBQztJQWhGRyxRQUFRO1FBQ0osSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxrQkFBa0I7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3JDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FB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dEM7SUFEQyxLQUFLLEVBQUU7b0RBQ2dCO0FBR3hCO0lBREMsZUFBZSxDQUFDLHVCQUF1QixDQUFDOzREQUNtQjtBQVJuRCxrQkFBa0I7SUFMOUIsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGFBQWE7UUFDdkIsNEVBQXlDOztLQUU1QyxDQUFDO0dBQ1csa0JBQWtCLENBOEY5QjtTQTlGWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBJbnB1dCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IEFjY29yZGlvblBhbmVsQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9hY2NvcmRpb24tcGFuZWwvYWNjb3JkaW9uLXBhbmVsLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJzLWFjY29yZGlvblwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2FjY29yZGlvbi5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWN0aXZlSW5kZXg6IG51bWJlciB8IG51bWJlcltdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oQWNjb3JkaW9uUGFuZWxDb21wb25lbnQpXG4gICAgcHVibGljIHBhbmVsc0NvbXBvbmVudHM6IFF1ZXJ5TGlzdDxBY2NvcmRpb25QYW5lbENvbXBvbmVudD47XG5cbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBwYW5lbHM6IEFjY29yZGlvblBhbmVsQ29tcG9uZW50W10gPSBbXTtcbiAgICBwcml2YXRlIG9wZW5TdWJzOiBTdWJzY3JpcHRpb25bXTtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXRzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYW5lbHMgPSB0aGlzLnBhbmVsc0NvbXBvbmVudHMudG9BcnJheSgpO1xuICAgICAgICB0aGlzLm9wZW5TdWJzID0gbmV3IEFycmF5KHRoaXMucGFuZWxzLmxlbmd0aCk7XG5cbiAgICAgICAgdGhpcy5zZXRCZWhhdmlvcih0aGlzLm11bHRpcGxlKTtcbiAgICAgICAgdGhpcy5zZXR1cFRhYnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRCZWhhdmlvcihjaGFuZ2VzLm11bHRpcGxlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlSW5wdXRzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmFjdGl2ZUluZGV4KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIGFjdGl2ZUluZGV4IHNob3VsZCBub3QgYmUgYW4gYXJyYXkgd2hlbiBtdWx0aXBsZSBpcyBzZXQgdG8gZmFsc2UuXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cFRhYnMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBhbmVscz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuYWN0aXZlSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVUYWJzID0gQXJyYXkuaXNBcnJheSh0aGlzLmFjdGl2ZUluZGV4KVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMucGFuZWxzLmZpbHRlcigoXywgaW5kZXgpID0+ICh0aGlzLmFjdGl2ZUluZGV4IGFzIG51bWJlcltdKS5pbmNsdWRlcyhpbmRleCkpXG4gICAgICAgICAgICAgICAgICAgIDogW3RoaXMucGFuZWxzW3RoaXMuYWN0aXZlSW5kZXhdXTtcblxuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVUYWJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJhY3RpdmVJbmRleCBkb2VzIG5vdCByZXByZXNlbnQgYW55IHBhbmVsLlwiKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFjdGl2ZVRhYiBvZiBhY3RpdmVUYWJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aXZlVGFiLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVUYWIuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VPdGhlclRhYnMoZXhjZXB0aW9uOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5wYW5lbHMuZm9yRWFjaCgocGFuZWwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IGV4Y2VwdGlvbikge1xuICAgICAgICAgICAgICAgIHBhbmVsLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEJlaGF2aW9yKG11bHRpcGxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVNdWx0aXBsZVBhbmVsQmVoYXZpb3IoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlU2luZ2xlUGFuZWxCZWhhdmlvcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmFibGVTaW5nbGVQYW5lbEJlaGF2aW9yKCkge1xuICAgICAgICB0aGlzLnBhbmVscy5mb3JFYWNoKChwYW5lbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3BlblN1YnNbaW5kZXhdID0gcGFuZWwucGFuZWxPcGVuZWQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VPdGhlclRhYnMoaW5kZXgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlTXVsdGlwbGVQYW5lbEJlaGF2aW9yKCkge1xuICAgICAgICB0aGlzLnBhbmVscy5mb3JFYWNoKChfLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMub3BlblN1YnNbaW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuU3Vic1tpbmRleF0udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
1
|
+
import { __decorate, __values } from "tslib";
|
|
2
2
|
import { Component, ContentChildren, Input } from "@angular/core";
|
|
3
3
|
import { AccordionPanelComponent } from "./components/accordion-panel/accordion-panel.component";
|
|
4
4
|
import { Subject } from "rxjs";
|
|
@@ -6,68 +6,90 @@ import { takeUntil } from "rxjs/operators";
|
|
|
6
6
|
var AccordionComponent = /** @class */ (function () {
|
|
7
7
|
function AccordionComponent() {
|
|
8
8
|
this.multiple = false;
|
|
9
|
-
this.
|
|
10
|
-
this.
|
|
9
|
+
this.unsubscribe$ = new Subject();
|
|
10
|
+
this.panels = [];
|
|
11
11
|
}
|
|
12
|
+
AccordionComponent.prototype.ngOnInit = function () {
|
|
13
|
+
this.validateInputs();
|
|
14
|
+
};
|
|
12
15
|
AccordionComponent.prototype.ngAfterContentInit = function () {
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
16
|
+
this.panels = this.panelsComponents.toArray();
|
|
17
|
+
this.openSubs = new Array(this.panels.length);
|
|
18
|
+
this.setBehavior(this.multiple);
|
|
19
|
+
this.setupTabs();
|
|
17
20
|
};
|
|
18
21
|
AccordionComponent.prototype.ngOnChanges = function (changes) {
|
|
19
22
|
if (changes.multiple) {
|
|
20
|
-
this.
|
|
23
|
+
this.setBehavior(changes.multiple.currentValue);
|
|
21
24
|
}
|
|
22
25
|
};
|
|
23
26
|
AccordionComponent.prototype.ngOnDestroy = function () {
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
27
|
+
this.unsubscribe$.next();
|
|
28
|
+
this.unsubscribe$.complete();
|
|
29
|
+
};
|
|
30
|
+
AccordionComponent.prototype.validateInputs = function () {
|
|
31
|
+
if (!this.multiple && Array.isArray(this.activeIndex)) {
|
|
32
|
+
throw new Error("The activeIndex should not be an array when multiple is set to false.");
|
|
33
|
+
}
|
|
26
34
|
};
|
|
27
|
-
AccordionComponent.prototype.
|
|
28
|
-
var _a;
|
|
29
|
-
|
|
35
|
+
AccordionComponent.prototype.setupTabs = function () {
|
|
36
|
+
var e_1, _a;
|
|
37
|
+
var _this = this;
|
|
38
|
+
var _b;
|
|
39
|
+
if ((_b = this.panels) === null || _b === void 0 ? void 0 : _b.length) {
|
|
30
40
|
if (this.activeIndex !== undefined && this.activeIndex !== null) {
|
|
31
|
-
var
|
|
32
|
-
|
|
41
|
+
var activeTabs = Array.isArray(this.activeIndex)
|
|
42
|
+
? this.panels.filter(function (_, index) { return _this.activeIndex.includes(index); })
|
|
43
|
+
: [this.panels[this.activeIndex]];
|
|
44
|
+
if (activeTabs.length === 0) {
|
|
33
45
|
throw new Error("activeIndex does not represent any panel.");
|
|
34
46
|
}
|
|
35
|
-
|
|
36
|
-
|
|
47
|
+
try {
|
|
48
|
+
for (var activeTabs_1 = __values(activeTabs), activeTabs_1_1 = activeTabs_1.next(); !activeTabs_1_1.done; activeTabs_1_1 = activeTabs_1.next()) {
|
|
49
|
+
var activeTab = activeTabs_1_1.value;
|
|
50
|
+
if (!activeTab.disabled) {
|
|
51
|
+
activeTab.isOpen = true;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
56
|
+
finally {
|
|
57
|
+
try {
|
|
58
|
+
if (activeTabs_1_1 && !activeTabs_1_1.done && (_a = activeTabs_1.return)) _a.call(activeTabs_1);
|
|
59
|
+
}
|
|
60
|
+
finally { if (e_1) throw e_1.error; }
|
|
37
61
|
}
|
|
38
62
|
}
|
|
39
63
|
}
|
|
40
64
|
};
|
|
41
|
-
AccordionComponent.prototype.
|
|
42
|
-
this.
|
|
65
|
+
AccordionComponent.prototype.closeOtherTabs = function (exception) {
|
|
66
|
+
this.panels.forEach(function (panel, index) {
|
|
43
67
|
if (index !== exception) {
|
|
44
68
|
panel.isOpen = false;
|
|
45
69
|
}
|
|
46
70
|
});
|
|
47
71
|
};
|
|
48
|
-
AccordionComponent.prototype.
|
|
72
|
+
AccordionComponent.prototype.setBehavior = function (multiple) {
|
|
49
73
|
if (multiple) {
|
|
50
|
-
this.
|
|
74
|
+
this.enableMultiplePanelBehavior();
|
|
51
75
|
}
|
|
52
76
|
else {
|
|
53
|
-
this.
|
|
77
|
+
this.enableSinglePanelBehavior();
|
|
54
78
|
}
|
|
55
79
|
};
|
|
56
|
-
AccordionComponent.prototype.
|
|
80
|
+
AccordionComponent.prototype.enableSinglePanelBehavior = function () {
|
|
57
81
|
var _this = this;
|
|
58
|
-
this.
|
|
59
|
-
_this.
|
|
60
|
-
.
|
|
61
|
-
.subscribe(function () {
|
|
62
|
-
_this._closeOtherTabs(index);
|
|
82
|
+
this.panels.forEach(function (panel, index) {
|
|
83
|
+
_this.openSubs[index] = panel.panelOpened.pipe(takeUntil(_this.unsubscribe$)).subscribe(function () {
|
|
84
|
+
_this.closeOtherTabs(index);
|
|
63
85
|
});
|
|
64
86
|
});
|
|
65
87
|
};
|
|
66
|
-
AccordionComponent.prototype.
|
|
88
|
+
AccordionComponent.prototype.enableMultiplePanelBehavior = function () {
|
|
67
89
|
var _this = this;
|
|
68
|
-
this.
|
|
69
|
-
if (_this.
|
|
70
|
-
_this.
|
|
90
|
+
this.panels.forEach(function (_, index) {
|
|
91
|
+
if (_this.openSubs[index]) {
|
|
92
|
+
_this.openSubs[index].unsubscribe();
|
|
71
93
|
}
|
|
72
94
|
});
|
|
73
95
|
};
|
|
@@ -90,4 +112,4 @@ var AccordionComponent = /** @class */ (function () {
|
|
|
90
112
|
return AccordionComponent;
|
|
91
113
|
}());
|
|
92
114
|
export { AccordionComponent };
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2FjY29yZGlvbi9hY2NvcmRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQStCLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUU1SSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPM0M7SUFBQTtRQUtXLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFLaEIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ25DLFdBQU0sR0FBOEIsRUFBRSxDQUFDO0lBbUZuRCxDQUFDO0lBaEZHLHFDQUFRLEdBQVI7UUFDSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLCtDQUFrQixHQUF6QjtRQUNJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVNLHdDQUFXLEdBQWxCLFVBQW1CLE9BQXNCO1FBQ3JDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMs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Q0FBQzthQUN0QztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQTNGRDtRQURDLEtBQUssRUFBRTsyREFDOEI7SUFHdEM7UUFEQyxLQUFLLEVBQUU7d0RBQ2dCO0lBR3hCO1FBREMsZUFBZSxDQUFDLHVCQUF1QixDQUFDO2dFQUNtQjtJQVJuRCxrQkFBa0I7UUFMOUIsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGFBQWE7WUFDdkIsNEVBQXlDOztTQUU1QyxDQUFDO09BQ1csa0JBQWtCLENBOEY5QjtJQUFELHlCQUFDO0NBQUEsQUE5RkQsSUE4RkM7U0E5Rlksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBBY2NvcmRpb25QYW5lbENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvYWNjb3JkaW9uLXBhbmVsL2FjY29yZGlvbi1wYW5lbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1hY2NvcmRpb25cIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2FjY29yZGlvbi5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9hY2NvcmRpb24uY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEFjY29yZGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFjdGl2ZUluZGV4OiBudW1iZXIgfCBudW1iZXJbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpcGxlID0gZmFsc2U7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEFjY29yZGlvblBhbmVsQ29tcG9uZW50KVxuICAgIHB1YmxpYyBwYW5lbHNDb21wb25lbnRzOiBRdWVyeUxpc3Q8QWNjb3JkaW9uUGFuZWxDb21wb25lbnQ+O1xuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgcGFuZWxzOiBBY2NvcmRpb25QYW5lbENvbXBvbmVudFtdID0gW107XG4gICAgcHJpdmF0ZSBvcGVuU3ViczogU3Vic2NyaXB0aW9uW107XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUlucHV0cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFuZWxzID0gdGhpcy5wYW5lbHNDb21wb25lbnRzLnRvQXJyYXkoKTtcbiAgICAgICAgdGhpcy5vcGVuU3VicyA9IG5ldyBBcnJheSh0aGlzLnBhbmVscy5sZW5ndGgpO1xuXG4gICAgICAgIHRoaXMuc2V0QmVoYXZpb3IodGhpcy5tdWx0aXBsZSk7XG4gICAgICAgIHRoaXMuc2V0dXBUYWJzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QmVoYXZpb3IoY2hhbmdlcy5tdWx0aXBsZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUlucHV0cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy5hY3RpdmVJbmRleCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBhY3RpdmVJbmRleCBzaG91bGQgbm90IGJlIGFuIGFycmF5IHdoZW4gbXVsdGlwbGUgaXMgc2V0IHRvIGZhbHNlLlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBUYWJzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYW5lbHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggIT09IHVuZGVmaW5lZCAmJiB0aGlzLmFjdGl2ZUluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlVGFicyA9IEFycmF5LmlzQXJyYXkodGhpcy5hY3RpdmVJbmRleClcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnBhbmVscy5maWx0ZXIoKF8sIGluZGV4KSA9PiAodGhpcy5hY3RpdmVJbmRleCBhcyBudW1iZXJbXSkuaW5jbHVkZXMoaW5kZXgpKVxuICAgICAgICAgICAgICAgICAgICA6IFt0aGlzLnBhbmVsc1t0aGlzLmFjdGl2ZUluZGV4XV07XG5cbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVGFicy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYWN0aXZlSW5kZXggZG9lcyBub3QgcmVwcmVzZW50IGFueSBwYW5lbC5cIik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhY3RpdmVUYWIgb2YgYWN0aXZlVGFicykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZVRhYi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3NlT3RoZXJUYWJzKGV4Y2VwdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFuZWxzLmZvckVhY2goKHBhbmVsLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSBleGNlcHRpb24pIHtcbiAgICAgICAgICAgICAgICBwYW5lbC5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRCZWhhdmlvcihtdWx0aXBsZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlTXVsdGlwbGVQYW5lbEJlaGF2aW9yKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZVNpbmdsZVBhbmVsQmVoYXZpb3IoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlU2luZ2xlUGFuZWxCZWhhdmlvcigpIHtcbiAgICAgICAgdGhpcy5wYW5lbHMuZm9yRWFjaCgocGFuZWwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9wZW5TdWJzW2luZGV4XSA9IHBhbmVsLnBhbmVsT3BlbmVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlT3RoZXJUYWJzKGluZGV4KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuYWJsZU11bHRpcGxlUGFuZWxCZWhhdmlvcigpIHtcbiAgICAgICAgdGhpcy5wYW5lbHMuZm9yRWFjaCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wZW5TdWJzW2luZGV4XSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlblN1YnNbaW5kZXhdLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -176,66 +176,76 @@ AccordionPanelComponent = __decorate([
|
|
|
176
176
|
let AccordionComponent = class AccordionComponent {
|
|
177
177
|
constructor() {
|
|
178
178
|
this.multiple = false;
|
|
179
|
-
this.
|
|
180
|
-
this.
|
|
179
|
+
this.unsubscribe$ = new Subject();
|
|
180
|
+
this.panels = [];
|
|
181
|
+
}
|
|
182
|
+
ngOnInit() {
|
|
183
|
+
this.validateInputs();
|
|
181
184
|
}
|
|
182
185
|
ngAfterContentInit() {
|
|
183
|
-
this.
|
|
184
|
-
this.
|
|
185
|
-
this.
|
|
186
|
-
this.
|
|
186
|
+
this.panels = this.panelsComponents.toArray();
|
|
187
|
+
this.openSubs = new Array(this.panels.length);
|
|
188
|
+
this.setBehavior(this.multiple);
|
|
189
|
+
this.setupTabs();
|
|
187
190
|
}
|
|
188
191
|
ngOnChanges(changes) {
|
|
189
192
|
if (changes.multiple) {
|
|
190
|
-
this.
|
|
193
|
+
this.setBehavior(changes.multiple.currentValue);
|
|
191
194
|
}
|
|
192
195
|
}
|
|
193
196
|
ngOnDestroy() {
|
|
194
|
-
this.
|
|
195
|
-
this.
|
|
197
|
+
this.unsubscribe$.next();
|
|
198
|
+
this.unsubscribe$.complete();
|
|
196
199
|
}
|
|
197
|
-
|
|
200
|
+
validateInputs() {
|
|
201
|
+
if (!this.multiple && Array.isArray(this.activeIndex)) {
|
|
202
|
+
throw new Error("The activeIndex should not be an array when multiple is set to false.");
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
setupTabs() {
|
|
198
206
|
var _a;
|
|
199
|
-
if ((_a = this.
|
|
207
|
+
if ((_a = this.panels) === null || _a === void 0 ? void 0 : _a.length) {
|
|
200
208
|
if (this.activeIndex !== undefined && this.activeIndex !== null) {
|
|
201
|
-
const
|
|
202
|
-
|
|
209
|
+
const activeTabs = Array.isArray(this.activeIndex)
|
|
210
|
+
? this.panels.filter((_, index) => this.activeIndex.includes(index))
|
|
211
|
+
: [this.panels[this.activeIndex]];
|
|
212
|
+
if (activeTabs.length === 0) {
|
|
203
213
|
throw new Error("activeIndex does not represent any panel.");
|
|
204
214
|
}
|
|
205
|
-
|
|
206
|
-
|
|
215
|
+
for (const activeTab of activeTabs) {
|
|
216
|
+
if (!activeTab.disabled) {
|
|
217
|
+
activeTab.isOpen = true;
|
|
218
|
+
}
|
|
207
219
|
}
|
|
208
220
|
}
|
|
209
221
|
}
|
|
210
222
|
}
|
|
211
|
-
|
|
212
|
-
this.
|
|
223
|
+
closeOtherTabs(exception) {
|
|
224
|
+
this.panels.forEach((panel, index) => {
|
|
213
225
|
if (index !== exception) {
|
|
214
226
|
panel.isOpen = false;
|
|
215
227
|
}
|
|
216
228
|
});
|
|
217
229
|
}
|
|
218
|
-
|
|
230
|
+
setBehavior(multiple) {
|
|
219
231
|
if (multiple) {
|
|
220
|
-
this.
|
|
232
|
+
this.enableMultiplePanelBehavior();
|
|
221
233
|
}
|
|
222
234
|
else {
|
|
223
|
-
this.
|
|
235
|
+
this.enableSinglePanelBehavior();
|
|
224
236
|
}
|
|
225
237
|
}
|
|
226
|
-
|
|
227
|
-
this.
|
|
228
|
-
this.
|
|
229
|
-
.
|
|
230
|
-
.subscribe(() => {
|
|
231
|
-
this._closeOtherTabs(index);
|
|
238
|
+
enableSinglePanelBehavior() {
|
|
239
|
+
this.panels.forEach((panel, index) => {
|
|
240
|
+
this.openSubs[index] = panel.panelOpened.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
241
|
+
this.closeOtherTabs(index);
|
|
232
242
|
});
|
|
233
243
|
});
|
|
234
244
|
}
|
|
235
|
-
|
|
236
|
-
this.
|
|
237
|
-
if (this.
|
|
238
|
-
this.
|
|
245
|
+
enableMultiplePanelBehavior() {
|
|
246
|
+
this.panels.forEach((_, index) => {
|
|
247
|
+
if (this.openSubs[index]) {
|
|
248
|
+
this.openSubs[index].unsubscribe();
|
|
239
249
|
}
|
|
240
250
|
});
|
|
241
251
|
}
|