@valtimo/dossier-management 12.10.1 → 12.11.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-management-case-tags/dossier-management-case-tag-modal/dossier-management-case-tag-modal.component.mjs +263 -0
- package/esm2022/lib/components/dossier-management-case-tags/dossier-management-case-tags.component.mjs +149 -0
- package/esm2022/lib/components/dossier-management-detail/dossier-management-detail.component.mjs +4 -3
- package/esm2022/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.mjs +5 -4
- package/esm2022/lib/components/dossier-management-external-start-form/dossier-management-external-start-form.component.mjs +127 -0
- package/esm2022/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.mjs +33 -13
- package/esm2022/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.mjs +3 -3
- package/esm2022/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.mjs +8 -20
- package/esm2022/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.mjs +3 -3
- package/esm2022/lib/components/dossier-management-tabs/tab-form/tab-form.component.mjs +3 -3
- package/esm2022/lib/dossier-management.module.mjs +23 -5
- package/esm2022/lib/models/tab.enum.mjs +2 -1
- package/fesm2022/valtimo-dossier-management.mjs +571 -47
- package/fesm2022/valtimo-dossier-management.mjs.map +1 -1
- package/lib/components/dossier-management-case-tags/dossier-management-case-tag-modal/dossier-management-case-tag-modal.component.d.ts +75 -0
- package/lib/components/dossier-management-case-tags/dossier-management-case-tag-modal/dossier-management-case-tag-modal.component.d.ts.map +1 -0
- package/lib/components/dossier-management-case-tags/dossier-management-case-tags.component.d.ts +48 -0
- package/lib/components/dossier-management-case-tags/dossier-management-case-tags.component.d.ts.map +1 -0
- package/lib/components/dossier-management-external-start-form/dossier-management-external-start-form.component.d.ts +37 -0
- package/lib/components/dossier-management-external-start-form/dossier-management-external-start-form.component.d.ts.map +1 -0
- package/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.d.ts +3 -0
- package/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.d.ts.map +1 -1
- package/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.d.ts.map +1 -1
- package/lib/components/dossier-management-statuses/dossier-management-statuses.component.d.ts +1 -1
- package/lib/dossier-management.module.d.ts +13 -10
- package/lib/dossier-management.module.d.ts.map +1 -1
- package/lib/models/tab.enum.d.ts +2 -1
- package/lib/models/tab.enum.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,263 @@
|
|
|
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, EventEmitter, Input, Output, } from '@angular/core';
|
|
17
|
+
import { BehaviorSubject, combineLatest, map, Subscription, switchMap, take } from 'rxjs';
|
|
18
|
+
import { CARBON_CONSTANTS } from '@valtimo/components';
|
|
19
|
+
import { FormControl, Validators, } from '@angular/forms';
|
|
20
|
+
import { CaseTagsUtils } from '@valtimo/document';
|
|
21
|
+
import { Edit16 } from '@carbon/icons';
|
|
22
|
+
import { TagColor } from '@valtimo/config';
|
|
23
|
+
import * as i0 from "@angular/core";
|
|
24
|
+
import * as i1 from "@angular/forms";
|
|
25
|
+
import * as i2 from "carbon-components-angular";
|
|
26
|
+
import * as i3 from "@ngx-translate/core";
|
|
27
|
+
import * as i4 from "@valtimo/document";
|
|
28
|
+
import * as i5 from "@angular/common";
|
|
29
|
+
import * as i6 from "@valtimo/components";
|
|
30
|
+
export class DossierManagementModalComponent {
|
|
31
|
+
set type(value) {
|
|
32
|
+
this._type$.next(value);
|
|
33
|
+
if (value === 'closed') {
|
|
34
|
+
setTimeout(() => {
|
|
35
|
+
this._typeAnimationDelay$.next(value);
|
|
36
|
+
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this._typeAnimationDelay$.next(value);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
set prefill(value) {
|
|
43
|
+
this._prefillCaseTag.next(value);
|
|
44
|
+
}
|
|
45
|
+
get key() {
|
|
46
|
+
return this.caseTagFormGroup?.get('key') ?? new FormControl('');
|
|
47
|
+
}
|
|
48
|
+
get title() {
|
|
49
|
+
return this.caseTagFormGroup?.get('title') ?? new FormControl('');
|
|
50
|
+
}
|
|
51
|
+
get color() {
|
|
52
|
+
return this.caseTagFormGroup?.get('color') ?? new FormControl('');
|
|
53
|
+
}
|
|
54
|
+
get invalid() {
|
|
55
|
+
return !!this.caseTagFormGroup?.invalid;
|
|
56
|
+
}
|
|
57
|
+
get pristine() {
|
|
58
|
+
return !!this.caseTagFormGroup?.pristine;
|
|
59
|
+
}
|
|
60
|
+
constructor(fb, iconService, translateService, caseTagService) {
|
|
61
|
+
this.fb = fb;
|
|
62
|
+
this.iconService = iconService;
|
|
63
|
+
this.translateService = translateService;
|
|
64
|
+
this.caseTagService = caseTagService;
|
|
65
|
+
this.closeModalEvent = new EventEmitter();
|
|
66
|
+
this.isCaseTag = false;
|
|
67
|
+
this._type$ = new BehaviorSubject(undefined);
|
|
68
|
+
this._typeAnimationDelay$ = new BehaviorSubject(undefined);
|
|
69
|
+
this._prefillCaseTag = new BehaviorSubject(undefined);
|
|
70
|
+
this.caseTagFormGroup = this.fb.group({
|
|
71
|
+
title: this.fb.control('', Validators.required),
|
|
72
|
+
key: this.fb.control('', [
|
|
73
|
+
Validators.required,
|
|
74
|
+
Validators.minLength(3),
|
|
75
|
+
this.uniqueKeyValidator,
|
|
76
|
+
]),
|
|
77
|
+
color: this.fb.control('', Validators.required),
|
|
78
|
+
});
|
|
79
|
+
this.isEdit$ = combineLatest([this._typeAnimationDelay$, this._prefillCaseTag]).pipe(map(([type, prefillCaseTag]) => {
|
|
80
|
+
if (type === 'edit' && prefillCaseTag) {
|
|
81
|
+
this.prefillForm(prefillCaseTag);
|
|
82
|
+
}
|
|
83
|
+
return type === 'edit';
|
|
84
|
+
}));
|
|
85
|
+
this.isAdd$ = this._typeAnimationDelay$.pipe(map(type => {
|
|
86
|
+
if (type === 'add')
|
|
87
|
+
this.resetForm();
|
|
88
|
+
return type === 'add';
|
|
89
|
+
}));
|
|
90
|
+
this.isClosed$ = this._type$.pipe(map(type => type === 'closed'));
|
|
91
|
+
this.disabled$ = new BehaviorSubject(false);
|
|
92
|
+
this.COLORS = Object.values(TagColor);
|
|
93
|
+
this._selectedColor$ = new BehaviorSubject(undefined);
|
|
94
|
+
this.colorListItems$ = combineLatest([
|
|
95
|
+
this._selectedColor$,
|
|
96
|
+
this.translateService.stream('key'),
|
|
97
|
+
]).pipe(map(([selectedColor]) => this.COLORS.map(color => ({
|
|
98
|
+
selected: color === selectedColor,
|
|
99
|
+
content: this.translateService.instant('interface.tagType.' + CaseTagsUtils.getTagTypeFromCaseTagColor(color)),
|
|
100
|
+
color,
|
|
101
|
+
tagType: CaseTagsUtils.getTagTypeFromCaseTagColor(color),
|
|
102
|
+
}))));
|
|
103
|
+
this.editingKey$ = new BehaviorSubject(false);
|
|
104
|
+
this._originalCaseTagKey$ = new BehaviorSubject('');
|
|
105
|
+
this._subscriptions = new Subscription();
|
|
106
|
+
this.iconService.registerAll([Edit16]);
|
|
107
|
+
}
|
|
108
|
+
ngOnInit() {
|
|
109
|
+
this.openAutoKeySubscription();
|
|
110
|
+
}
|
|
111
|
+
ngOnDestroy() {
|
|
112
|
+
this._subscriptions.unsubscribe();
|
|
113
|
+
}
|
|
114
|
+
addCaseTag() {
|
|
115
|
+
this.disable();
|
|
116
|
+
this._subscriptions.add(this.caseTagService.saveCaseTag(this.documentDefinitionName, this.getFormValue()).subscribe({
|
|
117
|
+
next: () => {
|
|
118
|
+
this.enable();
|
|
119
|
+
this.closeAndRefresh();
|
|
120
|
+
},
|
|
121
|
+
error: () => {
|
|
122
|
+
this.enable(false);
|
|
123
|
+
},
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
editCaseTag() {
|
|
127
|
+
this.disable();
|
|
128
|
+
this._originalCaseTagKey$
|
|
129
|
+
.pipe(take(1), switchMap(originalCaseTagKey => {
|
|
130
|
+
return this.caseTagService.updateCaseTag(this.documentDefinitionName, originalCaseTagKey, this.getFormValue());
|
|
131
|
+
}))
|
|
132
|
+
.subscribe({
|
|
133
|
+
next: () => {
|
|
134
|
+
this.enable();
|
|
135
|
+
this.closeAndRefresh();
|
|
136
|
+
},
|
|
137
|
+
error: () => {
|
|
138
|
+
this.enable(false);
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
editKeyButtonClick() {
|
|
143
|
+
this.editingKey$.next(true);
|
|
144
|
+
}
|
|
145
|
+
colorDropdownChange(event) {
|
|
146
|
+
const newColor = event?.item?.color;
|
|
147
|
+
if (newColor) {
|
|
148
|
+
this._selectedColor$.next(newColor);
|
|
149
|
+
this.caseTagFormGroup.patchValue({ color: newColor });
|
|
150
|
+
this.caseTagFormGroup.markAsDirty();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
close() {
|
|
154
|
+
this.closeModalEvent.emit('close');
|
|
155
|
+
}
|
|
156
|
+
onClose() {
|
|
157
|
+
this.close();
|
|
158
|
+
}
|
|
159
|
+
prefillForm(prefillCaseTag) {
|
|
160
|
+
this._originalCaseTagKey$.next(prefillCaseTag.key);
|
|
161
|
+
this.caseTagFormGroup.patchValue({
|
|
162
|
+
key: prefillCaseTag.key,
|
|
163
|
+
title: prefillCaseTag.title,
|
|
164
|
+
color: prefillCaseTag.color,
|
|
165
|
+
});
|
|
166
|
+
this._selectedColor$.next(prefillCaseTag.color);
|
|
167
|
+
this.caseTagFormGroup.markAsPristine();
|
|
168
|
+
this.resetEditingKey();
|
|
169
|
+
}
|
|
170
|
+
resetForm() {
|
|
171
|
+
this.caseTagFormGroup.patchValue({
|
|
172
|
+
key: '',
|
|
173
|
+
title: '',
|
|
174
|
+
color: TagColor.Blue,
|
|
175
|
+
});
|
|
176
|
+
this._selectedColor$.next(TagColor.Blue);
|
|
177
|
+
this.caseTagFormGroup.markAsPristine();
|
|
178
|
+
this.resetEditingKey();
|
|
179
|
+
}
|
|
180
|
+
resetEditingKey() {
|
|
181
|
+
this.editingKey$.next(false);
|
|
182
|
+
}
|
|
183
|
+
openAutoKeySubscription() {
|
|
184
|
+
this._subscriptions.add(combineLatest([this.isAdd$, this.title.valueChanges, this.editingKey$]).subscribe(([isAdd, titleValue, editingKey]) => {
|
|
185
|
+
if (isAdd && !editingKey) {
|
|
186
|
+
if (titleValue) {
|
|
187
|
+
this.caseTagFormGroup.patchValue({ key: this.getUniqueKey(titleValue) });
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
this.clearKey();
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}));
|
|
194
|
+
}
|
|
195
|
+
getUniqueKey(title) {
|
|
196
|
+
const dashCaseKey = `${title}`
|
|
197
|
+
.toLowerCase()
|
|
198
|
+
.replace(/[^a-z0-9-_]+|-[^a-z0-9]+/g, '-')
|
|
199
|
+
.replace(/_[-_]+/g, '_')
|
|
200
|
+
.replace(/^[^a-z]+/g, '');
|
|
201
|
+
const usedKeys = this.usedKeys;
|
|
202
|
+
if (!usedKeys.includes(dashCaseKey)) {
|
|
203
|
+
return dashCaseKey;
|
|
204
|
+
}
|
|
205
|
+
return this.getUniqueKeyWithNumber(dashCaseKey, usedKeys);
|
|
206
|
+
}
|
|
207
|
+
getUniqueKeyWithNumber(dashCaseKey, usedKeys) {
|
|
208
|
+
const numbersFromCurrentKey = (dashCaseKey.match(/^\d+|\d+\b|\d+(?=\w)/g) || []).map((numberValue) => +numberValue);
|
|
209
|
+
const lastNumberFromCurrentKey = numbersFromCurrentKey.length > 0 && numbersFromCurrentKey[numbersFromCurrentKey.length - 1];
|
|
210
|
+
const newKey = lastNumberFromCurrentKey
|
|
211
|
+
? `${dashCaseKey.replace(`${lastNumberFromCurrentKey}`, `${lastNumberFromCurrentKey + 1}`)}`
|
|
212
|
+
: `${dashCaseKey}-1`;
|
|
213
|
+
if (usedKeys.includes(newKey)) {
|
|
214
|
+
return this.getUniqueKeyWithNumber(newKey, usedKeys);
|
|
215
|
+
}
|
|
216
|
+
return newKey;
|
|
217
|
+
}
|
|
218
|
+
clearKey() {
|
|
219
|
+
this.caseTagFormGroup.patchValue({ key: '' });
|
|
220
|
+
}
|
|
221
|
+
uniqueKeyValidator() {
|
|
222
|
+
return (control) => combineLatest([this.isEdit$, control.valueChanges]).pipe(map(([isEdit, keyValue]) => this.usedKeys?.every((key) => key !== keyValue) || isEdit
|
|
223
|
+
? null
|
|
224
|
+
: { uniqueKey: { value: control.value } }));
|
|
225
|
+
}
|
|
226
|
+
disable() {
|
|
227
|
+
this.disabled$.next(true);
|
|
228
|
+
this.caseTagFormGroup.disable();
|
|
229
|
+
}
|
|
230
|
+
enable(delay = true) {
|
|
231
|
+
setTimeout(() => {
|
|
232
|
+
this.disabled$.next(false);
|
|
233
|
+
this.caseTagFormGroup.enable();
|
|
234
|
+
}, delay ? CARBON_CONSTANTS.modalAnimationMs : 0);
|
|
235
|
+
}
|
|
236
|
+
closeAndRefresh() {
|
|
237
|
+
this.closeModalEvent.emit('closeAndRefresh');
|
|
238
|
+
}
|
|
239
|
+
getFormValue() {
|
|
240
|
+
return {
|
|
241
|
+
key: this.key.value,
|
|
242
|
+
title: this.title.value,
|
|
243
|
+
color: this.color.value,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementModalComponent, deps: [{ token: i1.FormBuilder }, { token: i2.IconService }, { token: i3.TranslateService }, { token: i4.CaseTagService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
247
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierManagementModalComponent, selector: "valtimo-dossier-management-case-tag-modal", inputs: { type: "type", prefill: "prefill", usedKeys: "usedKeys", documentDefinitionName: "documentDefinitionName" }, outputs: { closeModalEvent: "closeModalEvent" }, 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<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async,\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"close()\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isEdit ? ('dossierManagement.caseTags.edit' | translate) : '' }}\n {{ obs.isAdd ? ('dossierManagement.caseTags.add' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"caseTagForm; context: {obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <cds-tag\n *ngIf=\"item && item.content\"\n class=\"cds-tag--no-margin case-tag-margins\"\n [type]=\"item?.tagType\"\n >\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n\n<ng-template #caseTagForm let-obs=\"obs\">\n <form [formGroup]=\"caseTagFormGroup\" class=\"case-tag-form\">\n <cds-label>\n {{ 'dossierManagement.caseTags.columns.title' | translate }}\n <input cdsText formControlName=\"title\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'dossierManagement.caseTags.columns.key' | translate }}\n\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n [readOnly]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('dossierManagement.caseTags.keyAutoGenerated' | translate)\n : ''\n \"\n />\n\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'dossierManagement.caseTags.columns.color' | translate }}\n\n <cds-dropdown\n [id]=\"'status-color-dropdown'\"\n [appendInline]=\"false\"\n [placeholder]=\"'dossierManagement.caseTags.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list [items]=\"colorListItems$\" [listTpl]=\"colorDropdownItemTemplate\">\n </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"secondary\" (click)=\"onClose()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addCaseTag()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editCaseTag()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n</ng-template>\n", styles: [".case-tag-form{display:flex;flex-direction:column;gap:16px}.edit-key-input{height:40px;display:flex;width:100%;flex-direction:row;gap:16px;align-items:flex-end}.edit-key-input input:read-only{color:var(--cds-text-disabled)}::ng-deep .horizontal-inputs{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}::ng-deep .horizontal-inputs .cds--label{width:100%;display:flex;flex-direction:column;gap:8px}.case-tag-margins{margin-top:-4px;margin-left:2px}\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: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i2.IconButton, selector: "cds-icon-button, ibm-icon-button", inputs: ["buttonNgClass", "buttonAttributes", "buttonId", "kind", "size", "type", "isExpressive", "disabled", "description"], outputs: ["click", "focus", "blur", "tooltipClick"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i2.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i2.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i2.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i2.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i2.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "component", type: i2.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i2.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i2.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "directive", type: i6.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]" }, { kind: "component", type: i2.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
248
|
+
}
|
|
249
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementModalComponent, decorators: [{
|
|
250
|
+
type: Component,
|
|
251
|
+
args: [{ selector: 'valtimo-dossier-management-case-tag-modal', 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<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async,\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"close()\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isEdit ? ('dossierManagement.caseTags.edit' | translate) : '' }}\n {{ obs.isAdd ? ('dossierManagement.caseTags.add' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"caseTagForm; context: {obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <cds-tag\n *ngIf=\"item && item.content\"\n class=\"cds-tag--no-margin case-tag-margins\"\n [type]=\"item?.tagType\"\n >\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n\n<ng-template #caseTagForm let-obs=\"obs\">\n <form [formGroup]=\"caseTagFormGroup\" class=\"case-tag-form\">\n <cds-label>\n {{ 'dossierManagement.caseTags.columns.title' | translate }}\n <input cdsText formControlName=\"title\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'dossierManagement.caseTags.columns.key' | translate }}\n\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n [readOnly]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('dossierManagement.caseTags.keyAutoGenerated' | translate)\n : ''\n \"\n />\n\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'dossierManagement.caseTags.columns.color' | translate }}\n\n <cds-dropdown\n [id]=\"'status-color-dropdown'\"\n [appendInline]=\"false\"\n [placeholder]=\"'dossierManagement.caseTags.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list [items]=\"colorListItems$\" [listTpl]=\"colorDropdownItemTemplate\">\n </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"secondary\" (click)=\"onClose()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addCaseTag()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editCaseTag()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n</ng-template>\n", styles: [".case-tag-form{display:flex;flex-direction:column;gap:16px}.edit-key-input{height:40px;display:flex;width:100%;flex-direction:row;gap:16px;align-items:flex-end}.edit-key-input input:read-only{color:var(--cds-text-disabled)}::ng-deep .horizontal-inputs{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}::ng-deep .horizontal-inputs .cds--label{width:100%;display:flex;flex-direction:column;gap:8px}.case-tag-margins{margin-top:-4px;margin-left:2px}\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"] }]
|
|
252
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.IconService }, { type: i3.TranslateService }, { type: i4.CaseTagService }], propDecorators: { type: [{
|
|
253
|
+
type: Input
|
|
254
|
+
}], prefill: [{
|
|
255
|
+
type: Input
|
|
256
|
+
}], usedKeys: [{
|
|
257
|
+
type: Input
|
|
258
|
+
}], documentDefinitionName: [{
|
|
259
|
+
type: Input
|
|
260
|
+
}], closeModalEvent: [{
|
|
261
|
+
type: Output
|
|
262
|
+
}] } });
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LWNhc2UtdGFnLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtY2FzZS10YWdzL2Rvc3NpZXItbWFuYWdlbWVudC1jYXNlLXRhZy1tb2RhbC9kb3NzaWVyLW1hbmFnZW1lbnQtY2FzZS10YWctbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC1jYXNlLXRhZ3MvZG9zc2llci1tYW5hZ2VtZW50LWNhc2UtdGFnLW1vZGFsL2Rvc3NpZXItbWFuYWdlbWVudC1jYXNlLXRhZy1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBSUwsV0FBVyxFQUVYLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBaUIsYUFBYSxFQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFFekUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdyQyxPQUFPLEVBQUMs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SUFFTyxPQUFPO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUk7UUFDekIsVUFBVSxDQUNSLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqQyxDQUFDLEVBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sWUFBWTtRQUNsQixPQUFPO1lBQ0wsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSztZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQWlCO1NBQ3BDLENBQUM7SUFDSixDQUFDOytHQTlTVSwrQkFBK0I7bUdBQS9CLCtCQUErQix3UENqRDVDLGkvSEFnSUE7OzRGRC9FYSwrQkFBK0I7a0JBTjNDLFNBQVM7K0JBQ0UsMkNBQTJDLG1CQUdwQyx1QkFBdUIsQ0FBQyxNQUFNO3NLQUczQixJQUFJO3NCQUF2QixLQUFLO2dCQVljLE9BQU87c0JBQTFCLEtBQUs7Z0JBSVUsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxzQkFBc0I7c0JBQXJDLEtBQUs7Z0JBRVcsZUFBZTtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdGF0dXNNb2RhbENsb3NlRXZlbnQsIFN0YXR1c01vZGFsVHlwZX0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgc3dpdGNoTWFwLCB0YWtlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q0FSQk9OX0NPTlNUQU5UU30gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEFzeW5jVmFsaWRhdG9yRm4sXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtDYXNlVGFnU2VydmljZSwgQ2FzZVRhZ3NVdGlscywgQ2FzZVRhZ30gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtJY29uU2VydmljZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0VkaXQxNn0gZnJvbSAnQGNhcmJvbi9pY29ucyc7XG5pbXBvcnQge0xpc3RJdGVtfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2Ryb3Bkb3duL2xpc3QtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7VGFnQ29sb3J9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWNhc2UtdGFnLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC1jYXNlLXRhZy1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rvc3NpZXItbWFuYWdlbWVudC1jYXNlLXRhZy1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llck1hbmFnZW1lbnRNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIHNldCB0eXBlKHZhbHVlOiBTdGF0dXNNb2RhbFR5cGUpIHtcbiAgICB0aGlzLl90eXBlJC5uZXh0KHZhbHVlKTtcblxuICAgIGlmICh2YWx1ZSA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl90eXBlQW5pbWF0aW9uRGVsYXkkLm5leHQodmFsdWUpO1xuICAgICAgfSwgQ0FSQk9OX0NPTlNUQU5UUy5tb2RhbEFuaW1hdGlvbk1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdHlwZUFuaW1hdGlvbkRlbGF5JC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHByZWZpbGwodmFsdWU6IENhc2VUYWcpIHtcbiAgICB0aGlzLl9wcmVmaWxsQ2FzZVRhZy5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHB1YmxpYyB1c2VkS2V5cyE6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBwdWJsaWMgZG9jdW1lbnREZWZpbml0aW9uTmFtZSE6IHN0cmluZztcblxuICBAT3V0cHV0KCkgcHVibGljIGNsb3NlTW9kYWxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8U3RhdHVzTW9kYWxDbG9zZUV2ZW50PigpO1xuXG4gIHB1YmxpYyBpc0Nhc2VUYWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF90eXBlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RhdHVzTW9kYWxUeXBlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90eXBlQW5pbWF0aW9uRGVsYXkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdGF0dXNNb2RhbFR5cGUgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZFxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wcmVmaWxsQ2FzZVRhZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FzZVRhZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FzZVRhZ0Zvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIHRpdGxlOiB0aGlzLmZiLmNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIGtleTogdGhpcy5mYi5jb250cm9sKCcnLCBbXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksXG4gICAgICB0aGlzLnVuaXF1ZUtleVZhbGlkYXRvcixcbiAgICBdKSxcbiAgICBjb2xvcjogdGhpcy5mYi5jb250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzRWRpdCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl90eXBlQW5pbWF0aW9uRGVsYXkkLCB0aGlzLl9wcmVmaWxsQ2FzZVRhZ10pLnBpcGUoXG4gICAgbWFwKChbdHlwZSwgcHJlZmlsbENhc2VUYWddKSA9PiB7XG4gICAgICBpZiAodHlwZSA9PT0gJ2VkaXQnICYmIHByZWZpbGxDYXNlVGFnKSB7XG4gICAgICAgIHRoaXMucHJlZmlsbEZvcm0ocHJlZmlsbENhc2VUYWcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHR5cGUgPT09ICdlZGl0JztcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBpc0FkZCQgPSB0aGlzLl90eXBlQW5pbWF0aW9uRGVsYXkkLnBpcGUoXG4gICAgbWFwKHR5cGUgPT4ge1xuICAgICAgaWYgKHR5cGUgPT09ICdhZGQnKSB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgcmV0dXJuIHR5cGUgPT09ICdhZGQnO1xuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzQ2xvc2VkJCA9IHRoaXMuX3R5cGUkLnBpcGUobWFwKHR5cGUgPT4gdHlwZSA9PT0gJ2Nsb3NlZCcpKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBDT0xPUlM6IFRhZ0NvbG9yW10gPSBPYmplY3QudmFsdWVzKFRhZ0NvbG9yKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0ZWRDb2xvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhZ0NvbG9yIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb2xvckxpc3RJdGVtcyQ6IE9ic2VydmFibGU8TGlzdEl0ZW1bXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9zZWxlY3RlZENvbG9yJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtzZWxlY3RlZENvbG9yXSkgPT5cbiAgICAgIHRoaXMuQ09MT1JTLm1hcChjb2xvciA9PiAoe1xuICAgICAgICBzZWxlY3RlZDogY29sb3IgPT09IHNlbGVjdGVkQ29sb3IsXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdpbnRlcmZhY2UudGFnVHlwZS4nICsgQ2FzZVRhZ3NVdGlscy5nZXRUYWdUeXBlRnJvbUNhc2VUYWdDb2xvcihjb2xvcilcbiAgICAgICAgKSxcbiAgICAgICAgY29sb3IsXG4gICAgICAgIHRhZ1R5cGU6IENhc2VUYWdzVXRpbHMuZ2V0VGFnVHlwZUZyb21DYXNlVGFnQ29sb3IoY29sb3IpLFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyBnZXQga2V5KCk6IEFic3RyYWN0Q29udHJvbDxzdHJpbmcgfCBudWxsLCBzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZVRhZ0Zvcm1Hcm91cD8uZ2V0KCdrZXknKSA/PyBuZXcgRm9ybUNvbnRyb2woJycpO1xuICB9XG5cbiAgcHVibGljIGdldCB0aXRsZSgpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgbnVsbCwgc3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VUYWdGb3JtR3JvdXA/LmdldCgndGl0bGUnKSA/PyBuZXcgRm9ybUNvbnRyb2woJycpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2xvcigpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgbnVsbCwgc3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VUYWdGb3JtR3JvdXA/LmdldCgnY29sb3InKSA/PyBuZXcgRm9ybUNvbnRyb2woJycpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY2FzZVRhZ0Zvcm1Hcm91cD8uaW52YWxpZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJpc3RpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5jYXNlVGFnRm9ybUdyb3VwPy5wcmlzdGluZTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBlZGl0aW5nS2V5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29yaWdpbmFsQ2FzZVRhZ0tleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29uU2VydmljZTogSWNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZVRhZ1NlcnZpY2U6IENhc2VUYWdTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0VkaXQxNl0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlbkF1dG9LZXlTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgYWRkQ2FzZVRhZygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGUoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuY2FzZVRhZ1NlcnZpY2Uuc2F2ZUNhc2VUYWcodGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lLCB0aGlzLmdldEZvcm1WYWx1ZSgpKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgICB0aGlzLmNsb3NlQW5kUmVmcmVzaCgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZW5hYmxlKGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBlZGl0Q2FzZVRhZygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGUoKTtcblxuICAgIHRoaXMuX29yaWdpbmFsQ2FzZVRhZ0tleSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAob3JpZ2luYWxDYXNlVGFnS2V5ID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jYXNlVGFnU2VydmljZS51cGRhdGVDYXNlVGFnKFxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lLFxuICAgICAgICAgICAgb3JpZ2luYWxDYXNlVGFnS2V5LFxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtVmFsdWUoKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICAgICAgdGhpcy5jbG9zZUFuZFJlZnJlc2goKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmVuYWJsZShmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBlZGl0S2V5QnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0aW5nS2V5JC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGNvbG9yRHJvcGRvd25DaGFuZ2UoZXZlbnQ6IHtcbiAgICBpdGVtOiB7Y29sb3I6IHN0cmluZzsgY29udGVudDogc3RyaW5nOyBzZWxlY3RlZDogYm9vbGVhbn07XG4gICAgaXNVcGRhdGU6IGJvb2xlYW47XG4gIH0pOiB2b2lkIHtcbiAgICBjb25zdCBuZXdDb2xvciA9IGV2ZW50Py5pdGVtPy5jb2xvciBhcyBUYWdDb2xvcjtcblxuICAgIGlmIChuZXdDb2xvcikge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRDb2xvciQubmV4dChuZXdDb2xvcik7XG4gICAgICB0aGlzLmNhc2VUYWdGb3JtR3JvdXAucGF0Y2hWYWx1ZSh7Y29sb3I6IG5ld0NvbG9yfSk7XG4gICAgICB0aGlzLmNhc2VUYWdGb3JtR3JvdXAubWFya0FzRGlydHkoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU1vZGFsRXZlbnQuZW1pdCgnY2xvc2UnKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlZmlsbEZvcm0ocHJlZmlsbENhc2VUYWc6IENhc2VUYWcpOiB2b2lkIHtcbiAgICB0aGlzLl9vcmlnaW5hbENhc2VUYWdLZXkkLm5leHQocHJlZmlsbENhc2VUYWcua2V5KTtcbiAgICB0aGlzLmNhc2VUYWdGb3JtR3JvdXAucGF0Y2hWYWx1ZSh7XG4gICAgICBrZXk6IHByZWZpbGxDYXNlVGFnLmtleSxcbiAgICAgIHRpdGxlOiBwcmVmaWxsQ2FzZVRhZy50aXRsZSxcbiAgICAgIGNvbG9yOiBwcmVmaWxsQ2FzZVRhZy5jb2xvcixcbiAgICB9KTtcbiAgICB0aGlzLl9zZWxlY3RlZENvbG9yJC5uZXh0KHByZWZpbGxDYXNlVGFnLmNvbG9yKTtcbiAgICB0aGlzLmNhc2VUYWdGb3JtR3JvdXAubWFya0FzUHJpc3RpbmUoKTtcbiAgICB0aGlzLnJlc2V0RWRpdGluZ0tleSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlVGFnRm9ybUdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAga2V5OiAnJyxcbiAgICAgIHRpdGxlOiAnJyxcbiAgICAgIGNvbG9yOiBUYWdDb2xvci5CbHVlLFxuICAgIH0pO1xuICAgIHRoaXMuX3NlbGVjdGVkQ29sb3IkLm5leHQoVGFnQ29sb3IuQmx1ZSk7XG4gICAgdGhpcy5jYXNlVGFnRm9ybUdyb3VwLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgdGhpcy5yZXNldEVkaXRpbmdLZXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRFZGl0aW5nS2V5KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdGluZ0tleSQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5BdXRvS2V5U3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5pc0FkZCQsIHRoaXMudGl0bGUudmFsdWVDaGFuZ2VzLCB0aGlzLmVkaXRpbmdLZXkkXSkuc3Vic2NyaWJlKFxuICAgICAgICAoW2lzQWRkLCB0aXRsZVZhbHVlLCBlZGl0aW5nS2V5XSkgPT4ge1xuICAgICAgICAgIGlmIChpc0FkZCAmJiAhZWRpdGluZ0tleSkge1xuICAgICAgICAgICAgaWYgKHRpdGxlVmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5jYXNlVGFnRm9ybUdyb3VwLnBhdGNoVmFsdWUoe2tleTogdGhpcy5nZXRVbmlxdWVLZXkodGl0bGVWYWx1ZSl9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJLZXkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVbmlxdWVLZXkodGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGFzaENhc2VLZXkgPSBgJHt0aXRsZX1gXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1teYS16MC05LV9dK3wtW15hLXowLTldKy9nLCAnLScpXG4gICAgICAucmVwbGFjZSgvX1stX10rL2csICdfJylcbiAgICAgIC5yZXBsYWNlKC9eW15hLXpdKy9nLCAnJyk7XG4gICAgY29uc3QgdXNlZEtleXMgPSB0aGlzLnVzZWRLZXlzO1xuXG4gICAgaWYgKCF1c2VkS2V5cy5pbmNsdWRlcyhkYXNoQ2FzZUtleSkpIHtcbiAgICAgIHJldHVybiBkYXNoQ2FzZUtleTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRVbmlxdWVLZXlXaXRoTnVtYmVyKGRhc2hDYXNlS2V5LCB1c2VkS2V5cyk7XG4gIH1cblxuICBwcml2YXRlIGdldFVuaXF1ZUtleVdpdGhOdW1iZXIoZGFzaENhc2VLZXk6IHN0cmluZywgdXNlZEtleXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBjb25zdCBudW1iZXJzRnJvbUN1cnJlbnRLZXkgPSAoZGFzaENhc2VLZXkubWF0Y2goL15cXGQrfFxcZCtcXGJ8XFxkKyg/PVxcdykvZykgfHwgW10pLm1hcChcbiAgICAgIChudW1iZXJWYWx1ZTogc3RyaW5nKSA9PiArbnVtYmVyVmFsdWVcbiAgICApO1xuICAgIGNvbnN0IGxhc3ROdW1iZXJGcm9tQ3VycmVudEtleSA9XG4gICAgICBudW1iZXJzRnJvbUN1cnJlbnRLZXkubGVuZ3RoID4gMCAmJiBudW1iZXJzRnJvbUN1cnJlbnRLZXlbbnVtYmVyc0Zyb21DdXJyZW50S2V5Lmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IG5ld0tleSA9IGxhc3ROdW1iZXJGcm9tQ3VycmVudEtleVxuICAgICAgPyBgJHtkYXNoQ2FzZUtleS5yZXBsYWNlKGAke2xhc3ROdW1iZXJGcm9tQ3VycmVudEtleX1gLCBgJHtsYXN0TnVtYmVyRnJvbUN1cnJlbnRLZXkgKyAxfWApfWBcbiAgICAgIDogYCR7ZGFzaENhc2VLZXl9LTFgO1xuXG4gICAgaWYgKHVzZWRLZXlzLmluY2x1ZGVzKG5ld0tleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVuaXF1ZUtleVdpdGhOdW1iZXIobmV3S2V5LCB1c2VkS2V5cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0tleTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJLZXkoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlVGFnRm9ybUdyb3VwLnBhdGNoVmFsdWUoe2tleTogJyd9KTtcbiAgfVxuXG4gIHByaXZhdGUgdW5pcXVlS2V5VmFsaWRhdG9yKCk6IEFzeW5jVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuaXNFZGl0JCwgY29udHJvbC52YWx1ZUNoYW5nZXNdKS5waXBlKFxuICAgICAgICBtYXAoKFtpc0VkaXQsIGtleVZhbHVlXSkgPT5cbiAgICAgICAgICB0aGlzLnVzZWRLZXlzPy5ldmVyeSgoa2V5OiBzdHJpbmcpID0+IGtleSAhPT0ga2V5VmFsdWUpIHx8IGlzRWRpdFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IHt1bmlxdWVLZXk6IHt2YWx1ZTogY29udHJvbC52YWx1ZX19XG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmNhc2VUYWdGb3JtR3JvdXAuZGlzYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGUoZGVsYXkgPSB0cnVlKTogdm9pZCB7XG4gICAgc2V0VGltZW91dChcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMuY2FzZVRhZ0Zvcm1Hcm91cC5lbmFibGUoKTtcbiAgICAgIH0sXG4gICAgICBkZWxheSA/IENBUkJPTl9DT05TVEFOVFMubW9kYWxBbmltYXRpb25NcyA6IDBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZUFuZFJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU1vZGFsRXZlbnQuZW1pdCgnY2xvc2VBbmRSZWZyZXNoJyk7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1WYWx1ZSgpOiBDYXNlVGFnIHtcbiAgICByZXR1cm4ge1xuICAgICAga2V5OiB0aGlzLmtleS52YWx1ZSxcbiAgICAgIHRpdGxlOiB0aGlzLnRpdGxlLnZhbHVlLFxuICAgICAgY29sb3I6IHRoaXMuY29sb3IudmFsdWUgYXMgVGFnQ29sb3IsXG4gICAgfTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48Y2RzLW1vZGFsXG4gIHZhbHRpbW9DZHNNb2RhbFxuICAqbmdJZj1cIntcbiAgICBpc0FkZDogaXNBZGQkIHwgYXN5bmMsXG4gICAgaXNFZGl0OiBpc0VkaXQkIHwgYXN5bmMsXG4gICAgaXNDbG9zZWQ6IGlzQ2xvc2VkJCB8IGFzeW5jLFxuICAgIGVkaXRpbmdLZXk6IGVkaXRpbmdLZXkkIHwgYXN5bmMsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkJCB8IGFzeW5jLFxuICB9IGFzIG9ic1wiXG4gIFtvcGVuXT1cIiFvYnMuaXNDbG9zZWRcIlxuICBzaXplPVwic21cIlxuPlxuICA8Y2RzLW1vZGFsLWhlYWRlciBzaG93Q2xvc2VCdXR0b249XCJ0cnVlXCIgKGNsb3NlU2VsZWN0KT1cImNsb3NlKClcIj5cbiAgICA8aDMgY2RzTW9kYWxIZWFkZXJIZWFkaW5nPlxuICAgICAge3sgb2JzLmlzRWRpdCA/ICgnZG9zc2llck1hbmFnZW1lbnQuY2FzZVRhZ3MuZWRpdCcgfCB0cmFuc2xhdGUpIDogJycgfX1cbiAgICAgIHt7IG9icy5pc0FkZCA/ICgnZG9zc2llck1hbmFnZW1lbnQuY2FzZVRhZ3MuYWRkJyB8IHRyYW5zbGF0ZSkgOiAnJyB9fVxuICAgIDwvaDM+XG4gIDwvY2RzLW1vZGFsLWhlYWRlcj5cblxuICA8c2VjdGlvbiBjZHNNb2RhbENvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhc2VUYWdGb3JtOyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvc2VjdGlvbj5cblxuICA8Y2RzLW1vZGFsLWZvb3Rlcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uczsgY29udGV4dDoge29iczogb2JzfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Nkcy1tb2RhbC1mb290ZXI+XG48L2Nkcy1tb2RhbD5cblxuPG5nLXRlbXBsYXRlICNjb2xvckRyb3Bkb3duSXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8Y2RzLXRhZ1xuICAgICpuZ0lmPVwiaXRlbSAmJiBpdGVtLmNvbnRlbnRcIlxuICAgIGNsYXNzPVwiY2RzLXRhZy0tbm8tbWFyZ2luIGNhc2UtdGFnLW1hcmdpbnNcIlxuICAgIFt0eXBlXT1cIml0ZW0/LnRhZ1R5cGVcIlxuICA+XG4gICAge3sgJ2ludGVyZmFjZS50YWdUeXBlLicgKyBpdGVtPy50YWdUeXBlIHwgdHJhbnNsYXRlIH19XG4gIDwvY2RzLXRhZz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2FzZVRhZ0Zvcm0gbGV0LW9icz1cIm9ic1wiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNhc2VUYWdGb3JtR3JvdXBcIiBjbGFzcz1cImNhc2UtdGFnLWZvcm1cIj5cbiAgICA8Y2RzLWxhYmVsPlxuICAgICAge3sgJ2Rvc3NpZXJNYW5hZ2VtZW50LmNhc2VUYWdzLmNvbHVtbnMudGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8aW5wdXQgY2RzVGV4dCBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIFthdHRyLm1vZGFsLXByaW1hcnktZm9jdXNdPVwidHJ1ZVwiIC8+XG4gICAgPC9jZHMtbGFiZWw+XG5cbiAgICA8Y2RzLWxhYmVsPlxuICAgICAge3sgJ2Rvc3NpZXJNYW5hZ2VtZW50LmNhc2VUYWdzLmNvbHVtbnMua2V5JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZWRpdC1rZXktaW5wdXRcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImtleVwiXG4gICAgICAgICAgW3JlYWRPbmx5XT1cIiFvYnMuZWRpdGluZ0tleVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgb2JzLmlzQWRkICYmICFvYnMuZWRpdGluZ0tleVxuICAgICAgICAgICAgICA/ICgnZG9zc2llck1hbmFnZW1lbnQuY2FzZVRhZ3Mua2V5QXV0b0dlbmVyYXRlZCcgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgIDogJydcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxjZHMtaWNvbi1idXR0b25cbiAgICAgICAgICAqbmdJZj1cIiFvYnMuZWRpdGluZ0tleSAmJiBvYnMuaXNBZGRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJlZGl0S2V5QnV0dG9uQ2xpY2soKVwiXG4gICAgICAgICAga2luZD1cInNlY29uZGFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiZWRpdFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgICAgICA8L2Nkcy1pY29uLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvY2RzLWxhYmVsPlxuXG4gICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtaW5wdXRzXCI+XG4gICAgICA8Y2RzLWxhYmVsPlxuICAgICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuY2FzZVRhZ3MuY29sdW1ucy5jb2xvcicgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICA8Y2RzLWRyb3Bkb3duXG4gICAgICAgICAgW2lkXT1cIidzdGF0dXMtY29sb3ItZHJvcGRvd24nXCJcbiAgICAgICAgICBbYXBwZW5kSW5saW5lXT1cImZhbHNlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2Rvc3NpZXJNYW5hZ2VtZW50LmNhc2VUYWdzLmNvbG9yUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAoc2VsZWN0ZWQpPVwiY29sb3JEcm9wZG93bkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwiY29sb3JMaXN0SXRlbXMkXCIgW2xpc3RUcGxdPVwiY29sb3JEcm9wZG93bkl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgIDwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgICAgIDwvY2RzLWRyb3Bkb3duPlxuICAgICAgPC9jZHMtbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9ucyBsZXQtb2JzPVwib2JzXCI+XG4gIDxidXR0b24gY2RzQnV0dG9uPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIj5cbiAgICB7eyAnaW50ZXJmYWNlLmNhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwib2JzLmlzQWRkXCJcbiAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwiaW52YWxpZCB8fCBwcmlzdGluZSB8fCBvYnMuZGlzYWJsZWRcIlxuICAgIChjbGljayk9XCJhZGRDYXNlVGFnKClcIlxuICA+XG4gICAge3sgJ2ludGVyZmFjZS5hZGQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b25cbiAgICAqbmdJZj1cIm9icy5pc0VkaXRcIlxuICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgIFtkaXNhYmxlZF09XCJpbnZhbGlkIHx8IHByaXN0aW5lIHx8IG9icy5kaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cImVkaXRDYXNlVGFnKClcIlxuICA+XG4gICAge3sgJ2ludGVyZmFjZS5zYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,149 @@
|
|
|
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, signal, ViewChild, } from '@angular/core';
|
|
17
|
+
import { CaseTagsUtils } from '@valtimo/document';
|
|
18
|
+
import { BehaviorSubject, combineLatest, filter, map, Subject, switchMap, tap, Subscription, } from 'rxjs';
|
|
19
|
+
import { ViewType } from '@valtimo/components';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "@valtimo/document";
|
|
22
|
+
import * as i2 from "@angular/router";
|
|
23
|
+
import * as i3 from "@angular/common";
|
|
24
|
+
import * as i4 from "carbon-components-angular";
|
|
25
|
+
import * as i5 from "@valtimo/components";
|
|
26
|
+
import * as i6 from "./dossier-management-case-tag-modal/dossier-management-case-tag-modal.component";
|
|
27
|
+
import * as i7 from "@ngx-translate/core";
|
|
28
|
+
export class DossierManagementCaseTagComponent {
|
|
29
|
+
get documentDefinitionName$() {
|
|
30
|
+
return this._documentDefinitionName$;
|
|
31
|
+
}
|
|
32
|
+
constructor(caseTagService, route) {
|
|
33
|
+
this.caseTagService = caseTagService;
|
|
34
|
+
this.route = route;
|
|
35
|
+
this._reload$ = new BehaviorSubject(null);
|
|
36
|
+
this._documentDefinitionName$ = this.route.params.pipe(map(params => params?.name), filter(docDefName => !!docDefName));
|
|
37
|
+
this.loading$ = new BehaviorSubject(true);
|
|
38
|
+
this.dragAndDropDisabled = signal(false);
|
|
39
|
+
this.usedKeys$ = new BehaviorSubject([]);
|
|
40
|
+
this._documentCaseTags = [];
|
|
41
|
+
this._subscriptions = new Subscription();
|
|
42
|
+
this.documentCaseTags$ = combineLatest([
|
|
43
|
+
this._documentDefinitionName$,
|
|
44
|
+
this._reload$,
|
|
45
|
+
]).pipe(tap(([_, reload]) => {
|
|
46
|
+
if (reload === null) {
|
|
47
|
+
this.loading$.next(true);
|
|
48
|
+
}
|
|
49
|
+
}), switchMap(([documentDefinitionName]) => this.caseTagService.getCaseTagsManagement(documentDefinitionName)), map(caseTags => caseTags.map(caseTag => ({
|
|
50
|
+
...caseTag,
|
|
51
|
+
tagType: CaseTagsUtils.getTagTypeFromCaseTagColor(caseTag.color),
|
|
52
|
+
}))), tap(caseTags => {
|
|
53
|
+
this._documentCaseTags = caseTags;
|
|
54
|
+
this.usedKeys$.next(caseTags.map(caseTag => caseTag.key));
|
|
55
|
+
this.loading$.next(false);
|
|
56
|
+
}));
|
|
57
|
+
this.fields$ = new BehaviorSubject([]);
|
|
58
|
+
this.ACTION_ITEMS = [
|
|
59
|
+
{
|
|
60
|
+
label: 'interface.edit',
|
|
61
|
+
callback: this.openEditModal.bind(this),
|
|
62
|
+
type: 'normal',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
label: 'interface.delete',
|
|
66
|
+
callback: this.openDeleteModal.bind(this),
|
|
67
|
+
type: 'danger',
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
this.statusModalType$ = new BehaviorSubject('closed');
|
|
71
|
+
this.prefillCaseTag$ = new BehaviorSubject(undefined);
|
|
72
|
+
this.caseTagToDelete$ = new BehaviorSubject(undefined);
|
|
73
|
+
this.showDeleteModal$ = new Subject();
|
|
74
|
+
}
|
|
75
|
+
ngAfterViewInit() {
|
|
76
|
+
this.initFields();
|
|
77
|
+
}
|
|
78
|
+
ngOnDestroy() {
|
|
79
|
+
this._subscriptions.unsubscribe();
|
|
80
|
+
}
|
|
81
|
+
openDeleteModal(caseTag) {
|
|
82
|
+
this.caseTagToDelete$.next(caseTag);
|
|
83
|
+
this.showDeleteModal$.next(true);
|
|
84
|
+
}
|
|
85
|
+
openEditModal(caseTag) {
|
|
86
|
+
this.prefillCaseTag$.next(caseTag);
|
|
87
|
+
this.statusModalType$.next('edit');
|
|
88
|
+
}
|
|
89
|
+
openAddModal() {
|
|
90
|
+
this.statusModalType$.next('add');
|
|
91
|
+
}
|
|
92
|
+
closeModal(closeModalEvent) {
|
|
93
|
+
if (closeModalEvent === 'closeAndRefresh') {
|
|
94
|
+
this.reload();
|
|
95
|
+
}
|
|
96
|
+
this.statusModalType$.next('closed');
|
|
97
|
+
}
|
|
98
|
+
confirmDeleteCaseTag(caseTag) {
|
|
99
|
+
this._subscriptions.add(this.documentDefinitionName$
|
|
100
|
+
.pipe(switchMap(documentDefinitionName => this.caseTagService.deleteCaseTag(documentDefinitionName, caseTag.key)))
|
|
101
|
+
.subscribe(() => {
|
|
102
|
+
this.reload();
|
|
103
|
+
}));
|
|
104
|
+
}
|
|
105
|
+
onItemsReorderedEvent(reorderedItems) {
|
|
106
|
+
if (!reorderedItems)
|
|
107
|
+
return;
|
|
108
|
+
this.dragAndDropDisabled.set(true);
|
|
109
|
+
this._subscriptions.add(this.documentDefinitionName$
|
|
110
|
+
.pipe(switchMap(documentDefinitionName => this.caseTagService.updateCaseTags(documentDefinitionName, reorderedItems)))
|
|
111
|
+
.subscribe(() => {
|
|
112
|
+
this.reload(true);
|
|
113
|
+
}));
|
|
114
|
+
this.dragAndDropDisabled.set(false);
|
|
115
|
+
}
|
|
116
|
+
reload(noAnimation = false) {
|
|
117
|
+
this._reload$.next(noAnimation ? 'noAnimation' : null);
|
|
118
|
+
}
|
|
119
|
+
initFields() {
|
|
120
|
+
this.fields$.next([
|
|
121
|
+
{
|
|
122
|
+
key: 'title',
|
|
123
|
+
label: 'dossierManagement.caseTags.columns.title',
|
|
124
|
+
viewType: ViewType.TEXT,
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
key: 'key',
|
|
128
|
+
label: 'dossierManagement.caseTags.columns.key',
|
|
129
|
+
viewType: ViewType.TEXT,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
viewType: ViewType.TEMPLATE,
|
|
133
|
+
template: this.colorColumnTemplate,
|
|
134
|
+
key: 'color',
|
|
135
|
+
label: 'dossierManagement.caseTags.columns.color',
|
|
136
|
+
},
|
|
137
|
+
]);
|
|
138
|
+
}
|
|
139
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementCaseTagComponent, deps: [{ token: i1.CaseTagService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
140
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierManagementCaseTagComponent, selector: "valtimo-dossier-management-case-tags", viewQueries: [{ propertyName: "colorColumnTemplate", first: true, predicate: ["colorColumnTemplate"], 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<valtimo-carbon-list\n *ngIf=\"{\n loading: loading$ | async,\n documentCaseTags: documentCaseTags$ | async,\n fields: fields$ | async,\n } as obs\"\n [items]=\"obs.documentCaseTags\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n [actionItems]=\"ACTION_ITEMS\"\n (rowClicked)=\"openEditModal($event)\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"dragAndDropDisabled()\"\n (itemsReordered)=\"onItemsReorderedEvent($event)\"\n>\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [description]=\"'dossierManagement.caseTags.noResults.description' | translate\"\n [title]=\"'dossierManagement.caseTags.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-dossier-management-case-tag-modal\n [type]=\"statusModalType$ | async\"\n [prefill]=\"prefillCaseTag$ | async\"\n [usedKeys]=\"usedKeys$ | async\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (closeModalEvent)=\"closeModal($event)\"\n></valtimo-dossier-management-case-tag-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.caseTags.deleteText\"\n [outputOnConfirm]=\"caseTagToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"confirmDeleteCaseTag($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #buttons let-obs=\"obs\">\n <div class=\"dossier-management-search-fields__buttons\">\n <button cdsButton=\"primary\" [disabled]=\"obs.loading\" (click)=\"openAddModal()\">\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'dossierManagement.caseTags.add' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #colorColumnTemplate let-data=\"data\">\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"data?.item?.tagType\">\n {{ 'interface.tagType.' + data?.item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n", styles: ["::ng-deep .cds-tag--no-margin{margin:0}\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: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i5.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i5.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i5.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: i4.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class"] }, { kind: "component", type: i6.DossierManagementModalComponent, selector: "valtimo-dossier-management-case-tag-modal", inputs: ["type", "prefill", "usedKeys", "documentDefinitionName"], outputs: ["closeModalEvent"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
141
|
+
}
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementCaseTagComponent, decorators: [{
|
|
143
|
+
type: Component,
|
|
144
|
+
args: [{ selector: 'valtimo-dossier-management-case-tags', 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<valtimo-carbon-list\n *ngIf=\"{\n loading: loading$ | async,\n documentCaseTags: documentCaseTags$ | async,\n fields: fields$ | async,\n } as obs\"\n [items]=\"obs.documentCaseTags\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n [actionItems]=\"ACTION_ITEMS\"\n (rowClicked)=\"openEditModal($event)\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"dragAndDropDisabled()\"\n (itemsReordered)=\"onItemsReorderedEvent($event)\"\n>\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [description]=\"'dossierManagement.caseTags.noResults.description' | translate\"\n [title]=\"'dossierManagement.caseTags.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-dossier-management-case-tag-modal\n [type]=\"statusModalType$ | async\"\n [prefill]=\"prefillCaseTag$ | async\"\n [usedKeys]=\"usedKeys$ | async\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (closeModalEvent)=\"closeModal($event)\"\n></valtimo-dossier-management-case-tag-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.caseTags.deleteText\"\n [outputOnConfirm]=\"caseTagToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"confirmDeleteCaseTag($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #buttons let-obs=\"obs\">\n <div class=\"dossier-management-search-fields__buttons\">\n <button cdsButton=\"primary\" [disabled]=\"obs.loading\" (click)=\"openAddModal()\">\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'dossierManagement.caseTags.add' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #colorColumnTemplate let-data=\"data\">\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"data?.item?.tagType\">\n {{ 'interface.tagType.' + data?.item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n", styles: ["::ng-deep .cds-tag--no-margin{margin:0}\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.CaseTagService }, { type: i2.ActivatedRoute }], propDecorators: { colorColumnTemplate: [{
|
|
146
|
+
type: ViewChild,
|
|
147
|
+
args: ['colorColumnTemplate']
|
|
148
|
+
}] } });
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LWNhc2UtdGFncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXItbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LWNhc2UtdGFncy9kb3NzaWVyLW1hbmFnZW1lbnQtY2FzZS10YWdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtY2FzZS10YWdzL2Rvc3NpZXItbWFuYWdlbWVudC1jYXNlLXRhZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBMEIsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDekUsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsTUFBTSxFQUNOLEdBQUcsRUFFSCxPQUFPLEVBQ1AsU0FBUyxFQUNULEdBQUcsRUFDSCxZQUFZLEdBQ2IsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQTJCLFFBQVEsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFTdkUsTUFBTSxPQUFPLGlDQUFpQztJQVU1QyxJQUFXLHVCQUF1QjtRQUNoQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUN2QyxDQUFDO0lBdURELFlBQ21CLGNBQThCLEVBQzlCLEtBQXFCO1FBRHJCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQWxFdkIsYUFBUSxH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U0FBUzsrQkFDRSxzQ0FBc0MsbUJBRy9CLHVCQUF1QixDQUFDLE1BQU07Z0hBR2IsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2FzZVRhZ1NlcnZpY2UsIENhc2VUYWcsIENhc2VUYWdzVXRpbHN9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFwLFxuICBTdWJzY3JpcHRpb24sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QWN0aW9uSXRlbSwgQ29sdW1uQ29uZmlnLCBWaWV3VHlwZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1N0YXR1c01vZGFsQ2xvc2VFdmVudCwgU3RhdHVzTW9kYWxUeXBlfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC1jYXNlLXRhZ3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LWNhc2UtdGFncy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rvc3NpZXItbWFuYWdlbWVudC1jYXNlLXRhZ3MuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJNYW5hZ2VtZW50Q2FzZVRhZ0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2NvbG9yQ29sdW1uVGVtcGxhdGUnKSBjb2xvckNvbHVtblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlbG9hZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bGwgfCAnbm9BbmltYXRpb24nPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudERlZmluaXRpb25OYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcz8ubmFtZSksXG4gICAgZmlsdGVyKGRvY0RlZk5hbWUgPT4gISFkb2NEZWZOYW1lKVxuICApO1xuXG4gIHB1YmxpYyBnZXQgZG9jdW1lbnREZWZpbml0aW9uTmFtZSQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQ7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgcmVhZG9ubHkgZHJhZ0FuZERyb3BEaXNhYmxlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSB1c2VkS2V5cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSk7XG5cbiAgcHJpdmF0ZSBfZG9jdW1lbnRDYXNlVGFnczogQ2FzZVRhZ1tdID0gW107XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50Q2FzZVRhZ3MkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQsXG4gICAgdGhpcy5fcmVsb2FkJCxcbiAgXSkucGlwZShcbiAgICB0YXAoKFtfLCByZWxvYWRdKSA9PiB7XG4gICAgICBpZiAocmVsb2FkID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMubG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzd2l0Y2hNYXAoKFtkb2N1bWVudERlZmluaXRpb25OYW1lXSkgPT5cbiAgICAgIHRoaXMuY2FzZVRhZ1NlcnZpY2UuZ2V0Q2FzZVRhZ3NNYW5hZ2VtZW50KGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgKSxcbiAgICBtYXAoY2FzZVRhZ3MgPT5cbiAgICAgIGNhc2VUYWdzLm1hcChjYXNlVGFnID0+ICh7XG4gICAgICAgIC4uLmNhc2VUYWcsXG4gICAgICAgIHRhZ1R5cGU6IENhc2VUYWdzVXRpbHMuZ2V0VGFnVHlwZUZyb21DYXNlVGFnQ29sb3IoY2FzZVRhZy5jb2xvciksXG4gICAgICB9KSlcbiAgICApLFxuICAgIHRhcChjYXNlVGFncyA9PiB7XG4gICAgICB0aGlzLl9kb2N1bWVudENhc2VUYWdzID0gY2FzZVRhZ3M7XG4gICAgICB0aGlzLnVzZWRLZXlzJC5uZXh0KGNhc2VUYWdzLm1hcChjYXNlVGFnID0+IGNhc2VUYWcua2V5KSk7XG4gICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbHVtbkNvbmZpZ1tdPihbXSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IEFDVElPTl9JVEVNUzogQWN0aW9uSXRlbVtdID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiAnaW50ZXJmYWNlLmVkaXQnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMub3BlbkVkaXRNb2RhbC5iaW5kKHRoaXMpLFxuICAgICAgdHlwZTogJ25vcm1hbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ2ludGVyZmFjZS5kZWxldGUnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMub3BlbkRlbGV0ZU1vZGFsLmJpbmQodGhpcyksXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICB9LFxuICBdO1xuXG4gIHB1YmxpYyByZWFkb25seSBzdGF0dXNNb2RhbFR5cGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdGF0dXNNb2RhbFR5cGU+KCdjbG9zZWQnKTtcbiAgcHVibGljIHJlYWRvbmx5IHByZWZpbGxDYXNlVGFnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FzZVRhZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FzZVRhZ1RvRGVsZXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FzZVRhZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dEZWxldGVNb2RhbCQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZVRhZ1NlcnZpY2U6IENhc2VUYWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdEZpZWxkcygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRGVsZXRlTW9kYWwoY2FzZVRhZzogQ2FzZVRhZyk6IHZvaWQge1xuICAgIHRoaXMuY2FzZVRhZ1RvRGVsZXRlJC5uZXh0KGNhc2VUYWcpO1xuICAgIHRoaXMuc2hvd0RlbGV0ZU1vZGFsJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9wZW5FZGl0TW9kYWwoY2FzZVRhZzogQ2FzZVRhZyk6IHZvaWQge1xuICAgIHRoaXMucHJlZmlsbENhc2VUYWckLm5leHQoY2FzZVRhZyk7XG4gICAgdGhpcy5zdGF0dXNNb2RhbFR5cGUkLm5leHQoJ2VkaXQnKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuQWRkTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXNNb2RhbFR5cGUkLm5leHQoJ2FkZCcpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlTW9kYWwoY2xvc2VNb2RhbEV2ZW50OiBTdGF0dXNNb2RhbENsb3NlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoY2xvc2VNb2RhbEV2ZW50ID09PSAnY2xvc2VBbmRSZWZyZXNoJykge1xuICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXR1c01vZGFsVHlwZSQubmV4dCgnY2xvc2VkJyk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlybURlbGV0ZUNhc2VUYWcoY2FzZVRhZzogQ2FzZVRhZyk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICAgICAgdGhpcy5jYXNlVGFnU2VydmljZS5kZWxldGVDYXNlVGFnKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIGNhc2VUYWcua2V5KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb25JdGVtc1Jlb3JkZXJlZEV2ZW50KHJlb3JkZXJlZEl0ZW1zOiBDYXNlVGFnW10pOiB2b2lkIHtcbiAgICBpZiAoIXJlb3JkZXJlZEl0ZW1zKSByZXR1cm47XG5cbiAgICB0aGlzLmRyYWdBbmREcm9wRGlzYWJsZWQuc2V0KHRydWUpO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICAgICAgdGhpcy5jYXNlVGFnU2VydmljZS51cGRhdGVDYXNlVGFncyhkb2N1bWVudERlZmluaXRpb25OYW1lLCByZW9yZGVyZWRJdGVtcylcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWxvYWQodHJ1ZSk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmRyYWdBbmREcm9wRGlzYWJsZWQuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVsb2FkKG5vQW5pbWF0aW9uID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWxvYWQkLm5leHQobm9BbmltYXRpb24gPyAnbm9BbmltYXRpb24nIDogbnVsbCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy5maWVsZHMkLm5leHQoW1xuICAgICAge1xuICAgICAgICBrZXk6ICd0aXRsZScsXG4gICAgICAgIGxhYmVsOiAnZG9zc2llck1hbmFnZW1lbnQuY2FzZVRhZ3MuY29sdW1ucy50aXRsZScsXG5cbiAgICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRFWFQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdrZXknLFxuICAgICAgICBsYWJlbDogJ2Rvc3NpZXJNYW5hZ2VtZW50LmNhc2VUYWdzLmNvbHVtbnMua2V5JyxcblxuICAgICAgICB2aWV3VHlwZTogVmlld1R5cGUuVEVYVCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URU1QTEFURSxcbiAgICAgICAgdGVtcGxhdGU6IHRoaXMuY29sb3JDb2x1bW5UZW1wbGF0ZSxcbiAgICAgICAga2V5OiAnY29sb3InLFxuICAgICAgICBsYWJlbDogJ2Rvc3NpZXJNYW5hZ2VtZW50LmNhc2VUYWdzLmNvbHVtbnMuY29sb3InLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48dmFsdGltby1jYXJib24tbGlzdFxuICAqbmdJZj1cIntcbiAgICBsb2FkaW5nOiBsb2FkaW5nJCB8IGFzeW5jLFxuICAgIGRvY3VtZW50Q2FzZVRhZ3M6IGRvY3VtZW50Q2FzZVRhZ3MkIHwgYXN5bmMsXG4gICAgZmllbGRzOiBmaWVsZHMkIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCJcbiAgW2l0ZW1zXT1cIm9icy5kb2N1bWVudENhc2VUYWdzXCJcbiAgW2ZpZWxkc109XCJvYnMuZmllbGRzXCJcbiAgW2hlYWRlcl09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cIm9icy5sb2FkaW5nXCJcbiAgW2FjdGlvbkl0ZW1zXT1cIkFDVElPTl9JVEVNU1wiXG4gIChyb3dDbGlja2VkKT1cIm9wZW5FZGl0TW9kYWwoJGV2ZW50KVwiXG4gIFtkcmFnQW5kRHJvcF09XCJ0cnVlXCJcbiAgW2RyYWdBbmREcm9wRGlzYWJsZWRdPVwiZHJhZ0FuZERyb3BEaXNhYmxlZCgpXCJcbiAgKGl0ZW1zUmVvcmRlcmVkKT1cIm9uSXRlbXNSZW9yZGVyZWRFdmVudCgkZXZlbnQpXCJcbj5cbiAgPG5nLWNvbnRhaW5lclxuICAgIGNhcmJvblRvb2xiYXJDb250ZW50XG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zOyBjb250ZXh0OiB7b2JzOiBvYnN9XCJcbiAgPjwvbmctY29udGFpbmVyPlxuXG4gIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICBbZGVzY3JpcHRpb25dPVwiJ2Rvc3NpZXJNYW5hZ2VtZW50LmNhc2VUYWdzLm5vUmVzdWx0cy5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgIFt0aXRsZV09XCInZG9zc2llck1hbmFnZW1lbnQuY2FzZVRhZ3Mubm9SZXN1bHRzLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbjwvdmFsdGltby1jYXJib24tbGlzdD5cblxuPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWNhc2UtdGFnLW1vZGFsXG4gIFt0eXBlXT1cInN0YXR1c01vZGFsVHlwZSQgfCBhc3luY1wiXG4gIFtwcmVmaWxsXT1cInByZWZpbGxDYXNlVGFnJCB8IGFzeW5jXCJcbiAgW3VzZWRLZXlzXT1cInVzZWRLZXlzJCB8IGFzeW5jXCJcbiAgW2RvY3VtZW50RGVmaW5pdGlvbk5hbWVdPVwiZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgfCBhc3luY1wiXG4gIChjbG9zZU1vZGFsRXZlbnQpPVwiY2xvc2VNb2RhbCgkZXZlbnQpXCJcbj48L3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWNhc2UtdGFnLW1vZGFsPlxuXG48dmFsdGltby1jb25maXJtYXRpb24tbW9kYWxcbiAgY29uZmlybUJ1dHRvblRleHRUcmFuc2xhdGlvbktleT1cImludGVyZmFjZS5kZWxldGVcIlxuICBjb25maXJtQnV0dG9uVHlwZT1cImRhbmdlclwiXG4gIGNvbnRlbnRUcmFuc2xhdGlvbktleT1cImRvc3NpZXJNYW5hZ2VtZW50LmNhc2VUYWdzLmRlbGV0ZVRleHRcIlxuICBbb3V0cHV0T25Db25maXJtXT1cImNhc2VUYWdUb0RlbGV0ZSQgfCBhc3luY1wiXG4gIFtzaG93TW9kYWxTdWJqZWN0JF09XCJzaG93RGVsZXRlTW9kYWwkXCJcbiAgdGl0bGVUcmFuc2xhdGlvbktleT1cImludGVyZmFjZS5kZWxldGVcIlxuICAoY29uZmlybUV2ZW50KT1cImNvbmZpcm1EZWxldGVDYXNlVGFnKCRldmVudClcIlxuPjwvdmFsdGltby1jb25maXJtYXRpb24tbW9kYWw+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9ucyBsZXQtb2JzPVwib2JzXCI+XG4gIDxkaXYgY2xhc3M9XCJkb3NzaWVyLW1hbmFnZW1lbnQtc2VhcmNoLWZpZWxkc19fYnV0dG9uc1wiPlxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJvYnMubG9hZGluZ1wiIChjbGljayk9XCJvcGVuQWRkTW9kYWwoKVwiPlxuICAgICAgPHN2ZyBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiPjwvc3ZnPlxuXG4gICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuY2FzZVRhZ3MuYWRkJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29sb3JDb2x1bW5UZW1wbGF0ZSBsZXQtZGF0YT1cImRhdGFcIj5cbiAgPGNkcy10YWcgY2xhc3M9XCJjZHMtdGFnLS1uby1tYXJnaW5cIiBbdHlwZV09XCJkYXRhPy5pdGVtPy50YWdUeXBlXCI+XG4gICAge3sgJ2ludGVyZmFjZS50YWdUeXBlLicgKyBkYXRhPy5pdGVtPy50YWdUeXBlIHwgdHJhbnNsYXRlIH19XG4gIDwvY2RzLXRhZz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|