@messaia/cdk-cms 18.2.3 → 19.0.0-rc01
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/fesm2022/messaia-cdk-cms.mjs +81 -80
- package/fesm2022/messaia-cdk-cms.mjs.map +1 -1
- package/lib/comnponents/document-form-base/document-form-base.component.d.ts +1 -1
- package/package.json +4 -6
- package/esm2022/lib/cms-routing.module.mjs +0 -90
- package/esm2022/lib/cms.module.mjs +0 -159
- package/esm2022/lib/comnponents/content-form/content-form.component.mjs +0 -285
- package/esm2022/lib/comnponents/document-dialog/document-dialog.component.mjs +0 -57
- package/esm2022/lib/comnponents/document-form-base/document-form-base.component.mjs +0 -95
- package/esm2022/lib/comnponents/template-form/template-form.component.mjs +0 -169
- package/esm2022/lib/comnponents/template-preview-dialog/template-preview-dialog.component.mjs +0 -201
- package/esm2022/lib/enums/content-type.mjs +0 -6
- package/esm2022/lib/enums/faq-scope.mjs +0 -6
- package/esm2022/lib/enums/template-type.mjs +0 -6
- package/esm2022/lib/enums/wrap-tag.mjs +0 -9
- package/esm2022/lib/models/cms-settings.mjs +0 -37
- package/esm2022/lib/models/content-client.mjs +0 -39
- package/esm2022/lib/models/content-department.mjs +0 -39
- package/esm2022/lib/models/content-variable-client.mjs +0 -39
- package/esm2022/lib/models/content-variable-department.mjs +0 -39
- package/esm2022/lib/models/content-variable.mjs +0 -129
- package/esm2022/lib/models/content.mjs +0 -213
- package/esm2022/lib/models/document.mjs +0 -83
- package/esm2022/lib/models/faq-client.mjs +0 -39
- package/esm2022/lib/models/faq-department.mjs +0 -39
- package/esm2022/lib/models/faq.mjs +0 -164
- package/esm2022/lib/models/slider.mjs +0 -80
- package/esm2022/lib/models/template-client.mjs +0 -39
- package/esm2022/lib/models/template-department.mjs +0 -39
- package/esm2022/lib/models/template-preview.mjs +0 -46
- package/esm2022/lib/models/template.mjs +0 -208
- package/esm2022/lib/public-api.mjs +0 -35
- package/esm2022/lib/resolvers/document-list-projection.resolve.mjs +0 -49
- package/esm2022/lib/resolvers/excluded-columns.resolve.mjs +0 -22
- package/esm2022/lib/resolvers/excluded-fields.resolve.mjs +0 -22
- package/esm2022/lib/resolvers/form-includes.resolve.mjs +0 -49
- package/esm2022/lib/resolvers/form-validation.resolve.mjs +0 -22
- package/esm2022/lib/resolvers/list-projection.resolve.mjs +0 -49
- package/esm2022/lib/resolvers/settings.resolve.mjs +0 -24
- package/esm2022/lib/services/content-variable.service.mjs +0 -27
- package/esm2022/lib/services/content.service.mjs +0 -34
- package/esm2022/lib/services/document.generic-service.mjs +0 -11
- package/esm2022/lib/services/document.service`.mjs +0 -25
- package/esm2022/lib/services/faq.service.mjs +0 -18
- package/esm2022/lib/services/slider.service.mjs +0 -18
- package/esm2022/lib/services/template-preview.service.mjs +0 -18
- package/esm2022/lib/services/template.service.mjs +0 -18
- package/esm2022/lib/templates/document-form.template.mjs +0 -18
- package/esm2022/messaia-cdk-cms.mjs +0 -5
- package/esm2022/public_api.mjs +0 -5
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
import { COMMA, ENTER } from '@angular/cdk/keycodes';
|
|
2
|
-
import { HttpClient, HttpEventType, HttpResponse } from '@angular/common/http';
|
|
3
|
-
import { ChangeDetectorRef, Component, ViewChild } from '@angular/core';
|
|
4
|
-
import { ActivatedRoute } from '@angular/router';
|
|
5
|
-
import { EnumService, FileService, GenericReactiveFormComponent } from '@messaia/cdk';
|
|
6
|
-
import { EditorComponent } from '@tinymce/tinymce-angular';
|
|
7
|
-
import { of } from 'rxjs';
|
|
8
|
-
import { ContentType } from '../../enums/content-type';
|
|
9
|
-
import { WrapTag } from '../../enums/wrap-tag';
|
|
10
|
-
import { CmsSettings } from '../../models/cms-settings';
|
|
11
|
-
import { Content } from '../../models/content';
|
|
12
|
-
import { ContentClient, ContentDepartment } from '../../public-api';
|
|
13
|
-
import { ContentService } from '../../services/content.service';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "../../services/content.service";
|
|
16
|
-
import * as i2 from "@messaia/cdk";
|
|
17
|
-
import * as i3 from "@angular/common/http";
|
|
18
|
-
import * as i4 from "@angular/router";
|
|
19
|
-
import * as i5 from "@angular/common";
|
|
20
|
-
import * as i6 from "@angular/forms";
|
|
21
|
-
import * as i7 from "@angular/material/expansion";
|
|
22
|
-
import * as i8 from "@angular/material/button";
|
|
23
|
-
import * as i9 from "@angular/material/form-field";
|
|
24
|
-
import * as i10 from "@tinymce/tinymce-angular";
|
|
25
|
-
import * as i11 from "@messaia/cdk-base";
|
|
26
|
-
export class ContentFormComponent extends GenericReactiveFormComponent {
|
|
27
|
-
service;
|
|
28
|
-
fileService;
|
|
29
|
-
httpClient;
|
|
30
|
-
route;
|
|
31
|
-
changeDetectorRef;
|
|
32
|
-
/**
|
|
33
|
-
* Router Subscription
|
|
34
|
-
*/
|
|
35
|
-
routeSubscription;
|
|
36
|
-
/**
|
|
37
|
-
* The status of the issue
|
|
38
|
-
*/
|
|
39
|
-
type;
|
|
40
|
-
/**
|
|
41
|
-
* Content status
|
|
42
|
-
*/
|
|
43
|
-
ContentType = ContentType;
|
|
44
|
-
/**
|
|
45
|
-
* Wrap tag enum
|
|
46
|
-
*/
|
|
47
|
-
wrapTags = EnumService.toArray(WrapTag);
|
|
48
|
-
/**
|
|
49
|
-
* Separator keys codes
|
|
50
|
-
*/
|
|
51
|
-
separatorKeysCodes = [ENTER, COMMA];
|
|
52
|
-
/**
|
|
53
|
-
* settings: CmsSettings
|
|
54
|
-
*/
|
|
55
|
-
settings = new CmsSettings();
|
|
56
|
-
/**
|
|
57
|
-
* Gets the aliases control
|
|
58
|
-
*/
|
|
59
|
-
get aliasesControl() { return this.form.controls.aliases; }
|
|
60
|
-
/**
|
|
61
|
-
* A ref to form html element
|
|
62
|
-
*/
|
|
63
|
-
formElement;
|
|
64
|
-
/**
|
|
65
|
-
* A ref to tinymce editor
|
|
66
|
-
*/
|
|
67
|
-
editorComponent;
|
|
68
|
-
/**
|
|
69
|
-
* Constructor
|
|
70
|
-
*/
|
|
71
|
-
constructor(service, fileService, httpClient, route, changeDetectorRef) {
|
|
72
|
-
super(Content, service, route, changeDetectorRef);
|
|
73
|
-
this.service = service;
|
|
74
|
-
this.fileService = fileService;
|
|
75
|
-
this.httpClient = httpClient;
|
|
76
|
-
this.route = route;
|
|
77
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
78
|
-
this.settings = this.getService(CmsSettings);
|
|
79
|
-
if (this.settings?.multitenantable || this.settings?.multiClients) {
|
|
80
|
-
this.include('ClientJoins', true);
|
|
81
|
-
}
|
|
82
|
-
if (this.settings?.multitenantable || this.settings?.multiDepartments) {
|
|
83
|
-
this.include('DepartmentJoins', true);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Lifecycle hook that is called after data-bound properties
|
|
88
|
-
* of a directive are initialized.
|
|
89
|
-
*/
|
|
90
|
-
ngOnInit() {
|
|
91
|
-
/* Filter by status, if any */
|
|
92
|
-
this.routeSubscription = this.route.params.subscribe((params) => {
|
|
93
|
-
this.type = EnumService.parse(ContentType, params.type);
|
|
94
|
-
});
|
|
95
|
-
/* Get some props from route snapshot */
|
|
96
|
-
this.route.data.subscribe((data) => {
|
|
97
|
-
this.formValidation = data.formValidation;
|
|
98
|
-
});
|
|
99
|
-
console.log('ngOnInit');
|
|
100
|
-
super.ngOnInit();
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Shows client joins in the form
|
|
104
|
-
* @returns
|
|
105
|
-
*/
|
|
106
|
-
showClientJoins() {
|
|
107
|
-
return (!this.canCreate || (!this.settings?.multitenantable && !this.settings?.multiClients)) || this.isClientAdmin;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Checks if the specified alias is available.
|
|
111
|
-
*/
|
|
112
|
-
isAliasAvailable() {
|
|
113
|
-
this.service.isAliasAvailable(this.item).subscribe((x) => {
|
|
114
|
-
this.formElement?.form.controls['alias'].setErrors(x ? null : { 'inUse': true });
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Set client
|
|
119
|
-
*/
|
|
120
|
-
setClient() {
|
|
121
|
-
this.isEditorInitialized = false;
|
|
122
|
-
this.configEditor();
|
|
123
|
-
this.editorComponent?.editor?.setContent(this.item?.body);
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Add a aliases to the current field
|
|
127
|
-
* @param event
|
|
128
|
-
*/
|
|
129
|
-
addAliases(event) {
|
|
130
|
-
/* Add our aliass */
|
|
131
|
-
if ((event.value || '').trim()) {
|
|
132
|
-
this.aliasesControl.setValue([...this.aliasesControl.value, event.value.trim()]);
|
|
133
|
-
this.aliasesControl.updateValueAndValidity();
|
|
134
|
-
this.aliasesControl.markAsDirty();
|
|
135
|
-
}
|
|
136
|
-
/* Reset the input value */
|
|
137
|
-
if (event.input) {
|
|
138
|
-
event.input.value = '';
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Removes a aliases
|
|
143
|
-
* @param aliass
|
|
144
|
-
*/
|
|
145
|
-
removeAliases(aliass) {
|
|
146
|
-
const index = this.aliasesControl.value.indexOf(aliass);
|
|
147
|
-
if (index >= 0) {
|
|
148
|
-
this.aliasesControl.value.splice(index, 1);
|
|
149
|
-
this.aliasesControl.updateValueAndValidity();
|
|
150
|
-
this.aliasesControl.markAsDirty();
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Creates a new instance of the Template
|
|
155
|
-
*/
|
|
156
|
-
newInstance() {
|
|
157
|
-
let item = Object.assign(new Content(), {
|
|
158
|
-
type: this.type,
|
|
159
|
-
wrapTag: this.type == ContentType.Block ? '' : WrapTag.Section,
|
|
160
|
-
showTitle: this.type == ContentType.Block ? false : true
|
|
161
|
-
});
|
|
162
|
-
/* Get clientId */
|
|
163
|
-
if (!this.isEditMode) {
|
|
164
|
-
if (this.isClientAdmin || this.isDepartmentAdmin) {
|
|
165
|
-
item.clientJoins = [new ContentClient({ clientId: this.currentUser.clientId })];
|
|
166
|
-
}
|
|
167
|
-
if (this.isDepartmentAdmin) {
|
|
168
|
-
item.departmentJoins = [new ContentDepartment({ departmentId: this.currentUser.departmentId })];
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
/* Init the tinymce editor */
|
|
172
|
-
this.isEditorInitialized = false;
|
|
173
|
-
return item;
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Event emitted when the form has built.
|
|
177
|
-
*/
|
|
178
|
-
onAfterFormBuild() {
|
|
179
|
-
super.onAfterFormBuild();
|
|
180
|
-
this.configEditor();
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Configures the tinymce editor
|
|
184
|
-
*/
|
|
185
|
-
configEditor() {
|
|
186
|
-
if (this.settings?.multitenantable && this.formValue?.clientId && this.settings?.styleUrlEndpoint) {
|
|
187
|
-
this.httpClient.get(this.settings.styleUrlEndpoint(this.formValue.clientId)).subscribe({
|
|
188
|
-
next: (x) => super.initEditor(Object.assign(this.getEditorConfig(), { content_css: x.value })),
|
|
189
|
-
error: () => super.initEditor(Object.assign(this.getEditorConfig()))
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
else {
|
|
193
|
-
super.initEditor(this.getEditorConfig());
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Creates config for the editor
|
|
198
|
-
* @returns
|
|
199
|
-
*/
|
|
200
|
-
getEditorConfig() {
|
|
201
|
-
return {
|
|
202
|
-
promotion: false,
|
|
203
|
-
toolbar: `${this.editorToolbar} snippetsButton`,
|
|
204
|
-
forced_root_blocks: false,
|
|
205
|
-
height: this.settings?.editorHeight || '700px',
|
|
206
|
-
file_picker_types: 'file image media',
|
|
207
|
-
image_advtab: true,
|
|
208
|
-
allow_html_in_named_anchor: true,
|
|
209
|
-
valid_children: '+a[div|span|img|h1|h2|h3|h4|h5|h6|br|hr|video],+span[i]',
|
|
210
|
-
valid_elements: '*[*]',
|
|
211
|
-
images_upload_handler: (blobInfo, progress) => new Promise((resolve, reject) => {
|
|
212
|
-
var clientIds = this.formValue?.clientJoins?.map((x) => x.clientId) ?? [];
|
|
213
|
-
this.fileService.upload(blobInfo.blob(), `upload`, {
|
|
214
|
-
clientId: clientIds.length == 1 ? clientIds[0] : null,
|
|
215
|
-
path: clientIds.length == 1 ? 'images' : 'common/images',
|
|
216
|
-
isPublic: true
|
|
217
|
-
}).subscribe({
|
|
218
|
-
next: (event) => {
|
|
219
|
-
if (event.type === HttpEventType.UploadProgress) {
|
|
220
|
-
/* Calculate the progress percentage */
|
|
221
|
-
const percentDone = Math.round(100 * event.loaded / event.total);
|
|
222
|
-
/* Pass the percentage into the progress-stream */
|
|
223
|
-
console.info(percentDone);
|
|
224
|
-
}
|
|
225
|
-
else if (event instanceof HttpResponse) {
|
|
226
|
-
console.log('Upload finished!');
|
|
227
|
-
resolve(event.body.publicLink);
|
|
228
|
-
}
|
|
229
|
-
},
|
|
230
|
-
error: (error) => {
|
|
231
|
-
reject('Image upload failed due to a XHR Transport error:' + error);
|
|
232
|
-
console.log('Image upload failed due to a XHR Transport error:' + error);
|
|
233
|
-
}
|
|
234
|
-
});
|
|
235
|
-
return of({});
|
|
236
|
-
}),
|
|
237
|
-
setup: function (editor) {
|
|
238
|
-
/* Add snippets button to the toolbar */
|
|
239
|
-
editor.ui.registry.addMenuButton('snippetsButton', {
|
|
240
|
-
text: 'Snippets',
|
|
241
|
-
fetch: function (callback) {
|
|
242
|
-
callback([
|
|
243
|
-
{
|
|
244
|
-
type: 'menuitem',
|
|
245
|
-
text: 'Variable',
|
|
246
|
-
onAction: () => editor.insertContent('{{var name}}')
|
|
247
|
-
},
|
|
248
|
-
{
|
|
249
|
-
type: 'menuitem',
|
|
250
|
-
text: 'Block',
|
|
251
|
-
onAction: () => editor.insertContent('{{block name="..."}}')
|
|
252
|
-
},
|
|
253
|
-
{
|
|
254
|
-
type: 'menuitem',
|
|
255
|
-
text: 'View Component',
|
|
256
|
-
onAction: () => editor.insertContent('{{vc name="..."}}')
|
|
257
|
-
},
|
|
258
|
-
]);
|
|
259
|
-
}
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Cleanup subscriptions when this component is destroyed.
|
|
266
|
-
*/
|
|
267
|
-
ngOnDestroy() {
|
|
268
|
-
if (this.routeSubscription) {
|
|
269
|
-
this.routeSubscription.unsubscribe();
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ContentFormComponent, deps: [{ token: i1.ContentService }, { token: i2.FileService }, { token: i3.HttpClient }, { token: i4.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
273
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ContentFormComponent, selector: "app-content-form", viewQueries: [{ propertyName: "formElement", first: true, predicate: ["form"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: ["editor"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\t\t\t\t\t\t\t<ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n\t\t\t\t\t\t\t\t<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t\t<mat-label>{{field.label}}</mat-label>\r\n\t\t\t\t\t\t\t\t\t<editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n\t\t\t\t\t\t\t\t\t<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\t\t\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode || true\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [entity]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "directive", type: i7.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i7.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i10.EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "licenseKey", "init", "id", "initialValue", "outputFormat", "inline", "tagName", "plugins", "toolbar", "modelEvents", "allowedEvents", "ignoreEvents", "disabled"] }, { kind: "component", type: i2.VdLayoutNavComponent, selector: "vd-layout-nav", inputs: ["toolbarTitle", "editMode", "actions", "data", "context", "icon", "logo", "color", "hideToggle", "backNavigationRoute", "navigationRoute"], outputs: ["reload"] }, { kind: "component", type: i2.VdLayoutCardOverComponent, selector: "vd-layout-card-over", inputs: ["cardTitle", "cardSubtitle", "cardWidth", "color"] }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "directive", type: i2.MatFormFieldEditorDirective, selector: "[tinyMatFormControl]", inputs: ["disabled", "id", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["editorChange"] }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.VdEditorDirective, selector: "[vd-editor]ng-template" }, { kind: "component", type: i2.VdGenericFormComponent, selector: "vd-generic-form", inputs: ["formGroup", "classType", "formDefinition", "fieldGroups", "groupName", "fieldSets", "context", "debugValue", "readonly", "separatorKeysCodes"] }, { kind: "component", type: i11.VdAuditComponent, selector: "vd-audit", inputs: ["entity"] }] });
|
|
274
|
-
}
|
|
275
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ContentFormComponent, decorators: [{
|
|
276
|
-
type: Component,
|
|
277
|
-
args: [{ selector: 'app-content-form', template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\t\t\t\t\t\t\t<ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n\t\t\t\t\t\t\t\t<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t\t<mat-label>{{field.label}}</mat-label>\r\n\t\t\t\t\t\t\t\t\t<editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n\t\t\t\t\t\t\t\t\t<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\t\t\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode || true\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [entity]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>" }]
|
|
278
|
-
}], ctorParameters: () => [{ type: i1.ContentService }, { type: i2.FileService }, { type: i3.HttpClient }, { type: i4.ActivatedRoute }, { type: i0.ChangeDetectorRef }], propDecorators: { formElement: [{
|
|
279
|
-
type: ViewChild,
|
|
280
|
-
args: ['form', { static: false }]
|
|
281
|
-
}], editorComponent: [{
|
|
282
|
-
type: ViewChild,
|
|
283
|
-
args: ['editor', { static: false }]
|
|
284
|
-
}] } });
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQWdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BFLE9BQU8s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Q2IsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUM7NkJBQzVEOzRCQUNEO2dDQUNDLElBQUksRUFBRSxVQUFVO2dDQUNoQixJQUFJLEVBQUUsZ0JBQWdCO2dDQUN0QixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQzs2QkFDekQ7eUJBQ0QsQ0FBQyxDQUFDO29CQUNKLENBQUM7aUJBQ0QsQ0FBQyxDQUFDO1lBQ0osQ0FBQztTQUNELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1YsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEMsQ0FBQztJQUNGLENBQUM7dUdBaFJXLG9CQUFvQjsyRkFBcEIsb0JBQW9CLGdSQ25CakMsaTRGQWlEZ0I7OzJGRDlCSCxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Msa0JBQWtCO21NQTRDckIsV0FBVztzQkFEakIsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU83QixlQUFlO3NCQURyQixTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT01NQSwgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnRUeXBlLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBFbnVtU2VydmljZSwgRmlsZVNlcnZpY2UsIEdlbmVyaWNSZWFjdGl2ZUZvcm1Db21wb25lbnQgfSBmcm9tICdAbWVzc2FpYS9jZGsnO1xyXG5pbXBvcnQgeyBFZGl0b3JDb21wb25lbnQgfSBmcm9tICdAdGlueW1jZS90aW55bWNlLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvY29udGVudC10eXBlJztcclxuaW1wb3J0IHsgV3JhcFRhZyB9IGZyb20gJy4uLy4uL2VudW1zL3dyYXAtdGFnJztcclxuaW1wb3J0IHsgQ21zU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvY21zLXNldHRpbmdzJztcclxuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gJy4uLy4uL21vZGVscy9jb250ZW50JztcclxuaW1wb3J0IHsgQ29udGVudENsaWVudCwgQ29udGVudERlcGFydG1lbnQgfSBmcm9tICcuLi8uLi9wdWJsaWMtYXBpJztcclxuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtY29udGVudC1mb3JtJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vY29udGVudC1mb3JtLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGVudEZvcm1Db21wb25lbnQgZXh0ZW5kcyBHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50PENvbnRlbnQsIENvbnRlbnRTZXJ2aWNlPiB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJvdXRlciBTdWJzY3JpcHRpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgcm91dGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBzdGF0dXMgb2YgdGhlIGlzc3VlXHJcblx0ICovXHJcblx0cHVibGljIHR5cGU/OiBDb250ZW50VHlwZTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29udGVudCBzdGF0dXNcclxuXHQgKi9cclxuXHRwdWJsaWMgQ29udGVudFR5cGU6IHR5cGVvZiBDb250ZW50VHlwZSA9IENvbnRlbnRUeXBlO1xyXG5cclxuXHQvKipcclxuXHQgKiBXcmFwIHRhZyBlbnVtXHJcblx0ICovXHJcblx0cHVibGljIHdyYXBUYWdzOiBhbnlbXSA9IEVudW1TZXJ2aWNlLnRvQXJyYXkoV3JhcFRhZyk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNlcGFyYXRvciBrZXlzIGNvZGVzXHJcblx0ICovXHJcblx0cHVibGljIHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BXTtcclxuXHJcblx0LyoqXHJcblx0ICogc2V0dGluZ3M6IENtc1NldHRpbmdzXHJcblx0ICovXHJcblx0cHVibGljIHNldHRpbmdzOiBDbXNTZXR0aW5ncyA9IG5ldyBDbXNTZXR0aW5ncygpO1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHRoZSBhbGlhc2VzIGNvbnRyb2xcclxuXHQgKi9cclxuXHRnZXQgYWxpYXNlc0NvbnRyb2woKSB7IHJldHVybiB0aGlzLmZvcm0uY29udHJvbHMuYWxpYXNlczsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZiB0byBmb3JtIGh0bWwgZWxlbWVudFxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2Zvcm0nLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRwdWJsaWMgZm9ybUVsZW1lbnQ/OiBIVE1MRm9ybUVsZW1lbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmIHRvIHRpbnltY2UgZWRpdG9yXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZWRpdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGVkaXRvckNvbXBvbmVudD86IEVkaXRvckNvbXBvbmVudDtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByb3RlY3RlZCBzZXJ2aWNlOiBDb250ZW50U2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBmaWxlU2VydmljZTogRmlsZVNlcnZpY2UsXHJcblx0XHRwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihDb250ZW50LCBzZXJ2aWNlLCByb3V0ZSwgY2hhbmdlRGV0ZWN0b3JSZWYpXHJcblx0XHR0aGlzLnNldHRpbmdzID0gdGhpcy5nZXRTZXJ2aWNlKENtc1NldHRpbmdzKTtcclxuXHJcblx0XHRpZiAodGhpcy5zZXR0aW5ncz8ubXVsdGl0ZW5hbnRhYmxlIHx8IHRoaXMuc2V0dGluZ3M/Lm11bHRpQ2xpZW50cykge1xyXG5cdFx0XHR0aGlzLmluY2x1ZGUoJ0NsaWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSB8fCB0aGlzLnNldHRpbmdzPy5tdWx0aURlcGFydG1lbnRzKSB7XHJcblx0XHRcdHRoaXMuaW5jbHVkZSgnRGVwYXJ0bWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgXHJcblx0ICogb2YgYSBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0LyogRmlsdGVyIGJ5IHN0YXR1cywgaWYgYW55ICovXHJcblx0XHR0aGlzLnJvdXRlU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IGFueSkgPT4ge1xyXG5cdFx0XHR0aGlzLnR5cGUgPSBFbnVtU2VydmljZS5wYXJzZShDb250ZW50VHlwZSwgcGFyYW1zLnR5cGUpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogR2V0IHNvbWUgcHJvcHMgZnJvbSByb3V0ZSBzbmFwc2hvdCAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdHRoaXMuZm9ybVZhbGlkYXRpb24gPSBkYXRhLmZvcm1WYWxpZGF0aW9uO1xyXG5cdFx0fSk7XHJcblx0XHRjb25zb2xlLmxvZygnbmdPbkluaXQnKTtcclxuXHRcdHN1cGVyLm5nT25Jbml0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBjbGllbnQgam9pbnMgaW4gdGhlIGZvcm1cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgc2hvd0NsaWVudEpvaW5zKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuICghdGhpcy5jYW5DcmVhdGUgfHwgKCF0aGlzLnNldHRpbmdzPy5tdWx0aXRlbmFudGFibGUgJiYgIXRoaXMuc2V0dGluZ3M/Lm11bHRpQ2xpZW50cykpIHx8IHRoaXMuaXNDbGllbnRBZG1pbjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIGFsaWFzIGlzIGF2YWlsYWJsZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgaXNBbGlhc0F2YWlsYWJsZSgpIHtcclxuXHRcdHRoaXMuc2VydmljZS5pc0FsaWFzQXZhaWxhYmxlKHRoaXMuaXRlbSEpLnN1YnNjcmliZSgoeDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHR0aGlzLmZvcm1FbGVtZW50Py5mb3JtLmNvbnRyb2xzWydhbGlhcyddLnNldEVycm9ycyh4ID8gbnVsbCA6IHsgJ2luVXNlJzogdHJ1ZSB9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0IGNsaWVudFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXRDbGllbnQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmlzRWRpdG9ySW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHRcdHRoaXMuY29uZmlnRWRpdG9yKCk7XHJcblx0XHR0aGlzLmVkaXRvckNvbXBvbmVudD8uZWRpdG9yPy5zZXRDb250ZW50KHRoaXMuaXRlbT8uYm9keSEpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIGEgYWxpYXNlcyB0byB0aGUgY3VycmVudCBmaWVsZFxyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkQWxpYXNlcyhldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCBvdXIgYWxpYXNzICovXHJcblx0XHRpZiAoKGV2ZW50LnZhbHVlIHx8ICcnKS50cmltKCkpIHtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC5zZXRWYWx1ZShbLi4udGhpcy5hbGlhc2VzQ29udHJvbC52YWx1ZSwgZXZlbnQudmFsdWUudHJpbSgpXSk7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHR0aGlzLmFsaWFzZXNDb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogUmVzZXQgdGhlIGlucHV0IHZhbHVlICovXHJcblx0XHRpZiAoZXZlbnQuaW5wdXQpIHtcclxuXHRcdFx0ZXZlbnQuaW5wdXQudmFsdWUgPSAnJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlbW92ZXMgYSBhbGlhc2VzXHJcblx0ICogQHBhcmFtIGFsaWFzcyBcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVtb3ZlQWxpYXNlcyhhbGlhc3M6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0Y29uc3QgaW5kZXggPSB0aGlzLmFsaWFzZXNDb250cm9sLnZhbHVlLmluZGV4T2YoYWxpYXNzKTtcclxuXHRcdGlmIChpbmRleCA+PSAwKSB7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFRlbXBsYXRlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG5ld0luc3RhbmNlKCk6IENvbnRlbnQge1xyXG5cdFx0bGV0IGl0ZW0gPSBPYmplY3QuYXNzaWduKG5ldyBDb250ZW50KCksIDxDb250ZW50PntcclxuXHRcdFx0dHlwZTogdGhpcy50eXBlLFxyXG5cdFx0XHR3cmFwVGFnOiB0aGlzLnR5cGUgPT0gQ29udGVudFR5cGUuQmxvY2sgPyAnJyA6IFdyYXBUYWcuU2VjdGlvbixcclxuXHRcdFx0c2hvd1RpdGxlOiB0aGlzLnR5cGUgPT0gQ29udGVudFR5cGUuQmxvY2sgPyBmYWxzZSA6IHRydWVcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIEdldCBjbGllbnRJZCAqL1xyXG5cdFx0aWYgKCF0aGlzLmlzRWRpdE1vZGUpIHtcclxuXHRcdFx0aWYgKHRoaXMuaXNDbGllbnRBZG1pbiB8fCB0aGlzLmlzRGVwYXJ0bWVudEFkbWluKSB7XHJcblx0XHRcdFx0aXRlbS5jbGllbnRKb2lucyA9IFtuZXcgQ29udGVudENsaWVudCh7IGNsaWVudElkOiB0aGlzLmN1cnJlbnRVc2VyLmNsaWVudElkIH0pXTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKHRoaXMuaXNEZXBhcnRtZW50QWRtaW4pIHtcclxuXHRcdFx0XHRpdGVtLmRlcGFydG1lbnRKb2lucyA9IFtuZXcgQ29udGVudERlcGFydG1lbnQoeyBkZXBhcnRtZW50SWQ6IHRoaXMuY3VycmVudFVzZXIuZGVwYXJ0bWVudElkIH0pXTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEluaXQgdGhlIHRpbnltY2UgZWRpdG9yICovXHJcblx0XHR0aGlzLmlzRWRpdG9ySW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHRcdHJldHVybiBpdGVtO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBmb3JtIGhhcyBidWlsdC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgb25BZnRlckZvcm1CdWlsZCgpOiB2b2lkIHtcclxuXHRcdHN1cGVyLm9uQWZ0ZXJGb3JtQnVpbGQoKTtcclxuXHRcdHRoaXMuY29uZmlnRWRpdG9yKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb25maWd1cmVzIHRoZSB0aW55bWNlIGVkaXRvclxyXG5cdCAqL1xyXG5cdHByaXZhdGUgY29uZmlnRWRpdG9yKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSAmJiB0aGlzLmZvcm1WYWx1ZT8uY2xpZW50SWQgJiYgdGhpcy5zZXR0aW5ncz8uc3R5bGVVcmxFbmRwb2ludCkge1xyXG5cdFx0XHR0aGlzLmh0dHBDbGllbnQuZ2V0KHRoaXMuc2V0dGluZ3Muc3R5bGVVcmxFbmRwb2ludCh0aGlzLmZvcm1WYWx1ZS5jbGllbnRJZCkpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKHg6IGFueSkgPT4gc3VwZXIuaW5pdEVkaXRvcihPYmplY3QuYXNzaWduKHRoaXMuZ2V0RWRpdG9yQ29uZmlnKCksIHsgY29udGVudF9jc3M6IHgudmFsdWUgfSkpLFxyXG5cdFx0XHRcdGVycm9yOiAoKSA9PiBzdXBlci5pbml0RWRpdG9yKE9iamVjdC5hc3NpZ24odGhpcy5nZXRFZGl0b3JDb25maWcoKSkpXHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c3VwZXIuaW5pdEVkaXRvcih0aGlzLmdldEVkaXRvckNvbmZpZygpKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgY29uZmlnIGZvciB0aGUgZWRpdG9yXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBnZXRFZGl0b3JDb25maWcoKTogYW55IHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdHByb21vdGlvbjogZmFsc2UsXHJcblx0XHRcdHRvb2xiYXI6IGAke3RoaXMuZWRpdG9yVG9vbGJhcn0gc25pcHBldHNCdXR0b25gLFxyXG5cdFx0XHRmb3JjZWRfcm9vdF9ibG9ja3M6IGZhbHNlLFxyXG5cdFx0XHRoZWlnaHQ6IHRoaXMuc2V0dGluZ3M/LmVkaXRvckhlaWdodCB8fCAnNzAwcHgnLFxyXG5cdFx0XHRmaWxlX3BpY2tlcl90eXBlczogJ2ZpbGUgaW1hZ2UgbWVkaWEnLFxyXG5cdFx0XHRpbWFnZV9hZHZ0YWI6IHRydWUsXHJcblx0XHRcdGFsbG93X2h0bWxfaW5fbmFtZWRfYW5jaG9yOiB0cnVlLFxyXG5cdFx0XHR2YWxpZF9jaGlsZHJlbjogJythW2RpdnxzcGFufGltZ3xoMXxoMnxoM3xoNHxoNXxoNnxicnxocnx2aWRlb10sK3NwYW5baV0nLFxyXG5cdFx0XHR2YWxpZF9lbGVtZW50czogJypbKl0nLFxyXG5cdFx0XHRpbWFnZXNfdXBsb2FkX2hhbmRsZXI6IChibG9iSW5mbzogYW55LCBwcm9ncmVzczogRnVuY3Rpb24pID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHR2YXIgY2xpZW50SWRzOiBudW1iZXJbXSA9IHRoaXMuZm9ybVZhbHVlPy5jbGllbnRKb2lucz8ubWFwKCh4OiBDb250ZW50Q2xpZW50KSA9PiB4LmNsaWVudElkKSA/PyBbXTtcclxuXHRcdFx0XHR0aGlzLmZpbGVTZXJ2aWNlLnVwbG9hZChibG9iSW5mby5ibG9iKCksIGB1cGxvYWRgLCB7XHJcblx0XHRcdFx0XHRjbGllbnRJZDogY2xpZW50SWRzLmxlbmd0aCA9PSAxID8gY2xpZW50SWRzWzBdIDogbnVsbCxcclxuXHRcdFx0XHRcdHBhdGg6IGNsaWVudElkcy5sZW5ndGggPT0gMSA/ICdpbWFnZXMnIDogJ2NvbW1vbi9pbWFnZXMnLFxyXG5cdFx0XHRcdFx0aXNQdWJsaWM6IHRydWVcclxuXHRcdFx0XHR9KS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdFx0bmV4dDogKGV2ZW50OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcclxuXHJcblx0XHRcdFx0XHRcdFx0LyogQ2FsY3VsYXRlIHRoZSBwcm9ncmVzcyBwZXJjZW50YWdlICovXHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuXHJcblx0XHRcdFx0XHRcdFx0LyogUGFzcyB0aGUgcGVyY2VudGFnZSBpbnRvIHRoZSBwcm9ncmVzcy1zdHJlYW0gKi9cclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmluZm8ocGVyY2VudERvbmUpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ1VwbG9hZCBmaW5pc2hlZCEnKTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKGV2ZW50LmJvZHkucHVibGljTGluayk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KCdJbWFnZSB1cGxvYWQgZmFpbGVkIGR1ZSB0byBhIFhIUiBUcmFuc3BvcnQgZXJyb3I6JyArIGVycm9yKTtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0ltYWdlIHVwbG9hZCBmYWlsZWQgZHVlIHRvIGEgWEhSIFRyYW5zcG9ydCBlcnJvcjonICsgZXJyb3IpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHRyZXR1cm4gb2Yoe30pO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0c2V0dXA6IGZ1bmN0aW9uIChlZGl0b3I6IGFueSkge1xyXG5cdFx0XHRcdC8qIEFkZCBzbmlwcGV0cyBidXR0b24gdG8gdGhlIHRvb2xiYXIgKi9cclxuXHRcdFx0XHRlZGl0b3IudWkucmVnaXN0cnkuYWRkTWVudUJ1dHRvbignc25pcHBldHNCdXR0b24nLCB7XHJcblx0XHRcdFx0XHR0ZXh0OiAnU25pcHBldHMnLFxyXG5cdFx0XHRcdFx0ZmV0Y2g6IGZ1bmN0aW9uIChjYWxsYmFjazogYW55KSB7XHJcblx0XHRcdFx0XHRcdGNhbGxiYWNrKFtcclxuXHRcdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnbWVudWl0ZW0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGV4dDogJ1ZhcmlhYmxlJyxcclxuXHRcdFx0XHRcdFx0XHRcdG9uQWN0aW9uOiAoKSA9PiBlZGl0b3IuaW5zZXJ0Q29udGVudCgne3t2YXIgbmFtZX19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdtZW51aXRlbScsXHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0OiAnQmxvY2snLFxyXG5cdFx0XHRcdFx0XHRcdFx0b25BY3Rpb246ICgpID0+IGVkaXRvci5pbnNlcnRDb250ZW50KCd7e2Jsb2NrIG5hbWU9XCIuLi5cIn19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdtZW51aXRlbScsXHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0OiAnVmlldyBDb21wb25lbnQnLFxyXG5cdFx0XHRcdFx0XHRcdFx0b25BY3Rpb246ICgpID0+IGVkaXRvci5pbnNlcnRDb250ZW50KCd7e3ZjIG5hbWU9XCIuLi5cIn19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRdKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFudXAgc3Vic2NyaXB0aW9ucyB3aGVuIHRoaXMgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnJvdXRlU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcbn0iLCI8dmQtbGF5b3V0LW5hdiBjb2xvcj1cInByaW1hcnlcIiBbYmFja05hdmlnYXRpb25Sb3V0ZV09XCJsaXN0Um91dGVcIiB0b29sYmFyVGl0bGU9XCJDb250ZW50XCIgaTE4bi10b29sYmFyVGl0bGU9XCJAQGNvbnRlbnRcIiBbZWRpdE1vZGVdPVwiaXNFZGl0TW9kZVwiIFthY3Rpb25zXT1cInRvb2xiYXJBY3Rpb25zXCIgW2RhdGFdPVwiaXRlbVwiIFtjb250ZXh0XT1cInRoaXNcIj5cclxuXHQ8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuXHRcdDx2ZC1sYXlvdXQtY2FyZC1vdmVyIGNsYXNzPVwiYWNjb3JkaW9uXCIgY2FyZFdpZHRoPVwiNzBcIiBjb2xvcj1cInByaW1hcnlcIiBmbGV4PlxyXG5cdFx0XHQ8bWF0LWFjY29yZGlvbiBbbXVsdGldPVwiIWlzRWRpdE1vZGVcIj5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gRGV0YWlscyAtLT5cclxuXHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCBleHBhbmRlZD1cInRydWVcIiBpZD1cImRldGFpbHNcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZSBpMThuPVwiQEBkZXRhaWxzXCI+RGV0YWlsczwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcblx0XHRcdFx0XHRcdDx2ZC1nZW5lcmljLWZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgW2ZpZWxkR3JvdXBzXT1cImZpZWxkR3JvdXBzXCIgW2NvbnRleHRdPVwidGhpc1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSB2ZC1lZGl0b3IgbGV0LWZpZWxkPVwiZmllbGRcIiBsZXQtZm9ybUdyb3VwPVwiZm9ybUdyb3VwXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgbGF5b3V0LW1hcmdpbiBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGZsZXg+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxlZGl0b3IgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW2luaXRdPVwiZWRpdG9yQ29uZmlnXCIgdGlueU1hdEZvcm1Db250cm9sIGZsZXg+PC9lZGl0b3I+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZV1bJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0PC92ZC1nZW5lcmljLWZvcm0+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PG1hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAc2F2ZVwiPlNhdmU8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAqbmdJZj1cImlzRWRpdE1vZGUgfHwgdHJ1ZVwiIChjbGljayk9XCJhcHBseSgpXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAYXBwbHlcIj5BcHBseTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gZmxleD48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L21hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuXHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdDwhLS0gI3JlZ2lvbiBBdWRpdCAtLT5cclxuXHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCBpZD1cImF1ZGl0XCIgKm5nSWY9XCJpc0VkaXRNb2RlXCI+XHJcblx0XHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHRcdDxtYXQtcGFuZWwtdGl0bGU+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gaTE4bj1cIkBAYXVkaXRcIj5BdWRpdDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtcGFuZWwtdGl0bGU+XHJcblx0XHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIG1hdEV4cGFuc2lvblBhbmVsQ29udGVudD5cclxuXHRcdFx0XHRcdFx0PHZkLWF1ZGl0IFtlbnRpdHldPVwiaXRlbVwiPiA8L3ZkLWF1ZGl0PlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxtYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgKGNsaWNrKT1cImJhY2soKVwiIGkxOG49XCJAQGNsb3NlXCI+Q2xvc2U8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gZmxleD48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L21hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuXHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblx0XHRcdDwvbWF0LWFjY29yZGlvbj5cclxuXHRcdDwvdmQtbGF5b3V0LWNhcmQtb3Zlcj5cclxuXHQ8L2Zvcm0+XHJcbjwvdmQtbGF5b3V0LW5hdj4iXX0=
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Component, Inject } from '@angular/core';
|
|
2
|
-
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
3
|
-
import { ActivatedRoute } from '@angular/router';
|
|
4
|
-
import { FileService } from '@messaia/cdk';
|
|
5
|
-
import { Document } from '../../models/document';
|
|
6
|
-
import { DocumentService } from '../../services/document.service`';
|
|
7
|
-
import DocumentFormTemplate from '../../templates/document-form.template';
|
|
8
|
-
import { DocumentFormBaseComponent } from '../document-form-base/document-form-base.component';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../../services/document.service`";
|
|
11
|
-
import * as i2 from "@messaia/cdk";
|
|
12
|
-
import * as i3 from "@angular/router";
|
|
13
|
-
import * as i4 from "@angular/material/dialog";
|
|
14
|
-
import * as i5 from "@angular/common";
|
|
15
|
-
import * as i6 from "@angular/forms";
|
|
16
|
-
import * as i7 from "@angular/material/button";
|
|
17
|
-
import * as i8 from "@angular/material/form-field";
|
|
18
|
-
import * as i9 from "../../models/document";
|
|
19
|
-
export class DocumentDialogComponent extends DocumentFormBaseComponent {
|
|
20
|
-
documentService;
|
|
21
|
-
fileService;
|
|
22
|
-
route;
|
|
23
|
-
changeDetectorRef;
|
|
24
|
-
dialogRef;
|
|
25
|
-
data;
|
|
26
|
-
/**
|
|
27
|
-
* Constructor
|
|
28
|
-
*/
|
|
29
|
-
constructor(documentService, fileService, route, changeDetectorRef, dialogRef, data = new Document()) {
|
|
30
|
-
super(Document, documentService, fileService, dialogRef, route, changeDetectorRef, data);
|
|
31
|
-
this.documentService = documentService;
|
|
32
|
-
this.fileService = fileService;
|
|
33
|
-
this.route = route;
|
|
34
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
35
|
-
this.dialogRef = dialogRef;
|
|
36
|
-
this.data = data;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Event emitted before the form has built.
|
|
40
|
-
*/
|
|
41
|
-
onBeforeFormBuild() {
|
|
42
|
-
this.item.isPublic = true;
|
|
43
|
-
}
|
|
44
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DocumentDialogComponent, deps: [{ token: i1.DocumentService }, { token: i2.FileService }, { token: i3.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
45
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: DocumentDialogComponent, selector: "document-dialog", usesInheritance: true, ngImport: i0, template: "\n <div mat-dialog-title class=\"mat-headline-6\" i18n=\"@@newDocument\">New document</div>\n <form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\n <ng-template vd-file let-field=\"field\" let-formGroup=\"formGroup\">\n <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\n <mat-label>{{field.header}}</mat-label>\n <div vd-file-input [formControlName]=\"field.name\" (select)=\"upload($event)\" [accept]=\"field.fileExtensions\"></div>\n </mat-form-field>\n </ng-template>\n </vd-generic-form>\n <div mat-dialog-actions class=\"pad-top\">\n <button type=\"submit\" mat-flat-button [disabled]=\"isSaving\" color=\"primary\" i18n=\"@@save\">Save</button>\n <button type=\"button\" mat-button (click)=\"cancel()\" i18n=\"@@cancel\">Cancel</button>\n </div>\n </form>", isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.VdFileDirective, selector: "[vd-file]ng-template" }, { kind: "component", type: i2.VdGenericFormComponent, selector: "vd-generic-form", inputs: ["formGroup", "classType", "formDefinition", "fieldGroups", "groupName", "fieldSets", "context", "debugValue", "readonly", "separatorKeysCodes"] }, { kind: "component", type: i2.VdFileInputComponent, selector: "[vd-file-input]", inputs: ["accept", "placeholder", "required", "multiple", "disabled", "errorState"], outputs: ["select", "clear"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }] });
|
|
46
|
-
}
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DocumentDialogComponent, decorators: [{
|
|
48
|
-
type: Component,
|
|
49
|
-
args: [{
|
|
50
|
-
selector: 'document-dialog',
|
|
51
|
-
template: DocumentFormTemplate
|
|
52
|
-
}]
|
|
53
|
-
}], ctorParameters: () => [{ type: i1.DocumentService }, { type: i2.FileService }, { type: i3.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i4.MatDialogRef }, { type: i9.Document, decorators: [{
|
|
54
|
-
type: Inject,
|
|
55
|
-
args: [MAT_DIALOG_DATA]
|
|
56
|
-
}] }] });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9kb2N1bWVudC1kaWFsb2cvZG9jdW1lbnQtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxvQkFBb0IsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7Ozs7QUFNL0YsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHlCQUFvRDtJQU1yRjtJQUNBO0lBQ0E7SUFDQTtJQUNIO0lBQ3lCO0lBVGpDOztPQUVHO0lBQ0gsWUFDVyxlQUFnQyxFQUNoQyxXQUF3QixFQUN4QixLQUFxQixFQUNyQixpQkFBb0MsRUFDdkMsU0FBZ0QsRUFDdkIsT0FBaUIsSUFBSSxRQUFRLEVBQUU7UUFFL0QsS0FBSyxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFQOUUsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDdkMsY0FBUyxHQUFULFNBQVMsQ0FBdUM7UUFDdkIsU0FBSSxHQUFKLElBQUksQ0FBMkI7SUFHaEUsQ0FBQztJQUVEOztPQUVHO0lBQ08saUJBQWlCO1FBQzFCLElBQUksQ0FBQyxJQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO3VHQXJCVyx1QkFBdUIsdUtBVzFCLGVBQWU7MkZBWFosdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRSxvQkFBb0I7aUJBQzlCOzswQkFZRSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZpbGVTZXJ2aWNlIH0gZnJvbSAnQG1lc3NhaWEvY2RrJztcclxuaW1wb3J0IHsgRG9jdW1lbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZG9jdW1lbnQnO1xyXG5pbXBvcnQgeyBEb2N1bWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb2N1bWVudC5zZXJ2aWNlYCc7XHJcbmltcG9ydCBEb2N1bWVudEZvcm1UZW1wbGF0ZSBmcm9tICcuLi8uLi90ZW1wbGF0ZXMvZG9jdW1lbnQtZm9ybS50ZW1wbGF0ZSc7XHJcbmltcG9ydCB7IERvY3VtZW50Rm9ybUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9kb2N1bWVudC1mb3JtLWJhc2UvZG9jdW1lbnQtZm9ybS1iYXNlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2RvY3VtZW50LWRpYWxvZycsXHJcblx0dGVtcGxhdGU6IERvY3VtZW50Rm9ybVRlbXBsYXRlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEb2N1bWVudERpYWxvZ0NvbXBvbmVudCBleHRlbmRzIERvY3VtZW50Rm9ybUJhc2VDb21wb25lbnQ8RG9jdW1lbnQsIERvY3VtZW50U2VydmljZT4ge1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJvdGVjdGVkIGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGZpbGVTZXJ2aWNlOiBGaWxlU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0cHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERvY3VtZW50RGlhbG9nQ29tcG9uZW50PixcclxuXHRcdEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogRG9jdW1lbnQgPSBuZXcgRG9jdW1lbnQoKVxyXG5cdCkge1xyXG5cdFx0c3VwZXIoRG9jdW1lbnQsIGRvY3VtZW50U2VydmljZSwgZmlsZVNlcnZpY2UsIGRpYWxvZ1JlZiwgcm91dGUsIGNoYW5nZURldGVjdG9yUmVmLCBkYXRhKVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCBiZWZvcmUgdGhlIGZvcm0gaGFzIGJ1aWx0LlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkJlZm9yZUZvcm1CdWlsZCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuaXRlbSEuaXNQdWJsaWMgPSB0cnVlO1xyXG5cdH1cclxufSJdfQ==
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { HttpEventType, HttpResponse } from '@angular/common/http';
|
|
2
|
-
import { ChangeDetectorRef, Directive, Type } from '@angular/core';
|
|
3
|
-
import { MatDialogRef } from '@angular/material/dialog';
|
|
4
|
-
import { ActivatedRoute } from '@angular/router';
|
|
5
|
-
import { FileService, GenericReactiveFormComponent, SaveAction } from '@messaia/cdk';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@messaia/cdk";
|
|
8
|
-
import * as i2 from "@angular/material/dialog";
|
|
9
|
-
import * as i3 from "@angular/router";
|
|
10
|
-
export class DocumentFormBaseComponent extends GenericReactiveFormComponent {
|
|
11
|
-
entityType;
|
|
12
|
-
documentService;
|
|
13
|
-
fileService;
|
|
14
|
-
dialogRef;
|
|
15
|
-
route;
|
|
16
|
-
changeDetectorRef;
|
|
17
|
-
data;
|
|
18
|
-
/**
|
|
19
|
-
* Upload status
|
|
20
|
-
*/
|
|
21
|
-
isUploading = false;
|
|
22
|
-
/**
|
|
23
|
-
* Upload progress
|
|
24
|
-
*/
|
|
25
|
-
uploadProgress = 0;
|
|
26
|
-
/**
|
|
27
|
-
* Constructor
|
|
28
|
-
*/
|
|
29
|
-
constructor(entityType, documentService, fileService, dialogRef, route, changeDetectorRef, data) {
|
|
30
|
-
super(entityType, documentService, route, changeDetectorRef);
|
|
31
|
-
this.entityType = entityType;
|
|
32
|
-
this.documentService = documentService;
|
|
33
|
-
this.fileService = fileService;
|
|
34
|
-
this.dialogRef = dialogRef;
|
|
35
|
-
this.route = route;
|
|
36
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
37
|
-
this.data = data;
|
|
38
|
-
this.item = data;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Uploads a new document
|
|
42
|
-
*/
|
|
43
|
-
upload(file) {
|
|
44
|
-
if (file != null) {
|
|
45
|
-
this.fileService
|
|
46
|
-
.upload(file, `upload`, new this.entityType(Object.assign(this.data || {}, this.formValue)))
|
|
47
|
-
.subscribe({
|
|
48
|
-
next: (event) => {
|
|
49
|
-
if (event.type === HttpEventType.UploadProgress) {
|
|
50
|
-
/* Calculate the progress percentage */
|
|
51
|
-
const percentDone = Math.round(100 * event.loaded / event.total);
|
|
52
|
-
/* Pass the percentage into the progress-stream */
|
|
53
|
-
this.uploadProgress = percentDone;
|
|
54
|
-
}
|
|
55
|
-
else if (event instanceof HttpResponse) {
|
|
56
|
-
this.form.patchValue(event.body);
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
complete: () => this.isUploading = false,
|
|
60
|
-
error: () => this.isUploading = false
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Event emitted after data submition
|
|
66
|
-
* @param action
|
|
67
|
-
* @param response
|
|
68
|
-
*/
|
|
69
|
-
onAfterSubmit(_1 = SaveAction.SaveAndClose, _2 = null) {
|
|
70
|
-
this.isSaving = false;
|
|
71
|
-
this.cancel();
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Closes the dialog
|
|
75
|
-
*/
|
|
76
|
-
cancel() {
|
|
77
|
-
this.dialogRef.close();
|
|
78
|
-
this.reloadPage();
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Creates a new instance of the TEntity
|
|
82
|
-
*/
|
|
83
|
-
newInstance() {
|
|
84
|
-
return super.newInstance(Object.assign(new this.entityType({
|
|
85
|
-
clientId: this.currentUser?.clientId,
|
|
86
|
-
departmentId: this.currentUser?.departmentId
|
|
87
|
-
}), this.data || {}));
|
|
88
|
-
}
|
|
89
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DocumentFormBaseComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
90
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: DocumentFormBaseComponent, usesInheritance: true, ngImport: i0 });
|
|
91
|
-
}
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DocumentFormBaseComponent, decorators: [{
|
|
93
|
-
type: Directive
|
|
94
|
-
}], ctorParameters: () => [{ type: i0.Type }, { type: undefined }, { type: i1.FileService }, { type: i2.MatDialogRef }, { type: i3.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: undefined }] });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZm9ybS1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9kb2N1bWVudC1mb3JtLWJhc2UvZG9jdW1lbnQtZm9ybS1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSw0QkFBNEIsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7O0FBS3JGLE1BQU0sT0FBZ0IseUJBQXNILFNBQVEsNEJBQXlEO0lBZTNMO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBcEJkOztPQUVHO0lBQ0ksV0FBVyxHQUFZLEtBQUssQ0FBQztJQUVwQzs7T0FFRztJQUNJLGNBQWMsR0FBVyxDQUFDLENBQUM7SUFFbEM7O09BRUc7SUFDSCxZQUNjLFVBQTJCLEVBQzNCLGVBQWlDLEVBQ2pDLFdBQXdCLEVBQ3hCLFNBQStFLEVBQy9FLEtBQXFCLEVBQ3JCLGlCQUFvQyxFQUNwQyxJQUFlO1FBRXpCLEtBQUssQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO1FBUmxELGVBQVUsR0FBVixVQUFVLENBQWlCO1FBQzNCLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFzRTtRQUMvRSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFNBQUksR0FBSixJQUFJLENBQVc7UUFHekIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLElBQXFCO1FBQy9CLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFdBQVc7aUJBQ1gsTUFBTSxDQUFDLElBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7aUJBQ25HLFNBQVMsQ0FBQztnQkFDUCxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDWixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUU5Qyx1Q0FBdUM7d0JBQ3ZDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUVqRSxrREFBa0Q7d0JBQ2xELElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO29CQUN0QyxDQUFDO3lCQUFNLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRSxDQUFDO3dCQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBVyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQy9DLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLO2dCQUN4QyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLO2FBQ3hDLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGFBQWEsQ0FBQyxLQUFpQixVQUFVLENBQUMsWUFBWSxFQUFFLEtBQVUsSUFBSTtRQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNPLFdBQVc7UUFDakIsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3ZELFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVE7WUFDcEMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWTtTQUMvQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7dUdBL0VpQix5QkFBeUI7MkZBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEOUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZpbGVTZXJ2aWNlLCBHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50LCBTYXZlQWN0aW9uIH0gZnJvbSAnQG1lc3NhaWEvY2RrJztcclxuaW1wb3J0IHsgRG9jdW1lbnRCYXNlIH0gZnJvbSBcIkBtZXNzYWlhL2Nkay1iYXNlXCI7XHJcbmltcG9ydCB7IERvY3VtZW50R2VuZXJpY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb2N1bWVudC5nZW5lcmljLXNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEb2N1bWVudEZvcm1CYXNlQ29tcG9uZW50PFREb2N1bWVudCBleHRlbmRzIERvY3VtZW50QmFzZSwgVERvY3VtZW50U2VydmljZSBleHRlbmRzIERvY3VtZW50R2VuZXJpY1NlcnZpY2U8VERvY3VtZW50Pj4gZXh0ZW5kcyBHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50PFREb2N1bWVudCwgVERvY3VtZW50U2VydmljZT4ge1xyXG4gICAgLyoqXHJcbiAgICAgKiBVcGxvYWQgc3RhdHVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc1VwbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkIHByb2dyZXNzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGxvYWRQcm9ncmVzczogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBlbnRpdHlUeXBlOiBUeXBlPFREb2N1bWVudD4sXHJcbiAgICAgICAgcHJvdGVjdGVkIGRvY3VtZW50U2VydmljZTogVERvY3VtZW50U2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgZmlsZVNlcnZpY2U6IEZpbGVTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEb2N1bWVudEZvcm1CYXNlQ29tcG9uZW50PFREb2N1bWVudCwgVERvY3VtZW50U2VydmljZT4+LFxyXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgZGF0YTogVERvY3VtZW50XHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihlbnRpdHlUeXBlLCBkb2N1bWVudFNlcnZpY2UsIHJvdXRlLCBjaGFuZ2VEZXRlY3RvclJlZilcclxuICAgICAgICB0aGlzLml0ZW0gPSBkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkcyBhIG5ldyBkb2N1bWVudFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBsb2FkKGZpbGU6IEZpbGUgfCBGaWxlTGlzdCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChmaWxlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLnVwbG9hZChmaWxlIGFzIEZpbGUsIGB1cGxvYWRgLCBuZXcgdGhpcy5lbnRpdHlUeXBlKE9iamVjdC5hc3NpZ24odGhpcy5kYXRhIHx8IHt9LCB0aGlzLmZvcm1WYWx1ZSkpKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FsY3VsYXRlIHRoZSBwcm9ncmVzcyBwZXJjZW50YWdlICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwZXJjZW50RG9uZSA9IE1hdGgucm91bmQoMTAwICogZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBhc3MgdGhlIHBlcmNlbnRhZ2UgaW50byB0aGUgcHJvZ3Jlc3Mtc3RyZWFtICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gcGVyY2VudERvbmU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKDxEb2N1bWVudD5ldmVudC5ib2R5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4gdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCBlbWl0dGVkIGFmdGVyIGRhdGEgc3VibWl0aW9uXHJcbiAgICAgKiBAcGFyYW0gYWN0aW9uIFxyXG4gICAgICogQHBhcmFtIHJlc3BvbnNlIFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgb25BZnRlclN1Ym1pdChfMTogU2F2ZUFjdGlvbiA9IFNhdmVBY3Rpb24uU2F2ZUFuZENsb3NlLCBfMjogYW55ID0gbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhbmNlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xvc2VzIHRoZSBkaWFsb2dcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMucmVsb2FkUGFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgVEVudGl0eVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgbmV3SW5zdGFuY2UoKTogVERvY3VtZW50IHtcclxuICAgICAgICByZXR1cm4gc3VwZXIubmV3SW5zdGFuY2UoT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5lbnRpdHlUeXBlKHtcclxuICAgICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY3VycmVudFVzZXI/LmNsaWVudElkLFxyXG4gICAgICAgICAgICBkZXBhcnRtZW50SWQ6IHRoaXMuY3VycmVudFVzZXI/LmRlcGFydG1lbnRJZFxyXG4gICAgICAgIH0pLCB0aGlzLmRhdGEgfHwge30pKTtcclxuICAgIH1cclxufSJdfQ==
|