cat-documents-ng 0.0.51 → 0.0.53
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/README.md +322 -322
- package/fesm2022/cat-documents-ng.mjs +109 -39
- package/fesm2022/cat-documents-ng.mjs.map +1 -1
- package/lib/document/components/document-container/document-container.component.d.ts +1 -1
- package/lib/document/components/document-list/document-list.component.d.ts +1 -1
- package/lib/document/components/document-viewer/document-viewer.component.d.ts +11 -9
- package/lib/document/directives/document-type.directive.d.ts +20 -0
- package/lib/document/document.module.d.ts +19 -18
- package/lib/document/models/document.model.d.ts +5 -0
- package/lib/document/services/document-type.service.d.ts +19 -0
- package/package.json +1 -1
- package/src/assets/config/api.config.json +21 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Component, Input, EventEmitter, Output, ViewEncapsulation, ViewChild, APP_INITIALIZER, NgModule } from '@angular/core';
|
|
3
|
-
import * as
|
|
2
|
+
import { Injectable, Component, Input, EventEmitter, Output, ViewEncapsulation, ViewChild, Directive, APP_INITIALIZER, NgModule } from '@angular/core';
|
|
3
|
+
import * as i5 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
|
-
import { firstValueFrom, tap, catchError, throwError, Subscription } from 'rxjs';
|
|
5
|
+
import { firstValueFrom, tap, catchError, throwError, BehaviorSubject, Subscription } from 'rxjs';
|
|
6
6
|
import { __decorate } from 'tslib';
|
|
7
7
|
import { EntityStore, StoreConfig, QueryEntity } from '@datorama/akita';
|
|
8
8
|
import * as i2 from '@angular/common/http';
|
|
@@ -15,8 +15,8 @@ import * as i7 from 'primeng/button';
|
|
|
15
15
|
import { ButtonModule } from 'primeng/button';
|
|
16
16
|
import * as i8$2 from 'primeng/sidebar';
|
|
17
17
|
import { SidebarModule } from 'primeng/sidebar';
|
|
18
|
-
import * as i9 from 'primeng/messages';
|
|
19
|
-
import * as
|
|
18
|
+
import * as i9$1 from 'primeng/messages';
|
|
19
|
+
import * as i8$1 from '@angular/forms';
|
|
20
20
|
import { FormsModule } from '@angular/forms';
|
|
21
21
|
import * as i11 from 'primeng/dialog';
|
|
22
22
|
import { DialogModule } from 'primeng/dialog';
|
|
@@ -26,11 +26,11 @@ import * as i7$1 from 'primeng/fileupload';
|
|
|
26
26
|
import { FileUploadModule } from 'primeng/fileupload';
|
|
27
27
|
import * as i8 from 'primeng/progressbar';
|
|
28
28
|
import { ProgressBarModule } from 'primeng/progressbar';
|
|
29
|
-
import * as
|
|
29
|
+
import * as i6 from 'primeng/timeline';
|
|
30
30
|
import { TimelineModule } from 'primeng/timeline';
|
|
31
|
-
import * as
|
|
31
|
+
import * as i7$2 from 'primeng/inputtextarea';
|
|
32
32
|
import { InputTextareaModule } from 'primeng/inputtextarea';
|
|
33
|
-
import * as
|
|
33
|
+
import * as i9 from 'ng2-pdf-viewer';
|
|
34
34
|
import { PdfViewerModule } from 'ng2-pdf-viewer';
|
|
35
35
|
import { BadgeModule } from 'primeng/badge';
|
|
36
36
|
import { ListboxModule } from 'primeng/listbox';
|
|
@@ -793,11 +793,11 @@ class FolderBlockComponent {
|
|
|
793
793
|
return folderBlockId;
|
|
794
794
|
}
|
|
795
795
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: FolderBlockComponent, deps: [{ token: DocumentStore }], target: i0.ɵɵFactoryTarget.Component });
|
|
796
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: FolderBlockComponent, isStandalone: false, selector: "lib-folder-block", inputs: { folderList: "folderList" }, ngImport: i0, template: "<div class=\"card folder-info\">\
|
|
796
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: FolderBlockComponent, isStandalone: false, selector: "lib-folder-block", inputs: { folderList: "folderList" }, ngImport: i0, template: "<div class=\"card folder-info\">\n <div class=\"text-900 text-xl font-semibold mb-3\">Folders</div>\n <div class=\"grid\">\n <div *ngFor=\"let folder of folderList\" class=\"col-12 md:col-6 xl:col-4\">\n <div\n class=\"p-3 border-1 h-full surface-border flex flex-column justify-content-between hover:surface-100 cursor-pointer border-round\"\n (click)=\"handleClickForFilter(folder._id)\"\n >\n <div class=\"icon\">\n <img src=\"../../../../assets/images/FolderImg.png\" alt=\"\" />\n </div>\n <div class=\"flex flex-column\">\n <span class=\"text-600 mt-2\"> {{ folder.documentCount }} Files </span>\n <span class=\"text-900 text-lg mt-2 mb-2 font-semibold font-medium\">\n {{ folder.folderName }}\n </span>\n </div>\n <hr />\n <div class=\"flex justify-content-between\">\n <div class=\"flex flex-column\">\n <span>Missing</span>\n <span\n [ngClass]=\"{\n 'text-pink-500': missingFileCount > 0,\n 'text-green-500': missingFileCount === 0\n }\"\n >\n {{ missingFileCount }}\n </span>\n </div>\n <div class=\"flex flex-column\">\n <span>Pending</span>\n <span\n [ngClass]=\"{\n 'text-yellow-500': pendingFileCount > 0,\n 'text-green-500': pendingFileCount === 0\n }\"\n >\n {{ pendingFileCount }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
797
797
|
}
|
|
798
798
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: FolderBlockComponent, decorators: [{
|
|
799
799
|
type: Component,
|
|
800
|
-
args: [{ selector: 'lib-folder-block', standalone: false, template: "<div class=\"card folder-info\">\
|
|
800
|
+
args: [{ selector: 'lib-folder-block', standalone: false, template: "<div class=\"card folder-info\">\n <div class=\"text-900 text-xl font-semibold mb-3\">Folders</div>\n <div class=\"grid\">\n <div *ngFor=\"let folder of folderList\" class=\"col-12 md:col-6 xl:col-4\">\n <div\n class=\"p-3 border-1 h-full surface-border flex flex-column justify-content-between hover:surface-100 cursor-pointer border-round\"\n (click)=\"handleClickForFilter(folder._id)\"\n >\n <div class=\"icon\">\n <img src=\"../../../../assets/images/FolderImg.png\" alt=\"\" />\n </div>\n <div class=\"flex flex-column\">\n <span class=\"text-600 mt-2\"> {{ folder.documentCount }} Files </span>\n <span class=\"text-900 text-lg mt-2 mb-2 font-semibold font-medium\">\n {{ folder.folderName }}\n </span>\n </div>\n <hr />\n <div class=\"flex justify-content-between\">\n <div class=\"flex flex-column\">\n <span>Missing</span>\n <span\n [ngClass]=\"{\n 'text-pink-500': missingFileCount > 0,\n 'text-green-500': missingFileCount === 0\n }\"\n >\n {{ missingFileCount }}\n </span>\n </div>\n <div class=\"flex flex-column\">\n <span>Pending</span>\n <span\n [ngClass]=\"{\n 'text-yellow-500': pendingFileCount > 0,\n 'text-green-500': pendingFileCount === 0\n }\"\n >\n {{ pendingFileCount }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
801
801
|
}], ctorParameters: () => [{ type: DocumentStore }], propDecorators: { folderList: [{
|
|
802
802
|
type: Input
|
|
803
803
|
}] } });
|
|
@@ -826,11 +826,11 @@ class FolderContainerComponent {
|
|
|
826
826
|
*/
|
|
827
827
|
contextId = SHARED.EMPTY;
|
|
828
828
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: FolderContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
829
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: FolderContainerComponent, isStandalone: false, selector: "lib-folder-container", inputs: { documentList: "documentList", folderList: "folderList", contextId: "contextId" }, ngImport: i0, template: "\
|
|
829
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: FolderContainerComponent, isStandalone: false, selector: "lib-folder-container", inputs: { documentList: "documentList", folderList: "folderList", contextId: "contextId" }, ngImport: i0, template: "\n<lib-folder-block [folderList]=\"folderList\"></lib-folder-block>", styles: [""], dependencies: [{ kind: "component", type: FolderBlockComponent, selector: "lib-folder-block", inputs: ["folderList"] }] });
|
|
830
830
|
}
|
|
831
831
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: FolderContainerComponent, decorators: [{
|
|
832
832
|
type: Component,
|
|
833
|
-
args: [{ selector: 'lib-folder-container', standalone: false, template: "\
|
|
833
|
+
args: [{ selector: 'lib-folder-container', standalone: false, template: "\n<lib-folder-block [folderList]=\"folderList\"></lib-folder-block>" }]
|
|
834
834
|
}], propDecorators: { documentList: [{
|
|
835
835
|
type: Input
|
|
836
836
|
}], folderList: [{
|
|
@@ -991,11 +991,11 @@ class DocumentListItemComponent {
|
|
|
991
991
|
this.documentClick.emit(document);
|
|
992
992
|
}
|
|
993
993
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
994
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: DocumentListItemComponent, isStandalone: false, selector: "lib-document-list-item", inputs: { document: "document" }, outputs: { documentClick: "documentClick" }, ngImport: i0, template: "<div class=\"grid\">\
|
|
994
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: DocumentListItemComponent, isStandalone: false, selector: "lib-document-list-item", inputs: { document: "document" }, outputs: { documentClick: "documentClick" }, ngImport: i0, template: "<div class=\"grid\">\n <div\n class=\"col-12 flex align-items-center justify-content-between md:col-6 xl:col-12\"\n >\n <div\n class=\"col-5 flex cursor-pointer align-items-center pl-0\"\n (click)=\"handleOpenDocument(document)\"\n >\n <img src=\"../../../../assets/images/Frame.png\" alt=\"\" />\n <span class=\"ml-4\">{{ document.fileName }}</span>\n </div>\n <div class=\"document-type\">\n {{document.documentTypeName}}\n </div>\n <div class=\"col-4 flex align-items-center justify-content-center\">\n <span\n [class]=\"'product-badge status-' + document.status?.toLowerCase()\"\n class=\"flex align-items-center justify-content-center pl-2 pr-2 pt-1 pb-1 \"\n >\n <ng-container *ngIf=\"document.status?.toLowerCase() === 'pending'\">\n <i class=\"pi pi-clock pr-1\" style=\"font-size: 12px;\"></i>\n Pending\n </ng-container>\n <ng-container *ngIf=\"document.status?.toLowerCase() === 'verified'\">\n <i class=\"pi pi-check-circle pr-1\" style=\"font-size: 12px;\"></i>\n Verified\n </ng-container>\n <ng-container *ngIf=\"document.status?.toLowerCase() === 'alert'\">\n <i class=\"pi pi-bell pr-1\" style=\"font-size: 12px;\"></i>\n Alert\n </ng-container>\n </span>\n </div>\n </div>\n </div>\n ", styles: [".product-badge.status-pending{background:#e9b127;color:#fff;border-radius:4px}.product-badge.status-verified{background:#4caf50;color:#fff;border-radius:4px}.product-badge.status-alert{background:#f57c00;color:#fff;border-radius:4px}.product-badge{text-transform:none;font-weight:500;font-size:12px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
995
995
|
}
|
|
996
996
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentListItemComponent, decorators: [{
|
|
997
997
|
type: Component,
|
|
998
|
-
args: [{ selector: 'lib-document-list-item', standalone: false, template: "<div class=\"grid\">\
|
|
998
|
+
args: [{ selector: 'lib-document-list-item', standalone: false, template: "<div class=\"grid\">\n <div\n class=\"col-12 flex align-items-center justify-content-between md:col-6 xl:col-12\"\n >\n <div\n class=\"col-5 flex cursor-pointer align-items-center pl-0\"\n (click)=\"handleOpenDocument(document)\"\n >\n <img src=\"../../../../assets/images/Frame.png\" alt=\"\" />\n <span class=\"ml-4\">{{ document.fileName }}</span>\n </div>\n <div class=\"document-type\">\n {{document.documentTypeName}}\n </div>\n <div class=\"col-4 flex align-items-center justify-content-center\">\n <span\n [class]=\"'product-badge status-' + document.status?.toLowerCase()\"\n class=\"flex align-items-center justify-content-center pl-2 pr-2 pt-1 pb-1 \"\n >\n <ng-container *ngIf=\"document.status?.toLowerCase() === 'pending'\">\n <i class=\"pi pi-clock pr-1\" style=\"font-size: 12px;\"></i>\n Pending\n </ng-container>\n <ng-container *ngIf=\"document.status?.toLowerCase() === 'verified'\">\n <i class=\"pi pi-check-circle pr-1\" style=\"font-size: 12px;\"></i>\n Verified\n </ng-container>\n <ng-container *ngIf=\"document.status?.toLowerCase() === 'alert'\">\n <i class=\"pi pi-bell pr-1\" style=\"font-size: 12px;\"></i>\n Alert\n </ng-container>\n </span>\n </div>\n </div>\n </div>\n ", styles: [".product-badge.status-pending{background:#e9b127;color:#fff;border-radius:4px}.product-badge.status-verified{background:#4caf50;color:#fff;border-radius:4px}.product-badge.status-alert{background:#f57c00;color:#fff;border-radius:4px}.product-badge{text-transform:none;font-weight:500;font-size:12px}\n"] }]
|
|
999
999
|
}], propDecorators: { documentClick: [{
|
|
1000
1000
|
type: Output
|
|
1001
1001
|
}], document: [{
|
|
@@ -1185,11 +1185,11 @@ class DocumentUploadComponent {
|
|
|
1185
1185
|
this.fileUploader.choose();
|
|
1186
1186
|
}
|
|
1187
1187
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentUploadComponent, deps: [{ token: DocumentUploadService }, { token: DocumentService }, { token: i3.PrimeNGConfig }, { token: FileFormatService }, { token: i3.MessageService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1188
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: DocumentUploadComponent, isStandalone: false, selector: "lib-document-upload", inputs: { contextId: "contextId" }, viewQueries: [{ propertyName: "fileUploader", first: true, predicate: ["fileUploader"], descendants: true }], ngImport: i0, template: "<div class=\"grid\">\
|
|
1188
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: DocumentUploadComponent, isStandalone: false, selector: "lib-document-upload", inputs: { contextId: "contextId" }, viewQueries: [{ propertyName: "fileUploader", first: true, predicate: ["fileUploader"], descendants: true }], ngImport: i0, template: "<div class=\"grid\">\n <div class=\"col-12 md:col-12\">\n <p-fileUpload #fileUploader [multiple]=\"true\" auto=\"true\" accept=\"image/png,application/pdf\" maxFileSize=\"26214400\"\n (onSelect)=\"onSelectedFiles($event)\">\n <ng-template pTemplate=\"header\" let-chooseCallback=\"chooseCallback\" let-clearCallback=\"clearCallback\">\n <div class=\"docHeader p-2 flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\n <div class=\"flex gap-2\">\n <p-button (onClick)=\"choose($event, chooseCallback)\" icon=\"pi pi-images\" [rounded]=\"true\"\n [outlined]=\"true\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-removeFileCallback=\"removeFileCallback\"\n let-removeUploadedFileCallback=\"removeUploadedFileCallback\">\n <div class=\"col-12 md:col-12 p-0\">\n <div class=\"col-12 md:col-12 p-0\" *ngIf=\"uploadedFiles.length > 0\">\n <div *ngFor=\"let uploadedFile of uploadedFiles; let i = index\"\n class=\"m-0 flex flex-column align-items-center gap-1 mt-3\">\n <div class=\"col-12 md:col-12 p-0 flex documentInfo\">\n <div class=\"documentImage\">\n <img src=\"../../../../assets/images/document.png\" [alt]=\"uploadedFile.file.name\" width=\"45\" height=\"50\"\n class=\"object-contain\" />\n </div>\n <div class=\"flex w-full flex-column mt-2 ml-2\">\n <div class=\"flex justify-content-between\">\n <div style=\" font-weight: bold;font-size: 14px\">\n {{ uploadedFile.file.name }}\n </div>\n <i class=\"pi pi-times cursor-pointer\" (click)=\"handleDocumentRemove(uploadedFile.file,i)\"></i>\n </div>\n <div class=\"flex justify-content-between mt-1\">\n <div style=\"color: #676B89; font-size: 12px; color: green;\" class=\"pi pi-verified \"> {{ uploadedFile.formattedSize }}</div>\n <div class=\"white-space-nowrap\" style=\"color: #0F8BFD; font-family: 14px;\"> {{ uploadedFile.progress }} %</div>\n </div>\n </div>\n </div>\n <div class=\"col-12 md:col-12 p-0\">\n <p-progressBar [value]=\"totalSizePercent\" [showValue]=\"false\" styleClass=\"h-1/2rem md:ml-auto relative\"\n [ngClass]=\"{ 'exceeded-progress-bar': totalSizePercent > 100 }\">\n </p-progressBar>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"empty\" let-chooseCallback=\"chooseCallback\">\n <div *ngIf=\"!uploadedFiles.length\" class=\"flex align-items-center justify-content-center flex-column\"\n (click)=\"triggerFileUpload()\">\n <i class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400\"></i>\n <p class=\"mt-4 mb-0\">Drag and drop files here to upload.</p>\n </div>\n </ng-template>\n <ng-template pTemplate=\"file\"> </ng-template>\n </p-fileUpload>\n </div>\n</div>", styles: [".flex{display:flex}.items-center{align-items:center}.justify-center{justify-content:center}.flex-col{flex-direction:column}.text-muted-color{color:#6c757d}.p-fileupload-buttonbar{padding:0}.p-fileupload-content{background-color:#0f8bfd1a}.p-fileupload .p-fileupload-content{padding:1rem}.docHeader .p-button-icon{padding:.5rem}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i7$1.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: i8.ProgressBar, selector: "p-progressBar", inputs: ["value", "showValue", "styleClass", "style", "unit", "mode", "color"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
1189
1189
|
}
|
|
1190
1190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentUploadComponent, decorators: [{
|
|
1191
1191
|
type: Component,
|
|
1192
|
-
args: [{ selector: 'lib-document-upload', standalone: false, encapsulation: ViewEncapsulation.None, template: "<div class=\"grid\">\
|
|
1192
|
+
args: [{ selector: 'lib-document-upload', standalone: false, encapsulation: ViewEncapsulation.None, template: "<div class=\"grid\">\n <div class=\"col-12 md:col-12\">\n <p-fileUpload #fileUploader [multiple]=\"true\" auto=\"true\" accept=\"image/png,application/pdf\" maxFileSize=\"26214400\"\n (onSelect)=\"onSelectedFiles($event)\">\n <ng-template pTemplate=\"header\" let-chooseCallback=\"chooseCallback\" let-clearCallback=\"clearCallback\">\n <div class=\"docHeader p-2 flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\n <div class=\"flex gap-2\">\n <p-button (onClick)=\"choose($event, chooseCallback)\" icon=\"pi pi-images\" [rounded]=\"true\"\n [outlined]=\"true\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-removeFileCallback=\"removeFileCallback\"\n let-removeUploadedFileCallback=\"removeUploadedFileCallback\">\n <div class=\"col-12 md:col-12 p-0\">\n <div class=\"col-12 md:col-12 p-0\" *ngIf=\"uploadedFiles.length > 0\">\n <div *ngFor=\"let uploadedFile of uploadedFiles; let i = index\"\n class=\"m-0 flex flex-column align-items-center gap-1 mt-3\">\n <div class=\"col-12 md:col-12 p-0 flex documentInfo\">\n <div class=\"documentImage\">\n <img src=\"../../../../assets/images/document.png\" [alt]=\"uploadedFile.file.name\" width=\"45\" height=\"50\"\n class=\"object-contain\" />\n </div>\n <div class=\"flex w-full flex-column mt-2 ml-2\">\n <div class=\"flex justify-content-between\">\n <div style=\" font-weight: bold;font-size: 14px\">\n {{ uploadedFile.file.name }}\n </div>\n <i class=\"pi pi-times cursor-pointer\" (click)=\"handleDocumentRemove(uploadedFile.file,i)\"></i>\n </div>\n <div class=\"flex justify-content-between mt-1\">\n <div style=\"color: #676B89; font-size: 12px; color: green;\" class=\"pi pi-verified \"> {{ uploadedFile.formattedSize }}</div>\n <div class=\"white-space-nowrap\" style=\"color: #0F8BFD; font-family: 14px;\"> {{ uploadedFile.progress }} %</div>\n </div>\n </div>\n </div>\n <div class=\"col-12 md:col-12 p-0\">\n <p-progressBar [value]=\"totalSizePercent\" [showValue]=\"false\" styleClass=\"h-1/2rem md:ml-auto relative\"\n [ngClass]=\"{ 'exceeded-progress-bar': totalSizePercent > 100 }\">\n </p-progressBar>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"empty\" let-chooseCallback=\"chooseCallback\">\n <div *ngIf=\"!uploadedFiles.length\" class=\"flex align-items-center justify-content-center flex-column\"\n (click)=\"triggerFileUpload()\">\n <i class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400\"></i>\n <p class=\"mt-4 mb-0\">Drag and drop files here to upload.</p>\n </div>\n </ng-template>\n <ng-template pTemplate=\"file\"> </ng-template>\n </p-fileUpload>\n </div>\n</div>", styles: [".flex{display:flex}.items-center{align-items:center}.justify-center{justify-content:center}.flex-col{flex-direction:column}.text-muted-color{color:#6c757d}.p-fileupload-buttonbar{padding:0}.p-fileupload-content{background-color:#0f8bfd1a}.p-fileupload .p-fileupload-content{padding:1rem}.docHeader .p-button-icon{padding:.5rem}\n"] }]
|
|
1193
1193
|
}], ctorParameters: () => [{ type: DocumentUploadService }, { type: DocumentService }, { type: i3.PrimeNGConfig }, { type: FileFormatService }, { type: i3.MessageService }, { type: i0.ChangeDetectorRef }], propDecorators: { contextId: [{
|
|
1194
1194
|
type: Input
|
|
1195
1195
|
}], fileUploader: [{
|
|
@@ -1197,29 +1197,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
1197
1197
|
args: ['fileUploader']
|
|
1198
1198
|
}] } });
|
|
1199
1199
|
|
|
1200
|
+
/**
|
|
1201
|
+
* Service to manage the document type
|
|
1202
|
+
*/
|
|
1203
|
+
class DocumentTypeService {
|
|
1204
|
+
documentTypeSubject$ = new BehaviorSubject('');
|
|
1205
|
+
/**
|
|
1206
|
+
* Set the document type
|
|
1207
|
+
* @param type the document type
|
|
1208
|
+
*/
|
|
1209
|
+
set(type) {
|
|
1210
|
+
this.documentTypeSubject$.next(type ?? '');
|
|
1211
|
+
}
|
|
1212
|
+
/**
|
|
1213
|
+
* Get the document type
|
|
1214
|
+
* @returns the document type
|
|
1215
|
+
*/
|
|
1216
|
+
get() {
|
|
1217
|
+
return this.documentTypeSubject$.asObservable();
|
|
1218
|
+
}
|
|
1219
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentTypeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1220
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentTypeService, providedIn: 'root' });
|
|
1221
|
+
}
|
|
1222
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentTypeService, decorators: [{
|
|
1223
|
+
type: Injectable,
|
|
1224
|
+
args: [{
|
|
1225
|
+
providedIn: 'root',
|
|
1226
|
+
}]
|
|
1227
|
+
}] });
|
|
1228
|
+
|
|
1200
1229
|
/**
|
|
1201
1230
|
* Component for viewing and managing document details.
|
|
1202
1231
|
* @class DocumentViewerComponent
|
|
1203
1232
|
* @typedef {DocumentViewerComponent}
|
|
1204
|
-
* @implements {OnInit}
|
|
1205
1233
|
*/
|
|
1206
1234
|
class DocumentViewerComponent {
|
|
1207
1235
|
documentHttpService;
|
|
1236
|
+
documentTypeService;
|
|
1208
1237
|
/**
|
|
1209
1238
|
* Get the selected document by user.
|
|
1210
1239
|
* @type {*}
|
|
1211
1240
|
*/
|
|
1212
|
-
selectedDocument;
|
|
1241
|
+
selectedDocument; // <-- Made optional to prevent undefined issues
|
|
1213
1242
|
/**
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1243
|
+
* Get the selected document by user.
|
|
1244
|
+
* @type {boolean}
|
|
1245
|
+
*/
|
|
1217
1246
|
showSummaryAndNotes = SHARED.TRUE;
|
|
1218
1247
|
/**
|
|
1219
1248
|
* Handle notes data.
|
|
1220
1249
|
* @type {!string}
|
|
1221
1250
|
*/
|
|
1222
|
-
notes;
|
|
1251
|
+
notes = '';
|
|
1223
1252
|
/**
|
|
1224
1253
|
* Indicates whether a checkbox is selected.
|
|
1225
1254
|
* @type {boolean}
|
|
@@ -1259,8 +1288,9 @@ class DocumentViewerComponent {
|
|
|
1259
1288
|
/**
|
|
1260
1289
|
* Initializes a new instance of the DocumentViewerComponent.
|
|
1261
1290
|
*/
|
|
1262
|
-
constructor(documentHttpService) {
|
|
1291
|
+
constructor(documentHttpService, documentTypeService) {
|
|
1263
1292
|
this.documentHttpService = documentHttpService;
|
|
1293
|
+
this.documentTypeService = documentTypeService;
|
|
1264
1294
|
}
|
|
1265
1295
|
/**
|
|
1266
1296
|
* Fetches the alerts for the selected document.
|
|
@@ -1268,31 +1298,28 @@ class DocumentViewerComponent {
|
|
|
1268
1298
|
*/
|
|
1269
1299
|
ngOnChanges() {
|
|
1270
1300
|
if (this.selectedDocument) {
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
// });
|
|
1274
|
-
// this.subscription.add(documentSubscription);
|
|
1275
|
-
this.alertData = DocumentAlertList.find((res) => { return res.status == this.selectedDocument.status; });
|
|
1301
|
+
this.documentTypeService.set(this.selectedDocument.documentTypeName);
|
|
1302
|
+
this.alertData = DocumentAlertList.find((res) => res.status === this.selectedDocument?.status);
|
|
1276
1303
|
}
|
|
1277
1304
|
}
|
|
1278
1305
|
/**
|
|
1279
1306
|
* Determines if the given content type is an image.
|
|
1280
|
-
* @param {string} contentType - The MIME type of the content.
|
|
1307
|
+
* @param {string | undefined} contentType - The MIME type of the content.
|
|
1281
1308
|
* @returns {boolean} `true` if the content type is an image; otherwise, `false`.
|
|
1282
1309
|
*/
|
|
1283
1310
|
isImage(contentType) {
|
|
1284
|
-
return SUPPORTED_IMAGE_TYPES.includes(contentType);
|
|
1311
|
+
return contentType ? SUPPORTED_IMAGE_TYPES.includes(contentType) : false;
|
|
1285
1312
|
}
|
|
1286
1313
|
ngOnDestroy() {
|
|
1287
1314
|
this.subscription.unsubscribe();
|
|
1288
1315
|
}
|
|
1289
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentViewerComponent, deps: [{ token: DocumentHttpService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1290
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: DocumentViewerComponent, isStandalone: false, selector: "document-viewer", inputs: { selectedDocument: "selectedDocument", showSummaryAndNotes: "showSummaryAndNotes" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"p-fluid p-formgrid grid m-0\">\r\n <div class=\"col-12 md:col-12 md:flex justify-content-evenly\">\r\n @if(selectedDocument){\r\n <div id=\"outerContainer col-12 md:col-7\">\r\n <div\r\n *ngIf=\"isImage(selectedDocument.contentType)\"\r\n class=\"img-container\"\r\n >\r\n <img\r\n [src]=\"selectedDocument.documentUrl\"\r\n class=\"uploadedImages\"\r\n alt=\"Document Image\"\r\n />\r\n </div>\r\n @if(selectedDocument.contentType == \"application/pdf\"){\r\n <div class=\"pdf-container\">\r\n <pdf-viewer\r\n [src]=\"selectedDocument.documentUrl\"\r\n [rotation]=\"0\"\r\n [original-size]=\"false\"\r\n [show-all]=\"true\"\r\n [fit-to-page]=\"false\"\r\n [zoom]=\"1\"\r\n [zoom-scale]=\"'page-width'\"\r\n [stick-to-page]=\"false\"\r\n [render-text]=\"true\"\r\n [external-link-target]=\"'blank'\"\r\n [autoresize]=\"true\"\r\n [show-borders]=\"false\"\r\n style=\"width: 50vw; height: 75vh\"\r\n ></pdf-viewer>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"left-part col-12 md:col-3 pt-0\">\r\n <div class=\"alerts mb-4 pb-1\">\r\n <button\r\n type=\"button\"\r\n *ngIf=\"\r\n (alertData?.status !== 'Pending' && !!alertData?.status) ||\r\n alertData?.isAlert === false\r\n \"\r\n class=\"bg-green-500 border-none border-round-md flex align-items-center mb-3 p-2 px-3\"\r\n >\r\n <i\r\n class=\"pi pi-verified mr-2 cursor-pointer\"\r\n [ngStyle]=\"{\r\n color:\r\n alertData?.status === 'Pending' &&\r\n alertData?.isAlert !== false\r\n ? '#FFFFFF'\r\n : '#8A8EA6'\r\n }\"\r\n style=\"font-size: 20px\"\r\n ></i>\r\n <span class=\"font-semibold text-white\">Verified</span>\r\n </button>\r\n <div\r\n class=\"card mb-0\"\r\n [ngClass]=\"\r\n (alertData?.status === 'Pending' || !alertData?.status) &&\r\n alertData?.isAlert !== false\r\n ? 'alert-card'\r\n : 'success-alert'\r\n \"\r\n >\r\n <div class=\"flex align-items-center mb-2 pb-1\" *ngIf=\"alertData?.status !== 'Verified'\">\r\n <h4 class=\"mr-3 mt-0 mb-0 text-color font-bold\" style=\"font-size: 21px; font-weight: bold; border-color: rgba(68, 72, 109, 0.2) ;\" >Alerts</h4>\r\n <i\r\n class=\"pi pi-exclamation-triangle\"\r\n style=\"font-size: 20px\"\r\n [ngStyle]=\"{\r\n color:\r\n (alertData?.status === 'Pending' || !alertData?.status) &&\r\n alertData?.isAlert !== false\r\n ? '#FB392D'\r\n : '#8A8EA6'\r\n }\"\r\n ></i>\r\n </div>\r\n <p class=\"text-color mb-0\">{{ alertData?.alertMessage }}</p>\r\n </div>\r\n </div>\r\n @if(showSummaryAndNotes){\r\n <div class=\"summery mb-4 pb-1\">\r\n <div class=\"card p-0 mb-0\" style=\"border-bottom: 1px solid;border-color: rgba(68, 72, 109, 0.2); border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;\">\r\n <div class=\"p-0\" >\r\n <h4 class=\"m-0 pt-3 pl-3 mb-3\" style=\"font-size: 21px; font-weight: bold; \">Summary</h4>\r\n </div>\r\n </div>\r\n <div class=\"card mb-0\" style=\"border-top-right-radius: 0px;border-top-left-radius: 0px;\" >\r\n <p-timeline [value]=\"events\">\r\n <ng-template pTemplate=\"content\" let-event>\r\n {{ event.status }}\r\n </ng-template>\r\n </p-timeline>\r\n </div>\r\n </div>\r\n <div *ngIf=\"propertyDetails\" class=\"property-details mb-4 pb-1\">\r\n <div class=\"card mb-0\">\r\n <h4 class=\"bold\" style=\"font-size: 21px; font-weight: bold;\">Property Details</h4>\r\n <hr />\r\n <div class=\"grid\">\r\n <div class=\"col-12 md:col-12\">\r\n <div class=\"feild flex\">\r\n <div class=\"col-12 flex md:col-7\">\r\n <div class=\"img mr-2\">\r\n <img\r\n src=\"../../../../assets/icons/building-icon.png\"\r\n alt=\"\"\r\n />\r\n </div>\r\n <div class=\"title\">\r\n <div class=\"title font-bold\" style=\"font-size: 21px; font-weight: bold;\">Detached House</div>\r\n <div class=\"decription\">\r\n {{ propertyDetails?.PropertyType }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 flex md:col-5\">\r\n <div class=\"img mr-2\">\r\n <img\r\n src=\"../../../../assets/icons/building-icon.png\"\r\n alt=\"\"\r\n />\r\n </div>\r\n <div class=\"title\">\r\n <div class=\"title font-bold\">\r\n {{ propertyDetails?.Floors }}\r\n </div>\r\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Floors</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"feild flex\">\r\n <div class=\"col-12 flex md:col-7\">\r\n <div class=\"img mr-2\">\r\n <img\r\n src=\"../../../../assets/icons/badroom.png\"\r\n alt=\"\"\r\n />\r\n </div>\r\n <div class=\"title\">\r\n <div class=\"title font-bold\">\r\n {{ propertyDetails?.Bedrooms }}\r\n </div>\r\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Bedrooms</div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 flex md:col-5\">\r\n <div class=\"img mr-2\">\r\n <img\r\n src=\"../../../../assets/icons/building-icon.png\"\r\n alt=\"\"\r\n />\r\n </div>\r\n <div class=\"title\">\r\n <div class=\"title font-bold\">\r\n {{ propertyDetails?.Kitchen }}\r\n </div>\r\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Kitchen</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 flex ml-2 md:col-12\">\r\n <div class=\"img mr-2\">\r\n <img src=\"../../../../assets/icons/location.png\" alt=\"\" />\r\n </div>\r\n <div class=\"title\">\r\n <div class=\"title font-bold\">\r\n {{ propertyDetails?.Address }}\r\n </div>\r\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Address</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"notes card pl-0 pr-0 pt-0\">\r\n <div class=\"card p-0\" style=\"border-bottom: 1px solid;border-color: rgba(68, 72, 109, 0.2); border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;\">\r\n <div class=\"p-0\" >\r\n <h4 class=\"m-0 pt-3 pl-3 mb-3\" style=\"font-size: 21px; font-weight: bold; \">Notes</h4>\r\n </div>\r\n </div>\r\n <div class=\"card mb-0 pt-0\">\r\n <div class=\"textAreaControl mt-3\">\r\n <textarea\r\n rows=\"5\"\r\n cols=\"30\"\r\n pInputTextarea\r\n #textArea\r\n [(ngModel)]=\"notes\"\r\n >\r\n </textarea>\r\n </div>\r\n <div class=\"buttons document-btn-wrapper flex mt-2\">\r\n <button\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n label=\"Resubmission\"\r\n class=\"p-button-outlined mr-2\"\r\n ></button>\r\n <button\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n label=\"Accept\"\r\n ></button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".alert-card{background-color:#fb392d1a}.success-alert{border-radius:10px;border:1px solid rgba(251,57,45,.1);background:linear-gradient(0deg,#dedede 0% 100%),#fff}.p-timeline-event-opposite{display:none}.decription{color:#676b89}.textAreaControl textarea{width:100%;resize:vertical;max-width:100%}.document-btn-wrapper .p-button-outlined{color:#f57c00}.document-viewer .p-dialog-header,.document-viewer .p-dialog-content{background-color:#ececf9}.summery .p-timeline-event{min-height:45px!important}.uploadedImages{width:95%;height:100%;object-fit:contain}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i5.Timeline, selector: "p-timeline", inputs: ["value", "style", "styleClass", "align", "layout"] }, { kind: "directive", type: i6.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize", "variant"], outputs: ["onResize"] }, { kind: "directive", type: i7$2.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: i7$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8$1.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"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
1316
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentViewerComponent, deps: [{ token: DocumentHttpService }, { token: DocumentTypeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1317
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: DocumentViewerComponent, isStandalone: false, selector: "document-viewer", inputs: { selectedDocument: "selectedDocument", showSummaryAndNotes: "showSummaryAndNotes" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"grid\">\n <div class=\"col-12\">\n <div class=\"p-fluid p-formgrid grid m-0\">\n <div class=\"col-12 md:col-12 md:flex justify-content-evenly\">\n @if(selectedDocument){\n <div id=\"outerContainer col-12 md:col-7\">\n <div\n *ngIf=\"isImage(selectedDocument?.contentType)\"\n class=\"img-container\"\n >\n <img\n [src]=\"selectedDocument?.documentUrl || ''\"\n class=\"uploadedImages\"\n alt=\"Document Image\"\n />\n </div>\n @if(selectedDocument?.contentType && selectedDocument?.contentType === \"application/pdf\"){\n <div class=\"pdf-container\">\n <pdf-viewer\n [src]=\"selectedDocument?.documentUrl || ''\"\n [rotation]=\"0\"\n [original-size]=\"false\"\n [show-all]=\"true\"\n [fit-to-page]=\"false\"\n [zoom]=\"1\"\n [zoom-scale]=\"'page-width'\"\n [stick-to-page]=\"false\"\n [render-text]=\"true\"\n [external-link-target]=\"'blank'\"\n [autoresize]=\"true\"\n [show-borders]=\"false\"\n style=\"width: 50vw; height: 75vh\"\n ></pdf-viewer>\n </div>\n }\n </div>\n }\n\n <div class=\"left-part col-12 md:col-3 pt-0\">\n <div class=\"alerts mb-4 pb-1\">\n <button\n type=\"button\"\n *ngIf=\"\n (alertData?.status !== 'Pending' && !!alertData?.status) ||\n alertData?.isAlert === false\n \"\n class=\"bg-green-500 border-none border-round-md flex align-items-center mb-3 p-2 px-3\"\n >\n <i\n class=\"pi pi-verified mr-2 cursor-pointer\"\n [ngStyle]=\"{\n color:\n alertData?.status === 'Pending' &&\n alertData?.isAlert !== false\n ? '#FFFFFF'\n : '#8A8EA6'\n }\"\n style=\"font-size: 20px\"\n ></i>\n <span class=\"font-semibold text-white\">Verified</span>\n </button>\n <div\n class=\"card mb-0\"\n [ngClass]=\"\n (alertData?.status === 'Pending' || !alertData?.status) &&\n alertData?.isAlert !== false\n ? 'alert-card'\n : 'success-alert'\n \"\n >\n <div class=\"flex align-items-center mb-2 pb-1\" *ngIf=\"alertData?.status !== 'Verified'\">\n <h4 class=\"mr-3 mt-0 mb-0 text-color font-bold\" style=\"font-size: 21px; font-weight: bold; border-color: rgba(68, 72, 109, 0.2) ;\" >Alerts</h4>\n <i\n class=\"pi pi-exclamation-triangle\"\n style=\"font-size: 20px\"\n [ngStyle]=\"{\n color:\n (alertData?.status === 'Pending' || !alertData?.status) &&\n alertData?.isAlert !== false\n ? '#FB392D'\n : '#8A8EA6'\n }\"\n ></i>\n </div>\n <p class=\"text-color mb-0\">{{ alertData?.alertMessage }}</p>\n </div>\n </div>\n @if(showSummaryAndNotes){\n <div class=\"summery mb-4 pb-1\">\n <div class=\"card p-0 mb-0\" style=\"border-bottom: 1px solid;border-color: rgba(68, 72, 109, 0.2); border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;\">\n <div class=\"p-0\" >\n <h4 class=\"m-0 pt-3 pl-3 mb-3\" style=\"font-size: 21px; font-weight: bold; \">Summary</h4>\n </div>\n </div>\n <div class=\"card mb-0\" style=\"border-top-right-radius: 0px;border-top-left-radius: 0px;\" >\n <p-timeline [value]=\"events\">\n <ng-template pTemplate=\"content\" let-event>\n {{ event.status }}\n </ng-template>\n </p-timeline>\n </div>\n </div>\n <div *ngIf=\"propertyDetails\" class=\"property-details mb-4 pb-1\">\n <div class=\"card mb-0\">\n <h4 class=\"bold\" style=\"font-size: 21px; font-weight: bold;\">Property Details</h4>\n <hr />\n <div class=\"grid\">\n <div class=\"col-12 md:col-12\">\n <div class=\"feild flex\">\n <div class=\"col-12 flex md:col-7\">\n <div class=\"img mr-2\">\n <img\n src=\"../../../../assets/icons/building-icon.png\"\n alt=\"\"\n />\n </div>\n <div class=\"title\">\n <div class=\"title font-bold\" style=\"font-size: 21px; font-weight: bold;\">Detached House</div>\n <div class=\"decription\">\n {{ propertyDetails?.PropertyType }}\n </div>\n </div>\n </div>\n <div class=\"col-12 flex md:col-5\">\n <div class=\"img mr-2\">\n <img\n src=\"../../../../assets/icons/building-icon.png\"\n alt=\"\"\n />\n </div>\n <div class=\"title\">\n <div class=\"title font-bold\">\n {{ propertyDetails?.Floors }}\n </div>\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Floors</div>\n </div>\n </div>\n </div>\n <div class=\"feild flex\">\n <div class=\"col-12 flex md:col-7\">\n <div class=\"img mr-2\">\n <img\n src=\"../../../../assets/icons/badroom.png\"\n alt=\"\"\n />\n </div>\n <div class=\"title\">\n <div class=\"title font-bold\">\n {{ propertyDetails?.Bedrooms }}\n </div>\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Bedrooms</div>\n </div>\n </div>\n <div class=\"col-12 flex md:col-5\">\n <div class=\"img mr-2\">\n <img\n src=\"../../../../assets/icons/building-icon.png\"\n alt=\"\"\n />\n </div>\n <div class=\"title\">\n <div class=\"title font-bold\">\n {{ propertyDetails?.Kitchen }}\n </div>\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Kitchen</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12 flex ml-2 md:col-12\">\n <div class=\"img mr-2\">\n <img src=\"../../../../assets/icons/location.png\" alt=\"\" />\n </div>\n <div class=\"title\">\n <div class=\"title font-bold\">\n {{ propertyDetails?.Address }}\n </div>\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Address</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"notes card pl-0 pr-0 pt-0\">\n <div class=\"card p-0\" style=\"border-bottom: 1px solid;border-color: rgba(68, 72, 109, 0.2); border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;\">\n <div class=\"p-0\" >\n <h4 class=\"m-0 pt-3 pl-3 mb-3\" style=\"font-size: 21px; font-weight: bold; \">Notes</h4>\n </div>\n </div>\n <div class=\"card mb-0 pt-0\">\n <div class=\"textAreaControl mt-3\">\n <textarea\n rows=\"5\"\n cols=\"30\"\n pInputTextarea\n #textArea\n [(ngModel)]=\"notes\"\n >\n </textarea>\n </div>\n <div class=\"buttons document-btn-wrapper flex mt-2\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"Resubmission\"\n class=\"p-button-outlined mr-2\"\n ></button>\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"Accept\"\n ></button>\n </div>\n </div>\n </div>\n }\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".alert-card{background-color:#fb392d1a}.success-alert{border-radius:10px;border:1px solid rgba(251,57,45,.1);background:linear-gradient(0deg,#dedede 0% 100%),#fff}.p-timeline-event-opposite{display:none}.decription{color:#676b89}.textAreaControl textarea{width:100%;resize:vertical;max-width:100%}.document-btn-wrapper .p-button-outlined{color:#f57c00}.document-viewer .p-dialog-header,.document-viewer .p-dialog-content{background-color:#ececf9}.summery .p-timeline-event{min-height:45px!important}.uploadedImages{width:95%;height:100%;object-fit:contain}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i6.Timeline, selector: "p-timeline", inputs: ["value", "style", "styleClass", "align", "layout"] }, { kind: "directive", type: i7$2.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize", "variant"], outputs: ["onResize"] }, { kind: "directive", type: i8$1.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: i8$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.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"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
1291
1318
|
}
|
|
1292
1319
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentViewerComponent, decorators: [{
|
|
1293
1320
|
type: Component,
|
|
1294
|
-
args: [{ selector: 'document-viewer', standalone: false, encapsulation: ViewEncapsulation.None, template: "<div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"p-fluid p-formgrid grid m-0\">\r\n <div class=\"col-12 md:col-12 md:flex justify-content-evenly\">\r\n @if(selectedDocument){\r\n <div id=\"outerContainer col-12 md:col-7\">\r\n <div\r\n *ngIf=\"isImage(selectedDocument.contentType)\"\r\n class=\"img-container\"\r\n >\r\n <img\r\n [src]=\"selectedDocument.documentUrl\"\r\n class=\"uploadedImages\"\r\n alt=\"Document Image\"\r\n />\r\n </div>\r\n @if(selectedDocument.contentType == \"application/pdf\"){\r\n <div class=\"pdf-container\">\r\n <pdf-viewer\r\n [src]=\"selectedDocument.documentUrl\"\r\n [rotation]=\"0\"\r\n [original-size]=\"false\"\r\n [show-all]=\"true\"\r\n [fit-to-page]=\"false\"\r\n [zoom]=\"1\"\r\n [zoom-scale]=\"'page-width'\"\r\n [stick-to-page]=\"false\"\r\n [render-text]=\"true\"\r\n [external-link-target]=\"'blank'\"\r\n [autoresize]=\"true\"\r\n [show-borders]=\"false\"\r\n style=\"width: 50vw; height: 75vh\"\r\n ></pdf-viewer>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"left-part col-12 md:col-3 pt-0\">\r\n <div class=\"alerts mb-4 pb-1\">\r\n <button\r\n type=\"button\"\r\n *ngIf=\"\r\n (alertData?.status !== 'Pending' && !!alertData?.status) ||\r\n alertData?.isAlert === false\r\n \"\r\n class=\"bg-green-500 border-none border-round-md flex align-items-center mb-3 p-2 px-3\"\r\n >\r\n <i\r\n class=\"pi pi-verified mr-2 cursor-pointer\"\r\n [ngStyle]=\"{\r\n color:\r\n alertData?.status === 'Pending' &&\r\n alertData?.isAlert !== false\r\n ? '#FFFFFF'\r\n : '#8A8EA6'\r\n }\"\r\n style=\"font-size: 20px\"\r\n ></i>\r\n <span class=\"font-semibold text-white\">Verified</span>\r\n </button>\r\n <div\r\n class=\"card mb-0\"\r\n [ngClass]=\"\r\n (alertData?.status === 'Pending' || !alertData?.status) &&\r\n alertData?.isAlert !== false\r\n ? 'alert-card'\r\n : 'success-alert'\r\n \"\r\n >\r\n <div class=\"flex align-items-center mb-2 pb-1\" *ngIf=\"alertData?.status !== 'Verified'\">\r\n <h4 class=\"mr-3 mt-0 mb-0 text-color font-bold\" style=\"font-size: 21px; font-weight: bold; border-color: rgba(68, 72, 109, 0.2) ;\" >Alerts</h4>\r\n <i\r\n class=\"pi pi-exclamation-triangle\"\r\n style=\"font-size: 20px\"\r\n [ngStyle]=\"{\r\n color:\r\n (alertData?.status === 'Pending' || !alertData?.status) &&\r\n alertData?.isAlert !== false\r\n ? '#FB392D'\r\n : '#8A8EA6'\r\n }\"\r\n ></i>\r\n </div>\r\n <p class=\"text-color mb-0\">{{ alertData?.alertMessage }}</p>\r\n </div>\r\n </div>\r\n @if(showSummaryAndNotes){\r\n <div class=\"summery mb-4 pb-1\">\r\n <div class=\"card p-0 mb-0\" style=\"border-bottom: 1px solid;border-color: rgba(68, 72, 109, 0.2); border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;\">\r\n <div class=\"p-0\" >\r\n <h4 class=\"m-0 pt-3 pl-3 mb-3\" style=\"font-size: 21px; font-weight: bold; \">Summary</h4>\r\n </div>\r\n </div>\r\n <div class=\"card mb-0\" style=\"border-top-right-radius: 0px;border-top-left-radius: 0px;\" >\r\n <p-timeline [value]=\"events\">\r\n <ng-template pTemplate=\"content\" let-event>\r\n {{ event.status }}\r\n </ng-template>\r\n </p-timeline>\r\n </div>\r\n </div>\r\n <div *ngIf=\"propertyDetails\" class=\"property-details mb-4 pb-1\">\r\n <div class=\"card mb-0\">\r\n <h4 class=\"bold\" style=\"font-size: 21px; font-weight: bold;\">Property Details</h4>\r\n <hr />\r\n <div class=\"grid\">\r\n <div class=\"col-12 md:col-12\">\r\n <div class=\"feild flex\">\r\n <div class=\"col-12 flex md:col-7\">\r\n <div class=\"img mr-2\">\r\n <img\r\n src=\"../../../../assets/icons/building-icon.png\"\r\n alt=\"\"\r\n />\r\n </div>\r\n <div class=\"title\">\r\n <div class=\"title font-bold\" style=\"font-size: 21px; font-weight: bold;\">Detached House</div>\r\n <div class=\"decription\">\r\n {{ propertyDetails?.PropertyType }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 flex md:col-5\">\r\n <div class=\"img mr-2\">\r\n <img\r\n src=\"../../../../assets/icons/building-icon.png\"\r\n alt=\"\"\r\n />\r\n </div>\r\n <div class=\"title\">\r\n <div class=\"title font-bold\">\r\n {{ propertyDetails?.Floors }}\r\n </div>\r\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Floors</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"feild flex\">\r\n <div class=\"col-12 flex md:col-7\">\r\n <div class=\"img mr-2\">\r\n <img\r\n src=\"../../../../assets/icons/badroom.png\"\r\n alt=\"\"\r\n />\r\n </div>\r\n <div class=\"title\">\r\n <div class=\"title font-bold\">\r\n {{ propertyDetails?.Bedrooms }}\r\n </div>\r\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Bedrooms</div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 flex md:col-5\">\r\n <div class=\"img mr-2\">\r\n <img\r\n src=\"../../../../assets/icons/building-icon.png\"\r\n alt=\"\"\r\n />\r\n </div>\r\n <div class=\"title\">\r\n <div class=\"title font-bold\">\r\n {{ propertyDetails?.Kitchen }}\r\n </div>\r\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Kitchen</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 flex ml-2 md:col-12\">\r\n <div class=\"img mr-2\">\r\n <img src=\"../../../../assets/icons/location.png\" alt=\"\" />\r\n </div>\r\n <div class=\"title\">\r\n <div class=\"title font-bold\">\r\n {{ propertyDetails?.Address }}\r\n </div>\r\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Address</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"notes card pl-0 pr-0 pt-0\">\r\n <div class=\"card p-0\" style=\"border-bottom: 1px solid;border-color: rgba(68, 72, 109, 0.2); border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;\">\r\n <div class=\"p-0\" >\r\n <h4 class=\"m-0 pt-3 pl-3 mb-3\" style=\"font-size: 21px; font-weight: bold; \">Notes</h4>\r\n </div>\r\n </div>\r\n <div class=\"card mb-0 pt-0\">\r\n <div class=\"textAreaControl mt-3\">\r\n <textarea\r\n rows=\"5\"\r\n cols=\"30\"\r\n pInputTextarea\r\n #textArea\r\n [(ngModel)]=\"notes\"\r\n >\r\n </textarea>\r\n </div>\r\n <div class=\"buttons document-btn-wrapper flex mt-2\">\r\n <button\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n label=\"Resubmission\"\r\n class=\"p-button-outlined mr-2\"\r\n ></button>\r\n <button\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n label=\"Accept\"\r\n ></button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".alert-card{background-color:#fb392d1a}.success-alert{border-radius:10px;border:1px solid rgba(251,57,45,.1);background:linear-gradient(0deg,#dedede 0% 100%),#fff}.p-timeline-event-opposite{display:none}.decription{color:#676b89}.textAreaControl textarea{width:100%;resize:vertical;max-width:100%}.document-btn-wrapper .p-button-outlined{color:#f57c00}.document-viewer .p-dialog-header,.document-viewer .p-dialog-content{background-color:#ececf9}.summery .p-timeline-event{min-height:45px!important}.uploadedImages{width:95%;height:100%;object-fit:contain}\n"] }]
|
|
1295
|
-
}], ctorParameters: () => [{ type: DocumentHttpService }], propDecorators: { selectedDocument: [{
|
|
1321
|
+
args: [{ selector: 'document-viewer', standalone: false, encapsulation: ViewEncapsulation.None, template: "<div class=\"grid\">\n <div class=\"col-12\">\n <div class=\"p-fluid p-formgrid grid m-0\">\n <div class=\"col-12 md:col-12 md:flex justify-content-evenly\">\n @if(selectedDocument){\n <div id=\"outerContainer col-12 md:col-7\">\n <div\n *ngIf=\"isImage(selectedDocument?.contentType)\"\n class=\"img-container\"\n >\n <img\n [src]=\"selectedDocument?.documentUrl || ''\"\n class=\"uploadedImages\"\n alt=\"Document Image\"\n />\n </div>\n @if(selectedDocument?.contentType && selectedDocument?.contentType === \"application/pdf\"){\n <div class=\"pdf-container\">\n <pdf-viewer\n [src]=\"selectedDocument?.documentUrl || ''\"\n [rotation]=\"0\"\n [original-size]=\"false\"\n [show-all]=\"true\"\n [fit-to-page]=\"false\"\n [zoom]=\"1\"\n [zoom-scale]=\"'page-width'\"\n [stick-to-page]=\"false\"\n [render-text]=\"true\"\n [external-link-target]=\"'blank'\"\n [autoresize]=\"true\"\n [show-borders]=\"false\"\n style=\"width: 50vw; height: 75vh\"\n ></pdf-viewer>\n </div>\n }\n </div>\n }\n\n <div class=\"left-part col-12 md:col-3 pt-0\">\n <div class=\"alerts mb-4 pb-1\">\n <button\n type=\"button\"\n *ngIf=\"\n (alertData?.status !== 'Pending' && !!alertData?.status) ||\n alertData?.isAlert === false\n \"\n class=\"bg-green-500 border-none border-round-md flex align-items-center mb-3 p-2 px-3\"\n >\n <i\n class=\"pi pi-verified mr-2 cursor-pointer\"\n [ngStyle]=\"{\n color:\n alertData?.status === 'Pending' &&\n alertData?.isAlert !== false\n ? '#FFFFFF'\n : '#8A8EA6'\n }\"\n style=\"font-size: 20px\"\n ></i>\n <span class=\"font-semibold text-white\">Verified</span>\n </button>\n <div\n class=\"card mb-0\"\n [ngClass]=\"\n (alertData?.status === 'Pending' || !alertData?.status) &&\n alertData?.isAlert !== false\n ? 'alert-card'\n : 'success-alert'\n \"\n >\n <div class=\"flex align-items-center mb-2 pb-1\" *ngIf=\"alertData?.status !== 'Verified'\">\n <h4 class=\"mr-3 mt-0 mb-0 text-color font-bold\" style=\"font-size: 21px; font-weight: bold; border-color: rgba(68, 72, 109, 0.2) ;\" >Alerts</h4>\n <i\n class=\"pi pi-exclamation-triangle\"\n style=\"font-size: 20px\"\n [ngStyle]=\"{\n color:\n (alertData?.status === 'Pending' || !alertData?.status) &&\n alertData?.isAlert !== false\n ? '#FB392D'\n : '#8A8EA6'\n }\"\n ></i>\n </div>\n <p class=\"text-color mb-0\">{{ alertData?.alertMessage }}</p>\n </div>\n </div>\n @if(showSummaryAndNotes){\n <div class=\"summery mb-4 pb-1\">\n <div class=\"card p-0 mb-0\" style=\"border-bottom: 1px solid;border-color: rgba(68, 72, 109, 0.2); border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;\">\n <div class=\"p-0\" >\n <h4 class=\"m-0 pt-3 pl-3 mb-3\" style=\"font-size: 21px; font-weight: bold; \">Summary</h4>\n </div>\n </div>\n <div class=\"card mb-0\" style=\"border-top-right-radius: 0px;border-top-left-radius: 0px;\" >\n <p-timeline [value]=\"events\">\n <ng-template pTemplate=\"content\" let-event>\n {{ event.status }}\n </ng-template>\n </p-timeline>\n </div>\n </div>\n <div *ngIf=\"propertyDetails\" class=\"property-details mb-4 pb-1\">\n <div class=\"card mb-0\">\n <h4 class=\"bold\" style=\"font-size: 21px; font-weight: bold;\">Property Details</h4>\n <hr />\n <div class=\"grid\">\n <div class=\"col-12 md:col-12\">\n <div class=\"feild flex\">\n <div class=\"col-12 flex md:col-7\">\n <div class=\"img mr-2\">\n <img\n src=\"../../../../assets/icons/building-icon.png\"\n alt=\"\"\n />\n </div>\n <div class=\"title\">\n <div class=\"title font-bold\" style=\"font-size: 21px; font-weight: bold;\">Detached House</div>\n <div class=\"decription\">\n {{ propertyDetails?.PropertyType }}\n </div>\n </div>\n </div>\n <div class=\"col-12 flex md:col-5\">\n <div class=\"img mr-2\">\n <img\n src=\"../../../../assets/icons/building-icon.png\"\n alt=\"\"\n />\n </div>\n <div class=\"title\">\n <div class=\"title font-bold\">\n {{ propertyDetails?.Floors }}\n </div>\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Floors</div>\n </div>\n </div>\n </div>\n <div class=\"feild flex\">\n <div class=\"col-12 flex md:col-7\">\n <div class=\"img mr-2\">\n <img\n src=\"../../../../assets/icons/badroom.png\"\n alt=\"\"\n />\n </div>\n <div class=\"title\">\n <div class=\"title font-bold\">\n {{ propertyDetails?.Bedrooms }}\n </div>\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Bedrooms</div>\n </div>\n </div>\n <div class=\"col-12 flex md:col-5\">\n <div class=\"img mr-2\">\n <img\n src=\"../../../../assets/icons/building-icon.png\"\n alt=\"\"\n />\n </div>\n <div class=\"title\">\n <div class=\"title font-bold\">\n {{ propertyDetails?.Kitchen }}\n </div>\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Kitchen</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12 flex ml-2 md:col-12\">\n <div class=\"img mr-2\">\n <img src=\"../../../../assets/icons/location.png\" alt=\"\" />\n </div>\n <div class=\"title\">\n <div class=\"title font-bold\">\n {{ propertyDetails?.Address }}\n </div>\n <div class=\"decription\" style=\"font-size: 21px; font-weight: bold;\">Address</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"notes card pl-0 pr-0 pt-0\">\n <div class=\"card p-0\" style=\"border-bottom: 1px solid;border-color: rgba(68, 72, 109, 0.2); border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;\">\n <div class=\"p-0\" >\n <h4 class=\"m-0 pt-3 pl-3 mb-3\" style=\"font-size: 21px; font-weight: bold; \">Notes</h4>\n </div>\n </div>\n <div class=\"card mb-0 pt-0\">\n <div class=\"textAreaControl mt-3\">\n <textarea\n rows=\"5\"\n cols=\"30\"\n pInputTextarea\n #textArea\n [(ngModel)]=\"notes\"\n >\n </textarea>\n </div>\n <div class=\"buttons document-btn-wrapper flex mt-2\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"Resubmission\"\n class=\"p-button-outlined mr-2\"\n ></button>\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"Accept\"\n ></button>\n </div>\n </div>\n </div>\n }\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".alert-card{background-color:#fb392d1a}.success-alert{border-radius:10px;border:1px solid rgba(251,57,45,.1);background:linear-gradient(0deg,#dedede 0% 100%),#fff}.p-timeline-event-opposite{display:none}.decription{color:#676b89}.textAreaControl textarea{width:100%;resize:vertical;max-width:100%}.document-btn-wrapper .p-button-outlined{color:#f57c00}.document-viewer .p-dialog-header,.document-viewer .p-dialog-content{background-color:#ececf9}.summery .p-timeline-event{min-height:45px!important}.uploadedImages{width:95%;height:100%;object-fit:contain}\n"] }]
|
|
1322
|
+
}], ctorParameters: () => [{ type: DocumentHttpService }, { type: DocumentTypeService }], propDecorators: { selectedDocument: [{
|
|
1296
1323
|
type: Input
|
|
1297
1324
|
}], showSummaryAndNotes: [{
|
|
1298
1325
|
type: Input
|
|
@@ -1486,11 +1513,11 @@ class DocumentListComponent {
|
|
|
1486
1513
|
this.isSidebarVisible = isVisible;
|
|
1487
1514
|
}
|
|
1488
1515
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentListComponent, deps: [{ token: DocumentUploadService }, { token: DocumentHttpService }, { token: DocumentQuery }, { token: DocumentStore }], target: i0.ɵɵFactoryTarget.Component });
|
|
1489
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: DocumentListComponent, isStandalone: false, selector: "lib-document-list", inputs: { contextId: "contextId", isUploadButtonVisible: "isUploadButtonVisible", showSummaryAndNotes: "showSummaryAndNotes", documentList: "documentList" }, outputs: { onRefresh: "onRefresh" }, ngImport: i0, template: "<div class=\"document-viewer\">\
|
|
1516
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: DocumentListComponent, isStandalone: false, selector: "lib-document-list", inputs: { contextId: "contextId", isUploadButtonVisible: "isUploadButtonVisible", showSummaryAndNotes: "showSummaryAndNotes", documentList: "documentList" }, outputs: { onRefresh: "onRefresh" }, ngImport: i0, template: "<div class=\"document-viewer\">\n <p-dialog [(visible)]=\"isdialogVisible\" [modal]=\"true\" (onHide)=\"handleCloseModel()\" [style]=\"{ width: '90vw', height : '100vh' }\"\n [draggable]=\"false\" [closable]=\"true\">\n <document-viewer [selectedDocument]=\"selectedDocument\" [showSummaryAndNotes]=\"showSummaryAndNotes\">\n <ng-content></ng-content>\n </document-viewer>\n </p-dialog>\n</div>\n\n<div class=\"col-12 p-0\">\n <div class=\"card mb-0 p-0 document-list-wrapper\">\n <p-accordion>\n <p-accordionTab [selected]=\"true\" class=\"line-height-2 m-0 accordion-title-wrapper\">\n <ng-template pTemplate=\"header\" let-active=\"active\">\n <div class=\"flex align-items-center justify-content-between w-full\">\n <span class=\"flex align-items-center gap-2 accordion-title-wrapper\">\n Documents\n </span>\n @if(isUploadButtonVisible){\n <button pButton pRipple class=\"p-button-raised col-3\" type=\"button\" label=\"Upload File\"\n style=\"border-radius: 10px;\" (click)=\"handleFileUploadClick($event)\"></button>\n }\n </div>\n </ng-template>\n @for(document of documentList; track document){\n <lib-document-list-item [document]=\"document\"\n (documentClick)=\"handleClickForDocument($event)\"></lib-document-list-item>\n }\n </p-accordionTab>\n </p-accordion>\n </div>\n</div>\n<div class=\"grid m-0\">\n <div class=\"col-12 p-0\">\n <p-sidebar [(visible)]=\"isSidebarVisible\" position=\"right\" [styleClass]=\"'right-sidebar'\" class=\"relative\">\n <ng-template pTemplate=\"header\">\n <p-messages [(value)]=\"messages\" [enableService]=\"false\" />\n </ng-template>\n <ng-template pTemplate=\"content\">\n <div class=\"side-bar-con\">\n <lib-document-upload [contextId]=\"contextId\"></lib-document-upload>\n <div class=\"p-fluid\">\n <div class=\"field\">\n <label for=\"city\">Select Folder</label>\n <p-dropdown id=\"city\" optionLabel=\"label\" optionValue=\"value\" [options]=\"options\"\n placeholder=\"Select a Folder\" [(ngModel)]=\"selectedOption\"></p-dropdown>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"footer\" class=\"bg-gray-100 p-0\">\n <div class=\"bg-gray-100 p-4\">\n <p-button label=\"Save\" class=\"p-button-rounded p-button-success save-btn\" (click)=\"handleUploadDocument()\"\n [disabled]=\"!selectedOption\">\n </p-button>\n </div>\n </ng-template>\n </p-sidebar>\n </div>\n</div>", styles: [".document-list-wrapper .p-accordion-header-link{padding:.5rem}.document-list-wrapper .p-sidebar-right,.right-sidebar{width:35%}.accordion-title-wrapper{font-size:20px;font-weight:700;color:var(--text-color)}.document-input-field{display:flex;flex-direction:column}.document-input-field input{width:100%;height:46px;padding:10px 15px;gap:10px;border-radius:10px;outline:none;border:1px solid rgba(76,98,146,.1019607843);font-size:15px}label{color:#0f1729;font-weight:600}.document-list-dropDown .p-element{padding:10px 0 10px 15px}.document-list-dropDown .p-dropdown{border-radius:10px!important}.side-bar-con{display:flex;flex-direction:column}.save-btn-con{width:100%;border-top:1px solid rgba(76,98,146,.2);background:#4c629214;padding:13px 40px}.save-btn .p-button{height:45px!important;width:140px;border-radius:10px}.p-sidebar-footer{padding:0}\n"], dependencies: [{ kind: "component", type: i5$1.Accordion, selector: "p-accordion", inputs: ["multiple", "style", "styleClass", "expandIcon", "collapseIcon", "activeIndex", "selectOnFocus", "headerAriaLevel"], outputs: ["onClose", "onOpen", "activeIndexChange"] }, { kind: "component", type: i5$1.AccordionTab, selector: "p-accordionTab", inputs: ["id", "header", "headerStyle", "tabStyle", "contentStyle", "tabStyleClass", "headerStyleClass", "contentStyleClass", "disabled", "cache", "transitionOptions", "iconPos", "selected", "headerAriaLevel"], outputs: ["selectedChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i7.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i8$2.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "component", type: i9$1.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange", "onClose"] }, { kind: "directive", type: i8$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i12.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "autoShowPanelOnPrintableCharacterKeyDown", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: DocumentListItemComponent, selector: "lib-document-list-item", inputs: ["document"], outputs: ["documentClick"] }, { kind: "component", type: DocumentUploadComponent, selector: "lib-document-upload", inputs: ["contextId"] }, { kind: "component", type: DocumentViewerComponent, selector: "document-viewer", inputs: ["selectedDocument", "showSummaryAndNotes"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
1490
1517
|
}
|
|
1491
1518
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentListComponent, decorators: [{
|
|
1492
1519
|
type: Component,
|
|
1493
|
-
args: [{ selector: 'lib-document-list', standalone: false, encapsulation: ViewEncapsulation.None, template: "<div class=\"document-viewer\">\
|
|
1520
|
+
args: [{ selector: 'lib-document-list', standalone: false, encapsulation: ViewEncapsulation.None, template: "<div class=\"document-viewer\">\n <p-dialog [(visible)]=\"isdialogVisible\" [modal]=\"true\" (onHide)=\"handleCloseModel()\" [style]=\"{ width: '90vw', height : '100vh' }\"\n [draggable]=\"false\" [closable]=\"true\">\n <document-viewer [selectedDocument]=\"selectedDocument\" [showSummaryAndNotes]=\"showSummaryAndNotes\">\n <ng-content></ng-content>\n </document-viewer>\n </p-dialog>\n</div>\n\n<div class=\"col-12 p-0\">\n <div class=\"card mb-0 p-0 document-list-wrapper\">\n <p-accordion>\n <p-accordionTab [selected]=\"true\" class=\"line-height-2 m-0 accordion-title-wrapper\">\n <ng-template pTemplate=\"header\" let-active=\"active\">\n <div class=\"flex align-items-center justify-content-between w-full\">\n <span class=\"flex align-items-center gap-2 accordion-title-wrapper\">\n Documents\n </span>\n @if(isUploadButtonVisible){\n <button pButton pRipple class=\"p-button-raised col-3\" type=\"button\" label=\"Upload File\"\n style=\"border-radius: 10px;\" (click)=\"handleFileUploadClick($event)\"></button>\n }\n </div>\n </ng-template>\n @for(document of documentList; track document){\n <lib-document-list-item [document]=\"document\"\n (documentClick)=\"handleClickForDocument($event)\"></lib-document-list-item>\n }\n </p-accordionTab>\n </p-accordion>\n </div>\n</div>\n<div class=\"grid m-0\">\n <div class=\"col-12 p-0\">\n <p-sidebar [(visible)]=\"isSidebarVisible\" position=\"right\" [styleClass]=\"'right-sidebar'\" class=\"relative\">\n <ng-template pTemplate=\"header\">\n <p-messages [(value)]=\"messages\" [enableService]=\"false\" />\n </ng-template>\n <ng-template pTemplate=\"content\">\n <div class=\"side-bar-con\">\n <lib-document-upload [contextId]=\"contextId\"></lib-document-upload>\n <div class=\"p-fluid\">\n <div class=\"field\">\n <label for=\"city\">Select Folder</label>\n <p-dropdown id=\"city\" optionLabel=\"label\" optionValue=\"value\" [options]=\"options\"\n placeholder=\"Select a Folder\" [(ngModel)]=\"selectedOption\"></p-dropdown>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"footer\" class=\"bg-gray-100 p-0\">\n <div class=\"bg-gray-100 p-4\">\n <p-button label=\"Save\" class=\"p-button-rounded p-button-success save-btn\" (click)=\"handleUploadDocument()\"\n [disabled]=\"!selectedOption\">\n </p-button>\n </div>\n </ng-template>\n </p-sidebar>\n </div>\n</div>", styles: [".document-list-wrapper .p-accordion-header-link{padding:.5rem}.document-list-wrapper .p-sidebar-right,.right-sidebar{width:35%}.accordion-title-wrapper{font-size:20px;font-weight:700;color:var(--text-color)}.document-input-field{display:flex;flex-direction:column}.document-input-field input{width:100%;height:46px;padding:10px 15px;gap:10px;border-radius:10px;outline:none;border:1px solid rgba(76,98,146,.1019607843);font-size:15px}label{color:#0f1729;font-weight:600}.document-list-dropDown .p-element{padding:10px 0 10px 15px}.document-list-dropDown .p-dropdown{border-radius:10px!important}.side-bar-con{display:flex;flex-direction:column}.save-btn-con{width:100%;border-top:1px solid rgba(76,98,146,.2);background:#4c629214;padding:13px 40px}.save-btn .p-button{height:45px!important;width:140px;border-radius:10px}.p-sidebar-footer{padding:0}\n"] }]
|
|
1494
1521
|
}], ctorParameters: () => [{ type: DocumentUploadService }, { type: DocumentHttpService }, { type: DocumentQuery }, { type: DocumentStore }], propDecorators: { onRefresh: [{
|
|
1495
1522
|
type: Output
|
|
1496
1523
|
}], contextId: [{
|
|
@@ -1640,11 +1667,11 @@ class DocumentContainerComponent {
|
|
|
1640
1667
|
this.subscription.unsubscribe();
|
|
1641
1668
|
}
|
|
1642
1669
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentContainerComponent, deps: [{ token: DocumentService }, { token: DocumentQuery }, { token: DocumentHttpService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1643
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: DocumentContainerComponent, isStandalone: false, selector: "lib-document-container", inputs: { contextId: "contextId", showFolderList: "showFolderList", isUploadButtonVisible: "isUploadButtonVisible", showSummaryAndNotes: "showSummaryAndNotes" }, ngImport: i0, template: "<div class=\"grid m-0\">\
|
|
1670
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: DocumentContainerComponent, isStandalone: false, selector: "lib-document-container", inputs: { contextId: "contextId", showFolderList: "showFolderList", isUploadButtonVisible: "isUploadButtonVisible", showSummaryAndNotes: "showSummaryAndNotes" }, ngImport: i0, template: "<div class=\"grid m-0\">\n <div class=\"col-12 md:col-12 lg:col-12 py-0 p-0\">\n @if(showFolderList){\n <lib-folder-container [documentList]=\"documentList\" [folderList]=\"folderList\" [contextId]=\"contextId\"></lib-folder-container>\n }\n <lib-document-list [documentList]=\"documentList\" [contextId]=\"contextId\" [isUploadButtonVisible]=\"isUploadButtonVisible\" [showSummaryAndNotes]=\"showSummaryAndNotes\" (onRefresh)=\"fetchFolder()\">\n <ng-content></ng-content>\n </lib-document-list>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "component", type: FolderContainerComponent, selector: "lib-folder-container", inputs: ["documentList", "folderList", "contextId"] }, { kind: "component", type: DocumentListComponent, selector: "lib-document-list", inputs: ["contextId", "isUploadButtonVisible", "showSummaryAndNotes", "documentList"], outputs: ["onRefresh"] }] });
|
|
1644
1671
|
}
|
|
1645
1672
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentContainerComponent, decorators: [{
|
|
1646
1673
|
type: Component,
|
|
1647
|
-
args: [{ selector: 'lib-document-container', standalone: false, template: "<div class=\"grid m-0\">\
|
|
1674
|
+
args: [{ selector: 'lib-document-container', standalone: false, template: "<div class=\"grid m-0\">\n <div class=\"col-12 md:col-12 lg:col-12 py-0 p-0\">\n @if(showFolderList){\n <lib-folder-container [documentList]=\"documentList\" [folderList]=\"folderList\" [contextId]=\"contextId\"></lib-folder-container>\n }\n <lib-document-list [documentList]=\"documentList\" [contextId]=\"contextId\" [isUploadButtonVisible]=\"isUploadButtonVisible\" [showSummaryAndNotes]=\"showSummaryAndNotes\" (onRefresh)=\"fetchFolder()\">\n <ng-content></ng-content>\n </lib-document-list>\n </div>\n</div>" }]
|
|
1648
1675
|
}], ctorParameters: () => [{ type: DocumentService }, { type: DocumentQuery }, { type: DocumentHttpService }], propDecorators: { contextId: [{
|
|
1649
1676
|
type: Input
|
|
1650
1677
|
}], showFolderList: [{
|
|
@@ -1688,6 +1715,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
1688
1715
|
type: Injectable
|
|
1689
1716
|
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
1690
1717
|
|
|
1718
|
+
/**
|
|
1719
|
+
* Directive to display the document type
|
|
1720
|
+
*/
|
|
1721
|
+
class DocumentTypeDirective {
|
|
1722
|
+
documentTypeService;
|
|
1723
|
+
templateRef;
|
|
1724
|
+
vcr;
|
|
1725
|
+
/**
|
|
1726
|
+
* Creates an instance of DocumentTypeDirective.
|
|
1727
|
+
* @param documentTypeService Service to get the document type.
|
|
1728
|
+
* @param templateRef Reference to the template.
|
|
1729
|
+
* @param vcr View container reference to manage the view.
|
|
1730
|
+
*/
|
|
1731
|
+
constructor(documentTypeService, templateRef, vcr) {
|
|
1732
|
+
this.documentTypeService = documentTypeService;
|
|
1733
|
+
this.templateRef = templateRef;
|
|
1734
|
+
this.vcr = vcr;
|
|
1735
|
+
this.documentTypeService.get().subscribe((type) => {
|
|
1736
|
+
this.vcr.clear();
|
|
1737
|
+
if (type) {
|
|
1738
|
+
this.vcr.createEmbeddedView(this.templateRef, { $implicit: type });
|
|
1739
|
+
}
|
|
1740
|
+
});
|
|
1741
|
+
}
|
|
1742
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentTypeDirective, deps: [{ token: DocumentTypeService }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1743
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: DocumentTypeDirective, isStandalone: false, selector: "[docType]", ngImport: i0 });
|
|
1744
|
+
}
|
|
1745
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DocumentTypeDirective, decorators: [{
|
|
1746
|
+
type: Directive,
|
|
1747
|
+
args: [{
|
|
1748
|
+
selector: '[docType]',
|
|
1749
|
+
standalone: false
|
|
1750
|
+
}]
|
|
1751
|
+
}], ctorParameters: () => [{ type: DocumentTypeService }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }] });
|
|
1752
|
+
|
|
1691
1753
|
/**
|
|
1692
1754
|
* @module DocumentModule
|
|
1693
1755
|
*
|
|
@@ -1730,7 +1792,11 @@ class DocumentModule {
|
|
|
1730
1792
|
/**
|
|
1731
1793
|
* A component representing and allow you to view the document.
|
|
1732
1794
|
*/
|
|
1733
|
-
DocumentViewerComponent
|
|
1795
|
+
DocumentViewerComponent,
|
|
1796
|
+
/**
|
|
1797
|
+
* A directive to show the type of document.
|
|
1798
|
+
*/
|
|
1799
|
+
DocumentTypeDirective], imports: [
|
|
1734
1800
|
/**
|
|
1735
1801
|
* Angular's CommonModule is imported to access common directives like `ngIf` and `ngFor`.
|
|
1736
1802
|
*/
|
|
@@ -1950,6 +2016,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
1950
2016
|
* A component representing and allow you to view the document.
|
|
1951
2017
|
*/
|
|
1952
2018
|
DocumentViewerComponent,
|
|
2019
|
+
/**
|
|
2020
|
+
* A directive to show the type of document.
|
|
2021
|
+
*/
|
|
2022
|
+
DocumentTypeDirective
|
|
1953
2023
|
],
|
|
1954
2024
|
imports: [
|
|
1955
2025
|
/**
|