@messaia/cdk-cms 15.0.0-rc67 → 15.0.0-rc69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,29 +1,29 @@
1
1
  import * as i5 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable, Component, ViewChild, Inject, ViewEncapsulation, NgModule } from '@angular/core';
4
+ import { Injectable, Component, ViewChild, Directive, Inject, ViewEncapsulation, NgModule } from '@angular/core';
5
5
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
6
6
  import * as i8 from '@angular/material/button';
7
7
  import { MatButtonModule } from '@angular/material/button';
8
8
  import * as i7$1 from '@angular/material/card';
9
9
  import { MatCardModule } from '@angular/material/card';
10
- import * as i10$1 from '@angular/material/checkbox';
11
10
  import { MatCheckboxModule } from '@angular/material/checkbox';
12
11
  import { MatChipsModule } from '@angular/material/chips';
12
+ import * as i2$1 from '@angular/material/dialog';
13
+ import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
13
14
  import * as i7 from '@angular/material/expansion';
14
15
  import { MatExpansionModule } from '@angular/material/expansion';
15
- import * as i9$2 from '@angular/material/icon';
16
+ import * as i9$1 from '@angular/material/icon';
16
17
  import { MatIconModule } from '@angular/material/icon';
17
- import * as i11$2 from '@angular/material/input';
18
+ import * as i11$1 from '@angular/material/input';
18
19
  import { MatInputModule } from '@angular/material/input';
19
20
  import * as i12 from '@angular/material/progress-bar';
20
21
  import { MatProgressBarModule } from '@angular/material/progress-bar';
21
- import * as i11$1 from '@angular/material/select';
22
22
  import { MatSelectModule } from '@angular/material/select';
23
23
  import * as i6$1 from '@ctrl/ngx-codemirror';
24
24
  import { CodemirrorModule } from '@ctrl/ngx-codemirror';
25
25
  import * as i2 from '@messaia/cdk';
26
- import { prop, required, AuditEntity, Column, FormField, Display, Grid, FormFieldType, Utils, Api, Table, GenericService, GenericReactiveFormComponent, EnumService, AuthHelper, SaveAction, BaseComponent, ServiceLocator, GlobalRoles, VdCommonModule, VdLayoutModule, VdMediaModule, VdFormsModule, VdSelectModule, VdChipsModule } from '@messaia/cdk';
26
+ import { prop, required, AuditEntity, Column, FormField, Display, Grid, FormFieldType, Utils, Api, Table, GenericService, GenericReactiveFormComponent, EnumService, AuthHelper, SaveAction, BaseComponent, ServiceLocator, GlobalRoles, VdCommonModule, VdLayoutModule, VdMediaModule, VdFormsModule, VdSelectModule, VdChipsModule, VdFileModule } from '@messaia/cdk';
27
27
  import * as i11 from '@messaia/cdk-base';
28
28
  import { DocumentBase, VdDynamicListComponent, VdDynamicFormComponent, DocumentType, VdCdkBaseModule } from '@messaia/cdk-base';
29
29
  import * as i10 from '@tinymce/tinymce-angular';
@@ -39,16 +39,13 @@ import { __decorate, __metadata } from 'tslib';
39
39
  import { map } from 'rxjs/operators';
40
40
  import * as i6 from '@angular/forms';
41
41
  import * as i9 from '@angular/material/form-field';
42
- import * as i4 from '@angular/material/dialog';
43
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
44
- import * as i9$1 from '@angular/material/core';
45
42
  import 'codemirror/addon/edit/closetag';
46
43
  import 'codemirror/addon/edit/matchbrackets';
47
44
  import 'codemirror/addon/selection/active-line';
48
45
  import 'codemirror/mode/htmlmixed/htmlmixed';
49
46
  import 'codemirror/mode/javascript/javascript';
50
47
  import { saveAs } from 'file-saver';
51
- import { of, map as map$1 } from 'rxjs';
48
+ import { map as map$1, of } from 'rxjs';
52
49
  import * as i1 from 'angular-auth-oidc-client';
53
50
 
54
51
  var ContentType;
@@ -225,7 +222,7 @@ __decorate([
225
222
  filter: 'clientJoins.client.displayName',
226
223
  sortBy: 'clientJoins.Min(client.displayName)',
227
224
  content: (x) => { var _a; return Utils.joinArray((_a = x.clientJoins) === null || _a === void 0 ? void 0 : _a.map(y => y.clientName)); },
228
- display: Grid.Xl,
225
+ display: Grid.Lg,
229
226
  maxWidth: 200,
230
227
  hide: (_, ctx) => { var _a, _b; return !ctx.isAdmin || (!((_a = ctx.settings) === null || _a === void 0 ? void 0 : _a.multitenantable) && !((_b = ctx.settings) === null || _b === void 0 ? void 0 : _b.multiClients)); },
231
228
  }),
@@ -257,7 +254,7 @@ __decorate([
257
254
  filter: 'departmentJoins.department.displayName',
258
255
  sortBy: 'departmentJoins.Min(department.displayName)',
259
256
  content: (x) => { var _a; return Utils.joinArray((_a = x.departmentJoins) === null || _a === void 0 ? void 0 : _a.map(y => y.departmentName)); },
260
- display: Grid.Xl,
257
+ display: Grid.Lg,
261
258
  maxWidth: 200,
262
259
  hide: (_, ctx) => { var _a, _b; return !ctx.isAdmin || (!((_a = ctx.settings) === null || _a === void 0 ? void 0 : _a.multitenantable) && !((_b = ctx.settings) === null || _b === void 0 ? void 0 : _b.multiClients)); },
263
260
  }),
@@ -562,95 +559,113 @@ let Document = class Document extends DocumentBase {
562
559
  /**
563
560
  * @property
564
561
  */
565
- this.attachments = [];
562
+ this.clientId = AuthHelper.user.clientId;
563
+ /**
564
+ * @property
565
+ */
566
+ this.departmentId = AuthHelper.user.departmentId;
567
+ /**
568
+ * @property
569
+ */
570
+ this.path = 'docs';
566
571
  Object.assign(this, init);
567
572
  }
568
573
  };
569
574
  __decorate([
570
- prop(),
571
- __metadata("design:type", Number)
572
- ], Document.prototype, "customerId", void 0);
573
- __decorate([
575
+ required(),
574
576
  Column({
575
- index: 5,
576
- name: 'client.displayName',
577
- header: $localize `:@@client:Client`,
577
+ index: 10,
578
+ name: 'clientName',
579
+ filter: 'client.displayName',
580
+ sortBy: 'client.displayName',
578
581
  endpoint: 'client?enabled=true&projection=id,name',
579
- maxWidth: 250,
580
- display: Grid.Xl
582
+ maxWidth: 200,
583
+ display: Grid.Lg,
584
+ hide: (_, ctx) => { var _a, _b; return !ctx.isAdmin || (!((_a = ctx.settings) === null || _a === void 0 ? void 0 : _a.multitenantable) && !((_b = ctx.settings) === null || _b === void 0 ? void 0 : _b.multiClients)); },
581
585
  }),
582
- required(),
586
+ FormField({
587
+ row: 1,
588
+ endpoint: 'client',
589
+ projection: 'id,name',
590
+ params: (x) => { return { enabled: true }; },
591
+ readonly: (x) => x.id,
592
+ hide: (_, __, ctx) => { var _a; return (_a = ctx.currentUser) === null || _a === void 0 ? void 0 : _a.isDepartmentAdmin; }
593
+ }),
594
+ Display($localize `:@@project:Project`),
583
595
  __metadata("design:type", Number)
584
596
  ], Document.prototype, "clientId", void 0);
597
+ __decorate([
598
+ prop(),
599
+ Column({
600
+ index: 11,
601
+ name: 'departmentName',
602
+ filter: 'department.displayName',
603
+ sortBy: 'department.displayName',
604
+ endpoint: 'department?enabled=true&projection=id,name',
605
+ maxWidth: 200,
606
+ display: Grid.Lg,
607
+ hide: (_, ctx) => { var _a, _b; return !ctx.isAdmin || (!((_a = ctx.settings) === null || _a === void 0 ? void 0 : _a.multitenantable) && !((_b = ctx.settings) === null || _b === void 0 ? void 0 : _b.multiClients)); },
608
+ }),
609
+ FormField({
610
+ row: 2,
611
+ endpoint: 'department',
612
+ projection: 'id,name',
613
+ params: (x) => { return { clientId: x.clientId, enabled: true }; },
614
+ fetchCondition: (x) => x.clientId > 0,
615
+ readonly: (x) => x.id || !x.clientId,
616
+ hide: (_, __, ctx) => { var _a; return (_a = ctx.currentUser) === null || _a === void 0 ? void 0 : _a.isDepartmentAdmin; }
617
+ }),
618
+ Display($localize `:@@department:Department`),
619
+ __metadata("design:type", Number)
620
+ ], Document.prototype, "departmentId", void 0);
585
621
  __decorate([
586
622
  required(),
587
623
  __metadata("design:type", String)
588
624
  ], Document.prototype, "path", void 0);
589
- __decorate([
590
- prop(),
591
- __metadata("design:type", Array)
592
- ], Document.prototype, "attachments", void 0);
593
625
  Document = __decorate([
594
626
  Table({
595
627
  endpoint: 'document',
628
+ projection: ['id', 'createdDate', 'name', 'extension', 'publicLink'],
596
629
  editable: false,
597
630
  downloadable: true
598
631
  }),
599
632
  __metadata("design:paramtypes", [Object])
600
633
  ], Document);
601
634
 
602
- class DocumentGenericService extends GenericService {
603
- /**
604
- * Constructor
605
- * @param serviceName
606
- */
607
- constructor(serviceName) {
608
- super(serviceName);
609
- }
610
- }
611
-
612
- class DocumentService extends DocumentGenericService {
613
- /**
614
- * Constructor
615
- */
616
- constructor() {
617
- super('document');
618
- }
619
- /**
620
- * Sends an email to the customer
621
- * @param id The ID of the document
622
- */
623
- sendMail(id) {
624
- return this.update(`sendMail/${id}`, null);
625
- }
626
- }
627
- DocumentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
628
- DocumentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentService, providedIn: 'root' });
629
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentService, decorators: [{
630
- type: Injectable,
631
- args: [{ providedIn: 'root' }]
632
- }], ctorParameters: function () { return []; } });
635
+ const DocumentFormTemplate = `
636
+ <div mat-dialog-title class="mat-headline-6" i18n="@@newDocument">New document</div>
637
+ <form *ngIf="form" [formGroup]="form" (ngSubmit)="save()">
638
+ <vd-generic-form [formGroup]="form" [fieldGroups]="fieldGroups" [context]="this">
639
+ <ng-template vd-file let-field="field" let-formGroup="formGroup">
640
+ <mat-form-field [attr.flex]="field.flex||0" layout-margin appearance="outline">
641
+ <mat-label>{{field.header}}</mat-label>
642
+ <div vd-file-input [formControlName]="field.name" (select)="upload($event)" [accept]="field.fileExtensions"></div>
643
+ </mat-form-field>
644
+ </ng-template>
645
+ </vd-generic-form>
646
+ <div mat-dialog-actions class="pad-top">
647
+ <button type="submit" mat-flat-button [disabled]="isSaving" color="primary" i18n="@@save">Save</button>
648
+ <button type="button" mat-button (click)="cancel()" i18n="@@cancel">Cancel</button>
649
+ </div>
650
+ </form>`;
633
651
 
634
- class DocumentDialogComponent extends GenericReactiveFormComponent {
652
+ class DocumentFormBaseComponent extends GenericReactiveFormComponent {
635
653
  /**
636
654
  * Constructor
637
655
  */
638
- constructor(documentService, fileService, route, changeDetectorRef, dialogRef, data = new Document()) {
639
- super(Document, documentService, route, changeDetectorRef);
656
+ constructor(entityType, documentService, fileService, dialogRef, route, changeDetectorRef, data) {
657
+ super(entityType, documentService, route, changeDetectorRef);
658
+ this.entityType = entityType;
640
659
  this.documentService = documentService;
641
660
  this.fileService = fileService;
661
+ this.dialogRef = dialogRef;
642
662
  this.route = route;
643
663
  this.changeDetectorRef = changeDetectorRef;
644
- this.dialogRef = dialogRef;
645
664
  this.data = data;
646
665
  /**
647
666
  * Upload progress
648
667
  */
649
668
  this.uploadProgress = 0;
650
- /**
651
- * Used to disable some properties for client manager
652
- */
653
- this.isClientManager = AuthHelper.hasRole('ClientAdministrator') || AuthHelper.hasRole('ClientManager');
654
669
  /**
655
670
  * settings: CmsSettings
656
671
  */
@@ -662,15 +677,10 @@ class DocumentDialogComponent extends GenericReactiveFormComponent {
662
677
  * Uploads a new document
663
678
  */
664
679
  upload(file) {
665
- var _a, _b, _c;
666
- if (file != null && this.item && this.item.clientId) {
667
- this.isUploading = true;
668
- this.fileService.upload(file, `upload`, {
669
- clientId: (_a = this.formValue) === null || _a === void 0 ? void 0 : _a.clientId,
670
- path: (_b = this.formValue) === null || _b === void 0 ? void 0 : _b.path,
671
- isPublic: true,
672
- preserveOriginalName: (_c = this.formValue) === null || _c === void 0 ? void 0 : _c.preserveOriginalName
673
- }).subscribe({
680
+ if (file != null) {
681
+ this.fileService
682
+ .upload(file, `upload`, new this.entityType(Object.assign(this.data || {}, this.formValue)))
683
+ .subscribe({
674
684
  next: (event) => {
675
685
  if (event.type === HttpEventType.UploadProgress) {
676
686
  /* Calculate the progress percentage */
@@ -692,7 +702,7 @@ class DocumentDialogComponent extends GenericReactiveFormComponent {
692
702
  * @param action
693
703
  * @param response
694
704
  */
695
- onAfterSubmit(action = SaveAction.SaveAndClose, response = null) {
705
+ onAfterSubmit(_1 = SaveAction.SaveAndClose, _2 = null) {
696
706
  this.isSaving = false;
697
707
  this.cancel();
698
708
  }
@@ -701,15 +711,87 @@ class DocumentDialogComponent extends GenericReactiveFormComponent {
701
711
  */
702
712
  cancel() {
703
713
  this.dialogRef.close();
714
+ this.reloadPage();
715
+ }
716
+ /**
717
+ * Creates a new instance of the TEntity
718
+ */
719
+ newInstance() {
720
+ var _a, _b;
721
+ return super.newInstance(Object.assign(new this.entityType({
722
+ clientId: (_a = this.currentUser) === null || _a === void 0 ? void 0 : _a.clientId,
723
+ departmentId: (_b = this.currentUser) === null || _b === void 0 ? void 0 : _b.departmentId
724
+ }), this.data || {}));
704
725
  }
705
726
  }
706
- DocumentDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentDialogComponent, deps: [{ token: DocumentService }, { token: i2.FileService }, { token: i3$1.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
707
- DocumentDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: DocumentDialogComponent, selector: "document-dialog", usesInheritance: true, ngImport: i0, template: "<div mat-dialog-title class=\"mat-headline-6\" i18n=\"@@newDocument\">New document</div>\r\n<form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n\t<div>\r\n\t\t<!-- #region Client-->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientManager\">\r\n\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" projection=\"id,displayName\" text=\"displayName\" layout=\"column\" flex></vd-select>\r\n\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Path -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t<mat-label i18n=\"@@type\">Type</mat-label>\r\n\t\t\t\t<mat-select formControlName=\"path\">\r\n\t\t\t\t\t<mat-option value=\"docs\"><span i18n=\"@@document\">Document</span></mat-option>\r\n\t\t\t\t\t<mat-option value=\"images\"><span i18n=\"@@image\">Image</span></mat-option>\r\n\t\t\t\t\t<mat-option value=\"videos\"><span i18n=\"@@video\">Video</span></mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.path['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion-->\r\n\r\n\t\t<!-- #region PreserveOriginalName -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientManager\">\r\n\t\t\t<div layout-margin>\r\n\t\t\t\t<mat-checkbox name=\"preserveOriginalName\" formControlName=\"preserveOriginalName\" (change)=\"item.name = ''\" i18n=\"@@preserveOriginalName\">Preserve original name</mat-checkbox>\r\n\t\t\t\t<br />\r\n\t\t\t\t<mat-hint *ngIf=\"formValue?.preserveOriginalName\" class=\"tc-red-500\" i18n=\"@@warningOldFilesWillBeBverridden\">Warning: old files will be overridden</mat-hint>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region File -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t<mat-label i18n=\"@@file\">File</mat-label>\r\n\t\t\t\t<div vd-file-input formControlName=\"name\" (select)=\"upload($event)\" [required]=\"true\"></div>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\t</div>\r\n\t<div mat-dialog-actions class=\"pad-top\">\r\n\t\t<button type=\"submit\" mat-flat-button [disabled]=\"isSaving\" color=\"primary\" i18n=\"@@save\">Save</button>\r\n\t\t<button type=\"button\" mat-button (click)=\"cancel()\" i18n=\"@@cancel\">Cancel</button>\r\n\t</div>\r\n</form>", 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { 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: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], 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: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i2.VdFileInputComponent, selector: "[vd-file-input]", inputs: ["accept", "placeholder", "required", "multiple", "disabled", "errorState"], outputs: ["select", "clear"] }, { kind: "component", type: i2.VdSelectComponent, selector: "vd-select", inputs: ["triggerCssClass", "triggerMode"] }, { kind: "component", type: i9$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i10$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i11$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }] });
727
+ DocumentFormBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentFormBaseComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
728
+ DocumentFormBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.0", type: DocumentFormBaseComponent, usesInheritance: true, ngImport: i0 });
729
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentFormBaseComponent, decorators: [{
730
+ type: Directive
731
+ }], ctorParameters: function () { return [{ type: i0.Type }, { type: undefined }, { type: i2.FileService }, { type: i2$1.MatDialogRef }, { type: i3$1.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: undefined }]; } });
732
+
733
+ class DocumentGenericService extends GenericService {
734
+ /**
735
+ * Constructor
736
+ * @param serviceName
737
+ */
738
+ constructor(serviceName) {
739
+ super(serviceName);
740
+ }
741
+ }
742
+
743
+ class DocumentService extends DocumentGenericService {
744
+ /**
745
+ * Constructor
746
+ */
747
+ constructor() {
748
+ super('document');
749
+ }
750
+ /**
751
+ * Sends an email to the customer
752
+ * @param id The ID of the document
753
+ */
754
+ sendMail(id) {
755
+ return this.update(`sendMail/${id}`, null);
756
+ }
757
+ }
758
+ DocumentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
759
+ DocumentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentService, providedIn: 'root' });
760
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentService, decorators: [{
761
+ type: Injectable,
762
+ args: [{ providedIn: 'root' }]
763
+ }], ctorParameters: function () { return []; } });
764
+
765
+ class DocumentDialogComponent extends DocumentFormBaseComponent {
766
+ /**
767
+ * Constructor
768
+ */
769
+ constructor(documentService, fileService, route, changeDetectorRef, dialogRef, data = new Document()) {
770
+ super(Document, documentService, fileService, dialogRef, route, changeDetectorRef, data);
771
+ this.documentService = documentService;
772
+ this.fileService = fileService;
773
+ this.route = route;
774
+ this.changeDetectorRef = changeDetectorRef;
775
+ this.dialogRef = dialogRef;
776
+ this.data = data;
777
+ }
778
+ /**
779
+ * Event emitted before the form has built.
780
+ */
781
+ onBeforeFormBuild() {
782
+ this.item.isPublic = true;
783
+ }
784
+ }
785
+ DocumentDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentDialogComponent, deps: [{ token: DocumentService }, { token: i2.FileService }, { token: i3$1.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i2$1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
786
+ DocumentDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", 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: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], 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: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.VdFileDirective, selector: "[vd-file]ng-template" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { 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: i2$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }] });
708
787
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentDialogComponent, decorators: [{
709
788
  type: Component,
710
- args: [{ selector: 'document-dialog', template: "<div mat-dialog-title class=\"mat-headline-6\" i18n=\"@@newDocument\">New document</div>\r\n<form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n\t<div>\r\n\t\t<!-- #region Client-->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientManager\">\r\n\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" projection=\"id,displayName\" text=\"displayName\" layout=\"column\" flex></vd-select>\r\n\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Path -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t<mat-label i18n=\"@@type\">Type</mat-label>\r\n\t\t\t\t<mat-select formControlName=\"path\">\r\n\t\t\t\t\t<mat-option value=\"docs\"><span i18n=\"@@document\">Document</span></mat-option>\r\n\t\t\t\t\t<mat-option value=\"images\"><span i18n=\"@@image\">Image</span></mat-option>\r\n\t\t\t\t\t<mat-option value=\"videos\"><span i18n=\"@@video\">Video</span></mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.path['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion-->\r\n\r\n\t\t<!-- #region PreserveOriginalName -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientManager\">\r\n\t\t\t<div layout-margin>\r\n\t\t\t\t<mat-checkbox name=\"preserveOriginalName\" formControlName=\"preserveOriginalName\" (change)=\"item.name = ''\" i18n=\"@@preserveOriginalName\">Preserve original name</mat-checkbox>\r\n\t\t\t\t<br />\r\n\t\t\t\t<mat-hint *ngIf=\"formValue?.preserveOriginalName\" class=\"tc-red-500\" i18n=\"@@warningOldFilesWillBeBverridden\">Warning: old files will be overridden</mat-hint>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region File -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t<mat-label i18n=\"@@file\">File</mat-label>\r\n\t\t\t\t<div vd-file-input formControlName=\"name\" (select)=\"upload($event)\" [required]=\"true\"></div>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\t</div>\r\n\t<div mat-dialog-actions class=\"pad-top\">\r\n\t\t<button type=\"submit\" mat-flat-button [disabled]=\"isSaving\" color=\"primary\" i18n=\"@@save\">Save</button>\r\n\t\t<button type=\"button\" mat-button (click)=\"cancel()\" i18n=\"@@cancel\">Cancel</button>\r\n\t</div>\r\n</form>" }]
789
+ args: [{
790
+ selector: 'document-dialog',
791
+ template: DocumentFormTemplate
792
+ }]
711
793
  }], ctorParameters: function () {
712
- return [{ type: DocumentService }, { type: i2.FileService }, { type: i3$1.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i4.MatDialogRef }, { type: Document, decorators: [{
794
+ return [{ type: DocumentService }, { type: i2.FileService }, { type: i3$1.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i2$1.MatDialogRef }, { type: Document, decorators: [{
713
795
  type: Inject,
714
796
  args: [MAT_DIALOG_DATA]
715
797
  }] }];
@@ -846,7 +928,7 @@ __decorate([
846
928
  filter: 'clientJoins.client.displayName',
847
929
  sortBy: 'clientJoins.Min(client.displayName)',
848
930
  content: (x) => { var _a; return Utils.joinArray((_a = x.clientJoins) === null || _a === void 0 ? void 0 : _a.map(y => y.clientName)); },
849
- display: Grid.Xl,
931
+ display: Grid.Lg,
850
932
  maxWidth: 200,
851
933
  hide: (_, ctx) => { var _a, _b; return !ctx.isAdmin || (!((_a = ctx.settings) === null || _a === void 0 ? void 0 : _a.multitenantable) && !((_b = ctx.settings) === null || _b === void 0 ? void 0 : _b.multiClients)); },
852
934
  }),
@@ -879,7 +961,7 @@ __decorate([
879
961
  filter: 'departmentJoins.department.displayName',
880
962
  sortBy: 'departmentJoins.Min(department.displayName)',
881
963
  content: (x) => { var _a; return Utils.joinArray((_a = x.departmentJoins) === null || _a === void 0 ? void 0 : _a.map(y => y.departmentName)); },
882
- display: Grid.Xl,
964
+ display: Grid.Lg,
883
965
  maxWidth: 200,
884
966
  hide: (_, ctx) => { var _a, _b; return !ctx.isAdmin || (!((_a = ctx.settings) === null || _a === void 0 ? void 0 : _a.multitenantable) && !((_b = ctx.settings) === null || _b === void 0 ? void 0 : _b.multiClients)); },
885
967
  }),
@@ -1049,13 +1131,13 @@ class TemplatePreviewDialogComponent extends BaseComponent {
1049
1131
  this.dialogRef.close();
1050
1132
  }
1051
1133
  }
1052
- TemplatePreviewDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: TemplatePreviewDialogComponent, deps: [{ token: TemplatePreviewService }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3$1.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1053
- TemplatePreviewDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: TemplatePreviewDialogComponent, selector: "app-template-preview", usesInheritance: true, ngImport: i0, template: "<div mat-dialog-title class=\"mat-headline-6\">\r\n <div layout=\"row\" flex>\r\n <span i18n=\"@@templatePreview\">Template preview</span>\r\n <span flex></span>\r\n <div *ngIf=\"data.type == TemplateType.Pdf && pdfSrc\">\r\n <a mat-icon-button (click)=\"download()\">\r\n <mat-icon>download</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomIn()\">\r\n <mat-icon>zoom_in</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomOut()\">\r\n <mat-icon>zoom_out</mat-icon>\r\n </a>\r\n </div>\r\n </div>\r\n</div>\r\n<form #form=\"ngForm\" novalidate>\r\n <!-- #region Entity -->\r\n <div layout=\"row\" flex *ngIf=\"data.endpoint\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label>{{data.entityName}}</mat-label>\r\n <vd-chips [(ngModel)]=\"data.entityId\" [endpoint]=\"data.endpoint\" [params]=\"{sortBy: 'id'}\" text=\"displayName\" name=\"entityId\" #entityId=\"ngModel\" [placeholder]=\"data.entityName\" required flex>\r\n <ng-template vd-chip let-entity=\"chip\">\r\n <span>{{entity[data.displayName]}}</span>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-entity=\"option\">\r\n <span>{{entity[data.displayName]}}</span>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-error *ngIf=\"entityId.errors?.required\"><span>{{data.entityName}}</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <div layout=\"column\" layout-gt-sm=\"row\" class=\"push-bottom\" flex *ngIf=\"isLoading\">\r\n <div flex layout-margin>\r\n <div class=\"push-bottom-sm\" i18n=\"@@pleaseWait\">Please Wait...</div>\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n </div>\r\n\r\n <!-- #region PDF Content -->\r\n <mat-card>\r\n <pdf-viewer [src]=\"pdfSrc\" *ngIf=\"data.type == TemplateType.Pdf && pdfSrc\" [render-text]=\"true\" [zoom]=\"zoom\" [zoom-scale]=\"zoomScale\" [show-borders]=\"true\" [original-size]=\"false\" [autoresize]=\"true\"></pdf-viewer>\r\n </mat-card>\r\n <!-- #region Content -->\r\n\r\n <div *ngIf=\"data.type != TemplateType.Pdf\">\r\n <!-- #region Content -->\r\n <div layout=\"row\" layout-margin flex class=\"content\">\r\n <div *ngIf=\"data.content\" [innerHtml]=\"data.content\"></div>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Email-->\r\n <div layout-gt-sm=\"row\" layout=\"column\" class=\"push-top pad-top\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label i18n=\"@@email\">Email</mat-label>\r\n <input matInput type=\"email\" name=\"email\" [(ngModel)]=\"data.email\" #email=\"ngModel\" required email placeholder=\"Email\" i18n-placeholder=\"@@email\">\r\n <button mat-icon-button matSuffix (click)=\"sendMail()\" [disabled]=\"!email.valid\">\r\n <mat-icon>send</mat-icon>\r\n </button>\r\n <mat-error *ngIf=\"email.errors?.required\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n <mat-error *ngIf=\"!email.errors?.required && email.errors?.email\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isInvalid\"> is invalid</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n </div>\r\n\r\n <div mat-dialog-actions class=\"pad-top\">\r\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"cancel()\" i18n=\"@@close\">Close</button>\r\n </div>\r\n</form>", styles: [".content{overflow:scroll;min-height:200px;max-height:500px;border:1px solid #e5e5e5;border-radius:4px;padding:8px}pdf-viewer{display:block;margin-left:-16px;width:calc(100% + 32px);height:calc(100vh - 170px);background:#dbdbdb}\n"], 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.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { 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$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatIconAnchor, selector: "a[mat-icon-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { 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.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i2.VdChipsComponent, selector: "vd-chips", inputs: ["classType", "chips", "endpoint", "params", "projection", "paginated", "customValue", "context", "key", "searchField", "searchFields", "removable", "debounce", "autocompleteCssClass", "suffixButtons"], outputs: ["initSelect", "selected", "cleared", "launch", "chipFocus"] }, { kind: "directive", type: i2.VdAutocompleteOptionDirective, selector: "[vd-autocomplete-option]ng-template" }, { kind: "directive", type: i2.VdChipDirective, selector: "[vd-chip]ng-template" }, { kind: "directive", type: i11$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i13.PdfViewerComponent, selector: "pdf-viewer", inputs: ["src", "c-maps-url", "page", "render-text", "render-text-mode", "original-size", "show-all", "stick-to-page", "zoom", "zoom-scale", "rotation", "external-link-target", "autoresize", "fit-to-page", "show-borders"], outputs: ["after-load-complete", "page-rendered", "pages-initialized", "text-layer-rendered", "error", "on-progress", "pageChange"] }] });
1134
+ TemplatePreviewDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: TemplatePreviewDialogComponent, deps: [{ token: TemplatePreviewService }, { token: i2$1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3$1.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1135
+ TemplatePreviewDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: TemplatePreviewDialogComponent, selector: "app-template-preview", usesInheritance: true, ngImport: i0, template: "<div mat-dialog-title class=\"mat-headline-6\">\r\n <div layout=\"row\" flex>\r\n <span i18n=\"@@templatePreview\">Template preview</span>\r\n <span flex></span>\r\n <div *ngIf=\"data.type == TemplateType.Pdf && pdfSrc\">\r\n <a mat-icon-button (click)=\"download()\">\r\n <mat-icon>download</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomIn()\">\r\n <mat-icon>zoom_in</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomOut()\">\r\n <mat-icon>zoom_out</mat-icon>\r\n </a>\r\n </div>\r\n </div>\r\n</div>\r\n<form #form=\"ngForm\" novalidate>\r\n <!-- #region Entity -->\r\n <div layout=\"row\" flex *ngIf=\"data.endpoint\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label>{{data.entityName}}</mat-label>\r\n <vd-chips [(ngModel)]=\"data.entityId\" [endpoint]=\"data.endpoint\" [params]=\"{sortBy: 'id'}\" text=\"displayName\" name=\"entityId\" #entityId=\"ngModel\" [placeholder]=\"data.entityName\" required flex>\r\n <ng-template vd-chip let-entity=\"chip\">\r\n <span>{{entity[data.displayName]}}</span>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-entity=\"option\">\r\n <span>{{entity[data.displayName]}}</span>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-error *ngIf=\"entityId.errors?.required\"><span>{{data.entityName}}</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <div layout=\"column\" layout-gt-sm=\"row\" class=\"push-bottom\" flex *ngIf=\"isLoading\">\r\n <div flex layout-margin>\r\n <div class=\"push-bottom-sm\" i18n=\"@@pleaseWait\">Please Wait...</div>\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n </div>\r\n\r\n <!-- #region PDF Content -->\r\n <mat-card>\r\n <pdf-viewer [src]=\"pdfSrc\" *ngIf=\"data.type == TemplateType.Pdf && pdfSrc\" [render-text]=\"true\" [zoom]=\"zoom\" [zoom-scale]=\"zoomScale\" [show-borders]=\"true\" [original-size]=\"false\" [autoresize]=\"true\"></pdf-viewer>\r\n </mat-card>\r\n <!-- #region Content -->\r\n\r\n <div *ngIf=\"data.type != TemplateType.Pdf\">\r\n <!-- #region Content -->\r\n <div layout=\"row\" layout-margin flex class=\"content\">\r\n <div *ngIf=\"data.content\" [innerHtml]=\"data.content\"></div>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Email-->\r\n <div layout-gt-sm=\"row\" layout=\"column\" class=\"push-top pad-top\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label i18n=\"@@email\">Email</mat-label>\r\n <input matInput type=\"email\" name=\"email\" [(ngModel)]=\"data.email\" #email=\"ngModel\" required email placeholder=\"Email\" i18n-placeholder=\"@@email\">\r\n <button mat-icon-button matSuffix (click)=\"sendMail()\" [disabled]=\"!email.valid\">\r\n <mat-icon>send</mat-icon>\r\n </button>\r\n <mat-error *ngIf=\"email.errors?.required\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n <mat-error *ngIf=\"!email.errors?.required && email.errors?.email\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isInvalid\"> is invalid</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n </div>\r\n\r\n <div mat-dialog-actions class=\"pad-top\">\r\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"cancel()\" i18n=\"@@close\">Close</button>\r\n </div>\r\n</form>", styles: [".content{overflow:scroll;min-height:200px;max-height:500px;border:1px solid #e5e5e5;border-radius:4px;padding:8px}pdf-viewer{display:block;margin-left:-16px;width:calc(100% + 32px);height:calc(100vh - 170px);background:#dbdbdb}\n"], 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.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { 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$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatIconAnchor, selector: "a[mat-icon-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { 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.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i2.VdChipsComponent, selector: "vd-chips", inputs: ["classType", "chips", "endpoint", "params", "projection", "paginated", "customValue", "context", "key", "searchField", "searchFields", "removable", "debounce", "autocompleteCssClass", "suffixButtons"], outputs: ["initSelect", "selected", "cleared", "launch", "chipFocus"] }, { kind: "directive", type: i2.VdAutocompleteOptionDirective, selector: "[vd-autocomplete-option]ng-template" }, { kind: "directive", type: i2.VdChipDirective, selector: "[vd-chip]ng-template" }, { kind: "directive", type: i2$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i11$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i13.PdfViewerComponent, selector: "pdf-viewer", inputs: ["src", "c-maps-url", "page", "render-text", "render-text-mode", "original-size", "show-all", "stick-to-page", "zoom", "zoom-scale", "rotation", "external-link-target", "autoresize", "fit-to-page", "show-borders"], outputs: ["after-load-complete", "page-rendered", "pages-initialized", "text-layer-rendered", "error", "on-progress", "pageChange"] }] });
1054
1136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: TemplatePreviewDialogComponent, decorators: [{
1055
1137
  type: Component,
1056
1138
  args: [{ selector: 'app-template-preview', template: "<div mat-dialog-title class=\"mat-headline-6\">\r\n <div layout=\"row\" flex>\r\n <span i18n=\"@@templatePreview\">Template preview</span>\r\n <span flex></span>\r\n <div *ngIf=\"data.type == TemplateType.Pdf && pdfSrc\">\r\n <a mat-icon-button (click)=\"download()\">\r\n <mat-icon>download</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomIn()\">\r\n <mat-icon>zoom_in</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomOut()\">\r\n <mat-icon>zoom_out</mat-icon>\r\n </a>\r\n </div>\r\n </div>\r\n</div>\r\n<form #form=\"ngForm\" novalidate>\r\n <!-- #region Entity -->\r\n <div layout=\"row\" flex *ngIf=\"data.endpoint\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label>{{data.entityName}}</mat-label>\r\n <vd-chips [(ngModel)]=\"data.entityId\" [endpoint]=\"data.endpoint\" [params]=\"{sortBy: 'id'}\" text=\"displayName\" name=\"entityId\" #entityId=\"ngModel\" [placeholder]=\"data.entityName\" required flex>\r\n <ng-template vd-chip let-entity=\"chip\">\r\n <span>{{entity[data.displayName]}}</span>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-entity=\"option\">\r\n <span>{{entity[data.displayName]}}</span>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-error *ngIf=\"entityId.errors?.required\"><span>{{data.entityName}}</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <div layout=\"column\" layout-gt-sm=\"row\" class=\"push-bottom\" flex *ngIf=\"isLoading\">\r\n <div flex layout-margin>\r\n <div class=\"push-bottom-sm\" i18n=\"@@pleaseWait\">Please Wait...</div>\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n </div>\r\n\r\n <!-- #region PDF Content -->\r\n <mat-card>\r\n <pdf-viewer [src]=\"pdfSrc\" *ngIf=\"data.type == TemplateType.Pdf && pdfSrc\" [render-text]=\"true\" [zoom]=\"zoom\" [zoom-scale]=\"zoomScale\" [show-borders]=\"true\" [original-size]=\"false\" [autoresize]=\"true\"></pdf-viewer>\r\n </mat-card>\r\n <!-- #region Content -->\r\n\r\n <div *ngIf=\"data.type != TemplateType.Pdf\">\r\n <!-- #region Content -->\r\n <div layout=\"row\" layout-margin flex class=\"content\">\r\n <div *ngIf=\"data.content\" [innerHtml]=\"data.content\"></div>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Email-->\r\n <div layout-gt-sm=\"row\" layout=\"column\" class=\"push-top pad-top\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label i18n=\"@@email\">Email</mat-label>\r\n <input matInput type=\"email\" name=\"email\" [(ngModel)]=\"data.email\" #email=\"ngModel\" required email placeholder=\"Email\" i18n-placeholder=\"@@email\">\r\n <button mat-icon-button matSuffix (click)=\"sendMail()\" [disabled]=\"!email.valid\">\r\n <mat-icon>send</mat-icon>\r\n </button>\r\n <mat-error *ngIf=\"email.errors?.required\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n <mat-error *ngIf=\"!email.errors?.required && email.errors?.email\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isInvalid\"> is invalid</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n </div>\r\n\r\n <div mat-dialog-actions class=\"pad-top\">\r\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"cancel()\" i18n=\"@@close\">Close</button>\r\n </div>\r\n</form>", styles: [".content{overflow:scroll;min-height:200px;max-height:500px;border:1px solid #e5e5e5;border-radius:4px;padding:8px}pdf-viewer{display:block;margin-left:-16px;width:calc(100% + 32px);height:calc(100vh - 170px);background:#dbdbdb}\n"] }]
1057
1139
  }], ctorParameters: function () {
1058
- return [{ type: TemplatePreviewService }, { type: i4.MatDialogRef }, { type: TemplatePreview, decorators: [{
1140
+ return [{ type: TemplatePreviewService }, { type: i2$1.MatDialogRef }, { type: TemplatePreview, decorators: [{
1059
1141
  type: Inject,
1060
1142
  args: [MAT_DIALOG_DATA]
1061
1143
  }] }, { type: i3$1.ActivatedRoute }, { type: i0.ChangeDetectorRef }];
@@ -1207,12 +1289,12 @@ class TemplateFormComponent extends GenericReactiveFormComponent {
1207
1289
  }).afterClosed().subscribe();
1208
1290
  }
1209
1291
  }
1210
- TemplateFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: TemplateFormComponent, deps: [{ token: TemplateService }, { token: i2.FileService }, { token: i4.MatDialog }, { token: i3$1.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1292
+ TemplateFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: TemplateFormComponent, deps: [{ token: TemplateService }, { token: i2.FileService }, { token: i2$1.MatDialog }, { token: i3$1.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1211
1293
  TemplateFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: TemplateFormComponent, selector: "app-template-form", usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [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\" [fieldSets]=\"['details']\" [context]=\"this\"></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 (click)=\"apply()\" *ngIf=\"isEditMode\" [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 Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\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=\"@@content\">Content</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<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\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 (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</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 Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\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=\"@@testData\">Test Data</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<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\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 (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</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 [item]=\"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>", styles: ["codemirror{width:100%}.CodeMirror{height:500px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6$1.CodemirrorComponent, selector: "ngx-codemirror", inputs: ["className", "name", "autoFocus", "options", "preserveScrollPosition"], outputs: ["cursorActivity", "focusChange", "scroll", "drop"] }, { 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: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { 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] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { 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.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { 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: ["item"] }], encapsulation: i0.ViewEncapsulation.None });
1212
1294
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: TemplateFormComponent, decorators: [{
1213
1295
  type: Component,
1214
1296
  args: [{ selector: 'app-template-form', encapsulation: ViewEncapsulation.None, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [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\" [fieldSets]=\"['details']\" [context]=\"this\"></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 (click)=\"apply()\" *ngIf=\"isEditMode\" [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 Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\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=\"@@content\">Content</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<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\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 (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</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 Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\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=\"@@testData\">Test Data</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<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\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 (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</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 [item]=\"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>", styles: ["codemirror{width:100%}.CodeMirror{height:500px}\n"] }]
1215
- }], ctorParameters: function () { return [{ type: TemplateService }, { type: i2.FileService }, { type: i4.MatDialog }, { type: i3$1.ActivatedRoute }, { type: i0.ChangeDetectorRef }]; } });
1297
+ }], ctorParameters: function () { return [{ type: TemplateService }, { type: i2.FileService }, { type: i2$1.MatDialog }, { type: i3$1.ActivatedRoute }, { type: i0.ChangeDetectorRef }]; } });
1216
1298
 
1217
1299
  /**
1218
1300
  * @class
@@ -1283,7 +1365,7 @@ __decorate([
1283
1365
  filter: 'clientJoins.client.displayName',
1284
1366
  sortBy: 'clientJoins.Min(client.displayName)',
1285
1367
  content: (x) => { var _a; return Utils.joinArray((_a = x.clientJoins) === null || _a === void 0 ? void 0 : _a.map(y => y.clientName)); },
1286
- display: Grid.Xl,
1368
+ display: Grid.Lg,
1287
1369
  maxWidth: 200,
1288
1370
  hide: (_, ctx) => { var _a, _b; return !ctx.isAdmin || (!((_a = ctx.settings) === null || _a === void 0 ? void 0 : _a.multitenantable) && !((_b = ctx.settings) === null || _b === void 0 ? void 0 : _b.multiClients)); },
1289
1371
  }),
@@ -1315,7 +1397,7 @@ __decorate([
1315
1397
  filter: 'departmentJoins.department.displayName',
1316
1398
  sortBy: 'departmentJoins.Min(department.displayName)',
1317
1399
  content: (x) => { var _a; return Utils.joinArray((_a = x.departmentJoins) === null || _a === void 0 ? void 0 : _a.map(y => y.departmentName)); },
1318
- display: Grid.Xl,
1400
+ display: Grid.Lg,
1319
1401
  maxWidth: 200,
1320
1402
  hide: (_, ctx) => { var _a, _b; return !ctx.isAdmin || (!((_a = ctx.settings) === null || _a === void 0 ? void 0 : _a.multitenantable) && !((_b = ctx.settings) === null || _b === void 0 ? void 0 : _b.multiClients)); },
1321
1403
  }),
@@ -1440,7 +1522,7 @@ __decorate([
1440
1522
  filter: 'clientJoins.client.displayName',
1441
1523
  sortBy: 'clientJoins.Min(client.displayName)',
1442
1524
  content: (x) => { var _a; return Utils.joinArray((_a = x.clientJoins) === null || _a === void 0 ? void 0 : _a.map(y => y.clientName)); },
1443
- display: Grid.Xl,
1525
+ display: Grid.Lg,
1444
1526
  maxWidth: 200,
1445
1527
  hide: (_, ctx) => { var _a, _b; return !ctx.isAdmin || (!((_a = ctx.settings) === null || _a === void 0 ? void 0 : _a.multitenantable) && !((_b = ctx.settings) === null || _b === void 0 ? void 0 : _b.multiClients)); },
1446
1528
  }),
@@ -1472,7 +1554,7 @@ __decorate([
1472
1554
  filter: 'departmentJoins.department.displayName',
1473
1555
  sortBy: 'departmentJoins.Min(department.displayName)',
1474
1556
  content: (x) => { var _a; return Utils.joinArray((_a = x.departmentJoins) === null || _a === void 0 ? void 0 : _a.map(y => y.departmentName)); },
1475
- display: Grid.Xl,
1557
+ display: Grid.Lg,
1476
1558
  maxWidth: 200,
1477
1559
  hide: (_, ctx) => { var _a, _b; return !ctx.isAdmin || (!((_a = ctx.settings) === null || _a === void 0 ? void 0 : _a.multitenantable) && !((_b = ctx.settings) === null || _b === void 0 ? void 0 : _b.multiClients)); },
1478
1560
  }),
@@ -1583,6 +1665,47 @@ Slider = __decorate([
1583
1665
  Table()
1584
1666
  ], Slider);
1585
1667
 
1668
+ /**
1669
+ * Includes resolve service
1670
+ */
1671
+ class DocumentListProjectionResolve {
1672
+ /**
1673
+ * Constructor
1674
+ * @param oidcSecurityService
1675
+ */
1676
+ constructor(oidcSecurityService) {
1677
+ this.oidcSecurityService = oidcSecurityService;
1678
+ }
1679
+ /**
1680
+ * Resolves includes
1681
+ */
1682
+ resolve() {
1683
+ var projection = [];
1684
+ return this.oidcSecurityService.checkAuth().pipe(map$1(x => {
1685
+ AuthHelper.user.isAuthenticated = x.isAuthenticated;
1686
+ if (x.userData) {
1687
+ AuthHelper.user = Object.assign(x.userData, {
1688
+ id: x.userData.sub,
1689
+ isAuthenticated: x.isAuthenticated
1690
+ });
1691
+ let settings = ServiceLocator.getService(CmsSettings);
1692
+ if (AuthHelper.hasRole(GlobalRoles.Administrator) && ((settings === null || settings === void 0 ? void 0 : settings.multitenantable) || (settings === null || settings === void 0 ? void 0 : settings.multiClients))) {
1693
+ projection.push('client(displayName:clientName)');
1694
+ }
1695
+ if ((AuthHelper.hasRole(GlobalRoles.Administrator) || AuthHelper.hasRole(GlobalRoles.ClientAdministrator)) && ((settings === null || settings === void 0 ? void 0 : settings.multitenantable) || (settings === null || settings === void 0 ? void 0 : settings.multiDepartments))) {
1696
+ projection.push('department(displayName:departmentName)');
1697
+ }
1698
+ }
1699
+ return projection;
1700
+ }));
1701
+ }
1702
+ }
1703
+ DocumentListProjectionResolve.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentListProjectionResolve, deps: [{ token: i1.OidcSecurityService }], target: i0.ɵɵFactoryTarget.Injectable });
1704
+ DocumentListProjectionResolve.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentListProjectionResolve });
1705
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DocumentListProjectionResolve, decorators: [{
1706
+ type: Injectable
1707
+ }], ctorParameters: function () { return [{ type: i1.OidcSecurityService }]; } });
1708
+
1586
1709
  /**
1587
1710
  * Excluded columns resolve service
1588
1711
  */
@@ -1743,6 +1866,10 @@ const ListResolve = {
1743
1866
  projection: ListProjectionResolve,
1744
1867
  excludedColumns: ExcludedColumnsResolve
1745
1868
  };
1869
+ const DocsListResolve = {
1870
+ settings: SettingsResolve,
1871
+ projection: DocumentListProjectionResolve,
1872
+ };
1746
1873
  const FormResolve = {
1747
1874
  settings: SettingsResolve,
1748
1875
  updateIncludes: FormIncludesResolve,
@@ -1769,7 +1896,7 @@ const routes = [
1769
1896
  { path: 'sliders', component: VdDynamicListComponent, data: { classType: Slider }, resolve: ListResolve },
1770
1897
  { path: 'sliders/edit/:id', component: VdDynamicFormComponent, data: { classType: Slider, subtitle: $localize `:@@slider:Slider` }, resolve: FormResolve },
1771
1898
  { path: 'sliders/add', component: VdDynamicFormComponent, data: { classType: Slider, query: { clientId: AuthHelper.user.clientId }, subtitle: $localize `:@@slider:Slider` }, resolve: FormResolve },
1772
- { path: 'documents', component: VdDynamicListComponent, data: { classType: Document, addDialogType: DocumentDialogComponent, query: { type: DocumentType.Document } }, resolve: ListResolve },
1899
+ { path: 'documents', component: VdDynamicListComponent, data: { classType: Document, addDialogType: DocumentDialogComponent, query: { type: DocumentType.Document } }, resolve: DocsListResolve },
1773
1900
  ];
1774
1901
  class VdCmsRoutingModule {
1775
1902
  }
@@ -1778,6 +1905,7 @@ VdCmsRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
1778
1905
  VdCmsRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: VdCmsRoutingModule, providers: [
1779
1906
  SettingsResolve,
1780
1907
  ListProjectionResolve,
1908
+ DocumentListProjectionResolve,
1781
1909
  FormIncludesResolve,
1782
1910
  ExcludedColumnsResolve,
1783
1911
  ExcludedFieldsResolve,
@@ -1791,6 +1919,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
1791
1919
  providers: [
1792
1920
  SettingsResolve,
1793
1921
  ListProjectionResolve,
1922
+ DocumentListProjectionResolve,
1794
1923
  FormIncludesResolve,
1795
1924
  ExcludedColumnsResolve,
1796
1925
  ExcludedFieldsResolve,
@@ -1809,6 +1938,7 @@ MaterialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
1809
1938
  MatChipsModule,
1810
1939
  MatAutocompleteModule,
1811
1940
  MatCheckboxModule,
1941
+ MatDialogModule,
1812
1942
  MatInputModule,
1813
1943
  MatSelectModule,
1814
1944
  MatProgressBarModule] });
@@ -1819,6 +1949,7 @@ MaterialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
1819
1949
  MatChipsModule,
1820
1950
  MatAutocompleteModule,
1821
1951
  MatCheckboxModule,
1952
+ MatDialogModule,
1822
1953
  MatInputModule,
1823
1954
  MatSelectModule,
1824
1955
  MatProgressBarModule] });
@@ -1833,6 +1964,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
1833
1964
  MatChipsModule,
1834
1965
  MatAutocompleteModule,
1835
1966
  MatCheckboxModule,
1967
+ MatDialogModule,
1836
1968
  MatInputModule,
1837
1969
  MatSelectModule,
1838
1970
  MatProgressBarModule
@@ -1847,13 +1979,15 @@ VdModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1
1847
1979
  VdMediaModule,
1848
1980
  VdFormsModule,
1849
1981
  VdSelectModule,
1850
- VdChipsModule] });
1982
+ VdChipsModule,
1983
+ VdFileModule] });
1851
1984
  VdModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: VdModule, imports: [VdCommonModule,
1852
1985
  VdLayoutModule,
1853
1986
  VdMediaModule,
1854
1987
  VdFormsModule,
1855
1988
  VdSelectModule,
1856
- VdChipsModule] });
1989
+ VdChipsModule,
1990
+ VdFileModule] });
1857
1991
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: VdModule, decorators: [{
1858
1992
  type: NgModule,
1859
1993
  args: [{
@@ -1863,7 +1997,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
1863
1997
  VdMediaModule,
1864
1998
  VdFormsModule,
1865
1999
  VdSelectModule,
1866
- VdChipsModule
2000
+ VdChipsModule,
2001
+ VdFileModule
1867
2002
  ]
1868
2003
  }]
1869
2004
  }] });
@@ -1992,6 +2127,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
1992
2127
  * Generated bundle index. Do not edit.
1993
2128
  */
1994
2129
 
1995
- export { CmsSettings, Content, ContentClient, ContentDepartment, ContentFormComponent, ContentService, ContentType, ContentVariable, ContentVariableClient, ContentVariableDepartment, ContentVariableService, Document, DocumentDialogComponent, DocumentGenericService, DocumentService, Faq, FaqClient, FaqDepartment, FaqScope, FaqService, FormIncludesResolve, ListProjectionResolve, MaterialModule, Slider, SliderService, Template, TemplateClient, TemplateDepartment, TemplateFormComponent, TemplatePreview, TemplatePreviewDialogComponent, TemplatePreviewService, TemplateService, TemplateType, VdCmsModule, VdModule, WrapTag };
1996
- //# sourceMappingURL=messaia-cdk-cms.mjs.map
2130
+ export { CmsSettings, Content, ContentClient, ContentDepartment, ContentFormComponent, ContentService, ContentType, ContentVariable, ContentVariableClient, ContentVariableDepartment, ContentVariableService, Document, DocumentDialogComponent, DocumentFormBaseComponent, DocumentFormTemplate, DocumentGenericService, DocumentService, Faq, FaqClient, FaqDepartment, FaqScope, FaqService, FormIncludesResolve, ListProjectionResolve, MaterialModule, Slider, SliderService, Template, TemplateClient, TemplateDepartment, TemplateFormComponent, TemplatePreview, TemplatePreviewDialogComponent, TemplatePreviewService, TemplateService, TemplateType, VdCmsModule, VdModule, WrapTag };
1997
2131
  //# sourceMappingURL=messaia-cdk-cms.mjs.map