@valtimo/dossier 12.0.0 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/dossier-detail/dossier-detail.component.mjs +11 -7
- package/esm2022/lib/components/dossier-detail/tab/not-found/not-found.component.mjs +1 -1
- package/esm2022/lib/components/dossier-detail/tab/notes/notes.component.mjs +1 -1
- package/esm2022/lib/components/dossier-detail/tab/progress/progress.component.mjs +1 -1
- package/esm2022/lib/components/dossier-detail/tab/summary/summary.component.mjs +13 -78
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.mjs +192 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.mjs +80 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.mjs +116 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.mjs +67 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.mjs +126 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.mjs +154 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/widgets-container/widgets-container.component.mjs +74 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/widgets.component.mjs +74 -0
- package/esm2022/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.mjs +131 -0
- package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +4 -4
- package/esm2022/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.mjs +47 -7
- package/esm2022/lib/constants/case-widget.constants.mjs +19 -0
- package/esm2022/lib/constants/custom-case-widget-token.mjs +19 -0
- package/esm2022/lib/constants/index.mjs +3 -1
- package/esm2022/lib/dossier.module.mjs +11 -3
- package/esm2022/lib/models/case-widget-content.model.mjs +17 -0
- package/esm2022/lib/models/case-widget-display.model.mjs +13 -0
- package/esm2022/lib/models/case-widget.model.mjs +25 -0
- package/esm2022/lib/models/index.mjs +6 -3
- package/esm2022/lib/models/tab-api.model.mjs +2 -1
- package/esm2022/lib/models/tabs.model.mjs +16 -7
- package/esm2022/lib/services/dossier-tab-api.service.mjs +17 -11
- package/esm2022/lib/services/dossier-tab.service.mjs +39 -11
- package/esm2022/lib/services/dossier-widgets-api.service.mjs +46 -0
- package/esm2022/lib/services/dossier-widgets-layout.service.mjs +97 -0
- package/esm2022/lib/services/index.mjs +3 -1
- package/fesm2022/valtimo-dossier.mjs +1383 -233
- package/fesm2022/valtimo-dossier.mjs.map +1 -1
- package/lib/components/dossier-detail/dossier-detail.component.d.ts +2 -0
- package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/summary/summary.component.d.ts +7 -26
- package/lib/components/dossier-detail/tab/summary/summary.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.d.ts +47 -0
- package/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.d.ts +22 -0
- package/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.d.ts +31 -0
- package/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.d.ts +21 -0
- package/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.d.ts +31 -0
- package/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.d.ts +43 -0
- package/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/components/widgets-container/widgets-container.component.d.ts +20 -0
- package/lib/components/dossier-detail/tab/widgets/components/widgets-container/widgets-container.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/widgets.component.d.ts +25 -0
- package/lib/components/dossier-detail/tab/widgets/widgets.component.d.ts.map +1 -0
- package/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.d.ts +26 -0
- package/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.d.ts.map +1 -0
- package/lib/components/dossier-list/dossier-list.component.d.ts +1 -1
- package/lib/components/dossier-list/dossier-list.component.d.ts.map +1 -1
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts +12 -4
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +1 -1
- package/lib/constants/case-widget.constants.d.ts +4 -0
- package/lib/constants/case-widget.constants.d.ts.map +1 -0
- package/lib/constants/custom-case-widget-token.d.ts +5 -0
- package/lib/constants/custom-case-widget-token.d.ts.map +1 -0
- package/lib/constants/index.d.ts +2 -0
- package/lib/constants/index.d.ts.map +1 -1
- package/lib/dossier.module.d.ts +3 -1
- package/lib/dossier.module.d.ts.map +1 -1
- package/lib/models/case-widget-content.model.d.ts +51 -0
- package/lib/models/case-widget-content.model.d.ts.map +1 -0
- package/lib/models/case-widget-display.model.d.ts +44 -0
- package/lib/models/case-widget-display.model.d.ts.map +1 -0
- package/lib/models/case-widget.model.d.ts +105 -0
- package/lib/models/case-widget.model.d.ts.map +1 -0
- package/lib/models/index.d.ts +5 -2
- package/lib/models/index.d.ts.map +1 -1
- package/lib/models/tab-api.model.d.ts +13 -2
- package/lib/models/tab-api.model.d.ts.map +1 -1
- package/lib/models/tabs.model.d.ts +6 -1
- package/lib/models/tabs.model.d.ts.map +1 -1
- package/lib/services/dossier-tab-api.service.d.ts +6 -7
- package/lib/services/dossier-tab-api.service.d.ts.map +1 -1
- package/lib/services/dossier-tab.service.d.ts +12 -2
- package/lib/services/dossier-tab.service.d.ts.map +1 -1
- package/lib/services/dossier-widgets-api.service.d.ts +15 -0
- package/lib/services/dossier-widgets-api.service.d.ts.map +1 -0
- package/lib/services/dossier-widgets-layout.service.d.ts +35 -0
- package/lib/services/dossier-widgets-layout.service.d.ts.map +1 -0
- package/lib/services/index.d.ts +2 -0
- package/lib/services/index.d.ts.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { CommonModule } from '@angular/common';
|
|
17
|
+
import { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';
|
|
18
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
19
|
+
import { CARBON_THEME, CarbonListModule, CurrentCarbonTheme, } from '@valtimo/components';
|
|
20
|
+
import { LoadingModule, TilesModule } from 'carbon-components-angular';
|
|
21
|
+
import { BehaviorSubject, catchError, combineLatest, filter, map, of, Subscription, switchMap, tap, } from 'rxjs';
|
|
22
|
+
import { CaseWidgetType } from '../../../../../../models';
|
|
23
|
+
import { WidgetCustomComponent } from '../custom/widget-custom.component';
|
|
24
|
+
import { WidgetFieldComponent } from '../field/widget-field.component';
|
|
25
|
+
import { WidgetFormioComponent } from '../formio/widget-formio.component';
|
|
26
|
+
import { WidgetTableComponent } from '../table/widget-table.component';
|
|
27
|
+
import { WidgetCollectionComponent } from '../collection/widget-collection.component';
|
|
28
|
+
import { WIDGET_HEIGHT_1X } from '../../../../../../constants';
|
|
29
|
+
import * as i0 from "@angular/core";
|
|
30
|
+
import * as i1 from "../../../../../../services";
|
|
31
|
+
import * as i2 from "@angular/router";
|
|
32
|
+
import * as i3 from "@valtimo/components";
|
|
33
|
+
import * as i4 from "@angular/common";
|
|
34
|
+
import * as i5 from "@ngx-translate/core";
|
|
35
|
+
export class WidgetBlockComponent {
|
|
36
|
+
set widget(value) {
|
|
37
|
+
this._widgetUuid = value.uuid;
|
|
38
|
+
this._widget$.next(value);
|
|
39
|
+
}
|
|
40
|
+
get widget$() {
|
|
41
|
+
return this._widget$.pipe(filter(widget => widget !== null));
|
|
42
|
+
}
|
|
43
|
+
get _viewContainerRef$() {
|
|
44
|
+
return this._viewContainerRefSubject$.pipe(filter(ref => !!ref));
|
|
45
|
+
}
|
|
46
|
+
constructor(dossierWidgetsLayoutService, dossierTabService, route, widgetsApiService, cdsThemeService, renderer, viewRef) {
|
|
47
|
+
this.dossierWidgetsLayoutService = dossierWidgetsLayoutService;
|
|
48
|
+
this.dossierTabService = dossierTabService;
|
|
49
|
+
this.route = route;
|
|
50
|
+
this.widgetsApiService = widgetsApiService;
|
|
51
|
+
this.cdsThemeService = cdsThemeService;
|
|
52
|
+
this.renderer = renderer;
|
|
53
|
+
this.viewRef = viewRef;
|
|
54
|
+
this._widget$ = new BehaviorSubject(null);
|
|
55
|
+
this._viewContainerRefSubject$ = new BehaviorSubject(null);
|
|
56
|
+
this._contentHeight$ = new BehaviorSubject(0);
|
|
57
|
+
this.blockHeightPx$ = combineLatest([
|
|
58
|
+
this._contentHeight$,
|
|
59
|
+
this._viewContainerRef$,
|
|
60
|
+
]).pipe(filter(([contentHeight]) => contentHeight !== 0), tap(([contentHeight, viewRef]) => {
|
|
61
|
+
const blockHeight = Math.ceil((contentHeight + 16) / WIDGET_HEIGHT_1X) * WIDGET_HEIGHT_1X;
|
|
62
|
+
this.renderer.setStyle(viewRef.element.nativeElement, 'height', `${blockHeight}px`);
|
|
63
|
+
this.dossierWidgetsLayoutService.triggerMuuriLayout();
|
|
64
|
+
}));
|
|
65
|
+
this.blockWidthPercentage$ = combineLatest([
|
|
66
|
+
this.dossierWidgetsLayoutService.amountOfColumns$,
|
|
67
|
+
this.widget$,
|
|
68
|
+
this._viewContainerRef$,
|
|
69
|
+
]).pipe(tap(([amountOfColumns, widget, viewRef]) => {
|
|
70
|
+
const percentage = widget.width > amountOfColumns ? 100 : (widget.width / amountOfColumns) * 100;
|
|
71
|
+
this.renderer.setStyle(viewRef.element.nativeElement, 'width', `${percentage}%`);
|
|
72
|
+
this.dossierWidgetsLayoutService.triggerMuuriLayout();
|
|
73
|
+
}));
|
|
74
|
+
this.CaseWidgetType = CaseWidgetType;
|
|
75
|
+
this.documentId$ = this.route.params.pipe(map(params => params?.documentId), filter(documentId => !!documentId));
|
|
76
|
+
this.tabKey$ = this.dossierTabService.activeTabKey$;
|
|
77
|
+
this.widgetData$ = combineLatest([
|
|
78
|
+
this.widget$,
|
|
79
|
+
this.tabKey$,
|
|
80
|
+
this.documentId$,
|
|
81
|
+
]).pipe(switchMap(([widget, tabkey, documentId]) =>
|
|
82
|
+
// custom component and formio widgets do not fetch additional data
|
|
83
|
+
widget.type === CaseWidgetType.CUSTOM || widget.type === CaseWidgetType.FORMIO
|
|
84
|
+
? of({})
|
|
85
|
+
: this.widgetsApiService.getWidgetData(documentId, tabkey, widget.key, widget.type === CaseWidgetType.TABLE || widget.type === CaseWidgetType.COLLECTION
|
|
86
|
+
? this.getPageSizeParam(widget)
|
|
87
|
+
: undefined)), tap(() => {
|
|
88
|
+
this.dossierWidgetsLayoutService.setCaseWidgetDataLoaded(this._widgetUuid);
|
|
89
|
+
}), catchError((error) => {
|
|
90
|
+
if (error.status === 404)
|
|
91
|
+
this.dossierWidgetsLayoutService.setCaseWidgetDataLoaded(this._widgetUuid);
|
|
92
|
+
return of(null);
|
|
93
|
+
}));
|
|
94
|
+
this.theme$ = combineLatest([this.cdsThemeService.currentTheme$, this.widget$]).pipe(map(([currentTheme, widgetConfiguration]) => {
|
|
95
|
+
return currentTheme === CurrentCarbonTheme.G10
|
|
96
|
+
? widgetConfiguration.highContrast
|
|
97
|
+
? CARBON_THEME.G100
|
|
98
|
+
: CARBON_THEME.G10
|
|
99
|
+
: widgetConfiguration.highContrast
|
|
100
|
+
? CARBON_THEME.WHITE
|
|
101
|
+
: CARBON_THEME.G90;
|
|
102
|
+
}));
|
|
103
|
+
this._subscriptions = new Subscription();
|
|
104
|
+
}
|
|
105
|
+
ngAfterViewInit() {
|
|
106
|
+
this._viewContainerRefSubject$.next(this.viewRef);
|
|
107
|
+
this.openContentHeightObserver();
|
|
108
|
+
}
|
|
109
|
+
ngOnDestroy() {
|
|
110
|
+
this._subscriptions.unsubscribe();
|
|
111
|
+
this._observer?.disconnect();
|
|
112
|
+
}
|
|
113
|
+
openContentHeightObserver() {
|
|
114
|
+
this._observer = new ResizeObserver(event => {
|
|
115
|
+
this.observerMutation(event);
|
|
116
|
+
});
|
|
117
|
+
this._observer.observe(this._widgetBlockContentRef.nativeElement);
|
|
118
|
+
}
|
|
119
|
+
observerMutation(event) {
|
|
120
|
+
const widgetContentHeight = event[0]?.borderBoxSize[0]?.blockSize;
|
|
121
|
+
if (typeof widgetContentHeight === 'number' && widgetContentHeight !== 0) {
|
|
122
|
+
this._contentHeight$.next(widgetContentHeight);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
getPageSizeParam(widgetConfiguration) {
|
|
126
|
+
return `size=${widgetConfiguration.properties.defaultPageSize}`;
|
|
127
|
+
}
|
|
128
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetBlockComponent, deps: [{ token: i1.DossierWidgetsLayoutService }, { token: i1.DossierTabService }, { token: i2.ActivatedRoute }, { token: i1.DossierWidgetsApiService }, { token: i3.CdsThemeService }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
129
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: WidgetBlockComponent, isStandalone: true, selector: "valtimo-dossier-widget-block", inputs: { widget: "widget" }, viewQueries: [{ propertyName: "_widgetBlockContentRef", first: true, predicate: ["widgetBlockContent"], descendants: true }, { propertyName: "_widgetBlockRef", first: true, predicate: ["widgetBlock"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n documentId: documentId$ | async,\n tabKey: tabKey$ | async,\n widgetConfiguration: widget$ | async,\n widgetData: widgetData$ | async,\n theme: theme$ | async,\n blockHeightPx: blockHeightPx$ | async,\n blockWidthPercentage: blockWidthPercentage$ | async\n } as obs\"\n>\n <div #widgetBlock class=\"widget-block\" [attr.data-carbon-theme]=\"obs.theme\">\n <div #widgetBlockContent class=\"widget-block__content\">\n @if (obs.widgetData) {\n @switch (obs.widgetConfiguration.type) {\n @case (CaseWidgetType.TABLE) {\n <valtimo-widget-table\n [documentId]=\"obs.documentId\"\n [tabKey]=\"obs.tabKey\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-table>\n }\n\n @case (CaseWidgetType.COLLECTION) {\n <valtimo-widget-collection\n [documentId]=\"obs.documentId\"\n [tabKey]=\"obs.tabKey\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-collection>\n }\n\n @case (CaseWidgetType.CUSTOM) {\n <valtimo-widget-custom [widgetConfig]=\"obs.widgetConfiguration\"></valtimo-widget-custom>\n }\n\n @case (CaseWidgetType.FIELDS) {\n <valtimo-widget-field\n [collapseVertically]=\"true\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-field>\n }\n\n @case (CaseWidgetType.FORMIO) {\n <valtimo-widget-formio\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [documentId]=\"obs.documentId\"\n ></valtimo-widget-formio>\n }\n\n @default {\n <div class=\"widget-block__not-available\">\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noWidget' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n </div>\n }\n }\n } @else {\n <div class=\"widget-block__not-available\">\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n </div>\n }\n </div>\n </div>\n</ng-container>\n", styles: [":host{display:block;position:absolute}.widget-block{width:100%;height:100%;box-sizing:border-box;padding:8px;overflow-wrap:break-word;background-color:var(--cds-layer-01);background-clip:content-box}.widget-block__not-available{padding:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: WidgetTableComponent, selector: "valtimo-widget-table", inputs: ["documentId", "tabKey", "widgetConfiguration", "widgetData"] }, { kind: "component", type: WidgetCustomComponent, selector: "valtimo-widget-custom", inputs: ["widgetConfig"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i3.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TilesModule }, { kind: "component", type: WidgetFieldComponent, selector: "valtimo-widget-field", inputs: ["collapseVertically", "widgetConfiguration", "widgetData"] }, { kind: "component", type: WidgetFormioComponent, selector: "valtimo-widget-formio", inputs: ["documentId", "widgetConfiguration"] }, { kind: "component", type: WidgetCollectionComponent, selector: "valtimo-widget-collection", inputs: ["documentId", "tabKey", "widgetConfiguration", "widgetData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
130
|
+
}
|
|
131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetBlockComponent, decorators: [{
|
|
132
|
+
type: Component,
|
|
133
|
+
args: [{ selector: 'valtimo-dossier-widget-block', standalone: true, imports: [
|
|
134
|
+
CommonModule,
|
|
135
|
+
LoadingModule,
|
|
136
|
+
WidgetTableComponent,
|
|
137
|
+
WidgetCustomComponent,
|
|
138
|
+
CarbonListModule,
|
|
139
|
+
TranslateModule,
|
|
140
|
+
TilesModule,
|
|
141
|
+
WidgetFieldComponent,
|
|
142
|
+
WidgetFormioComponent,
|
|
143
|
+
WidgetCollectionComponent,
|
|
144
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n documentId: documentId$ | async,\n tabKey: tabKey$ | async,\n widgetConfiguration: widget$ | async,\n widgetData: widgetData$ | async,\n theme: theme$ | async,\n blockHeightPx: blockHeightPx$ | async,\n blockWidthPercentage: blockWidthPercentage$ | async\n } as obs\"\n>\n <div #widgetBlock class=\"widget-block\" [attr.data-carbon-theme]=\"obs.theme\">\n <div #widgetBlockContent class=\"widget-block__content\">\n @if (obs.widgetData) {\n @switch (obs.widgetConfiguration.type) {\n @case (CaseWidgetType.TABLE) {\n <valtimo-widget-table\n [documentId]=\"obs.documentId\"\n [tabKey]=\"obs.tabKey\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-table>\n }\n\n @case (CaseWidgetType.COLLECTION) {\n <valtimo-widget-collection\n [documentId]=\"obs.documentId\"\n [tabKey]=\"obs.tabKey\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-collection>\n }\n\n @case (CaseWidgetType.CUSTOM) {\n <valtimo-widget-custom [widgetConfig]=\"obs.widgetConfiguration\"></valtimo-widget-custom>\n }\n\n @case (CaseWidgetType.FIELDS) {\n <valtimo-widget-field\n [collapseVertically]=\"true\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-field>\n }\n\n @case (CaseWidgetType.FORMIO) {\n <valtimo-widget-formio\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [documentId]=\"obs.documentId\"\n ></valtimo-widget-formio>\n }\n\n @default {\n <div class=\"widget-block__not-available\">\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noWidget' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n </div>\n }\n }\n } @else {\n <div class=\"widget-block__not-available\">\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n </div>\n }\n </div>\n </div>\n</ng-container>\n", styles: [":host{display:block;position:absolute}.widget-block{width:100%;height:100%;box-sizing:border-box;padding:8px;overflow-wrap:break-word;background-color:var(--cds-layer-01);background-clip:content-box}.widget-block__not-available{padding:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
145
|
+
}], ctorParameters: () => [{ type: i1.DossierWidgetsLayoutService }, { type: i1.DossierTabService }, { type: i2.ActivatedRoute }, { type: i1.DossierWidgetsApiService }, { type: i3.CdsThemeService }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }], propDecorators: { _widgetBlockContentRef: [{
|
|
146
|
+
type: ViewChild,
|
|
147
|
+
args: ['widgetBlockContent']
|
|
148
|
+
}], _widgetBlockRef: [{
|
|
149
|
+
type: ViewChild,
|
|
150
|
+
args: ['widgetBlock']
|
|
151
|
+
}], widget: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}] } });
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWJsb2NrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL3dpZGdldHMvY29tcG9uZW50cy93aWRnZXQtYmxvY2svd2lkZ2V0LWJsb2NrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL3dpZGdldHMvY29tcG9uZW50cy93aWRnZXQtYmxvY2svd2lkZ2V0LWJsb2NrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULEtBQUssRUFHTCxTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxZQUFZLEVBQ1osZ0JBQWdCLEVBRWhCLGtCQUFrQixHQUNuQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxhQUFhLEVBQUUsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsYUFBYSxFQUNiLE1BQU0sRUFDTixHQUFHLEVBRUgsRUFBRSxFQUNGLFlBQVksRUFDWixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFDLGNBQWMsRUFBeUMsTUFBTSwwQkFBMEIsQ0FBQztBQU1oRyxPQUFPLEVBQUMscUJB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YUFBYSwrQkFDYixvQkFBb0Isd0lBQ3BCLHFCQUFxQiwyRkFDckIsZ0JBQWdCLG9QQUNoQixlQUFlLDJGQUNmLFdBQVcsK0JBQ1gsb0JBQW9CLHNJQUNwQixxQkFBcUIsaUhBQ3JCLHlCQUF5Qjs7MkZBSWhCLG9CQUFvQjtrQkFuQmhDLFNBQVM7K0JBQ0UsOEJBQThCLGNBRzVCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixXQUFXO3dCQUNYLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQix5QkFBeUI7cUJBQzFCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNO3lSQUdOLHNCQUFzQjtzQkFBOUQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ0csZUFBZTtzQkFBaEQsU0FBUzt1QkFBQyxhQUFhO2dCQUVKLE1BQU07c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0h0dHBFcnJvclJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ0FSQk9OX1RIRU1FLFxuICBDYXJib25MaXN0TW9kdWxlLFxuICBDZHNUaGVtZVNlcnZpY2UsXG4gIEN1cnJlbnRDYXJib25UaGVtZSxcbn0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0xvYWRpbmdNb2R1bGUsIFRpbGVzTW9kdWxlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgY29tYmluZUxhdGVzdCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q2FzZVdpZGdldFR5cGUsIENhc2VXaWRnZXRXaXRoVXVpZCwgV2lkZ2V0VGFibGVDb250ZW50fSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgRG9zc2llclRhYlNlcnZpY2UsXG4gIERvc3NpZXJXaWRnZXRzQXBpU2VydmljZSxcbiAgRG9zc2llcldpZGdldHNMYXlvdXRTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1dpZGdldEN1c3RvbUNvbXBvbmVudH0gZnJvbSAnLi4vY3VzdG9tL3dpZGdldC1jdXN0b20uY29tcG9uZW50JztcbmltcG9ydCB7V2lkZ2V0RmllbGRDb21wb25lbnR9IGZyb20gJy4uL2ZpZWxkL3dpZGdldC1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHtXaWRnZXRGb3JtaW9Db21wb25lbnR9IGZyb20gJy4uL2Zvcm1pby93aWRnZXQtZm9ybWlvLmNvbXBvbmVudCc7XG5pbXBvcnQge1dpZGdldFRhYmxlQ29tcG9uZW50fSBmcm9tICcuLi90YWJsZS93aWRnZXQtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7V2lkZ2V0Q29sbGVjdGlvbkNvbXBvbmVudH0gZnJvbSAnLi4vY29sbGVjdGlvbi93aWRnZXQtY29sbGVjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtXSURHRVRfSEVJR0hUXzFYfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItd2lkZ2V0LWJsb2NrJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1ibG9jay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dpZGdldC1ibG9jay5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIExvYWRpbmdNb2R1bGUsXG4gICAgV2lkZ2V0VGFibGVDb21wb25lbnQsXG4gICAgV2lkZ2V0Q3VzdG9tQ29tcG9uZW50LFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIFRpbGVzTW9kdWxlLFxuICAgIFdpZGdldEZpZWxkQ29tcG9uZW50LFxuICAgIFdpZGdldEZvcm1pb0NvbXBvbmVudCxcbiAgICBXaWRnZXRDb2xsZWN0aW9uQ29tcG9uZW50LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0QmxvY2tDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCd3aWRnZXRCbG9ja0NvbnRlbnQnKSBwcml2YXRlIF93aWRnZXRCbG9ja0NvbnRlbnRSZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd3aWRnZXRCbG9jaycpIHByaXZhdGUgX3dpZGdldEJsb2NrUmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHdpZGdldCh2YWx1ZTogQ2FzZVdpZGdldFdpdGhVdWlkKSB7XG4gICAgdGhpcy5fd2lkZ2V0VXVpZCA9IHZhbHVlLnV1aWQ7XG4gICAgdGhpcy5fd2lkZ2V0JC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3dpZGdldCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhc2VXaWRnZXRXaXRoVXVpZCB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyBnZXQgd2lkZ2V0JCgpOiBPYnNlcnZhYmxlPENhc2VXaWRnZXRXaXRoVXVpZD4ge1xuICAgIHJldHVybiB0aGlzLl93aWRnZXQkLnBpcGUoZmlsdGVyKHdpZGdldCA9PiB3aWRnZXQgIT09IG51bGwpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWZTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Vmlld0NvbnRhaW5lclJlZiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgZ2V0IF92aWV3Q29udGFpbmVyUmVmJCgpOiBPYnNlcnZhYmxlPFZpZXdDb250YWluZXJSZWY+IHtcbiAgICByZXR1cm4gdGhpcy5fdmlld0NvbnRhaW5lclJlZlN1YmplY3QkLnBpcGUoZmlsdGVyKHJlZiA9PiAhIXJlZikpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudEhlaWdodCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGJsb2NrSGVpZ2h0UHgkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fY29udGVudEhlaWdodCQsXG4gICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZiQsXG4gIF0pLnBpcGUoXG4gICAgZmlsdGVyKChbY29udGVudEhlaWdodF0pID0+IGNvbnRlbnRIZWlnaHQgIT09IDApLFxuICAgIHRhcCgoW2NvbnRlbnRIZWlnaHQsIHZpZXdSZWZdKSA9PiB7XG4gICAgICBjb25zdCBibG9ja0hlaWdodCA9IE1hdGguY2VpbCgoY29udGVudEhlaWdodCArIDE2KSAvIFdJREdFVF9IRUlHSFRfMVgpICogV0lER0VUX0hFSUdIVF8xWDtcblxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh2aWV3UmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke2Jsb2NrSGVpZ2h0fXB4YCk7XG4gICAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS50cmlnZ2VyTXV1cmlMYXlvdXQoKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBibG9ja1dpZHRoUGVyY2VudGFnZSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS5hbW91bnRPZkNvbHVtbnMkLFxuICAgIHRoaXMud2lkZ2V0JCxcbiAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmJCxcbiAgXSkucGlwZShcbiAgICB0YXAoKFthbW91bnRPZkNvbHVtbnMsIHdpZGdldCwgdmlld1JlZl0pID0+IHtcbiAgICAgIGNvbnN0IHBlcmNlbnRhZ2UgPVxuICAgICAgICB3aWRnZXQud2lkdGggPiBhbW91bnRPZkNvbHVtbnMgPyAxMDAgOiAod2lkZ2V0LndpZHRoIC8gYW1vdW50T2ZDb2x1bW5zKSAqIDEwMDtcblxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh2aWV3UmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYCR7cGVyY2VudGFnZX0lYCk7XG4gICAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS50cmlnZ2VyTXV1cmlMYXlvdXQoKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBDYXNlV2lkZ2V0VHlwZSA9IENhc2VXaWRnZXRUeXBlO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudElkJCA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXM/LmRvY3VtZW50SWQpLFxuICAgIGZpbHRlcihkb2N1bWVudElkID0+ICEhZG9jdW1lbnRJZClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdGFiS2V5JDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5kb3NzaWVyVGFiU2VydmljZS5hY3RpdmVUYWJLZXkkO1xuXG4gIHB1YmxpYyByZWFkb25seSB3aWRnZXREYXRhJDogT2JzZXJ2YWJsZTxhbnlbXSB8IHt9IHwgbnVsbD4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLndpZGdldCQsXG4gICAgdGhpcy50YWJLZXkkLFxuICAgIHRoaXMuZG9jdW1lbnRJZCQsXG4gIF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbd2lkZ2V0LCB0YWJrZXksIGRvY3VtZW50SWRdKSA9PlxuICAgICAgLy8gY3VzdG9tIGNvbXBvbmVudCBhbmQgZm9ybWlvIHdpZGdldHMgZG8gbm90IGZldGNoIGFkZGl0aW9uYWwgZGF0YVxuICAgICAgd2lkZ2V0LnR5cGUgPT09IENhc2VXaWRnZXRUeXBlLkNVU1RPTSB8fCB3aWRnZXQudHlwZSA9PT0gQ2FzZVdpZGdldFR5cGUuRk9STUlPXG4gICAgICAgID8gb2Yoe30pXG4gICAgICAgIDogdGhpcy53aWRnZXRzQXBpU2VydmljZS5nZXRXaWRnZXREYXRhKFxuICAgICAgICAgICAgZG9jdW1lbnRJZCxcbiAgICAgICAgICAgIHRhYmtleSxcbiAgICAgICAgICAgIHdpZGdldC5rZXksXG4gICAgICAgICAgICB3aWRnZXQudHlwZSA9PT0gQ2FzZVdpZGdldFR5cGUuVEFCTEUgfHwgd2lkZ2V0LnR5cGUgPT09IENhc2VXaWRnZXRUeXBlLkNPTExFQ1RJT05cbiAgICAgICAgICAgICAgPyB0aGlzLmdldFBhZ2VTaXplUGFyYW0od2lkZ2V0KVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgIClcbiAgICApLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS5zZXRDYXNlV2lkZ2V0RGF0YUxvYWRlZCh0aGlzLl93aWRnZXRVdWlkKTtcbiAgICB9KSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwNClcbiAgICAgICAgdGhpcy5kb3NzaWVyV2lkZ2V0c0xheW91dFNlcnZpY2Uuc2V0Q2FzZVdpZGdldERhdGFMb2FkZWQodGhpcy5fd2lkZ2V0VXVpZCk7XG5cbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSB0aGVtZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmNkc1RoZW1lU2VydmljZS5jdXJyZW50VGhlbWUkLCB0aGlzLndpZGdldCRdKS5waXBlKFxuICAgIG1hcCgoW2N1cnJlbnRUaGVtZSwgd2lkZ2V0Q29uZmlndXJhdGlvbl0pID0+IHtcbiAgICAgIHJldHVybiBjdXJyZW50VGhlbWUgPT09IEN1cnJlbnRDYXJib25UaGVtZS5HMTBcbiAgICAgICAgPyB3aWRnZXRDb25maWd1cmF0aW9uLmhpZ2hDb250cmFzdFxuICAgICAgICAgID8gQ0FSQk9OX1RIRU1FLkcxMDBcbiAgICAgICAgICA6IENBUkJPTl9USEVNRS5HMTBcbiAgICAgICAgOiB3aWRnZXRDb25maWd1cmF0aW9uLmhpZ2hDb250cmFzdFxuICAgICAgICAgID8gQ0FSQk9OX1RIRU1FLldISVRFXG4gICAgICAgICAgOiBDQVJCT05fVEhFTUUuRzkwO1xuICAgIH0pXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcml2YXRlIF9vYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIHByaXZhdGUgX3dpZGdldFV1aWQhOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyV2lkZ2V0c0xheW91dFNlcnZpY2U6IERvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJUYWJTZXJ2aWNlOiBEb3NzaWVyVGFiU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldHNBcGlTZXJ2aWNlOiBEb3NzaWVyV2lkZ2V0c0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHNUaGVtZVNlcnZpY2U6IENkc1RoZW1lU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3UmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWZTdWJqZWN0JC5uZXh0KHRoaXMudmlld1JlZik7XG4gICAgdGhpcy5vcGVuQ29udGVudEhlaWdodE9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX29ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Db250ZW50SGVpZ2h0T2JzZXJ2ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZXZlbnQgPT4ge1xuICAgICAgdGhpcy5vYnNlcnZlck11dGF0aW9uKGV2ZW50KTtcbiAgICB9KTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX3dpZGdldEJsb2NrQ29udGVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZXJNdXRhdGlvbihldmVudDogQXJyYXk8UmVzaXplT2JzZXJ2ZXJFbnRyeT4pOiB2b2lkIHtcbiAgICBjb25zdCB3aWRnZXRDb250ZW50SGVpZ2h0ID0gZXZlbnRbMF0/LmJvcmRlckJveFNpemVbMF0/LmJsb2NrU2l6ZTtcblxuICAgIGlmICh0eXBlb2Ygd2lkZ2V0Q29udGVudEhlaWdodCA9PT0gJ251bWJlcicgJiYgd2lkZ2V0Q29udGVudEhlaWdodCAhPT0gMCkge1xuICAgICAgdGhpcy5fY29udGVudEhlaWdodCQubmV4dCh3aWRnZXRDb250ZW50SGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFBhZ2VTaXplUGFyYW0od2lkZ2V0Q29uZmlndXJhdGlvbjogQ2FzZVdpZGdldFdpdGhVdWlkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHNpemU9JHsod2lkZ2V0Q29uZmlndXJhdGlvbi5wcm9wZXJ0aWVzIGFzIFdpZGdldFRhYmxlQ29udGVudCkuZGVmYXVsdFBhZ2VTaXplfWA7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIntcbiAgICBkb2N1bWVudElkOiBkb2N1bWVudElkJCB8IGFzeW5jLFxuICAgIHRhYktleTogdGFiS2V5JCB8IGFzeW5jLFxuICAgIHdpZGdldENvbmZpZ3VyYXRpb246IHdpZGdldCQgfCBhc3luYyxcbiAgICB3aWRnZXREYXRhOiB3aWRnZXREYXRhJCB8IGFzeW5jLFxuICAgIHRoZW1lOiB0aGVtZSQgfCBhc3luYyxcbiAgICBibG9ja0hlaWdodFB4OiBibG9ja0hlaWdodFB4JCB8IGFzeW5jLFxuICAgIGJsb2NrV2lkdGhQZXJjZW50YWdlOiBibG9ja1dpZHRoUGVyY2VudGFnZSQgfCBhc3luY1xuICB9IGFzIG9ic1wiXG4+XG4gIDxkaXYgI3dpZGdldEJsb2NrIGNsYXNzPVwid2lkZ2V0LWJsb2NrXCIgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCI+XG4gICAgPGRpdiAjd2lkZ2V0QmxvY2tDb250ZW50IGNsYXNzPVwid2lkZ2V0LWJsb2NrX19jb250ZW50XCI+XG4gICAgICBAaWYgKG9icy53aWRnZXREYXRhKSB7XG4gICAgICAgIEBzd2l0Y2ggKG9icy53aWRnZXRDb25maWd1cmF0aW9uLnR5cGUpIHtcbiAgICAgICAgICBAY2FzZSAoQ2FzZVdpZGdldFR5cGUuVEFCTEUpIHtcbiAgICAgICAgICAgIDx2YWx0aW1vLXdpZGdldC10YWJsZVxuICAgICAgICAgICAgICBbZG9jdW1lbnRJZF09XCJvYnMuZG9jdW1lbnRJZFwiXG4gICAgICAgICAgICAgIFt0YWJLZXldPVwib2JzLnRhYktleVwiXG4gICAgICAgICAgICAgIFt3aWRnZXRDb25maWd1cmF0aW9uXT1cIm9icy53aWRnZXRDb25maWd1cmF0aW9uXCJcbiAgICAgICAgICAgICAgW3dpZGdldERhdGFdPVwib2JzLndpZGdldERhdGFcIlxuICAgICAgICAgICAgPjwvdmFsdGltby13aWRnZXQtdGFibGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGNhc2UgKENhc2VXaWRnZXRUeXBlLkNPTExFQ1RJT04pIHtcbiAgICAgICAgICAgIDx2YWx0aW1vLXdpZGdldC1jb2xsZWN0aW9uXG4gICAgICAgICAgICAgIFtkb2N1bWVudElkXT1cIm9icy5kb2N1bWVudElkXCJcbiAgICAgICAgICAgICAgW3RhYktleV09XCJvYnMudGFiS2V5XCJcbiAgICAgICAgICAgICAgW3dpZGdldENvbmZpZ3VyYXRpb25dPVwib2JzLndpZGdldENvbmZpZ3VyYXRpb25cIlxuICAgICAgICAgICAgICBbd2lkZ2V0RGF0YV09XCJvYnMud2lkZ2V0RGF0YVwiXG4gICAgICAgICAgICA+PC92YWx0aW1vLXdpZGdldC1jb2xsZWN0aW9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0VHlwZS5DVVNUT00pIHtcbiAgICAgICAgICAgIDx2YWx0aW1vLXdpZGdldC1jdXN0b20gW3dpZGdldENvbmZpZ109XCJvYnMud2lkZ2V0Q29uZmlndXJhdGlvblwiPjwvdmFsdGltby13aWRnZXQtY3VzdG9tPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0VHlwZS5GSUVMRFMpIHtcbiAgICAgICAgICAgIDx2YWx0aW1vLXdpZGdldC1maWVsZFxuICAgICAgICAgICAgICBbY29sbGFwc2VWZXJ0aWNhbGx5XT1cInRydWVcIlxuICAgICAgICAgICAgICBbd2lkZ2V0Q29uZmlndXJhdGlvbl09XCJvYnMud2lkZ2V0Q29uZmlndXJhdGlvblwiXG4gICAgICAgICAgICAgIFt3aWRnZXREYXRhXT1cIm9icy53aWRnZXREYXRhXCJcbiAgICAgICAgICAgID48L3ZhbHRpbW8td2lkZ2V0LWZpZWxkPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0VHlwZS5GT1JNSU8pIHtcbiAgICAgICAgICAgIDx2YWx0aW1vLXdpZGdldC1mb3JtaW9cbiAgICAgICAgICAgICAgW3dpZGdldENvbmZpZ3VyYXRpb25dPVwib2JzLndpZGdldENvbmZpZ3VyYXRpb25cIlxuICAgICAgICAgICAgICBbZG9jdW1lbnRJZF09XCJvYnMuZG9jdW1lbnRJZFwiXG4gICAgICAgICAgICA+PC92YWx0aW1vLXdpZGdldC1mb3JtaW8+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndpZGdldC1ibG9ja19fbm90LWF2YWlsYWJsZVwiPlxuICAgICAgICAgICAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICAgICAgICAgICAgW2NvbGxhcHNlVmVydGljYWxseV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiJ2Rvc3NpZXIud2lkZ2V0cy5ub1dpZGdldCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtzbWFsbFBhZGRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXQtYmxvY2tfX25vdC1hdmFpbGFibGVcIj5cbiAgICAgICAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICAgICAgICBbY29sbGFwc2VWZXJ0aWNhbGx5XT1cInRydWVcIlxuICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIidkb3NzaWVyLndpZGdldHMubm9EYXRhJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbc21hbGxQYWRkaW5nXT1cInRydWVcIlxuICAgICAgICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';
|
|
17
|
+
import { CommonModule } from '@angular/common';
|
|
18
|
+
import { WidgetBlockComponent } from '../widget-block/widget-block.component';
|
|
19
|
+
import { v4 as uuid } from 'uuid';
|
|
20
|
+
import { BehaviorSubject, delay, take } from 'rxjs';
|
|
21
|
+
import Muuri from 'muuri';
|
|
22
|
+
import * as i0 from "@angular/core";
|
|
23
|
+
import * as i1 from "../../../../../../services";
|
|
24
|
+
import * as i2 from "@angular/common";
|
|
25
|
+
export class WidgetsContainerComponent {
|
|
26
|
+
set widgets(value) {
|
|
27
|
+
const widgetsWithUuids = value.map(widget => ({ ...widget, uuid: uuid() }));
|
|
28
|
+
this.dossierWidgetsLayoutService.setWidgets(widgetsWithUuids);
|
|
29
|
+
this.widgetsWithUuids$.next(widgetsWithUuids);
|
|
30
|
+
}
|
|
31
|
+
constructor(dossierWidgetsLayoutService) {
|
|
32
|
+
this.dossierWidgetsLayoutService = dossierWidgetsLayoutService;
|
|
33
|
+
this.widgetsWithUuids$ = new BehaviorSubject([]);
|
|
34
|
+
}
|
|
35
|
+
ngAfterViewInit() {
|
|
36
|
+
this._observer = new ResizeObserver(event => {
|
|
37
|
+
this.observerMutation(event);
|
|
38
|
+
});
|
|
39
|
+
this._observer.observe(this._widgetsContainerRef.nativeElement);
|
|
40
|
+
this.initMuuri();
|
|
41
|
+
}
|
|
42
|
+
ngOnDestroy() {
|
|
43
|
+
this._observer?.disconnect();
|
|
44
|
+
}
|
|
45
|
+
observerMutation(event) {
|
|
46
|
+
const containerWidth = event[0]?.borderBoxSize[0]?.inlineSize;
|
|
47
|
+
if (typeof containerWidth === 'number' && containerWidth !== 0) {
|
|
48
|
+
this.dossierWidgetsLayoutService.setContainerWidth(containerWidth);
|
|
49
|
+
this.dossierWidgetsLayoutService.triggerMuuriLayout();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
initMuuri() {
|
|
53
|
+
this.dossierWidgetsLayoutService.loaded$.pipe(take(1), delay(300)).subscribe(() => {
|
|
54
|
+
this.dossierWidgetsLayoutService.setMuuri(new Muuri(this._widgetsContainerRef.nativeElement, {
|
|
55
|
+
layout: {
|
|
56
|
+
fillGaps: true,
|
|
57
|
+
},
|
|
58
|
+
layoutOnResize: false,
|
|
59
|
+
}));
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetsContainerComponent, deps: [{ token: i1.DossierWidgetsLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
63
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: WidgetsContainerComponent, isStandalone: true, selector: "valtimo-dossier-widgets-container", inputs: { widgets: "widgets" }, viewQueries: [{ propertyName: "_widgetsContainerRef", first: true, predicate: ["widgetsContainer"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div #widgetsContainer class=\"widgets-container\">\n @for (widget of widgetsWithUuids$ | async; track widget.uuid) {\n <valtimo-dossier-widget-block [widget]=\"widget\"></valtimo-dossier-widget-block>\n }\n</div>\n", styles: [".widgets-container{position:relative;width:calc(100% + 16px);margin-left:-8px;margin-top:-8px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "component", type: WidgetBlockComponent, selector: "valtimo-dossier-widget-block", inputs: ["widget"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
64
|
+
}
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetsContainerComponent, decorators: [{
|
|
66
|
+
type: Component,
|
|
67
|
+
args: [{ selector: 'valtimo-dossier-widgets-container', standalone: true, imports: [CommonModule, WidgetBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div #widgetsContainer class=\"widgets-container\">\n @for (widget of widgetsWithUuids$ | async; track widget.uuid) {\n <valtimo-dossier-widget-block [widget]=\"widget\"></valtimo-dossier-widget-block>\n }\n</div>\n", styles: [".widgets-container{position:relative;width:calc(100% + 16px);margin-left:-8px;margin-top:-8px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
68
|
+
}], ctorParameters: () => [{ type: i1.DossierWidgetsLayoutService }], propDecorators: { _widgetsContainerRef: [{
|
|
69
|
+
type: ViewChild,
|
|
70
|
+
args: ['widgetsContainer']
|
|
71
|
+
}], widgets: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}] } });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvd2lkZ2V0cy9jb21wb25lbnRzL3dpZGdldHMtY29udGFpbmVyL3dpZGdldHMtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL3dpZGdldHMvY29tcG9uZW50cy93aWRnZXRzLWNvbnRhaW5lci93aWRnZXRzLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBRTVFLE9BQU8sRUFBQyxFQUFFLElBQUksSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7QUFVMUIsTUFBTSxPQUFPLHlCQUF5QjtJQUtwQyxJQUFvQixPQUFPLENBQUMsS0FBbUI7UUFDN0MsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFJRCxZQUE2QiwyQkFBd0Q7UUFBeEQsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQVZyRSxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBdUIsRUFBRSxDQUFDLENBQUM7SUFVTSxDQUFDO0lBRWxGLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWlDO1FBQ3hELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDO1FBRTlELElBQUksT0FBTyxjQUFjLEtBQUssUUFBUSxJQUFJLGNBQWMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDaEYsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FDdkMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRTtnQkFDakQsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2dCQUNELGNBQWMsRUFBRSxLQUFLO2FBQ3RCLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWhEVSx5QkFBeUI7a0dBQXpCLHlCQUF5Qix1UEN6Q3RDLDgyQkFxQkEsdXhCRGlCWSxZQUFZLG9GQUFFLG9CQUFvQjs7MkZBR2pDLHlCQUF5QjtrQkFSckMsU0FBUzsrQkFDRSxtQ0FBbUMsY0FHakMsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDLG1CQUM1Qix1QkFBdUIsQ0FBQyxNQUFNO2dHQUdSLG9CQUFvQjtzQkFBMUQsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSVQsT0FBTztzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2FzZVdpZGdldCwgQ2FzZVdpZGdldFdpdGhVdWlkfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtXaWRnZXRCbG9ja0NvbXBvbmVudH0gZnJvbSAnLi4vd2lkZ2V0LWJsb2NrL3dpZGdldC1ibG9jay5jb21wb25lbnQnO1xuaW1wb3J0IHtEb3NzaWVyV2lkZ2V0c0xheW91dFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7djQgYXMgdXVpZH0gZnJvbSAndXVpZCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgZGVsYXksIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IE11dXJpIGZyb20gJ211dXJpJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLXdpZGdldHMtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldHMtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2lkZ2V0cy1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgV2lkZ2V0QmxvY2tDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0c0NvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3dpZGdldHNDb250YWluZXInKSBwcml2YXRlIF93aWRnZXRzQ29udGFpbmVyUmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBwdWJsaWMgcmVhZG9ubHkgd2lkZ2V0c1dpdGhVdWlkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhc2VXaWRnZXRXaXRoVXVpZFtdPihbXSk7XG5cbiAgQElucHV0KCkgcHVibGljIHNldCB3aWRnZXRzKHZhbHVlOiBDYXNlV2lkZ2V0W10pIHtcbiAgICBjb25zdCB3aWRnZXRzV2l0aFV1aWRzID0gdmFsdWUubWFwKHdpZGdldCA9PiAoey4uLndpZGdldCwgdXVpZDogdXVpZCgpfSkpO1xuICAgIHRoaXMuZG9zc2llcldpZGdldHNMYXlvdXRTZXJ2aWNlLnNldFdpZGdldHMod2lkZ2V0c1dpdGhVdWlkcyk7XG4gICAgdGhpcy53aWRnZXRzV2l0aFV1aWRzJC5uZXh0KHdpZGdldHNXaXRoVXVpZHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZXIhOiBSZXNpemVPYnNlcnZlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZTogRG9zc2llcldpZGdldHNMYXlvdXRTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZXZlbnQgPT4ge1xuICAgICAgdGhpcy5vYnNlcnZlck11dGF0aW9uKGV2ZW50KTtcbiAgICB9KTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX3dpZGdldHNDb250YWluZXJSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICB0aGlzLmluaXRNdXVyaSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX29ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVyTXV0YXRpb24oZXZlbnQ6IEFycmF5PFJlc2l6ZU9ic2VydmVyRW50cnk+KTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPSBldmVudFswXT8uYm9yZGVyQm94U2l6ZVswXT8uaW5saW5lU2l6ZTtcblxuICAgIGlmICh0eXBlb2YgY29udGFpbmVyV2lkdGggPT09ICdudW1iZXInICYmIGNvbnRhaW5lcldpZHRoICE9PSAwKSB7XG4gICAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS5zZXRDb250YWluZXJXaWR0aChjb250YWluZXJXaWR0aCk7XG4gICAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS50cmlnZ2VyTXV1cmlMYXlvdXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRNdXVyaSgpOiB2b2lkIHtcbiAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS5sb2FkZWQkLnBpcGUodGFrZSgxKSwgZGVsYXkoMzAwKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZG9zc2llcldpZGdldHNMYXlvdXRTZXJ2aWNlLnNldE11dXJpKFxuICAgICAgICBuZXcgTXV1cmkodGhpcy5fd2lkZ2V0c0NvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICBmaWxsR2FwczogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxheW91dE9uUmVzaXplOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdiAjd2lkZ2V0c0NvbnRhaW5lciBjbGFzcz1cIndpZGdldHMtY29udGFpbmVyXCI+XG4gIEBmb3IgKHdpZGdldCBvZiB3aWRnZXRzV2l0aFV1aWRzJCB8IGFzeW5jOyB0cmFjayB3aWRnZXQudXVpZCkge1xuICAgIDx2YWx0aW1vLWRvc3NpZXItd2lkZ2V0LWJsb2NrIFt3aWRnZXRdPVwid2lkZ2V0XCI+PC92YWx0aW1vLWRvc3NpZXItd2lkZ2V0LWJsb2NrPlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { CommonModule } from '@angular/common';
|
|
17
|
+
import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';
|
|
18
|
+
import { BehaviorSubject, combineLatest, delay, filter, map, switchMap, tap } from 'rxjs';
|
|
19
|
+
import { LoadingModule } from 'carbon-components-angular';
|
|
20
|
+
import { WidgetsContainerComponent } from './components/widgets-container/widgets-container.component';
|
|
21
|
+
import { CarbonListModule } from '@valtimo/components';
|
|
22
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
23
|
+
import * as i0 from "@angular/core";
|
|
24
|
+
import * as i1 from "@angular/router";
|
|
25
|
+
import * as i2 from "../../../../services";
|
|
26
|
+
import * as i3 from "@angular/common";
|
|
27
|
+
import * as i4 from "carbon-components-angular";
|
|
28
|
+
import * as i5 from "@valtimo/components";
|
|
29
|
+
import * as i6 from "@ngx-translate/core";
|
|
30
|
+
export class DossierDetailWidgetsComponent {
|
|
31
|
+
constructor(route, dossierTabService, widgetsApiService, dossierWidgetsLayoutService) {
|
|
32
|
+
this.route = route;
|
|
33
|
+
this.dossierTabService = dossierTabService;
|
|
34
|
+
this.widgetsApiService = widgetsApiService;
|
|
35
|
+
this.dossierWidgetsLayoutService = dossierWidgetsLayoutService;
|
|
36
|
+
this._noMargin = true;
|
|
37
|
+
this._noBackground = true;
|
|
38
|
+
this._noMinHeight = true;
|
|
39
|
+
this._documentId$ = this.route.params.pipe(map(params => params?.documentId), filter(documentId => !!documentId));
|
|
40
|
+
this._tabKey$ = this.dossierTabService.activeTabKey$;
|
|
41
|
+
this.loadingWidgetConfiguration$ = new BehaviorSubject(true);
|
|
42
|
+
this.widgetConfiguration$ = combineLatest([this._documentId$, this._tabKey$]).pipe(switchMap(([documentId, tabKey]) => this.widgetsApiService.getWidgetTabConfiguration(documentId, tabKey)), tap(() => this.loadingWidgetConfiguration$.next(false)));
|
|
43
|
+
this.loaded$ = this.dossierWidgetsLayoutService.loaded$.pipe(delay(400));
|
|
44
|
+
}
|
|
45
|
+
ngOnInit() {
|
|
46
|
+
this.dossierTabService.disableTabHorizontalOverflow();
|
|
47
|
+
}
|
|
48
|
+
ngOnDestroy() {
|
|
49
|
+
this.dossierWidgetsLayoutService.reset();
|
|
50
|
+
this.dossierTabService.enableTabHorizontalOverflow();
|
|
51
|
+
}
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierDetailWidgetsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.DossierTabService }, { token: i2.DossierWidgetsApiService }, { token: i2.DossierWidgetsLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: DossierDetailWidgetsComponent, isStandalone: true, selector: "ng-component", host: { properties: { "class.tab--no-margin": "this._noMargin", "class.tab--no-background": "this._noBackground", "class.tab--no-min-height": "this._noMinHeight" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n loadingWidgetConfiguration: loadingWidgetConfiguration$ | async,\n widgetConfiguration: widgetConfiguration$ | async,\n loaded: loaded$ | async\n } as obs\"\n>\n <ng-container\n *ngIf=\"{\n noWidgetsConfigured:\n obs.widgetConfiguration?.widgets && obs.widgetConfiguration.widgets.length === 0\n } as vars\"\n >\n @if (!obs.loaded && !vars.noWidgetsConfigured) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n }\n\n @if (vars.noWidgetsConfigured) {\n <valtimo-no-results\n [title]=\"'dossier.widgets.noWidgets' | translate\"\n [description]=\"'dossier.widgets.noWidgetsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-widgets.svg\"\n ></valtimo-no-results>\n }\n\n <div [style.visibility]=\"!obs.loaded ? 'hidden' : 'visible'\">\n <valtimo-dossier-widgets-container\n [widgets]=\"obs.widgetConfiguration?.widgets || []\"\n ></valtimo-dossier-widgets-container>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i4.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: WidgetsContainerComponent, selector: "valtimo-dossier-widgets-container", inputs: ["widgets"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i5.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
54
|
+
}
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierDetailWidgetsComponent, decorators: [{
|
|
56
|
+
type: Component,
|
|
57
|
+
args: [{ standalone: true, imports: [
|
|
58
|
+
CommonModule,
|
|
59
|
+
LoadingModule,
|
|
60
|
+
WidgetsContainerComponent,
|
|
61
|
+
CarbonListModule,
|
|
62
|
+
TranslateModule,
|
|
63
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n loadingWidgetConfiguration: loadingWidgetConfiguration$ | async,\n widgetConfiguration: widgetConfiguration$ | async,\n loaded: loaded$ | async\n } as obs\"\n>\n <ng-container\n *ngIf=\"{\n noWidgetsConfigured:\n obs.widgetConfiguration?.widgets && obs.widgetConfiguration.widgets.length === 0\n } as vars\"\n >\n @if (!obs.loaded && !vars.noWidgetsConfigured) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n }\n\n @if (vars.noWidgetsConfigured) {\n <valtimo-no-results\n [title]=\"'dossier.widgets.noWidgets' | translate\"\n [description]=\"'dossier.widgets.noWidgetsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-widgets.svg\"\n ></valtimo-no-results>\n }\n\n <div [style.visibility]=\"!obs.loaded ? 'hidden' : 'visible'\">\n <valtimo-dossier-widgets-container\n [widgets]=\"obs.widgetConfiguration?.widgets || []\"\n ></valtimo-dossier-widgets-container>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}\n"] }]
|
|
64
|
+
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.DossierTabService }, { type: i2.DossierWidgetsApiService }, { type: i2.DossierWidgetsLayoutService }], propDecorators: { _noMargin: [{
|
|
65
|
+
type: HostBinding,
|
|
66
|
+
args: ['class.tab--no-margin']
|
|
67
|
+
}], _noBackground: [{
|
|
68
|
+
type: HostBinding,
|
|
69
|
+
args: ['class.tab--no-background']
|
|
70
|
+
}], _noMinHeight: [{
|
|
71
|
+
type: HostBinding,
|
|
72
|
+
args: ['class.tab--no-min-height']
|
|
73
|
+
}] } });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL3RhYi93aWRnZXRzL3dpZGdldHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvd2lkZ2V0cy93aWRnZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBTXBHLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUNyRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7O0FBZXBELE1BQU0sT0FBTyw2QkFBNkI7SUF1QnhDLFlBQ21CLEtBQXFCLEVBQ3JCLGlCQUFvQyxFQUNwQyxpQkFBMkMsRUFDM0MsMkJBQXdEO1FBSHhELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUMzQyxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBMUJyQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2Isa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFN0QsaUJBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3BELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFDakMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUNuQyxDQUFDO1FBRWUsYUFBUSxHQUF1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDO1FBRXJFLGdDQUEyQixHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRWpFLHlCQUFvQixHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMzRixTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQ3JFLEVBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDeEQsQ0FBQztRQUVjLFlBQU8sR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQU9qRixDQUFDO0lBRUcsUUFBUTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUN2RCxDQUFDOzhHQXJDVSw2QkFBNkI7a0dBQTdCLDZCQUE2QiwrT0MzQzFDLDB0REFrREEsaUlEZkksWUFBWSx1TEFDWixhQUFhLGdLQUNiLHlCQUF5QixrR0FDekIsZ0JBQWdCLG9QQUNoQixlQUFlOzsyRkFJTiw2QkFBNkI7a0JBYnpDLFNBQVM7aUNBR0ksSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYix5QkFBeUI7d0JBQ3pCLGdCQUFnQjt3QkFDaEIsZUFBZTtxQkFDaEIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07b01BR08sU0FBUztzQkFBOUQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBQ3VCLGFBQWE7c0JBQXRFLFdBQVc7dUJBQUMsMEJBQTBCO2dCQUNtQixZQUFZO3NCQUFyRSxXQUFXO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWxheSwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIERvc3NpZXJUYWJTZXJ2aWNlLFxuICBEb3NzaWVyV2lkZ2V0c0FwaVNlcnZpY2UsXG4gIERvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtMb2FkaW5nTW9kdWxlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7V2lkZ2V0c0NvbnRhaW5lckNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL3dpZGdldHMtY29udGFpbmVyL3dpZGdldHMtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0NhcmJvbkxpc3RNb2R1bGV9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93aWRnZXRzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTG9hZGluZ01vZHVsZSxcbiAgICBXaWRnZXRzQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckRldGFpbFdpZGdldHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MudGFiLS1uby1tYXJnaW4nKSBwcml2YXRlIHJlYWRvbmx5IF9ub01hcmdpbiA9IHRydWU7XG4gIEBIb3N0QmluZGluZygnY2xhc3MudGFiLS1uby1iYWNrZ3JvdW5kJykgcHJpdmF0ZSByZWFkb25seSBfbm9CYWNrZ3JvdW5kID0gdHJ1ZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50YWItLW5vLW1pbi1oZWlnaHQnKSBwcml2YXRlIHJlYWRvbmx5IF9ub01pbkhlaWdodCA9IHRydWU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnRJZCQgPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudElkKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnRJZCA9PiAhIWRvY3VtZW50SWQpXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdGFiS2V5JDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5kb3NzaWVyVGFiU2VydmljZS5hY3RpdmVUYWJLZXkkO1xuXG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nV2lkZ2V0Q29uZmlndXJhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHB1YmxpYyByZWFkb25seSB3aWRnZXRDb25maWd1cmF0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2RvY3VtZW50SWQkLCB0aGlzLl90YWJLZXkkXSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKFtkb2N1bWVudElkLCB0YWJLZXldKSA9PlxuICAgICAgdGhpcy53aWRnZXRzQXBpU2VydmljZS5nZXRXaWRnZXRUYWJDb25maWd1cmF0aW9uKGRvY3VtZW50SWQsIHRhYktleSlcbiAgICApLFxuICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmdXaWRnZXRDb25maWd1cmF0aW9uJC5uZXh0KGZhbHNlKSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGVkJCA9IHRoaXMuZG9zc2llcldpZGdldHNMYXlvdXRTZXJ2aWNlLmxvYWRlZCQucGlwZShkZWxheSg0MDApKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJUYWJTZXJ2aWNlOiBEb3NzaWVyVGFiU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldHNBcGlTZXJ2aWNlOiBEb3NzaWVyV2lkZ2V0c0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyV2lkZ2V0c0xheW91dFNlcnZpY2U6IERvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZG9zc2llclRhYlNlcnZpY2UuZGlzYWJsZVRhYkhvcml6b250YWxPdmVyZmxvdygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZG9zc2llcldpZGdldHNMYXlvdXRTZXJ2aWNlLnJlc2V0KCk7XG4gICAgdGhpcy5kb3NzaWVyVGFiU2VydmljZS5lbmFibGVUYWJIb3Jpem9udGFsT3ZlcmZsb3coKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwie1xuICAgIGxvYWRpbmdXaWRnZXRDb25maWd1cmF0aW9uOiBsb2FkaW5nV2lkZ2V0Q29uZmlndXJhdGlvbiQgfCBhc3luYyxcbiAgICB3aWRnZXRDb25maWd1cmF0aW9uOiB3aWRnZXRDb25maWd1cmF0aW9uJCB8IGFzeW5jLFxuICAgIGxvYWRlZDogbG9hZGVkJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwie1xuICAgICAgbm9XaWRnZXRzQ29uZmlndXJlZDpcbiAgICAgICAgb2JzLndpZGdldENvbmZpZ3VyYXRpb24/LndpZGdldHMgJiYgb2JzLndpZGdldENvbmZpZ3VyYXRpb24ud2lkZ2V0cy5sZW5ndGggPT09IDBcbiAgICB9IGFzIHZhcnNcIlxuICA+XG4gICAgQGlmICghb2JzLmxvYWRlZCAmJiAhdmFycy5ub1dpZGdldHNDb25maWd1cmVkKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIj5cbiAgICAgICAgPGNkcy1sb2FkaW5nPjwvY2RzLWxvYWRpbmc+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKHZhcnMubm9XaWRnZXRzQ29uZmlndXJlZCkge1xuICAgICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgICBbdGl0bGVdPVwiJ2Rvc3NpZXIud2lkZ2V0cy5ub1dpZGdldHMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIidkb3NzaWVyLndpZGdldHMubm9XaWRnZXRzRGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgaWxsdXN0cmF0aW9uPVwidmFsdGltby1sYXlvdXQvaW1nL25vLXdpZGdldHMuc3ZnXCJcbiAgICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgICB9XG5cbiAgICA8ZGl2IFtzdHlsZS52aXNpYmlsaXR5XT1cIiFvYnMubG9hZGVkID8gJ2hpZGRlbicgOiAndmlzaWJsZSdcIj5cbiAgICAgIDx2YWx0aW1vLWRvc3NpZXItd2lkZ2V0cy1jb250YWluZXJcbiAgICAgICAgW3dpZGdldHNdPVwib2JzLndpZGdldENvbmZpZ3VyYXRpb24/LndpZGdldHMgfHwgW11cIlxuICAgICAgPjwvdmFsdGltby1kb3NzaWVyLXdpZGdldHMtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|