cat-documents-ng 0.5.18 → 0.5.19

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.
@@ -1425,7 +1425,7 @@ class DocumentHttpService {
1425
1425
  */
1426
1426
  getDocumentCatagories(contextId) {
1427
1427
  let headers = new HttpHeaders({
1428
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1428
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1429
1429
  });
1430
1430
  return this.http.get(`${this.apiUrl}${URLS.DOCUMENTS_CATAGORIES}/${contextId}`, { headers })
1431
1431
  .pipe(tap((response) => {
@@ -1471,7 +1471,7 @@ class DocumentHttpService {
1471
1471
  */
1472
1472
  getDocumentByFolderID(folderId, contextId) {
1473
1473
  let headers = new HttpHeaders({
1474
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1474
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1475
1475
  });
1476
1476
  return this.http.get(`${this.apiUrl}${URLS.DOCUMENT_UPLOAD}/${URLS.PARENT_DOCUMENT_TYPE_ID}${folderId}${URLS.CONTEXT_ID}${contextId}`, { headers }).pipe(tap((records) => {
1477
1477
  this.documentStore.set(records);
@@ -1489,7 +1489,7 @@ class DocumentHttpService {
1489
1489
  */
1490
1490
  updateDocumentName(documentId, payload) {
1491
1491
  let headers = new HttpHeaders({
1492
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1492
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1493
1493
  });
1494
1494
  return this.http.put(`${this.apiUrl}${URLS.ALIAS_NAME}${documentId}`, payload, { headers }).pipe(catchError((error) => {
1495
1495
  return throwError(() => new Error(error));
@@ -1502,7 +1502,7 @@ class DocumentHttpService {
1502
1502
  */
1503
1503
  getUserListByContextId(contextId) {
1504
1504
  let headers = new HttpHeaders({
1505
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1505
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1506
1506
  });
1507
1507
  if (!contextId)
1508
1508
  return EMPTY;
@@ -1523,7 +1523,7 @@ class DocumentHttpService {
1523
1523
  if (!applicationId)
1524
1524
  return EMPTY;
1525
1525
  let headers = new HttpHeaders({
1526
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1526
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1527
1527
  });
1528
1528
  let url = `${this.apiUrl}${URLS.STATUS_DOCUMENT_COUNT}${applicationId}`;
1529
1529
  let params = new HttpParams();
@@ -1553,7 +1553,7 @@ class DocumentHttpService {
1553
1553
  */
1554
1554
  getDocumentsBySelection(contextId, menuItem, userId, status, searchKey = null) {
1555
1555
  let headers = new HttpHeaders({
1556
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1556
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1557
1557
  });
1558
1558
  let params = new HttpParams();
1559
1559
  if (userId) {
@@ -1575,7 +1575,7 @@ class DocumentHttpService {
1575
1575
  }
1576
1576
  getDocumentHistory(documentId) {
1577
1577
  let headers = new HttpHeaders({
1578
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1578
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1579
1579
  });
1580
1580
  if (!documentId) {
1581
1581
  return of([]);
@@ -1593,7 +1593,7 @@ class DocumentHttpService {
1593
1593
  if (!source)
1594
1594
  return EMPTY;
1595
1595
  let headers = new HttpHeaders({
1596
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1596
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1597
1597
  });
1598
1598
  return this.http.get(`${this.apiUrl}${URLS.GET_CATEGORIES_BY_SOURCE}${source}`, { headers }).pipe(catchError((error) => {
1599
1599
  return throwError(() => new Error(error));
@@ -1606,7 +1606,7 @@ class DocumentHttpService {
1606
1606
  */
1607
1607
  getDocumentTypesByCategory(categoryId) {
1608
1608
  let headers = new HttpHeaders({
1609
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1609
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1610
1610
  });
1611
1611
  if (!categoryId)
1612
1612
  return EMPTY;
@@ -1621,7 +1621,7 @@ class DocumentHttpService {
1621
1621
  */
1622
1622
  uploadFile(formData) {
1623
1623
  let headers = new HttpHeaders({
1624
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1624
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1625
1625
  });
1626
1626
  return this.http.post(`${this.apiUrl}${URLS.DOCUMENT_UPLOAD_FILE}`, formData, { headers }).pipe(catchError((error) => {
1627
1627
  return throwError(() => new Error(error));
@@ -1634,7 +1634,7 @@ class DocumentHttpService {
1634
1634
  */
1635
1635
  saveDocumentUpload(payload) {
1636
1636
  let headers = new HttpHeaders({
1637
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1637
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1638
1638
  });
1639
1639
  return this.http.post(`${this.apiUrl}${URLS.SAVE_DOCUMENT_UPLOAD}`, payload, { headers }).pipe(catchError((error) => {
1640
1640
  return throwError(() => new Error(error));
@@ -1649,7 +1649,7 @@ class DocumentHttpService {
1649
1649
  */
1650
1650
  updateDocumentStatus(documentId, status, statusUpdateDescription) {
1651
1651
  let headers = new HttpHeaders({
1652
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1652
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1653
1653
  });
1654
1654
  const payload = {
1655
1655
  statusUpdateDescription: statusUpdateDescription
@@ -1688,7 +1688,7 @@ class DocumentHttpService {
1688
1688
  */
1689
1689
  deleteDocument(documentId, contextId) {
1690
1690
  let headers = new HttpHeaders({
1691
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1691
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1692
1692
  });
1693
1693
  return this.http.delete(`${this.apiUrl}${URLS.DELETE_DOCUMENT}${documentId}`, { headers }).pipe(tap(() => {
1694
1694
  this.getDocumentCatagories(contextId).subscribe();
@@ -1707,7 +1707,7 @@ class DocumentHttpService {
1707
1707
  */
1708
1708
  downloadExcelFile(documentUrl) {
1709
1709
  let headers = new HttpHeaders({
1710
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1710
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1711
1711
  });
1712
1712
  return this.http.get(documentUrl, { headers,
1713
1713
  responseType: 'arraybuffer'
@@ -1723,7 +1723,7 @@ class DocumentHttpService {
1723
1723
  */
1724
1724
  downloadCsvFile(documentUrl) {
1725
1725
  let headers = new HttpHeaders({
1726
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1726
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1727
1727
  });
1728
1728
  return this.http.get(documentUrl, { headers,
1729
1729
  responseType: 'text'
@@ -1738,7 +1738,7 @@ class DocumentHttpService {
1738
1738
  */
1739
1739
  downloadEmailFile(documentUrl) {
1740
1740
  let headers = new HttpHeaders({
1741
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1741
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1742
1742
  });
1743
1743
  const isAzureBlobStorage = documentUrl.includes('.blob.core.windows.net');
1744
1744
  if (isAzureBlobStorage) {
@@ -1756,7 +1756,7 @@ class DocumentHttpService {
1756
1756
  }
1757
1757
  documentRequest(payload) {
1758
1758
  let headers = new HttpHeaders({
1759
- 'Authorization': `Bearer 4fe17947-30bf-4079-b4ea-798ff73cd473`
1759
+ 'Authorization': `Bearer 69835a07-3449-40ac-aa92-5235732029c1`
1760
1760
  });
1761
1761
  return this.http.post(`${this.apiUrl}${URLS.DOCUMENT_REQUEST}`, payload, { headers }).pipe(catchError((error) => {
1762
1762
  return throwError(() => new Error(error));
@@ -4598,6 +4598,7 @@ class DocumentSearchComponent {
4598
4598
  onActionClick = new EventEmitter();
4599
4599
  onRequestClick = new EventEmitter();
4600
4600
  searchTerm = SHARED.EMPTY;
4601
+ showActionsMenu = false;
4601
4602
  destroy$ = new Subject();
4602
4603
  searchSubject = new Subject();
4603
4604
  hasActiveFilters = false;
@@ -4608,10 +4609,12 @@ class DocumentSearchComponent {
4608
4609
  ngOnInit() {
4609
4610
  this.setupSearchSubscription();
4610
4611
  this.setupFilterSubscription();
4612
+ this.setupClickOutsideListener();
4611
4613
  }
4612
4614
  ngOnDestroy() {
4613
4615
  this.destroy$.next();
4614
4616
  this.destroy$.complete();
4617
+ this.removeClickOutsideListener();
4615
4618
  }
4616
4619
  /**
4617
4620
  * Sets up the search input subscription with debouncing
@@ -4669,12 +4672,54 @@ class DocumentSearchComponent {
4669
4672
  get shouldShowClearAll() {
4670
4673
  return this.hasActiveFilters;
4671
4674
  }
4675
+ /**
4676
+ * Toggles the actions dropdown menu
4677
+ */
4678
+ toggleActionsMenu() {
4679
+ this.showActionsMenu = !this.showActionsMenu;
4680
+ }
4681
+ /**
4682
+ * Handles upload document action
4683
+ */
4684
+ handleUploadDocument() {
4685
+ this.showActionsMenu = false;
4686
+ this.onActionClick.emit();
4687
+ }
4688
+ /**
4689
+ * Handles request document action
4690
+ */
4691
+ handleRequestDocument() {
4692
+ this.showActionsMenu = false;
4693
+ this.onRequestClick.emit();
4694
+ }
4695
+ /**
4696
+ * Sets up click outside listener to close dropdown
4697
+ */
4698
+ setupClickOutsideListener() {
4699
+ document.addEventListener('click', this.handleClickOutside);
4700
+ }
4701
+ /**
4702
+ * Removes click outside listener
4703
+ */
4704
+ removeClickOutsideListener() {
4705
+ document.removeEventListener('click', this.handleClickOutside);
4706
+ }
4707
+ /**
4708
+ * Handles clicks outside the dropdown to close it
4709
+ */
4710
+ handleClickOutside = (event) => {
4711
+ const target = event.target;
4712
+ const actionsMenu = target.closest('.actions-menu');
4713
+ if (!actionsMenu && this.showActionsMenu) {
4714
+ this.showActionsMenu = false;
4715
+ }
4716
+ };
4672
4717
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentSearchComponent, deps: [{ token: DocumentHelperService }, { token: DocumentQuery }], target: i0.ɵɵFactoryTarget.Component });
4673
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DocumentSearchComponent, isStandalone: false, selector: "document-search", inputs: { contextId: "contextId" }, outputs: { onActionClick: "onActionClick", onRequestClick: "onRequestClick" }, ngImport: i0, template: "<div class=\"search-container\">\r\n <div class=\"search-header\">\r\n <h2 class=\"ml-3\">Documents</h2> \r\n </div>\r\n <div class=\"search-input-wrapper\">\r\n <i class=\"pi pi-search search-icon\"></i>\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"onSearchInputChange($event)\"\r\n class=\"search-input\"\r\n placeholder=\"Search by document name, category, type, status or applicant name...\"\r\n [attr.aria-label]=\"'Search documents'\"\r\n />\r\n <button \r\n *ngIf=\"searchTerm\"\r\n type=\"button\"\r\n class=\"clear-button\"\r\n (click)=\"onClearSearch()\"\r\n [attr.aria-label]=\"'Clear search'\"\r\n >\r\n <i class=\"pi pi-times\"></i>\r\n </button>\r\n </div>\r\n\r\n <button \r\n *ngIf=\"shouldShowClearAll\"\r\n type=\"button\"\r\n class=\"clear-all-filters-link\"\r\n (click)=\"onClearAllFilters()\"\r\n [attr.aria-label]=\"'Clear all'\"\r\n >\r\n Clear All\r\n <i class=\"pi pi-times\"></i>\r\n </button>\r\n\r\n <div class=\"filters-section\">\r\n <button \r\n type=\"button\"\r\n class=\"action-button\"\r\n (click)=\"onActionClick.emit()\"\r\n [attr.aria-label]=\"'Open actions menu'\"\r\n >\r\n Upload Document\r\n </button>\r\n <button \r\n type=\"button\"\r\n class=\"action-button ml-2\"\r\n (click)=\"onRequestClick.emit()\"\r\n [attr.aria-label]=\"'Open request document sidebar'\"\r\n >\r\n Request Document\r\n </button>\r\n </div>\r\n</div> ", styles: [".search-container{display:flex;align-items:center;gap:1rem;width:100%;justify-content:flex-start;padding:10px}.search-input-wrapper{position:relative;flex:1;display:flex;align-items:center;max-width:50%;min-width:300px}.clear-all-filters-link{background:none;border:none;color:#0f8bfd;cursor:pointer;padding:8px 12px;border-radius:4px;font-size:16px;font-weight:500;text-decoration:none!important;transition:background-color .2s ease,color .2s ease;white-space:nowrap;flex-shrink:0;display:flex;justify-content:center;align-items:center;gap:4px}.filters-section{display:flex;align-items:center;gap:1rem;flex-shrink:0;margin-left:auto}.search-icon{position:absolute;left:12px;color:#6c757d;z-index:1}.search-input{width:100%;padding:12px 40px;border:1px solid #dee2e6;border-radius:8px;font-size:14px;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.search-input:focus{border-color:#0f8bfd;box-shadow:0 0 0 3px #0f8bfd1a}.search-input::placeholder{color:#6c757d}.clear-button{position:absolute;right:12px;background:none;border:none;color:#6c757d;cursor:pointer;padding:4px;border-radius:4px;transition:background-color .2s ease,color .2s ease}.clear-button:hover{background-color:#f8f9fa;color:#495057}.action-button{background-color:#0f8bfd;color:#fff;border:none;padding:12px 24px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background-color .2s ease,transform .1s ease;white-space:nowrap}.action-button:hover{background-color:#0d7ae6;transform:translateY(-1px)}.action-button:active{transform:translateY(0)}.action-button:focus{outline:none;box-shadow:0 0 0 3px #0f8bfd4d}@media (max-width: 768px){.search-container{flex-direction:column;gap:.75rem}.search-input-wrapper{max-width:100%}.filters-section{width:100%;justify-content:center;gap:.5rem}.action-button{width:auto;justify-content:center}}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9$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: i9$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
4718
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DocumentSearchComponent, isStandalone: false, selector: "document-search", inputs: { contextId: "contextId" }, outputs: { onActionClick: "onActionClick", onRequestClick: "onRequestClick" }, ngImport: i0, template: "<div class=\"search-container\">\r\n <div class=\"search-header\">\r\n <h2 class=\"ml-3 document-heading\">Documents</h2> \r\n </div>\r\n <div class=\"search-input-wrapper\">\r\n <i class=\"pi pi-search search-icon\"></i>\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"onSearchInputChange($event)\"\r\n class=\"search-input\"\r\n placeholder=\"Search by document name, category, type, status or applicant name...\"\r\n [attr.aria-label]=\"'Search documents'\"\r\n />\r\n <button \r\n *ngIf=\"searchTerm\"\r\n type=\"button\"\r\n class=\"clear-button\"\r\n (click)=\"onClearSearch()\"\r\n [attr.aria-label]=\"'Clear search'\"\r\n >\r\n <i class=\"pi pi-times\"></i>\r\n </button>\r\n </div>\r\n\r\n <button \r\n *ngIf=\"shouldShowClearAll\"\r\n type=\"button\"\r\n class=\"clear-all-filters-link\"\r\n (click)=\"onClearAllFilters()\"\r\n [attr.aria-label]=\"'Clear all'\"\r\n >\r\n Clear All\r\n <i class=\"pi pi-times\"></i>\r\n </button>\r\n\r\n <div class=\"filters-section\">\r\n <div class=\"actions-menu\">\r\n <button \r\n type=\"button\"\r\n class=\"actions-btn\" \r\n (click)=\"toggleActionsMenu()\" \r\n [class.active]=\"showActionsMenu\"\r\n [attr.aria-label]=\"'Open actions menu'\"\r\n [attr.aria-expanded]=\"showActionsMenu\"\r\n >\r\n Actions\r\n <i class=\"pi pi-chevron-down\" [class.rotated]=\"showActionsMenu\"></i>\r\n </button>\r\n\r\n <!-- Actions Dropdown Menu -->\r\n <div class=\"actions-dropdown\" *ngIf=\"showActionsMenu\">\r\n <div class=\"dropdown-item\" (click)=\"handleUploadDocument()\">\r\n <i class=\"pi pi-upload\"></i>\r\n <span>Upload Document</span>\r\n </div>\r\n <div class=\"dropdown-item\" (click)=\"handleRequestDocument()\">\r\n <i class=\"pi pi-file\"></i>\r\n <span>Request Document</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div> ", styles: [".search-container{display:flex;align-items:center;gap:1rem;width:100%;justify-content:flex-start;padding:10px}.search-input-wrapper{position:relative;flex:1;display:flex;align-items:center;max-width:50%;min-width:300px}.clear-all-filters-link{background:none;border:none;color:#0f8bfd;cursor:pointer;padding:8px 12px;border-radius:4px;font-size:16px;font-weight:500;text-decoration:none!important;transition:background-color .2s ease,color .2s ease;white-space:nowrap;flex-shrink:0;display:flex;justify-content:center;align-items:center;gap:4px}.filters-section{display:flex;align-items:center;gap:1rem;flex-shrink:0;margin-left:auto}.filters-section .actions-menu{position:relative}.filters-section .actions-menu .actions-btn{background:#0f8bfd;border:none;border-radius:8px;padding:12px 24px;color:#fff;font-size:14px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .2s ease;white-space:nowrap}.filters-section .actions-menu .actions-btn:hover{background:#0d7ae6;transform:translateY(-1px)}.filters-section .actions-menu .actions-btn:active{transform:translateY(0)}.filters-section .actions-menu .actions-btn.active{background:#0d7ae6}.filters-section .actions-menu .actions-btn:focus{outline:none;box-shadow:0 0 0 3px #0f8bfd4d}.filters-section .actions-menu .actions-btn i{font-size:.75rem;transition:transform .2s}.filters-section .actions-menu .actions-btn i.rotated{transform:rotate(180deg)}.filters-section .actions-menu .actions-dropdown{position:absolute;top:calc(100% + .5rem);right:0;background:#fff;border:1px solid #d1d5db;border-radius:8px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;z-index:1000;min-width:200px;overflow:hidden}.filters-section .actions-menu .actions-dropdown .dropdown-item{padding:.75rem 1rem;cursor:pointer;color:#374151;font-size:.875rem;transition:background-color .2s;display:flex;align-items:center;gap:.75rem}.filters-section .actions-menu .actions-dropdown .dropdown-item i{font-size:1rem;color:#6b7280}.filters-section .actions-menu .actions-dropdown .dropdown-item:hover{background-color:#f3f4f6}.filters-section .actions-menu .actions-dropdown .dropdown-item:not(:last-child){border-bottom:1px solid #f3f4f6}.filters-section .actions-menu .actions-dropdown .dropdown-item:active{background-color:#e5e7eb}.search-icon{position:absolute;left:12px;color:#6c757d;z-index:1}.search-input{width:100%;padding:12px 40px;border:1px solid #dee2e6;border-radius:8px;font-size:14px;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.search-input:focus{border-color:#0f8bfd;box-shadow:0 0 0 3px #0f8bfd1a}.search-input::placeholder{color:#6c757d}.clear-button{position:absolute;right:12px;background:none;border:none;color:#6c757d;cursor:pointer;padding:4px;border-radius:4px;transition:background-color .2s ease,color .2s ease}.clear-button:hover{background-color:#f8f9fa;color:#495057}@media (max-width: 768px){.search-container{flex-direction:column;gap:.75rem}.search-input-wrapper{max-width:100%}.filters-section{width:100%;justify-content:center;gap:.5rem}.filters-section .actions-menu .actions-btn{width:auto;justify-content:center}.filters-section .actions-menu .actions-dropdown{left:50%;transform:translate(-50%);right:auto}}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9$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: i9$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
4674
4719
  }
4675
4720
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentSearchComponent, decorators: [{
4676
4721
  type: Component,
4677
- args: [{ selector: 'document-search', standalone: false, template: "<div class=\"search-container\">\r\n <div class=\"search-header\">\r\n <h2 class=\"ml-3\">Documents</h2> \r\n </div>\r\n <div class=\"search-input-wrapper\">\r\n <i class=\"pi pi-search search-icon\"></i>\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"onSearchInputChange($event)\"\r\n class=\"search-input\"\r\n placeholder=\"Search by document name, category, type, status or applicant name...\"\r\n [attr.aria-label]=\"'Search documents'\"\r\n />\r\n <button \r\n *ngIf=\"searchTerm\"\r\n type=\"button\"\r\n class=\"clear-button\"\r\n (click)=\"onClearSearch()\"\r\n [attr.aria-label]=\"'Clear search'\"\r\n >\r\n <i class=\"pi pi-times\"></i>\r\n </button>\r\n </div>\r\n\r\n <button \r\n *ngIf=\"shouldShowClearAll\"\r\n type=\"button\"\r\n class=\"clear-all-filters-link\"\r\n (click)=\"onClearAllFilters()\"\r\n [attr.aria-label]=\"'Clear all'\"\r\n >\r\n Clear All\r\n <i class=\"pi pi-times\"></i>\r\n </button>\r\n\r\n <div class=\"filters-section\">\r\n <button \r\n type=\"button\"\r\n class=\"action-button\"\r\n (click)=\"onActionClick.emit()\"\r\n [attr.aria-label]=\"'Open actions menu'\"\r\n >\r\n Upload Document\r\n </button>\r\n <button \r\n type=\"button\"\r\n class=\"action-button ml-2\"\r\n (click)=\"onRequestClick.emit()\"\r\n [attr.aria-label]=\"'Open request document sidebar'\"\r\n >\r\n Request Document\r\n </button>\r\n </div>\r\n</div> ", styles: [".search-container{display:flex;align-items:center;gap:1rem;width:100%;justify-content:flex-start;padding:10px}.search-input-wrapper{position:relative;flex:1;display:flex;align-items:center;max-width:50%;min-width:300px}.clear-all-filters-link{background:none;border:none;color:#0f8bfd;cursor:pointer;padding:8px 12px;border-radius:4px;font-size:16px;font-weight:500;text-decoration:none!important;transition:background-color .2s ease,color .2s ease;white-space:nowrap;flex-shrink:0;display:flex;justify-content:center;align-items:center;gap:4px}.filters-section{display:flex;align-items:center;gap:1rem;flex-shrink:0;margin-left:auto}.search-icon{position:absolute;left:12px;color:#6c757d;z-index:1}.search-input{width:100%;padding:12px 40px;border:1px solid #dee2e6;border-radius:8px;font-size:14px;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.search-input:focus{border-color:#0f8bfd;box-shadow:0 0 0 3px #0f8bfd1a}.search-input::placeholder{color:#6c757d}.clear-button{position:absolute;right:12px;background:none;border:none;color:#6c757d;cursor:pointer;padding:4px;border-radius:4px;transition:background-color .2s ease,color .2s ease}.clear-button:hover{background-color:#f8f9fa;color:#495057}.action-button{background-color:#0f8bfd;color:#fff;border:none;padding:12px 24px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background-color .2s ease,transform .1s ease;white-space:nowrap}.action-button:hover{background-color:#0d7ae6;transform:translateY(-1px)}.action-button:active{transform:translateY(0)}.action-button:focus{outline:none;box-shadow:0 0 0 3px #0f8bfd4d}@media (max-width: 768px){.search-container{flex-direction:column;gap:.75rem}.search-input-wrapper{max-width:100%}.filters-section{width:100%;justify-content:center;gap:.5rem}.action-button{width:auto;justify-content:center}}\n"] }]
4722
+ args: [{ selector: 'document-search', standalone: false, template: "<div class=\"search-container\">\r\n <div class=\"search-header\">\r\n <h2 class=\"ml-3 document-heading\">Documents</h2> \r\n </div>\r\n <div class=\"search-input-wrapper\">\r\n <i class=\"pi pi-search search-icon\"></i>\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"onSearchInputChange($event)\"\r\n class=\"search-input\"\r\n placeholder=\"Search by document name, category, type, status or applicant name...\"\r\n [attr.aria-label]=\"'Search documents'\"\r\n />\r\n <button \r\n *ngIf=\"searchTerm\"\r\n type=\"button\"\r\n class=\"clear-button\"\r\n (click)=\"onClearSearch()\"\r\n [attr.aria-label]=\"'Clear search'\"\r\n >\r\n <i class=\"pi pi-times\"></i>\r\n </button>\r\n </div>\r\n\r\n <button \r\n *ngIf=\"shouldShowClearAll\"\r\n type=\"button\"\r\n class=\"clear-all-filters-link\"\r\n (click)=\"onClearAllFilters()\"\r\n [attr.aria-label]=\"'Clear all'\"\r\n >\r\n Clear All\r\n <i class=\"pi pi-times\"></i>\r\n </button>\r\n\r\n <div class=\"filters-section\">\r\n <div class=\"actions-menu\">\r\n <button \r\n type=\"button\"\r\n class=\"actions-btn\" \r\n (click)=\"toggleActionsMenu()\" \r\n [class.active]=\"showActionsMenu\"\r\n [attr.aria-label]=\"'Open actions menu'\"\r\n [attr.aria-expanded]=\"showActionsMenu\"\r\n >\r\n Actions\r\n <i class=\"pi pi-chevron-down\" [class.rotated]=\"showActionsMenu\"></i>\r\n </button>\r\n\r\n <!-- Actions Dropdown Menu -->\r\n <div class=\"actions-dropdown\" *ngIf=\"showActionsMenu\">\r\n <div class=\"dropdown-item\" (click)=\"handleUploadDocument()\">\r\n <i class=\"pi pi-upload\"></i>\r\n <span>Upload Document</span>\r\n </div>\r\n <div class=\"dropdown-item\" (click)=\"handleRequestDocument()\">\r\n <i class=\"pi pi-file\"></i>\r\n <span>Request Document</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div> ", styles: [".search-container{display:flex;align-items:center;gap:1rem;width:100%;justify-content:flex-start;padding:10px}.search-input-wrapper{position:relative;flex:1;display:flex;align-items:center;max-width:50%;min-width:300px}.clear-all-filters-link{background:none;border:none;color:#0f8bfd;cursor:pointer;padding:8px 12px;border-radius:4px;font-size:16px;font-weight:500;text-decoration:none!important;transition:background-color .2s ease,color .2s ease;white-space:nowrap;flex-shrink:0;display:flex;justify-content:center;align-items:center;gap:4px}.filters-section{display:flex;align-items:center;gap:1rem;flex-shrink:0;margin-left:auto}.filters-section .actions-menu{position:relative}.filters-section .actions-menu .actions-btn{background:#0f8bfd;border:none;border-radius:8px;padding:12px 24px;color:#fff;font-size:14px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .2s ease;white-space:nowrap}.filters-section .actions-menu .actions-btn:hover{background:#0d7ae6;transform:translateY(-1px)}.filters-section .actions-menu .actions-btn:active{transform:translateY(0)}.filters-section .actions-menu .actions-btn.active{background:#0d7ae6}.filters-section .actions-menu .actions-btn:focus{outline:none;box-shadow:0 0 0 3px #0f8bfd4d}.filters-section .actions-menu .actions-btn i{font-size:.75rem;transition:transform .2s}.filters-section .actions-menu .actions-btn i.rotated{transform:rotate(180deg)}.filters-section .actions-menu .actions-dropdown{position:absolute;top:calc(100% + .5rem);right:0;background:#fff;border:1px solid #d1d5db;border-radius:8px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;z-index:1000;min-width:200px;overflow:hidden}.filters-section .actions-menu .actions-dropdown .dropdown-item{padding:.75rem 1rem;cursor:pointer;color:#374151;font-size:.875rem;transition:background-color .2s;display:flex;align-items:center;gap:.75rem}.filters-section .actions-menu .actions-dropdown .dropdown-item i{font-size:1rem;color:#6b7280}.filters-section .actions-menu .actions-dropdown .dropdown-item:hover{background-color:#f3f4f6}.filters-section .actions-menu .actions-dropdown .dropdown-item:not(:last-child){border-bottom:1px solid #f3f4f6}.filters-section .actions-menu .actions-dropdown .dropdown-item:active{background-color:#e5e7eb}.search-icon{position:absolute;left:12px;color:#6c757d;z-index:1}.search-input{width:100%;padding:12px 40px;border:1px solid #dee2e6;border-radius:8px;font-size:14px;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.search-input:focus{border-color:#0f8bfd;box-shadow:0 0 0 3px #0f8bfd1a}.search-input::placeholder{color:#6c757d}.clear-button{position:absolute;right:12px;background:none;border:none;color:#6c757d;cursor:pointer;padding:4px;border-radius:4px;transition:background-color .2s ease,color .2s ease}.clear-button:hover{background-color:#f8f9fa;color:#495057}@media (max-width: 768px){.search-container{flex-direction:column;gap:.75rem}.search-input-wrapper{max-width:100%}.filters-section{width:100%;justify-content:center;gap:.5rem}.filters-section .actions-menu .actions-btn{width:auto;justify-content:center}.filters-section .actions-menu .actions-dropdown{left:50%;transform:translate(-50%);right:auto}}\n"] }]
4678
4723
  }], ctorParameters: () => [{ type: DocumentHelperService }, { type: DocumentQuery }], propDecorators: { contextId: [{
4679
4724
  type: Input
4680
4725
  }], onActionClick: [{