cat-documents-ng 0.5.17 → 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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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));
|
|
@@ -4222,11 +4222,11 @@ class RequestDocumentComponent {
|
|
|
4222
4222
|
this.destroy$.complete();
|
|
4223
4223
|
}
|
|
4224
4224
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RequestDocumentComponent, deps: [{ token: DocumentUploadService }, { token: DocumentUploadFormService }, { token: DocumentUploadDataService }, { token: i0.ChangeDetectorRef }, { token: DocumentHttpService }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4225
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: RequestDocumentComponent, isStandalone: false, selector: "lib-request-document", inputs: { contextId: "contextId", isRequestSaveBtnClicked: "isRequestSaveBtnClicked", isRequestSidebarClosed: "isRequestSidebarClosed" }, outputs: { onFormValidationChange: "onFormValidationChange", onRequestSuccess: "onRequestSuccess", onRequestError: "onRequestError", hasUnsavedChangesChange: "hasUnsavedChangesChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"document-upload-container\">\r\n <!-- Assignment Section (same structure as upload, without files) -->\r\n <div class=\"assignment-section\">\r\n <h4>Assign to Applicant(s) or Application <span class=\"text-red-500\">*</span> </h4>\r\n <div class=\"radio-group\">\r\n <div class=\"radio-item\">\r\n <p-radioButton \r\n name=\"assignmentType\" \r\n value=\"Applicant\" \r\n [(ngModel)]=\"selectedAssignmentType\"\r\n (onClick)=\"onAssignmentTypeChange()\"\r\n [inputId]=\"'req-applicant'\"\r\n ></p-radioButton>\r\n <label [for]=\"'req-applicant'\" class=\"radio-label\">Applicant(s)</label>\r\n </div>\r\n <div class=\"radio-item\">\r\n <p-radioButton \r\n name=\"assignmentType\" \r\n value=\"Application\" \r\n [(ngModel)]=\"selectedAssignmentType\"\r\n (onClick)=\"onAssignmentTypeChange()\"\r\n [inputId]=\"'req-application'\"\r\n ></p-radioButton>\r\n <label [for]=\"'req-application'\" class=\"radio-label\">Application</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Applicant Selection (only when Applicant is selected) -->\r\n <div class=\"applicant-section\" *ngIf=\"selectedAssignmentType === 'Applicant'\">\r\n <h4>Select Applicant(s) <span class=\"text-red-500\">*</span></h4>\r\n <div class=\"grid\">\r\n <div \r\n *ngFor=\"let applicant of filteredApplicantList\" \r\n class=\"applicant-item col-12 md:col-6\"\r\n >\r\n <p-radioButton \r\n name=\"reqSelectedApplicant\"\r\n [value]=\"applicant._id\"\r\n [(ngModel)]=\"selectedApplicant\"\r\n [inputId]=\"'req-applicant-' + applicant._id\"\r\n (onClick)=\"onApplicantSelectionChange()\"\r\n ></p-radioButton>\r\n <label [for]=\"'req-applicant-' + applicant._id\" class=\"applicant-label\">\r\n {{ applicant.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Category Selection -->\r\n <div class=\"category-section\">\r\n <h4>Category <span class=\"text-red-500\">*</span></h4>\r\n <p-dropdown\r\n [options]=\"categoryOptions\"\r\n [(ngModel)]=\"selectedCategory\"\r\n placeholder=\"Select Category type\"\r\n optionLabel=\"label\"\r\n optionValue=\"_id\"\r\n (onChange)=\"onCategoryChange()\"\r\n [disabled]=\"!categoryOptions.length\"\r\n class=\"w-full\"\r\n ></p-dropdown>\r\n </div>\r\n\r\n <!-- Document Type Selection -->\r\n <div class=\"document-type-section\">\r\n <h4>Document Type <span class=\"text-red-500\">*</span></h4>\r\n <p-dropdown\r\n [options]=\"documentTypeOptions\"\r\n [(ngModel)]=\"selectedDocumentType\"\r\n placeholder=\"Select Document type\"\r\n optionLabel=\"label\"\r\n optionValue=\"_id\"\r\n (onChange)=\"onDocumentTypeChange()\"\r\n [disabled]=\"!documentTypeOptions.length || !selectedCategory\"\r\n class=\"w-full\"\r\n ></p-dropdown>\r\n </div>\r\n\r\n <!-- Description Field -->\r\n <div class=\"description-section\">\r\n <
|
|
4225
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: RequestDocumentComponent, isStandalone: false, selector: "lib-request-document", inputs: { contextId: "contextId", isRequestSaveBtnClicked: "isRequestSaveBtnClicked", isRequestSidebarClosed: "isRequestSidebarClosed" }, outputs: { onFormValidationChange: "onFormValidationChange", onRequestSuccess: "onRequestSuccess", onRequestError: "onRequestError", hasUnsavedChangesChange: "hasUnsavedChangesChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"document-upload-container\">\r\n <!-- Assignment Section (same structure as upload, without files) -->\r\n <div class=\"assignment-section\">\r\n <h4>Assign to Applicant(s) or Application <span class=\"text-red-500\">*</span> </h4>\r\n <div class=\"radio-group\">\r\n <div class=\"radio-item\">\r\n <p-radioButton \r\n name=\"assignmentType\" \r\n value=\"Applicant\" \r\n [(ngModel)]=\"selectedAssignmentType\"\r\n (onClick)=\"onAssignmentTypeChange()\"\r\n [inputId]=\"'req-applicant'\"\r\n ></p-radioButton>\r\n <label [for]=\"'req-applicant'\" class=\"radio-label\">Applicant(s)</label>\r\n </div>\r\n <div class=\"radio-item\">\r\n <p-radioButton \r\n name=\"assignmentType\" \r\n value=\"Application\" \r\n [(ngModel)]=\"selectedAssignmentType\"\r\n (onClick)=\"onAssignmentTypeChange()\"\r\n [inputId]=\"'req-application'\"\r\n ></p-radioButton>\r\n <label [for]=\"'req-application'\" class=\"radio-label\">Application</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Applicant Selection (only when Applicant is selected) -->\r\n <div class=\"applicant-section\" *ngIf=\"selectedAssignmentType === 'Applicant'\">\r\n <h4>Select Applicant(s) <span class=\"text-red-500\">*</span></h4>\r\n <div class=\"grid\">\r\n <div \r\n *ngFor=\"let applicant of filteredApplicantList\" \r\n class=\"applicant-item col-12 md:col-6\"\r\n >\r\n <p-radioButton \r\n name=\"reqSelectedApplicant\"\r\n [value]=\"applicant._id\"\r\n [(ngModel)]=\"selectedApplicant\"\r\n [inputId]=\"'req-applicant-' + applicant._id\"\r\n (onClick)=\"onApplicantSelectionChange()\"\r\n ></p-radioButton>\r\n <label [for]=\"'req-applicant-' + applicant._id\" class=\"applicant-label\">\r\n {{ applicant.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Category Selection -->\r\n <div class=\"category-section\">\r\n <h4>Category <span class=\"text-red-500\">*</span></h4>\r\n <p-dropdown\r\n [options]=\"categoryOptions\"\r\n [(ngModel)]=\"selectedCategory\"\r\n placeholder=\"Select Category type\"\r\n optionLabel=\"label\"\r\n optionValue=\"_id\"\r\n (onChange)=\"onCategoryChange()\"\r\n [disabled]=\"!categoryOptions.length\"\r\n class=\"w-full\"\r\n ></p-dropdown>\r\n </div>\r\n\r\n <!-- Document Type Selection -->\r\n <div class=\"document-type-section\">\r\n <h4>Document Type <span class=\"text-red-500\">*</span></h4>\r\n <p-dropdown\r\n [options]=\"documentTypeOptions\"\r\n [(ngModel)]=\"selectedDocumentType\"\r\n placeholder=\"Select Document type\"\r\n optionLabel=\"label\"\r\n optionValue=\"_id\"\r\n (onChange)=\"onDocumentTypeChange()\"\r\n [disabled]=\"!documentTypeOptions.length || !selectedCategory\"\r\n class=\"w-full\"\r\n ></p-dropdown>\r\n </div>\r\n\r\n <!-- Description Field -->\r\n <div class=\"description-section\">\r\n <h6>Description <span class=\"text-red-500\">*</span></h6>\r\n <textarea pInputTextarea [(ngModel)]=\"description\" (ngModelChange)=\"onDescriptionChange()\" rows=\"4\" placeholder=\"Add description\" class=\"w-full\"></textarea>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i12.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "variant", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i8.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize", "variant"], outputs: ["onResize"] }, { 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"] }, { kind: "component", type: i14.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "autoShowPanelOnPrintableCharacterKeyDown", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }] });
|
|
4226
4226
|
}
|
|
4227
4227
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RequestDocumentComponent, decorators: [{
|
|
4228
4228
|
type: Component,
|
|
4229
|
-
args: [{ selector: 'lib-request-document', standalone: false, template: "<div class=\"document-upload-container\">\r\n <!-- Assignment Section (same structure as upload, without files) -->\r\n <div class=\"assignment-section\">\r\n <h4>Assign to Applicant(s) or Application <span class=\"text-red-500\">*</span> </h4>\r\n <div class=\"radio-group\">\r\n <div class=\"radio-item\">\r\n <p-radioButton \r\n name=\"assignmentType\" \r\n value=\"Applicant\" \r\n [(ngModel)]=\"selectedAssignmentType\"\r\n (onClick)=\"onAssignmentTypeChange()\"\r\n [inputId]=\"'req-applicant'\"\r\n ></p-radioButton>\r\n <label [for]=\"'req-applicant'\" class=\"radio-label\">Applicant(s)</label>\r\n </div>\r\n <div class=\"radio-item\">\r\n <p-radioButton \r\n name=\"assignmentType\" \r\n value=\"Application\" \r\n [(ngModel)]=\"selectedAssignmentType\"\r\n (onClick)=\"onAssignmentTypeChange()\"\r\n [inputId]=\"'req-application'\"\r\n ></p-radioButton>\r\n <label [for]=\"'req-application'\" class=\"radio-label\">Application</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Applicant Selection (only when Applicant is selected) -->\r\n <div class=\"applicant-section\" *ngIf=\"selectedAssignmentType === 'Applicant'\">\r\n <h4>Select Applicant(s) <span class=\"text-red-500\">*</span></h4>\r\n <div class=\"grid\">\r\n <div \r\n *ngFor=\"let applicant of filteredApplicantList\" \r\n class=\"applicant-item col-12 md:col-6\"\r\n >\r\n <p-radioButton \r\n name=\"reqSelectedApplicant\"\r\n [value]=\"applicant._id\"\r\n [(ngModel)]=\"selectedApplicant\"\r\n [inputId]=\"'req-applicant-' + applicant._id\"\r\n (onClick)=\"onApplicantSelectionChange()\"\r\n ></p-radioButton>\r\n <label [for]=\"'req-applicant-' + applicant._id\" class=\"applicant-label\">\r\n {{ applicant.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Category Selection -->\r\n <div class=\"category-section\">\r\n <h4>Category <span class=\"text-red-500\">*</span></h4>\r\n <p-dropdown\r\n [options]=\"categoryOptions\"\r\n [(ngModel)]=\"selectedCategory\"\r\n placeholder=\"Select Category type\"\r\n optionLabel=\"label\"\r\n optionValue=\"_id\"\r\n (onChange)=\"onCategoryChange()\"\r\n [disabled]=\"!categoryOptions.length\"\r\n class=\"w-full\"\r\n ></p-dropdown>\r\n </div>\r\n\r\n <!-- Document Type Selection -->\r\n <div class=\"document-type-section\">\r\n <h4>Document Type <span class=\"text-red-500\">*</span></h4>\r\n <p-dropdown\r\n [options]=\"documentTypeOptions\"\r\n [(ngModel)]=\"selectedDocumentType\"\r\n placeholder=\"Select Document type\"\r\n optionLabel=\"label\"\r\n optionValue=\"_id\"\r\n (onChange)=\"onDocumentTypeChange()\"\r\n [disabled]=\"!documentTypeOptions.length || !selectedCategory\"\r\n class=\"w-full\"\r\n ></p-dropdown>\r\n </div>\r\n\r\n <!-- Description Field -->\r\n <div class=\"description-section\">\r\n <
|
|
4229
|
+
args: [{ selector: 'lib-request-document', standalone: false, template: "<div class=\"document-upload-container\">\r\n <!-- Assignment Section (same structure as upload, without files) -->\r\n <div class=\"assignment-section\">\r\n <h4>Assign to Applicant(s) or Application <span class=\"text-red-500\">*</span> </h4>\r\n <div class=\"radio-group\">\r\n <div class=\"radio-item\">\r\n <p-radioButton \r\n name=\"assignmentType\" \r\n value=\"Applicant\" \r\n [(ngModel)]=\"selectedAssignmentType\"\r\n (onClick)=\"onAssignmentTypeChange()\"\r\n [inputId]=\"'req-applicant'\"\r\n ></p-radioButton>\r\n <label [for]=\"'req-applicant'\" class=\"radio-label\">Applicant(s)</label>\r\n </div>\r\n <div class=\"radio-item\">\r\n <p-radioButton \r\n name=\"assignmentType\" \r\n value=\"Application\" \r\n [(ngModel)]=\"selectedAssignmentType\"\r\n (onClick)=\"onAssignmentTypeChange()\"\r\n [inputId]=\"'req-application'\"\r\n ></p-radioButton>\r\n <label [for]=\"'req-application'\" class=\"radio-label\">Application</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Applicant Selection (only when Applicant is selected) -->\r\n <div class=\"applicant-section\" *ngIf=\"selectedAssignmentType === 'Applicant'\">\r\n <h4>Select Applicant(s) <span class=\"text-red-500\">*</span></h4>\r\n <div class=\"grid\">\r\n <div \r\n *ngFor=\"let applicant of filteredApplicantList\" \r\n class=\"applicant-item col-12 md:col-6\"\r\n >\r\n <p-radioButton \r\n name=\"reqSelectedApplicant\"\r\n [value]=\"applicant._id\"\r\n [(ngModel)]=\"selectedApplicant\"\r\n [inputId]=\"'req-applicant-' + applicant._id\"\r\n (onClick)=\"onApplicantSelectionChange()\"\r\n ></p-radioButton>\r\n <label [for]=\"'req-applicant-' + applicant._id\" class=\"applicant-label\">\r\n {{ applicant.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Category Selection -->\r\n <div class=\"category-section\">\r\n <h4>Category <span class=\"text-red-500\">*</span></h4>\r\n <p-dropdown\r\n [options]=\"categoryOptions\"\r\n [(ngModel)]=\"selectedCategory\"\r\n placeholder=\"Select Category type\"\r\n optionLabel=\"label\"\r\n optionValue=\"_id\"\r\n (onChange)=\"onCategoryChange()\"\r\n [disabled]=\"!categoryOptions.length\"\r\n class=\"w-full\"\r\n ></p-dropdown>\r\n </div>\r\n\r\n <!-- Document Type Selection -->\r\n <div class=\"document-type-section\">\r\n <h4>Document Type <span class=\"text-red-500\">*</span></h4>\r\n <p-dropdown\r\n [options]=\"documentTypeOptions\"\r\n [(ngModel)]=\"selectedDocumentType\"\r\n placeholder=\"Select Document type\"\r\n optionLabel=\"label\"\r\n optionValue=\"_id\"\r\n (onChange)=\"onDocumentTypeChange()\"\r\n [disabled]=\"!documentTypeOptions.length || !selectedCategory\"\r\n class=\"w-full\"\r\n ></p-dropdown>\r\n </div>\r\n\r\n <!-- Description Field -->\r\n <div class=\"description-section\">\r\n <h6>Description <span class=\"text-red-500\">*</span></h6>\r\n <textarea pInputTextarea [(ngModel)]=\"description\" (ngModelChange)=\"onDescriptionChange()\" rows=\"4\" placeholder=\"Add description\" class=\"w-full\"></textarea>\r\n </div>\r\n</div>\r\n" }]
|
|
4230
4230
|
}], ctorParameters: () => [{ type: DocumentUploadService }, { type: DocumentUploadFormService }, { type: DocumentUploadDataService }, { type: i0.ChangeDetectorRef }, { type: DocumentHttpService }, { type: SessionService }], propDecorators: { contextId: [{
|
|
4231
4231
|
type: Input
|
|
4232
4232
|
}], isRequestSaveBtnClicked: [{
|
|
@@ -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
|
|
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
|
|
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: [{
|