cat-documents-ng 0.2.36 → 0.2.38
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/Shared/constant/SHARED.d.ts +14 -0
- package/Shared/constant/URLS.d.ts +1 -0
- package/fesm2022/cat-documents-ng.mjs +246 -9
- package/fesm2022/cat-documents-ng.mjs.map +1 -1
- package/lib/document/components/document-history/document-history.component.d.ts +43 -0
- package/lib/document/components/document-viewer/document-viewer.component.d.ts +16 -0
- package/lib/document/document.module.d.ts +30 -29
- package/lib/document/models/document-category.model.d.ts +8 -4
- package/lib/document/models/document-history.model.d.ts +60 -0
- package/lib/document/services/document-history-style.service.d.ts +29 -0
- package/lib/document/services/document-http.service.d.ts +2 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Injectable, EventEmitter, Output, Input, Component, ViewChild, ViewEncapsulation, Directive, NgModule, APP_INITIALIZER } from '@angular/core';
|
|
3
3
|
import * as i5 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
|
-
import { firstValueFrom, tap, EMPTY, catchError, throwError, combineLatest, Subscription } from 'rxjs';
|
|
5
|
+
import { firstValueFrom, tap, EMPTY, catchError, throwError, of, combineLatest, 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';
|
|
@@ -34,13 +34,14 @@ import * as i8$1 from 'primeng/progressbar';
|
|
|
34
34
|
import { ProgressBarModule } from 'primeng/progressbar';
|
|
35
35
|
import * as i4 from 'ng2-pdf-viewer';
|
|
36
36
|
import { PdfViewerModule } from 'ng2-pdf-viewer';
|
|
37
|
+
import * as i3$1 from 'primeng/accordion';
|
|
38
|
+
import { AccordionModule } from 'primeng/accordion';
|
|
37
39
|
import * as i7$1 from 'primeng/badge';
|
|
38
40
|
import { BadgeModule } from 'primeng/badge';
|
|
39
41
|
import * as i8$2 from 'primeng/menu';
|
|
40
42
|
import { MenuModule } from 'primeng/menu';
|
|
41
43
|
import * as i9$1 from 'primeng/card';
|
|
42
44
|
import { CardModule } from 'primeng/card';
|
|
43
|
-
import { AccordionModule } from 'primeng/accordion';
|
|
44
45
|
import { ListboxModule } from 'primeng/listbox';
|
|
45
46
|
import { TimelineModule } from 'primeng/timeline';
|
|
46
47
|
import { CheckboxModule } from 'primeng/checkbox';
|
|
@@ -366,6 +367,7 @@ class SHARED {
|
|
|
366
367
|
static UPLOADED_STATUS = 'uploaded';
|
|
367
368
|
static REVIEWING_STATUS = 'reviewing';
|
|
368
369
|
static REJECTED_STATUS = 'rejected';
|
|
370
|
+
static REQUESTED_STATUS = 'document requested';
|
|
369
371
|
// Status class constants
|
|
370
372
|
static STATUS_PENDING_CLASS = 'status-pending';
|
|
371
373
|
static STATUS_APPROVED_CLASS = 'status-approved';
|
|
@@ -380,6 +382,23 @@ class SHARED {
|
|
|
380
382
|
static ICON_EYE = 'pi pi-eye';
|
|
381
383
|
static ICON_TIMES = 'pi pi-times';
|
|
382
384
|
static ICON_CLOCK = 'pi pi-clock';
|
|
385
|
+
// Text color constants
|
|
386
|
+
static TEXT_COLOR_GREEN = 'text-green-600';
|
|
387
|
+
static TEXT_COLOR_RED = 'text-red-600';
|
|
388
|
+
static TEXT_COLOR_GRAY = 'text-gray-600';
|
|
389
|
+
// Background color constants
|
|
390
|
+
static BG_COLOR_GREEN = 'bg-green-50';
|
|
391
|
+
static BG_COLOR_RED = 'bg-red-50';
|
|
392
|
+
static BG_COLOR_GRAY = 'bg-gray-50';
|
|
393
|
+
// Border color constants
|
|
394
|
+
static BORDER_COLOR_GREEN = 'border-green-200';
|
|
395
|
+
static BORDER_COLOR_RED = 'border-red-200';
|
|
396
|
+
static BORDER_COLOR_GRAY = 'border-gray-200';
|
|
397
|
+
// Icon background color constants
|
|
398
|
+
static ICON_BG_GREEN = 'icon-bg-green';
|
|
399
|
+
static ICON_BG_RED = 'icon-bg-red';
|
|
400
|
+
static ICON_BG_BLUE = 'icon-bg-blue';
|
|
401
|
+
static ICON_BG_GRAY = 'icon-bg-gray';
|
|
383
402
|
// File type icons
|
|
384
403
|
static ICON_FILE_PDF = 'pi pi-file-pdf';
|
|
385
404
|
static ICON_IMAGE = 'pi pi-image';
|
|
@@ -917,6 +936,7 @@ class URLS {
|
|
|
917
936
|
static CONTEXT_ID = "&contextId=";
|
|
918
937
|
static GETALL = "documents/getAllByContextId";
|
|
919
938
|
static DOCUMENT_LIST = "list";
|
|
939
|
+
static DOCUMENT_HISTORY = "documents/getDocumentHistoryByDocumentId/";
|
|
920
940
|
}
|
|
921
941
|
|
|
922
942
|
/**
|
|
@@ -1421,6 +1441,12 @@ class DocumentHttpService {
|
|
|
1421
1441
|
return throwError(() => new Error(error));
|
|
1422
1442
|
}));
|
|
1423
1443
|
}
|
|
1444
|
+
getDocumentHistory(documentId) {
|
|
1445
|
+
if (!documentId) {
|
|
1446
|
+
return of([]);
|
|
1447
|
+
}
|
|
1448
|
+
return this.http.get(`${this.apiUrl}${URLS.DOCUMENT_HISTORY}${documentId}`);
|
|
1449
|
+
}
|
|
1424
1450
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentHttpService, deps: [{ token: DocumentStore }, { token: i2.HttpClient }, { token: AppConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1425
1451
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentHttpService, providedIn: 'root' });
|
|
1426
1452
|
}
|
|
@@ -2579,6 +2605,171 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
2579
2605
|
args: ['fileUploader']
|
|
2580
2606
|
}] } });
|
|
2581
2607
|
|
|
2608
|
+
/**
|
|
2609
|
+
* Service for handling document history styling logic
|
|
2610
|
+
*/
|
|
2611
|
+
class DocumentHistoryStyleService {
|
|
2612
|
+
constructor() { }
|
|
2613
|
+
/**
|
|
2614
|
+
* Get the appropriate icon class based on the action label
|
|
2615
|
+
*/
|
|
2616
|
+
getActionIcon(label) {
|
|
2617
|
+
switch (label.toLowerCase()) {
|
|
2618
|
+
case SHARED.UPLOADED_STATUS:
|
|
2619
|
+
return SHARED.ICON_CLOUD_UPLOAD;
|
|
2620
|
+
case SHARED.REJECTED_STATUS:
|
|
2621
|
+
return SHARED.ICON_TIMES;
|
|
2622
|
+
case SHARED.APPROVED_STATUS:
|
|
2623
|
+
return SHARED.ICON_CHECK;
|
|
2624
|
+
case SHARED.REQUESTED_STATUS:
|
|
2625
|
+
return SHARED.ICON_FILE;
|
|
2626
|
+
default:
|
|
2627
|
+
return SHARED.ICON_FILE;
|
|
2628
|
+
}
|
|
2629
|
+
}
|
|
2630
|
+
/**
|
|
2631
|
+
* Get the appropriate color class based on the action label
|
|
2632
|
+
*/
|
|
2633
|
+
getActionColor(label) {
|
|
2634
|
+
switch (label.toLowerCase()) {
|
|
2635
|
+
case SHARED.UPLOADED_STATUS:
|
|
2636
|
+
return SHARED.TEXT_COLOR_GREEN;
|
|
2637
|
+
case SHARED.REJECTED_STATUS:
|
|
2638
|
+
return SHARED.TEXT_COLOR_RED;
|
|
2639
|
+
case SHARED.APPROVED_STATUS:
|
|
2640
|
+
return SHARED.TEXT_COLOR_GREEN;
|
|
2641
|
+
case SHARED.REQUESTED_STATUS:
|
|
2642
|
+
return SHARED.TEXT_COLOR_GRAY;
|
|
2643
|
+
default:
|
|
2644
|
+
return SHARED.TEXT_COLOR_GRAY;
|
|
2645
|
+
}
|
|
2646
|
+
}
|
|
2647
|
+
/**
|
|
2648
|
+
* Get the appropriate background color class based on the action label
|
|
2649
|
+
*/
|
|
2650
|
+
getActionBgColor(label) {
|
|
2651
|
+
switch (label.toLowerCase()) {
|
|
2652
|
+
case SHARED.UPLOADED_STATUS:
|
|
2653
|
+
return SHARED.BG_COLOR_GREEN;
|
|
2654
|
+
case SHARED.REJECTED_STATUS:
|
|
2655
|
+
return SHARED.BG_COLOR_RED;
|
|
2656
|
+
case SHARED.APPROVED_STATUS:
|
|
2657
|
+
return SHARED.BG_COLOR_GREEN;
|
|
2658
|
+
case SHARED.REQUESTED_STATUS:
|
|
2659
|
+
return SHARED.BG_COLOR_GRAY;
|
|
2660
|
+
default:
|
|
2661
|
+
return SHARED.BG_COLOR_GRAY;
|
|
2662
|
+
}
|
|
2663
|
+
}
|
|
2664
|
+
/**
|
|
2665
|
+
* Get the appropriate border color class based on the action label
|
|
2666
|
+
*/
|
|
2667
|
+
getActionBorderColor(label) {
|
|
2668
|
+
switch (label.toLowerCase()) {
|
|
2669
|
+
case SHARED.UPLOADED_STATUS:
|
|
2670
|
+
return SHARED.BORDER_COLOR_GREEN;
|
|
2671
|
+
case SHARED.REJECTED_STATUS:
|
|
2672
|
+
return SHARED.BORDER_COLOR_RED;
|
|
2673
|
+
case SHARED.APPROVED_STATUS:
|
|
2674
|
+
return SHARED.BORDER_COLOR_GREEN;
|
|
2675
|
+
case SHARED.REQUESTED_STATUS:
|
|
2676
|
+
return SHARED.BORDER_COLOR_GRAY;
|
|
2677
|
+
default:
|
|
2678
|
+
return SHARED.BORDER_COLOR_GRAY;
|
|
2679
|
+
}
|
|
2680
|
+
}
|
|
2681
|
+
/**
|
|
2682
|
+
* Get the appropriate icon background color class based on the action label
|
|
2683
|
+
*/
|
|
2684
|
+
getActionIconBgColor(label) {
|
|
2685
|
+
switch (label.toLowerCase()) {
|
|
2686
|
+
case SHARED.UPLOADED_STATUS:
|
|
2687
|
+
return SHARED.ICON_BG_GREEN;
|
|
2688
|
+
case SHARED.REJECTED_STATUS:
|
|
2689
|
+
return SHARED.ICON_BG_RED;
|
|
2690
|
+
case SHARED.APPROVED_STATUS:
|
|
2691
|
+
return SHARED.ICON_BG_GREEN;
|
|
2692
|
+
case SHARED.REQUESTED_STATUS:
|
|
2693
|
+
return SHARED.ICON_BG_BLUE;
|
|
2694
|
+
default:
|
|
2695
|
+
return SHARED.ICON_BG_GRAY;
|
|
2696
|
+
}
|
|
2697
|
+
}
|
|
2698
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentHistoryStyleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2699
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentHistoryStyleService, providedIn: 'root' });
|
|
2700
|
+
}
|
|
2701
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentHistoryStyleService, decorators: [{
|
|
2702
|
+
type: Injectable,
|
|
2703
|
+
args: [{
|
|
2704
|
+
providedIn: 'root'
|
|
2705
|
+
}]
|
|
2706
|
+
}], ctorParameters: () => [] });
|
|
2707
|
+
|
|
2708
|
+
/**
|
|
2709
|
+
* Component for displaying document history in a timeline format.
|
|
2710
|
+
*/
|
|
2711
|
+
class DocumentHistoryComponent {
|
|
2712
|
+
documentHistoryStyleService;
|
|
2713
|
+
/**
|
|
2714
|
+
* Input data for document history sections
|
|
2715
|
+
*/
|
|
2716
|
+
historyData = [];
|
|
2717
|
+
/**
|
|
2718
|
+
* Whether to show the history component
|
|
2719
|
+
*/
|
|
2720
|
+
showHistory = false;
|
|
2721
|
+
constructor(documentHistoryStyleService) {
|
|
2722
|
+
this.documentHistoryStyleService = documentHistoryStyleService;
|
|
2723
|
+
}
|
|
2724
|
+
ngOnInit() { }
|
|
2725
|
+
/**
|
|
2726
|
+
* Process history data to add computed properties
|
|
2727
|
+
*/
|
|
2728
|
+
get processedHistoryData() {
|
|
2729
|
+
return this.historyData.map(section => ({
|
|
2730
|
+
...section,
|
|
2731
|
+
list: section.list.map(item => ({
|
|
2732
|
+
...item,
|
|
2733
|
+
actionIcon: this.documentHistoryStyleService.getActionIcon(item.label),
|
|
2734
|
+
actionColor: this.documentHistoryStyleService.getActionColor(item.label),
|
|
2735
|
+
actionBgColor: this.documentHistoryStyleService.getActionBgColor(item.label),
|
|
2736
|
+
actionBorderColor: this.documentHistoryStyleService.getActionBorderColor(item.label),
|
|
2737
|
+
actionIconBgColor: this.documentHistoryStyleService.getActionIconBgColor(item.label)
|
|
2738
|
+
}))
|
|
2739
|
+
}));
|
|
2740
|
+
}
|
|
2741
|
+
/**
|
|
2742
|
+
* Downloads a document when clicked
|
|
2743
|
+
* @param documentUrl - The URL of the document to download
|
|
2744
|
+
* @param docName - The name of the document
|
|
2745
|
+
*/
|
|
2746
|
+
downloadDocument(documentUrl, docName) {
|
|
2747
|
+
if (!documentUrl) {
|
|
2748
|
+
console.warn('No document URL provided for download');
|
|
2749
|
+
return;
|
|
2750
|
+
}
|
|
2751
|
+
// Create a temporary anchor element to trigger download
|
|
2752
|
+
const link = document.createElement('a');
|
|
2753
|
+
link.href = documentUrl;
|
|
2754
|
+
link.download = docName || 'document';
|
|
2755
|
+
link.target = '_blank';
|
|
2756
|
+
// Append to body, click, and remove
|
|
2757
|
+
document.body.appendChild(link);
|
|
2758
|
+
link.click();
|
|
2759
|
+
document.body.removeChild(link);
|
|
2760
|
+
}
|
|
2761
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentHistoryComponent, deps: [{ token: DocumentHistoryStyleService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2762
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DocumentHistoryComponent, isStandalone: false, selector: "document-history", inputs: { historyData: "historyData", showHistory: "showHistory" }, ngImport: i0, template: "<div class=\"document-history-container\" *ngIf=\"showHistory && historyData.length > 0\">\n <div class=\"history-sections\">\n <div class=\"history-section\" *ngFor=\"let section of processedHistoryData\">\n <div *ngIf=\"section.header === 'Initial Request'\" class=\"initial-request-section\">\n <p-accordion>\n <p-accordionTab [header]=\"section.header\">\n <div class=\"history-timeline\">\n <div class=\"timeline-item\" *ngFor=\"let item of section.list; let i = index\">\n <div class=\"timeline-card\" [ngClass]=\"item.actionBgColor\">\n <div class=\"card-header\">\n <div class=\"action-info\">\n <div class=\"action-icon\" [ngClass]=\"item.actionIconBgColor\">\n <i [class]=\"item.actionIcon\"></i>\n </div>\n <span class=\"action-label\" [ngClass]=\"item.actionColor\">\n {{ item.label }}\n </span>\n </div>\n <div class=\"timestamp\">\n {{ item.dateTime }}\n </div>\n </div>\n \n <!-- Description -->\n <div class=\"card-description\" *ngIf=\"item.requestDescription\">\n <p class=\"description-text\">{{ item.requestDescription ?? 'No Request' }}</p>\n </div>\n \n <!-- Document details if URL exists -->\n <div class=\"document-details\" *ngIf=\"item.documentUrl\">\n <div class=\"document-card\">\n <div class=\"document-info\">\n <div class=\"document-icon\">\n <i class=\"pi pi-file\"></i>\n </div>\n <div class=\"document-text\">\n <div class=\"document-title\">Document</div>\n <div class=\"document-filename clickable\" \n (click)=\"downloadDocument(item.documentUrl!, item.docName)\"\n title=\"Click to download\">\n {{ item.docName || 'Document' }}\n </div>\n </div>\n </div>\n <div class=\"document-actions\">\n <button class=\"action-btn download-btn\" \n title=\"Download\"\n (click)=\"downloadDocument(item.documentUrl!, item.docName)\">\n <i class=\"pi pi-download\"></i>\n </button>\n </div>\n </div>\n </div>\n \n <!-- User information -->\n <div class=\"user-info\">\n <span class=\"user-name\">{{ item.userName }}</span>\n <span class=\"user-role\">({{ item.userRole }})</span>\n </div>\n </div>\n </div>\n </div>\n </p-accordionTab>\n </p-accordion>\n </div>\n \n <!-- Document History as regular timeline -->\n <div *ngIf=\"section.header !== 'Initial Request'\" class=\"document-history-section\">\n <div class=\"section-header\" *ngIf=\"section.header\">\n <h4 class=\"section-title\">{{ section.header }}</h4>\n </div>\n \n <div class=\"history-timeline\">\n <div class=\"timeline-item\" *ngFor=\"let item of section.list; let i = index\">\n <div class=\"timeline-card\" [ngClass]=\"item.actionBgColor\">\n <!-- Header with icon and timestamp -->\n <div class=\"card-header\">\n <div class=\"action-info\">\n <div class=\"action-icon\" [ngClass]=\"item.actionIconBgColor\">\n <i [class]=\"item.actionIcon\"></i>\n </div>\n <span class=\"action-label\" [ngClass]=\"item.actionColor\">\n {{ item.label }}\n </span>\n </div>\n <div class=\"timestamp\">\n {{ item.dateTime }}\n </div>\n </div>\n \n <!-- Description -->\n <div class=\"card-description\" *ngIf=\"item.requestDescription\">\n <p class=\"description-text\">{{ item.requestDescription }}</p>\n </div>\n \n <!-- Document details if URL exists -->\n <div class=\"document-details\" *ngIf=\"item.documentUrl\">\n <div class=\"document-card\">\n <div class=\"document-info\">\n <div class=\"document-icon\">\n <i class=\"pi pi-file\"></i>\n </div>\n <div class=\"document-text\">\n <div class=\"document-title\">Document</div>\n <div class=\"document-filename clickable\" \n (click)=\"downloadDocument(item.documentUrl!, item.docName)\"\n title=\"Click to download\">\n {{ item.docName || 'Document' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <!-- User information -->\n <div class=\"user-info\">\n <span class=\"user-name\">{{ item.userName }}</span>\n <span class=\"user-role\">({{ item.userRole }})</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>", styles: [".document-history-container{padding:1rem;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;max-height:70vh;overflow-y:auto}.document-history-container .history-header{margin-bottom:1.5rem}.document-history-container .history-header .history-title{font-size:1.5rem;font-weight:600;color:#374151;margin:0}.document-history-container .history-sections .history-section{margin-bottom:2rem}.document-history-container .history-sections .history-section .initial-request-section{margin-bottom:1.5rem}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-header .p-accordion-header-link{background:#fff;border:1px solid #3b82f6;border-radius:8px;padding:1rem 1.5rem;font-weight:600;color:#1f2937;font-size:1rem}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-header .p-accordion-header-link:focus{box-shadow:none;border-color:#3b82f6}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-header .p-accordion-header-link .p-accordion-header-icon{color:#6b7280;font-size:.875rem}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-header.p-highlight .p-accordion-header-link{background:#fff;border-color:#3b82f6}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content{background:#fff;border:1px solid #e5e7eb;border-top:none;border-radius:0 0 8px 8px;padding:1.5rem}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item{margin-bottom:0}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:1rem;border-right:3px solid #3b82f6}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .card-header .action-info .action-icon{background:#7d879b;color:#fff;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .card-header .action-info .action-icon i{font-size:14px}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .card-header .action-info .action-label{color:#1f2937;font-weight:600}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .card-header .timestamp{color:#6b7280;font-size:.75rem}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .card-description .description-text{color:#374151;line-height:1.5}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .user-info .user-name{color:#1f2937;font-weight:500}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .user-info .user-role{color:#6b7280}.document-history-container .history-sections .history-section .document-history-section .section-header{margin-bottom:1rem}.document-history-container .history-sections .history-section .document-history-section .section-header .section-title{font-size:1.25rem;font-weight:500;color:#374151;margin:0}.document-history-container .history-sections .history-section .history-timeline .timeline-item{margin-bottom:1rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card{border-radius:8px;border:1px solid;padding:1rem;position:relative;border-right:3px solid}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card.bg-green-50{background-color:#f0fdf4;border-color:#bbf7d0;border-right-color:#10b981}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card.bg-red-50{background-color:#fef2f2;border-color:#fecaca;border-right-color:#ef4444}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card.bg-blue-50{background-color:#eff6ff;border-color:#bfdbfe;border-right-color:#3b82f6}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card.bg-gray-50{background-color:#f8fafc;border-color:#e2e8f0;border-right-color:#6b7280}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-header .action-info{display:flex;align-items:center;gap:.5rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-header .action-info .action-icon{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-header .action-info .action-icon i{font-size:14px}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-header .action-info .action-label{font-weight:600;font-size:.875rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-header .timestamp{font-size:.75rem;color:#6b7280}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-description{margin-bottom:.75rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-description .description-text{margin:0;color:#374151;font-size:.875rem;line-height:1.4}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details{margin-bottom:.75rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card{background:#fff;border-radius:6px;padding:.75rem;display:flex;justify-content:space-between;align-items:center;border:1px solid #e5e7eb}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-info{display:flex;align-items:center;gap:.5rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-info .document-icon{color:#3b82f6;font-size:1.25rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-info .document-text .document-title{font-weight:500;color:#374151;font-size:.875rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-info .document-text .document-filename{color:#3b82f6;font-size:.75rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-info .document-text .document-filename.clickable{cursor:pointer;text-decoration:underline}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-info .document-text .document-filename.clickable:hover{color:#2563eb;text-decoration:none}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions{display:flex;gap:.25rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn{width:24px;height:24px;border:none;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:.75rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn.edit-btn{background:#3b82f6;color:#fff}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn.edit-btn:hover{background:#2563eb}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn.delete-btn{background:#ef4444;color:#fff}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn.delete-btn:hover{background:#dc2626}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn.download-btn{background:#10b981;color:#fff}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn.download-btn:hover{background:#059669}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .user-info{text-align:right;font-size:.75rem;color:#374151}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .user-info .user-name{font-weight:500}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .user-info .user-role{color:#6b7280}.text-green-600{color:#059669}.text-red-600{color:#dc2626}.text-blue-600{color:#2563eb}.text-gray-600{color:#4b5563}.bg-green-50{background-color:#f0fdf4}.bg-red-50{background-color:#fef2f2}.bg-blue-50{background-color:#eff6ff}.bg-gray-50{background-color:#f8fafc}.border-green-200{border-color:#bbf7d0}.border-red-200{border-color:#fecaca}.border-blue-200{border-color:#bfdbfe}.border-gray-200{border-color:#e2e8f0}.icon-bg-green{background-color:#10b981}.icon-bg-red{background-color:#ef4444}.icon-bg-blue{background-color:#3b82f6}.icon-bg-gray{background-color:#6b7280}\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: "component", type: i3$1.Accordion, selector: "p-accordion", inputs: ["multiple", "style", "styleClass", "expandIcon", "collapseIcon", "activeIndex", "selectOnFocus", "headerAriaLevel"], outputs: ["onClose", "onOpen", "activeIndexChange"] }, { kind: "component", type: i3$1.AccordionTab, selector: "p-accordionTab", inputs: ["id", "header", "headerStyle", "tabStyle", "contentStyle", "tabStyleClass", "headerStyleClass", "contentStyleClass", "disabled", "cache", "transitionOptions", "iconPos", "selected", "headerAriaLevel"], outputs: ["selectedChange"] }] });
|
|
2763
|
+
}
|
|
2764
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentHistoryComponent, decorators: [{
|
|
2765
|
+
type: Component,
|
|
2766
|
+
args: [{ selector: 'document-history', standalone: false, template: "<div class=\"document-history-container\" *ngIf=\"showHistory && historyData.length > 0\">\n <div class=\"history-sections\">\n <div class=\"history-section\" *ngFor=\"let section of processedHistoryData\">\n <div *ngIf=\"section.header === 'Initial Request'\" class=\"initial-request-section\">\n <p-accordion>\n <p-accordionTab [header]=\"section.header\">\n <div class=\"history-timeline\">\n <div class=\"timeline-item\" *ngFor=\"let item of section.list; let i = index\">\n <div class=\"timeline-card\" [ngClass]=\"item.actionBgColor\">\n <div class=\"card-header\">\n <div class=\"action-info\">\n <div class=\"action-icon\" [ngClass]=\"item.actionIconBgColor\">\n <i [class]=\"item.actionIcon\"></i>\n </div>\n <span class=\"action-label\" [ngClass]=\"item.actionColor\">\n {{ item.label }}\n </span>\n </div>\n <div class=\"timestamp\">\n {{ item.dateTime }}\n </div>\n </div>\n \n <!-- Description -->\n <div class=\"card-description\" *ngIf=\"item.requestDescription\">\n <p class=\"description-text\">{{ item.requestDescription ?? 'No Request' }}</p>\n </div>\n \n <!-- Document details if URL exists -->\n <div class=\"document-details\" *ngIf=\"item.documentUrl\">\n <div class=\"document-card\">\n <div class=\"document-info\">\n <div class=\"document-icon\">\n <i class=\"pi pi-file\"></i>\n </div>\n <div class=\"document-text\">\n <div class=\"document-title\">Document</div>\n <div class=\"document-filename clickable\" \n (click)=\"downloadDocument(item.documentUrl!, item.docName)\"\n title=\"Click to download\">\n {{ item.docName || 'Document' }}\n </div>\n </div>\n </div>\n <div class=\"document-actions\">\n <button class=\"action-btn download-btn\" \n title=\"Download\"\n (click)=\"downloadDocument(item.documentUrl!, item.docName)\">\n <i class=\"pi pi-download\"></i>\n </button>\n </div>\n </div>\n </div>\n \n <!-- User information -->\n <div class=\"user-info\">\n <span class=\"user-name\">{{ item.userName }}</span>\n <span class=\"user-role\">({{ item.userRole }})</span>\n </div>\n </div>\n </div>\n </div>\n </p-accordionTab>\n </p-accordion>\n </div>\n \n <!-- Document History as regular timeline -->\n <div *ngIf=\"section.header !== 'Initial Request'\" class=\"document-history-section\">\n <div class=\"section-header\" *ngIf=\"section.header\">\n <h4 class=\"section-title\">{{ section.header }}</h4>\n </div>\n \n <div class=\"history-timeline\">\n <div class=\"timeline-item\" *ngFor=\"let item of section.list; let i = index\">\n <div class=\"timeline-card\" [ngClass]=\"item.actionBgColor\">\n <!-- Header with icon and timestamp -->\n <div class=\"card-header\">\n <div class=\"action-info\">\n <div class=\"action-icon\" [ngClass]=\"item.actionIconBgColor\">\n <i [class]=\"item.actionIcon\"></i>\n </div>\n <span class=\"action-label\" [ngClass]=\"item.actionColor\">\n {{ item.label }}\n </span>\n </div>\n <div class=\"timestamp\">\n {{ item.dateTime }}\n </div>\n </div>\n \n <!-- Description -->\n <div class=\"card-description\" *ngIf=\"item.requestDescription\">\n <p class=\"description-text\">{{ item.requestDescription }}</p>\n </div>\n \n <!-- Document details if URL exists -->\n <div class=\"document-details\" *ngIf=\"item.documentUrl\">\n <div class=\"document-card\">\n <div class=\"document-info\">\n <div class=\"document-icon\">\n <i class=\"pi pi-file\"></i>\n </div>\n <div class=\"document-text\">\n <div class=\"document-title\">Document</div>\n <div class=\"document-filename clickable\" \n (click)=\"downloadDocument(item.documentUrl!, item.docName)\"\n title=\"Click to download\">\n {{ item.docName || 'Document' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <!-- User information -->\n <div class=\"user-info\">\n <span class=\"user-name\">{{ item.userName }}</span>\n <span class=\"user-role\">({{ item.userRole }})</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>", styles: [".document-history-container{padding:1rem;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;max-height:70vh;overflow-y:auto}.document-history-container .history-header{margin-bottom:1.5rem}.document-history-container .history-header .history-title{font-size:1.5rem;font-weight:600;color:#374151;margin:0}.document-history-container .history-sections .history-section{margin-bottom:2rem}.document-history-container .history-sections .history-section .initial-request-section{margin-bottom:1.5rem}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-header .p-accordion-header-link{background:#fff;border:1px solid #3b82f6;border-radius:8px;padding:1rem 1.5rem;font-weight:600;color:#1f2937;font-size:1rem}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-header .p-accordion-header-link:focus{box-shadow:none;border-color:#3b82f6}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-header .p-accordion-header-link .p-accordion-header-icon{color:#6b7280;font-size:.875rem}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-header.p-highlight .p-accordion-header-link{background:#fff;border-color:#3b82f6}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content{background:#fff;border:1px solid #e5e7eb;border-top:none;border-radius:0 0 8px 8px;padding:1.5rem}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item{margin-bottom:0}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:1rem;border-right:3px solid #3b82f6}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .card-header .action-info .action-icon{background:#7d879b;color:#fff;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .card-header .action-info .action-icon i{font-size:14px}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .card-header .action-info .action-label{color:#1f2937;font-weight:600}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .card-header .timestamp{color:#6b7280;font-size:.75rem}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .card-description .description-text{color:#374151;line-height:1.5}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .user-info .user-name{color:#1f2937;font-weight:500}.document-history-container .history-sections .history-section .initial-request-section ::ng-deep .p-accordion .p-accordion-content .history-timeline .timeline-item .timeline-card .user-info .user-role{color:#6b7280}.document-history-container .history-sections .history-section .document-history-section .section-header{margin-bottom:1rem}.document-history-container .history-sections .history-section .document-history-section .section-header .section-title{font-size:1.25rem;font-weight:500;color:#374151;margin:0}.document-history-container .history-sections .history-section .history-timeline .timeline-item{margin-bottom:1rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card{border-radius:8px;border:1px solid;padding:1rem;position:relative;border-right:3px solid}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card.bg-green-50{background-color:#f0fdf4;border-color:#bbf7d0;border-right-color:#10b981}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card.bg-red-50{background-color:#fef2f2;border-color:#fecaca;border-right-color:#ef4444}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card.bg-blue-50{background-color:#eff6ff;border-color:#bfdbfe;border-right-color:#3b82f6}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card.bg-gray-50{background-color:#f8fafc;border-color:#e2e8f0;border-right-color:#6b7280}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-header .action-info{display:flex;align-items:center;gap:.5rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-header .action-info .action-icon{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-header .action-info .action-icon i{font-size:14px}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-header .action-info .action-label{font-weight:600;font-size:.875rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-header .timestamp{font-size:.75rem;color:#6b7280}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-description{margin-bottom:.75rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .card-description .description-text{margin:0;color:#374151;font-size:.875rem;line-height:1.4}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details{margin-bottom:.75rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card{background:#fff;border-radius:6px;padding:.75rem;display:flex;justify-content:space-between;align-items:center;border:1px solid #e5e7eb}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-info{display:flex;align-items:center;gap:.5rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-info .document-icon{color:#3b82f6;font-size:1.25rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-info .document-text .document-title{font-weight:500;color:#374151;font-size:.875rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-info .document-text .document-filename{color:#3b82f6;font-size:.75rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-info .document-text .document-filename.clickable{cursor:pointer;text-decoration:underline}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-info .document-text .document-filename.clickable:hover{color:#2563eb;text-decoration:none}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions{display:flex;gap:.25rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn{width:24px;height:24px;border:none;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:.75rem}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn.edit-btn{background:#3b82f6;color:#fff}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn.edit-btn:hover{background:#2563eb}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn.delete-btn{background:#ef4444;color:#fff}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn.delete-btn:hover{background:#dc2626}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn.download-btn{background:#10b981;color:#fff}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .document-details .document-card .document-actions .action-btn.download-btn:hover{background:#059669}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .user-info{text-align:right;font-size:.75rem;color:#374151}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .user-info .user-name{font-weight:500}.document-history-container .history-sections .history-section .history-timeline .timeline-item .timeline-card .user-info .user-role{color:#6b7280}.text-green-600{color:#059669}.text-red-600{color:#dc2626}.text-blue-600{color:#2563eb}.text-gray-600{color:#4b5563}.bg-green-50{background-color:#f0fdf4}.bg-red-50{background-color:#fef2f2}.bg-blue-50{background-color:#eff6ff}.bg-gray-50{background-color:#f8fafc}.border-green-200{border-color:#bbf7d0}.border-red-200{border-color:#fecaca}.border-blue-200{border-color:#bfdbfe}.border-gray-200{border-color:#e2e8f0}.icon-bg-green{background-color:#10b981}.icon-bg-red{background-color:#ef4444}.icon-bg-blue{background-color:#3b82f6}.icon-bg-gray{background-color:#6b7280}\n"] }]
|
|
2767
|
+
}], ctorParameters: () => [{ type: DocumentHistoryStyleService }], propDecorators: { historyData: [{
|
|
2768
|
+
type: Input
|
|
2769
|
+
}], showHistory: [{
|
|
2770
|
+
type: Input
|
|
2771
|
+
}] } });
|
|
2772
|
+
|
|
2582
2773
|
/**
|
|
2583
2774
|
* Description placeholder
|
|
2584
2775
|
* @class LinkedDocumentComponent
|
|
@@ -2666,6 +2857,16 @@ class DocumentViewerComponent {
|
|
|
2666
2857
|
* @type {any}
|
|
2667
2858
|
*/
|
|
2668
2859
|
alertData;
|
|
2860
|
+
/**
|
|
2861
|
+
* Document history data
|
|
2862
|
+
* @type {DocumentHistorySection[]}
|
|
2863
|
+
*/
|
|
2864
|
+
documentHistory = [];
|
|
2865
|
+
/**
|
|
2866
|
+
* Whether to show document history
|
|
2867
|
+
* @type {boolean}
|
|
2868
|
+
*/
|
|
2869
|
+
showDocumentHistory = false;
|
|
2669
2870
|
/**
|
|
2670
2871
|
* Holds the subscription to manage observable cleanup.
|
|
2671
2872
|
* @private
|
|
@@ -2689,12 +2890,32 @@ class DocumentViewerComponent {
|
|
|
2689
2890
|
if (this.selectedDocument) {
|
|
2690
2891
|
this.documentService.set(this.selectedDocument);
|
|
2691
2892
|
this.alertData = DocumentAlertList.find((res) => res.status === this.selectedDocument?.status);
|
|
2893
|
+
this.loadDocumentHistory(this.selectedDocument._id);
|
|
2692
2894
|
}
|
|
2693
2895
|
}
|
|
2694
2896
|
handleSelectedDocument(document) {
|
|
2695
2897
|
this.selectedDocument = document;
|
|
2696
2898
|
this.documentService.set(this.selectedDocument);
|
|
2697
2899
|
}
|
|
2900
|
+
/**
|
|
2901
|
+
* Loads document history data
|
|
2902
|
+
* @returns {void}
|
|
2903
|
+
*/
|
|
2904
|
+
loadDocumentHistory(documentId) {
|
|
2905
|
+
if (documentId) {
|
|
2906
|
+
this.documentHttpService.getDocumentHistory(documentId)
|
|
2907
|
+
.subscribe({
|
|
2908
|
+
next: (history) => {
|
|
2909
|
+
this.documentHistory = history;
|
|
2910
|
+
this.showDocumentHistory = true;
|
|
2911
|
+
},
|
|
2912
|
+
error: (error) => {
|
|
2913
|
+
console.error('Error loading document history:', error);
|
|
2914
|
+
this.showDocumentHistory = false;
|
|
2915
|
+
}
|
|
2916
|
+
});
|
|
2917
|
+
}
|
|
2918
|
+
}
|
|
2698
2919
|
/**
|
|
2699
2920
|
* Determines if the given content type is an image.
|
|
2700
2921
|
* @param {string | undefined} contentType - The MIME type of the content.
|
|
@@ -2707,11 +2928,11 @@ class DocumentViewerComponent {
|
|
|
2707
2928
|
this.subscription.unsubscribe();
|
|
2708
2929
|
}
|
|
2709
2930
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentViewerComponent, deps: [{ token: DocumentHttpService }, { token: DocumentHelperService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2710
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: DocumentViewerComponent, isStandalone: false, selector: "document-viewer", inputs: { selectedDocument: "selectedDocument", documentList: "documentList" }, 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-
|
|
2931
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: DocumentViewerComponent, isStandalone: false, selector: "document-viewer", inputs: { selectedDocument: "selectedDocument", documentList: "documentList" }, 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-9\">\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 && 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 }@else{\r\n <div class=\"incorrect-docType\">\r\n ContentType is incorrect.\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 \r\n <document-history \r\n [historyData]=\"documentHistory\" \r\n [showHistory]=\"showDocumentHistory\">\r\n </document-history>\r\n \r\n <ng-content></ng-content>\r\n <app-linked-document (selectedDocumentChange)=\"handleSelectedDocument($event)\" [selectedDocument]=\"selectedDocument\" [documentList]=\"documentList\"></app-linked-document>\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{width:100%;height:100%;max-height:100%!important;box-shadow:none!important}.document-viewer .p-dialog-header-close-icon{height:20px;width:20px}.document-viewer .p-dialog-header,.document-viewer .p-dialog-content{background-color:#fff;border-radius:0}.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: "component", type: i4.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"] }, { kind: "component", type: DocumentHistoryComponent, selector: "document-history", inputs: ["historyData", "showHistory"] }, { kind: "component", type: LinkedDocumentComponent, selector: "app-linked-document", inputs: ["selectedDocument", "documentList"], outputs: ["selectedDocumentChange"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
2711
2932
|
}
|
|
2712
2933
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentViewerComponent, decorators: [{
|
|
2713
2934
|
type: Component,
|
|
2714
|
-
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-
|
|
2935
|
+
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-9\">\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 && 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 }@else{\r\n <div class=\"incorrect-docType\">\r\n ContentType is incorrect.\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 \r\n <document-history \r\n [historyData]=\"documentHistory\" \r\n [showHistory]=\"showDocumentHistory\">\r\n </document-history>\r\n \r\n <ng-content></ng-content>\r\n <app-linked-document (selectedDocumentChange)=\"handleSelectedDocument($event)\" [selectedDocument]=\"selectedDocument\" [documentList]=\"documentList\"></app-linked-document>\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{width:100%;height:100%;max-height:100%!important;box-shadow:none!important}.document-viewer .p-dialog-header-close-icon{height:20px;width:20px}.document-viewer .p-dialog-header,.document-viewer .p-dialog-content{background-color:#fff;border-radius:0}.uploadedImages{width:95%;height:100%;object-fit:contain}\n"] }]
|
|
2715
2936
|
}], ctorParameters: () => [{ type: DocumentHttpService }, { type: DocumentHelperService }], propDecorators: { selectedDocument: [{
|
|
2716
2937
|
type: Input
|
|
2717
2938
|
}], documentList: [{
|
|
@@ -3088,7 +3309,13 @@ class DocumentMenuService {
|
|
|
3088
3309
|
* @returns Total number of documents
|
|
3089
3310
|
*/
|
|
3090
3311
|
getTotalDocuments(item) {
|
|
3091
|
-
|
|
3312
|
+
const status = item.status;
|
|
3313
|
+
// Handle both uppercase and lowercase keys
|
|
3314
|
+
const pending = status.Pending || status.pending || 0;
|
|
3315
|
+
const reviewing = status.Reviewing || status.reviewing || 0;
|
|
3316
|
+
const accepted = status.Accepted || status.approved || 0; // Note: approved maps to Accepted
|
|
3317
|
+
const rejected = status.Rejected || status.rejected || 0;
|
|
3318
|
+
return pending + reviewing + accepted + rejected;
|
|
3092
3319
|
}
|
|
3093
3320
|
/**
|
|
3094
3321
|
* Calculates completed documents for a menu item
|
|
@@ -3096,7 +3323,9 @@ class DocumentMenuService {
|
|
|
3096
3323
|
* @returns Number of completed documents
|
|
3097
3324
|
*/
|
|
3098
3325
|
getCompletedDocuments(item) {
|
|
3099
|
-
|
|
3326
|
+
const status = item.status;
|
|
3327
|
+
// Handle both uppercase and lowercase keys, with approved mapping to Accepted
|
|
3328
|
+
return status.Accepted || status.approved || 0;
|
|
3100
3329
|
}
|
|
3101
3330
|
/**
|
|
3102
3331
|
* Gets badge value for a menu item
|
|
@@ -3246,11 +3475,11 @@ class DocumentsMenuComponent {
|
|
|
3246
3475
|
return this.selectedMenuItemId;
|
|
3247
3476
|
}
|
|
3248
3477
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentsMenuComponent, deps: [{ token: DocumentStore }, { token: DocumentQuery }, { token: DocumentMenuService }, { token: DocumentHelperService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3249
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
3478
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: DocumentsMenuComponent, isStandalone: false, selector: "lib-documents-menu", inputs: { catagories: "catagories", applicationNumber: "applicationNumber", contextId: "contextId" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"document-sidebar-container h-full\">\n <p-card class=\"widget-menu-wrapper h-full\">\n @if(applicationNumber){\n <div class=\"flex align-items-center justify-content-between widget-menu-header-wrapper\">\n <p class=\"mb-0 application-title-wrapper\">ID - {{applicationNumber}}</p>\n <div class=\"expand-icon-wrapper\">\n <i class=\"ri-arrow-left-s-line text-primary flex align-items-center justify-content-center w-full h-full\"></i>\n </div>\n </div>\n }\n\n <div class=\"widget-menu-container\" >\n <div class=\"widget-menu-wrapper h-ful l custom-scroll\">\n <p-menu [model]=\"catagories\" styleClass=\"w-full md:w-15rem\">\n <ng-template pTemplate=\"submenuheader\" let-item>\n <span [style]=\"{\n color : '#9EA0B3'\n }\">{{ item.label }}</span>\n </ng-template>\n <ng-template pTemplate=\"item\" let-item>\n <a pRipple \n class=\"flex align-items-center p-menuitem-link\"\n [class.selected-menu-item]=\"selectedMenuItemId === item._id\"\n (click)=\"onMenuItemClick($event, item)\">\n <span [class]=\"item.icon\" class=\"text-xl\"></span>\n <span class=\"ml-2\">{{ item.label }}</span>\n <p-badge *ngIf=\"item.menuData?.shouldShowBadge\" \n class=\"ml-auto\" \n [severity]=\"item.menuData?.badgeSeverity\" \n [value]=\"item.menuData?.badgeValue\" />\n </a>\n </ng-template>\n </p-menu>\n </div>\n </div>\n </p-card>\n</div>\n\n ", styles: [".expand-icon-wrapper{border:1px solid var(--primary-color);height:24px;width:24px;border-radius:50%;background:var(--blue-bg-light)}::ng-deep .p-badge.p-badge-success{background-color:#dcfce7;color:#16a34a;font-family:inherit;font-size:12px;font-weight:400;font-style:inherit}::ng-deep .p-badge.p-badge-danger{background-color:#fee2e2;color:#dc2626;font-family:inherit;font-size:12px;font-weight:400;font-style:inherit}::ng-deep .p-badge.p-badge-warning{background-color:#fef3c7;color:#d97706;font-family:inherit;font-size:12px;font-weight:400;font-style:inherit}::ng-deep .p-menu .p-menuitem>.p-menuitem-content .p-menuitem-link{color:#1f2937}@media screen and (min-width: 768px){::ng-deep .md\\:w-15rem{width:100%!important}}::ng-deep .p-menu .p-menuitem:not(p-highlight):not(p-disabled)>.p-menuitem-content:hover{color:#06f!important;background:#0066ff1a!important;background-color:#0066ff1a!important}::ng-deep .p-menu{border:none}::ng-deep .custom-scroll{scrollbar-gutter:inherit}::ng-deep .selected-menu-item{background-color:#0066ff1a!important;color:var(--primary-color)!important;border:1px solid rgba(68,72,109,.1)!important;border-radius:10px!important}::ng-deep .selected-menu-item .text-xl{color:var(--primary-color)!important}::ng-deep .selected-menu-item span{color:var(--primary-color)!important}::ng-deep .p-panelmenu .p-panelmenu-content{border:none!important}.application-title-wrapper{color:#9ea0b3;font-weight:500}.widget-menu-wrapper{margin-top:8px}.widget-menu-header-wrapper{padding:4px 4px 4px 16px}.widget-menu-container{height:calc(100% - 38px)}.custom-scroll{overflow-y:hidden;scrollbar-gutter:stable}.custom-scroll:hover{overflow-y:auto}::ng-deep .document-sidebar-container .p-card{height:100%;box-shadow:none}::ng-deep .document-sidebar-container .p-card .p-card-content{height:100%;padding:0!important}::ng-deep .document-sidebar-container .p-card .p-card-body{height:100%;width:100%;padding:12px 8px;border-radius:10px;border:1px solid #e5e7eb}::ng-deep .document-sidebar-container .widget-menu-wrapper .p-panelmenu-panel .p-panelmenu-expanded .p-panelmenu-content{border:none!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content{border:none;color:var(--text-color);font-weight:400!important;background-color:var(--surface-0)!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-panelmenu-header-action{color:var(--text-color);font-weight:400!important;position:relative;padding:12px}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-panelmenu-header-action .p-icon-wrapper{position:absolute;right:0;top:16px;margin-right:7px;transform:rotate(90deg)!important;transition:none!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-panelmenu-header-action .p-menuitem-text{max-width:75%;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-menuitem-link-active{border:1px solid rgba(68,72,109,.1);border-radius:10px;padding:12px;color:var(--primary-color);background-color:#0066ff1a!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-menuitem-link-active .p-menuitem-icon{color:var(--primary-color)}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-menuitem-link-active .p-menuitem-text{color:var(--primary-color)}::ng-deep .widget-menu-wrapper .p-panelmenu .company-action-wrapper:not(.p-disabled).p-highlight .p-panelmenu-header-content{margin:12px 0!important}::ng-deep .widget-menu-wrapper .p-panelmenu .no-highlight.p-panelmenu-header:not(.p-disabled).p-highlight .p-panelmenu-header-content{background-color:transparent!important;border-radius:10px;padding:12px;border-bottom:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}::ng-deep .widget-menu-wrapper .p-panelmenu .no-highlight.p-panelmenu-header:not(.p-disabled).p-highlight .p-panelmenu-header-content .p-panelmenu-header-action{padding:0!important}::ng-deep .widget-menu-wrapper .p-panelmenu .no-highlight.p-panelmenu-header:not(.p-disabled).p-highlight .p-panelmenu-header-content .p-panelmenu-header-action .p-icon-wrapper{transform:rotate(180deg)!important;transition:none!important;top:0!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link{background-color:var(--surface-0)!important;color:var(--text-color);padding:12px 6px!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link .p-menuitem-text{max-width:75%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link-active{border:1px solid rgba(68,72,109,.1);border-radius:10px;padding:12px;color:var(--primary-color);box-shadow:none!important;background-color:#0066ff1a!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link-active .p-menuitem-icon{color:var(--primary-color)}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link-active .p-menuitem-text{color:var(--primary-color)}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem.p-focus>.p-menuitem-content{background-color:#44486d1a!important}::ng-deep .widget-menu-wrapper .p-panelmenu-panel .p-panelmenu-expanded .p-panelmenu-content{border:1px solid rgba(68,72,109,.1)!important;border-top:0!important;border-bottom-left-radius:10px;border-bottom-right-radius:10px}::ng-deep .widget-menu-wrapper .p-panelmenu-panel .widget-separator{border-top:1px solid rgba(68,72,109,.1)!important}::ng-deep .widget-menu-wrapper .p-panelmenu-panel .widget-separator .p-panelmenu-header-content .p-panelmenu-header-action{padding:0!important}\n"], dependencies: [{ 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$1.Badge, selector: "p-badge", inputs: ["styleClass", "style", "badgeSize", "severity", "value", "badgeDisabled", "size"] }, { kind: "component", type: i8$2.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i9$1.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }] });
|
|
3250
3479
|
}
|
|
3251
3480
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentsMenuComponent, decorators: [{
|
|
3252
3481
|
type: Component,
|
|
3253
|
-
args: [{ selector: 'lib-documents-menu', standalone: false, template: "<div class=\"document-sidebar-container h-full\">\
|
|
3482
|
+
args: [{ selector: 'lib-documents-menu', standalone: false, template: "<div class=\"document-sidebar-container h-full\">\n <p-card class=\"widget-menu-wrapper h-full\">\n @if(applicationNumber){\n <div class=\"flex align-items-center justify-content-between widget-menu-header-wrapper\">\n <p class=\"mb-0 application-title-wrapper\">ID - {{applicationNumber}}</p>\n <div class=\"expand-icon-wrapper\">\n <i class=\"ri-arrow-left-s-line text-primary flex align-items-center justify-content-center w-full h-full\"></i>\n </div>\n </div>\n }\n\n <div class=\"widget-menu-container\" >\n <div class=\"widget-menu-wrapper h-ful l custom-scroll\">\n <p-menu [model]=\"catagories\" styleClass=\"w-full md:w-15rem\">\n <ng-template pTemplate=\"submenuheader\" let-item>\n <span [style]=\"{\n color : '#9EA0B3'\n }\">{{ item.label }}</span>\n </ng-template>\n <ng-template pTemplate=\"item\" let-item>\n <a pRipple \n class=\"flex align-items-center p-menuitem-link\"\n [class.selected-menu-item]=\"selectedMenuItemId === item._id\"\n (click)=\"onMenuItemClick($event, item)\">\n <span [class]=\"item.icon\" class=\"text-xl\"></span>\n <span class=\"ml-2\">{{ item.label }}</span>\n <p-badge *ngIf=\"item.menuData?.shouldShowBadge\" \n class=\"ml-auto\" \n [severity]=\"item.menuData?.badgeSeverity\" \n [value]=\"item.menuData?.badgeValue\" />\n </a>\n </ng-template>\n </p-menu>\n </div>\n </div>\n </p-card>\n</div>\n\n ", styles: [".expand-icon-wrapper{border:1px solid var(--primary-color);height:24px;width:24px;border-radius:50%;background:var(--blue-bg-light)}::ng-deep .p-badge.p-badge-success{background-color:#dcfce7;color:#16a34a;font-family:inherit;font-size:12px;font-weight:400;font-style:inherit}::ng-deep .p-badge.p-badge-danger{background-color:#fee2e2;color:#dc2626;font-family:inherit;font-size:12px;font-weight:400;font-style:inherit}::ng-deep .p-badge.p-badge-warning{background-color:#fef3c7;color:#d97706;font-family:inherit;font-size:12px;font-weight:400;font-style:inherit}::ng-deep .p-menu .p-menuitem>.p-menuitem-content .p-menuitem-link{color:#1f2937}@media screen and (min-width: 768px){::ng-deep .md\\:w-15rem{width:100%!important}}::ng-deep .p-menu .p-menuitem:not(p-highlight):not(p-disabled)>.p-menuitem-content:hover{color:#06f!important;background:#0066ff1a!important;background-color:#0066ff1a!important}::ng-deep .p-menu{border:none}::ng-deep .custom-scroll{scrollbar-gutter:inherit}::ng-deep .selected-menu-item{background-color:#0066ff1a!important;color:var(--primary-color)!important;border:1px solid rgba(68,72,109,.1)!important;border-radius:10px!important}::ng-deep .selected-menu-item .text-xl{color:var(--primary-color)!important}::ng-deep .selected-menu-item span{color:var(--primary-color)!important}::ng-deep .p-panelmenu .p-panelmenu-content{border:none!important}.application-title-wrapper{color:#9ea0b3;font-weight:500}.widget-menu-wrapper{margin-top:8px}.widget-menu-header-wrapper{padding:4px 4px 4px 16px}.widget-menu-container{height:calc(100% - 38px)}.custom-scroll{overflow-y:hidden;scrollbar-gutter:stable}.custom-scroll:hover{overflow-y:auto}::ng-deep .document-sidebar-container .p-card{height:100%;box-shadow:none}::ng-deep .document-sidebar-container .p-card .p-card-content{height:100%;padding:0!important}::ng-deep .document-sidebar-container .p-card .p-card-body{height:100%;width:100%;padding:12px 8px;border-radius:10px;border:1px solid #e5e7eb}::ng-deep .document-sidebar-container .widget-menu-wrapper .p-panelmenu-panel .p-panelmenu-expanded .p-panelmenu-content{border:none!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content{border:none;color:var(--text-color);font-weight:400!important;background-color:var(--surface-0)!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-panelmenu-header-action{color:var(--text-color);font-weight:400!important;position:relative;padding:12px}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-panelmenu-header-action .p-icon-wrapper{position:absolute;right:0;top:16px;margin-right:7px;transform:rotate(90deg)!important;transition:none!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-panelmenu-header-action .p-menuitem-text{max-width:75%;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-menuitem-link-active{border:1px solid rgba(68,72,109,.1);border-radius:10px;padding:12px;color:var(--primary-color);background-color:#0066ff1a!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-menuitem-link-active .p-menuitem-icon{color:var(--primary-color)}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-menuitem-link-active .p-menuitem-text{color:var(--primary-color)}::ng-deep .widget-menu-wrapper .p-panelmenu .company-action-wrapper:not(.p-disabled).p-highlight .p-panelmenu-header-content{margin:12px 0!important}::ng-deep .widget-menu-wrapper .p-panelmenu .no-highlight.p-panelmenu-header:not(.p-disabled).p-highlight .p-panelmenu-header-content{background-color:transparent!important;border-radius:10px;padding:12px;border-bottom:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}::ng-deep .widget-menu-wrapper .p-panelmenu .no-highlight.p-panelmenu-header:not(.p-disabled).p-highlight .p-panelmenu-header-content .p-panelmenu-header-action{padding:0!important}::ng-deep .widget-menu-wrapper .p-panelmenu .no-highlight.p-panelmenu-header:not(.p-disabled).p-highlight .p-panelmenu-header-content .p-panelmenu-header-action .p-icon-wrapper{transform:rotate(180deg)!important;transition:none!important;top:0!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link{background-color:var(--surface-0)!important;color:var(--text-color);padding:12px 6px!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link .p-menuitem-text{max-width:75%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link-active{border:1px solid rgba(68,72,109,.1);border-radius:10px;padding:12px;color:var(--primary-color);box-shadow:none!important;background-color:#0066ff1a!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link-active .p-menuitem-icon{color:var(--primary-color)}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link-active .p-menuitem-text{color:var(--primary-color)}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem.p-focus>.p-menuitem-content{background-color:#44486d1a!important}::ng-deep .widget-menu-wrapper .p-panelmenu-panel .p-panelmenu-expanded .p-panelmenu-content{border:1px solid rgba(68,72,109,.1)!important;border-top:0!important;border-bottom-left-radius:10px;border-bottom-right-radius:10px}::ng-deep .widget-menu-wrapper .p-panelmenu-panel .widget-separator{border-top:1px solid rgba(68,72,109,.1)!important}::ng-deep .widget-menu-wrapper .p-panelmenu-panel .widget-separator .p-panelmenu-header-content .p-panelmenu-header-action{padding:0!important}\n"] }]
|
|
3254
3483
|
}], ctorParameters: () => [{ type: DocumentStore }, { type: DocumentQuery }, { type: DocumentMenuService }, { type: DocumentHelperService }], propDecorators: { catagories: [{
|
|
3255
3484
|
type: Input
|
|
3256
3485
|
}], applicationNumber: [{
|
|
@@ -3783,6 +4012,10 @@ class DocumentModule {
|
|
|
3783
4012
|
* A component representing and allow you to view the document.
|
|
3784
4013
|
*/
|
|
3785
4014
|
DocumentViewerComponent,
|
|
4015
|
+
/**
|
|
4016
|
+
* A component representing document history timeline.
|
|
4017
|
+
*/
|
|
4018
|
+
DocumentHistoryComponent,
|
|
3786
4019
|
/**
|
|
3787
4020
|
* A directive to show the document.
|
|
3788
4021
|
*/
|
|
@@ -4035,6 +4268,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
4035
4268
|
* A component representing and allow you to view the document.
|
|
4036
4269
|
*/
|
|
4037
4270
|
DocumentViewerComponent,
|
|
4271
|
+
/**
|
|
4272
|
+
* A component representing document history timeline.
|
|
4273
|
+
*/
|
|
4274
|
+
DocumentHistoryComponent,
|
|
4038
4275
|
/**
|
|
4039
4276
|
* A directive to show the document.
|
|
4040
4277
|
*/
|
|
@@ -4192,5 +4429,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
4192
4429
|
* Generated bundle index. Do not edit.
|
|
4193
4430
|
*/
|
|
4194
4431
|
|
|
4195
|
-
export { DocumentContainerComponent, DocumentDirective, DocumentListComponent, DocumentModule, DocumentTableBuilderService, DocumentViewerComponent, HasPermissionDirective };
|
|
4432
|
+
export { DocumentContainerComponent, DocumentDirective, DocumentHistoryComponent, DocumentListComponent, DocumentModule, DocumentTableBuilderService, DocumentViewerComponent, HasPermissionDirective };
|
|
4196
4433
|
//# sourceMappingURL=cat-documents-ng.mjs.map
|