cat-documents-ng 0.2.58 → 0.2.61
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/components/confirmation-dialog/confirmation-dialog.component.d.ts +34 -0
- package/Shared/constant/SHARED.d.ts +20 -0
- package/Shared/shared.module.d.ts +7 -5
- package/fesm2022/cat-documents-ng.mjs +345 -114
- package/fesm2022/cat-documents-ng.mjs.map +1 -1
- package/lib/document/components/document-actions/document-actions.component.d.ts +2 -0
- package/lib/document/components/document-list/document-list.component.d.ts +7 -9
- package/lib/document/components/document-upload/document-upload.component.d.ts +7 -0
- package/lib/document/components/document-viewer/document-viewer.component.d.ts +3 -1
- package/lib/document/components/user-list/user-list.component.d.ts +8 -4
- package/lib/document/document.module.d.ts +3 -1
- package/lib/document/services/document-upload-business.service.d.ts +8 -2
- package/lib/document/services/document-upload-form.service.d.ts +8 -0
- package/lib/document/state/document.query.d.ts +5 -0
- package/package.json +1 -1
- package/public-api.d.ts +5 -0
- package/src/assets/config/api.config.json +20 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, EventEmitter, Output, ViewChild, Input, ViewEncapsulation, Component, Directive, NgModule, APP_INITIALIZER } from '@angular/core';
|
|
2
|
+
import { Injectable, EventEmitter, Output, ViewChild, Input, ViewEncapsulation, Component, ChangeDetectionStrategy, Directive, NgModule, APP_INITIALIZER } from '@angular/core';
|
|
3
3
|
import * as i2$1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { firstValueFrom, tap, EMPTY, catchError, throwError, of, combineLatest, Subject, Observable, takeUntil, Subscription, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1 } from 'rxjs';
|
|
@@ -10,7 +10,7 @@ import { HttpHeaders, HttpParams, HttpClientModule } from '@angular/common/http'
|
|
|
10
10
|
import { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';
|
|
11
11
|
import { trigger, state, transition, style, animate } from '@angular/animations';
|
|
12
12
|
import * as i3 from 'primeng/api';
|
|
13
|
-
import { MessageService } from 'primeng/api';
|
|
13
|
+
import { ConfirmationService, MessageService } from 'primeng/api';
|
|
14
14
|
import * as i4 from 'primeng/button';
|
|
15
15
|
import { ButtonModule } from 'primeng/button';
|
|
16
16
|
import * as i10 from 'primeng/fileupload';
|
|
@@ -39,6 +39,8 @@ import * as i6 from 'ng2-pdf-viewer';
|
|
|
39
39
|
import { PdfViewerModule } from 'ng2-pdf-viewer';
|
|
40
40
|
import * as i3$2 from 'primeng/accordion';
|
|
41
41
|
import { AccordionModule } from 'primeng/accordion';
|
|
42
|
+
import * as i2$3 from 'primeng/confirmdialog';
|
|
43
|
+
import { ConfirmDialogModule } from 'primeng/confirmdialog';
|
|
42
44
|
import * as i5$2 from 'primeng/inputtextarea';
|
|
43
45
|
import { InputTextareaModule } from 'primeng/inputtextarea';
|
|
44
46
|
import * as i8 from 'primeng/tooltip';
|
|
@@ -52,6 +54,7 @@ import { ListboxModule } from 'primeng/listbox';
|
|
|
52
54
|
import { TimelineModule } from 'primeng/timeline';
|
|
53
55
|
import { CheckboxModule } from 'primeng/checkbox';
|
|
54
56
|
import { PanelMenuModule } from 'primeng/panelmenu';
|
|
57
|
+
import { ToastModule } from 'primeng/toast';
|
|
55
58
|
|
|
56
59
|
/**
|
|
57
60
|
* The `SHARED` class contains shared constants used across the application.
|
|
@@ -281,6 +284,7 @@ class SHARED {
|
|
|
281
284
|
static CATAGORIES = 'catagories';
|
|
282
285
|
static DOCUMENTS = 'Documents';
|
|
283
286
|
static UPLOAD_FAILED = 'Upload failed';
|
|
287
|
+
static DOCUMENT_DELETED_SUCCESSFULLY = 'Document deleted successfully';
|
|
284
288
|
static Menu = [
|
|
285
289
|
{
|
|
286
290
|
label: 'Applicant',
|
|
@@ -510,6 +514,27 @@ class SHARED {
|
|
|
510
514
|
static BUTTON_LABEL_REJECTED = 'Rejected';
|
|
511
515
|
static BUTTON_LABEL_ACCEPT = 'Accept';
|
|
512
516
|
static BUTTON_LABEL_ACCEPTED = 'Accepted';
|
|
517
|
+
// Document Upload Validation Messages
|
|
518
|
+
static VALIDATION_NO_APPLICANT_SELECTED = 'No Applicant Selected';
|
|
519
|
+
static VALIDATION_NO_APPLICANT_DETAIL = 'Please select an applicant.';
|
|
520
|
+
static VALIDATION_NO_CATEGORY_SELECTED = 'No Category Selected';
|
|
521
|
+
static VALIDATION_NO_CATEGORY_DETAIL = 'Please select a category.';
|
|
522
|
+
static VALIDATION_NO_DOCUMENT_TYPE_SELECTED = 'No Document Type Selected';
|
|
523
|
+
static VALIDATION_NO_DOCUMENT_TYPE_DETAIL = 'Please select a document type.';
|
|
524
|
+
static VALIDATION_NO_DOCUMENTS_UPLOADED = 'No Documents Uploaded';
|
|
525
|
+
static VALIDATION_NO_DOCUMENTS_DETAIL = 'Please upload at least one document.';
|
|
526
|
+
static VALIDATION_FORM_INCOMPLETE = 'Form Incomplete';
|
|
527
|
+
static VALIDATION_FORM_INCOMPLETE_DETAIL = 'Please complete all required fields and upload at least one document.';
|
|
528
|
+
static VALIDATION_MISSING_REQUIRED_DATA = 'Missing Required Data';
|
|
529
|
+
// Document Upload Assignment Type Messages
|
|
530
|
+
static VALIDATION_SELECT_ASSIGNMENT_TYPE = 'Please select an assignment type (Applicant or Application)';
|
|
531
|
+
static VALIDATION_SELECT_CATEGORY = 'Please select a document category';
|
|
532
|
+
static VALIDATION_SELECT_DOCUMENT_TYPE = 'Please select a document type';
|
|
533
|
+
static VALIDATION_UPLOAD_AT_LEAST_ONE = 'Please upload at least one document';
|
|
534
|
+
static VALIDATION_WAIT_FOR_UPLOAD = 'Please wait for all files to finish uploading';
|
|
535
|
+
static VALIDATION_SELECT_APPLICANT = 'Please select an applicant';
|
|
536
|
+
static VALIDATION_ALL_FIELDS_COMPLETED = 'All required fields are completed';
|
|
537
|
+
static VALIDATION_OPTIONS_NOT_LOADED = 'Document options are not loaded yet';
|
|
513
538
|
}
|
|
514
539
|
/**
|
|
515
540
|
* `DUMMYDOCUMENTLIST` is a mock list of document objects used for testing and development purposes.
|
|
@@ -1272,7 +1297,7 @@ class DocumentService {
|
|
|
1272
1297
|
* @returns {Observable<any>} Observable that emits the newly created document.
|
|
1273
1298
|
*/
|
|
1274
1299
|
create(entity) {
|
|
1275
|
-
const headers = { 'Authorization': 'Bearer
|
|
1300
|
+
const headers = { 'Authorization': 'Bearer 514330f0-41d4-4c03-8d2e-f248a1340e8d' };
|
|
1276
1301
|
return this.http.post(`${this.apiUrl}${URLS.DOCUMENT_UPLOAD_FILE}`, entity, { headers }).pipe(tap((newEntity) => this.documentStore.add(newEntity)));
|
|
1277
1302
|
}
|
|
1278
1303
|
/**
|
|
@@ -1363,6 +1388,13 @@ class DocumentQuery extends QueryEntity {
|
|
|
1363
1388
|
selectDocumentCategories() {
|
|
1364
1389
|
return this.select((state) => state.documentCategories);
|
|
1365
1390
|
}
|
|
1391
|
+
/**
|
|
1392
|
+
* Gets the current document categories value (synchronous).
|
|
1393
|
+
* @returns {DocumentCategory[]} The current document categories.
|
|
1394
|
+
*/
|
|
1395
|
+
getDocumentCategories() {
|
|
1396
|
+
return this.getValue().documentCategories;
|
|
1397
|
+
}
|
|
1366
1398
|
// New query methods for selection state
|
|
1367
1399
|
/**
|
|
1368
1400
|
* Selects the currently selected menu item.
|
|
@@ -1677,7 +1709,7 @@ class DocumentHttpService {
|
|
|
1677
1709
|
* @returns {Observable<any>} Observable that emits the transformed data for dropdown options.
|
|
1678
1710
|
*/
|
|
1679
1711
|
getDocumentCatagories(contextId) {
|
|
1680
|
-
let headers = new HttpHeaders({ Authorization: `Bearer
|
|
1712
|
+
let headers = new HttpHeaders({ Authorization: `Bearer 514330f0-41d4-4c03-8d2e-f248a1340e8d` });
|
|
1681
1713
|
return this.http.get(`${this.apiUrl}${URLS.DOCUMENTS_CATAGORIES}/${contextId}`, { headers }).pipe(tap((response) => {
|
|
1682
1714
|
// Store only the categories array, not the entire response
|
|
1683
1715
|
if (response && response.categories) {
|
|
@@ -1736,7 +1768,7 @@ class DocumentHttpService {
|
|
|
1736
1768
|
* @returns {Observable<DocumentModel>} An observable that emits the updated DocumentModel.
|
|
1737
1769
|
*/
|
|
1738
1770
|
updateDocumentName(documentId, payload) {
|
|
1739
|
-
let headers = new HttpHeaders({ Authorization: `Bearer
|
|
1771
|
+
let headers = new HttpHeaders({ Authorization: `Bearer 514330f0-41d4-4c03-8d2e-f248a1340e8d` });
|
|
1740
1772
|
return this.http.put(`${this.apiUrl}${URLS.DOCUMENT_UPLOAD}/${documentId}`, payload, { headers }).pipe(catchError((error) => {
|
|
1741
1773
|
return throwError(() => new Error(error));
|
|
1742
1774
|
}));
|
|
@@ -1749,7 +1781,7 @@ class DocumentHttpService {
|
|
|
1749
1781
|
getUserListByContextId(contextId) {
|
|
1750
1782
|
if (!contextId)
|
|
1751
1783
|
return EMPTY;
|
|
1752
|
-
let headers = new HttpHeaders({ Authorization: `Bearer
|
|
1784
|
+
let headers = new HttpHeaders({ Authorization: `Bearer 514330f0-41d4-4c03-8d2e-f248a1340e8d` });
|
|
1753
1785
|
return this.http.get(`${this.apiUrl}${URLS.USERLIST}${contextId}`, { headers }).pipe(tap((userList) => {
|
|
1754
1786
|
this.documentStore.setUserList(userList);
|
|
1755
1787
|
}), catchError((error) => {
|
|
@@ -1775,7 +1807,7 @@ class DocumentHttpService {
|
|
|
1775
1807
|
if (categoryId) {
|
|
1776
1808
|
params = params.set(SHARED.CATEGORY, categoryId);
|
|
1777
1809
|
}
|
|
1778
|
-
let headers = new HttpHeaders({ Authorization: `Bearer
|
|
1810
|
+
let headers = new HttpHeaders({ Authorization: `Bearer 514330f0-41d4-4c03-8d2e-f248a1340e8d` });
|
|
1779
1811
|
return this.http.get(url, { params, headers }).pipe(tap((statusData) => {
|
|
1780
1812
|
this.documentStore.setStatusData(statusData);
|
|
1781
1813
|
}), catchError((error) => {
|
|
@@ -1806,7 +1838,7 @@ class DocumentHttpService {
|
|
|
1806
1838
|
if (searchKey) {
|
|
1807
1839
|
params = params.set(SHARED.SEARCH_KEY, searchKey);
|
|
1808
1840
|
}
|
|
1809
|
-
let headers = new HttpHeaders({ Authorization: `Bearer
|
|
1841
|
+
let headers = new HttpHeaders({ Authorization: `Bearer 514330f0-41d4-4c03-8d2e-f248a1340e8d` });
|
|
1810
1842
|
return this.http.get(`${this.apiUrl}${URLS.GETALL}/${contextId}`, { params, headers }).pipe(tap((response) => {
|
|
1811
1843
|
if (response.documents) {
|
|
1812
1844
|
this.documentStore.setDocumentList(response.documents);
|
|
@@ -1819,7 +1851,7 @@ class DocumentHttpService {
|
|
|
1819
1851
|
if (!documentId) {
|
|
1820
1852
|
return of([]);
|
|
1821
1853
|
}
|
|
1822
|
-
let headers = new HttpHeaders({ Authorization: `Bearer
|
|
1854
|
+
let headers = new HttpHeaders({ Authorization: `Bearer 514330f0-41d4-4c03-8d2e-f248a1340e8d` });
|
|
1823
1855
|
return this.http.get(`${this.apiUrl}${URLS.DOCUMENT_HISTORY}${documentId}`, { headers });
|
|
1824
1856
|
}
|
|
1825
1857
|
/**
|
|
@@ -1830,7 +1862,7 @@ class DocumentHttpService {
|
|
|
1830
1862
|
getCategoriesBySource(source) {
|
|
1831
1863
|
if (!source)
|
|
1832
1864
|
return EMPTY;
|
|
1833
|
-
let headers = new HttpHeaders({ Authorization: `Bearer
|
|
1865
|
+
let headers = new HttpHeaders({ Authorization: `Bearer 514330f0-41d4-4c03-8d2e-f248a1340e8d` });
|
|
1834
1866
|
return this.http.get(`${this.apiUrl}${URLS.GET_CATEGORIES_BY_SOURCE}${source}`, { headers }).pipe(catchError((error) => {
|
|
1835
1867
|
return throwError(() => new Error(error));
|
|
1836
1868
|
}));
|
|
@@ -1843,7 +1875,7 @@ class DocumentHttpService {
|
|
|
1843
1875
|
getDocumentTypesByCategory(categoryId) {
|
|
1844
1876
|
if (!categoryId)
|
|
1845
1877
|
return EMPTY;
|
|
1846
|
-
let headers = new HttpHeaders({ Authorization: `Bearer
|
|
1878
|
+
let headers = new HttpHeaders({ Authorization: `Bearer 514330f0-41d4-4c03-8d2e-f248a1340e8d` });
|
|
1847
1879
|
return this.http.get(`${this.apiUrl}${URLS.GET_DOCUMENT_TYPES_BY_CATEGORY}${categoryId}`, { headers }).pipe(catchError((error) => {
|
|
1848
1880
|
return throwError(() => new Error(error));
|
|
1849
1881
|
}));
|
|
@@ -1854,7 +1886,7 @@ class DocumentHttpService {
|
|
|
1854
1886
|
* @returns {Observable<any>} Observable that emits the upload response.
|
|
1855
1887
|
*/
|
|
1856
1888
|
uploadFile(formData) {
|
|
1857
|
-
let headers = new HttpHeaders({ Authorization: `Bearer
|
|
1889
|
+
let headers = new HttpHeaders({ Authorization: `Bearer 514330f0-41d4-4c03-8d2e-f248a1340e8d` });
|
|
1858
1890
|
return this.http.post(`${this.apiUrl}${URLS.DOCUMENT_UPLOAD_FILE}`, formData, { headers }).pipe(catchError((error) => {
|
|
1859
1891
|
return throwError(() => new Error(error));
|
|
1860
1892
|
}));
|
|
@@ -1865,7 +1897,7 @@ class DocumentHttpService {
|
|
|
1865
1897
|
* @returns {Observable<any>} Observable that emits the save response.
|
|
1866
1898
|
*/
|
|
1867
1899
|
saveDocumentUpload(payload) {
|
|
1868
|
-
let headers = new HttpHeaders({ Authorization: `Bearer
|
|
1900
|
+
let headers = new HttpHeaders({ Authorization: `Bearer 514330f0-41d4-4c03-8d2e-f248a1340e8d` });
|
|
1869
1901
|
return this.http.post(`${this.apiUrl}${URLS.SAVE_DOCUMENT_UPLOAD}`, payload, { headers }).pipe(catchError((error) => {
|
|
1870
1902
|
return throwError(() => new Error(error));
|
|
1871
1903
|
}));
|
|
@@ -1881,7 +1913,7 @@ class DocumentHttpService {
|
|
|
1881
1913
|
const payload = {
|
|
1882
1914
|
statusUpdateDescription: statusUpdateDescription
|
|
1883
1915
|
};
|
|
1884
|
-
let headers = new HttpHeaders({ Authorization: `Bearer
|
|
1916
|
+
let headers = new HttpHeaders({ Authorization: `Bearer 514330f0-41d4-4c03-8d2e-f248a1340e8d` });
|
|
1885
1917
|
return this.http.put(`${this.apiUrl}${URLS.UPDATE_DOCUMENT_STATUS}${documentId}/${status}`, payload, { headers }).pipe(tap((response) => {
|
|
1886
1918
|
if (response && response.status) {
|
|
1887
1919
|
const normalizedStatus = this.normalizeStatus(response.status);
|
|
@@ -1915,7 +1947,7 @@ class DocumentHttpService {
|
|
|
1915
1947
|
* @returns {Observable<any>} Observable that emits the delete response
|
|
1916
1948
|
*/
|
|
1917
1949
|
deleteDocument(documentId, contextId) {
|
|
1918
|
-
let headers = new HttpHeaders({ Authorization: `Bearer
|
|
1950
|
+
let headers = new HttpHeaders({ Authorization: `Bearer 514330f0-41d4-4c03-8d2e-f248a1340e8d` });
|
|
1919
1951
|
return this.http.delete(`${this.apiUrl}${URLS.DELETE_DOCUMENT}${documentId}`, { headers }).pipe(tap(() => {
|
|
1920
1952
|
this.getDocumentCatagories(contextId).subscribe();
|
|
1921
1953
|
this.getUserListByContextId(contextId).subscribe();
|
|
@@ -2182,8 +2214,7 @@ class DocumentHelperService {
|
|
|
2182
2214
|
// Refresh document categories
|
|
2183
2215
|
this.documentHttpService.getDocumentCatagories(contextId).subscribe({
|
|
2184
2216
|
next: (response) => {
|
|
2185
|
-
|
|
2186
|
-
// No need to store them again here
|
|
2217
|
+
this.documentStore.setDocumentCategories(response);
|
|
2187
2218
|
},
|
|
2188
2219
|
error: (error) => {
|
|
2189
2220
|
console.error('Error refreshing document categories after action:', error);
|
|
@@ -2436,68 +2467,77 @@ class DocumentUploadBusinessService {
|
|
|
2436
2467
|
}
|
|
2437
2468
|
}
|
|
2438
2469
|
/**
|
|
2439
|
-
*
|
|
2470
|
+
* Helper method to validate form data and return validation result
|
|
2440
2471
|
*/
|
|
2441
|
-
|
|
2442
|
-
//
|
|
2472
|
+
validateFormData(assignmentType, selectedCategory, selectedDocumentType, selectedApplicant, uploadedFiles, categoryOptions, documentTypeOptions) {
|
|
2473
|
+
// Check assignment type
|
|
2443
2474
|
if (!assignmentType) {
|
|
2444
|
-
return false;
|
|
2475
|
+
return { isValid: false, message: SHARED.VALIDATION_SELECT_ASSIGNMENT_TYPE };
|
|
2445
2476
|
}
|
|
2446
|
-
// Check if
|
|
2477
|
+
// Check if options are loaded
|
|
2447
2478
|
if (!categoryOptions.length || !documentTypeOptions.length) {
|
|
2448
|
-
return false;
|
|
2479
|
+
return { isValid: false, message: SHARED.VALIDATION_OPTIONS_NOT_LOADED };
|
|
2449
2480
|
}
|
|
2450
|
-
// Check
|
|
2451
|
-
if (!selectedCategory
|
|
2452
|
-
return false;
|
|
2481
|
+
// Check category
|
|
2482
|
+
if (!selectedCategory) {
|
|
2483
|
+
return { isValid: false, message: SHARED.VALIDATION_SELECT_CATEGORY };
|
|
2453
2484
|
}
|
|
2454
|
-
// Check
|
|
2485
|
+
// Check document type
|
|
2486
|
+
if (!selectedDocumentType) {
|
|
2487
|
+
return { isValid: false, message: SHARED.VALIDATION_SELECT_DOCUMENT_TYPE };
|
|
2488
|
+
}
|
|
2489
|
+
// Check files
|
|
2455
2490
|
if (uploadedFiles.length === 0) {
|
|
2456
|
-
return false;
|
|
2491
|
+
return { isValid: false, message: SHARED.VALIDATION_UPLOAD_AT_LEAST_ONE };
|
|
2457
2492
|
}
|
|
2458
|
-
// Check if all files are
|
|
2459
|
-
const
|
|
2460
|
-
if (
|
|
2461
|
-
return false;
|
|
2493
|
+
// Check if all files are uploaded
|
|
2494
|
+
const incompleteFiles = uploadedFiles.filter(file => file.progress !== 100);
|
|
2495
|
+
if (incompleteFiles.length > 0) {
|
|
2496
|
+
return { isValid: false, message: SHARED.VALIDATION_WAIT_FOR_UPLOAD };
|
|
2462
2497
|
}
|
|
2463
|
-
// For Applicant type,
|
|
2464
|
-
if (assignmentType === SHARED.APPLICANT) {
|
|
2465
|
-
return
|
|
2498
|
+
// For Applicant type, check applicant selection
|
|
2499
|
+
if (assignmentType === SHARED.APPLICANT && !selectedApplicant) {
|
|
2500
|
+
return { isValid: false, message: SHARED.VALIDATION_SELECT_APPLICANT };
|
|
2466
2501
|
}
|
|
2467
|
-
|
|
2468
|
-
|
|
2502
|
+
return { isValid: true, message: SHARED.VALIDATION_ALL_FIELDS_COMPLETED };
|
|
2503
|
+
}
|
|
2504
|
+
/**
|
|
2505
|
+
* Validates form data
|
|
2506
|
+
*/
|
|
2507
|
+
validateForm(assignmentType, selectedCategory, selectedDocumentType, selectedApplicant, uploadedFiles, categoryOptions, documentTypeOptions) {
|
|
2508
|
+
return this.validateFormData(assignmentType, selectedCategory, selectedDocumentType, selectedApplicant, uploadedFiles, categoryOptions, documentTypeOptions).isValid;
|
|
2469
2509
|
}
|
|
2470
2510
|
/**
|
|
2471
2511
|
* Checks if save button should be disabled
|
|
2472
2512
|
*/
|
|
2473
2513
|
isSaveButtonDisabled(assignmentType, selectedCategory, selectedDocumentType, selectedApplicant, uploadedFiles, isSaving) {
|
|
2474
|
-
|
|
2514
|
+
if (isSaving) {
|
|
2515
|
+
return true;
|
|
2516
|
+
}
|
|
2517
|
+
// For button state, we only need to check if required fields are filled
|
|
2518
|
+
// We don't need to validate if options are loaded
|
|
2475
2519
|
if (!assignmentType) {
|
|
2476
2520
|
return true;
|
|
2477
2521
|
}
|
|
2478
|
-
|
|
2479
|
-
if (uploadedFiles.length === 0) {
|
|
2522
|
+
if (!selectedCategory) {
|
|
2480
2523
|
return true;
|
|
2481
2524
|
}
|
|
2482
|
-
|
|
2483
|
-
const allFilesUploaded = uploadedFiles.every(file => file.progress === 100);
|
|
2484
|
-
if (!allFilesUploaded) {
|
|
2525
|
+
if (!selectedDocumentType) {
|
|
2485
2526
|
return true;
|
|
2486
2527
|
}
|
|
2487
|
-
|
|
2488
|
-
if (!selectedCategory || !selectedDocumentType) {
|
|
2528
|
+
if (uploadedFiles.length === 0) {
|
|
2489
2529
|
return true;
|
|
2490
2530
|
}
|
|
2491
|
-
//
|
|
2492
|
-
|
|
2531
|
+
// Check if all files are uploaded
|
|
2532
|
+
const incompleteFiles = uploadedFiles.filter(file => file.progress !== 100);
|
|
2533
|
+
if (incompleteFiles.length > 0) {
|
|
2493
2534
|
return true;
|
|
2494
2535
|
}
|
|
2495
|
-
//
|
|
2496
|
-
if (
|
|
2536
|
+
// For Applicant type, check applicant selection
|
|
2537
|
+
if (assignmentType === SHARED.APPLICANT && !selectedApplicant) {
|
|
2497
2538
|
return true;
|
|
2498
2539
|
}
|
|
2499
|
-
|
|
2500
|
-
return false;
|
|
2540
|
+
return false; // Button should be enabled
|
|
2501
2541
|
}
|
|
2502
2542
|
/**
|
|
2503
2543
|
* Validates the complete payload before save
|
|
@@ -2505,30 +2545,30 @@ class DocumentUploadBusinessService {
|
|
|
2505
2545
|
validatePayload(assignmentType, selectedCategory, selectedDocumentType, selectedApplicant, uploadedFiles) {
|
|
2506
2546
|
// Check assignment type
|
|
2507
2547
|
if (!assignmentType) {
|
|
2508
|
-
return { isValid: false, message:
|
|
2548
|
+
return { isValid: false, message: SHARED.VALIDATION_SELECT_ASSIGNMENT_TYPE };
|
|
2509
2549
|
}
|
|
2510
2550
|
// Check category
|
|
2511
2551
|
if (!selectedCategory) {
|
|
2512
|
-
return { isValid: false, message:
|
|
2552
|
+
return { isValid: false, message: SHARED.VALIDATION_SELECT_CATEGORY };
|
|
2513
2553
|
}
|
|
2514
2554
|
// Check document type
|
|
2515
2555
|
if (!selectedDocumentType) {
|
|
2516
|
-
return { isValid: false, message:
|
|
2556
|
+
return { isValid: false, message: SHARED.VALIDATION_SELECT_DOCUMENT_TYPE };
|
|
2517
2557
|
}
|
|
2518
2558
|
// Check files
|
|
2519
2559
|
if (uploadedFiles.length === 0) {
|
|
2520
|
-
return { isValid: false, message:
|
|
2560
|
+
return { isValid: false, message: SHARED.VALIDATION_UPLOAD_AT_LEAST_ONE };
|
|
2521
2561
|
}
|
|
2522
2562
|
// Check if all files are uploaded
|
|
2523
2563
|
const incompleteFiles = uploadedFiles.filter(file => file.progress !== 100);
|
|
2524
2564
|
if (incompleteFiles.length > 0) {
|
|
2525
|
-
return { isValid: false, message:
|
|
2565
|
+
return { isValid: false, message: SHARED.VALIDATION_WAIT_FOR_UPLOAD };
|
|
2526
2566
|
}
|
|
2527
2567
|
// For Applicant type, check applicant selection
|
|
2528
2568
|
if (assignmentType === SHARED.APPLICANT && !selectedApplicant) {
|
|
2529
|
-
return { isValid: false, message:
|
|
2569
|
+
return { isValid: false, message: SHARED.VALIDATION_SELECT_APPLICANT };
|
|
2530
2570
|
}
|
|
2531
|
-
return { isValid: true, message:
|
|
2571
|
+
return { isValid: true, message: SHARED.VALIDATION_ALL_FIELDS_COMPLETED };
|
|
2532
2572
|
}
|
|
2533
2573
|
/**
|
|
2534
2574
|
* Prepares upload payload
|
|
@@ -2542,8 +2582,8 @@ class DocumentUploadBusinessService {
|
|
|
2542
2582
|
documents: uploadedFiles.map(file => ({
|
|
2543
2583
|
fileName: file.file.name,
|
|
2544
2584
|
fileSize: file.file.size,
|
|
2545
|
-
|
|
2546
|
-
|
|
2585
|
+
url: file.url,
|
|
2586
|
+
contentType: file.contentType,
|
|
2547
2587
|
uploadedFileId: file.uploadResponse?.fileId || file.uploadResponse?.id || file.uploadResponse?.fileName
|
|
2548
2588
|
}))
|
|
2549
2589
|
};
|
|
@@ -2641,32 +2681,65 @@ class DocumentUploadFormService {
|
|
|
2641
2681
|
});
|
|
2642
2682
|
}
|
|
2643
2683
|
/**
|
|
2644
|
-
*
|
|
2684
|
+
* Helper method to validate required fields and show appropriate messages
|
|
2645
2685
|
*/
|
|
2646
|
-
|
|
2686
|
+
validateRequiredFieldsWithMessages(assignmentType, selectedApplicant, selectedCategory, selectedDocumentType, uploadedFiles) {
|
|
2647
2687
|
if (assignmentType === 'Applicant' && !selectedApplicant) {
|
|
2648
|
-
|
|
2649
|
-
return false;
|
|
2688
|
+
return { isValid: false, field: 'applicant' };
|
|
2650
2689
|
}
|
|
2651
2690
|
if (!selectedCategory) {
|
|
2652
|
-
|
|
2653
|
-
return false;
|
|
2691
|
+
return { isValid: false, field: 'category' };
|
|
2654
2692
|
}
|
|
2655
2693
|
if (!selectedDocumentType) {
|
|
2656
|
-
|
|
2657
|
-
return false;
|
|
2694
|
+
return { isValid: false, field: 'documentType' };
|
|
2658
2695
|
}
|
|
2659
2696
|
if (uploadedFiles.length === 0) {
|
|
2660
|
-
|
|
2661
|
-
|
|
2697
|
+
return { isValid: false, field: 'documents' };
|
|
2698
|
+
}
|
|
2699
|
+
return { isValid: true, field: null };
|
|
2700
|
+
}
|
|
2701
|
+
/**
|
|
2702
|
+
* Validates required fields for upload
|
|
2703
|
+
*/
|
|
2704
|
+
validateRequiredFields(assignmentType, selectedApplicant, selectedCategory, selectedDocumentType, uploadedFiles) {
|
|
2705
|
+
const validation = this.validateRequiredFieldsWithMessages(assignmentType, selectedApplicant, selectedCategory, selectedDocumentType, uploadedFiles);
|
|
2706
|
+
if (!validation.isValid) {
|
|
2707
|
+
this.showValidationMessage(validation.field);
|
|
2708
|
+
}
|
|
2709
|
+
return validation.isValid;
|
|
2710
|
+
}
|
|
2711
|
+
/**
|
|
2712
|
+
* Shows appropriate validation message based on the field that failed
|
|
2713
|
+
*/
|
|
2714
|
+
showValidationMessage(field) {
|
|
2715
|
+
const messages = {
|
|
2716
|
+
applicant: {
|
|
2717
|
+
summary: SHARED.VALIDATION_NO_APPLICANT_SELECTED,
|
|
2718
|
+
detail: SHARED.VALIDATION_NO_APPLICANT_DETAIL
|
|
2719
|
+
},
|
|
2720
|
+
category: {
|
|
2721
|
+
summary: SHARED.VALIDATION_NO_CATEGORY_SELECTED,
|
|
2722
|
+
detail: SHARED.VALIDATION_NO_CATEGORY_DETAIL
|
|
2723
|
+
},
|
|
2724
|
+
documentType: {
|
|
2725
|
+
summary: SHARED.VALIDATION_NO_DOCUMENT_TYPE_SELECTED,
|
|
2726
|
+
detail: SHARED.VALIDATION_NO_DOCUMENT_TYPE_DETAIL
|
|
2727
|
+
},
|
|
2728
|
+
documents: {
|
|
2729
|
+
summary: SHARED.VALIDATION_NO_DOCUMENTS_UPLOADED,
|
|
2730
|
+
detail: SHARED.VALIDATION_NO_DOCUMENTS_DETAIL
|
|
2731
|
+
}
|
|
2732
|
+
};
|
|
2733
|
+
const message = messages[field];
|
|
2734
|
+
if (message) {
|
|
2735
|
+
this.showWarningMessage(message.summary, message.detail);
|
|
2662
2736
|
}
|
|
2663
|
-
return true;
|
|
2664
2737
|
}
|
|
2665
2738
|
/**
|
|
2666
2739
|
* Validates form completeness
|
|
2667
2740
|
*/
|
|
2668
2741
|
validateFormCompleteness() {
|
|
2669
|
-
this.showWarningMessage(
|
|
2742
|
+
this.showWarningMessage(SHARED.VALIDATION_FORM_INCOMPLETE, SHARED.VALIDATION_FORM_INCOMPLETE_DETAIL);
|
|
2670
2743
|
return false;
|
|
2671
2744
|
}
|
|
2672
2745
|
/**
|
|
@@ -2674,7 +2747,7 @@ class DocumentUploadFormService {
|
|
|
2674
2747
|
*/
|
|
2675
2748
|
validateContextId(contextId, message) {
|
|
2676
2749
|
if (!contextId) {
|
|
2677
|
-
this.showErrorMessage(
|
|
2750
|
+
this.showErrorMessage(SHARED.VALIDATION_MISSING_REQUIRED_DATA, message);
|
|
2678
2751
|
return false;
|
|
2679
2752
|
}
|
|
2680
2753
|
return true;
|
|
@@ -2797,6 +2870,8 @@ class DocumentUploadComponent {
|
|
|
2797
2870
|
isSaving = false;
|
|
2798
2871
|
/** Current form validation state */
|
|
2799
2872
|
isFormValid = false;
|
|
2873
|
+
/** File size property for testing */
|
|
2874
|
+
fileSize = '';
|
|
2800
2875
|
/** Subject for managing component lifecycle and unsubscribing from observables */
|
|
2801
2876
|
destroy$ = new Subject();
|
|
2802
2877
|
/**
|
|
@@ -2830,6 +2905,7 @@ class DocumentUploadComponent {
|
|
|
2830
2905
|
this.resetSelections();
|
|
2831
2906
|
this.loadCategories();
|
|
2832
2907
|
this.handleApplicantLoading();
|
|
2908
|
+
this.validateForm(); // Validate form after assignment type change
|
|
2833
2909
|
this.emitFormValidationChange();
|
|
2834
2910
|
}
|
|
2835
2911
|
/**
|
|
@@ -2840,6 +2916,7 @@ class DocumentUploadComponent {
|
|
|
2840
2916
|
this.resetDocumentType();
|
|
2841
2917
|
if (this.selectedCategory)
|
|
2842
2918
|
this.loadDocumentTypes();
|
|
2919
|
+
this.validateForm(); // Validate form after category change
|
|
2843
2920
|
this.validateAndEmit();
|
|
2844
2921
|
}
|
|
2845
2922
|
/**
|
|
@@ -2953,7 +3030,8 @@ class DocumentUploadComponent {
|
|
|
2953
3030
|
* @returns True if the save button should be disabled, false otherwise
|
|
2954
3031
|
*/
|
|
2955
3032
|
getSaveButtonDisabled() {
|
|
2956
|
-
|
|
3033
|
+
const isDisabled = this.businessService.isSaveButtonDisabled(this.selectedAssignmentType, this.selectedCategory, this.selectedDocumentType, this.selectedApplicant, this.uploadedFiles, this.isSaving);
|
|
3034
|
+
return isDisabled;
|
|
2957
3035
|
}
|
|
2958
3036
|
/**
|
|
2959
3037
|
* Gets the upload progress for a specific file.
|
|
@@ -3117,6 +3195,8 @@ class DocumentUploadComponent {
|
|
|
3117
3195
|
if (uploadedFileObj) {
|
|
3118
3196
|
uploadedFileObj.uploadResponse = response;
|
|
3119
3197
|
uploadedFileObj.progress = SHARED.UPLOAD_PROGRESS_100;
|
|
3198
|
+
uploadedFileObj.url = response?.url;
|
|
3199
|
+
uploadedFileObj.contentType = response?.contentType;
|
|
3120
3200
|
}
|
|
3121
3201
|
this.cdr.detectChanges();
|
|
3122
3202
|
this.onFormValidationChange.emit();
|
|
@@ -3146,6 +3226,13 @@ class DocumentUploadComponent {
|
|
|
3146
3226
|
emitFormValidationChange() {
|
|
3147
3227
|
this.onFormValidationChange.emit();
|
|
3148
3228
|
}
|
|
3229
|
+
/**
|
|
3230
|
+
* Formats file size for testing purposes.
|
|
3231
|
+
* @param size - The file size in bytes
|
|
3232
|
+
*/
|
|
3233
|
+
formatSize(size) {
|
|
3234
|
+
this.fileSize = this.businessService.formatFileSize(size, this.config);
|
|
3235
|
+
}
|
|
3149
3236
|
/**
|
|
3150
3237
|
* Lifecycle hook that is called when component is destroyed.
|
|
3151
3238
|
* Cleans up subscriptions and destroys services.
|
|
@@ -3420,6 +3507,7 @@ class UserListComponent {
|
|
|
3420
3507
|
documentStore;
|
|
3421
3508
|
documentQuery;
|
|
3422
3509
|
userListService;
|
|
3510
|
+
cdr;
|
|
3423
3511
|
userList = SHARED.EMPTY_ARRAY;
|
|
3424
3512
|
categories = SHARED.EMPTY_ARRAY;
|
|
3425
3513
|
userSelected = new EventEmitter();
|
|
@@ -3427,16 +3515,22 @@ class UserListComponent {
|
|
|
3427
3515
|
filteredUserData = SHARED.EMPTY_ARRAY;
|
|
3428
3516
|
selectedUser;
|
|
3429
3517
|
shouldShowContainer = true;
|
|
3430
|
-
|
|
3518
|
+
userListSubscription = new Subscription();
|
|
3519
|
+
categoriesSubscription = new Subscription();
|
|
3520
|
+
constructor(documentService, documentStore, documentQuery, userListService, cdr) {
|
|
3431
3521
|
this.documentService = documentService;
|
|
3432
3522
|
this.documentStore = documentStore;
|
|
3433
3523
|
this.documentQuery = documentQuery;
|
|
3434
3524
|
this.userListService = userListService;
|
|
3525
|
+
this.cdr = cdr;
|
|
3435
3526
|
}
|
|
3436
3527
|
ngOnChanges(changes) {
|
|
3437
3528
|
if (changes['userList'] && !changes['userList'].firstChange) {
|
|
3438
3529
|
this.initializeUserData();
|
|
3439
3530
|
}
|
|
3531
|
+
if (changes['categories'] && !changes['categories'].firstChange) {
|
|
3532
|
+
this.updateFilteredUserData();
|
|
3533
|
+
}
|
|
3440
3534
|
}
|
|
3441
3535
|
initializeUserData() {
|
|
3442
3536
|
if (this.userList && this.userList.length > 0) {
|
|
@@ -3464,6 +3558,28 @@ class UserListComponent {
|
|
|
3464
3558
|
}
|
|
3465
3559
|
ngOnInit() {
|
|
3466
3560
|
this.initializeUserData();
|
|
3561
|
+
this.userListSubscription.add(this.documentQuery.selectUserList().subscribe(userList => {
|
|
3562
|
+
if (userList && userList.length > 0) {
|
|
3563
|
+
this.userList = userList;
|
|
3564
|
+
this.initializeUserData();
|
|
3565
|
+
this.cdr.markForCheck();
|
|
3566
|
+
}
|
|
3567
|
+
}));
|
|
3568
|
+
this.categoriesSubscription.add(this.documentQuery.selectDocumentCategories().subscribe(categories => {
|
|
3569
|
+
if (categories && categories.length > 0) {
|
|
3570
|
+
this.categories = categories;
|
|
3571
|
+
this.updateFilteredUserData();
|
|
3572
|
+
this.cdr.markForCheck();
|
|
3573
|
+
}
|
|
3574
|
+
}));
|
|
3575
|
+
this.userListSubscription.add(this.documentQuery.selectDocumentListResponse().subscribe(() => {
|
|
3576
|
+
const currentUserList = this.documentQuery.getUserList();
|
|
3577
|
+
if (currentUserList && currentUserList.length > 0) {
|
|
3578
|
+
this.userList = currentUserList;
|
|
3579
|
+
this.initializeUserData();
|
|
3580
|
+
this.cdr.markForCheck();
|
|
3581
|
+
}
|
|
3582
|
+
}));
|
|
3467
3583
|
this.documentQuery.selectSelectedUserId().subscribe(userId => {
|
|
3468
3584
|
if (userId) {
|
|
3469
3585
|
const user = this.userData.find(u => u._id === userId);
|
|
@@ -3472,6 +3588,7 @@ class UserListComponent {
|
|
|
3472
3588
|
else {
|
|
3473
3589
|
this.selectedUser = undefined;
|
|
3474
3590
|
}
|
|
3591
|
+
this.cdr.markForCheck();
|
|
3475
3592
|
});
|
|
3476
3593
|
this.documentQuery.selectSelectedMenuItem().subscribe(menuItemId => {
|
|
3477
3594
|
this.updateFilteredUserData();
|
|
@@ -3483,6 +3600,7 @@ class UserListComponent {
|
|
|
3483
3600
|
this.userSelected.emit(SHARED.EMPTY);
|
|
3484
3601
|
}
|
|
3485
3602
|
}
|
|
3603
|
+
this.cdr.markForCheck();
|
|
3486
3604
|
});
|
|
3487
3605
|
this.documentQuery.selectShowUserList().subscribe(show => {
|
|
3488
3606
|
if (!show && this.selectedUser) {
|
|
@@ -3503,7 +3621,11 @@ class UserListComponent {
|
|
|
3503
3621
|
this.userSelected.emit(username);
|
|
3504
3622
|
}
|
|
3505
3623
|
}
|
|
3506
|
-
|
|
3624
|
+
ngOnDestroy() {
|
|
3625
|
+
this.userListSubscription.unsubscribe();
|
|
3626
|
+
this.categoriesSubscription.unsubscribe();
|
|
3627
|
+
}
|
|
3628
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UserListComponent, deps: [{ token: DocumentHelperService }, { token: DocumentStore }, { token: DocumentQuery }, { token: UserListService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
3507
3629
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: UserListComponent, isStandalone: false, selector: "lib-user-list", inputs: { userList: "userList", categories: "categories" }, outputs: { userSelected: "userSelected" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"user-list-container\" [@slideInFromTop]>\r\n <div class=\"user-cards\">\r\n <div \r\n *ngFor=\"let user of filteredUserData\" \r\n class=\"user-card\"\r\n [class.selected]=\"selectedUser === user.name\"\r\n [style.border-color]=\"selectedUser === user.name ? '#f97316' : 'transparent'\"\r\n (click)=\"onUserSelect(user.name, user._id)\"\r\n >\r\n @if(user.name === \"Application Docs\"){\r\n <div class=\"user-avatar\" [ngClass]=\"'avatar-' + user.color\">\r\n <span class=\"initials\"><i class=\"pi pi-user\"></i></span>\r\n </div>\r\n }@else {\r\n <div class=\"user-avatar\" [ngClass]=\"'avatar-' + user.color\">\r\n <span class=\"initials\">{{ user.initials }}</span>\r\n </div>\r\n }\r\n <div class=\"user-info\">\r\n <div class=\"username\">{{ user.name }}</div>\r\n <div class=\"document-counts\">\r\n {{ user.approved }} approved / {{ user.pending }} pending\r\n </div>\r\n </div>\r\n <div class=\"selection-indicator\" *ngIf=\"selectedUser === user.name\" [@fadeIn]>\r\n <i class=\"ri-check-line\"></i>\r\n </div>\r\n </div>\r\n \r\n <!-- Show message when filtered list is empty -->\r\n <div *ngIf=\"filteredUserData.length === 0 && shouldShowContainer\" class=\"no-users-message\" [@slideInFromTop]>\r\n <p>No users available for this category.</p>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".user-list-container{padding:1rem}.user-cards{display:flex;flex-wrap:wrap;gap:1rem;transition:all .3s ease-in-out}.user-card{display:flex;align-items:center;gap:.75rem;padding:1rem;border:2px solid transparent;border-radius:8px;cursor:pointer;transition:all .2s ease;background:#fff;box-shadow:0 2px 4px #0000001a;min-width:284px;max-width:284px;height:80px;position:relative;flex-shrink:0}.user-card:hover{box-shadow:0 4px 8px #00000026}.user-card.selected{background-color:#f8fafc;box-shadow:0 4px 8px #00000026;border-width:2px}.user-avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;font-size:14px;flex-shrink:0}.avatar-orange{background-color:#f97316}.avatar-blue{background-color:#3b82f6}.avatar-green{background-color:#10b981}.avatar-grey{background-color:#6b7280}.avatar-purple{background-color:#8b5cf6}.user-info{flex:1;min-width:0;overflow:hidden}.username{font-weight:600;color:#1f2937;margin-bottom:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.document-counts{font-size:.875rem;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.selection-indicator{position:absolute;top:8px;right:8px;width:20px;height:20px;background-color:#10b981;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;flex-shrink:0}.no-users-message{display:flex;justify-content:center;align-items:center;padding:2rem;background:#f8fafc;border-radius:8px;border:2px dashed #d1d5db;margin:1rem 0}.no-users-message p{color:#6b7280;font-size:.875rem;font-weight:500;margin:0;text-align:center}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
|
|
3508
3630
|
trigger('slideInFromTop', [
|
|
3509
3631
|
state('void', style({
|
|
@@ -3531,11 +3653,11 @@ class UserListComponent {
|
|
|
3531
3653
|
animate('200ms ease-in-out')
|
|
3532
3654
|
])
|
|
3533
3655
|
])
|
|
3534
|
-
] });
|
|
3656
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3535
3657
|
}
|
|
3536
3658
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UserListComponent, decorators: [{
|
|
3537
3659
|
type: Component,
|
|
3538
|
-
args: [{ selector: 'lib-user-list', standalone: false, animations: [
|
|
3660
|
+
args: [{ selector: 'lib-user-list', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
3539
3661
|
trigger('slideInFromTop', [
|
|
3540
3662
|
state('void', style({
|
|
3541
3663
|
opacity: 0,
|
|
@@ -3563,7 +3685,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
3563
3685
|
])
|
|
3564
3686
|
])
|
|
3565
3687
|
], template: "<div class=\"user-list-container\" [@slideInFromTop]>\r\n <div class=\"user-cards\">\r\n <div \r\n *ngFor=\"let user of filteredUserData\" \r\n class=\"user-card\"\r\n [class.selected]=\"selectedUser === user.name\"\r\n [style.border-color]=\"selectedUser === user.name ? '#f97316' : 'transparent'\"\r\n (click)=\"onUserSelect(user.name, user._id)\"\r\n >\r\n @if(user.name === \"Application Docs\"){\r\n <div class=\"user-avatar\" [ngClass]=\"'avatar-' + user.color\">\r\n <span class=\"initials\"><i class=\"pi pi-user\"></i></span>\r\n </div>\r\n }@else {\r\n <div class=\"user-avatar\" [ngClass]=\"'avatar-' + user.color\">\r\n <span class=\"initials\">{{ user.initials }}</span>\r\n </div>\r\n }\r\n <div class=\"user-info\">\r\n <div class=\"username\">{{ user.name }}</div>\r\n <div class=\"document-counts\">\r\n {{ user.approved }} approved / {{ user.pending }} pending\r\n </div>\r\n </div>\r\n <div class=\"selection-indicator\" *ngIf=\"selectedUser === user.name\" [@fadeIn]>\r\n <i class=\"ri-check-line\"></i>\r\n </div>\r\n </div>\r\n \r\n <!-- Show message when filtered list is empty -->\r\n <div *ngIf=\"filteredUserData.length === 0 && shouldShowContainer\" class=\"no-users-message\" [@slideInFromTop]>\r\n <p>No users available for this category.</p>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".user-list-container{padding:1rem}.user-cards{display:flex;flex-wrap:wrap;gap:1rem;transition:all .3s ease-in-out}.user-card{display:flex;align-items:center;gap:.75rem;padding:1rem;border:2px solid transparent;border-radius:8px;cursor:pointer;transition:all .2s ease;background:#fff;box-shadow:0 2px 4px #0000001a;min-width:284px;max-width:284px;height:80px;position:relative;flex-shrink:0}.user-card:hover{box-shadow:0 4px 8px #00000026}.user-card.selected{background-color:#f8fafc;box-shadow:0 4px 8px #00000026;border-width:2px}.user-avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;font-size:14px;flex-shrink:0}.avatar-orange{background-color:#f97316}.avatar-blue{background-color:#3b82f6}.avatar-green{background-color:#10b981}.avatar-grey{background-color:#6b7280}.avatar-purple{background-color:#8b5cf6}.user-info{flex:1;min-width:0;overflow:hidden}.username{font-weight:600;color:#1f2937;margin-bottom:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.document-counts{font-size:.875rem;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.selection-indicator{position:absolute;top:8px;right:8px;width:20px;height:20px;background-color:#10b981;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;flex-shrink:0}.no-users-message{display:flex;justify-content:center;align-items:center;padding:2rem;background:#f8fafc;border-radius:8px;border:2px dashed #d1d5db;margin:1rem 0}.no-users-message p{color:#6b7280;font-size:.875rem;font-weight:500;margin:0;text-align:center}\n"] }]
|
|
3566
|
-
}], ctorParameters: () => [{ type: DocumentHelperService }, { type: DocumentStore }, { type: DocumentQuery }, { type: UserListService }], propDecorators: { userList: [{
|
|
3688
|
+
}], ctorParameters: () => [{ type: DocumentHelperService }, { type: DocumentStore }, { type: DocumentQuery }, { type: UserListService }, { type: i0.ChangeDetectorRef }], propDecorators: { userList: [{
|
|
3567
3689
|
type: Input
|
|
3568
3690
|
}], categories: [{
|
|
3569
3691
|
type: Input
|
|
@@ -4997,6 +5119,85 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
4997
5119
|
type: Input
|
|
4998
5120
|
}] } });
|
|
4999
5121
|
|
|
5122
|
+
class ConfirmationDialogComponent {
|
|
5123
|
+
confirmationService;
|
|
5124
|
+
confirmationOptions = {
|
|
5125
|
+
message: 'Are you sure that you want to proceed?',
|
|
5126
|
+
header: 'Confirmation',
|
|
5127
|
+
icon: 'pi pi-exclamation-triangle',
|
|
5128
|
+
acceptLabel: 'Yes',
|
|
5129
|
+
rejectLabel: 'No',
|
|
5130
|
+
acceptIcon: 'pi pi-check',
|
|
5131
|
+
rejectIcon: 'pi pi-times',
|
|
5132
|
+
acceptButtonClass: 'p-button-success',
|
|
5133
|
+
rejectButtonClass: 'p-button-secondary'
|
|
5134
|
+
};
|
|
5135
|
+
constructor(confirmationService) {
|
|
5136
|
+
this.confirmationService = confirmationService;
|
|
5137
|
+
}
|
|
5138
|
+
/**
|
|
5139
|
+
* Shows the confirmation dialog with the specified options
|
|
5140
|
+
* @param options - Configuration options for the confirmation dialog
|
|
5141
|
+
* @param acceptCallback - Function to execute when user accepts
|
|
5142
|
+
* @param rejectCallback - Function to execute when user rejects
|
|
5143
|
+
*/
|
|
5144
|
+
confirm(options, acceptCallback, rejectCallback) {
|
|
5145
|
+
const finalOptions = { ...this.confirmationOptions, ...options };
|
|
5146
|
+
this.confirmationService.confirm({
|
|
5147
|
+
message: finalOptions.message,
|
|
5148
|
+
header: finalOptions.header,
|
|
5149
|
+
icon: finalOptions.icon,
|
|
5150
|
+
acceptLabel: finalOptions.acceptLabel,
|
|
5151
|
+
rejectLabel: finalOptions.rejectLabel,
|
|
5152
|
+
acceptIcon: finalOptions.acceptIcon,
|
|
5153
|
+
rejectIcon: finalOptions.rejectIcon,
|
|
5154
|
+
acceptButtonStyleClass: finalOptions.acceptButtonClass,
|
|
5155
|
+
rejectButtonStyleClass: finalOptions.rejectButtonClass,
|
|
5156
|
+
accept: acceptCallback,
|
|
5157
|
+
reject: rejectCallback
|
|
5158
|
+
});
|
|
5159
|
+
}
|
|
5160
|
+
/**
|
|
5161
|
+
* Shows a delete confirmation dialog
|
|
5162
|
+
* @param itemName - Name of the item to be deleted
|
|
5163
|
+
* @param acceptCallback - Function to execute when user accepts deletion
|
|
5164
|
+
* @param rejectCallback - Function to execute when user rejects deletion
|
|
5165
|
+
*/
|
|
5166
|
+
confirmDelete(itemName, acceptCallback, rejectCallback) {
|
|
5167
|
+
this.confirm({
|
|
5168
|
+
message: `Are you sure you want to delete "${itemName}"?`,
|
|
5169
|
+
header: 'Delete Confirmation',
|
|
5170
|
+
acceptLabel: 'Delete',
|
|
5171
|
+
rejectLabel: 'Cancel',
|
|
5172
|
+
acceptButtonClass: 'p-button-danger'
|
|
5173
|
+
}, acceptCallback, rejectCallback);
|
|
5174
|
+
}
|
|
5175
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: i3.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5176
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ConfirmationDialogComponent, isStandalone: false, selector: "app-confirmation-dialog", inputs: { confirmationOptions: "confirmationOptions" }, ngImport: i0, template: `
|
|
5177
|
+
<p-confirmDialog
|
|
5178
|
+
[style]="{ width: '25rem', height : '15rem' }"
|
|
5179
|
+
acceptButtonStyleClass="p-button-success"
|
|
5180
|
+
rejectButtonStyleClass="p-button-secondary">
|
|
5181
|
+
</p-confirmDialog>
|
|
5182
|
+
`, isInline: true, dependencies: [{ kind: "component", type: i2$3.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }] });
|
|
5183
|
+
}
|
|
5184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
|
|
5185
|
+
type: Component,
|
|
5186
|
+
args: [{
|
|
5187
|
+
selector: 'app-confirmation-dialog',
|
|
5188
|
+
template: `
|
|
5189
|
+
<p-confirmDialog
|
|
5190
|
+
[style]="{ width: '25rem', height : '15rem' }"
|
|
5191
|
+
acceptButtonStyleClass="p-button-success"
|
|
5192
|
+
rejectButtonStyleClass="p-button-secondary">
|
|
5193
|
+
</p-confirmDialog>
|
|
5194
|
+
`,
|
|
5195
|
+
standalone: false
|
|
5196
|
+
}]
|
|
5197
|
+
}], ctorParameters: () => [{ type: i3.ConfirmationService }], propDecorators: { confirmationOptions: [{
|
|
5198
|
+
type: Input
|
|
5199
|
+
}] } });
|
|
5200
|
+
|
|
5000
5201
|
class DocumentActionsService {
|
|
5001
5202
|
/**
|
|
5002
5203
|
* Calculates the card class based on status
|
|
@@ -5121,6 +5322,7 @@ class DocumentActionsComponent {
|
|
|
5121
5322
|
rejectButtonClass = SHARED.BUTTON_DEFAULT_REJECT;
|
|
5122
5323
|
acceptButtonClass = SHARED.BUTTON_DEFAULT_ACCEPT;
|
|
5123
5324
|
isRejectNoteEmpty = true;
|
|
5325
|
+
confirmationDialog;
|
|
5124
5326
|
constructor(documentActionsService) {
|
|
5125
5327
|
this.documentActionsService = documentActionsService;
|
|
5126
5328
|
}
|
|
@@ -5167,7 +5369,10 @@ class DocumentActionsComponent {
|
|
|
5167
5369
|
this.showRejectDialog = true;
|
|
5168
5370
|
}
|
|
5169
5371
|
onDeleteClick() {
|
|
5170
|
-
this.
|
|
5372
|
+
const documentName = this.document?.name || this.document?.fileName || 'this document';
|
|
5373
|
+
this.confirmationDialog.confirmDelete(documentName, () => {
|
|
5374
|
+
this.actionPerformed.emit(this.documentActionsService.createDeleteAction());
|
|
5375
|
+
}, () => { });
|
|
5171
5376
|
}
|
|
5172
5377
|
onAcceptConfirm() {
|
|
5173
5378
|
this.isAccepting = true;
|
|
@@ -5188,11 +5393,11 @@ class DocumentActionsComponent {
|
|
|
5188
5393
|
this.rejectNote = SHARED.EMPTY;
|
|
5189
5394
|
}
|
|
5190
5395
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentActionsComponent, deps: [{ token: DocumentActionsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5191
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: DocumentActionsComponent, isStandalone: false, selector: "document-actions", inputs: { document: "document", documentId: "documentId", currentStatus: "currentStatus", isLoading: "isLoading", isUploaded: "isUploaded", statusId: "statusId" }, outputs: { actionPerformed: "actionPerformed" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"document-actions-container\" >\r\n <div class=\"actions-card\" [ngClass]=\"cardClass\">\r\n <div class=\"actions-buttons\">\r\n <!-- Reject Button -->\r\n <button *ngIf=\"!document?.isUploaded\" class=\"action-btn reject-btn\" [ngClass]=\"rejectButtonClass\" (click)=\"onRejectClick()\"\r\n [disabled]=\"currentStatus === SHARED.STATUS_REJECTED_LOWERCASE || isRejecting\">\r\n <i class=\"pi pi-times\" *ngIf=\"currentStatus === SHARED.STATUS_REJECTED_LOWERCASE\"></i>\r\n <i class=\"pi pi-spin pi-spinner\" *ngIf=\"isRejecting\"></i>\r\n <span>{{ currentStatus === SHARED.STATUS_REJECTED_LOWERCASE ? SHARED.BUTTON_LABEL_REJECTED :\r\n SHARED.BUTTON_LABEL_REJECT }}</span>\r\n </button>\r\n\r\n <!-- Accept Button -->\r\n <button *ngIf=\"!document?.isUploaded\" class=\"action-btn accept-btn\" [ngClass]=\"acceptButtonClass\" (click)=\"onAcceptClick()\"\r\n [disabled]=\"currentStatus === SHARED.STATUS_ACCEPTED || isAccepting\">\r\n <i class=\"pi pi-check\" *ngIf=\"currentStatus === SHARED.STATUS_ACCEPTED\"></i>\r\n <i class=\"pi pi-spin pi-spinner\" *ngIf=\"isAccepting\"></i>\r\n <span>{{ currentStatus === SHARED.STATUS_ACCEPTED ? SHARED.BUTTON_LABEL_ACCEPTED : SHARED.BUTTON_LABEL_ACCEPT\r\n }}</span>\r\n </button>\r\n\r\n <!-- Delete Button -->\r\n @if(document?.isUploaded){\r\n <button class=\"action-btn delete-btn\" (click)=\"onDeleteClick()\" [disabled]=\"isLoading\"\r\n [permission]=\"'documents-deleteDocumentByDocumentId'\" pTooltip=\"Delete Document\" tooltipPosition=\"top\">\r\n <i class=\"pi pi-trash\"></i>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Accept Confirmation Dialog -->\r\n<p-dialog [(visible)]=\"showAcceptDialog\" [header]=\"SHARED.ACCEPT_CONFIRM_HEADER\" [modal]=\"true\" [draggable]=\"false\"\r\n [closable]=\"true\" [style]=\"{ width: '25rem', height: '25rem' }\" styleClass=\"confirmation-dialog\">\r\n <div class=\"dialog-content\">\r\n <label for=\"acceptNote\" class=\"note-label\">{{ SHARED.ACCEPT_NOTE_LABEL }}</label>\r\n <textarea id=\"acceptNote\" pInputTextarea [(ngModel)]=\"acceptNote\" [placeholder]=\"SHARED.ACCEPT_NOTE_PLACEHOLDER\"\r\n rows=\"6\" class=\"note-textarea\">\r\n </textarea>\r\n </div>\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"dialog-footer\">\r\n <button pButton [label]=\"SHARED.CANCEL_BUTTON_LABEL\" class=\"p-button-secondary\" (click)=\"onCancel()\">\r\n </button>\r\n <button pButton [label]=\"SHARED.ACCEPT_BUTTON_LABEL\" class=\"p-button-success\" (click)=\"onAcceptConfirm()\">\r\n </button>\r\n </div>\r\n </ng-template>\r\n</p-dialog>\r\n\r\n<!-- Reject Confirmation Dialog -->\r\n<p-dialog [(visible)]=\"showRejectDialog\" [header]=\"SHARED.REJECT_CONFIRM_HEADER\" [modal]=\"true\" [draggable]=\"false\"\r\n [closable]=\"true\" [style]=\"{ width: '25rem', height: '25rem' }\" styleClass=\"confirmation-dialog\">\r\n <div class=\"dialog-content\">\r\n <label for=\"rejectNote\" class=\"note-label\">{{ SHARED.REJECT_NOTE_LABEL }}</label>\r\n <textarea id=\"rejectNote\" pInputTextarea [(ngModel)]=\"rejectNote\" [placeholder]=\"SHARED.REJECT_NOTE_PLACEHOLDER\"\r\n rows=\"6\" class=\"note-textarea\">\r\n </textarea>\r\n </div>\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"dialog-footer\">\r\n <button pButton [label]=\"SHARED.CANCEL_BUTTON_LABEL\" class=\"p-button-secondary\" (click)=\"onCancel()\">\r\n </button>\r\n <button pButton [label]=\"SHARED.REJECT_BUTTON_LABEL\" class=\"p-button-danger\" [disabled]=\"isRejectNoteEmpty\"\r\n (click)=\"onRejectConfirm()\">\r\n </button>\r\n </div>\r\n </ng-template>\r\n</p-dialog>", styles: [".document-actions-container{margin:0}.actions-card{border-radius:8px;padding:.75rem;box-shadow:0 2px 4px #0000001a;transition:all .3s ease}.actions-card.pending-card{background-color:#f8f9fa;border:1px solid #e9ecef}.actions-card.accepted-card{background-color:#d4edda;border:1px solid #28a745}.actions-card.rejected-card{background-color:#f8d7da;border:1px solid #dc3545}.actions-card[class*=status-].status-approved-card{background-color:#d4edda;border:1px solid #28a745}.actions-card[class*=status-].status-rejected-card{background-color:#f8d7da;border:1px solid #dc3545}.actions-card[class*=status-].status-pending-card{background-color:#f8f9fa;border:1px solid #e9ecef}.actions-buttons{display:flex;gap:.5rem;align-items:center}.action-btn{padding:.5rem 1rem;border-radius:6px;border:1px solid;font-weight:500;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:.5rem;min-width:80px;justify-content:center}.action-btn:disabled{opacity:.6;cursor:not-allowed}.action-btn i{font-size:.875rem}.reject-btn.default-reject{background-color:#fff5f5;border-color:#feb2b2;color:#4a5568}.reject-btn.default-reject:hover:not(:disabled){background-color:#fed7d7;border-color:#fc8181}.reject-btn.secondary-reject{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.reject-btn.secondary-reject:hover:not(:disabled){background-color:#edf2f7;border-color:#cbd5e0}.reject-btn.primary-reject{background-color:#dc3545;border-color:#dc3545;color:#fff}.reject-btn.primary-reject:hover:not(:disabled){background-color:#c82333;border-color:#bd2130}.reject-btn[class*=status-].status-approved-reject{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.reject-btn[class*=status-].status-approved-reject:hover:not(:disabled){background-color:#edf2f7;border-color:#cbd5e0}.reject-btn[class*=status-].status-rejected-reject{background-color:#dc3545;border-color:#dc3545;color:#fff}.reject-btn[class*=status-].status-rejected-reject:hover:not(:disabled){background-color:#c82333;border-color:#bd2130}.reject-btn[class*=status-].status-pending-reject{background-color:#fff5f5;border-color:#feb2b2;color:#4a5568}.reject-btn[class*=status-].status-pending-reject:hover:not(:disabled){background-color:#fed7d7;border-color:#fc8181}.accept-btn.default-accept{background-color:#f0fff4;border-color:#9ae6b4;color:#4a5568}.accept-btn.default-accept:hover:not(:disabled){background-color:#c6f6d5;border-color:#68d391}.accept-btn.secondary-accept{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.accept-btn.secondary-accept:hover:not(:disabled){background-color:#edf2f7;border-color:#cbd5e0}.accept-btn.primary-accept{background-color:#28a745;border-color:#28a745;color:#fff}.accept-btn.primary-accept:hover:not(:disabled){background-color:#218838;border-color:#1e7e34}.accept-btn[class*=status-].status-approved-accept{background-color:#28a745;border-color:#28a745;color:#fff}.accept-btn[class*=status-].status-approved-accept:hover:not(:disabled){background-color:#218838;border-color:#1e7e34}.accept-btn[class*=status-].status-rejected-accept{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.accept-btn[class*=status-].status-rejected-accept:hover:not(:disabled){background-color:#edf2f7;border-color:#cbd5e0}.accept-btn[class*=status-].status-pending-accept{background-color:#f0fff4;border-color:#9ae6b4;color:#4a5568}.accept-btn[class*=status-].status-pending-accept:hover:not(:disabled){background-color:#c6f6d5;border-color:#68d391}.delete-btn{background-color:#fff;border-color:#e2e8f0;color:#e53e3e;padding:.5rem;min-width:auto;width:40px;height:40px}.delete-btn:hover:not(:disabled){background-color:#fed7d7;border-color:#fc8181;color:#c53030}.delete-btn i{font-size:1rem}:host ::ng-deep .confirmation-dialog .p-dialog{border-radius:8px;box-shadow:0 4px 12px #00000026;border:none;overflow:hidden}:host ::ng-deep .confirmation-dialog .p-dialog-header{padding:1.25rem 1.5rem;background-color:#fff;border-bottom:none;border-top-right-radius:10px;border-top-left-radius:10px}:host ::ng-deep .confirmation-dialog .p-dialog-header .p-dialog-header-icon{display:none}:host ::ng-deep .confirmation-dialog .p-dialog-header .p-dialog-title{font-size:1.125rem;font-weight:600;color:#2d3748;margin:0}:host ::ng-deep .confirmation-dialog .p-dialog-content{padding:1.5rem;background-color:#fff}:host ::ng-deep .confirmation-dialog .p-dialog-footer{padding:1rem 1.5rem;background-color:#f7fafc;border-top:1px solid #e2e8f0;display:flex;gap:.75rem;justify-content:flex-end;border-bottom-right-radius:10px;border-bottom-left-radius:10px}.dialog-content .note-label{display:block;margin-bottom:.75rem;font-weight:500;font-size:.875rem;color:#2d3748}.dialog-content .note-textarea{width:100%;min-height:100px;padding:.75rem;border:1px solid #e2e8f0;border-radius:6px;font-family:inherit;font-size:.875rem;line-height:1.5;resize:vertical;background-color:#fff;color:#2d3748}.dialog-content .note-textarea::placeholder{color:#a0aec0}.dialog-content .note-textarea:focus{outline:none;border-color:#3182ce;box-shadow:0 0 0 3px #3182ce1a}.dialog-footer{display:flex;gap:.75rem;justify-content:flex-end}.dialog-footer button{min-width:80px;padding:.5rem 1rem;border-radius:6px;font-weight:500;font-size:.875rem;border:1px solid;cursor:pointer;transition:all .2s ease}.dialog-footer button.p-button-secondary{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.dialog-footer button.p-button-secondary:hover{background-color:#edf2f7;border-color:#cbd5e0}.dialog-footer button.p-button-success{background-color:#38a169;border-color:#38a169;color:#fff}.dialog-footer button.p-button-success:hover{background-color:#2f855a;border-color:#2f855a}.dialog-footer button.p-button-danger{background-color:#e53e3e;border-color:#e53e3e;color:#fff}.dialog-footer button.p-button-danger:hover{background-color:#c53030;border-color:#c53030}\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: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i5$2.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize", "variant"], outputs: ["onResize"] }, { kind: "directive", type: i3$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: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.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: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: HasPermissionDirective, selector: "[permission]", inputs: ["permission"] }] });
|
|
5396
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: DocumentActionsComponent, isStandalone: false, selector: "document-actions", inputs: { document: "document", documentId: "documentId", currentStatus: "currentStatus", isLoading: "isLoading", isUploaded: "isUploaded", statusId: "statusId" }, outputs: { actionPerformed: "actionPerformed" }, viewQueries: [{ propertyName: "confirmationDialog", first: true, predicate: ConfirmationDialogComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"document-actions-container\" >\r\n <div class=\"actions-card\" [ngClass]=\"cardClass\">\r\n <div class=\"actions-buttons\">\r\n <!-- Reject Button -->\r\n <button *ngIf=\"!document?.isUploaded\" class=\"action-btn reject-btn\" [ngClass]=\"rejectButtonClass\" (click)=\"onRejectClick()\"\r\n [disabled]=\"currentStatus === SHARED.STATUS_REJECTED_LOWERCASE || isRejecting\">\r\n <i class=\"pi pi-times\" *ngIf=\"currentStatus === SHARED.STATUS_REJECTED_LOWERCASE\"></i>\r\n <i class=\"pi pi-spin pi-spinner\" *ngIf=\"isRejecting\"></i>\r\n <span>{{ currentStatus === SHARED.STATUS_REJECTED_LOWERCASE ? SHARED.BUTTON_LABEL_REJECTED :\r\n SHARED.BUTTON_LABEL_REJECT }}</span>\r\n </button>\r\n\r\n <!-- Accept Button -->\r\n <button *ngIf=\"!document?.isUploaded\" class=\"action-btn accept-btn\" [ngClass]=\"acceptButtonClass\" (click)=\"onAcceptClick()\"\r\n [disabled]=\"currentStatus === SHARED.STATUS_ACCEPTED || isAccepting\">\r\n <i class=\"pi pi-check\" *ngIf=\"currentStatus === SHARED.STATUS_ACCEPTED\"></i>\r\n <i class=\"pi pi-spin pi-spinner\" *ngIf=\"isAccepting\"></i>\r\n <span>{{ currentStatus === SHARED.STATUS_ACCEPTED ? SHARED.BUTTON_LABEL_ACCEPTED : SHARED.BUTTON_LABEL_ACCEPT\r\n }}</span>\r\n </button>\r\n\r\n <!-- Delete Button -->\r\n @if(document?.isUploaded){\r\n <button class=\"action-btn delete-btn\" (click)=\"onDeleteClick()\" [disabled]=\"isLoading\"\r\n [permission]=\"'documents-deleteDocumentByDocumentId'\" pTooltip=\"Delete Document\" tooltipPosition=\"top\">\r\n <i class=\"pi pi-trash\"></i>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<app-confirmation-dialog></app-confirmation-dialog>\r\n\r\n<p-dialog [(visible)]=\"showAcceptDialog\" [header]=\"SHARED.ACCEPT_CONFIRM_HEADER\" [modal]=\"true\" [draggable]=\"false\"\r\n [closable]=\"true\" [style]=\"{ width: '25rem', height: '25rem' }\" styleClass=\"confirmation-dialog\">\r\n <div class=\"dialog-content\">\r\n <label for=\"acceptNote\" class=\"note-label\">{{ SHARED.ACCEPT_NOTE_LABEL }}</label>\r\n <textarea id=\"acceptNote\" pInputTextarea [(ngModel)]=\"acceptNote\" [placeholder]=\"SHARED.ACCEPT_NOTE_PLACEHOLDER\"\r\n rows=\"6\" class=\"note-textarea\">\r\n </textarea>\r\n </div>\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"dialog-footer\">\r\n <button pButton [label]=\"SHARED.CANCEL_BUTTON_LABEL\" class=\"p-button-secondary\" (click)=\"onCancel()\">\r\n </button>\r\n <button pButton [label]=\"SHARED.ACCEPT_BUTTON_LABEL\" class=\"p-button-success\" (click)=\"onAcceptConfirm()\">\r\n </button>\r\n </div>\r\n </ng-template>\r\n</p-dialog>\r\n\r\n<p-dialog [(visible)]=\"showRejectDialog\" [header]=\"SHARED.REJECT_CONFIRM_HEADER\" [modal]=\"true\" [draggable]=\"false\"\r\n [closable]=\"true\" [style]=\"{ width: '25rem', height: '25rem' }\" styleClass=\"confirmation-dialog\">\r\n <div class=\"dialog-content\">\r\n <label for=\"rejectNote\" class=\"note-label\">{{ SHARED.REJECT_NOTE_LABEL }}</label>\r\n <textarea id=\"rejectNote\" pInputTextarea [(ngModel)]=\"rejectNote\" [placeholder]=\"SHARED.REJECT_NOTE_PLACEHOLDER\"\r\n rows=\"6\" class=\"note-textarea\">\r\n </textarea>\r\n </div>\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"dialog-footer\">\r\n <button pButton [label]=\"SHARED.CANCEL_BUTTON_LABEL\" class=\"p-button-secondary\" (click)=\"onCancel()\">\r\n </button>\r\n <button pButton [label]=\"SHARED.REJECT_BUTTON_LABEL\" class=\"p-button-danger\" [disabled]=\"isRejectNoteEmpty\"\r\n (click)=\"onRejectConfirm()\">\r\n </button>\r\n </div>\r\n </ng-template>\r\n</p-dialog>", styles: [".document-actions-container{margin:0}.actions-card{border-radius:8px;padding:.75rem;box-shadow:0 2px 4px #0000001a;transition:all .3s ease}.actions-card.pending-card{background-color:#f8f9fa;border:1px solid #e9ecef}.actions-card.accepted-card{background-color:#d4edda;border:1px solid #28a745}.actions-card.rejected-card{background-color:#f8d7da;border:1px solid #dc3545}.actions-card[class*=status-].status-approved-card{background-color:#d4edda;border:1px solid #28a745}.actions-card[class*=status-].status-rejected-card{background-color:#f8d7da;border:1px solid #dc3545}.actions-card[class*=status-].status-pending-card{background-color:#f8f9fa;border:1px solid #e9ecef}.actions-buttons{display:flex;gap:.5rem;align-items:center}.action-btn{padding:.5rem 1rem;border-radius:6px;border:1px solid;font-weight:500;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:.5rem;min-width:80px;justify-content:center}.action-btn:disabled{opacity:.6;cursor:not-allowed}.action-btn i{font-size:.875rem}.reject-btn.default-reject{background-color:#fff5f5;border-color:#feb2b2;color:#4a5568}.reject-btn.default-reject:hover:not(:disabled){background-color:#fed7d7;border-color:#fc8181}.reject-btn.secondary-reject{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.reject-btn.secondary-reject:hover:not(:disabled){background-color:#edf2f7;border-color:#cbd5e0}.reject-btn.primary-reject{background-color:#dc3545;border-color:#dc3545;color:#fff}.reject-btn.primary-reject:hover:not(:disabled){background-color:#c82333;border-color:#bd2130}.reject-btn[class*=status-].status-approved-reject{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.reject-btn[class*=status-].status-approved-reject:hover:not(:disabled){background-color:#edf2f7;border-color:#cbd5e0}.reject-btn[class*=status-].status-rejected-reject{background-color:#dc3545;border-color:#dc3545;color:#fff}.reject-btn[class*=status-].status-rejected-reject:hover:not(:disabled){background-color:#c82333;border-color:#bd2130}.reject-btn[class*=status-].status-pending-reject{background-color:#fff5f5;border-color:#feb2b2;color:#4a5568}.reject-btn[class*=status-].status-pending-reject:hover:not(:disabled){background-color:#fed7d7;border-color:#fc8181}.accept-btn.default-accept{background-color:#f0fff4;border-color:#9ae6b4;color:#4a5568}.accept-btn.default-accept:hover:not(:disabled){background-color:#c6f6d5;border-color:#68d391}.accept-btn.secondary-accept{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.accept-btn.secondary-accept:hover:not(:disabled){background-color:#edf2f7;border-color:#cbd5e0}.accept-btn.primary-accept{background-color:#28a745;border-color:#28a745;color:#fff}.accept-btn.primary-accept:hover:not(:disabled){background-color:#218838;border-color:#1e7e34}.accept-btn[class*=status-].status-approved-accept{background-color:#28a745;border-color:#28a745;color:#fff}.accept-btn[class*=status-].status-approved-accept:hover:not(:disabled){background-color:#218838;border-color:#1e7e34}.accept-btn[class*=status-].status-rejected-accept{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.accept-btn[class*=status-].status-rejected-accept:hover:not(:disabled){background-color:#edf2f7;border-color:#cbd5e0}.accept-btn[class*=status-].status-pending-accept{background-color:#f0fff4;border-color:#9ae6b4;color:#4a5568}.accept-btn[class*=status-].status-pending-accept:hover:not(:disabled){background-color:#c6f6d5;border-color:#68d391}.delete-btn{background-color:#fff;border-color:#e2e8f0;color:#e53e3e;padding:.5rem;min-width:auto;width:40px;height:40px}.delete-btn:hover:not(:disabled){background-color:#fed7d7;border-color:#fc8181;color:#c53030}.delete-btn i{font-size:1rem}:host ::ng-deep .confirmation-dialog .p-dialog{border-radius:8px;box-shadow:0 4px 12px #00000026;border:none;overflow:hidden}:host ::ng-deep .confirmation-dialog .p-dialog-header{padding:1.25rem 1.5rem;background-color:#fff;border-bottom:none;border-top-right-radius:10px;border-top-left-radius:10px}:host ::ng-deep .confirmation-dialog .p-dialog-header .p-dialog-header-icon{display:none}:host ::ng-deep .confirmation-dialog .p-dialog-header .p-dialog-title{font-size:1.125rem;font-weight:600;color:#2d3748;margin:0}:host ::ng-deep .confirmation-dialog .p-dialog-content{padding:1.5rem;background-color:#fff}:host ::ng-deep .confirmation-dialog .p-dialog-footer{padding:1rem 1.5rem;background-color:#f7fafc;border-top:1px solid #e2e8f0;display:flex;gap:.75rem;justify-content:flex-end;border-bottom-right-radius:10px;border-bottom-left-radius:10px}.dialog-content .note-label{display:block;margin-bottom:.75rem;font-weight:500;font-size:.875rem;color:#2d3748}.dialog-content .note-textarea{width:100%;min-height:100px;padding:.75rem;border:1px solid #e2e8f0;border-radius:6px;font-family:inherit;font-size:.875rem;line-height:1.5;resize:vertical;background-color:#fff;color:#2d3748}.dialog-content .note-textarea::placeholder{color:#a0aec0}.dialog-content .note-textarea:focus{outline:none;border-color:#3182ce;box-shadow:0 0 0 3px #3182ce1a}.dialog-footer{display:flex;gap:.75rem;justify-content:flex-end}.dialog-footer button{min-width:80px;padding:.5rem 1rem;border-radius:6px;font-weight:500;font-size:.875rem;border:1px solid;cursor:pointer;transition:all .2s ease}.dialog-footer button.p-button-secondary{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.dialog-footer button.p-button-secondary:hover{background-color:#edf2f7;border-color:#cbd5e0}.dialog-footer button.p-button-success{background-color:#38a169;border-color:#38a169;color:#fff}.dialog-footer button.p-button-success:hover{background-color:#2f855a;border-color:#2f855a}.dialog-footer button.p-button-danger{background-color:#e53e3e;border-color:#e53e3e;color:#fff}.dialog-footer button.p-button-danger:hover{background-color:#c53030;border-color:#c53030}\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: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i5$2.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize", "variant"], outputs: ["onResize"] }, { kind: "directive", type: i3$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: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.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: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: HasPermissionDirective, selector: "[permission]", inputs: ["permission"] }, { kind: "component", type: ConfirmationDialogComponent, selector: "app-confirmation-dialog", inputs: ["confirmationOptions"] }] });
|
|
5192
5397
|
}
|
|
5193
5398
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentActionsComponent, decorators: [{
|
|
5194
5399
|
type: Component,
|
|
5195
|
-
args: [{ selector: 'document-actions', standalone: false, template: "<div class=\"document-actions-container\" >\r\n <div class=\"actions-card\" [ngClass]=\"cardClass\">\r\n <div class=\"actions-buttons\">\r\n <!-- Reject Button -->\r\n <button *ngIf=\"!document?.isUploaded\" class=\"action-btn reject-btn\" [ngClass]=\"rejectButtonClass\" (click)=\"onRejectClick()\"\r\n [disabled]=\"currentStatus === SHARED.STATUS_REJECTED_LOWERCASE || isRejecting\">\r\n <i class=\"pi pi-times\" *ngIf=\"currentStatus === SHARED.STATUS_REJECTED_LOWERCASE\"></i>\r\n <i class=\"pi pi-spin pi-spinner\" *ngIf=\"isRejecting\"></i>\r\n <span>{{ currentStatus === SHARED.STATUS_REJECTED_LOWERCASE ? SHARED.BUTTON_LABEL_REJECTED :\r\n SHARED.BUTTON_LABEL_REJECT }}</span>\r\n </button>\r\n\r\n <!-- Accept Button -->\r\n <button *ngIf=\"!document?.isUploaded\" class=\"action-btn accept-btn\" [ngClass]=\"acceptButtonClass\" (click)=\"onAcceptClick()\"\r\n [disabled]=\"currentStatus === SHARED.STATUS_ACCEPTED || isAccepting\">\r\n <i class=\"pi pi-check\" *ngIf=\"currentStatus === SHARED.STATUS_ACCEPTED\"></i>\r\n <i class=\"pi pi-spin pi-spinner\" *ngIf=\"isAccepting\"></i>\r\n <span>{{ currentStatus === SHARED.STATUS_ACCEPTED ? SHARED.BUTTON_LABEL_ACCEPTED : SHARED.BUTTON_LABEL_ACCEPT\r\n }}</span>\r\n </button>\r\n\r\n <!-- Delete Button -->\r\n @if(document?.isUploaded){\r\n <button class=\"action-btn delete-btn\" (click)=\"onDeleteClick()\" [disabled]=\"isLoading\"\r\n [permission]=\"'documents-deleteDocumentByDocumentId'\" pTooltip=\"Delete Document\" tooltipPosition=\"top\">\r\n <i class=\"pi pi-trash\"></i>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n
|
|
5400
|
+
args: [{ selector: 'document-actions', standalone: false, template: "<div class=\"document-actions-container\" >\r\n <div class=\"actions-card\" [ngClass]=\"cardClass\">\r\n <div class=\"actions-buttons\">\r\n <!-- Reject Button -->\r\n <button *ngIf=\"!document?.isUploaded\" class=\"action-btn reject-btn\" [ngClass]=\"rejectButtonClass\" (click)=\"onRejectClick()\"\r\n [disabled]=\"currentStatus === SHARED.STATUS_REJECTED_LOWERCASE || isRejecting\">\r\n <i class=\"pi pi-times\" *ngIf=\"currentStatus === SHARED.STATUS_REJECTED_LOWERCASE\"></i>\r\n <i class=\"pi pi-spin pi-spinner\" *ngIf=\"isRejecting\"></i>\r\n <span>{{ currentStatus === SHARED.STATUS_REJECTED_LOWERCASE ? SHARED.BUTTON_LABEL_REJECTED :\r\n SHARED.BUTTON_LABEL_REJECT }}</span>\r\n </button>\r\n\r\n <!-- Accept Button -->\r\n <button *ngIf=\"!document?.isUploaded\" class=\"action-btn accept-btn\" [ngClass]=\"acceptButtonClass\" (click)=\"onAcceptClick()\"\r\n [disabled]=\"currentStatus === SHARED.STATUS_ACCEPTED || isAccepting\">\r\n <i class=\"pi pi-check\" *ngIf=\"currentStatus === SHARED.STATUS_ACCEPTED\"></i>\r\n <i class=\"pi pi-spin pi-spinner\" *ngIf=\"isAccepting\"></i>\r\n <span>{{ currentStatus === SHARED.STATUS_ACCEPTED ? SHARED.BUTTON_LABEL_ACCEPTED : SHARED.BUTTON_LABEL_ACCEPT\r\n }}</span>\r\n </button>\r\n\r\n <!-- Delete Button -->\r\n @if(document?.isUploaded){\r\n <button class=\"action-btn delete-btn\" (click)=\"onDeleteClick()\" [disabled]=\"isLoading\"\r\n [permission]=\"'documents-deleteDocumentByDocumentId'\" pTooltip=\"Delete Document\" tooltipPosition=\"top\">\r\n <i class=\"pi pi-trash\"></i>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<app-confirmation-dialog></app-confirmation-dialog>\r\n\r\n<p-dialog [(visible)]=\"showAcceptDialog\" [header]=\"SHARED.ACCEPT_CONFIRM_HEADER\" [modal]=\"true\" [draggable]=\"false\"\r\n [closable]=\"true\" [style]=\"{ width: '25rem', height: '25rem' }\" styleClass=\"confirmation-dialog\">\r\n <div class=\"dialog-content\">\r\n <label for=\"acceptNote\" class=\"note-label\">{{ SHARED.ACCEPT_NOTE_LABEL }}</label>\r\n <textarea id=\"acceptNote\" pInputTextarea [(ngModel)]=\"acceptNote\" [placeholder]=\"SHARED.ACCEPT_NOTE_PLACEHOLDER\"\r\n rows=\"6\" class=\"note-textarea\">\r\n </textarea>\r\n </div>\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"dialog-footer\">\r\n <button pButton [label]=\"SHARED.CANCEL_BUTTON_LABEL\" class=\"p-button-secondary\" (click)=\"onCancel()\">\r\n </button>\r\n <button pButton [label]=\"SHARED.ACCEPT_BUTTON_LABEL\" class=\"p-button-success\" (click)=\"onAcceptConfirm()\">\r\n </button>\r\n </div>\r\n </ng-template>\r\n</p-dialog>\r\n\r\n<p-dialog [(visible)]=\"showRejectDialog\" [header]=\"SHARED.REJECT_CONFIRM_HEADER\" [modal]=\"true\" [draggable]=\"false\"\r\n [closable]=\"true\" [style]=\"{ width: '25rem', height: '25rem' }\" styleClass=\"confirmation-dialog\">\r\n <div class=\"dialog-content\">\r\n <label for=\"rejectNote\" class=\"note-label\">{{ SHARED.REJECT_NOTE_LABEL }}</label>\r\n <textarea id=\"rejectNote\" pInputTextarea [(ngModel)]=\"rejectNote\" [placeholder]=\"SHARED.REJECT_NOTE_PLACEHOLDER\"\r\n rows=\"6\" class=\"note-textarea\">\r\n </textarea>\r\n </div>\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"dialog-footer\">\r\n <button pButton [label]=\"SHARED.CANCEL_BUTTON_LABEL\" class=\"p-button-secondary\" (click)=\"onCancel()\">\r\n </button>\r\n <button pButton [label]=\"SHARED.REJECT_BUTTON_LABEL\" class=\"p-button-danger\" [disabled]=\"isRejectNoteEmpty\"\r\n (click)=\"onRejectConfirm()\">\r\n </button>\r\n </div>\r\n </ng-template>\r\n</p-dialog>", styles: [".document-actions-container{margin:0}.actions-card{border-radius:8px;padding:.75rem;box-shadow:0 2px 4px #0000001a;transition:all .3s ease}.actions-card.pending-card{background-color:#f8f9fa;border:1px solid #e9ecef}.actions-card.accepted-card{background-color:#d4edda;border:1px solid #28a745}.actions-card.rejected-card{background-color:#f8d7da;border:1px solid #dc3545}.actions-card[class*=status-].status-approved-card{background-color:#d4edda;border:1px solid #28a745}.actions-card[class*=status-].status-rejected-card{background-color:#f8d7da;border:1px solid #dc3545}.actions-card[class*=status-].status-pending-card{background-color:#f8f9fa;border:1px solid #e9ecef}.actions-buttons{display:flex;gap:.5rem;align-items:center}.action-btn{padding:.5rem 1rem;border-radius:6px;border:1px solid;font-weight:500;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:.5rem;min-width:80px;justify-content:center}.action-btn:disabled{opacity:.6;cursor:not-allowed}.action-btn i{font-size:.875rem}.reject-btn.default-reject{background-color:#fff5f5;border-color:#feb2b2;color:#4a5568}.reject-btn.default-reject:hover:not(:disabled){background-color:#fed7d7;border-color:#fc8181}.reject-btn.secondary-reject{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.reject-btn.secondary-reject:hover:not(:disabled){background-color:#edf2f7;border-color:#cbd5e0}.reject-btn.primary-reject{background-color:#dc3545;border-color:#dc3545;color:#fff}.reject-btn.primary-reject:hover:not(:disabled){background-color:#c82333;border-color:#bd2130}.reject-btn[class*=status-].status-approved-reject{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.reject-btn[class*=status-].status-approved-reject:hover:not(:disabled){background-color:#edf2f7;border-color:#cbd5e0}.reject-btn[class*=status-].status-rejected-reject{background-color:#dc3545;border-color:#dc3545;color:#fff}.reject-btn[class*=status-].status-rejected-reject:hover:not(:disabled){background-color:#c82333;border-color:#bd2130}.reject-btn[class*=status-].status-pending-reject{background-color:#fff5f5;border-color:#feb2b2;color:#4a5568}.reject-btn[class*=status-].status-pending-reject:hover:not(:disabled){background-color:#fed7d7;border-color:#fc8181}.accept-btn.default-accept{background-color:#f0fff4;border-color:#9ae6b4;color:#4a5568}.accept-btn.default-accept:hover:not(:disabled){background-color:#c6f6d5;border-color:#68d391}.accept-btn.secondary-accept{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.accept-btn.secondary-accept:hover:not(:disabled){background-color:#edf2f7;border-color:#cbd5e0}.accept-btn.primary-accept{background-color:#28a745;border-color:#28a745;color:#fff}.accept-btn.primary-accept:hover:not(:disabled){background-color:#218838;border-color:#1e7e34}.accept-btn[class*=status-].status-approved-accept{background-color:#28a745;border-color:#28a745;color:#fff}.accept-btn[class*=status-].status-approved-accept:hover:not(:disabled){background-color:#218838;border-color:#1e7e34}.accept-btn[class*=status-].status-rejected-accept{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.accept-btn[class*=status-].status-rejected-accept:hover:not(:disabled){background-color:#edf2f7;border-color:#cbd5e0}.accept-btn[class*=status-].status-pending-accept{background-color:#f0fff4;border-color:#9ae6b4;color:#4a5568}.accept-btn[class*=status-].status-pending-accept:hover:not(:disabled){background-color:#c6f6d5;border-color:#68d391}.delete-btn{background-color:#fff;border-color:#e2e8f0;color:#e53e3e;padding:.5rem;min-width:auto;width:40px;height:40px}.delete-btn:hover:not(:disabled){background-color:#fed7d7;border-color:#fc8181;color:#c53030}.delete-btn i{font-size:1rem}:host ::ng-deep .confirmation-dialog .p-dialog{border-radius:8px;box-shadow:0 4px 12px #00000026;border:none;overflow:hidden}:host ::ng-deep .confirmation-dialog .p-dialog-header{padding:1.25rem 1.5rem;background-color:#fff;border-bottom:none;border-top-right-radius:10px;border-top-left-radius:10px}:host ::ng-deep .confirmation-dialog .p-dialog-header .p-dialog-header-icon{display:none}:host ::ng-deep .confirmation-dialog .p-dialog-header .p-dialog-title{font-size:1.125rem;font-weight:600;color:#2d3748;margin:0}:host ::ng-deep .confirmation-dialog .p-dialog-content{padding:1.5rem;background-color:#fff}:host ::ng-deep .confirmation-dialog .p-dialog-footer{padding:1rem 1.5rem;background-color:#f7fafc;border-top:1px solid #e2e8f0;display:flex;gap:.75rem;justify-content:flex-end;border-bottom-right-radius:10px;border-bottom-left-radius:10px}.dialog-content .note-label{display:block;margin-bottom:.75rem;font-weight:500;font-size:.875rem;color:#2d3748}.dialog-content .note-textarea{width:100%;min-height:100px;padding:.75rem;border:1px solid #e2e8f0;border-radius:6px;font-family:inherit;font-size:.875rem;line-height:1.5;resize:vertical;background-color:#fff;color:#2d3748}.dialog-content .note-textarea::placeholder{color:#a0aec0}.dialog-content .note-textarea:focus{outline:none;border-color:#3182ce;box-shadow:0 0 0 3px #3182ce1a}.dialog-footer{display:flex;gap:.75rem;justify-content:flex-end}.dialog-footer button{min-width:80px;padding:.5rem 1rem;border-radius:6px;font-weight:500;font-size:.875rem;border:1px solid;cursor:pointer;transition:all .2s ease}.dialog-footer button.p-button-secondary{background-color:#f7fafc;border-color:#e2e8f0;color:#4a5568}.dialog-footer button.p-button-secondary:hover{background-color:#edf2f7;border-color:#cbd5e0}.dialog-footer button.p-button-success{background-color:#38a169;border-color:#38a169;color:#fff}.dialog-footer button.p-button-success:hover{background-color:#2f855a;border-color:#2f855a}.dialog-footer button.p-button-danger{background-color:#e53e3e;border-color:#e53e3e;color:#fff}.dialog-footer button.p-button-danger:hover{background-color:#c53030;border-color:#c53030}\n"] }]
|
|
5196
5401
|
}], ctorParameters: () => [{ type: DocumentActionsService }], propDecorators: { document: [{
|
|
5197
5402
|
type: Input
|
|
5198
5403
|
}], documentId: [{
|
|
@@ -5207,6 +5412,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
5207
5412
|
type: Input
|
|
5208
5413
|
}], actionPerformed: [{
|
|
5209
5414
|
type: Output
|
|
5415
|
+
}], confirmationDialog: [{
|
|
5416
|
+
type: ViewChild,
|
|
5417
|
+
args: [ConfirmationDialogComponent]
|
|
5210
5418
|
}] } });
|
|
5211
5419
|
|
|
5212
5420
|
/**
|
|
@@ -5345,7 +5553,7 @@ class DocumentViewerComponent {
|
|
|
5345
5553
|
*/
|
|
5346
5554
|
handleDocumentAction(action) {
|
|
5347
5555
|
this.documentViewerService.handleDocumentAction(action, this.contextId);
|
|
5348
|
-
this.documentStatusUpdated.emit();
|
|
5556
|
+
this.documentStatusUpdated.emit({ actionType: action.type });
|
|
5349
5557
|
}
|
|
5350
5558
|
ngOnDestroy() {
|
|
5351
5559
|
this.subscription.unsubscribe();
|
|
@@ -5451,6 +5659,7 @@ class DocumentListComponent {
|
|
|
5451
5659
|
* Completion counts for each category
|
|
5452
5660
|
*/
|
|
5453
5661
|
categoryCompletionCounts = SHARED.EMPTY_ARRAY;
|
|
5662
|
+
deleteMessage = SHARED.EMPTY_ARRAY;
|
|
5454
5663
|
/**
|
|
5455
5664
|
* Getter to format category labels with proper suffix
|
|
5456
5665
|
*/
|
|
@@ -5481,21 +5690,6 @@ class DocumentListComponent {
|
|
|
5481
5690
|
ngOnInit() {
|
|
5482
5691
|
this.setupDocumentListSubscription();
|
|
5483
5692
|
}
|
|
5484
|
-
/**
|
|
5485
|
-
* Handles the save click event to update the document's file name.
|
|
5486
|
-
* This method creates a payload with the updated file name and calls the
|
|
5487
|
-
* updateDocumentName() method from the documentHttpService. On a successful update,
|
|
5488
|
-
* it logs a message with the document's ID.
|
|
5489
|
-
* @returns {void}
|
|
5490
|
-
*/
|
|
5491
|
-
handleSaveClick() {
|
|
5492
|
-
if (this.fileName && this.selectedDocument) {
|
|
5493
|
-
this.documentListService.handleSaveClick(this.fileName, this.selectedDocument)
|
|
5494
|
-
.subscribe((res) => {
|
|
5495
|
-
console.log(`${SHARED.UPDATE_DOCUMENT_NAME} ${this.selectedDocument._id}`);
|
|
5496
|
-
});
|
|
5497
|
-
}
|
|
5498
|
-
}
|
|
5499
5693
|
/**
|
|
5500
5694
|
* Handles the visibility of the sidebar.
|
|
5501
5695
|
* @param {boolean} isVisible - Indicates whether the sidebar should be visible or not.
|
|
@@ -5542,6 +5736,9 @@ class DocumentListComponent {
|
|
|
5542
5736
|
this.documentListService.handleDeleteAction(rowData, this.contextId)
|
|
5543
5737
|
.subscribe({
|
|
5544
5738
|
next: (response) => {
|
|
5739
|
+
if (this.selectedDocument && this.selectedDocument._id === rowData._id) {
|
|
5740
|
+
this.handleCloseModal();
|
|
5741
|
+
}
|
|
5545
5742
|
this.documentListService.refreshAllDataWithCurrentFilters(this.contextId);
|
|
5546
5743
|
},
|
|
5547
5744
|
error: (error) => {
|
|
@@ -5549,11 +5746,27 @@ class DocumentListComponent {
|
|
|
5549
5746
|
}
|
|
5550
5747
|
});
|
|
5551
5748
|
}
|
|
5749
|
+
/**
|
|
5750
|
+
* Closes the document viewer dialog and resets the selected document
|
|
5751
|
+
*/
|
|
5752
|
+
handleCloseModal() {
|
|
5753
|
+
this.isdialogVisible = SHARED.FALSE;
|
|
5754
|
+
this.selectedDocument = {};
|
|
5755
|
+
this.fileName = SHARED.EMPTY;
|
|
5756
|
+
}
|
|
5552
5757
|
/**
|
|
5553
5758
|
* Refreshes the document list after a status update
|
|
5759
|
+
* @param {boolean} isDeleteAction - Optional flag indicating if this refresh is due to a delete action
|
|
5554
5760
|
*/
|
|
5555
|
-
refreshDocumentList() {
|
|
5761
|
+
refreshDocumentList(isDeleteAction = false) {
|
|
5556
5762
|
this.documentListService.refreshDocumentList(this.contextId);
|
|
5763
|
+
if (isDeleteAction) {
|
|
5764
|
+
this.deleteMessage = [{ severity: SHARED.SUCCESS_SEVERITY, detail: SHARED.DOCUMENT_DELETED_SUCCESSFULLY }];
|
|
5765
|
+
setTimeout(() => {
|
|
5766
|
+
this.deleteMessage = SHARED.EMPTY_ARRAY;
|
|
5767
|
+
this.handleCloseModal();
|
|
5768
|
+
}, 2000);
|
|
5769
|
+
}
|
|
5557
5770
|
}
|
|
5558
5771
|
/**
|
|
5559
5772
|
* Cleanup subscriptions on component destroy
|
|
@@ -5562,11 +5775,11 @@ class DocumentListComponent {
|
|
|
5562
5775
|
this.documentListSubscription.unsubscribe();
|
|
5563
5776
|
}
|
|
5564
5777
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentListComponent, deps: [{ token: DocumentListService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5565
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DocumentListComponent, isStandalone: false, selector: "lib-document-list", inputs: { contextId: "contextId", documentListResponse: "documentListResponse", documentList: "documentList" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"document-viewer\">\r\n <p-dialog [header]=\"selectedDocument?.docName\" [(visible)]=\"isdialogVisible\" [modal]=\"true\" \r\n class=\"w-full h-full document-dailog-wrapper\" [draggable]=\"false\" [closable]=\"true\">\r\n <document-viewer \r\n [selectedDocument]=\"selectedDocument\" \r\n [documentList]=\"documentList\" \r\n [contextId]=\"contextId\" \r\n (documentStatusUpdated)=\"refreshDocumentList()\">\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"w-full flex align-items-center justify-content-between\">\r\n <input type=\"text\" class=\"w-full border-none bg-white h-3rem file-input-wrapper\" pInputText\r\n
|
|
5778
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DocumentListComponent, isStandalone: false, selector: "lib-document-list", inputs: { contextId: "contextId", documentListResponse: "documentListResponse", documentList: "documentList" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"document-viewer\">\r\n <p-dialog [header]=\"selectedDocument?.docName\" [(visible)]=\"isdialogVisible\" [modal]=\"true\" \r\n class=\"w-full h-full document-dailog-wrapper\" [draggable]=\"false\" [closable]=\"true\"\r\n (onHide)=\"handleCloseModal()\">\r\n <p-messages \r\n[(value)]=\"deleteMessage\" \r\n[enableService]=\"false\" \r\n[closable]=\"false\" />\r\n <document-viewer \r\n [selectedDocument]=\"selectedDocument\" \r\n [documentList]=\"documentList\" \r\n [contextId]=\"contextId\" \r\n (documentStatusUpdated)=\"refreshDocumentList($event.actionType === 'delete')\">\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"w-full flex align-items-center justify-content-between\">\r\n <input type=\"text\" class=\"w-full border-none bg-white h-3rem file-input-wrapper\" pInputText\r\n [(ngModel)]=\"fileName\" />\r\n \r\n </div>\r\n </ng-template>\r\n <ng-content></ng-content>\r\n </document-viewer>\r\n </p-dialog>\r\n</div>\r\n\r\n<div class=\"document-categories-container\">\r\n <div class=\"category\" *ngFor=\"let category of documentCategories; let i = index\">\r\n <div class=\"category-header\">\r\n <div class=\"category-title\">\r\n <h3>{{ formattedCategoryLabels[i] }}</h3>\r\n <p class=\"category-description\">{{ category.categoryDescription }}</p>\r\n </div>\r\n <div class=\"completion-status\">\r\n <span class=\"status-badge\">{{ categoryCompletionCounts[i] }} Complete</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"table-container\">\r\n <lib-table-primary \r\n [tableData]=\"categoryTables[i]\" \r\n [tableStyle]=\"{ 'min-width': '100%' }\"\r\n (rowClick)=\"handleTableRowClick($event)\"\r\n (deleteAction)=\"handleDeleteAction($event)\">\r\n </lib-table-primary>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".document-list-wrapper .p-accordion-header-link{padding:.5rem}.document-list-wrapper .p-sidebar-right,.right-sidebar{width:35%}.document-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-wrapper{padding:10px 4px}.save-btn .p-button{height:45px!important;width:140px;border-radius:10px}.p-sidebar-footer{padding:0}.file-input-wrapper.p-inputtext:enabled:focus{box-shadow:0 0 0 .2rem #a6d5fa!important}.document-categories-container{padding:1rem;background-color:#f8f9fa;min-height:100vh}.document-categories-container .category{background:#fff;border-radius:8px;margin-bottom:2rem;box-shadow:0 2px 4px #0000001a;overflow:hidden}.document-categories-container .category .category-header{display:flex;justify-content:space-between;align-items:flex-start;padding:1.5rem 1.5rem 1rem;border-bottom:1px solid #e9ecef}.document-categories-container .category .category-header .category-title h3{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;color:#2c3e50}.document-categories-container .category .category-header .category-title .category-description{margin:0;color:#6c757d;font-size:.875rem;line-height:1.4}.document-categories-container .category .category-header .completion-status .status-badge{background-color:#fbbf24;color:#92400e;padding:.375rem .75rem;border-radius:6px;font-size:.75rem;font-weight:500;display:inline-block}.document-categories-container .category .table-container{padding:0}.document-sections-container{padding:1rem;background-color:#f8f9fa;min-height:100vh}.document-sections-container .section{background:#fff;border-radius:8px;margin-bottom:2rem;box-shadow:0 2px 4px #0000001a;overflow:hidden}.document-sections-container .section .section-header{display:flex;justify-content:space-between;align-items:flex-start;padding:1.5rem 1.5rem 1rem;border-bottom:1px solid #e9ecef}.document-sections-container .section .section-header .section-title h3{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;color:#2c3e50}.document-sections-container .section .section-header .section-title .section-description{margin:0;color:#6c757d;font-size:.875rem;line-height:1.4}.document-sections-container .section .section-header .completion-status .status-badge{background-color:#fbbf24;color:#92400e;padding:.375rem .75rem;border-radius:6px;font-size:.75rem;font-weight:500;display:inline-block}.document-sections-container .section .table-container{padding:0}@media (max-width: 768px){.document-categories-container,.document-sections-container{padding:.5rem}.document-categories-container .category .category-header,.document-categories-container .category .section-header,.document-categories-container .section .category-header,.document-categories-container .section .section-header,.document-sections-container .category .category-header,.document-sections-container .category .section-header,.document-sections-container .section .category-header,.document-sections-container .section .section-header{flex-direction:column;gap:1rem;align-items:flex-start}.document-categories-container .category .category-header .completion-status,.document-categories-container .category .section-header .completion-status,.document-categories-container .section .category-header .completion-status,.document-categories-container .section .section-header .completion-status,.document-sections-container .category .category-header .completion-status,.document-sections-container .category .section-header .completion-status,.document-sections-container .section .category-header .completion-status,.document-sections-container .section .section-header .completion-status{align-self:flex-end}}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange", "onClose"] }, { kind: "directive", type: i3$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: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.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: "directive", type: i7$1.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: TablePrimaryComponent, selector: "lib-table-primary", inputs: ["tableData", "showHeader", "tableStyle"], outputs: ["rowClick", "deleteAction"] }, { kind: "component", type: DocumentViewerComponent, selector: "document-viewer", inputs: ["selectedDocument", "documentList", "contextId"], outputs: ["documentStatusUpdated"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
5566
5779
|
}
|
|
5567
5780
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentListComponent, decorators: [{
|
|
5568
5781
|
type: Component,
|
|
5569
|
-
args: [{ selector: 'lib-document-list', standalone: false, encapsulation: ViewEncapsulation.None, template: "<div class=\"document-viewer\">\r\n <p-dialog [header]=\"selectedDocument?.docName\" [(visible)]=\"isdialogVisible\" [modal]=\"true\" \r\n class=\"w-full h-full document-dailog-wrapper\" [draggable]=\"false\" [closable]=\"true\">\r\n <document-viewer \r\n [selectedDocument]=\"selectedDocument\" \r\n [documentList]=\"documentList\" \r\n [contextId]=\"contextId\" \r\n (documentStatusUpdated)=\"refreshDocumentList()\">\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"w-full flex align-items-center justify-content-between\">\r\n <input type=\"text\" class=\"w-full border-none bg-white h-3rem file-input-wrapper\" pInputText\r\n
|
|
5782
|
+
args: [{ selector: 'lib-document-list', standalone: false, encapsulation: ViewEncapsulation.None, template: "<div class=\"document-viewer\">\r\n <p-dialog [header]=\"selectedDocument?.docName\" [(visible)]=\"isdialogVisible\" [modal]=\"true\" \r\n class=\"w-full h-full document-dailog-wrapper\" [draggable]=\"false\" [closable]=\"true\"\r\n (onHide)=\"handleCloseModal()\">\r\n <p-messages \r\n[(value)]=\"deleteMessage\" \r\n[enableService]=\"false\" \r\n[closable]=\"false\" />\r\n <document-viewer \r\n [selectedDocument]=\"selectedDocument\" \r\n [documentList]=\"documentList\" \r\n [contextId]=\"contextId\" \r\n (documentStatusUpdated)=\"refreshDocumentList($event.actionType === 'delete')\">\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"w-full flex align-items-center justify-content-between\">\r\n <input type=\"text\" class=\"w-full border-none bg-white h-3rem file-input-wrapper\" pInputText\r\n [(ngModel)]=\"fileName\" />\r\n \r\n </div>\r\n </ng-template>\r\n <ng-content></ng-content>\r\n </document-viewer>\r\n </p-dialog>\r\n</div>\r\n\r\n<div class=\"document-categories-container\">\r\n <div class=\"category\" *ngFor=\"let category of documentCategories; let i = index\">\r\n <div class=\"category-header\">\r\n <div class=\"category-title\">\r\n <h3>{{ formattedCategoryLabels[i] }}</h3>\r\n <p class=\"category-description\">{{ category.categoryDescription }}</p>\r\n </div>\r\n <div class=\"completion-status\">\r\n <span class=\"status-badge\">{{ categoryCompletionCounts[i] }} Complete</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"table-container\">\r\n <lib-table-primary \r\n [tableData]=\"categoryTables[i]\" \r\n [tableStyle]=\"{ 'min-width': '100%' }\"\r\n (rowClick)=\"handleTableRowClick($event)\"\r\n (deleteAction)=\"handleDeleteAction($event)\">\r\n </lib-table-primary>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".document-list-wrapper .p-accordion-header-link{padding:.5rem}.document-list-wrapper .p-sidebar-right,.right-sidebar{width:35%}.document-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-wrapper{padding:10px 4px}.save-btn .p-button{height:45px!important;width:140px;border-radius:10px}.p-sidebar-footer{padding:0}.file-input-wrapper.p-inputtext:enabled:focus{box-shadow:0 0 0 .2rem #a6d5fa!important}.document-categories-container{padding:1rem;background-color:#f8f9fa;min-height:100vh}.document-categories-container .category{background:#fff;border-radius:8px;margin-bottom:2rem;box-shadow:0 2px 4px #0000001a;overflow:hidden}.document-categories-container .category .category-header{display:flex;justify-content:space-between;align-items:flex-start;padding:1.5rem 1.5rem 1rem;border-bottom:1px solid #e9ecef}.document-categories-container .category .category-header .category-title h3{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;color:#2c3e50}.document-categories-container .category .category-header .category-title .category-description{margin:0;color:#6c757d;font-size:.875rem;line-height:1.4}.document-categories-container .category .category-header .completion-status .status-badge{background-color:#fbbf24;color:#92400e;padding:.375rem .75rem;border-radius:6px;font-size:.75rem;font-weight:500;display:inline-block}.document-categories-container .category .table-container{padding:0}.document-sections-container{padding:1rem;background-color:#f8f9fa;min-height:100vh}.document-sections-container .section{background:#fff;border-radius:8px;margin-bottom:2rem;box-shadow:0 2px 4px #0000001a;overflow:hidden}.document-sections-container .section .section-header{display:flex;justify-content:space-between;align-items:flex-start;padding:1.5rem 1.5rem 1rem;border-bottom:1px solid #e9ecef}.document-sections-container .section .section-header .section-title h3{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;color:#2c3e50}.document-sections-container .section .section-header .section-title .section-description{margin:0;color:#6c757d;font-size:.875rem;line-height:1.4}.document-sections-container .section .section-header .completion-status .status-badge{background-color:#fbbf24;color:#92400e;padding:.375rem .75rem;border-radius:6px;font-size:.75rem;font-weight:500;display:inline-block}.document-sections-container .section .table-container{padding:0}@media (max-width: 768px){.document-categories-container,.document-sections-container{padding:.5rem}.document-categories-container .category .category-header,.document-categories-container .category .section-header,.document-categories-container .section .category-header,.document-categories-container .section .section-header,.document-sections-container .category .category-header,.document-sections-container .category .section-header,.document-sections-container .section .category-header,.document-sections-container .section .section-header{flex-direction:column;gap:1rem;align-items:flex-start}.document-categories-container .category .category-header .completion-status,.document-categories-container .category .section-header .completion-status,.document-categories-container .section .category-header .completion-status,.document-categories-container .section .section-header .completion-status,.document-sections-container .category .category-header .completion-status,.document-sections-container .category .section-header .completion-status,.document-sections-container .section .category-header .completion-status,.document-sections-container .section .section-header .completion-status{align-self:flex-end}}\n"] }]
|
|
5570
5783
|
}], ctorParameters: () => [{ type: DocumentListService }], propDecorators: { contextId: [{
|
|
5571
5784
|
type: Input
|
|
5572
5785
|
}], documentListResponse: [{
|
|
@@ -5893,11 +6106,11 @@ class DocumentsMenuComponent {
|
|
|
5893
6106
|
return this.selectedMenuItemId;
|
|
5894
6107
|
}
|
|
5895
6108
|
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 });
|
|
5896
|
-
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\">\r\n <p-card class=\"widget-menu-wrapper h-full\">\r\n @if(applicationNumber){\r\n <div class=\"flex align-items-center justify-content-between widget-menu-header-wrapper\">\r\n <p class=\"mb-0 application-title-wrapper\">ID - {{applicationNumber}}</p>\r\n <div class=\"expand-icon-wrapper\">\r\n <i class=\"ri-arrow-left-s-line text-primary flex align-items-center justify-content-center w-full h-full\"></i>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"widget-menu-container\" >\r\n <div class=\"widget-menu-wrapper h-ful l custom-scroll\">\r\n <p-menu [model]=\"categories\" styleClass=\"w-full md:w-15rem\">\r\n <ng-template pTemplate=\"submenuheader\" let-item>\r\n <span [style]=\"{\r\n color : '#9EA0B3'\r\n }\">{{ item.label === 'Application' ? 'Application Documents' : item.label }}</span>\r\n </ng-template>\r\n <ng-template pTemplate=\"item\" let-item>\r\n <a pRipple \r\n class=\"flex align-items-center p-menuitem-link\"\r\n [class.selected-menu-item]=\"selectedMenuItemId === item._id\"\r\n (click)=\"onMenuItemClick($event, item)\">\r\n <span [class]=\"item.icon\" class=\"text-xl\"></span>\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n <p-badge *ngIf=\"item.menuData?.shouldShowBadge\" \r\n class=\"ml-auto\" \r\n [severity]=\"item.menuData?.badgeSeverity\" \r\n [value]=\"item.menuData?.badgeValue\" />\r\n </a>\r\n </ng-template>\r\n </p-menu>\r\n </div>\r\n </div>\r\n </p-card>\r\n</div>\r\n\r\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}::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 .p-menuitem-link:not(.selected-menu-item){background-color:#fff!important;border:none!important;border-radius:0!important}::ng-deep .p-menuitem-link:not(.selected-menu-item) .text-xl{color:var(--text-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:#fff!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:#fff!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem:not(.p-focus)>.p-menuitem-content .p-menuitem-link{background-color:#fff!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link:not(.selected-menu-item){background-color:#fff!important;border:none!important;border-radius:0!important;color:var(--text-color)!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link:not(.selected-menu-item) .p-menuitem-icon{color:var(--text-color)!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link:not(.selected-menu-item) .p-menuitem-text{color:var(--text-color)!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}.no-documents-message{padding:12px 16px;text-align:center}.no-documents-message .text-muted{color:#9ea0b3;font-size:14px;font-style:italic}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7$2.Badge, selector: "p-badge", inputs: ["styleClass", "style", "badgeSize", "severity", "value", "badgeDisabled", "size"] }, { kind: "component", type: i8$1.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.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }] });
|
|
6109
|
+
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\">\r\n <p-card class=\"widget-menu-wrapper h-full\">\r\n @if(applicationNumber){\r\n <div class=\"flex align-items-center justify-content-between widget-menu-header-wrapper\">\r\n <p class=\"mb-0 application-title-wrapper\">ID - {{applicationNumber}}</p>\r\n <div class=\"expand-icon-wrapper\">\r\n <i class=\"ri-arrow-left-s-line text-primary flex align-items-center justify-content-center w-full h-full\"></i>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"widget-menu-container\" >\r\n <div class=\"widget-menu-wrapper h-ful l custom-scroll\">\r\n <p-menu [model]=\"categories\" styleClass=\"w-full md:w-15rem\">\r\n <ng-template pTemplate=\"submenuheader\" let-item>\r\n <span [style]=\"{\r\n color : '#9EA0B3'\r\n }\">{{ item.label === 'Application' ? 'Application Documents' : item.label }}</span>\r\n </ng-template>\r\n <ng-template pTemplate=\"item\" let-item>\r\n <a pRipple \r\n class=\"flex align-items-center p-menuitem-link\"\r\n [class.selected-menu-item]=\"selectedMenuItemId === item._id\"\r\n (click)=\"onMenuItemClick($event, item)\">\r\n <span [class]=\"item.icon\" class=\"text-xl\"></span>\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n <p-badge *ngIf=\"item.menuData?.shouldShowBadge\" \r\n class=\"ml-auto\" \r\n [severity]=\"item.menuData?.badgeSeverity\" \r\n [value]=\"item.menuData?.badgeValue\" />\r\n </a>\r\n </ng-template>\r\n </p-menu>\r\n </div>\r\n </div>\r\n </p-card>\r\n</div>\r\n\r\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;border:none!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 .p-menuitem-link:not(.selected-menu-item){background-color:#fff!important;border:none!important;border-radius:0!important}::ng-deep .p-menuitem-link:not(.selected-menu-item) .text-xl{color:var(--text-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:#fff!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:#fff!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem:not(.p-focus)>.p-menuitem-content .p-menuitem-link{background-color:#fff!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link:not(.selected-menu-item){background-color:#fff!important;border:none!important;border-radius:0!important;color:var(--text-color)!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link:not(.selected-menu-item) .p-menuitem-icon{color:var(--text-color)!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link:not(.selected-menu-item) .p-menuitem-text{color:var(--text-color)!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}.no-documents-message{padding:12px 16px;text-align:center}.no-documents-message .text-muted{color:#9ea0b3;font-size:14px;font-style:italic}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7$2.Badge, selector: "p-badge", inputs: ["styleClass", "style", "badgeSize", "severity", "value", "badgeDisabled", "size"] }, { kind: "component", type: i8$1.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.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }] });
|
|
5897
6110
|
}
|
|
5898
6111
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentsMenuComponent, decorators: [{
|
|
5899
6112
|
type: Component,
|
|
5900
|
-
args: [{ selector: 'lib-documents-menu', standalone: false, template: "<div class=\"document-sidebar-container h-full\">\r\n <p-card class=\"widget-menu-wrapper h-full\">\r\n @if(applicationNumber){\r\n <div class=\"flex align-items-center justify-content-between widget-menu-header-wrapper\">\r\n <p class=\"mb-0 application-title-wrapper\">ID - {{applicationNumber}}</p>\r\n <div class=\"expand-icon-wrapper\">\r\n <i class=\"ri-arrow-left-s-line text-primary flex align-items-center justify-content-center w-full h-full\"></i>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"widget-menu-container\" >\r\n <div class=\"widget-menu-wrapper h-ful l custom-scroll\">\r\n <p-menu [model]=\"categories\" styleClass=\"w-full md:w-15rem\">\r\n <ng-template pTemplate=\"submenuheader\" let-item>\r\n <span [style]=\"{\r\n color : '#9EA0B3'\r\n }\">{{ item.label === 'Application' ? 'Application Documents' : item.label }}</span>\r\n </ng-template>\r\n <ng-template pTemplate=\"item\" let-item>\r\n <a pRipple \r\n class=\"flex align-items-center p-menuitem-link\"\r\n [class.selected-menu-item]=\"selectedMenuItemId === item._id\"\r\n (click)=\"onMenuItemClick($event, item)\">\r\n <span [class]=\"item.icon\" class=\"text-xl\"></span>\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n <p-badge *ngIf=\"item.menuData?.shouldShowBadge\" \r\n class=\"ml-auto\" \r\n [severity]=\"item.menuData?.badgeSeverity\" \r\n [value]=\"item.menuData?.badgeValue\" />\r\n </a>\r\n </ng-template>\r\n </p-menu>\r\n </div>\r\n </div>\r\n </p-card>\r\n</div>\r\n\r\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}::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 .p-menuitem-link:not(.selected-menu-item){background-color:#fff!important;border:none!important;border-radius:0!important}::ng-deep .p-menuitem-link:not(.selected-menu-item) .text-xl{color:var(--text-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:#fff!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:#fff!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem:not(.p-focus)>.p-menuitem-content .p-menuitem-link{background-color:#fff!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link:not(.selected-menu-item){background-color:#fff!important;border:none!important;border-radius:0!important;color:var(--text-color)!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link:not(.selected-menu-item) .p-menuitem-icon{color:var(--text-color)!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link:not(.selected-menu-item) .p-menuitem-text{color:var(--text-color)!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}.no-documents-message{padding:12px 16px;text-align:center}.no-documents-message .text-muted{color:#9ea0b3;font-size:14px;font-style:italic}\n"] }]
|
|
6113
|
+
args: [{ selector: 'lib-documents-menu', standalone: false, template: "<div class=\"document-sidebar-container h-full\">\r\n <p-card class=\"widget-menu-wrapper h-full\">\r\n @if(applicationNumber){\r\n <div class=\"flex align-items-center justify-content-between widget-menu-header-wrapper\">\r\n <p class=\"mb-0 application-title-wrapper\">ID - {{applicationNumber}}</p>\r\n <div class=\"expand-icon-wrapper\">\r\n <i class=\"ri-arrow-left-s-line text-primary flex align-items-center justify-content-center w-full h-full\"></i>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"widget-menu-container\" >\r\n <div class=\"widget-menu-wrapper h-ful l custom-scroll\">\r\n <p-menu [model]=\"categories\" styleClass=\"w-full md:w-15rem\">\r\n <ng-template pTemplate=\"submenuheader\" let-item>\r\n <span [style]=\"{\r\n color : '#9EA0B3'\r\n }\">{{ item.label === 'Application' ? 'Application Documents' : item.label }}</span>\r\n </ng-template>\r\n <ng-template pTemplate=\"item\" let-item>\r\n <a pRipple \r\n class=\"flex align-items-center p-menuitem-link\"\r\n [class.selected-menu-item]=\"selectedMenuItemId === item._id\"\r\n (click)=\"onMenuItemClick($event, item)\">\r\n <span [class]=\"item.icon\" class=\"text-xl\"></span>\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n <p-badge *ngIf=\"item.menuData?.shouldShowBadge\" \r\n class=\"ml-auto\" \r\n [severity]=\"item.menuData?.badgeSeverity\" \r\n [value]=\"item.menuData?.badgeValue\" />\r\n </a>\r\n </ng-template>\r\n </p-menu>\r\n </div>\r\n </div>\r\n </p-card>\r\n</div>\r\n\r\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;border:none!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 .p-menuitem-link:not(.selected-menu-item){background-color:#fff!important;border:none!important;border-radius:0!important}::ng-deep .p-menuitem-link:not(.selected-menu-item) .text-xl{color:var(--text-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:#fff!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:#fff!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem:not(.p-focus)>.p-menuitem-content .p-menuitem-link{background-color:#fff!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link:not(.selected-menu-item){background-color:#fff!important;border:none!important;border-radius:0!important;color:var(--text-color)!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link:not(.selected-menu-item) .p-menuitem-icon{color:var(--text-color)!important}::ng-deep .widget-menu-wrapper .p-panelmenu .p-panelmenu-content .p-menuitem>.p-menuitem-content .p-menuitem-link:not(.selected-menu-item) .p-menuitem-text{color:var(--text-color)!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}.no-documents-message{padding:12px 16px;text-align:center}.no-documents-message .text-muted{color:#9ea0b3;font-size:14px;font-style:italic}\n"] }]
|
|
5901
6114
|
}], ctorParameters: () => [{ type: DocumentStore }, { type: DocumentQuery }, { type: DocumentMenuService }, { type: DocumentHelperService }], propDecorators: { catagories: [{
|
|
5902
6115
|
type: Input
|
|
5903
6116
|
}], applicationNumber: [{
|
|
@@ -6362,26 +6575,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
6362
6575
|
|
|
6363
6576
|
class SharedModule {
|
|
6364
6577
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
6365
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: SharedModule, declarations: [TablePrimaryComponent, HasPermissionDirective], imports: [CommonModule,
|
|
6578
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: SharedModule, declarations: [TablePrimaryComponent, HasPermissionDirective, ConfirmationDialogComponent], imports: [CommonModule,
|
|
6366
6579
|
TableModule,
|
|
6367
6580
|
ButtonModule,
|
|
6368
|
-
RippleModule
|
|
6369
|
-
|
|
6581
|
+
RippleModule,
|
|
6582
|
+
ConfirmDialogModule], exports: [TablePrimaryComponent, HasPermissionDirective, ConfirmationDialogComponent] });
|
|
6583
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SharedModule, providers: [ConfirmationService], imports: [CommonModule,
|
|
6370
6584
|
TableModule,
|
|
6371
6585
|
ButtonModule,
|
|
6372
|
-
RippleModule
|
|
6586
|
+
RippleModule,
|
|
6587
|
+
ConfirmDialogModule] });
|
|
6373
6588
|
}
|
|
6374
6589
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SharedModule, decorators: [{
|
|
6375
6590
|
type: NgModule,
|
|
6376
6591
|
args: [{
|
|
6377
|
-
declarations: [TablePrimaryComponent, HasPermissionDirective],
|
|
6592
|
+
declarations: [TablePrimaryComponent, HasPermissionDirective, ConfirmationDialogComponent],
|
|
6378
6593
|
imports: [
|
|
6379
6594
|
CommonModule,
|
|
6380
6595
|
TableModule,
|
|
6381
6596
|
ButtonModule,
|
|
6382
|
-
RippleModule
|
|
6597
|
+
RippleModule,
|
|
6598
|
+
ConfirmDialogModule
|
|
6383
6599
|
],
|
|
6384
|
-
|
|
6600
|
+
providers: [ConfirmationService],
|
|
6601
|
+
exports: [TablePrimaryComponent, HasPermissionDirective, ConfirmationDialogComponent]
|
|
6385
6602
|
}]
|
|
6386
6603
|
}] });
|
|
6387
6604
|
|
|
@@ -6526,7 +6743,9 @@ class DocumentModule {
|
|
|
6526
6743
|
CardModule,
|
|
6527
6744
|
TableModule,
|
|
6528
6745
|
SharedModule,
|
|
6529
|
-
InputTextareaModule
|
|
6746
|
+
InputTextareaModule,
|
|
6747
|
+
ToastModule,
|
|
6748
|
+
ConfirmDialogModule], exports: [
|
|
6530
6749
|
/**
|
|
6531
6750
|
* Exports the `DocumentContainerComponent` to be used in other modules.
|
|
6532
6751
|
*/
|
|
@@ -6565,6 +6784,10 @@ class DocumentModule {
|
|
|
6565
6784
|
* Provide the DocumentActionsService to be used in other components.
|
|
6566
6785
|
*/
|
|
6567
6786
|
DocumentActionsService,
|
|
6787
|
+
/**
|
|
6788
|
+
* Provide the ConfirmationService to be used in other components.
|
|
6789
|
+
*/
|
|
6790
|
+
ConfirmationService,
|
|
6568
6791
|
/**
|
|
6569
6792
|
* Provide the messageservice to be used in other components.
|
|
6570
6793
|
*/
|
|
@@ -6669,7 +6892,9 @@ class DocumentModule {
|
|
|
6669
6892
|
CardModule,
|
|
6670
6893
|
TableModule,
|
|
6671
6894
|
SharedModule,
|
|
6672
|
-
InputTextareaModule
|
|
6895
|
+
InputTextareaModule,
|
|
6896
|
+
ToastModule,
|
|
6897
|
+
ConfirmDialogModule] });
|
|
6673
6898
|
}
|
|
6674
6899
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentModule, decorators: [{
|
|
6675
6900
|
type: NgModule,
|
|
@@ -6808,7 +7033,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
6808
7033
|
CardModule,
|
|
6809
7034
|
TableModule,
|
|
6810
7035
|
SharedModule,
|
|
6811
|
-
InputTextareaModule
|
|
7036
|
+
InputTextareaModule,
|
|
7037
|
+
ToastModule,
|
|
7038
|
+
ConfirmDialogModule
|
|
6812
7039
|
],
|
|
6813
7040
|
exports: [
|
|
6814
7041
|
/**
|
|
@@ -6850,6 +7077,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
6850
7077
|
* Provide the DocumentActionsService to be used in other components.
|
|
6851
7078
|
*/
|
|
6852
7079
|
DocumentActionsService,
|
|
7080
|
+
/**
|
|
7081
|
+
* Provide the ConfirmationService to be used in other components.
|
|
7082
|
+
*/
|
|
7083
|
+
ConfirmationService,
|
|
6853
7084
|
/**
|
|
6854
7085
|
* Provide the messageservice to be used in other components.
|
|
6855
7086
|
*/
|
|
@@ -6888,5 +7119,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
6888
7119
|
* Generated bundle index. Do not edit.
|
|
6889
7120
|
*/
|
|
6890
7121
|
|
|
6891
|
-
export { DocumentActionsComponent, DocumentContainerComponent, DocumentDirective, DocumentHistoryComponent, DocumentListComponent, DocumentModule, DocumentSearchComponent, DocumentTableBuilderService, DocumentViewerComponent, HasPermissionDirective, SidebarComponent };
|
|
7122
|
+
export { COUNTRIES, ConfirmationDialogComponent, DOCUMENTTYPES, DUMMYDOCUMENTLIST, DUMMYSUMMARY, DUMMY_DOCUMENT_SECTIONS, DocumentActionsComponent, DocumentAlertList, DocumentContainerComponent, DocumentDirective, DocumentHistoryComponent, DocumentListComponent, DocumentModule, DocumentSearchComponent, DocumentTableBuilderService, DocumentViewerComponent, HasPermissionDirective, SAMPLE_STATUS_DATA, SHARED, SUPPORTED_IMAGE_TYPES, SharedModule, SidebarComponent, TablePrimaryComponent, USERLIST };
|
|
6892
7123
|
//# sourceMappingURL=cat-documents-ng.mjs.map
|