@ngrdt/tabs 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/esm2022/index.mjs +9 -0
  2. package/esm2022/lib/components/tab/rdt-tab.component.mjs +145 -0
  3. package/esm2022/lib/components/tab-container/rdt-tab-container.component.mjs +270 -0
  4. package/esm2022/lib/directives/rdt-destroy-inactive.directive.mjs +14 -0
  5. package/esm2022/lib/directives/rdt-tab-controller.directive.mjs +366 -0
  6. package/esm2022/lib/rdt-tabs-models.mjs +4 -0
  7. package/esm2022/lib/rdt-tabs.module.mjs +38 -0
  8. package/esm2022/lib/strategies/auto-rdt-tabs-shortcut-strategy.mjs +64 -0
  9. package/esm2022/lib/strategies/rdt-tabs-shortcut-strategy.mjs +3 -0
  10. package/esm2022/lib/strategies/static-rdt-tabs-shortcut-strategy.mjs +23 -0
  11. package/esm2022/ngrdt-tabs.mjs +5 -0
  12. package/fesm2022/ngrdt-tabs.mjs +907 -0
  13. package/fesm2022/ngrdt-tabs.mjs.map +1 -0
  14. package/lib/components/tab/rdt-tab.component.d.ts +38 -0
  15. package/lib/components/tab-container/rdt-tab-container.component.d.ts +52 -0
  16. package/lib/directives/rdt-destroy-inactive.directive.d.ts +7 -0
  17. package/lib/directives/rdt-tab-controller.directive.d.ts +87 -0
  18. package/lib/rdt-tabs-models.d.ts +11 -0
  19. package/lib/rdt-tabs.module.d.ts +12 -0
  20. package/lib/strategies/auto-rdt-tabs-shortcut-strategy.d.ts +11 -0
  21. package/lib/strategies/rdt-tabs-shortcut-strategy.d.ts +16 -0
  22. package/lib/strategies/static-rdt-tabs-shortcut-strategy.d.ts +12 -0
  23. package/package.json +25 -4
  24. package/eslint.config.js +0 -44
  25. package/jest.config.ts +0 -21
  26. package/ng-package.json +0 -7
  27. package/project.json +0 -36
  28. package/src/lib/components/tab/rdt-tab.component.html +0 -3
  29. package/src/lib/components/tab/rdt-tab.component.ts +0 -158
  30. package/src/lib/components/tab-container/rdt-tab-container.component.html +0 -29
  31. package/src/lib/components/tab-container/rdt-tab-container.component.scss +0 -155
  32. package/src/lib/components/tab-container/rdt-tab-container.component.ts +0 -315
  33. package/src/lib/directives/rdt-destroy-inactive.directive.ts +0 -8
  34. package/src/lib/directives/rdt-tab-controller.directive.ts +0 -440
  35. package/src/lib/rdt-tabs-models.ts +0 -12
  36. package/src/lib/rdt-tabs.module.ts +0 -24
  37. package/src/lib/strategies/auto-rdt-tabs-shortcut-strategy.ts +0 -81
  38. package/src/lib/strategies/rdt-tabs-shortcut-strategy.ts +0 -20
  39. package/src/lib/strategies/static-rdt-tabs-shortcut-strategy.ts +0 -30
  40. package/src/test-setup.ts +0 -8
  41. package/tsconfig.json +0 -28
  42. package/tsconfig.lib.json +0 -17
  43. package/tsconfig.lib.prod.json +0 -9
  44. package/tsconfig.spec.json +0 -16
  45. /package/{src/index.ts → index.d.ts} +0 -0
@@ -0,0 +1,9 @@
1
+ export * from './lib/components/tab-container/rdt-tab-container.component';
2
+ export * from './lib/components/tab/rdt-tab.component';
3
+ export * from './lib/directives/rdt-destroy-inactive.directive';
4
+ export * from './lib/directives/rdt-tab-controller.directive';
5
+ export * from './lib/rdt-tabs-models';
6
+ export * from './lib/rdt-tabs.module';
7
+ export * from './lib/strategies/rdt-tabs-shortcut-strategy';
8
+ export * from './lib/strategies/static-rdt-tabs-shortcut-strategy';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9AbmdyZHQvdGFicy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLG9EQUFvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWItY29udGFpbmVyL3JkdC10YWItY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RhYi9yZHQtdGFiLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3JkdC1kZXN0cm95LWluYWN0aXZlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3JkdC10YWItY29udHJvbGxlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmR0LXRhYnMtbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JkdC10YWJzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdHJhdGVnaWVzL3JkdC10YWJzLXNob3J0Y3V0LXN0cmF0ZWd5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmF0ZWdpZXMvc3RhdGljLXJkdC10YWJzLXNob3J0Y3V0LXN0cmF0ZWd5JztcbiJdfQ==
@@ -0,0 +1,145 @@
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, DestroyRef, inject, Injector, Input, TemplateRef, ViewChild, } from '@angular/core';
2
+ import { RDT_GUARDED_COMPONENT, RdtContainerDirective, } from '@ngrdt/core';
3
+ import { RdtDestroyInactiveDirective } from '../../directives/rdt-destroy-inactive.directive';
4
+ import { RdtTabContainerComponent } from '../tab-container/rdt-tab-container.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@ngrdt/core";
7
+ export class RdtTabComponent {
8
+ injector = inject(Injector);
9
+ destroyRef = inject(DestroyRef);
10
+ _contDir;
11
+ get contDir() {
12
+ return this._contDir;
13
+ }
14
+ get stateId() {
15
+ if (this._stateId === null) {
16
+ if (this.label !== '') {
17
+ this._stateId = this.label;
18
+ }
19
+ else {
20
+ const index = this.tabContainer?.tabsList?.toArray().indexOf(this);
21
+ this._stateId = `tab-${index}`;
22
+ }
23
+ }
24
+ return this._stateId;
25
+ }
26
+ set stateId(value) {
27
+ this._stateId = value;
28
+ }
29
+ _stateId = null;
30
+ disabled = false;
31
+ visible = true;
32
+ label;
33
+ formAutofocus = true;
34
+ buttonClass = null;
35
+ implicitContent;
36
+ explicitContent;
37
+ get templateRef() {
38
+ return this.explicitContent ?? this.implicitContent;
39
+ }
40
+ tabContainer = inject(RdtTabContainerComponent);
41
+ //get forms() {
42
+ // return this.getChildrenByClass(RdtBaseFormComponent);
43
+ //}
44
+ get childContainers() {
45
+ return this.contDir.getChildrenByClass(RdtTabContainerComponent);
46
+ }
47
+ rdtIsActive() {
48
+ return (this.visible && !this.disabled && this.tabContainer.activeTab === this);
49
+ }
50
+ ngOnInit() {
51
+ this._contDir = this.injector.get(RdtContainerDirective);
52
+ }
53
+ ngOnChanges(changes) {
54
+ if ('label' in changes ||
55
+ 'value' in changes ||
56
+ 'visible' in changes ||
57
+ 'stateId' in changes) {
58
+ this.tabContainer.cd.markForCheck();
59
+ }
60
+ }
61
+ get isTopLevel() {
62
+ return this.tabContainer.isTopLevel;
63
+ }
64
+ getState() {
65
+ return {
66
+ id: this.stateId,
67
+ containerStates: this.childContainers.map((cont) => cont.getState()),
68
+ };
69
+ }
70
+ applyState(state) {
71
+ const states = [...state.containerStates];
72
+ const conts = this.childContainers;
73
+ const minLen = Math.min(states.length, conts.length);
74
+ for (let i = 0; i < minLen; i++) {
75
+ if (conts[i].stateId === states[i].id) {
76
+ conts[i].applyState(states[i]);
77
+ conts[i] = states[i] = null;
78
+ }
79
+ }
80
+ conts.forEach((cont, contI) => {
81
+ if (!cont) {
82
+ return;
83
+ }
84
+ for (let offset = 0; offset < states.length; offset++) {
85
+ const prev = contI - offset;
86
+ const next = contI + offset;
87
+ if (prev > 0 && states[prev]?.id === cont.stateId) {
88
+ cont.applyState(states[prev]);
89
+ states[prev] = null;
90
+ return;
91
+ }
92
+ else if (next < states.length && states[next]?.id === cont.stateId) {
93
+ cont.applyState(states[next]);
94
+ states[next] = null;
95
+ return;
96
+ }
97
+ }
98
+ });
99
+ }
100
+ focusForm() {
101
+ //TODO: getRdtAutofocusable(this.forms)?.rdtFocus();
102
+ }
103
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
104
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.7", type: RdtTabComponent, selector: "rdt-tab", inputs: { stateId: "stateId", disabled: ["disabled", "disabled", booleanAttribute], visible: ["visible", "visible", booleanAttribute], label: "label", formAutofocus: ["formAutofocus", "formAutofocus", booleanAttribute], buttonClass: "buttonClass" }, providers: [
105
+ {
106
+ provide: RDT_GUARDED_COMPONENT,
107
+ useExisting: RdtTabComponent,
108
+ },
109
+ ], queries: [{ propertyName: "explicitContent", first: true, predicate: RdtDestroyInactiveDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "implicitContent", first: true, predicate: TemplateRef, descendants: true, static: true }], usesOnChanges: true, hostDirectives: [{ directive: i1.RdtContainerDirective }], ngImport: i0, template: "<ng-template>\n <ng-content></ng-content>\n</ng-template>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
110
+ }
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtTabComponent, decorators: [{
112
+ type: Component,
113
+ args: [{ selector: 'rdt-tab', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
114
+ {
115
+ provide: RDT_GUARDED_COMPONENT,
116
+ useExisting: RdtTabComponent,
117
+ },
118
+ ], hostDirectives: [RdtContainerDirective], template: "<ng-template>\n <ng-content></ng-content>\n</ng-template>\n" }]
119
+ }], propDecorators: { stateId: [{
120
+ type: Input
121
+ }], disabled: [{
122
+ type: Input,
123
+ args: [{ transform: booleanAttribute }]
124
+ }], visible: [{
125
+ type: Input,
126
+ args: [{ transform: booleanAttribute }]
127
+ }], label: [{
128
+ type: Input,
129
+ args: [{ required: true }]
130
+ }], formAutofocus: [{
131
+ type: Input,
132
+ args: [{ transform: booleanAttribute }]
133
+ }], buttonClass: [{
134
+ type: Input
135
+ }], implicitContent: [{
136
+ type: ViewChild,
137
+ args: [TemplateRef, { static: true }]
138
+ }], explicitContent: [{
139
+ type: ContentChild,
140
+ args: [RdtDestroyInactiveDirective, {
141
+ read: TemplateRef,
142
+ static: true,
143
+ }]
144
+ }] } });
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvdGFicy9zcmMvbGliL2NvbXBvbmVudHMvdGFiL3JkdC10YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3RhYnMvc3JjL2xpYi9jb21wb25lbnRzL3RhYi9yZHQtdGFiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUlMLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixxQkFBcUIsR0FFdEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOENBQThDLENBQUM7OztBQWN4RixNQUFNLE9BQU8sZUFBZTtJQUNULFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVqQyxRQUFRLENBQXlCO0lBQ3pDLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1QsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzdCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFN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Z0IsNENBM0N6QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFdBQVcsRUFBRSxlQUFlO2FBQzdCO1NBQ0YsdUVBK0NhLDJCQUEyQiwyQkFDakMsV0FBVyw0RkFKUixXQUFXLDhJQzlFeEIsOERBR0E7OzJGRGtDYSxlQUFlO2tCQVozQixTQUFTOytCQUNFLFNBQVMsbUJBRUYsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixXQUFXLGlCQUFpQjt5QkFDN0I7cUJBQ0Ysa0JBQ2UsQ0FBQyxxQkFBcUIsQ0FBQzs4QkFZbkMsT0FBTztzQkFEVixLQUFLO2dCQWtCTixRQUFRO3NCQURQLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSXRDLE9BQU87c0JBRE4sS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJdEMsS0FBSztzQkFESixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJekIsYUFBYTtzQkFEWixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUl0QyxXQUFXO3NCQURWLEtBQUs7Z0JBSVcsZUFBZTtzQkFEL0IsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU92QixlQUFlO3NCQUovQixZQUFZO3VCQUFDLDJCQUEyQixFQUFFO3dCQUN6QyxJQUFJLEVBQUUsV0FBVzt3QkFDakIsTUFBTSxFQUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBib29sZWFuQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERlc3Ryb3lSZWYsXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBSRFRfR1VBUkRFRF9DT01QT05FTlQsXG4gIFJkdENvbnRhaW5lckRpcmVjdGl2ZSxcbiAgUmR0SXNBY3RpdmUsXG59IGZyb20gJ0BuZ3JkdC9jb3JlJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQG5ncmR0L3V0aWxzJztcbmltcG9ydCB7IFJkdERlc3Ryb3lJbmFjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcmR0LWRlc3Ryb3ktaW5hY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJkdFRhYkNvbnRhaW5lclN0YXRlLCBSZHRUYWJTdGF0ZSB9IGZyb20gJy4uLy4uL3JkdC10YWJzLW1vZGVscyc7XG5pbXBvcnQgeyBSZHRUYWJDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi90YWItY29udGFpbmVyL3JkdC10YWItY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JkdC10YWInLFxuICB0ZW1wbGF0ZVVybDogJy4vcmR0LXRhYi5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBSRFRfR1VBUkRFRF9DT01QT05FTlQsXG4gICAgICB1c2VFeGlzdGluZzogUmR0VGFiQ29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG4gIGhvc3REaXJlY3RpdmVzOiBbUmR0Q29udGFpbmVyRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgUmR0VGFiQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIFJkdElzQWN0aXZlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgcHJpdmF0ZSBfY29udERpciE6IFJkdENvbnRhaW5lckRpcmVjdGl2ZTtcbiAgZ2V0IGNvbnREaXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnREaXI7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgc3RhdGVJZCgpIHtcbiAgICBpZiAodGhpcy5fc3RhdGVJZCA9PT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMubGFiZWwgIT09ICcnKSB7XG4gICAgICAgIHRoaXMuX3N0YXRlSWQgPSB0aGlzLmxhYmVsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYkNvbnRhaW5lcj8udGFic0xpc3Q/LnRvQXJyYXkoKS5pbmRleE9mKHRoaXMpO1xuICAgICAgICB0aGlzLl9zdGF0ZUlkID0gYHRhYi0ke2luZGV4fWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zdGF0ZUlkO1xuICB9XG4gIHNldCBzdGF0ZUlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zdGF0ZUlkID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfc3RhdGVJZDogc3RyaW5nID0gbnVsbCBhcyB1bmtub3duIGFzIHN0cmluZztcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgdmlzaWJsZSA9IHRydWU7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgbGFiZWwhOiBzdHJpbmc7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGZvcm1BdXRvZm9jdXMgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGJ1dHRvbkNsYXNzOiBOdWxsYWJsZTxzdHJpbmc+ID0gbnVsbDtcblxuICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIHJlYWRvbmx5IGltcGxpY2l0Q29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZChSZHREZXN0cm95SW5hY3RpdmVEaXJlY3RpdmUsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHByaXZhdGUgcmVhZG9ubHkgZXhwbGljaXRDb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBnZXQgdGVtcGxhdGVSZWYoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhwbGljaXRDb250ZW50ID8/IHRoaXMuaW1wbGljaXRDb250ZW50O1xuICB9XG5cbiAgcmVhZG9ubHkgdGFiQ29udGFpbmVyID0gaW5qZWN0KFJkdFRhYkNvbnRhaW5lckNvbXBvbmVudCk7XG5cbiAgLy9nZXQgZm9ybXMoKSB7XG4gIC8vICByZXR1cm4gdGhpcy5nZXRDaGlsZHJlbkJ5Q2xhc3MoUmR0QmFzZUZvcm1Db21wb25lbnQpO1xuICAvL31cblxuICBnZXQgY2hpbGRDb250YWluZXJzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnREaXIuZ2V0Q2hpbGRyZW5CeUNsYXNzKFJkdFRhYkNvbnRhaW5lckNvbXBvbmVudCk7XG4gIH1cblxuICByZHRJc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy52aXNpYmxlICYmICF0aGlzLmRpc2FibGVkICYmIHRoaXMudGFiQ29udGFpbmVyLmFjdGl2ZVRhYiA9PT0gdGhpc1xuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9jb250RGlyID0gdGhpcy5pbmplY3Rvci5nZXQoUmR0Q29udGFpbmVyRGlyZWN0aXZlKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoXG4gICAgICAnbGFiZWwnIGluIGNoYW5nZXMgfHxcbiAgICAgICd2YWx1ZScgaW4gY2hhbmdlcyB8fFxuICAgICAgJ3Zpc2libGUnIGluIGNoYW5nZXMgfHxcbiAgICAgICdzdGF0ZUlkJyBpbiBjaGFuZ2VzXG4gICAgKSB7XG4gICAgICB0aGlzLnRhYkNvbnRhaW5lci5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNUb3BMZXZlbCgpIHtcbiAgICByZXR1cm4gdGhpcy50YWJDb250YWluZXIuaXNUb3BMZXZlbDtcbiAgfVxuXG4gIGdldFN0YXRlKCk6IFJkdFRhYlN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuc3RhdGVJZCxcbiAgICAgIGNvbnRhaW5lclN0YXRlczogdGhpcy5jaGlsZENvbnRhaW5lcnMubWFwKChjb250KSA9PiBjb250LmdldFN0YXRlKCkpLFxuICAgIH07XG4gIH1cblxuICBhcHBseVN0YXRlKHN0YXRlOiBSZHRUYWJTdGF0ZSkge1xuICAgIGNvbnN0IHN0YXRlczogKFJkdFRhYkNvbnRhaW5lclN0YXRlIHwgbnVsbClbXSA9IFsuLi5zdGF0ZS5jb250YWluZXJTdGF0ZXNdO1xuICAgIGNvbnN0IGNvbnRzOiAoUmR0VGFiQ29udGFpbmVyQ29tcG9uZW50IHwgbnVsbClbXSA9IHRoaXMuY2hpbGRDb250YWluZXJzO1xuICAgIGNvbnN0IG1pbkxlbiA9IE1hdGgubWluKHN0YXRlcy5sZW5ndGgsIGNvbnRzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pbkxlbjsgaSsrKSB7XG4gICAgICBpZiAoY29udHNbaV0hLnN0YXRlSWQgPT09IHN0YXRlc1tpXSEuaWQpIHtcbiAgICAgICAgY29udHNbaV0hLmFwcGx5U3RhdGUoc3RhdGVzW2ldISk7XG4gICAgICAgIGNvbnRzW2ldID0gc3RhdGVzW2ldID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgY29udHMuZm9yRWFjaCgoY29udCwgY29udEkpID0+IHtcbiAgICAgIGlmICghY29udCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBzdGF0ZXMubGVuZ3RoOyBvZmZzZXQrKykge1xuICAgICAgICBjb25zdCBwcmV2ID0gY29udEkgLSBvZmZzZXQ7XG4gICAgICAgIGNvbnN0IG5leHQgPSBjb250SSArIG9mZnNldDtcbiAgICAgICAgaWYgKHByZXYgPiAwICYmIHN0YXRlc1twcmV2XT8uaWQgPT09IGNvbnQuc3RhdGVJZCkge1xuICAgICAgICAgIGNvbnQuYXBwbHlTdGF0ZShzdGF0ZXNbcHJldl0hKTtcbiAgICAgICAgICBzdGF0ZXNbcHJldl0gPSBudWxsO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChuZXh0IDwgc3RhdGVzLmxlbmd0aCAmJiBzdGF0ZXNbbmV4dF0/LmlkID09PSBjb250LnN0YXRlSWQpIHtcbiAgICAgICAgICBjb250LmFwcGx5U3RhdGUoc3RhdGVzW25leHRdISk7XG4gICAgICAgICAgc3RhdGVzW25leHRdID0gbnVsbDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZvY3VzRm9ybSgpIHtcbiAgICAvL1RPRE86IGdldFJkdEF1dG9mb2N1c2FibGUodGhpcy5mb3Jtcyk/LnJkdEZvY3VzKCk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,270 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, DestroyRef, ElementRef, EventEmitter, HostBinding, HostListener, inject, Input, Output, QueryList, Renderer2, ViewChild, ViewChildren, ViewEncapsulation, } from '@angular/core';
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { canTransition$, RDT_GUARDED_COMPONENT, RdtChildDirective, } from '@ngrdt/core';
4
+ import { RdtHTMLUtils } from '@ngrdt/utils';
5
+ import { firstValueFrom, timer } from 'rxjs';
6
+ import { RdtTabControllerDirective } from '../../directives/rdt-tab-controller.directive';
7
+ import { RdtTabComponent } from '../tab/rdt-tab.component';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@ngrdt/core";
10
+ import * as i2 from "@angular/common";
11
+ export class RdtTabContainerComponent {
12
+ destroyRef = inject(DestroyRef);
13
+ stateId = null;
14
+ set value(val) {
15
+ if (this.activeTab && this.activeTab.stateId !== val) {
16
+ // TODO
17
+ //this.activeTab.onViewWillLeave();
18
+ }
19
+ this._value = val;
20
+ this.setCurrent();
21
+ }
22
+ get value() {
23
+ return this._value;
24
+ }
25
+ _value;
26
+ disabled = false;
27
+ formAutofocus = true;
28
+ panelPosition = 'top';
29
+ valueChange = new EventEmitter();
30
+ tabsList;
31
+ tabHeaderButtons;
32
+ tabContent;
33
+ _active = false;
34
+ get active() {
35
+ return this._active;
36
+ }
37
+ set active(value) {
38
+ this._active = value;
39
+ this.cd.markForCheck();
40
+ }
41
+ get isTopLevel() {
42
+ return !this.parentTab;
43
+ }
44
+ parentTab = inject(RdtTabComponent, { optional: true });
45
+ controller = inject(RdtTabControllerDirective, {
46
+ optional: true,
47
+ });
48
+ cd = inject(ChangeDetectorRef);
49
+ elRef = inject(ElementRef);
50
+ renderer = inject(Renderer2);
51
+ currentTemplate = null;
52
+ currentTab = null;
53
+ get classes() {
54
+ return `dp3-tab-container panel-${this.panelPosition}`;
55
+ }
56
+ get isHorizontal() {
57
+ return this.panelPosition === 'top' || this.panelPosition === 'bottom';
58
+ }
59
+ get isVertical() {
60
+ return !this.isHorizontal;
61
+ }
62
+ attrRole = 'tablist';
63
+ get hasNonDisabledTabs() {
64
+ return this.tabsList.some((tab) => !tab.disabled);
65
+ }
66
+ get activeTab() {
67
+ return this.getTabByValue(this.value);
68
+ }
69
+ getTabByValue(value) {
70
+ return this.tabsList?.find((tab) => tab.stateId === value);
71
+ }
72
+ ngAfterContentInit() {
73
+ this.controller?.onTabContainerChanges();
74
+ timer(0)
75
+ .pipe(takeUntilDestroyed(this.destroyRef))
76
+ .subscribe(() => this.setCurrent());
77
+ this.tabsList.changes
78
+ .pipe(takeUntilDestroyed(this.destroyRef))
79
+ .subscribe(() => {
80
+ this.controller?.onTabChanges();
81
+ this.setCurrent();
82
+ this.cd.markForCheck();
83
+ });
84
+ if (this.stateId === null && this.controller) {
85
+ const id = this.controller.getTabContainerIndex(this);
86
+ this.stateId = `tab-container-${id}`;
87
+ }
88
+ }
89
+ getState() {
90
+ return {
91
+ id: this.stateId,
92
+ value: this.value,
93
+ tabStates: this.tabsList.map((tab) => tab.getState()),
94
+ };
95
+ }
96
+ applyState(state) {
97
+ this.value = state.value;
98
+ this.scrollCurrentButtonIntoView();
99
+ const states = [...state.tabStates];
100
+ const tabs = this.tabsList.toArray();
101
+ const minLen = Math.min(states.length, tabs.length);
102
+ for (let i = 0; i < minLen; i++) {
103
+ if (tabs[i].stateId === states[i].id) {
104
+ tabs[i].applyState(states[i]);
105
+ tabs[i] = states[i] = null;
106
+ }
107
+ }
108
+ tabs.forEach((tab, tabI) => {
109
+ if (!tab) {
110
+ return;
111
+ }
112
+ for (let offset = 0; offset < states.length; offset++) {
113
+ const prev = tabI - offset;
114
+ const next = tabI + offset;
115
+ if (prev > 0 && states[prev]?.id === tab.stateId) {
116
+ tab.applyState(states[prev]);
117
+ states[prev] = null;
118
+ return;
119
+ }
120
+ else if (next < states.length && states[next]?.id === tab.stateId) {
121
+ tab.applyState(states[next]);
122
+ states[next] = null;
123
+ return;
124
+ }
125
+ }
126
+ });
127
+ }
128
+ scrollIntoView() {
129
+ this.elRef?.nativeElement?.scrollIntoView({ behavior: 'smooth' });
130
+ }
131
+ async activateTab(value) {
132
+ const nextTab = this.getTabByValue(value);
133
+ const can = await firstValueFrom(canTransition$(this.activeTab?.contDir, nextTab?.contDir));
134
+ if (can) {
135
+ this.value = value;
136
+ this.valueChange.emit(value);
137
+ }
138
+ }
139
+ scrollCurrentButtonIntoView() {
140
+ if (!this.tabsList || !this.tabHeaderButtons) {
141
+ return;
142
+ }
143
+ const tabIndex = this.tabsList
144
+ .toArray()
145
+ .findIndex((tab) => tab.stateId === this.value);
146
+ const buttonRef = this.tabHeaderButtons.get(tabIndex);
147
+ if (buttonRef) {
148
+ RdtHTMLUtils.scrollIntoViewHorizontallyWithinParent(buttonRef.nativeElement);
149
+ }
150
+ }
151
+ onClick(event) {
152
+ this.controller?.activateTabContainerFromClick(this, event.timeStamp);
153
+ }
154
+ setCurrent() {
155
+ if (!this.tabsList) {
156
+ return;
157
+ }
158
+ if (this.value == undefined) {
159
+ const firstEnabled = this.getFirstEnabledTab();
160
+ if (firstEnabled) {
161
+ this.value = firstEnabled.stateId;
162
+ }
163
+ else {
164
+ return;
165
+ }
166
+ }
167
+ const found = this.tabsList.find((tab) => tab.stateId === this.value);
168
+ if (!found) {
169
+ const first = this.getFirstEnabledTab();
170
+ if (first) {
171
+ this.activateTab(first.stateId);
172
+ return;
173
+ }
174
+ else {
175
+ console.error('Active tab not found.', this.tabsList.toArray(), this.value);
176
+ return;
177
+ }
178
+ }
179
+ this.setTab(found);
180
+ }
181
+ setTab(tab) {
182
+ if (this.currentTab !== tab) {
183
+ this.solidifyTabContentSize();
184
+ this.currentTab = tab;
185
+ this.currentTemplate = tab.templateRef;
186
+ this.cd.markForCheck();
187
+ //tab.onViewWillEnter();
188
+ }
189
+ if (this.formAutofocus && tab.formAutofocus) {
190
+ // Wait until template is attached to DOM
191
+ timer(0)
192
+ .pipe(takeUntilDestroyed(this.destroyRef), takeUntilDestroyed(tab.destroyRef))
193
+ .subscribe(() => tab.focusForm());
194
+ }
195
+ setTimeout(() => this.releaseTabContentSize());
196
+ }
197
+ // Swapping template in template outlet will cause large css recalc
198
+ // fix size to previous tab and in case they are the same size
199
+ // the recalc isn't noticable
200
+ solidifyTabContentSize() {
201
+ const el = this.tabContent.nativeElement;
202
+ const bb = el.getBoundingClientRect();
203
+ this.renderer.setStyle(el, 'width', bb.width + 'px');
204
+ this.renderer.setStyle(el, 'height', bb.height + 'px');
205
+ }
206
+ releaseTabContentSize() {
207
+ const el = this.tabContent.nativeElement;
208
+ this.renderer.removeStyle(el, 'width');
209
+ this.renderer.removeStyle(el, 'height');
210
+ }
211
+ getFirstEnabledTab() {
212
+ return this.tabsList.find((t) => !t.disabled);
213
+ }
214
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtTabContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
215
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: RdtTabContainerComponent, selector: "rdt-tab-container", inputs: { stateId: "stateId", value: "value", disabled: "disabled", formAutofocus: "formAutofocus", panelPosition: "panelPosition" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "click": "onClick($event)" }, properties: { "class.active": "this._active", "class": "this.classes", "class.panel-horizontal": "this.isHorizontal", "class.panel-vertical": "this.isVertical", "attr.role": "this.attrRole" } }, providers: [
216
+ {
217
+ provide: RDT_GUARDED_COMPONENT,
218
+ useExisting: RdtTabContainerComponent,
219
+ },
220
+ ], queries: [{ propertyName: "tabsList", predicate: RdtTabComponent }], viewQueries: [{ propertyName: "tabContent", first: true, predicate: ["tabContent"], descendants: true, static: true }, { propertyName: "tabHeaderButtons", predicate: ["headerButton"], descendants: true }], hostDirectives: [{ directive: i1.RdtChildDirective }], ngImport: i0, template: "<div class=\"tab-header-panel\" *ngIf=\"tabsList\">\n <button\n *ngFor=\"let tab of tabsList\"\n #headerButton\n class=\"px-2 py-1 tab-header-button\"\n (click)=\"activateTab(tab.stateId)\"\n [class.active]=\"value === tab.stateId\"\n [disabled]=\"tab.disabled\"\n [hidden]=\"!tab.visible\"\n role=\"tab\"\n [attr.aria-selected]=\"value === tab.stateId\"\n [attr.aria-controls]=\"'panel-' + tab.stateId\"\n [attr.tabindex]=\"value === tab.stateId ? 0 : -1\"\n [id]=\"'tab-' + tab.stateId\"\n [class]=\"tab.buttonClass\"\n type=\"button\"\n >\n {{ tab.label }}\n </button>\n</div>\n<div\n class=\"tab-content\"\n role=\"tabpanel\"\n [id]=\"'panel-' + value\"\n [attr.aria-labelledby]=\"'tab-' + value\"\n #tabContent\n>\n <ng-template [ngTemplateOutlet]=\"currentTemplate\"></ng-template>\n</div>\n", styles: ["dp3-tab-container{--tab-header-border-height: 2px;--tab-header-border-color: #e2e8f0;--tab-text-color: rgb(100, 116, 139);--active-tab-text-color: var(--primary-blue);--active-tab-border-color: var(--primary-blue);--disabled-tab-text-color: #b1b9c5;--tab-vertical-button-width: 200px;display:block;position:relative}dp3-tab-container.active>.tab-header-panel{background-color:var(--hover-blue)}dp3-tab-container.panel-vertical{display:flex}dp3-tab-container.panel-vertical>.tab-header-panel{position:absolute;top:0;height:100%;width:var(--tab-vertical-button-width);overflow-y:auto}dp3-tab-container.panel-vertical>.tab-header-panel>button{text-align:left;width:100%;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}dp3-tab-container.panel-vertical>.tab-content{width:calc(100% - var(--tab-vertical-button-width))}dp3-tab-container.panel-right{flex-direction:row-reverse}dp3-tab-container.panel-right>.tab-header-panel{right:0}dp3-tab-container.panel-left>.tab-header-panel{left:0}dp3-tab-container.panel-left>.tab-content{margin-left:var(--tab-vertical-button-width)}dp3-tab-container.panel-horizontal>.tab-header-panel{width:100%;white-space:nowrap;overflow-x:auto}dp3-tab-container.panel-bottom{display:flex;flex-direction:column-reverse}dp3-tab-container .tab-header-panel{position:relative;background-color:rgba(var(--primary-blue-rgb),.045)}dp3-tab-container .tab-header-panel:after{content:\"\";position:absolute;width:100%;height:var(--tab-header-border-height);background-color:var(--tab-header-border-color);margin-top:var(--tab-header-border-height);bottom:0;left:0;z-index:-1}dp3-tab-container .dot{position:absolute;width:.85rem;height:.85rem;padding:0 .1rem;background-color:var(--primary-blue);color:var(--white);font-size:x-small;border-radius:100%;top:.25rem;right:0rem}dp3-tab-container .tab-header-button{position:relative;background:none;font:inherit;outline:inherit;border:none;color:var(--tab-text-color);font-weight:700;font-size:1.1rem}dp3-tab-container .tab-header-button.active{position:relative;color:var(--active-tab-text-color)}dp3-tab-container .tab-header-button.active:after{content:\"\";position:absolute;width:100%;height:var(--tab-header-border-height);background-color:var(--active-tab-text-color);margin-top:var(--tab-header-border-height);bottom:0;left:0}dp3-tab-container .tab-header-button:disabled{color:var(--disabled-tab-text-color)}dp3-tab-container .tab-header-button.padding-small{padding-right:1.1rem!important}dp3-tab-container .tab-header-button.padding-large{padding-right:1.3rem!important}dp3-tab-container>.tab-content{min-width:0;width:100%;padding:.5rem}dp3-tab-container>.tab-content:has(>.dp3-tab-container){padding:0}dp3-tab-container>.tab-content>.dp3-tab-container{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
221
+ }
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtTabContainerComponent, decorators: [{
223
+ type: Component,
224
+ args: [{ selector: 'rdt-tab-container', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
225
+ {
226
+ provide: RDT_GUARDED_COMPONENT,
227
+ useExisting: RdtTabContainerComponent,
228
+ },
229
+ ], hostDirectives: [RdtChildDirective], encapsulation: ViewEncapsulation.None, template: "<div class=\"tab-header-panel\" *ngIf=\"tabsList\">\n <button\n *ngFor=\"let tab of tabsList\"\n #headerButton\n class=\"px-2 py-1 tab-header-button\"\n (click)=\"activateTab(tab.stateId)\"\n [class.active]=\"value === tab.stateId\"\n [disabled]=\"tab.disabled\"\n [hidden]=\"!tab.visible\"\n role=\"tab\"\n [attr.aria-selected]=\"value === tab.stateId\"\n [attr.aria-controls]=\"'panel-' + tab.stateId\"\n [attr.tabindex]=\"value === tab.stateId ? 0 : -1\"\n [id]=\"'tab-' + tab.stateId\"\n [class]=\"tab.buttonClass\"\n type=\"button\"\n >\n {{ tab.label }}\n </button>\n</div>\n<div\n class=\"tab-content\"\n role=\"tabpanel\"\n [id]=\"'panel-' + value\"\n [attr.aria-labelledby]=\"'tab-' + value\"\n #tabContent\n>\n <ng-template [ngTemplateOutlet]=\"currentTemplate\"></ng-template>\n</div>\n", styles: ["dp3-tab-container{--tab-header-border-height: 2px;--tab-header-border-color: #e2e8f0;--tab-text-color: rgb(100, 116, 139);--active-tab-text-color: var(--primary-blue);--active-tab-border-color: var(--primary-blue);--disabled-tab-text-color: #b1b9c5;--tab-vertical-button-width: 200px;display:block;position:relative}dp3-tab-container.active>.tab-header-panel{background-color:var(--hover-blue)}dp3-tab-container.panel-vertical{display:flex}dp3-tab-container.panel-vertical>.tab-header-panel{position:absolute;top:0;height:100%;width:var(--tab-vertical-button-width);overflow-y:auto}dp3-tab-container.panel-vertical>.tab-header-panel>button{text-align:left;width:100%;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}dp3-tab-container.panel-vertical>.tab-content{width:calc(100% - var(--tab-vertical-button-width))}dp3-tab-container.panel-right{flex-direction:row-reverse}dp3-tab-container.panel-right>.tab-header-panel{right:0}dp3-tab-container.panel-left>.tab-header-panel{left:0}dp3-tab-container.panel-left>.tab-content{margin-left:var(--tab-vertical-button-width)}dp3-tab-container.panel-horizontal>.tab-header-panel{width:100%;white-space:nowrap;overflow-x:auto}dp3-tab-container.panel-bottom{display:flex;flex-direction:column-reverse}dp3-tab-container .tab-header-panel{position:relative;background-color:rgba(var(--primary-blue-rgb),.045)}dp3-tab-container .tab-header-panel:after{content:\"\";position:absolute;width:100%;height:var(--tab-header-border-height);background-color:var(--tab-header-border-color);margin-top:var(--tab-header-border-height);bottom:0;left:0;z-index:-1}dp3-tab-container .dot{position:absolute;width:.85rem;height:.85rem;padding:0 .1rem;background-color:var(--primary-blue);color:var(--white);font-size:x-small;border-radius:100%;top:.25rem;right:0rem}dp3-tab-container .tab-header-button{position:relative;background:none;font:inherit;outline:inherit;border:none;color:var(--tab-text-color);font-weight:700;font-size:1.1rem}dp3-tab-container .tab-header-button.active{position:relative;color:var(--active-tab-text-color)}dp3-tab-container .tab-header-button.active:after{content:\"\";position:absolute;width:100%;height:var(--tab-header-border-height);background-color:var(--active-tab-text-color);margin-top:var(--tab-header-border-height);bottom:0;left:0}dp3-tab-container .tab-header-button:disabled{color:var(--disabled-tab-text-color)}dp3-tab-container .tab-header-button.padding-small{padding-right:1.1rem!important}dp3-tab-container .tab-header-button.padding-large{padding-right:1.3rem!important}dp3-tab-container>.tab-content{min-width:0;width:100%;padding:.5rem}dp3-tab-container>.tab-content:has(>.dp3-tab-container){padding:0}dp3-tab-container>.tab-content>.dp3-tab-container{width:100%;height:100%}\n"] }]
230
+ }], propDecorators: { stateId: [{
231
+ type: Input
232
+ }], value: [{
233
+ type: Input
234
+ }], disabled: [{
235
+ type: Input
236
+ }], formAutofocus: [{
237
+ type: Input
238
+ }], panelPosition: [{
239
+ type: Input
240
+ }], valueChange: [{
241
+ type: Output
242
+ }], tabsList: [{
243
+ type: ContentChildren,
244
+ args: [RdtTabComponent]
245
+ }], tabHeaderButtons: [{
246
+ type: ViewChildren,
247
+ args: ['headerButton']
248
+ }], tabContent: [{
249
+ type: ViewChild,
250
+ args: ['tabContent', { static: true }]
251
+ }], _active: [{
252
+ type: HostBinding,
253
+ args: ['class.active']
254
+ }], classes: [{
255
+ type: HostBinding,
256
+ args: ['class']
257
+ }], isHorizontal: [{
258
+ type: HostBinding,
259
+ args: ['class.panel-horizontal']
260
+ }], isVertical: [{
261
+ type: HostBinding,
262
+ args: ['class.panel-vertical']
263
+ }], attrRole: [{
264
+ type: HostBinding,
265
+ args: ['attr.role']
266
+ }], onClick: [{
267
+ type: HostListener,
268
+ args: ['click', ['$event']]
269
+ }] } });
270
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXRhYi1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3RhYnMvc3JjL2xpYi9jb21wb25lbnRzL3RhYi1jb250YWluZXIvcmR0LXRhYi1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3RhYnMvc3JjL2xpYi9jb21wb25lbnRzL3RhYi1jb250YWluZXIvcmR0LXRhYi1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBRVQsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUNMLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsaUJBQWlCLEdBQ2xCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBZ0IzRCxNQUFNLE9BQU8sd0JBQXdCO0lBQzFCLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFHekMsT0FBTyxHQUFRLElBQUksQ0FBQztJ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LEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFFLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLENBQUMsQ0FBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxPQUFPO1lBQ1QsQ0FBQztZQUNELEtBQUssSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7Z0JBQ3RELE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxNQUFNLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxNQUFNLENBQUM7Z0JBQzNCLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDakQsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBQztvQkFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDcEIsT0FBTztnQkFDVCxDQUFDO3FCQUFNLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxN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Z0JBSU4sV0FBVztzQkFEVixNQUFNO2dCQUlQLFFBQVE7c0JBRFAsZUFBZTt1QkFBQyxlQUFlO2dCQUloQyxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxjQUFjO2dCQUk1QixVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJakMsT0FBTztzQkFEZCxXQUFXO3VCQUFDLGNBQWM7Z0JBMEJ2QixPQUFPO3NCQURWLFdBQVc7dUJBQUMsT0FBTztnQkFNaEIsWUFBWTtzQkFEZixXQUFXO3VCQUFDLHdCQUF3QjtnQkFNakMsVUFBVTtzQkFEYixXQUFXO3VCQUFDLHNCQUFzQjtnQkFNM0IsUUFBUTtzQkFEZixXQUFXO3VCQUFDLFdBQVc7Z0JBNkdoQixPQUFPO3NCQURkLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIGNhblRyYW5zaXRpb24kLFxuICBSRFRfR1VBUkRFRF9DT01QT05FTlQsXG4gIFJkdENoaWxkRGlyZWN0aXZlLFxufSBmcm9tICdAbmdyZHQvY29yZSc7XG5pbXBvcnQgeyBSZHRIVE1MVXRpbHMgfSBmcm9tICdAbmdyZHQvdXRpbHMnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZHRUYWJDb250cm9sbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9yZHQtdGFiLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJkdFRhYkNvbnRhaW5lclN0YXRlLCBSZHRUYWJTdGF0ZSB9IGZyb20gJy4uLy4uL3JkdC10YWJzLW1vZGVscyc7XG5pbXBvcnQgeyBSZHRUYWJDb21wb25lbnQgfSBmcm9tICcuLi90YWIvcmR0LXRhYi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyZHQtdGFiLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZHQtdGFiLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JkdC10YWItY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBSRFRfR1VBUkRFRF9DT01QT05FTlQsXG4gICAgICB1c2VFeGlzdGluZzogUmR0VGFiQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG4gIGhvc3REaXJlY3RpdmVzOiBbUmR0Q2hpbGREaXJlY3RpdmVdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBSZHRUYWJDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBASW5wdXQoKVxuICBzdGF0ZUlkOiBhbnkgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWw6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmFjdGl2ZVRhYiAmJiB0aGlzLmFjdGl2ZVRhYi5zdGF0ZUlkICE9PSB2YWwpIHtcbiAgICAgIC8vIFRPRE9cbiAgICAgIC8vdGhpcy5hY3RpdmVUYWIub25WaWV3V2lsbExlYXZlKCk7XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlID0gdmFsO1xuICAgIHRoaXMuc2V0Q3VycmVudCgpO1xuICB9XG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWUhOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBmb3JtQXV0b2ZvY3VzID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwYW5lbFBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnIHwgJ3RvcCcgfCAnYm90dG9tJyA9ICd0b3AnO1xuXG4gIEBPdXRwdXQoKVxuICB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAQ29udGVudENoaWxkcmVuKFJkdFRhYkNvbXBvbmVudClcbiAgdGFic0xpc3QhOiBRdWVyeUxpc3Q8UmR0VGFiQ29tcG9uZW50PjtcblxuICBAVmlld0NoaWxkcmVuKCdoZWFkZXJCdXR0b24nKVxuICB0YWJIZWFkZXJCdXR0b25zPzogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PjtcblxuICBAVmlld0NoaWxkKCd0YWJDb250ZW50JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgdGFiQ29udGVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJylcbiAgcHJpdmF0ZSBfYWN0aXZlID0gZmFsc2U7XG4gIGdldCBhY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZTtcbiAgfVxuICBzZXQgYWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fYWN0aXZlID0gdmFsdWU7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBpc1RvcExldmVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5wYXJlbnRUYWI7XG4gIH1cblxuICByZWFkb25seSBwYXJlbnRUYWIgPSBpbmplY3QoUmR0VGFiQ29tcG9uZW50LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICByZWFkb25seSBjb250cm9sbGVyID0gaW5qZWN0KFJkdFRhYkNvbnRyb2xsZXJEaXJlY3RpdmUsIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG4gIHJlYWRvbmx5IGNkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcmVhZG9ubHkgZWxSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByb3RlY3RlZCByZWFkb25seSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuXG4gIHByb3RlY3RlZCBjdXJyZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgcHJvdGVjdGVkIGN1cnJlbnRUYWI6IFJkdFRhYkNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgY2xhc3NlcygpIHtcbiAgICByZXR1cm4gYGRwMy10YWItY29udGFpbmVyIHBhbmVsLSR7dGhpcy5wYW5lbFBvc2l0aW9ufWA7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBhbmVsLWhvcml6b250YWwnKVxuICBnZXQgaXNIb3Jpem9udGFsKCkge1xuICAgIHJldHVybiB0aGlzLnBhbmVsUG9zaXRpb24gPT09ICd0b3AnIHx8IHRoaXMucGFuZWxQb3NpdGlvbiA9PT0gJ2JvdHRvbSc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBhbmVsLXZlcnRpY2FsJylcbiAgZ2V0IGlzVmVydGljYWwoKSB7XG4gICAgcmV0dXJuICF0aGlzLmlzSG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgcHJpdmF0ZSBhdHRyUm9sZSA9ICd0YWJsaXN0JztcblxuICBnZXQgaGFzTm9uRGlzYWJsZWRUYWJzKCkge1xuICAgIHJldHVybiB0aGlzLnRhYnNMaXN0LnNvbWUoKHRhYikgPT4gIXRhYi5kaXNhYmxlZCk7XG4gIH1cblxuICBnZXQgYWN0aXZlVGFiKCkge1xuICAgIHJldHVybiB0aGlzLmdldFRhYkJ5VmFsdWUodGhpcy52YWx1ZSk7XG4gIH1cblxuICBnZXRUYWJCeVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50YWJzTGlzdD8uZmluZCgodGFiKSA9PiB0YWIuc3RhdGVJZCA9PT0gdmFsdWUpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuY29udHJvbGxlcj8ub25UYWJDb250YWluZXJDaGFuZ2VzKCk7XG4gICAgdGltZXIoMClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldEN1cnJlbnQoKSk7XG5cbiAgICB0aGlzLnRhYnNMaXN0LmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY29udHJvbGxlcj8ub25UYWJDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuc2V0Q3VycmVudCgpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5zdGF0ZUlkID09PSBudWxsICYmIHRoaXMuY29udHJvbGxlcikge1xuICAgICAgY29uc3QgaWQgPSB0aGlzLmNvbnRyb2xsZXIuZ2V0VGFiQ29udGFpbmVySW5kZXgodGhpcyk7XG4gICAgICB0aGlzLnN0YXRlSWQgPSBgdGFiLWNvbnRhaW5lci0ke2lkfWA7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RhdGUoKTogUmR0VGFiQ29udGFpbmVyU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5zdGF0ZUlkLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICB0YWJTdGF0ZXM6IHRoaXMudGFic0xpc3QubWFwKCh0YWIpID0+IHRhYi5nZXRTdGF0ZSgpKSxcbiAgICB9O1xuICB9XG5cbiAgYXBwbHlTdGF0ZShzdGF0ZTogUmR0VGFiQ29udGFpbmVyU3RhdGUpIHtcbiAgICB0aGlzLnZhbHVlID0gc3RhdGUudmFsdWU7XG4gICAgdGhpcy5zY3JvbGxDdXJyZW50QnV0dG9uSW50b1ZpZXcoKTtcblxuICAgIGNvbnN0IHN0YXRlczogKFJkdFRhYlN0YXRlIHwgbnVsbClbXSA9IFsuLi5zdGF0ZS50YWJTdGF0ZXNdO1xuICAgIGNvbnN0IHRhYnM6IChSZHRUYWJDb21wb25lbnQgfCBudWxsKVtdID0gdGhpcy50YWJzTGlzdC50b0FycmF5KCk7XG4gICAgY29uc3QgbWluTGVuID0gTWF0aC5taW4oc3RhdGVzLmxlbmd0aCwgdGFicy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaW5MZW47IGkrKykge1xuICAgICAgaWYgKHRhYnNbaV0hLnN0YXRlSWQgPT09IHN0YXRlc1tpXSEuaWQpIHtcbiAgICAgICAgdGFic1tpXSEuYXBwbHlTdGF0ZShzdGF0ZXNbaV0hKTtcbiAgICAgICAgdGFic1tpXSA9IHN0YXRlc1tpXSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIHRhYnMuZm9yRWFjaCgodGFiLCB0YWJJKSA9PiB7XG4gICAgICBpZiAoIXRhYikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBzdGF0ZXMubGVuZ3RoOyBvZmZzZXQrKykge1xuICAgICAgICBjb25zdCBwcmV2ID0gdGFiSSAtIG9mZnNldDtcbiAgICAgICAgY29uc3QgbmV4dCA9IHRhYkkgKyBvZmZzZXQ7XG4gICAgICAgIGlmIChwcmV2ID4gMCAmJiBzdGF0ZXNbcHJldl0/LmlkID09PSB0YWIuc3RhdGVJZCkge1xuICAgICAgICAgIHRhYi5hcHBseVN0YXRlKHN0YXRlc1twcmV2XSEpO1xuICAgICAgICAgIHN0YXRlc1twcmV2XSA9IG51bGw7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKG5leHQgPCBzdGF0ZXMubGVuZ3RoICYmIHN0YXRlc1tuZXh0XT8uaWQgPT09IHRhYi5zdGF0ZUlkKSB7XG4gICAgICAgICAgdGFiLmFwcGx5U3RhdGUoc3RhdGVzW25leHRdISk7XG4gICAgICAgICAgc3RhdGVzW25leHRdID0gbnVsbDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNjcm9sbEludG9WaWV3KCkge1xuICAgIHRoaXMuZWxSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICB9XG5cbiAgYXN5bmMgYWN0aXZhdGVUYWIodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IG5leHRUYWIgPSB0aGlzLmdldFRhYkJ5VmFsdWUodmFsdWUpO1xuXG4gICAgY29uc3QgY2FuID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICBjYW5UcmFuc2l0aW9uJCh0aGlzLmFjdGl2ZVRhYj8uY29udERpciwgbmV4dFRhYj8uY29udERpcilcbiAgICApO1xuICAgIGlmIChjYW4pIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsQ3VycmVudEJ1dHRvbkludG9WaWV3KCkge1xuICAgIGlmICghdGhpcy50YWJzTGlzdCB8fCAhdGhpcy50YWJIZWFkZXJCdXR0b25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhYkluZGV4ID0gdGhpcy50YWJzTGlzdFxuICAgICAgLnRvQXJyYXkoKVxuICAgICAgLmZpbmRJbmRleCgodGFiKSA9PiB0YWIuc3RhdGVJZCA9PT0gdGhpcy52YWx1ZSk7XG4gICAgY29uc3QgYnV0dG9uUmVmID0gdGhpcy50YWJIZWFkZXJCdXR0b25zLmdldCh0YWJJbmRleCk7XG4gICAgaWYgKGJ1dHRvblJlZikge1xuICAgICAgUmR0SFRNTFV0aWxzLnNjcm9sbEludG9WaWV3SG9yaXpvbnRhbGx5V2l0aGluUGFyZW50KFxuICAgICAgICBidXR0b25SZWYubmF0aXZlRWxlbWVudFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25DbGljayhldmVudDogUG9pbnRlckV2ZW50KSB7XG4gICAgdGhpcy5jb250cm9sbGVyPy5hY3RpdmF0ZVRhYkNvbnRhaW5lckZyb21DbGljayh0aGlzLCBldmVudC50aW1lU3RhbXApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDdXJyZW50KCkge1xuICAgIGlmICghdGhpcy50YWJzTGlzdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWx1ZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGZpcnN0RW5hYmxlZCA9IHRoaXMuZ2V0Rmlyc3RFbmFibGVkVGFiKCk7XG4gICAgICBpZiAoZmlyc3RFbmFibGVkKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBmaXJzdEVuYWJsZWQuc3RhdGVJZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmb3VuZCA9IHRoaXMudGFic0xpc3QuZmluZCgodGFiKSA9PiB0YWIuc3RhdGVJZCA9PT0gdGhpcy52YWx1ZSk7XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgY29uc3QgZmlyc3QgPSB0aGlzLmdldEZpcnN0RW5hYmxlZFRhYigpO1xuICAgICAgaWYgKGZpcnN0KSB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVUYWIoZmlyc3Quc3RhdGVJZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgJ0FjdGl2ZSB0YWIgbm90IGZvdW5kLicsXG4gICAgICAgICAgdGhpcy50YWJzTGlzdC50b0FycmF5KCksXG4gICAgICAgICAgdGhpcy52YWx1ZVxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2V0VGFiKGZvdW5kKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFiKHRhYjogUmR0VGFiQ29tcG9uZW50KSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFRhYiAhPT0gdGFiKSB7XG4gICAgICB0aGlzLnNvbGlkaWZ5VGFiQ29udGVudFNpemUoKTtcbiAgICAgIHRoaXMuY3VycmVudFRhYiA9IHRhYjtcbiAgICAgIHRoaXMuY3VycmVudFRlbXBsYXRlID0gdGFiLnRlbXBsYXRlUmVmO1xuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIC8vdGFiLm9uVmlld1dpbGxFbnRlcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm1BdXRvZm9jdXMgJiYgdGFiLmZvcm1BdXRvZm9jdXMpIHtcbiAgICAgIC8vIFdhaXQgdW50aWwgdGVtcGxhdGUgaXMgYXR0YWNoZWQgdG8gRE9NXG4gICAgICB0aW1lcigwKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGFiLmRlc3Ryb3lSZWYpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0YWIuZm9jdXNGb3JtKCkpO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZWxlYXNlVGFiQ29udGVudFNpemUoKSk7XG4gIH1cblxuICAvLyBTd2FwcGluZyB0ZW1wbGF0ZSBpbiB0ZW1wbGF0ZSBvdXRsZXQgd2lsbCBjYXVzZSBsYXJnZSBjc3MgcmVjYWxjXG4gIC8vIGZpeCBzaXplIHRvIHByZXZpb3VzIHRhYiBhbmQgaW4gY2FzZSB0aGV5IGFyZSB0aGUgc2FtZSBzaXplXG4gIC8vIHRoZSByZWNhbGMgaXNuJ3Qgbm90aWNhYmxlXG4gIHByaXZhdGUgc29saWRpZnlUYWJDb250ZW50U2l6ZSgpIHtcbiAgICBjb25zdCBlbCA9IHRoaXMudGFiQ29udGVudC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGJiID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbCwgJ3dpZHRoJywgYmIud2lkdGggKyAncHgnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAnaGVpZ2h0JywgYmIuaGVpZ2h0ICsgJ3B4Jyk7XG4gIH1cblxuICBwcml2YXRlIHJlbGVhc2VUYWJDb250ZW50U2l6ZSgpIHtcbiAgICBjb25zdCBlbCA9IHRoaXMudGFiQ29udGVudC5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoZWwsICd3aWR0aCcpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoZWwsICdoZWlnaHQnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rmlyc3RFbmFibGVkVGFiKCkge1xuICAgIHJldHVybiB0aGlzLnRhYnNMaXN0LmZpbmQoKHQpID0+ICF0LmRpc2FibGVkKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRhYi1oZWFkZXItcGFuZWxcIiAqbmdJZj1cInRhYnNMaXN0XCI+XG4gIDxidXR0b25cbiAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNMaXN0XCJcbiAgICAjaGVhZGVyQnV0dG9uXG4gICAgY2xhc3M9XCJweC0yIHB5LTEgdGFiLWhlYWRlci1idXR0b25cIlxuICAgIChjbGljayk9XCJhY3RpdmF0ZVRhYih0YWIuc3RhdGVJZClcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwidmFsdWUgPT09IHRhYi5zdGF0ZUlkXCJcbiAgICBbZGlzYWJsZWRdPVwidGFiLmRpc2FibGVkXCJcbiAgICBbaGlkZGVuXT1cIiF0YWIudmlzaWJsZVwiXG4gICAgcm9sZT1cInRhYlwiXG4gICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJ2YWx1ZSA9PT0gdGFiLnN0YXRlSWRcIlxuICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiJ3BhbmVsLScgKyB0YWIuc3RhdGVJZFwiXG4gICAgW2F0dHIudGFiaW5kZXhdPVwidmFsdWUgPT09IHRhYi5zdGF0ZUlkID8gMCA6IC0xXCJcbiAgICBbaWRdPVwiJ3RhYi0nICsgdGFiLnN0YXRlSWRcIlxuICAgIFtjbGFzc109XCJ0YWIuYnV0dG9uQ2xhc3NcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAge3sgdGFiLmxhYmVsIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG48ZGl2XG4gIGNsYXNzPVwidGFiLWNvbnRlbnRcIlxuICByb2xlPVwidGFicGFuZWxcIlxuICBbaWRdPVwiJ3BhbmVsLScgKyB2YWx1ZVwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCIndGFiLScgKyB2YWx1ZVwiXG4gICN0YWJDb250ZW50XG4+XG4gIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXJyZW50VGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,14 @@
1
+ import { Directive, inject, TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class RdtDestroyInactiveDirective {
4
+ template = inject(TemplateRef);
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtDestroyInactiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: RdtDestroyInactiveDirective, selector: "[rdtDestroyInactive]", ngImport: i0 });
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtDestroyInactiveDirective, decorators: [{
9
+ type: Directive,
10
+ args: [{
11
+ selector: '[rdtDestroyInactive]',
12
+ }]
13
+ }] });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWRlc3Ryb3ktaW5hY3RpdmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3RhYnMvc3JjL2xpYi9kaXJlY3RpdmVzL3JkdC1kZXN0cm95LWluYWN0aXZlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSy9ELE1BQU0sT0FBTywyQkFBMkI7SUFDdEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQzt1R0FEcEMsMkJBQTJCOzJGQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBSHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3JkdERlc3Ryb3lJbmFjdGl2ZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBSZHREZXN0cm95SW5hY3RpdmVEaXJlY3RpdmUge1xuICBwdWJsaWMgcmVhZG9ubHkgdGVtcGxhdGUgPSBpbmplY3QoVGVtcGxhdGVSZWYpO1xufVxuIl19