@theseam/ui-common 0.4.22 → 0.4.23

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.
@@ -1,4 +1,6 @@
1
1
  import { Component, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
2
+ import { BehaviorSubject, combineLatest, shareReplay, tap } from 'rxjs';
3
+ import { isNullOrUndefined } from '@theseam/ui-common/utils';
2
4
  import { TabbedItemComponent } from './tabbed-item/tabbed-item.component';
3
5
  import { TabbedService } from './tabbed.service';
4
6
  import * as i0 from "@angular/core";
@@ -8,6 +10,12 @@ import * as i3 from "@angular/common";
8
10
  import * as i4 from "@angular/flex-layout/flex";
9
11
  import * as i5 from "./tabbed-content/tabbed-content.component";
10
12
  export class TabbedComponent {
13
+ set tabbedItems(val) {
14
+ this._tabbedItems.next(val);
15
+ }
16
+ get tabbedItems() {
17
+ return this._tabbedItems.value;
18
+ }
11
19
  set direction(val) {
12
20
  this._direction = val;
13
21
  }
@@ -31,20 +39,12 @@ export class TabbedComponent {
31
39
  }
32
40
  }
33
41
  else {
34
- return this._selectedTab;
42
+ return this._selectedTab.value;
35
43
  }
36
44
  }
37
- set selectedTab(tab) { this._selectedTab = tab; }
45
+ set selectedTab(tab) { this._selectedTab.next(tab); }
38
46
  set activeTabName(val) {
39
- clearTimeout(this._activeTabNameTimeout);
40
- this._activeTabNameTimeout = setTimeout(() => {
41
- if (!val) {
42
- this.selectedTab = undefined;
43
- }
44
- else {
45
- this.selectTab(val);
46
- }
47
- });
47
+ this._activeTabName.next(val);
48
48
  }
49
49
  constructor(tabbedService, router, route) {
50
50
  this.tabbedService = tabbedService;
@@ -52,8 +52,14 @@ export class TabbedComponent {
52
52
  this.route = route;
53
53
  this._direction = 'vertical';
54
54
  this._hideTabs = false;
55
+ this._tabbedItems = new BehaviorSubject(undefined);
56
+ this.tabbedItems$ = this._tabbedItems.asObservable();
55
57
  this.tabChanged = new EventEmitter();
56
58
  this.onlyRouteContent = false;
59
+ this._selectedTab = new BehaviorSubject(undefined);
60
+ this.selectedTab$ = this._selectedTab.asObservable().pipe(shareReplay({ bufferSize: 1, refCount: true }));
61
+ this._activeTabName = new BehaviorSubject(undefined);
62
+ this.activeTabName$ = this._activeTabName.asObservable();
57
63
  }
58
64
  ngOnInit() {
59
65
  this.tabbedService.registerTab(this, 'main');
@@ -62,9 +68,7 @@ export class TabbedComponent {
62
68
  this.tabbedService.unregisterTab(this, 'main');
63
69
  }
64
70
  ngAfterContentInit() {
65
- if (this.tabbedItems && this.tabbedItems.length > 0) {
66
- this.selectedTab = this.tabbedItems.first;
67
- }
71
+ combineLatest([this.tabbedItems$, this.activeTabName$]).pipe(tap(([_, activeTabName]) => this.selectTab(activeTabName))).subscribe();
68
72
  }
69
73
  /**
70
74
  *
@@ -81,20 +85,23 @@ export class TabbedComponent {
81
85
  * to select a tab
82
86
  */
83
87
  selectTab(name) {
88
+ if (isNullOrUndefined(name) || name === this.selectedTab?.name) {
89
+ return;
90
+ }
84
91
  const tab = this.tabbedItems?.find(t => t.name === name);
85
92
  if (tab) {
86
93
  this.selectedTab = tab;
87
94
  }
88
95
  else {
89
- throw new Error(`Tab with name '${name}' not found`);
96
+ console.warn(`Tab with name '${name}' not found`);
90
97
  }
91
98
  }
92
99
  }
93
100
  TabbedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, deps: [{ token: i1.TabbedService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
94
- TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i5.TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }] });
101
+ TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i5.TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
95
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, decorators: [{
96
103
  type: Component,
97
- args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
104
+ args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
98
105
  }], ctorParameters: function () { return [{ type: i1.TabbedService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; }, propDecorators: { tabbedItems: [{
99
106
  type: ContentChildren,
100
107
  args: [TabbedItemComponent]
@@ -109,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
109
116
  }], activeTabName: [{
110
117
  type: Input
111
118
  }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDYSxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFDN0YsTUFBTSxlQUFlLENBQUE7QUFHdEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBaUIsTUFBTSxrQkFBa0IsQ0FBQTs7Ozs7OztBQVEvRCxNQUFNLE9BQU8sZUFBZTtJQVMxQixJQUNJLFNBQVMsQ0FBQyxHQUFrQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQTtJQUN2QixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxHQUFZO1FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQTtRQUN0QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7SUFDdkIsQ0FBQztJQUtELElBQUksV0FBVztRQUNiLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFD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RSxhQUFhLGFBR1osQ0FBRSxhQUFhLENBQUU7c0pBT1UsV0FBVztzQkFBaEQsZUFBZTt1QkFBQyxtQkFBbUI7Z0JBRTFCLFVBQVU7c0JBQW5CLE1BQU07Z0JBR0gsU0FBUztzQkFEWixLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFXQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBbUJGLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuXG5pbXBvcnQgeyBUYWJiZWRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90YWJiZWQtaXRlbS90YWJiZWQtaXRlbS5jb21wb25lbnQnXG5pbXBvcnQgeyBUYWJiZWRTZXJ2aWNlLCBUYWJzRGlyZWN0aW9uIH0gZnJvbSAnLi90YWJiZWQuc2VydmljZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS10YWJiZWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiYmVkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFiYmVkLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogWyBUYWJiZWRTZXJ2aWNlIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFiYmVkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX2RpcmVjdGlvbjogVGFic0RpcmVjdGlvbiA9ICd2ZXJ0aWNhbCdcbiAgcHJpdmF0ZSBfaGlkZVRhYnMgPSBmYWxzZVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiYmVkSXRlbUNvbXBvbmVudCkgdGFiYmVkSXRlbXM/OiBRdWVyeUxpc3Q8VGFiYmVkSXRlbUNvbXBvbmVudD5cblxuICBAT3V0cHV0KCkgdGFiQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VGFiYmVkSXRlbUNvbXBvbmVudD4oKVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkaXJlY3Rpb24odmFsOiBUYWJzRGlyZWN0aW9uKSB7XG4gICAgdGhpcy5fZGlyZWN0aW9uID0gdmFsXG4gIH1cbiAgZ2V0IGRpcmVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlyZWN0aW9uXG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgaGlkZVRhYnModmFsOiBib29sZWFuKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9oaWRlVGFicyA9IHZhbFxuICAgIH0pXG4gIH1cbiAgZ2V0IGhpZGVUYWJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oaWRlVGFic1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIG9ubHlSb3V0ZUNvbnRlbnQgPSBmYWxzZVxuXG4gIGdldCBzZWxlY3RlZFRhYigpOiBUYWJiZWRJdGVtQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5vbmx5Um91dGVDb250ZW50KSB7XG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMucm91dGUuc25hcHNob3QuY2hpbGRyZW5bMF0ucm91dGVDb25maWdcbiAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29uZmlnICYmIGNvbmZpZy5wYXRoXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmJlZEl0ZW1zPy5maW5kKHQgPT4gdC5uYW1lID09PSBjaGlsZFBhdGgpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFRhYlxuICAgIH1cbiAgfVxuICBzZXQgc2VsZWN0ZWRUYWIodGFiOiBUYWJiZWRJdGVtQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7IHRoaXMuX3NlbGVjdGVkVGFiID0gdGFiIH1cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRUYWI6IFRhYmJlZEl0ZW1Db21wb25lbnQgfCB1bmRlZmluZWRcblxuICBwcml2YXRlIF9hY3RpdmVUYWJOYW1lVGltZW91dDogYW55XG4gIEBJbnB1dCgpXG4gIHNldCBhY3RpdmVUYWJOYW1lKHZhbDogc3RyaW5nKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2FjdGl2ZVRhYk5hbWVUaW1lb3V0KVxuICAgIHRoaXMuX2FjdGl2ZVRhYk5hbWVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXZhbCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiID0gdW5kZWZpbmVkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdFRhYih2YWwpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWJiZWRTZXJ2aWNlOiBUYWJiZWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRhYmJlZFNlcnZpY2UucmVnaXN0ZXJUYWIodGhpcywgJ21haW4nKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy50YWJiZWRTZXJ2aWNlLnVucmVnaXN0ZXJUYWIodGhpcywgJ21haW4nKVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICh0aGlzLnRhYmJlZEl0ZW1zICYmIHRoaXMudGFiYmVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IHRoaXMudGFiYmVkSXRlbXMuZmlyc3RcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyBvbkNsaWNrVGFiKGV2ZW50OiBhbnksIHRhYjogVGFiYmVkSXRlbUNvbXBvbmVudCkge1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0YWJcbiAgICBpZiAodGhpcy5vbmx5Um91dGVDb250ZW50KSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbIHRhYi5uYW1lIF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KVxuICAgIH1cbiAgICB0aGlzLnRhYkNoYW5nZWQuZW1pdCh0YWIpXG4gIH1cblxuICAvKipcbiAgICogVE9ETzogTWFrZSBtb3JlIGdlbmVyaWMsIHNvIHRoYXQgdGhlIG5hbWUgaXNuJ3QgdGhlIG9ubHkgd2F5XG4gICAqICB0byBzZWxlY3QgYSB0YWJcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RUYWIobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdGFiID0gdGhpcy50YWJiZWRJdGVtcz8uZmluZCh0ID0+IHQubmFtZSA9PT0gbmFtZSlcbiAgICBpZiAodGFiKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiID0gdGFiXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGFiIHdpdGggbmFtZSAnJHtuYW1lfScgbm90IGZvdW5kYClcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBbZnhMYXlvdXRdPVwiKGRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSA/ICdjb2x1bW4nIDogJ3JvdydcIiBmeEZsZXhGaWxsPlxuXG4gIDwhLS0gVGFicyAtLT5cbiAgPGRpdiAqbmdJZj1cIiFoaWRlVGFic1wiXG4gICAgW2Z4TGF5b3V0XT1cIihkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykgPyAncm93JyA6ICdjb2x1bW4nXCJcbiAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWJiZWRJdGVtIG9mIHRhYmJlZEl0ZW1zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFiYmVkLXRhYiBwdC0yIHBiLTIgcGwtNCBwci00IGJnLWxpZ2h0IHRleHQtbm93cmFwXCJcbiAgICAgICAgW2NsYXNzLnRhYi1kaXItaG9yaXpvbnRhbF09XCJkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICAgIFtjbGFzcy50YWItZGlyLXZlcnRpY2FsXT1cImRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJ1wiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrVGFiKCRldmVudCwgdGFiYmVkSXRlbSlcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInRhYmJlZEl0ZW0gPT09IHNlbGVjdGVkVGFiXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRhYmJlZEl0ZW0udGFiYmVkVGFiVHBsOyBlbHNlIHRhYkxhYmVsVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiYmVkSXRlbS50YWJiZWRUYWJUcGxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYkxhYmVsVHBsPnt7IHRhYmJlZEl0ZW0/LmxhYmVsIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImFjdGl2ZS1pbmRpY2F0b3JcIlxuICAgICAgW2NsYXNzLmFjdGl2ZS1pbmRpY2F0b3ItaG9yaXpvbnRhbF09XCJkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICBbY2xhc3MuYWN0aXZlLWluZGljYXRvci12ZXJ0aWNhbF09XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCdcIj5cbiAgICA8L2Rpdj4gLS0+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVGFicyBDb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwidGFiYmVkLXRhYnMtY29udGVudCBiZy1saWdodFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvbmx5Um91dGVDb250ZW50OyBlbHNlIG5vdE9ubHlSb3V0ZUNvbnRlbnRcIj5cbiAgICAgIDwhLS0gPGFwcC1zbGlkZS1vdmVyLXJvdXRlci1vdXRsZXQ+PC9hcHAtc2xpZGUtb3Zlci1yb3V0ZXItb3V0bGV0PiAtLT5cbiAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vdE9ubHlSb3V0ZUNvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGVkVGFiOyBlbHNlIGZpbmRDb250ZW50VHBsXCI+XG4gICAgICAgIDxzZWFtLXRhYmJlZC1jb250ZW50IGZ4RmxleEZpbGwgW3RhYmJlZEl0ZW1dPVwidGFiYmVkSXRlbXM/LmZpcnN0XCI+PC9zZWFtLXRhYmJlZC1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2ZpbmRDb250ZW50VHBsPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWJiZWRJdGVtIG9mIHRhYmJlZEl0ZW1zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVGFiID09PSB0YWJiZWRJdGVtXCI+XG4gICAgICAgICAgICA8c2VhbS10YWJiZWQtY29udGVudCBmeEZsZXhGaWxsIFt0YWJiZWRJdGVtXT1cInRhYmJlZEl0ZW1cIj48L3NlYW0tdGFiYmVkLWNvbnRlbnQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDYSxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFDN0YsTUFBTSxlQUFlLENBQUE7QUFFdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUV2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLGtCQUFrQixDQUFBOzs7Ozs7O0FBUS9ELE1BQU0sT0FBTyxlQUFlO0lBSzFCLElBQ0ksV0FBVyxDQUFDLEdBQStDO1FBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFDRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFBO0lBQ2hDLENBQUM7SUFNRCxJQUNJLFNBQVMsQ0FBQyxHQUFrQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQTtJQUN2QixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxHQUFZO1FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQTtR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dENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuaW1wb3J0IHsgVGFiYmVkSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdGFiYmVkLWl0ZW0vdGFiYmVkLWl0ZW0uY29tcG9uZW50J1xuaW1wb3J0IHsgVGFiYmVkU2VydmljZSwgVGFic0RpcmVjdGlvbiB9IGZyb20gJy4vdGFiYmVkLnNlcnZpY2UnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tdGFiYmVkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmJlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmJlZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFsgVGFiYmVkU2VydmljZSBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmJlZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9kaXJlY3Rpb246IFRhYnNEaXJlY3Rpb24gPSAndmVydGljYWwnXG4gIHByaXZhdGUgX2hpZGVUYWJzID0gZmFsc2VcblxuICBAQ29udGVudENoaWxkcmVuKFRhYmJlZEl0ZW1Db21wb25lbnQpXG4gIHNldCB0YWJiZWRJdGVtcyh2YWw6IFF1ZXJ5TGlzdDxUYWJiZWRJdGVtQ29tcG9uZW50PiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3RhYmJlZEl0ZW1zLm5leHQodmFsKVxuICB9XG4gIGdldCB0YWJiZWRJdGVtcygpOiBRdWVyeUxpc3Q8VGFiYmVkSXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90YWJiZWRJdGVtcy52YWx1ZVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhYmJlZEl0ZW1zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8VGFiYmVkSXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgcHVibGljIHJlYWRvbmx5IHRhYmJlZEl0ZW1zJCA9IHRoaXMuX3RhYmJlZEl0ZW1zLmFzT2JzZXJ2YWJsZSgpXG5cbiAgQE91dHB1dCgpIHRhYkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmJlZEl0ZW1Db21wb25lbnQ+KClcblxuICBASW5wdXQoKVxuICBzZXQgZGlyZWN0aW9uKHZhbDogVGFic0RpcmVjdGlvbikge1xuICAgIHRoaXMuX2RpcmVjdGlvbiA9IHZhbFxuICB9XG4gIGdldCBkaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RpcmVjdGlvblxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGhpZGVUYWJzKHZhbDogYm9vbGVhbikge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5faGlkZVRhYnMgPSB2YWxcbiAgICB9KVxuICB9XG4gIGdldCBoaWRlVGFicygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZVRhYnNcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvbmx5Um91dGVDb250ZW50ID0gZmFsc2VcblxuICBnZXQgc2VsZWN0ZWRUYWIoKTogVGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMub25seVJvdXRlQ29udGVudCkge1xuICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmNoaWxkcmVuWzBdLnJvdXRlQ29uZmlnXG4gICAgICAgIGNvbnN0IGNoaWxkUGF0aCA9IGNvbmZpZyAmJiBjb25maWcucGF0aFxuICAgICAgICByZXR1cm4gdGhpcy50YWJiZWRJdGVtcz8uZmluZCh0ID0+IHQubmFtZSA9PT0gY2hpbGRQYXRoKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRUYWIudmFsdWVcbiAgICB9XG4gIH1cbiAgc2V0IHNlbGVjdGVkVGFiKHRhYjogVGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZCkgeyB0aGlzLl9zZWxlY3RlZFRhYi5uZXh0KHRhYikgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3RlZFRhYiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRUYWIkID0gdGhpcy5fc2VsZWN0ZWRUYWIuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gIClcblxuICBASW5wdXQoKVxuICBzZXQgYWN0aXZlVGFiTmFtZSh2YWw6IHN0cmluZykge1xuICAgIHRoaXMuX2FjdGl2ZVRhYk5hbWUubmV4dCh2YWwpXG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlVGFiTmFtZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlVGFiTmFtZSQgPSB0aGlzLl9hY3RpdmVUYWJOYW1lLmFzT2JzZXJ2YWJsZSgpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhYmJlZFNlcnZpY2U6IFRhYmJlZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudGFiYmVkU2VydmljZS5yZWdpc3RlclRhYih0aGlzLCAnbWFpbicpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRhYmJlZFNlcnZpY2UudW5yZWdpc3RlclRhYih0aGlzLCAnbWFpbicpXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgY29tYmluZUxhdGVzdChbIHRoaXMudGFiYmVkSXRlbXMkLCB0aGlzLmFjdGl2ZVRhYk5hbWUkIF0pLnBpcGUoXG4gICAgICB0YXAoKFsgXywgYWN0aXZlVGFiTmFtZSBdKSA9PiB0aGlzLnNlbGVjdFRhYihhY3RpdmVUYWJOYW1lKSlcbiAgICApLnN1YnNjcmliZSgpXG4gIH1cblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyBvbkNsaWNrVGFiKGV2ZW50OiBhbnksIHRhYjogVGFiYmVkSXRlbUNvbXBvbmVudCkge1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0YWJcbiAgICBpZiAodGhpcy5vbmx5Um91dGVDb250ZW50KSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbIHRhYi5uYW1lIF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KVxuICAgIH1cbiAgICB0aGlzLnRhYkNoYW5nZWQuZW1pdCh0YWIpXG4gIH1cblxuICAvKipcbiAgICogVE9ETzogTWFrZSBtb3JlIGdlbmVyaWMsIHNvIHRoYXQgdGhlIG5hbWUgaXNuJ3QgdGhlIG9ubHkgd2F5XG4gICAqICB0byBzZWxlY3QgYSB0YWJcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RUYWIobmFtZT86IHN0cmluZykge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChuYW1lKSB8fCBuYW1lID09PSB0aGlzLnNlbGVjdGVkVGFiPy5uYW1lKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYmJlZEl0ZW1zPy5maW5kKHQgPT4gdC5uYW1lID09PSBuYW1lKVxuICAgIGlmICh0YWIpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0YWJcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oYFRhYiB3aXRoIG5hbWUgJyR7bmFtZX0nIG5vdCBmb3VuZGApXG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgW2Z4TGF5b3V0XT1cIihkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykgPyAnY29sdW1uJyA6ICdyb3cnXCIgZnhGbGV4RmlsbD5cblxuICA8IS0tIFRhYnMgLS0+XG4gIDxkaXYgKm5nSWY9XCIhaGlkZVRhYnNcIlxuICAgIFtmeExheW91dF09XCIoZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpID8gJ3JvdycgOiAnY29sdW1uJ1wiXG4gICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiYmVkSXRlbSBvZiB0YWJiZWRJdGVtcyQgfCBhc3luY1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYmJlZC10YWIgcHQtMiBwYi0yIHBsLTQgcHItNCBiZy1saWdodCB0ZXh0LW5vd3JhcFwiXG4gICAgICAgIFtjbGFzcy50YWItZGlyLWhvcml6b250YWxdPVwiZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCdcIlxuICAgICAgICBbY2xhc3MudGFiLWRpci12ZXJ0aWNhbF09XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCdcIlxuICAgICAgICAoY2xpY2spPVwib25DbGlja1RhYigkZXZlbnQsIHRhYmJlZEl0ZW0pXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ0YWJiZWRJdGVtID09PSAoc2VsZWN0ZWRUYWIkIHwgYXN5bmMpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRhYmJlZEl0ZW0udGFiYmVkVGFiVHBsOyBlbHNlIHRhYkxhYmVsVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiYmVkSXRlbS50YWJiZWRUYWJUcGxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYkxhYmVsVHBsPnt7IHRhYmJlZEl0ZW0/LmxhYmVsIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImFjdGl2ZS1pbmRpY2F0b3JcIlxuICAgICAgW2NsYXNzLmFjdGl2ZS1pbmRpY2F0b3ItaG9yaXpvbnRhbF09XCJkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICBbY2xhc3MuYWN0aXZlLWluZGljYXRvci12ZXJ0aWNhbF09XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCdcIj5cbiAgICA8L2Rpdj4gLS0+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVGFicyBDb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwidGFiYmVkLXRhYnMtY29udGVudCBiZy1saWdodFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvbmx5Um91dGVDb250ZW50OyBlbHNlIG5vdE9ubHlSb3V0ZUNvbnRlbnRcIj5cbiAgICAgIDwhLS0gPGFwcC1zbGlkZS1vdmVyLXJvdXRlci1vdXRsZXQ+PC9hcHAtc2xpZGUtb3Zlci1yb3V0ZXItb3V0bGV0PiAtLT5cbiAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vdE9ubHlSb3V0ZUNvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRUYWIkIHwgYXN5bmMgYXMgc2VsZWN0ZWRUYWJcIj5cbiAgICAgICAgPHNlYW0tdGFiYmVkLWNvbnRlbnQgZnhGbGV4RmlsbCBbdGFiYmVkSXRlbV09XCJzZWxlY3RlZFRhYlwiPjwvc2VhbS10YWJiZWQtY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==
@@ -8,6 +8,8 @@ import { FlexLayoutModule } from '@angular/flex-layout';
8
8
  import * as i4 from '@angular/flex-layout/flex';
9
9
  import { __decorate } from 'tslib';
10
10
  import { InputBoolean } from '@theseam/ui-common/core';
11
+ import { BehaviorSubject, shareReplay, combineLatest, tap } from 'rxjs';
12
+ import { isNullOrUndefined } from '@theseam/ui-common/utils';
11
13
 
12
14
  class TabbedContentComponent {
13
15
  }
@@ -125,6 +127,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
125
127
  }] } });
126
128
 
127
129
  class TabbedComponent {
130
+ set tabbedItems(val) {
131
+ this._tabbedItems.next(val);
132
+ }
133
+ get tabbedItems() {
134
+ return this._tabbedItems.value;
135
+ }
128
136
  set direction(val) {
129
137
  this._direction = val;
130
138
  }
@@ -149,20 +157,12 @@ class TabbedComponent {
149
157
  }
150
158
  }
151
159
  else {
152
- return this._selectedTab;
160
+ return this._selectedTab.value;
153
161
  }
154
162
  }
155
- set selectedTab(tab) { this._selectedTab = tab; }
163
+ set selectedTab(tab) { this._selectedTab.next(tab); }
156
164
  set activeTabName(val) {
157
- clearTimeout(this._activeTabNameTimeout);
158
- this._activeTabNameTimeout = setTimeout(() => {
159
- if (!val) {
160
- this.selectedTab = undefined;
161
- }
162
- else {
163
- this.selectTab(val);
164
- }
165
- });
165
+ this._activeTabName.next(val);
166
166
  }
167
167
  constructor(tabbedService, router, route) {
168
168
  this.tabbedService = tabbedService;
@@ -170,8 +170,14 @@ class TabbedComponent {
170
170
  this.route = route;
171
171
  this._direction = 'vertical';
172
172
  this._hideTabs = false;
173
+ this._tabbedItems = new BehaviorSubject(undefined);
174
+ this.tabbedItems$ = this._tabbedItems.asObservable();
173
175
  this.tabChanged = new EventEmitter();
174
176
  this.onlyRouteContent = false;
177
+ this._selectedTab = new BehaviorSubject(undefined);
178
+ this.selectedTab$ = this._selectedTab.asObservable().pipe(shareReplay({ bufferSize: 1, refCount: true }));
179
+ this._activeTabName = new BehaviorSubject(undefined);
180
+ this.activeTabName$ = this._activeTabName.asObservable();
175
181
  }
176
182
  ngOnInit() {
177
183
  this.tabbedService.registerTab(this, 'main');
@@ -180,9 +186,7 @@ class TabbedComponent {
180
186
  this.tabbedService.unregisterTab(this, 'main');
181
187
  }
182
188
  ngAfterContentInit() {
183
- if (this.tabbedItems && this.tabbedItems.length > 0) {
184
- this.selectedTab = this.tabbedItems.first;
185
- }
189
+ combineLatest([this.tabbedItems$, this.activeTabName$]).pipe(tap(([_, activeTabName]) => this.selectTab(activeTabName))).subscribe();
186
190
  }
187
191
  /**
188
192
  *
@@ -199,21 +203,24 @@ class TabbedComponent {
199
203
  * to select a tab
200
204
  */
201
205
  selectTab(name) {
202
- var _a;
203
- const tab = (_a = this.tabbedItems) === null || _a === void 0 ? void 0 : _a.find(t => t.name === name);
206
+ var _a, _b;
207
+ if (isNullOrUndefined(name) || name === ((_a = this.selectedTab) === null || _a === void 0 ? void 0 : _a.name)) {
208
+ return;
209
+ }
210
+ const tab = (_b = this.tabbedItems) === null || _b === void 0 ? void 0 : _b.find(t => t.name === name);
204
211
  if (tab) {
205
212
  this.selectedTab = tab;
206
213
  }
207
214
  else {
208
- throw new Error(`Tab with name '${name}' not found`);
215
+ console.warn(`Tab with name '${name}' not found`);
209
216
  }
210
217
  }
211
218
  }
212
219
  TabbedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, deps: [{ token: TabbedService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
213
- TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }] });
220
+ TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
214
221
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, decorators: [{
215
222
  type: Component,
216
- args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
223
+ args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
217
224
  }], ctorParameters: function () { return [{ type: TabbedService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; }, propDecorators: { tabbedItems: [{
218
225
  type: ContentChildren,
219
226
  args: [TabbedItemComponent]
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-tabbed.mjs","sources":["../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.ts","../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.html","../../../projects/ui-common/tabbed/directives/tabbed-tab-content.directive.ts","../../../projects/ui-common/tabbed/tabbed.service.ts","../../../projects/ui-common/tabbed/directives/tabbed-tab.directive.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.html","../../../projects/ui-common/tabbed/tabbed.component.ts","../../../projects/ui-common/tabbed/tabbed.component.html","../../../projects/ui-common/tabbed/tabbed.module.ts","../../../projects/ui-common/tabbed/theseam-ui-common-tabbed.ts"],"sourcesContent":["import { Component, Input } from '@angular/core'\n\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-content',\n templateUrl: './tabbed-content.component.html',\n styleUrls: ['./tabbed-content.component.scss']\n})\nexport class TabbedContentComponent {\n\n @Input() tabbedItem?: TabbedItemAccessor\n\n}\n","<!-- <div class=\"fade-left\" fxFlexFill> -->\n<div fxFlexFill>\n <ng-container *ngIf=\"tabbedItem\">\n <ng-template *ngIf=\"tabbedItem.tabbedContentTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedContentTpl\"></ng-template>\n <ng-container *ngIf=\"tabbedItem.contentFromRoute\"><router-outlet></router-outlet></ng-container>\n </ng-container>\n</div>\n","import { Directive } from '@angular/core'\n\nimport { TabbedTabContentAccessor } from '../tabbed-models'\n\n@Directive({\n selector: '[seamTabbedTabContent]',\n exportAs: 'seamTabbedTabContent'\n})\nexport class TabbedTabContentDirective implements TabbedTabContentAccessor {\n\n public isActive = false\n\n}\n","import { Injectable } from '@angular/core'\n\nimport { TabbedComponent } from './tabbed.component'\n\nexport declare type TabsDirection = 'horizontal' | 'vertical'\n\n@Injectable()\nexport class TabbedService {\n\n private _tabGroups: { [groupName: string]: TabbedComponent[] } = {}\n\n public registerTab(tab: TabbedComponent, groupName: string) {\n if (!this._tabGroups[groupName]) {\n this._tabGroups[groupName] = []\n }\n\n for (const t of this._tabGroups[groupName]) {\n t.hideTabs = true\n }\n\n this._tabGroups[groupName].push(tab)\n }\n\n public unregisterTab(tab: TabbedComponent, groupName: string) {\n if (this._tabGroups[groupName]) {\n this._tabGroups[groupName] = this._tabGroups[groupName].filter(\n t => t !== tab\n )\n\n if (this._tabGroups[groupName].length > 0) {\n this._tabGroups[groupName][this._tabGroups[groupName].length - 1].hideTabs = false\n }\n }\n }\n\n}\n","import { Directive, ElementRef, HostBinding, OnInit } from '@angular/core'\n\nimport { TabbedTabAccessor } from '../tabbed-models'\nimport { TabbedComponent } from '../tabbed.component'\nimport { TabbedService } from '../tabbed.service'\n\n@Directive({\n selector: '[seamTabbedTab]',\n exportAs: 'seamTabbedTab'\n})\nexport class TabbedTabDirective implements OnInit, TabbedTabAccessor {\n\n // @HostBinding('class.custom-invalid')\n // get customInvalid() { return this.control.invalid }\n\n public isActive = false\n\n constructor(\n public elementRef: ElementRef,\n // public host: TabbedComponent,\n public tabbedService: TabbedService\n ) { }\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnInit() {\n // this.tabbedService.selectedTab.subscribe(tab => {\n // console.log('tab: ', tab)\n // console.log('tab.tabbedTabTpl.elementRef: ', tab.tabbedTabTpl.elementRef)\n // console.log('this.elementRef: ', this.elementRef)\n // if (tab.tabbedTabTpl.elementRef.na === this.elementRef) {\n // this.isActive = true\n // } else {\n // this.isActive = false\n // }\n // })\n }\n\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { TabbedTabContentDirective } from '../directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from '../directives/tabbed-tab.directive'\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-item',\n templateUrl: './tabbed-item.component.html',\n styleUrls: ['./tabbed-item.component.scss']\n})\nexport class TabbedItemComponent implements TabbedItemAccessor {\n static ngAcceptInputType_contentFromRoute: BooleanInput\n\n @ContentChild(TabbedTabDirective, { read: TemplateRef, static: true })\n public tabbedTabTpl?: TemplateRef<TabbedTabDirective>\n\n @ContentChild(TabbedTabContentDirective, { read: TemplateRef, static: true })\n public tabbedContentTpl?: TemplateRef<TabbedTabContentDirective>\n\n @Input() name: string | undefined | null\n @Input() label: string | undefined | null\n @Input() @InputBoolean() contentFromRoute = false\n}\n","<p>\n tabbed-item works!\n</p>","import {\n AfterContentInit, Component, ContentChildren, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList\n} from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\n\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedService, TabsDirection } from './tabbed.service'\n\n@Component({\n selector: 'seam-tabbed',\n templateUrl: './tabbed.component.html',\n styleUrls: ['./tabbed.component.scss'],\n providers: [ TabbedService ]\n})\nexport class TabbedComponent implements OnInit, AfterContentInit, OnDestroy {\n\n private _direction: TabsDirection = 'vertical'\n private _hideTabs = false\n\n @ContentChildren(TabbedItemComponent) tabbedItems?: QueryList<TabbedItemComponent>\n\n @Output() tabChanged = new EventEmitter<TabbedItemComponent>()\n\n @Input()\n set direction(val: TabsDirection) {\n this._direction = val\n }\n get direction() {\n return this._direction\n }\n\n @Input()\n set hideTabs(val: boolean) {\n setTimeout(() => {\n this._hideTabs = val\n })\n }\n get hideTabs(): boolean {\n return this._hideTabs\n }\n\n @Input()\n public onlyRouteContent = false\n\n get selectedTab(): TabbedItemComponent | undefined {\n if (this.onlyRouteContent) {\n if (this.route.snapshot.children.length > 0) {\n const config = this.route.snapshot.children[0].routeConfig\n const childPath = config && config.path\n return this.tabbedItems?.find(t => t.name === childPath)\n }\n } else {\n return this._selectedTab\n }\n }\n set selectedTab(tab: TabbedItemComponent | undefined) { this._selectedTab = tab }\n private _selectedTab: TabbedItemComponent | undefined\n\n private _activeTabNameTimeout: any\n @Input()\n set activeTabName(val: string) {\n clearTimeout(this._activeTabNameTimeout)\n this._activeTabNameTimeout = setTimeout(() => {\n if (!val) {\n this.selectedTab = undefined\n } else {\n this.selectTab(val)\n }\n })\n }\n\n constructor(\n public tabbedService: TabbedService,\n private router: Router,\n private route: ActivatedRoute\n ) { }\n\n ngOnInit() {\n this.tabbedService.registerTab(this, 'main')\n }\n\n ngOnDestroy() {\n this.tabbedService.unregisterTab(this, 'main')\n }\n\n ngAfterContentInit() {\n if (this.tabbedItems && this.tabbedItems.length > 0) {\n this.selectedTab = this.tabbedItems.first\n }\n }\n\n /**\n *\n */\n public onClickTab(event: any, tab: TabbedItemComponent) {\n this.selectedTab = tab\n if (this.onlyRouteContent) {\n this.router.navigate([ tab.name ], { relativeTo: this.route })\n }\n this.tabChanged.emit(tab)\n }\n\n /**\n * TODO: Make more generic, so that the name isn't the only way\n * to select a tab\n */\n public selectTab(name: string) {\n const tab = this.tabbedItems?.find(t => t.name === name)\n if (tab) {\n this.selectedTab = tab\n } else {\n throw new Error(`Tab with name '${name}' not found`)\n }\n }\n\n}\n","<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { FlexLayoutModule } from '@angular/flex-layout'\n\nimport { TabbedContentComponent } from './tabbed-content/tabbed-content.component'\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedComponent } from './tabbed.component'\n\nimport { TabbedTabContentDirective } from './directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from './directives/tabbed-tab.directive'\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FlexLayoutModule,\n ],\n declarations: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n TabbedContentComponent,\n],\n exports: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n ]\n})\nexport class TheSeamTabbedModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i1.TabbedService","i5.TabbedContentComponent"],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-tabbed.mjs","sources":["../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.ts","../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.html","../../../projects/ui-common/tabbed/directives/tabbed-tab-content.directive.ts","../../../projects/ui-common/tabbed/tabbed.service.ts","../../../projects/ui-common/tabbed/directives/tabbed-tab.directive.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.html","../../../projects/ui-common/tabbed/tabbed.component.ts","../../../projects/ui-common/tabbed/tabbed.component.html","../../../projects/ui-common/tabbed/tabbed.module.ts","../../../projects/ui-common/tabbed/theseam-ui-common-tabbed.ts"],"sourcesContent":["import { Component, Input } from '@angular/core'\n\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-content',\n templateUrl: './tabbed-content.component.html',\n styleUrls: ['./tabbed-content.component.scss']\n})\nexport class TabbedContentComponent {\n\n @Input() tabbedItem?: TabbedItemAccessor\n\n}\n","<!-- <div class=\"fade-left\" fxFlexFill> -->\n<div fxFlexFill>\n <ng-container *ngIf=\"tabbedItem\">\n <ng-template *ngIf=\"tabbedItem.tabbedContentTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedContentTpl\"></ng-template>\n <ng-container *ngIf=\"tabbedItem.contentFromRoute\"><router-outlet></router-outlet></ng-container>\n </ng-container>\n</div>\n","import { Directive } from '@angular/core'\n\nimport { TabbedTabContentAccessor } from '../tabbed-models'\n\n@Directive({\n selector: '[seamTabbedTabContent]',\n exportAs: 'seamTabbedTabContent'\n})\nexport class TabbedTabContentDirective implements TabbedTabContentAccessor {\n\n public isActive = false\n\n}\n","import { Injectable } from '@angular/core'\n\nimport { TabbedComponent } from './tabbed.component'\n\nexport declare type TabsDirection = 'horizontal' | 'vertical'\n\n@Injectable()\nexport class TabbedService {\n\n private _tabGroups: { [groupName: string]: TabbedComponent[] } = {}\n\n public registerTab(tab: TabbedComponent, groupName: string) {\n if (!this._tabGroups[groupName]) {\n this._tabGroups[groupName] = []\n }\n\n for (const t of this._tabGroups[groupName]) {\n t.hideTabs = true\n }\n\n this._tabGroups[groupName].push(tab)\n }\n\n public unregisterTab(tab: TabbedComponent, groupName: string) {\n if (this._tabGroups[groupName]) {\n this._tabGroups[groupName] = this._tabGroups[groupName].filter(\n t => t !== tab\n )\n\n if (this._tabGroups[groupName].length > 0) {\n this._tabGroups[groupName][this._tabGroups[groupName].length - 1].hideTabs = false\n }\n }\n }\n\n}\n","import { Directive, ElementRef, HostBinding, OnInit } from '@angular/core'\n\nimport { TabbedTabAccessor } from '../tabbed-models'\nimport { TabbedComponent } from '../tabbed.component'\nimport { TabbedService } from '../tabbed.service'\n\n@Directive({\n selector: '[seamTabbedTab]',\n exportAs: 'seamTabbedTab'\n})\nexport class TabbedTabDirective implements OnInit, TabbedTabAccessor {\n\n // @HostBinding('class.custom-invalid')\n // get customInvalid() { return this.control.invalid }\n\n public isActive = false\n\n constructor(\n public elementRef: ElementRef,\n // public host: TabbedComponent,\n public tabbedService: TabbedService\n ) { }\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnInit() {\n // this.tabbedService.selectedTab.subscribe(tab => {\n // console.log('tab: ', tab)\n // console.log('tab.tabbedTabTpl.elementRef: ', tab.tabbedTabTpl.elementRef)\n // console.log('this.elementRef: ', this.elementRef)\n // if (tab.tabbedTabTpl.elementRef.na === this.elementRef) {\n // this.isActive = true\n // } else {\n // this.isActive = false\n // }\n // })\n }\n\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { TabbedTabContentDirective } from '../directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from '../directives/tabbed-tab.directive'\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-item',\n templateUrl: './tabbed-item.component.html',\n styleUrls: ['./tabbed-item.component.scss']\n})\nexport class TabbedItemComponent implements TabbedItemAccessor {\n static ngAcceptInputType_contentFromRoute: BooleanInput\n\n @ContentChild(TabbedTabDirective, { read: TemplateRef, static: true })\n public tabbedTabTpl?: TemplateRef<TabbedTabDirective>\n\n @ContentChild(TabbedTabContentDirective, { read: TemplateRef, static: true })\n public tabbedContentTpl?: TemplateRef<TabbedTabContentDirective>\n\n @Input() name: string | undefined | null\n @Input() label: string | undefined | null\n @Input() @InputBoolean() contentFromRoute = false\n}\n","<p>\n tabbed-item works!\n</p>","import {\n AfterContentInit, Component, ContentChildren, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList\n} from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\nimport { BehaviorSubject, combineLatest, shareReplay, tap } from 'rxjs'\n\nimport { isNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedService, TabsDirection } from './tabbed.service'\n\n@Component({\n selector: 'seam-tabbed',\n templateUrl: './tabbed.component.html',\n styleUrls: ['./tabbed.component.scss'],\n providers: [ TabbedService ]\n})\nexport class TabbedComponent implements OnInit, AfterContentInit, OnDestroy {\n\n private _direction: TabsDirection = 'vertical'\n private _hideTabs = false\n\n @ContentChildren(TabbedItemComponent)\n set tabbedItems(val: QueryList<TabbedItemComponent> | undefined) {\n this._tabbedItems.next(val)\n }\n get tabbedItems(): QueryList<TabbedItemComponent> | undefined {\n return this._tabbedItems.value\n }\n private readonly _tabbedItems = new BehaviorSubject<QueryList<TabbedItemComponent> | undefined>(undefined)\n public readonly tabbedItems$ = this._tabbedItems.asObservable()\n\n @Output() tabChanged = new EventEmitter<TabbedItemComponent>()\n\n @Input()\n set direction(val: TabsDirection) {\n this._direction = val\n }\n get direction() {\n return this._direction\n }\n\n @Input()\n set hideTabs(val: boolean) {\n setTimeout(() => {\n this._hideTabs = val\n })\n }\n get hideTabs(): boolean {\n return this._hideTabs\n }\n\n @Input()\n public onlyRouteContent = false\n\n get selectedTab(): TabbedItemComponent | undefined {\n if (this.onlyRouteContent) {\n if (this.route.snapshot.children.length > 0) {\n const config = this.route.snapshot.children[0].routeConfig\n const childPath = config && config.path\n return this.tabbedItems?.find(t => t.name === childPath)\n }\n } else {\n return this._selectedTab.value\n }\n }\n set selectedTab(tab: TabbedItemComponent | undefined) { this._selectedTab.next(tab) }\n private readonly _selectedTab = new BehaviorSubject<TabbedItemComponent | undefined>(undefined)\n public readonly selectedTab$ = this._selectedTab.asObservable().pipe(\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n @Input()\n set activeTabName(val: string) {\n this._activeTabName.next(val)\n }\n private readonly _activeTabName = new BehaviorSubject<string | undefined>(undefined)\n private readonly activeTabName$ = this._activeTabName.asObservable()\n\n constructor(\n public tabbedService: TabbedService,\n private router: Router,\n private route: ActivatedRoute\n ) { }\n\n ngOnInit() {\n this.tabbedService.registerTab(this, 'main')\n }\n\n ngOnDestroy() {\n this.tabbedService.unregisterTab(this, 'main')\n }\n\n ngAfterContentInit() {\n combineLatest([ this.tabbedItems$, this.activeTabName$ ]).pipe(\n tap(([ _, activeTabName ]) => this.selectTab(activeTabName))\n ).subscribe()\n }\n\n /**\n *\n */\n public onClickTab(event: any, tab: TabbedItemComponent) {\n this.selectedTab = tab\n if (this.onlyRouteContent) {\n this.router.navigate([ tab.name ], { relativeTo: this.route })\n }\n this.tabChanged.emit(tab)\n }\n\n /**\n * TODO: Make more generic, so that the name isn't the only way\n * to select a tab\n */\n public selectTab(name?: string) {\n if (isNullOrUndefined(name) || name === this.selectedTab?.name) {\n return\n }\n\n const tab = this.tabbedItems?.find(t => t.name === name)\n if (tab) {\n this.selectedTab = tab\n }\n else {\n console.warn(`Tab with name '${name}' not found`)\n }\n }\n\n}\n","<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { FlexLayoutModule } from '@angular/flex-layout'\n\nimport { TabbedContentComponent } from './tabbed-content/tabbed-content.component'\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedComponent } from './tabbed.component'\n\nimport { TabbedTabContentDirective } from './directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from './directives/tabbed-tab.directive'\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FlexLayoutModule,\n ],\n declarations: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n TabbedContentComponent,\n],\n exports: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n ]\n})\nexport class TheSeamTabbedModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i1.TabbedService","i5.TabbedContentComponent"],"mappings":"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"}
@@ -8,6 +8,8 @@ import { FlexLayoutModule } from '@angular/flex-layout';
8
8
  import * as i4 from '@angular/flex-layout/flex';
9
9
  import { __decorate } from 'tslib';
10
10
  import { InputBoolean } from '@theseam/ui-common/core';
11
+ import { BehaviorSubject, shareReplay, combineLatest, tap } from 'rxjs';
12
+ import { isNullOrUndefined } from '@theseam/ui-common/utils';
11
13
 
12
14
  class TabbedContentComponent {
13
15
  }
@@ -125,6 +127,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
125
127
  }] } });
126
128
 
127
129
  class TabbedComponent {
130
+ set tabbedItems(val) {
131
+ this._tabbedItems.next(val);
132
+ }
133
+ get tabbedItems() {
134
+ return this._tabbedItems.value;
135
+ }
128
136
  set direction(val) {
129
137
  this._direction = val;
130
138
  }
@@ -148,20 +156,12 @@ class TabbedComponent {
148
156
  }
149
157
  }
150
158
  else {
151
- return this._selectedTab;
159
+ return this._selectedTab.value;
152
160
  }
153
161
  }
154
- set selectedTab(tab) { this._selectedTab = tab; }
162
+ set selectedTab(tab) { this._selectedTab.next(tab); }
155
163
  set activeTabName(val) {
156
- clearTimeout(this._activeTabNameTimeout);
157
- this._activeTabNameTimeout = setTimeout(() => {
158
- if (!val) {
159
- this.selectedTab = undefined;
160
- }
161
- else {
162
- this.selectTab(val);
163
- }
164
- });
164
+ this._activeTabName.next(val);
165
165
  }
166
166
  constructor(tabbedService, router, route) {
167
167
  this.tabbedService = tabbedService;
@@ -169,8 +169,14 @@ class TabbedComponent {
169
169
  this.route = route;
170
170
  this._direction = 'vertical';
171
171
  this._hideTabs = false;
172
+ this._tabbedItems = new BehaviorSubject(undefined);
173
+ this.tabbedItems$ = this._tabbedItems.asObservable();
172
174
  this.tabChanged = new EventEmitter();
173
175
  this.onlyRouteContent = false;
176
+ this._selectedTab = new BehaviorSubject(undefined);
177
+ this.selectedTab$ = this._selectedTab.asObservable().pipe(shareReplay({ bufferSize: 1, refCount: true }));
178
+ this._activeTabName = new BehaviorSubject(undefined);
179
+ this.activeTabName$ = this._activeTabName.asObservable();
174
180
  }
175
181
  ngOnInit() {
176
182
  this.tabbedService.registerTab(this, 'main');
@@ -179,9 +185,7 @@ class TabbedComponent {
179
185
  this.tabbedService.unregisterTab(this, 'main');
180
186
  }
181
187
  ngAfterContentInit() {
182
- if (this.tabbedItems && this.tabbedItems.length > 0) {
183
- this.selectedTab = this.tabbedItems.first;
184
- }
188
+ combineLatest([this.tabbedItems$, this.activeTabName$]).pipe(tap(([_, activeTabName]) => this.selectTab(activeTabName))).subscribe();
185
189
  }
186
190
  /**
187
191
  *
@@ -198,20 +202,23 @@ class TabbedComponent {
198
202
  * to select a tab
199
203
  */
200
204
  selectTab(name) {
205
+ if (isNullOrUndefined(name) || name === this.selectedTab?.name) {
206
+ return;
207
+ }
201
208
  const tab = this.tabbedItems?.find(t => t.name === name);
202
209
  if (tab) {
203
210
  this.selectedTab = tab;
204
211
  }
205
212
  else {
206
- throw new Error(`Tab with name '${name}' not found`);
213
+ console.warn(`Tab with name '${name}' not found`);
207
214
  }
208
215
  }
209
216
  }
210
217
  TabbedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, deps: [{ token: TabbedService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
211
- TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }] });
218
+ TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
212
219
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, decorators: [{
213
220
  type: Component,
214
- args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
221
+ args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
215
222
  }], ctorParameters: function () { return [{ type: TabbedService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; }, propDecorators: { tabbedItems: [{
216
223
  type: ContentChildren,
217
224
  args: [TabbedItemComponent]
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-tabbed.mjs","sources":["../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.ts","../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.html","../../../projects/ui-common/tabbed/directives/tabbed-tab-content.directive.ts","../../../projects/ui-common/tabbed/tabbed.service.ts","../../../projects/ui-common/tabbed/directives/tabbed-tab.directive.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.html","../../../projects/ui-common/tabbed/tabbed.component.ts","../../../projects/ui-common/tabbed/tabbed.component.html","../../../projects/ui-common/tabbed/tabbed.module.ts","../../../projects/ui-common/tabbed/theseam-ui-common-tabbed.ts"],"sourcesContent":["import { Component, Input } from '@angular/core'\n\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-content',\n templateUrl: './tabbed-content.component.html',\n styleUrls: ['./tabbed-content.component.scss']\n})\nexport class TabbedContentComponent {\n\n @Input() tabbedItem?: TabbedItemAccessor\n\n}\n","<!-- <div class=\"fade-left\" fxFlexFill> -->\n<div fxFlexFill>\n <ng-container *ngIf=\"tabbedItem\">\n <ng-template *ngIf=\"tabbedItem.tabbedContentTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedContentTpl\"></ng-template>\n <ng-container *ngIf=\"tabbedItem.contentFromRoute\"><router-outlet></router-outlet></ng-container>\n </ng-container>\n</div>\n","import { Directive } from '@angular/core'\n\nimport { TabbedTabContentAccessor } from '../tabbed-models'\n\n@Directive({\n selector: '[seamTabbedTabContent]',\n exportAs: 'seamTabbedTabContent'\n})\nexport class TabbedTabContentDirective implements TabbedTabContentAccessor {\n\n public isActive = false\n\n}\n","import { Injectable } from '@angular/core'\n\nimport { TabbedComponent } from './tabbed.component'\n\nexport declare type TabsDirection = 'horizontal' | 'vertical'\n\n@Injectable()\nexport class TabbedService {\n\n private _tabGroups: { [groupName: string]: TabbedComponent[] } = {}\n\n public registerTab(tab: TabbedComponent, groupName: string) {\n if (!this._tabGroups[groupName]) {\n this._tabGroups[groupName] = []\n }\n\n for (const t of this._tabGroups[groupName]) {\n t.hideTabs = true\n }\n\n this._tabGroups[groupName].push(tab)\n }\n\n public unregisterTab(tab: TabbedComponent, groupName: string) {\n if (this._tabGroups[groupName]) {\n this._tabGroups[groupName] = this._tabGroups[groupName].filter(\n t => t !== tab\n )\n\n if (this._tabGroups[groupName].length > 0) {\n this._tabGroups[groupName][this._tabGroups[groupName].length - 1].hideTabs = false\n }\n }\n }\n\n}\n","import { Directive, ElementRef, HostBinding, OnInit } from '@angular/core'\n\nimport { TabbedTabAccessor } from '../tabbed-models'\nimport { TabbedComponent } from '../tabbed.component'\nimport { TabbedService } from '../tabbed.service'\n\n@Directive({\n selector: '[seamTabbedTab]',\n exportAs: 'seamTabbedTab'\n})\nexport class TabbedTabDirective implements OnInit, TabbedTabAccessor {\n\n // @HostBinding('class.custom-invalid')\n // get customInvalid() { return this.control.invalid }\n\n public isActive = false\n\n constructor(\n public elementRef: ElementRef,\n // public host: TabbedComponent,\n public tabbedService: TabbedService\n ) { }\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnInit() {\n // this.tabbedService.selectedTab.subscribe(tab => {\n // console.log('tab: ', tab)\n // console.log('tab.tabbedTabTpl.elementRef: ', tab.tabbedTabTpl.elementRef)\n // console.log('this.elementRef: ', this.elementRef)\n // if (tab.tabbedTabTpl.elementRef.na === this.elementRef) {\n // this.isActive = true\n // } else {\n // this.isActive = false\n // }\n // })\n }\n\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { TabbedTabContentDirective } from '../directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from '../directives/tabbed-tab.directive'\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-item',\n templateUrl: './tabbed-item.component.html',\n styleUrls: ['./tabbed-item.component.scss']\n})\nexport class TabbedItemComponent implements TabbedItemAccessor {\n static ngAcceptInputType_contentFromRoute: BooleanInput\n\n @ContentChild(TabbedTabDirective, { read: TemplateRef, static: true })\n public tabbedTabTpl?: TemplateRef<TabbedTabDirective>\n\n @ContentChild(TabbedTabContentDirective, { read: TemplateRef, static: true })\n public tabbedContentTpl?: TemplateRef<TabbedTabContentDirective>\n\n @Input() name: string | undefined | null\n @Input() label: string | undefined | null\n @Input() @InputBoolean() contentFromRoute = false\n}\n","<p>\n tabbed-item works!\n</p>","import {\n AfterContentInit, Component, ContentChildren, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList\n} from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\n\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedService, TabsDirection } from './tabbed.service'\n\n@Component({\n selector: 'seam-tabbed',\n templateUrl: './tabbed.component.html',\n styleUrls: ['./tabbed.component.scss'],\n providers: [ TabbedService ]\n})\nexport class TabbedComponent implements OnInit, AfterContentInit, OnDestroy {\n\n private _direction: TabsDirection = 'vertical'\n private _hideTabs = false\n\n @ContentChildren(TabbedItemComponent) tabbedItems?: QueryList<TabbedItemComponent>\n\n @Output() tabChanged = new EventEmitter<TabbedItemComponent>()\n\n @Input()\n set direction(val: TabsDirection) {\n this._direction = val\n }\n get direction() {\n return this._direction\n }\n\n @Input()\n set hideTabs(val: boolean) {\n setTimeout(() => {\n this._hideTabs = val\n })\n }\n get hideTabs(): boolean {\n return this._hideTabs\n }\n\n @Input()\n public onlyRouteContent = false\n\n get selectedTab(): TabbedItemComponent | undefined {\n if (this.onlyRouteContent) {\n if (this.route.snapshot.children.length > 0) {\n const config = this.route.snapshot.children[0].routeConfig\n const childPath = config && config.path\n return this.tabbedItems?.find(t => t.name === childPath)\n }\n } else {\n return this._selectedTab\n }\n }\n set selectedTab(tab: TabbedItemComponent | undefined) { this._selectedTab = tab }\n private _selectedTab: TabbedItemComponent | undefined\n\n private _activeTabNameTimeout: any\n @Input()\n set activeTabName(val: string) {\n clearTimeout(this._activeTabNameTimeout)\n this._activeTabNameTimeout = setTimeout(() => {\n if (!val) {\n this.selectedTab = undefined\n } else {\n this.selectTab(val)\n }\n })\n }\n\n constructor(\n public tabbedService: TabbedService,\n private router: Router,\n private route: ActivatedRoute\n ) { }\n\n ngOnInit() {\n this.tabbedService.registerTab(this, 'main')\n }\n\n ngOnDestroy() {\n this.tabbedService.unregisterTab(this, 'main')\n }\n\n ngAfterContentInit() {\n if (this.tabbedItems && this.tabbedItems.length > 0) {\n this.selectedTab = this.tabbedItems.first\n }\n }\n\n /**\n *\n */\n public onClickTab(event: any, tab: TabbedItemComponent) {\n this.selectedTab = tab\n if (this.onlyRouteContent) {\n this.router.navigate([ tab.name ], { relativeTo: this.route })\n }\n this.tabChanged.emit(tab)\n }\n\n /**\n * TODO: Make more generic, so that the name isn't the only way\n * to select a tab\n */\n public selectTab(name: string) {\n const tab = this.tabbedItems?.find(t => t.name === name)\n if (tab) {\n this.selectedTab = tab\n } else {\n throw new Error(`Tab with name '${name}' not found`)\n }\n }\n\n}\n","<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { FlexLayoutModule } from '@angular/flex-layout'\n\nimport { TabbedContentComponent } from './tabbed-content/tabbed-content.component'\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedComponent } from './tabbed.component'\n\nimport { TabbedTabContentDirective } from './directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from './directives/tabbed-tab.directive'\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FlexLayoutModule,\n ],\n declarations: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n TabbedContentComponent,\n],\n exports: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n ]\n})\nexport class TheSeamTabbedModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i1.TabbedService","i5.TabbedContentComponent"],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-tabbed.mjs","sources":["../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.ts","../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.html","../../../projects/ui-common/tabbed/directives/tabbed-tab-content.directive.ts","../../../projects/ui-common/tabbed/tabbed.service.ts","../../../projects/ui-common/tabbed/directives/tabbed-tab.directive.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.html","../../../projects/ui-common/tabbed/tabbed.component.ts","../../../projects/ui-common/tabbed/tabbed.component.html","../../../projects/ui-common/tabbed/tabbed.module.ts","../../../projects/ui-common/tabbed/theseam-ui-common-tabbed.ts"],"sourcesContent":["import { Component, Input } from '@angular/core'\n\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-content',\n templateUrl: './tabbed-content.component.html',\n styleUrls: ['./tabbed-content.component.scss']\n})\nexport class TabbedContentComponent {\n\n @Input() tabbedItem?: TabbedItemAccessor\n\n}\n","<!-- <div class=\"fade-left\" fxFlexFill> -->\n<div fxFlexFill>\n <ng-container *ngIf=\"tabbedItem\">\n <ng-template *ngIf=\"tabbedItem.tabbedContentTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedContentTpl\"></ng-template>\n <ng-container *ngIf=\"tabbedItem.contentFromRoute\"><router-outlet></router-outlet></ng-container>\n </ng-container>\n</div>\n","import { Directive } from '@angular/core'\n\nimport { TabbedTabContentAccessor } from '../tabbed-models'\n\n@Directive({\n selector: '[seamTabbedTabContent]',\n exportAs: 'seamTabbedTabContent'\n})\nexport class TabbedTabContentDirective implements TabbedTabContentAccessor {\n\n public isActive = false\n\n}\n","import { Injectable } from '@angular/core'\n\nimport { TabbedComponent } from './tabbed.component'\n\nexport declare type TabsDirection = 'horizontal' | 'vertical'\n\n@Injectable()\nexport class TabbedService {\n\n private _tabGroups: { [groupName: string]: TabbedComponent[] } = {}\n\n public registerTab(tab: TabbedComponent, groupName: string) {\n if (!this._tabGroups[groupName]) {\n this._tabGroups[groupName] = []\n }\n\n for (const t of this._tabGroups[groupName]) {\n t.hideTabs = true\n }\n\n this._tabGroups[groupName].push(tab)\n }\n\n public unregisterTab(tab: TabbedComponent, groupName: string) {\n if (this._tabGroups[groupName]) {\n this._tabGroups[groupName] = this._tabGroups[groupName].filter(\n t => t !== tab\n )\n\n if (this._tabGroups[groupName].length > 0) {\n this._tabGroups[groupName][this._tabGroups[groupName].length - 1].hideTabs = false\n }\n }\n }\n\n}\n","import { Directive, ElementRef, HostBinding, OnInit } from '@angular/core'\n\nimport { TabbedTabAccessor } from '../tabbed-models'\nimport { TabbedComponent } from '../tabbed.component'\nimport { TabbedService } from '../tabbed.service'\n\n@Directive({\n selector: '[seamTabbedTab]',\n exportAs: 'seamTabbedTab'\n})\nexport class TabbedTabDirective implements OnInit, TabbedTabAccessor {\n\n // @HostBinding('class.custom-invalid')\n // get customInvalid() { return this.control.invalid }\n\n public isActive = false\n\n constructor(\n public elementRef: ElementRef,\n // public host: TabbedComponent,\n public tabbedService: TabbedService\n ) { }\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnInit() {\n // this.tabbedService.selectedTab.subscribe(tab => {\n // console.log('tab: ', tab)\n // console.log('tab.tabbedTabTpl.elementRef: ', tab.tabbedTabTpl.elementRef)\n // console.log('this.elementRef: ', this.elementRef)\n // if (tab.tabbedTabTpl.elementRef.na === this.elementRef) {\n // this.isActive = true\n // } else {\n // this.isActive = false\n // }\n // })\n }\n\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { TabbedTabContentDirective } from '../directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from '../directives/tabbed-tab.directive'\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-item',\n templateUrl: './tabbed-item.component.html',\n styleUrls: ['./tabbed-item.component.scss']\n})\nexport class TabbedItemComponent implements TabbedItemAccessor {\n static ngAcceptInputType_contentFromRoute: BooleanInput\n\n @ContentChild(TabbedTabDirective, { read: TemplateRef, static: true })\n public tabbedTabTpl?: TemplateRef<TabbedTabDirective>\n\n @ContentChild(TabbedTabContentDirective, { read: TemplateRef, static: true })\n public tabbedContentTpl?: TemplateRef<TabbedTabContentDirective>\n\n @Input() name: string | undefined | null\n @Input() label: string | undefined | null\n @Input() @InputBoolean() contentFromRoute = false\n}\n","<p>\n tabbed-item works!\n</p>","import {\n AfterContentInit, Component, ContentChildren, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList\n} from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\nimport { BehaviorSubject, combineLatest, shareReplay, tap } from 'rxjs'\n\nimport { isNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedService, TabsDirection } from './tabbed.service'\n\n@Component({\n selector: 'seam-tabbed',\n templateUrl: './tabbed.component.html',\n styleUrls: ['./tabbed.component.scss'],\n providers: [ TabbedService ]\n})\nexport class TabbedComponent implements OnInit, AfterContentInit, OnDestroy {\n\n private _direction: TabsDirection = 'vertical'\n private _hideTabs = false\n\n @ContentChildren(TabbedItemComponent)\n set tabbedItems(val: QueryList<TabbedItemComponent> | undefined) {\n this._tabbedItems.next(val)\n }\n get tabbedItems(): QueryList<TabbedItemComponent> | undefined {\n return this._tabbedItems.value\n }\n private readonly _tabbedItems = new BehaviorSubject<QueryList<TabbedItemComponent> | undefined>(undefined)\n public readonly tabbedItems$ = this._tabbedItems.asObservable()\n\n @Output() tabChanged = new EventEmitter<TabbedItemComponent>()\n\n @Input()\n set direction(val: TabsDirection) {\n this._direction = val\n }\n get direction() {\n return this._direction\n }\n\n @Input()\n set hideTabs(val: boolean) {\n setTimeout(() => {\n this._hideTabs = val\n })\n }\n get hideTabs(): boolean {\n return this._hideTabs\n }\n\n @Input()\n public onlyRouteContent = false\n\n get selectedTab(): TabbedItemComponent | undefined {\n if (this.onlyRouteContent) {\n if (this.route.snapshot.children.length > 0) {\n const config = this.route.snapshot.children[0].routeConfig\n const childPath = config && config.path\n return this.tabbedItems?.find(t => t.name === childPath)\n }\n } else {\n return this._selectedTab.value\n }\n }\n set selectedTab(tab: TabbedItemComponent | undefined) { this._selectedTab.next(tab) }\n private readonly _selectedTab = new BehaviorSubject<TabbedItemComponent | undefined>(undefined)\n public readonly selectedTab$ = this._selectedTab.asObservable().pipe(\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n @Input()\n set activeTabName(val: string) {\n this._activeTabName.next(val)\n }\n private readonly _activeTabName = new BehaviorSubject<string | undefined>(undefined)\n private readonly activeTabName$ = this._activeTabName.asObservable()\n\n constructor(\n public tabbedService: TabbedService,\n private router: Router,\n private route: ActivatedRoute\n ) { }\n\n ngOnInit() {\n this.tabbedService.registerTab(this, 'main')\n }\n\n ngOnDestroy() {\n this.tabbedService.unregisterTab(this, 'main')\n }\n\n ngAfterContentInit() {\n combineLatest([ this.tabbedItems$, this.activeTabName$ ]).pipe(\n tap(([ _, activeTabName ]) => this.selectTab(activeTabName))\n ).subscribe()\n }\n\n /**\n *\n */\n public onClickTab(event: any, tab: TabbedItemComponent) {\n this.selectedTab = tab\n if (this.onlyRouteContent) {\n this.router.navigate([ tab.name ], { relativeTo: this.route })\n }\n this.tabChanged.emit(tab)\n }\n\n /**\n * TODO: Make more generic, so that the name isn't the only way\n * to select a tab\n */\n public selectTab(name?: string) {\n if (isNullOrUndefined(name) || name === this.selectedTab?.name) {\n return\n }\n\n const tab = this.tabbedItems?.find(t => t.name === name)\n if (tab) {\n this.selectedTab = tab\n }\n else {\n console.warn(`Tab with name '${name}' not found`)\n }\n }\n\n}\n","<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { FlexLayoutModule } from '@angular/flex-layout'\n\nimport { TabbedContentComponent } from './tabbed-content/tabbed-content.component'\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedComponent } from './tabbed.component'\n\nimport { TabbedTabContentDirective } from './directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from './directives/tabbed-tab.directive'\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FlexLayoutModule,\n ],\n declarations: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n TabbedContentComponent,\n],\n exports: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n ]\n})\nexport class TheSeamTabbedModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i1.TabbedService","i5.TabbedContentComponent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theseam/ui-common",
3
- "version": "0.4.22",
3
+ "version": "0.4.23",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^15.0.0",
6
6
  "@angular/common": "^15.0.0",
@@ -9,7 +9,10 @@ export declare class TabbedComponent implements OnInit, AfterContentInit, OnDest
9
9
  private route;
10
10
  private _direction;
11
11
  private _hideTabs;
12
- tabbedItems?: QueryList<TabbedItemComponent>;
12
+ set tabbedItems(val: QueryList<TabbedItemComponent> | undefined);
13
+ get tabbedItems(): QueryList<TabbedItemComponent> | undefined;
14
+ private readonly _tabbedItems;
15
+ readonly tabbedItems$: import("rxjs").Observable<QueryList<TabbedItemComponent> | undefined>;
13
16
  tabChanged: EventEmitter<TabbedItemComponent>;
14
17
  set direction(val: TabsDirection);
15
18
  get direction(): TabsDirection;
@@ -18,9 +21,11 @@ export declare class TabbedComponent implements OnInit, AfterContentInit, OnDest
18
21
  onlyRouteContent: boolean;
19
22
  get selectedTab(): TabbedItemComponent | undefined;
20
23
  set selectedTab(tab: TabbedItemComponent | undefined);
21
- private _selectedTab;
22
- private _activeTabNameTimeout;
24
+ private readonly _selectedTab;
25
+ readonly selectedTab$: import("rxjs").Observable<TabbedItemComponent | undefined>;
23
26
  set activeTabName(val: string);
27
+ private readonly _activeTabName;
28
+ private readonly activeTabName$;
24
29
  constructor(tabbedService: TabbedService, router: Router, route: ActivatedRoute);
25
30
  ngOnInit(): void;
26
31
  ngOnDestroy(): void;
@@ -33,7 +38,7 @@ export declare class TabbedComponent implements OnInit, AfterContentInit, OnDest
33
38
  * TODO: Make more generic, so that the name isn't the only way
34
39
  * to select a tab
35
40
  */
36
- selectTab(name: string): void;
41
+ selectTab(name?: string): void;
37
42
  static ɵfac: i0.ɵɵFactoryDeclaration<TabbedComponent, never>;
38
43
  static ɵcmp: i0.ɵɵComponentDeclaration<TabbedComponent, "seam-tabbed", never, { "direction": "direction"; "hideTabs": "hideTabs"; "onlyRouteContent": "onlyRouteContent"; "activeTabName": "activeTabName"; }, { "tabChanged": "tabChanged"; }, ["tabbedItems"], never, false, never>;
39
44
  }