@unifylib/ui-lib 1.0.78 → 1.0.79

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.
@@ -6,12 +6,12 @@ import * as i1 from '@angular/material/dialog';
6
6
  import { MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';
7
7
  import * as i2 from '@ngx-translate/core';
8
8
  import { TranslateModule, TranslateService } from '@ngx-translate/core';
9
- import * as i6$1 from '@angular/material/button';
9
+ import * as i7 from '@angular/material/button';
10
10
  import { MatButton, MatIconButton, MatButtonModule } from '@angular/material/button';
11
11
  import * as i3$2 from '@angular/material/icon';
12
12
  import { MatIcon, MatIconModule } from '@angular/material/icon';
13
13
  import { MatCell, MatCellDef, MatHeaderCell, MatHeaderCellDef, MatTableDataSource, MatColumnDef, MatTable, MatRow, MatRowDef, MatHeaderRow, MatHeaderRowDef } from '@angular/material/table';
14
- import * as i7 from '@angular/material/sort';
14
+ import * as i7$1 from '@angular/material/sort';
15
15
  import { MatSortModule } from '@angular/material/sort';
16
16
  import * as i9$1 from 'ngx-pagination';
17
17
  import { NgxPaginationModule } from 'ngx-pagination';
@@ -29,7 +29,7 @@ import { MatMenuTrigger, MatMenu, MatMenuItem } from '@angular/material/menu';
29
29
  import * as i4 from '@angular/material/chips';
30
30
  import { MatChipListbox, MatChipOption, MatChip, MatChipsModule, MatChipInput, MatChipGrid, MatChipRow, MatChipRemove } from '@angular/material/chips';
31
31
  import * as i3$1 from '@angular/cdk/bidi';
32
- import * as i5 from '@angular/cdk/a11y';
32
+ import * as i2$1 from '@angular/cdk/a11y';
33
33
  import { LiveAnnouncer } from '@angular/cdk/a11y';
34
34
  import * as i3$4 from '@angular/material/checkbox';
35
35
  import { MatCheckbox, MatCheckboxModule } from '@angular/material/checkbox';
@@ -50,6 +50,7 @@ import * as i3$3 from '@angular/router';
50
50
  import { MatTooltip } from '@angular/material/tooltip';
51
51
  import moment from 'moment/moment';
52
52
  import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
53
+ import * as i4$2 from '@angular/cdk/layout';
53
54
  import { MatExpansionPanelTitle, MatExpansionPanel, MatExpansionPanelHeader, MatExpansionPanelDescription } from '@angular/material/expansion';
54
55
  import moment$1 from 'moment';
55
56
  import { cloneDeep } from 'lodash';
@@ -940,13 +941,13 @@ class PaginatorComponent {
940
941
  get totalPageNumbers() {
941
942
  return Math.ceil(this.totalItems / this.mobileLoadMoreIncrement);
942
943
  }
943
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginatorComponent, deps: [{ token: i3$1.Directionality }, { token: i5.LiveAnnouncer }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
944
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginatorComponent, deps: [{ token: i3$1.Directionality }, { token: i2$1.LiveAnnouncer }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
944
945
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PaginatorComponent, isStandalone: true, selector: "app-paginator", inputs: { currentPage: "currentPage", totalItems: "totalItems", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions", mobileLoadMoreIncrement: "mobileLoadMoreIncrement", displayedItems: "displayedItems" }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange", loadMore: "loadMore" }, usesOnChanges: true, ngImport: i0, template: "<!-- Desktop Pagination -->\r\n<div class=\"paginator-container paginator-desktop\" [dir]=\"currentDirection\" [class.rtl]=\"currentDirection === 'rtl'\">\r\n <button\r\n class=\"paginator-button paginator-nav-button\"\r\n [class.disabled]=\"currentPage === 1\"\r\n [disabled]=\"currentPage === 1\"\r\n (click)=\"previousPage()\"\r\n type=\"button\">\r\n <mat-icon class=\"paginator-icon paginator-icon-left\">chevron_left</mat-icon>\r\n </button>\r\n\r\n <ng-container *ngFor=\"let page of getPageNumbers()\">\r\n <button\r\n *ngIf=\"!isEllipsis(page)\"\r\n class=\"paginator-button paginator-page-button\"\r\n [class.active]=\"isActive(page)\"\r\n [disabled]=\"isActive(page)\"\r\n (click)=\"goToPage(+page)\"\r\n type=\"button\">\r\n <span class=\"paginator-page-number\">{{ page }}</span>\r\n </button>\r\n <div *ngIf=\"isEllipsis(page)\" class=\"paginator-button paginator-ellipsis\">\r\n <span class=\"paginator-ellipsis-text\">...</span>\r\n </div>\r\n </ng-container>\r\n\r\n <button\r\n class=\"paginator-button paginator-nav-button\"\r\n [class.disabled]=\"currentPage === totalPages\"\r\n [disabled]=\"currentPage === totalPages\"\r\n (click)=\"nextPage()\"\r\n type=\"button\">\r\n <mat-icon class=\"paginator-icon paginator-icon-right\">chevron_right</mat-icon>\r\n </button>\r\n</div>\r\n\r\n<!-- Mobile \"Load More\" Pagination -->\r\n<div class=\"paginator-mobile\">\r\n <button\r\n class=\"paginator-load-more-button\"\r\n [disabled]=\"!canLoadMore\"\r\n (click)=\"onLoadMore()\"\r\n type=\"button\">\r\n <span class=\"paginator-load-more-text\">Load More</span>\r\n </button>\r\n <p class=\"paginator-page-indicator\">{{ currentPageNumber }} of {{ totalPageNumbers }}</p>\r\n</div>", styles: [".paginator-container{display:flex;align-items:center;justify-content:flex-end;gap:8px;width:100%;margin-top:16px}.paginator-container.rtl .paginator-icon,.paginator-container[dir=rtl] .paginator-icon{transform:rotate(180deg)}.paginator-button{width:32px;height:32px;border-radius:8px;border:1px solid #f0eeee;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;box-sizing:border-box;transition:all .2s;font-family:Lusail,sans-serif;font-size:14px;line-height:1.2;color:#888;font-weight:300}.paginator-button:hover:not(.disabled):not(.active){background:#fafafa}.paginator-button.disabled{cursor:not-allowed;opacity:.5}.paginator-page-button{font-weight:300}.paginator-page-button.active{border-color:#0d4261;background:#fff;color:#0d4261;font-weight:500;cursor:default}.paginator-page-number{font-family:Lusail,sans-serif;font-size:14px;line-height:1.2;font-weight:inherit;color:inherit;height:14px}.paginator-ellipsis{border:1px solid #f0eeee;background:#fff;cursor:default;color:#888}.paginator-ellipsis-text{font-family:Lusail,sans-serif;font-size:14px;line-height:1.2;font-weight:300;color:#888}.paginator-nav-button{border:1px solid #f0eeee;background:#fff}.paginator-icon{font-size:16px;width:16px;height:16px;color:#000;display:flex;align-items:center;justify-content:center}.paginator-button.disabled .paginator-icon{opacity:.5}.paginator-mobile{display:none;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:100%}.paginator-load-more-button{background:#fff;border:1px solid #f0eeee;border-radius:8px;height:39px;padding:8px 16px 4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;width:100%;max-width:100%;box-sizing:border-box;font-family:Lusail,sans-serif;font-weight:400;font-size:14px;line-height:1.2;color:#000;margin-top:12px}.paginator-load-more-button:hover:not(:disabled){background:#fafafa}.paginator-load-more-button:disabled{cursor:not-allowed;opacity:.5}.paginator-load-more-text{font-family:Lusail,sans-serif;font-weight:400;font-size:14px;line-height:1.2;color:#000;text-align:center}.paginator-page-indicator{font-family:Lusail,sans-serif;font-weight:300;font-size:14px;line-height:1.2;color:#888;text-align:center;margin:0;width:auto}@media (max-width: 768px){.paginator-desktop{display:none}.paginator-mobile{display:flex}}@media (min-width: 769px){.paginator-desktop{display:flex}.paginator-mobile{display:none}}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$1.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
945
946
  }
946
947
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginatorComponent, decorators: [{
947
948
  type: Component,
948
949
  args: [{ selector: 'app-paginator', standalone: true, imports: [MatIconModule, MatButtonModule, NgIf, NgForOf], template: "<!-- Desktop Pagination -->\r\n<div class=\"paginator-container paginator-desktop\" [dir]=\"currentDirection\" [class.rtl]=\"currentDirection === 'rtl'\">\r\n <button\r\n class=\"paginator-button paginator-nav-button\"\r\n [class.disabled]=\"currentPage === 1\"\r\n [disabled]=\"currentPage === 1\"\r\n (click)=\"previousPage()\"\r\n type=\"button\">\r\n <mat-icon class=\"paginator-icon paginator-icon-left\">chevron_left</mat-icon>\r\n </button>\r\n\r\n <ng-container *ngFor=\"let page of getPageNumbers()\">\r\n <button\r\n *ngIf=\"!isEllipsis(page)\"\r\n class=\"paginator-button paginator-page-button\"\r\n [class.active]=\"isActive(page)\"\r\n [disabled]=\"isActive(page)\"\r\n (click)=\"goToPage(+page)\"\r\n type=\"button\">\r\n <span class=\"paginator-page-number\">{{ page }}</span>\r\n </button>\r\n <div *ngIf=\"isEllipsis(page)\" class=\"paginator-button paginator-ellipsis\">\r\n <span class=\"paginator-ellipsis-text\">...</span>\r\n </div>\r\n </ng-container>\r\n\r\n <button\r\n class=\"paginator-button paginator-nav-button\"\r\n [class.disabled]=\"currentPage === totalPages\"\r\n [disabled]=\"currentPage === totalPages\"\r\n (click)=\"nextPage()\"\r\n type=\"button\">\r\n <mat-icon class=\"paginator-icon paginator-icon-right\">chevron_right</mat-icon>\r\n </button>\r\n</div>\r\n\r\n<!-- Mobile \"Load More\" Pagination -->\r\n<div class=\"paginator-mobile\">\r\n <button\r\n class=\"paginator-load-more-button\"\r\n [disabled]=\"!canLoadMore\"\r\n (click)=\"onLoadMore()\"\r\n type=\"button\">\r\n <span class=\"paginator-load-more-text\">Load More</span>\r\n </button>\r\n <p class=\"paginator-page-indicator\">{{ currentPageNumber }} of {{ totalPageNumbers }}</p>\r\n</div>", styles: [".paginator-container{display:flex;align-items:center;justify-content:flex-end;gap:8px;width:100%;margin-top:16px}.paginator-container.rtl .paginator-icon,.paginator-container[dir=rtl] .paginator-icon{transform:rotate(180deg)}.paginator-button{width:32px;height:32px;border-radius:8px;border:1px solid #f0eeee;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;box-sizing:border-box;transition:all .2s;font-family:Lusail,sans-serif;font-size:14px;line-height:1.2;color:#888;font-weight:300}.paginator-button:hover:not(.disabled):not(.active){background:#fafafa}.paginator-button.disabled{cursor:not-allowed;opacity:.5}.paginator-page-button{font-weight:300}.paginator-page-button.active{border-color:#0d4261;background:#fff;color:#0d4261;font-weight:500;cursor:default}.paginator-page-number{font-family:Lusail,sans-serif;font-size:14px;line-height:1.2;font-weight:inherit;color:inherit;height:14px}.paginator-ellipsis{border:1px solid #f0eeee;background:#fff;cursor:default;color:#888}.paginator-ellipsis-text{font-family:Lusail,sans-serif;font-size:14px;line-height:1.2;font-weight:300;color:#888}.paginator-nav-button{border:1px solid #f0eeee;background:#fff}.paginator-icon{font-size:16px;width:16px;height:16px;color:#000;display:flex;align-items:center;justify-content:center}.paginator-button.disabled .paginator-icon{opacity:.5}.paginator-mobile{display:none;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:100%}.paginator-load-more-button{background:#fff;border:1px solid #f0eeee;border-radius:8px;height:39px;padding:8px 16px 4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;width:100%;max-width:100%;box-sizing:border-box;font-family:Lusail,sans-serif;font-weight:400;font-size:14px;line-height:1.2;color:#000;margin-top:12px}.paginator-load-more-button:hover:not(:disabled){background:#fafafa}.paginator-load-more-button:disabled{cursor:not-allowed;opacity:.5}.paginator-load-more-text{font-family:Lusail,sans-serif;font-weight:400;font-size:14px;line-height:1.2;color:#000;text-align:center}.paginator-page-indicator{font-family:Lusail,sans-serif;font-weight:300;font-size:14px;line-height:1.2;color:#888;text-align:center;margin:0;width:auto}@media (max-width: 768px){.paginator-desktop{display:none}.paginator-mobile{display:flex}}@media (min-width: 769px){.paginator-desktop{display:flex}.paginator-mobile{display:none}}\n"] }]
949
- }], ctorParameters: () => [{ type: i3$1.Directionality }, { type: i5.LiveAnnouncer }, { type: i2.TranslateService }], propDecorators: { currentPage: [{
950
+ }], ctorParameters: () => [{ type: i3$1.Directionality }, { type: i2$1.LiveAnnouncer }, { type: i2.TranslateService }], propDecorators: { currentPage: [{
950
951
  type: Input
951
952
  }], totalItems: [{
952
953
  type: Input
@@ -2727,7 +2728,7 @@ class BaseFormCanvasComponent {
2727
2728
  }
2728
2729
  }
2729
2730
  }
2730
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFormCanvasComponent, deps: [{ token: i2.TranslateService }, { token: i3$3.ActivatedRoute }, { token: BackendService }, { token: i3.FormBuilder }, { token: i5.LiveAnnouncer }], target: i0.ɵɵFactoryTarget.Component }); }
2731
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFormCanvasComponent, deps: [{ token: i2.TranslateService }, { token: i3$3.ActivatedRoute }, { token: BackendService }, { token: i3.FormBuilder }, { token: i2$1.LiveAnnouncer }], target: i0.ɵɵFactoryTarget.Component }); }
2731
2732
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: BaseFormCanvasComponent, isStandalone: true, selector: "app-base-form-canvas", inputs: { pageInfo: { classPropertyName: "pageInfo", publicName: "pageInfo", isSignal: false, isRequired: false, transformFunction: null }, currency: { classPropertyName: "currency", publicName: "currency", isSignal: false, isRequired: false, transformFunction: null }, fields: { classPropertyName: "fields", publicName: "fields", isSignal: false, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: false, isRequired: false, transformFunction: null }, workflowEditableFields: { classPropertyName: "workflowEditableFields", publicName: "workflowEditableFields", isSignal: false, isRequired: false, transformFunction: null }, isWorkflowEditableManaged: { classPropertyName: "isWorkflowEditableManaged", publicName: "isWorkflowEditableManaged", isSignal: false, isRequired: false, transformFunction: null }, supportingAttributes: { classPropertyName: "supportingAttributes", publicName: "supportingAttributes", isSignal: false, isRequired: false, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "editable", isSignal: false, isRequired: false, transformFunction: null }, emitOnValueChanges: { classPropertyName: "emitOnValueChanges", publicName: "emitOnValueChanges", isSignal: false, isRequired: false, transformFunction: null }, filterResetNonce: { classPropertyName: "filterResetNonce", publicName: "filterResetNonce", isSignal: false, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: false, isRequired: false, transformFunction: null }, equationSuggestedFields: { classPropertyName: "equationSuggestedFields", publicName: "equationSuggestedFields", isSignal: false, isRequired: false, transformFunction: null }, currentEquationValue: { classPropertyName: "currentEquationValue", publicName: "currentEquationValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { attachmentEmitter: "attachmentEmitter", actionEmitter: "actionEmitter", formUpdated: "formUpdated", hyperTextEvent: "hyperTextEvent", currentEquationValue: "currentEquationValueChange" }, providers: [
2732
2733
  {
2733
2734
  provide: DateAdapter,
@@ -2805,7 +2806,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2805
2806
  { provide: MAT_DATE_FORMATS, useValue: DD_MM_YYYY_Format },
2806
2807
  { provide: MAT_DATE_LOCALE, useValue: 'en-GB' }
2807
2808
  ], template: "<div class=\"main-form-canvas\">\r\n <div class=\"form-wrapper\">\r\n <ng-container *ngIf=\"defaults\">\r\n <ng-container *ngIf=\"editable; else readonlyView\" class=\"form-container\">\r\n <form [formGroup]=\"formParam\" class=\"form-content\">\r\n <div class=\"form-row\">\r\n <div class=\"form-column\">\r\n <ng-container *ngFor=\"let row of screenFields | keyvalue\">\r\n <div class=\"row-container\">\r\n <ng-container *ngFor=\"let field of row.value\">\r\n <div class=\"field-column\" [style.flex]=\"field.fieldSize ? ('0 0 ' + field.fieldSize + '%') : '1 1 0'\">\r\n <ng-container [ngSwitch]=\"field.type\">\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <input matInput\r\n [matDatepicker]=\"picker\"\r\n [min]=\"minDate\"\r\n (dateChange)=\"formParam.get(field.property).setValue($event.value)\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [attr.tabindex]=\"field.readonly ? -1 : null\"\r\n formControlName=\"{{field.property}}\"\r\n [required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\">\r\n\r\n <mat-datepicker-toggle *ngIf=\"!field.readonly\" matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n\r\n <mat-datepicker #picker\r\n [startView]=\"getView(field)\"\r\n (yearSelected)=\"setMonthAndYear($event, picker, field)\"\r\n panelClass=\"example-month-picker\">\r\n </mat-datepicker>\r\n\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'phone-number'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container class=\"custom-ngx-mat-intl-tel-input\" *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <div class=\"phone-input-wrapper\">\r\n <ngx-mat-intl-tel-input\r\n formControlName=\"{{ field.property }}\"\r\n [inputPlaceholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [preferredCountries]=\"['qa']\"\r\n [enablePlaceholder]=\"true\"\r\n [enableSearch]=\"true\"\r\n [onlyCountries]=\"getCountryCodeList()\"\r\n [required]=\"field.required\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\">\r\n </ngx-mat-intl-tel-input>\r\n </div>\r\n\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'iban-text'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"textReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [attr.tabindex]=\"field.readonly ? -1 : null\"\r\n [required]=\"field.required\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'password'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input matInput\r\n class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n [type]=\"hide && !field.disabled ? 'password' : 'text'\"\r\n [readonly]=\"field.readonly\"\r\n [attr.tabindex]=\"field.readonly ? -1 : null\"\r\n [required]=\"field.required\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\">\r\n <!-- <mat-icon matSuffix-->\r\n <!-- (click)=\"hide = !hide\">-->\r\n <!-- {{ hide ? 'visibility_off' : 'visibility' }}-->\r\n <!-- </mat-icon>-->\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"textReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-icon *ngIf=\"field.showSearchIcon\" matPrefix>search</mat-icon>\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [attr.tabindex]=\"field.readonly ? -1 : null\"\r\n [required]=\"field.required\"\r\n (keyup)=\"fixArabicNumbers($event.target)\"\r\n [attr.aria-required]=\"field.required\"\r\n [maxDigits]=\"field.maxLength\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\">\r\n <span\r\n *ngIf=\"field.showSearchIcon && !field.readonly && (formParam?.get([field.property])?.value ?? '') !== ''\"\r\n matSuffix\r\n class=\"clear-icon-suffix\">\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n class=\"clear-icon-button\"\r\n [attr.aria-label]=\"'BASE_TABLE.clearField' | translate\"\r\n (click)=\"clearFieldValue(field.property)\">\r\n <mat-icon aria-hidden=\"true\">close</mat-icon>\r\n </button>\r\n </span>\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'multi-state-checkbox'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"multi-state-filter\" [formGroup]=\"formParam\">\r\n <button\r\n type=\"button\"\r\n class=\"multi-state-filter__trigger\"\r\n [matMenuTriggerFor]=\"statusMultiMenu\"\r\n [attr.aria-haspopup]=\"true\"\r\n [attr.aria-expanded]=\"false\"\r\n [attr.aria-label]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : (field.label | translate)\">\r\n <span\r\n class=\"multi-state-filter__trigger-text\"\r\n [class.multi-state-filter__trigger-text--placeholder]=\"isMultiStateEmpty(field.property)\">\r\n {{\r\n getMultiStateFilterTriggerLabel(field)\r\n || (field.placeholder\r\n ? (labelKeyPlaceHolder(field) | translate)\r\n : ('FILTER-BUILDER.selectStatus' | translate))\r\n }}\r\n </span>\r\n <mat-icon class=\"multi-state-filter__chevron\" aria-hidden=\"true\">keyboard_arrow_down</mat-icon>\r\n </button>\r\n <mat-menu #statusMultiMenu=\"matMenu\" class=\"multi-state-filter__menu-panel\" [hasBackdrop]=\"true\">\r\n <div\r\n class=\"multi-state-filter__menu-inner\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"onMultiStateMenuInnerKeydown($event, field)\">\r\n <div\r\n *ngFor=\"let code of field.listOptions || []\"\r\n mat-menu-item\r\n class=\"multi-state-filter__row\"\r\n [attr.data-multi-state-code]=\"code\"\r\n (click)=\"onMultiStateRowClick($event, field.property, code)\">\r\n <mat-checkbox\r\n tabindex=\"-1\"\r\n (click)=\"$event.stopPropagation()\"\r\n [checked]=\"isMultiStateSelected(field.property, code)\"\r\n (change)=\"toggleMultiStateFilter(field.property, code, $event.checked)\">\r\n </mat-checkbox>\r\n <span\r\n class=\"multi-state-filter__pill stateType\"\r\n [ngClass]=\"code\">\r\n {{ statusOptionLabelKey(field, code) | translate }}\r\n </span>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'chip-list'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n\r\n <mat-chip-grid [attr.aria-labelledby]=\"'label-' + field.property\"\r\n formControlName=\"{{ field.property }}\">\r\n <mat-chip-row\r\n *ngFor=\"let mail of splittedChips(formParam, field.property); let idx = index\"\r\n [removable]=\"removable\"\r\n (removed)=\"removeChipsItem(formParam, field.property, idx)\">\r\n {{ mail }}\r\n <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\r\n </mat-chip-row>\r\n\r\n <input [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\"\r\n [matChipInputFor]=\"null\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"addOnBlur\"\r\n (matChipInputTokenEnd)=\"addEmailToChips($event, formParam, field.property)\">\r\n </mat-chip-grid>\r\n <mat-error id=\"error-{{ field.property }}\" *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'amount'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"amountReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n type=\"number\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [attr.tabindex]=\"field.readonly ? -1 : null\"\r\n [required]=\"field.required\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'sequence'\">\r\n <ng-container\r\n *ngIf=\"referenceAttributeTrue(field.property, 'autoGenerated'); else noSequence\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"true\"\r\n [disabled]=\"true\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #noSequence>\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [readonly]=\"false\"\r\n [disabled]=\"false\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [required]=\"field.required\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-template>\r\n\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"textareaReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <textarea cdkFocusInitial\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"3\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-required]=\"field.required\"\r\n [maxDigits]=\"field.maxLength\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\"\r\n [readonly]=\"field.readonly\"\r\n [attr.tabindex]=\"field.readonly ? -1 : null\"\r\n [required]=\"field.required\"></textarea>\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"numberReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n type=\"number\"\r\n [attr.min]=\"field.allowNegative ? null : 0\"\r\n (keydown)=\"blockNegativeNumberKeydown($event, field)\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [maxDigits]=\"field.maxLength\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\"\r\n [required]=\"field.readonly ? false : field.required\"\r\n [readonly]=\"field.readonly\"\r\n [attr.tabindex]=\"field.readonly ? -1 : null\"\r\n [pattern]=\"field.pattern\">\r\n <mat-error id=\"error-{{ field.property }}\" *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'bigdecimal'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"numberReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n matInput\r\n type=\"text\"\r\n inputmode=\"numeric\"\r\n formControlName=\"{{ field.property }}\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n numbersOnly [maxDecimals]=\"field.maxDecimals\"\r\n [maxDigits]=\"field.maxLength\"\r\n [pattern]=\"field.pattern\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\"\r\n [required]=\"field.readonly ? false : field.required\"\r\n [readonly]=\"field.readonly\"\r\n [attr.tabindex]=\"field.readonly ? -1 : null\">\r\n <mat-error id=\"error-{{ field.property }}\" *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"timeReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n matInput\r\n class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n type=\"time\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [attr.tabindex]=\"field.readonly ? -1 : null\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\"\r\n [required]=\"field.required\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"checkboxReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <mat-checkbox\r\n appearance=\"outline\"\r\n style=\"padding-bottom: 14px; padding-top: 14px;\"\r\n [disabled]=\"field.readonly\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\"\r\n formControlName=\"{{ field.property }}\">\r\n {{ field.label! | translate }}\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-checkbox>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'toggle'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"toggleReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-slide-toggle\r\n [disabled]=\"field.readonly\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\"\r\n formControlName=\"{{ field.property }}\">\r\n </mat-slide-toggle>\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'color-picker'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center\">\r\n <h4 style=\"margin-right: 10px\">{{ field.label! | translate }}</h4>\r\n <input\r\n ejs-colorpicker\r\n type=\"color\"\r\n id=\"colorpicker\"\r\n formControlName=\"{{ field.property }}\"\r\n [attr.aria-label]=\"field.label! | translate\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\"\r\n />\r\n </div>\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'radio-button'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"radioButtonReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <mat-radio-group\r\n formControlName=\"{{field.property}}\"\r\n class=\"app-radio\"\r\n [attr.aria-label]=\"field.label! | translate\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\">\r\n <div class=\"field-row\">\r\n <div class=\"field-label\">\r\n <span class=\"custom-label\">{{ field.label! | translate }}</span>\r\n </div>\r\n <div class=\"field-input\">\r\n <div class=\"radio-group-custom\">\r\n <mat-radio-button\r\n *ngFor=\"let option of field.listOptions\"\r\n [value]=\"option\"\r\n [attr.aria-labelledby]=\"option\">\r\n {{ option | translate }}\r\n </mat-radio-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-radio-group>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"listReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-select\r\n formControlName=\"{{field.property}}\"\r\n [attr.aria-label]=\"field.label! | translate\"\r\n [attr.aria-required]=\"field.required\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\"\r\n [disabled]=\"field.readonly\"\r\n [multiple]=\"field.multi || false\"\r\n [required]=\"field.readonly ? false : field.required\"\r\n [(value)]=\"field.defaultListOption\">\r\n <ng-container *ngIf=\"field.translate; else lookup_no_translation\">\r\n <mat-option\r\n *ngFor=\"let item of field.listOptions; let i = index\"\r\n [value]=\"item\">\r\n {{ friendlyName(field.label, field.property, item) | translate }}\r\n </mat-option>\r\n </ng-container>\r\n <ng-template #lookup_no_translation>\r\n <mat-option\r\n *ngFor=\"let item of field.listOptions\"\r\n [value]=\"item\">\r\n {{ getOptionValue(item) }}\r\n </mat-option>\r\n </ng-template>\r\n </mat-select>\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'attachment'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <app-attachment-uploader\r\n [acceptedTypes]=\"getAcceptedFileTypes(field)\"\r\n [ariaDescribedBy]=\"showError(field.property) ? 'error-' + field.property : null\"\r\n (fileSelected)=\"onAttachmentFileSelected($event, field)\"\r\n style=\"margin-top: 5px\">\r\n </app-attachment-uploader>\r\n </ng-container>\r\n <mat-error class=\"iq-error\"\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'lookup'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"lookupReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <app-auto-complete\r\n [form]=\"formParam\"\r\n [field]=\"field\"\r\n [supportingAttributes]=\"supportingAttributes\"\r\n [defaultValue]=\"this.formParam.get(field.property)?.value\"\r\n (selectedValue)=\"patchLookupValue($event, field.property)\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </app-auto-complete>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'currency'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"currencyReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <!-- Uncomment and use the currency control when ready -->\r\n <!-- <app-currency\r\n [form]=\"formParam\"\r\n [field]=\"field\"\r\n [defaultValue]=\"this.formParam.get(field.property)?.value\"\r\n (selectedValue)=\"patchCurrencyValue($event, field.property)\">\r\n </app-currency> -->\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'multi-select'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"multiSelectReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <app-multi-auto-complete\r\n [form]=\"formParam\"\r\n [field]=\"field\"\r\n [defaultValue]=\"getMultiValue(field)\"\r\n (selectedValue)=\"patchMultiSelectValue($event, field.property)\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </app-multi-auto-complete>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'rich-text'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <!-- Uncomment and use the rich text editor when ready -->\r\n <!-- <ckeditor\r\n [editor]=\"Editor\"\r\n [disabled]=\"field.readonly\"\r\n formControlName=\"{{field.property}}\">\r\n </ckeditor> -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'divider'\">\r\n <mat-divider></mat-divider>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'hyper-text'\">\r\n <div>\r\n <mat-label\r\n (click)=\"getHyperTextEvent()\"\r\n class=\"hyper-link\">\r\n {{ field.label! | translate }}\r\n </mat-label>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'section-title'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <div class=\"hrdivider-mid\">\r\n <span>{{ field.label | translate }}</span>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'equation-builder'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"textReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\" dir=\"ltr\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [attr.tabindex]=\"field.readonly ? -1 : null\"\r\n [required]=\"field.required\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"showError(field.property) ? 'error-' + field.property : null\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- <ng-container *ngSwitchCase=\"'equation-builder'\" [formGroup]=\"formParam\">-->\r\n <!-- <ng-container *ngIf=\"showField(defaults, field)\">-->\r\n <!-- <ng-container *ngIf=\"!workflowEditableField(field)\">-->\r\n <!-- <ng-container-->\r\n <!-- [ngTemplateOutlet]=\"dateReadonly\"-->\r\n <!-- [ngTemplateOutletContext]=\"{ field: field }\">-->\r\n <!-- </ng-container>-->\r\n <!-- </ng-container>-->\r\n <!-- <ng-container *ngIf=\"workflowEditableField(field)\">-->\r\n <!-- <div style=\"display: flex; width: 350%\">-->\r\n <!-- <mat-label>{{ field.label! | translate }}</mat-label>-->\r\n <!-- <mat-form-field style=\"width: 400%\" appearance=\"outline\">-->\r\n <!-- <mat-chip-grid #chipGrid>-->\r\n <!-- <ng-container *ngFor=\"let equationValue of equationValues(); let i = index\">-->\r\n <!-- <mat-chip-row (removed)=\"remove(equationValue, i)\">-->\r\n <!-- {{ equationValue }}-->\r\n <!-- <button-->\r\n <!-- matChipRemove-->\r\n <!-- [attr.aria-label]=\"'remove ' + equationValue\">-->\r\n <!-- <mat-icon>cancel</mat-icon>-->\r\n <!-- </button>-->\r\n <!-- </mat-chip-row>-->\r\n <!-- </ng-container>-->\r\n <!-- </mat-chip-grid>-->\r\n <!-- <input-->\r\n <!-- [(ngModel)]=\"currentEquationValue\"-->\r\n <!-- [matChipInputFor]=\"chipGrid\"-->\r\n <!-- [matAutocomplete]=\"auto\"-->\r\n <!-- [ngModelOptions]=\"{ standalone: true }\"-->\r\n <!-- [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"-->\r\n <!-- (matChipInputTokenEnd)=\"add($event)\"-->\r\n <!-- aria-label=\"Add equation value\" />-->\r\n <!-- <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">-->\r\n <!-- <ng-container *ngFor=\"let filteredField of (equationFilteredFields() | async)\">-->\r\n <!-- <mat-option [value]=\"filteredField\">{{ filteredField }}</mat-option>-->\r\n <!-- </ng-container>-->\r\n <!-- </mat-autocomplete>-->\r\n <!-- </mat-form-field>-->\r\n <!-- </div>-->\r\n <!-- <mat-error class=\"iq-error\" *ngIf=\"showError(field.property)\" aria-live=\"assertive\">-->\r\n <!-- {{ getErrors(field.property) | translate }}-->\r\n <!-- </mat-error>-->\r\n <!-- </ng-container>-->\r\n <!-- </ng-container>-->\r\n <!-- </ng-container>-->\r\n\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n</div>\r\n<ng-template #dateReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) | date: getReadonlyDateFormat(field) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #timeReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ formatTimeToDate(defaults[field.property]) | date: 'shortTime' }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #phoneNumberReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #textReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\" *ngIf=\"!field.advancedFilter\"></label>\r\n <ng-container *ngIf=\"isReadonlyTextValueEmpty(defaults, field) && field.emptyReadonlyPlaceholderKey; else textReadonlyHasValue\">\r\n <span class=\"readonly-value readonly-value--empty\">{{ field.emptyReadonlyPlaceholderKey | translate }}</span>\r\n </ng-container>\r\n <ng-template #textReadonlyHasValue>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </ng-template>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #textareaReadonly let-field=\"field\">\r\n <ng-container *ngIf=\"field.textFormat === 'json'; else normalText\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <div class=\"readonly-value json-viewer\">\r\n <ngx-json-viewer [json]=\"extractJsonFieldName(defaults, field.property)\" [expanded]=\"true\"></ngx-json-viewer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-template #normalText>\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n </ng-template>\r\n</ng-template>\r\n\r\n<ng-template #numberReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #currencyReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #radioButtonReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ translateLable(defaults[field.property]) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #richTextReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\" [innerHtml]=\"extractFieldName(defaults, field.property)\"></span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #checkboxReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">\r\n <mat-icon color=\"warn\" *ngIf=\"extractFieldName(defaults, field.property); else showNo\">done</mat-icon>\r\n <ng-template #showNo>\r\n <mat-icon color=\"warn\">close</mat-icon>\r\n </ng-template>\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #toggleReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">\r\n <mat-icon color=\"warn\" *ngIf=\"extractFieldName(defaults, field.property); else showNo\">done</mat-icon>\r\n <ng-template #showNo>\r\n <mat-icon color=\"warn\">close</mat-icon>\r\n </ng-template>\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #listReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\" *ngIf=\"field.translate; else noTranslate\">\r\n {{ listShowValue(defaults, field) | translate }}\r\n </span>\r\n <ng-template #noTranslate>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </ng-template>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #sequenceReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #lookupReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">\r\n {{ extractFieldName(defaults, field.property)?.[translateService.getDefaultLang() === 'en' ? 'englishName' : 'arabicName'] }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #amountReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">\r\n {{ extractFieldName(defaults, field.property) | currency: currency }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #multiSelectReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <mat-chip-grid class=\"readonly-value chipList\">\r\n <mat-chip *ngFor=\"let filedProp of showMultiSelectValuesAsReadonly(field)\">\r\n {{ filedProp }}\r\n </mat-chip>\r\n </mat-chip-grid>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #chipListReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHTML]=\"field.label | translate\"></label>\r\n <mat-chip-listbox class=\"readonly-value chipList\">\r\n <mat-chip-option *ngFor=\"let loc of splitReadonly(extractFieldName(defaults, field.property))\"\r\n [selectable]=\"true\"\r\n color=\"warn\"\r\n [removable]=\"false\">\r\n {{ loc }}\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #readonlyView>\r\n <div class=\"row-wrapper\">\r\n <div class=\"column-wrapper\">\r\n <ng-container *ngFor=\"let row of screenFields | keyvalue\">\r\n <div class=\"row-container\">\r\n <ng-container *ngFor=\"let field of row.value\">\r\n <div class=\"field-column readonly-item\" [style.flex]=\"field.fieldSize ? ('0 0 ' + field.fieldSize + '%') : '1 1 0'\">\r\n\r\n <ng-container [ngSwitch]=\"field.type\">\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ng-container [ngTemplateOutlet]=\"dateReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <ng-container [ngTemplateOutlet]=\"timeReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'phone-number'\">\r\n <ng-container [ngTemplateOutlet]=\"phoneNumberReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <ng-container [ngTemplateOutlet]=\"textReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <ng-container [ngTemplateOutlet]=\"textareaReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <ng-container [ngTemplateOutlet]=\"numberReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <ng-container [ngTemplateOutlet]=\"currencyReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'radio-button'\">\r\n <ng-container [ngTemplateOutlet]=\"radioButtonReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <ng-container [ngTemplateOutlet]=\"checkboxReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'toggle'\">\r\n <ng-container [ngTemplateOutlet]=\"toggleReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'status'\">\r\n <ng-container [ngTemplateOutlet]=\"checkboxReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'lookup'\">\r\n <ng-container [ngTemplateOutlet]=\"lookupReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'amount'\">\r\n <ng-container [ngTemplateOutlet]=\"amountReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'multi-select'\">\r\n <ng-container [ngTemplateOutlet]=\"multiSelectReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'chip-list'\">\r\n <ng-container [ngTemplateOutlet]=\"chipListReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'sequence'\">\r\n <ng-container [ngTemplateOutlet]=\"sequenceReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <ng-container [ngTemplateOutlet]=\"listReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'multi-state-checkbox'\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" *ngIf=\"!field.hideLabel\" [innerHtml]=\"field.label | translate\"></label>\r\n <span class=\"readonly-value\">{{ getMultiStateReadonlySummary(field, defaults) }}</span>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'iban-text'\">\r\n <p class=\"label\">\r\n <span [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></span>\r\n <span> : </span>\r\n <span class=\"value\" [innerHtml]=\"extractFieldName(defaults, field.property)\"></span>\r\n </p>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'section-title'\">\r\n <div class=\"hrdivider-mid\">\r\n <span>{{ field.label | translate }}</span>\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n", styles: [".main-form-canvas{display:flex;flex-direction:row;gap:10px;align-items:flex-start;justify-content:flex-start;width:100%;flex-wrap:wrap}.form-wrapper{display:flex;flex-direction:column;flex:1}.form-container{display:flex;flex-direction:column;width:100%}.row-container{display:flex;flex-direction:row;gap:20px;flex-wrap:wrap;width:100%}.field-column{display:flex;flex-direction:column;flex:1}.label-and-asterisk-container{display:flex;align-items:center;gap:4px}.optional-text{color:#9b9b9b;font-size:11px;font-weight:400;line-height:1.4}.full-width{width:100%}.readonly-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;font-size:14px;padding:4px 0;width:100%}.readonly-item .readonly-label{font-weight:500;color:#9b9b9b;font-size:14px}.readonly-item .readonly-value{font-weight:500;color:#222;word-break:break-word;font-size:14px}.readonly-item .readonly-value--empty{font-style:italic;font-weight:500;color:#6b7280}.readonly-item .json-viewer{width:100%}.readonly-item .chipList{display:flex;flex-wrap:wrap;gap:4px}.readonly-item mat-icon{font-size:18px;vertical-align:middle}.row-wrapper{display:flex;flex-direction:row;gap:20px;width:100%;flex-wrap:wrap}.column-wrapper{display:flex;flex-direction:column;width:100%;align-items:flex-start}.row-container{display:flex;flex-direction:row;gap:20px;width:100%;flex-wrap:wrap}.field-column{display:flex;flex-direction:column;min-width:50px!important}.field-row{display:flex;flex-direction:row;gap:10px;width:100%;align-items:flex-start}.field-label{flex:0 0 40%;display:flex;flex-direction:column;justify-content:center}.field-input{flex:0 0 60%;display:flex;flex-direction:column}.radio-group-custom{display:flex;flex-direction:row;flex-wrap:wrap;gap:10px}.clear-icon-button{width:40px!important;height:40px!important;min-width:40px!important;padding:8px!important;margin:0!important;margin-inline-start:4px!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important}.clear-icon-button mat-icon{width:24px!important;height:24px!important;font-size:24px!important;line-height:24px!important;margin-top:0!important}.clear-icon-suffix{display:flex!important;align-items:center!important;align-content:center!important;height:100%!important}@media (max-width: 600px){.main-form-canvas{flex-direction:column}.row-container{flex-direction:column;gap:10px}.field-column{width:100%;flex:1 1 100%!important}.column-wrapper{align-items:center}.field-row{flex-direction:column}.field-label,.field-input{flex:1 1 100%}.radio-group-custom{flex-direction:column;gap:5px}}.custom-ngx-mat-intl-tel-input[readonly] input,.custom-ngx-mat-intl-tel-input.ngx-mat-intl-tel-input input[disabled]{pointer-events:none!important;background-color:#f5f5f5!important;color:#444!important}.custom-ngx-mat-intl-tel-input .iti__flag-container,.custom-ngx-mat-intl-tel-input .iti__selected-flag{pointer-events:none!important;opacity:.6}.custom-ngx-mat-intl-tel-input{pointer-events:none!important}::ng-deep .mat-datepicker-content-container mat-calendar.example-month-picker~.mat-datepicker-close-button{display:none!important}@media (max-width: 960px){.row-wrapper,.row-container{flex-direction:column}.row-container{gap:15px}.field-column{flex:1 1 100%!important}}.multi-state-filter{display:flex;flex-direction:column;align-items:flex-start}.multi-state-filter__trigger{display:flex;align-items:center;justify-content:space-between;gap:4px;min-height:45px;padding:0 16px;margin:0;border:1px solid #b7b7b7;border-radius:8px;background:#fff;cursor:pointer;font-family:inherit;font-size:16px;font-weight:300;line-height:1.2;color:#000;box-sizing:border-box;width:100%}.multi-state-filter__trigger:focus-visible{outline:2px solid #0d4261;outline-offset:2px}.multi-state-filter__trigger-text{flex:1 1 auto;text-align:left;color:#000;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.multi-state-filter__trigger-text--placeholder{color:#888}.multi-state-filter__chevron{flex-shrink:0;width:24px;height:24px;font-size:24px;color:#0d4261}::ng-deep .multi-state-filter__menu-panel{max-width:320px;min-width:250px}.multi-state-filter__menu-inner{padding:4px 0}.multi-state-filter__row{display:flex;align-items:center;gap:8px;min-height:28px;max-height:34px;padding:4px 8px;box-sizing:border-box}.multi-state-filter__pill{display:inline-flex;align-items:center;justify-content:center;min-height:24px;padding:0 16px;font-size:14px;font-weight:400;line-height:1.2;white-space:nowrap}\n"] }]
2808
- }], ctorParameters: () => [{ type: i2.TranslateService }, { type: i3$3.ActivatedRoute }, { type: BackendService }, { type: i3.FormBuilder }, { type: i5.LiveAnnouncer }], propDecorators: { pageInfo: [{
2809
+ }], ctorParameters: () => [{ type: i2.TranslateService }, { type: i3$3.ActivatedRoute }, { type: BackendService }, { type: i3.FormBuilder }, { type: i2$1.LiveAnnouncer }], propDecorators: { pageInfo: [{
2809
2810
  type: Input
2810
2811
  }], currency: [{
2811
2812
  type: Input
@@ -3152,7 +3153,7 @@ class FilterBuilderComponent {
3152
3153
  return options.length === 0 || !options.every((code) => selected.includes(code));
3153
3154
  }
3154
3155
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3155
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FilterBuilderComponent, isStandalone: true, selector: "app-filter-builder", inputs: { columns: "columns", isChecked: "isChecked", filterFields: "filterFields", pageInfo: "pageInfo", pendingFilters: "pendingFilters", showExportButton: "showExportButton" }, outputs: { filterInformation: "filterInformation", isEmpty: "isEmpty", applyFilter: "applyFilter", sortByClicked: "sortByClicked", exportClicked: "exportClicked" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<div class=\"main-filter-builder\">\r\n\r\n <!-- Desktop View -->\r\n <div class=\"filterForm desktop-view\">\r\n <div class=\"filterForm__row\">\r\n <div class=\"filterForm__col\">\r\n <app-field-filter\r\n [editable]=\"isEditable()\"\r\n [filter]=\"filter\"\r\n [pageInfo]=\"pageInfo\"\r\n *ngIf=\"isEditable()\"\r\n [filterFields]=\"filterFields\"\r\n [filterResetNonce]=\"filterResetNonce\"\r\n (filterFieldInformation)=\"formChanges($event)\"\r\n class=\"filterForm__filed-filter\"\r\n >\r\n </app-field-filter>\r\n </div>\r\n <div class=\"button-group\">\r\n <button\r\n mat-flat-button\r\n class=\"btn-apply-filter\"\r\n type=\"button\"\r\n (click)=\"onClearFilters()\">\r\n <div class=\"button-text\">\r\n <mat-icon>clear_all</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.clearFilters' | translate }}</span>\r\n </div>\r\n </button>\r\n <button\r\n mat-flat-button\r\n class=\"btn-apply-filter\"\r\n type=\"button\"\r\n (click)=\"onApplyFilter()\">\r\n <div class=\"button-text\">\r\n <mat-icon>filter_list</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Mobile View -->\r\n <div class=\"mobile-view\">\r\n <!-- Mobile Row 1: Search Field and Export Button -->\r\n <div class=\"mobile-search-row\">\r\n <div class=\"mobile-search-field\">\r\n <app-field-filter\r\n [editable]=\"isEditable()\"\r\n [filter]=\"filter\"\r\n [pageInfo]=\"pageInfo\"\r\n *ngIf=\"isEditable()\"\r\n [filterFields]=\"filterFields\"\r\n [filterResetNonce]=\"filterResetNonce\"\r\n (filterFieldInformation)=\"formChanges($event)\"\r\n class=\"mobile-field-filter\"\r\n >\r\n </app-field-filter>\r\n </div>\r\n <button\r\n *ngIf=\"showExportButton\"\r\n mat-flat-button\r\n class=\"btn-export-mobile\"\r\n [matMenuTriggerFor]=\"exportMenu\">\r\n <div class=\"button-content\">\r\n <mat-icon>file_export</mat-icon>\r\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n <mat-menu #exportMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"onExportClick('pdf')\">PDF</button>\r\n <button mat-menu-item (click)=\"onExportClick('xlsx')\">Excel</button>\r\n <button mat-menu-item (click)=\"onExportClick('csv')\">CSV</button>\r\n </mat-menu>\r\n </div>\r\n\r\n <!-- Mobile Row 2: Filter By and Sort By Buttons -->\r\n <div class=\"mobile-filter-row\">\r\n <button\r\n mat-flat-button\r\n class=\"btn-filter-by btn-filter-by--icon-only\"\r\n type=\"button\"\r\n (click)=\"onClearFilters()\"\r\n [attr.aria-label]=\"'FILTER-BUILDER.clearFilters' | translate\">\r\n <div class=\"button-content\">\r\n <mat-icon>delete_sweep</mat-icon>\r\n </div>\r\n </button>\r\n <button\r\n mat-flat-button\r\n class=\"btn-filter-by\"\r\n type=\"button\"\r\n (click)=\"onApplyFilter()\">\r\n <div class=\"button-content\">\r\n <mat-icon>filter_list</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\r\n </div>\r\n </button>\r\n <button\r\n mat-flat-button\r\n class=\"btn-sort-by\"\r\n type=\"button\"\r\n [matMenuTriggerFor]=\"sortMenu\">\r\n <div class=\"button-content\">\r\n <mat-icon>unfold_more</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.sortBy' | translate }}</span>\r\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n <mat-menu #sortMenu=\"matMenu\">\r\n <button\r\n *ngFor=\"let column of getSortableColumns()\"\r\n mat-menu-item\r\n (click)=\"onSortByClick(column.property)\">\r\n {{ labelKey(column) | translate }}\r\n </button>\r\n <button\r\n *ngIf=\"getSortableColumns().length === 0\"\r\n mat-menu-item\r\n disabled>\r\n {{ 'FILTER-BUILDER.noSortableColumns' | translate }}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n\r\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"line-bottom\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"action\">-->\r\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\r\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\r\n<!-- </button>-->\r\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\r\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\r\n<!-- </button>-->\r\n<!-- </div>-->\r\n</div>\r\n", styles: [".main-filter-builder{width:100%;max-width:100%;box-sizing:border-box;flex:1 1 auto;min-width:0;display:flex;align-items:center;overflow:visible;min-height:48px;margin-bottom:7px}.main-filter-builder .filterForm{display:flex;width:100%;max-width:100%;box-sizing:border-box;align-items:center}.main-filter-builder .filterForm__row{display:flex;align-items:center;gap:16px;margin:0;flex-wrap:nowrap;width:100%;max-width:100%;box-sizing:border-box;min-width:0}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;max-width:none;width:auto}.main-filter-builder .filterForm__filed-filter{margin:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:16px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content{width:100%!important;display:flex!important;flex-direction:row!important;align-items:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row{display:flex!important;gap:16px;align-items:center;flex-wrap:nowrap;width:100%!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column{flex:0 0 auto;width:100%}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex;gap:16px;align-items:center;flex-wrap:nowrap;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:0 0 auto;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:auto!important;margin:0!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:44px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:44px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:10px!important;height:28px!important;color:#0d4261!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix{padding-left:4px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important;margin-top:6px}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-select{font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#888!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button{width:24px!important;height:24px!important;padding:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{height:0!important;min-height:0!important;margin:0!important;padding:0!important}.main-filter-builder .filterForm .action-filter{flex:0 0 auto}.main-filter-builder .filterForm .action-filter .edit-design{margin:auto}.main-filter-builder .filterForm .action-filter .edit-design__add-button{background:#fff!important;color:var(--primary-color)!important;height:48px;width:48px;border-radius:5px;border:#D9D9D9 solid 1px;margin:30px 0 0}.main-filter-builder .filterForm .action-filter .edit-design__add-button__add-button-text{margin:0 5px}.main-filter-builder .line-top mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .advanced-button{display:flex;flex-wrap:wrap;gap:8px}.main-filter-builder .advanced-button .view{background:#e3fbff!important;border:1px solid #00ABC8!important;border-radius:6px!important;margin:10px 0;padding:6px 8px;height:32px;margin-top:0!important;display:flex;align-items:center;gap:6px}.main-filter-builder .advanced-button .view__filed{margin-top:-3px;display:inline-block;color:#1c355e;font-weight:400;font-size:14px;line-height:16px;font-style:normal;text-align:center!important}.main-filter-builder .advanced-button .view__close{margin-left:6px}.main-filter-builder .advanced-button .view__close__icon{color:#1c355e;font-size:14px;cursor:pointer;display:inline-block}.main-filter-builder .line-bottom mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .action{justify-content:end;padding:5px 10px 10px}.main-filter-builder .action__clear{border:none!important;margin:0 5px}@media (max-width: 599.98px){.main-filter-builder .filterForm__row{flex-wrap:wrap}.main-filter-builder .filterForm .action-filter .edit-design__add-button{width:100%;height:45px;margin:5px 5px 10px}}@media (min-width: 600px){.main-filter-builder .add-text-responsive{display:none}}.main-filter-builder .button-group{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end;gap:8px!important;flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;height:46px!important;white-space:nowrap!important;min-width:0!important;max-width:none!important}.main-filter-builder .btn-apply-filter{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:46px!important;min-width:120px!important;padding:0 16px!important;box-shadow:none!important}.main-filter-builder .btn-apply-filter .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-apply-filter mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.main-filter-builder .btn-apply-filter span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-apply-filter:hover{background:#fafafa!important}.main-filter-builder .mobile-view{display:none;flex-direction:column;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-filter-row{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .btn-filter-by,.main-filter-builder .btn-sort-by{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:40px!important;flex:1 1 0!important;min-width:0!important;padding:0 16px!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important}.main-filter-builder .btn-filter-by .button-content,.main-filter-builder .btn-sort-by .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-filter-by mat-icon,.main-filter-builder .btn-sort-by mat-icon{font-size:24px;width:24px;height:28px;color:#0d4261}.main-filter-builder .btn-filter-by span,.main-filter-builder .btn-sort-by span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-filter-by:hover,.main-filter-builder .btn-sort-by:hover{background:#fafafa!important}.main-filter-builder .btn-sort-by{border:1px solid #0d4261!important}.main-filter-builder .btn-sort-by .sort-icons{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;height:24px;width:24px;flex-shrink:0}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up,.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{font-size:16px;width:16px;height:8px;line-height:8px;margin:0;color:#0d4261}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up{margin-bottom:-2px}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{margin-top:-2px}.main-filter-builder .btn-sort-by .arrow-icon{font-size:16px;width:16px;height:16px;margin-left:auto}.main-filter-builder .btn-filter-by.btn-filter-by--icon-only{flex:0 0 44px!important;min-width:44px!important;max-width:48px!important;padding:0 6px!important}.main-filter-builder .mobile-search-row{display:flex;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-search-field{flex:1;min-width:0;width:100%;max-width:none}.main-filter-builder .btn-export-mobile{background:transparent!important;border:none!important;border-radius:8px!important;height:40px!important;width:60px!important;padding:0!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;flex-shrink:0!important}.main-filter-builder .btn-export-mobile .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-export-mobile mat-icon{font-size:24px;width:24px;height:24px;color:#0d4261}.main-filter-builder .btn-export-mobile .arrow-icon{font-size:16px;width:16px;height:16px}.main-filter-builder .btn-export-mobile:hover{background:#fafafa!important}.main-filter-builder .mobile-field-filter{margin:0!important;width:100%!important}.main-filter-builder .mobile-field-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-content{width:100%!important;align-items:center!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field{width:100%!important;margin:0!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:40px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:40px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}@media (max-width: 768px){.main-filter-builder .desktop-view{display:none!important}.main-filter-builder .mobile-view{display:flex!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(mat-select),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column mat-form-field:has(mat-select){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(mat-select){display:none!important}}@media (min-width: 769px){.main-filter-builder .desktop-view{display:flex!important}.main-filter-builder .mobile-view{display:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FieldFilterComponent, selector: "app-field-filter", inputs: ["filter", "pageInfo", "filterFields", "item", "editable", "filterResetNonce"], outputs: ["selectedValue", "filterFieldInformation"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
3156
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FilterBuilderComponent, isStandalone: true, selector: "app-filter-builder", inputs: { columns: "columns", isChecked: "isChecked", filterFields: "filterFields", pageInfo: "pageInfo", pendingFilters: "pendingFilters", showExportButton: "showExportButton" }, outputs: { filterInformation: "filterInformation", isEmpty: "isEmpty", applyFilter: "applyFilter", sortByClicked: "sortByClicked", exportClicked: "exportClicked" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<div class=\"main-filter-builder\">\r\n\r\n <!-- Desktop View -->\r\n <div class=\"filterForm desktop-view\">\r\n <div class=\"filterForm__row\">\r\n <div class=\"filterForm__col\">\r\n <app-field-filter\r\n [editable]=\"isEditable()\"\r\n [filter]=\"filter\"\r\n [pageInfo]=\"pageInfo\"\r\n *ngIf=\"isEditable()\"\r\n [filterFields]=\"filterFields\"\r\n [filterResetNonce]=\"filterResetNonce\"\r\n (filterFieldInformation)=\"formChanges($event)\"\r\n class=\"filterForm__filed-filter\"\r\n >\r\n </app-field-filter>\r\n </div>\r\n <div class=\"button-group\">\r\n <button\r\n mat-flat-button\r\n class=\"btn-apply-filter\"\r\n type=\"button\"\r\n (click)=\"onClearFilters()\">\r\n <div class=\"button-text\">\r\n <mat-icon>clear_all</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.clearFilters' | translate }}</span>\r\n </div>\r\n </button>\r\n <button\r\n mat-flat-button\r\n class=\"btn-apply-filter\"\r\n type=\"button\"\r\n (click)=\"onApplyFilter()\">\r\n <div class=\"button-text\">\r\n <mat-icon>filter_list</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Mobile View -->\r\n <div class=\"mobile-view\">\r\n <!-- Mobile Row 1: Search Field and Export Button -->\r\n <div class=\"mobile-search-row\">\r\n <div class=\"mobile-search-field\">\r\n <app-field-filter\r\n [editable]=\"isEditable()\"\r\n [filter]=\"filter\"\r\n [pageInfo]=\"pageInfo\"\r\n *ngIf=\"isEditable()\"\r\n [filterFields]=\"filterFields\"\r\n [filterResetNonce]=\"filterResetNonce\"\r\n (filterFieldInformation)=\"formChanges($event)\"\r\n class=\"mobile-field-filter\"\r\n >\r\n </app-field-filter>\r\n </div>\r\n <button\r\n *ngIf=\"showExportButton\"\r\n mat-flat-button\r\n class=\"btn-export-mobile\"\r\n [matMenuTriggerFor]=\"exportMenu\">\r\n <div class=\"button-content\">\r\n <mat-icon>file_export</mat-icon>\r\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n <mat-menu #exportMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"onExportClick('pdf')\">PDF</button>\r\n <button mat-menu-item (click)=\"onExportClick('xlsx')\">Excel</button>\r\n <button mat-menu-item (click)=\"onExportClick('csv')\">CSV</button>\r\n </mat-menu>\r\n </div>\r\n\r\n <!-- Mobile Row 2: Filter By and Sort By Buttons -->\r\n <div class=\"mobile-filter-row\">\r\n <button\r\n mat-flat-button\r\n class=\"btn-filter-by btn-filter-by--icon-only\"\r\n type=\"button\"\r\n (click)=\"onClearFilters()\"\r\n [attr.aria-label]=\"'FILTER-BUILDER.clearFilters' | translate\">\r\n <div class=\"button-content\">\r\n <mat-icon>delete_sweep</mat-icon>\r\n </div>\r\n </button>\r\n <button\r\n mat-flat-button\r\n class=\"btn-filter-by\"\r\n type=\"button\"\r\n (click)=\"onApplyFilter()\">\r\n <div class=\"button-content\">\r\n <mat-icon>filter_list</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\r\n </div>\r\n </button>\r\n <button\r\n mat-flat-button\r\n class=\"btn-sort-by\"\r\n type=\"button\"\r\n [matMenuTriggerFor]=\"sortMenu\">\r\n <div class=\"button-content\">\r\n <mat-icon>unfold_more</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.sortBy' | translate }}</span>\r\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n <mat-menu #sortMenu=\"matMenu\">\r\n <button\r\n *ngFor=\"let column of getSortableColumns()\"\r\n mat-menu-item\r\n (click)=\"onSortByClick(column.property)\">\r\n {{ labelKey(column) | translate }}\r\n </button>\r\n <button\r\n *ngIf=\"getSortableColumns().length === 0\"\r\n mat-menu-item\r\n disabled>\r\n {{ 'FILTER-BUILDER.noSortableColumns' | translate }}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n\r\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"line-bottom\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"action\">-->\r\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\r\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\r\n<!-- </button>-->\r\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\r\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\r\n<!-- </button>-->\r\n<!-- </div>-->\r\n</div>\r\n", styles: [".main-filter-builder{width:100%;max-width:100%;box-sizing:border-box;flex:1 1 auto;min-width:0;display:flex;align-items:center;overflow:visible;min-height:48px;margin-bottom:7px}.main-filter-builder .filterForm{display:flex;width:100%;max-width:100%;box-sizing:border-box;align-items:center}.main-filter-builder .filterForm__row{display:flex;align-items:center;gap:16px;margin:0;flex-wrap:nowrap;width:100%;max-width:100%;box-sizing:border-box;min-width:0}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;max-width:none;width:auto}.main-filter-builder .filterForm__filed-filter{margin:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:16px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content{width:100%!important;display:flex!important;flex-direction:row!important;align-items:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row{display:flex!important;gap:16px;align-items:center;flex-wrap:nowrap;width:100%!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column{flex:0 0 auto;width:100%}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex;gap:16px;align-items:center;flex-wrap:nowrap;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:0 0 auto;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:auto!important;margin:0!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:44px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:44px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:10px!important;height:28px!important;color:#0d4261!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix{padding-left:4px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important;margin-top:6px}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-select{font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#888!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button{width:24px!important;height:24px!important;padding:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{height:0!important;min-height:0!important;margin:0!important;padding:0!important}.main-filter-builder .filterForm .action-filter{flex:0 0 auto}.main-filter-builder .filterForm .action-filter .edit-design{margin:auto}.main-filter-builder .filterForm .action-filter .edit-design__add-button{background:#fff!important;color:var(--primary-color)!important;height:48px;width:48px;border-radius:5px;border:#D9D9D9 solid 1px;margin:30px 0 0}.main-filter-builder .filterForm .action-filter .edit-design__add-button__add-button-text{margin:0 5px}.main-filter-builder .line-top mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .advanced-button{display:flex;flex-wrap:wrap;gap:8px}.main-filter-builder .advanced-button .view{background:#e3fbff!important;border:1px solid #00ABC8!important;border-radius:6px!important;margin:10px 0;padding:6px 8px;height:32px;margin-top:0!important;display:flex;align-items:center;gap:6px}.main-filter-builder .advanced-button .view__filed{margin-top:-3px;display:inline-block;color:#1c355e;font-weight:400;font-size:14px;line-height:16px;font-style:normal;text-align:center!important}.main-filter-builder .advanced-button .view__close{margin-left:6px}.main-filter-builder .advanced-button .view__close__icon{color:#1c355e;font-size:14px;cursor:pointer;display:inline-block}.main-filter-builder .line-bottom mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .action{justify-content:end;padding:5px 10px 10px}.main-filter-builder .action__clear{border:none!important;margin:0 5px}@media (max-width: 599.98px){.main-filter-builder .filterForm__row{flex-wrap:wrap}.main-filter-builder .filterForm .action-filter .edit-design__add-button{width:100%;height:45px;margin:5px 5px 10px}}@media (min-width: 600px){.main-filter-builder .add-text-responsive{display:none}}.main-filter-builder .button-group{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end;gap:8px!important;flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;height:46px!important;white-space:nowrap!important;min-width:0!important;max-width:none!important}.main-filter-builder .btn-apply-filter{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:46px!important;min-width:120px!important;padding:0 16px!important;box-shadow:none!important}.main-filter-builder .btn-apply-filter .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-apply-filter mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.main-filter-builder .btn-apply-filter span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-apply-filter:hover{background:#fafafa!important}.main-filter-builder .mobile-view{display:none;flex-direction:column;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-filter-row{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .btn-filter-by,.main-filter-builder .btn-sort-by{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:40px!important;flex:1 1 0!important;min-width:0!important;padding:0 16px!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important}.main-filter-builder .btn-filter-by .button-content,.main-filter-builder .btn-sort-by .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-filter-by mat-icon,.main-filter-builder .btn-sort-by mat-icon{font-size:24px;width:24px;height:28px;color:#0d4261}.main-filter-builder .btn-filter-by span,.main-filter-builder .btn-sort-by span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-filter-by:hover,.main-filter-builder .btn-sort-by:hover{background:#fafafa!important}.main-filter-builder .btn-sort-by{border:1px solid #0d4261!important}.main-filter-builder .btn-sort-by .sort-icons{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;height:24px;width:24px;flex-shrink:0}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up,.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{font-size:16px;width:16px;height:8px;line-height:8px;margin:0;color:#0d4261}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up{margin-bottom:-2px}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{margin-top:-2px}.main-filter-builder .btn-sort-by .arrow-icon{font-size:16px;width:16px;height:16px;margin-left:auto}.main-filter-builder .btn-filter-by.btn-filter-by--icon-only{flex:0 0 44px!important;min-width:44px!important;max-width:48px!important;padding:0 6px!important}.main-filter-builder .mobile-search-row{display:flex;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-search-field{flex:1;min-width:0;width:100%;max-width:none}.main-filter-builder .btn-export-mobile{background:transparent!important;border:none!important;border-radius:8px!important;height:40px!important;width:60px!important;padding:0!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;flex-shrink:0!important}.main-filter-builder .btn-export-mobile .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-export-mobile mat-icon{font-size:24px;width:24px;height:24px;color:#0d4261}.main-filter-builder .btn-export-mobile .arrow-icon{font-size:16px;width:16px;height:16px}.main-filter-builder .btn-export-mobile:hover{background:#fafafa!important}.main-filter-builder .mobile-field-filter{margin:0!important;width:100%!important}.main-filter-builder .mobile-field-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-content{width:100%!important;align-items:center!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field{width:100%!important;margin:0!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:40px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:40px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}@media (max-width: 768px){.main-filter-builder .desktop-view{display:none!important}.main-filter-builder .mobile-view{display:flex!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(mat-select),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column mat-form-field:has(mat-select){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(mat-select){display:none!important}}@media (min-width: 769px){.main-filter-builder .desktop-view{display:flex!important}.main-filter-builder .mobile-view{display:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FieldFilterComponent, selector: "app-field-filter", inputs: ["filter", "pageInfo", "filterFields", "item", "editable", "filterResetNonce"], outputs: ["selectedValue", "filterFieldInformation"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
3156
3157
  }
3157
3158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterBuilderComponent, decorators: [{
3158
3159
  type: Component,
@@ -3195,11 +3196,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3195
3196
  }] } });
3196
3197
 
3197
3198
  class BaseTableComponent extends BaseUtils {
3198
- constructor(backendService, translateService, shareDataService, securityManager, router, liveAnnouncer) {
3199
+ constructor(backendService, translateService, shareDataService, breakpointObserver, securityManager, router, liveAnnouncer) {
3199
3200
  super();
3200
3201
  this.backendService = backendService;
3201
3202
  this.translateService = translateService;
3202
3203
  this.shareDataService = shareDataService;
3204
+ this.breakpointObserver = breakpointObserver;
3203
3205
  this.securityManager = securityManager;
3204
3206
  this.router = router;
3205
3207
  this.liveAnnouncer = liveAnnouncer;
@@ -3269,7 +3271,6 @@ class BaseTableComponent extends BaseUtils {
3269
3271
  this.dataSource = new MatTableDataSource();
3270
3272
  this.columns = [];
3271
3273
  this.filterRequest = new FilterRequest();
3272
- this.initializeMobilePageSize();
3273
3274
  effect(() => {
3274
3275
  if (this.pageInfo.lazyLoadData !== true || this.enforceRefresh === true) {
3275
3276
  this.loadData();
@@ -3287,19 +3288,19 @@ class BaseTableComponent extends BaseUtils {
3287
3288
  this.pagesCount = this.totalPagesCount;
3288
3289
  this.pageIndex = this.currentPageIndex;
3289
3290
  }
3290
- this.initializeMobilePageSize();
3291
3291
  this.mobileDisplayedItems = this.pageSize;
3292
- }
3293
- isMobile() {
3294
- return typeof window !== 'undefined' && window.innerWidth <= 768;
3295
- }
3296
- initializeMobilePageSize() {
3297
- if (this.isMobile() && this.pageSize > this.mobilePageSize) {
3298
- this.pageSize = this.mobilePageSize;
3299
- if (this.reportRequest?.filterRequest) {
3300
- this.reportRequest.filterRequest.pageSize = this.mobilePageSize;
3292
+ this.breakpointObserver
3293
+ .observe(['(max-width: 768px)'])
3294
+ .subscribe(result => {
3295
+ if (result.matches) {
3296
+ this.pageSize = 2;
3297
+ this.loadData();
3301
3298
  }
3302
- }
3299
+ else {
3300
+ this.pageSize = 10;
3301
+ this.loadData();
3302
+ }
3303
+ });
3303
3304
  }
3304
3305
  onPageChange(event) {
3305
3306
  this.pageIndex = event;
@@ -3401,7 +3402,7 @@ class BaseTableComponent extends BaseUtils {
3401
3402
  loadData(skipMobileReset = false) {
3402
3403
  clearTimeout(this.timer);
3403
3404
  if (!skipMobileReset) {
3404
- this.initializeMobilePageSize();
3405
+ // this.initializeMobilePageSize();
3405
3406
  }
3406
3407
  if (!this.reportRequest.filterRequest) {
3407
3408
  this.reportRequest.filterRequest = new FilterRequest(this.pageSize || this.pageInfo.pageSize);
@@ -3757,8 +3758,8 @@ class BaseTableComponent extends BaseUtils {
3757
3758
  return '';
3758
3759
  return super.labelKeyByValue(column, row);
3759
3760
  }
3760
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseTableComponent, deps: [{ token: BackendService }, { token: i2.TranslateService }, { token: ShareDataService }, { token: 'securityManager' }, { token: i3$3.Router }, { token: i5.LiveAnnouncer }], target: i0.ɵɵFactoryTarget.Component }); }
3761
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BaseTableComponent, isStandalone: true, selector: "app-base-table", inputs: { filterFields: "filterFields", noDataFoundSvgPath: "noDataFoundSvgPath", noDataFoundTitle: "noDataFoundTitle", noDataFoundSubtitle: "noDataFoundSubtitle", noResultSvgPath: "noResultSvgPath", noResultTitle: "noResultTitle", noResultSubtitle: "noResultSubtitle", pageInfo: "pageInfo", enablePagination: "enablePagination", mobilePageSize: "mobilePageSize", mobileLoadMoreIncrement: "mobileLoadMoreIncrement", data: "data", listAction: "listAction", extraActions: "extraActions", buttonsDisplayMode: "buttonsDisplayMode", columns: "columns", filters: "filters", pathParam: "pathParam", extraButton: "extraButton", enforceRefresh: "enforceRefresh", isPending: "isPending", trigger: "trigger", reportRequest: "reportRequest", separateEndpointData: "separateEndpointData", manageablePages: "manageablePages", totalPagesCount: "totalPagesCount", currentPageIndex: "currentPageIndex", customizedData: "customizedData" }, outputs: { buttonClicked: "buttonClicked", pageChange: "pageChange", userAction: "userAction", hyperLinkAction: "hyperLinkAction", extraAction: "extraAction", selectedColumn: "selectedColumn", listActionClicked: "listActionClicked", showDialog: "showDialog", clickRoutePage: "clickRoutePage" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex-column baseTable\">\r\n <div class=\"flex-row flex-100\" >\r\n <div class=\"flex-column align-start flex-100\" style=\"width: 100%;\">\r\n <app-title-bar\r\n [pageTitle]=\"pageInfo.hideTitle ? '' : pageInfo.labelsSection+'.list_title'\"\r\n [subTitle]=\"(pageInfo.hideTitle || pageInfo.hideSubtitle) ? '' : pageInfo.labelsSection+'.subtitle'\"\r\n [titleMode]=\"''\"\r\n [pageInfo]=\"pageInfo\"\r\n [newAction]=\"showAddNew()\"\r\n [showExtractButton]=\"!pageInfo.hideExtractButton\"\r\n [draftSupported]=\"pageInfo.draftSupported\"\r\n [isPending]=\"isPending\"\r\n [onViewModeChange]=\"switchViewMode.bind(this)\"\r\n [buttons]=\"extraActions\"\r\n [buttonsDisplayMode]=\"buttonsDisplayMode\"\r\n (newActionClicked)=\"onAddNewAction($event)\"\r\n (extractReport)=\"extractReport($event)\"\r\n (viewModeChanged)=\"onViewModeChangedReceived($event)\"\r\n (buttonClicked)=\"buttonClicked.emit($event)\"\r\n [totalElements]=\"pageInfo.hideTitle ? undefined : totalElements\">\r\n </app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <div class=\"filter-row\" *ngIf=\"!pageInfo.hideAdvancedFilter\">\r\n <app-filter-builder\r\n *ngIf=\"!pageInfo.hideAdvancedFilter\"\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columns\"\r\n [filterFields]=\"filterFields\"\r\n [pendingFilters]=\"pendingFilters\"\r\n [showExportButton]=\"!pageInfo.hideExtractButton\"\r\n (filterInformation)=\"storePendingFilters($event)\"\r\n (isEmpty)=\"handleFilterEmpty($event)\"\r\n (applyFilter)=\"applyPendingFilters()\"\r\n (sortByClicked)=\"handleSortClick($event)\"\r\n (exportClicked)=\"extractReport($event)\">\r\n </app-filter-builder>\r\n\r\n <div class=\"button-group\" *ngIf=\"!pageInfo.hideExtractButton\">\r\n <button *ngIf=\"!pageInfo.hideExtractButton\"\r\n mat-flat-button\r\n type=\"button\"\r\n [matMenuTriggerFor]=\"exportMenu\"\r\n class=\"btn-export\"\r\n [attr.aria-label]=\"'export' | translate\"\r\n [attr.aria-haspopup]=\"true\"\r\n >\r\n <div class=\"button-text\">\r\n <mat-icon>file_export</mat-icon>\r\n <span>{{ 'export' | translate }}</span>\r\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n\r\n <mat-menu #exportMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"extractReport('pdf')\">PDF</button>\r\n <button mat-menu-item (click)=\"extractReport('xlsx')\">Excel</button>\r\n <button mat-menu-item (click)=\"extractReport('csv')\">CSV</button>\r\n </mat-menu>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"flex-row flex-100 baseTable__detailsColumn\">\r\n <div class=\"flex-100\">\r\n <div class=\"flex-row flex-100 mainTable\">\r\n <div\r\n class=\"table-container\"\r\n role=\"table\"\r\n [attr.aria-label]=\"\r\n pageInfo.labelsSection && !pageInfo.hideTitle\r\n ? (pageInfo.labelsSection + '.list_title' | translate)\r\n : null\r\n \">\r\n <div class=\"table-header\" [attr.data-sort]=\"sortState\" role=\"row\">\r\n <div *ngFor=\"let columnProp of visibleColumnsArray; let i = index\"\r\n class=\"table-header-cell\"\r\n role=\"columnheader\"\r\n [attr.aria-sort]=\"getColumnAriaSort(columnProp)\"\r\n [attr.tabindex]=\"getColumn(columnProp)?.enableSorting ? 0 : null\"\r\n [class.sortable]=\"getColumn(columnProp)?.enableSorting\"\r\n [class.first-cell]=\"i === 0\"\r\n [class.last-cell]=\"i === visibleColumnsArray.length - 1\"\r\n [class.actions-cell]=\"i === visibleColumnsArray.length - 1 && columnProp === 'actions'\"\r\n [class.has-width]=\"getColumn(columnProp)?.width\"\r\n [ngStyle]=\"getColumn(columnProp)?.width ? {'width': getColumn(columnProp)?.width + '%', 'flex-basis': getColumn(columnProp)?.width + '%'} : {}\"\r\n (click)=\"getColumn(columnProp)?.enableSorting && handleSortClick(columnProp)\"\r\n (keydown)=\"onSortHeaderKeydown($event, columnProp)\">\r\n <div class=\"table-header-content\">\r\n <span class=\"table-header-label\">{{ labelKey(getColumn(columnProp)) | translate }}</span>\r\n <ng-container *ngIf=\"getColumn(columnProp)?.enableSorting\">\r\n <mat-icon *ngIf=\"getSortDirection(columnProp) === 'asc'\"\r\n class=\"sort-icon sort-asc\">arrow_drop_up</mat-icon>\r\n <mat-icon *ngIf=\"getSortDirection(columnProp) === 'desc'\"\r\n class=\"sort-icon sort-desc\">arrow_drop_down</mat-icon>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"table-body\" role=\"rowgroup\">\r\n <div *ngFor=\"let row of dataSource.data; let rowIndex = index\"\r\n class=\"table-row\"\r\n role=\"row\"\r\n [attr.tabindex]=\"-1\"\r\n [attr.id]=\"'table-row-' + (row?.id || row?.key || '')\"\r\n [ngClass]=\"{\r\n 'table-row--highlight': selectedRowIndex == row.id || (pageInfo.groupByProperty && pageInfo.groupByValue?.includes(row[pageInfo.groupByProperty])),\r\n 'table-row--dark-highlight': isDarkHighlight(row)\r\n }\"\r\n (auxclick)=\"openNewTab(row)\"\r\n (click)=\"$event.stopPropagation(); onSelectItem(row)\">\r\n <div *ngFor=\"let columnProp of visibleColumnsArray; let i = index\"\r\n class=\"table-cell\"\r\n role=\"cell\"\r\n [class.first-cell]=\"i === 0\"\r\n [class.last-cell]=\"i === visibleColumnsArray.length - 1\"\r\n [class.actions-cell]=\"i === visibleColumnsArray.length - 1 && columnProp === 'actions'\"\r\n [class.has-width]=\"getColumn(columnProp)?.width\"\r\n [ngStyle]=\"getColumn(columnProp)?.width ? {'width': getColumn(columnProp)?.width + '%', 'flex-basis': getColumn(columnProp)?.width + '%'} : {}\">\r\n <ng-container [ngSwitch]=\"getColumn(columnProp)?.type\">\r\n <ng-container *ngSwitchCase=\"'workflowStatus'\">\r\n <button mat-button type=\"button\" class=\"wfStatus {{ getStatusDescription(row)}}\" [attr.id]=\"'table-btn-wf-'+columnProp+'-'+(row.id || row.key || '')\" [attr.tabindex]=\"-1\">{{ getStatusDescription(row) }}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'hyper-text'\">\r\n <span\r\n *ngIf=\"shouldRenderAsHyperLink(row); else plainHyperText\"\r\n class=\"mat-mdc-form-field-label hyper-link\"\r\n [attr.tabindex]=\"-1\"\r\n (click)=\"hyperLinkClicked(columnProp, row)\">\r\n {{ extractFieldName(row, columnProp) }}\r\n </span>\r\n <ng-template #plainHyperText>\r\n <span class=\"mat-mdc-form-field-label\">{{ extractFieldName(row, columnProp) }}</span>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <button *ngIf=\"shouldShowButton(row)\" mat-button type=\"button\" class=\"primary\" (click)=\"$event.stopPropagation(); actionButtonClicked(columnProp, row)\" [attr.id]=\"'table-btn-action-'+columnProp\">\r\n {{ labelKey(getColumn(columnProp)) + '_title' | translate }}\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <mat-icon [ngClass]=\"{\r\n 'mainTable__td__icon-green': row[columnProp] === 'pass',\r\n 'mainTable__td__icon-orange': row[columnProp] === 'warning',\r\n 'mainTable__td__icon-red': row[columnProp] === 'error'\r\n }\"\r\n [attr.aria-label]=\"getIconAriaLabelKey(row[columnProp]) | translate\">\r\n {{ getIcon(row[columnProp]) }}\r\n </mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <mat-checkbox class=\"primary\" [tabIndex]=\"-1\" [checked]=\"row[columnProp]\" (click)=\"$event.stopPropagation();actionCheckedClicked(columnProp,row)\"></mat-checkbox>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'stateType'\">\r\n <button mat-button type=\"button\" class=\"stateType {{ row[columnProp]}}\" [attr.id]=\"'table-btn-state-'+columnProp\" [attr.tabindex]=\"-1\">{{ labelKeyByValue(getColumn(columnProp), row) | translate}}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n {{ extractFieldName(row, columnProp) | date:'dd/MM/yyyy' }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'croppedText'\">\r\n {{ getCroppedText(row[columnProp], row[getColumn(columnProp)?.width]) }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'download'\">\r\n <mat-icon class=\"mainTable__td__icon-blue\"\r\n [attr.aria-label]=\"'BASE_TABLE.downloadAction' | translate\">system_update_alt</mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'onOff'\">\r\n <mat-icon *ngIf=\"row[columnProp] === null\" class=\"mainTable__td__icon-darkorange\"\r\n [attr.aria-label]=\"getOnOffFlagAriaLabelKey(null) | translate\">flag</mat-icon>\r\n <mat-icon *ngIf=\"row[columnProp] === false\" class=\"mainTable__td__icon-red\"\r\n [attr.aria-label]=\"getOnOffFlagAriaLabelKey(false) | translate\">flag</mat-icon>\r\n <mat-icon *ngIf=\"row[columnProp] === true\" class=\"mainTable__td__icon-green\"\r\n [attr.aria-label]=\"getOnOffFlagAriaLabelKey(true) | translate\">flag</mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'status'\">\r\n <span *ngIf=\"row[columnProp] === null || row[columnProp] === false\">\r\n {{ pageInfo.labelsSection + '.' + getColumn(columnProp)?.label + 'InActive' | translate }}\r\n </span>\r\n <span *ngIf=\"row[columnProp] === true\">\r\n {{ pageInfo.labelsSection + '.' + getColumn(columnProp)?.label + 'Active' | translate }}\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'info'\">\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n [attr.tabindex]=\"-1\"\r\n [attr.aria-label]=\"'BASE_TABLE.rowDetails' | translate\"\r\n (click)=\"$event.stopPropagation();emitEvent(row)\"\r\n [attr.id]=\"'table-btn-info-'+row.id\">\r\n <mat-icon aria-hidden=\"true\">info</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'netAmount'\">\r\n <div class=\"mainTable__td__currency\" style=\"display:inline-block;\">{{ row[getColumn(columnProp)?.currency] }}</div>\r\n <span class=\"mainTable__td__property\" style=\"display:inline-block; margin-left:6px; margin-right:6px;\">\r\n {{ extractFieldName(row, columnProp) | currency:'':'' }}</span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'localDateTime'\">\r\n {{ extractFieldName(row, columnProp) | date : extractFormat(getColumn(columnProp)) }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'bigdecimal'\">\r\n <small><sup class=\"mainTable__td__currency\">{{row[getColumn(columnProp)?.currency]}}</sup></small>\r\n {{ extractFieldName(row, columnProp) | number : (getColumn(columnProp)?.digitInfo || '1.3-5') }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'listAction'\">\r\n <app-button-actions\r\n [row]=\"row\"\r\n [buttonsAction]=\"getColumn(columnProp)?.viewType === 'buttonsAction'\"\r\n [listAction]=\"listAction\"\r\n [actions]=\"listAction\"\r\n (clickedButton)=\"actionListClicked($event,row)\">\r\n </app-button-actions>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"getColumn(columnProp)?.translate; else noTranslate\">\r\n <span\r\n [attr.tabindex]=\"-1\"\r\n (click)=\"$event.stopPropagation(); emitRoutePage(row)\">\r\n {{ pageInfo.labelsSection + \".\" + extractFieldName(row, columnProp) | translate }}\r\n </span>\r\n </ng-container>\r\n <ng-template #noTranslate>\r\n <span\r\n [attr.tabindex]=\"-1\"\r\n (click)=\"$event.stopPropagation(); emitRoutePage(row)\"\r\n [innerText]='extractFieldName(row, columnProp)'></span>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Mobile Card View -->\r\n <div class=\"mobile-cards-container\">\r\n <div *ngFor=\"let row of dataSource.data; let rowIndex = index\"\r\n class=\"mobile-card\"\r\n [attr.id]=\"'mobile-card-' + (row?.id || row?.key || '')\"\r\n [ngClass]=\"{\r\n 'mobile-card--highlight': selectedRowIndex == row.id || (pageInfo.groupByProperty && pageInfo.groupByValue?.includes(row[pageInfo.groupByProperty])),\r\n 'mobile-card--dark-highlight': isDarkHighlight(row)\r\n }\"\r\n (auxclick)=\"openNewTab(row)\"\r\n (click)=\"$event.stopPropagation(); onSelectItem(row)\">\r\n\r\n <!-- Mobile Card Header: ID/Name and Status -->\r\n <div class=\"mobile-card__header\">\r\n <div class=\"mobile-card__header-id\">\r\n <span class=\"mobile-card__id-text\">{{ extractFieldName(row, getMobileCardIdColumn()?.property || 'id') }}</span>\r\n </div>\r\n <div class=\"mobile-card__header-status\" *ngIf=\"getMobileCardStatusColumn()\">\r\n <button mat-button class=\"stateType {{ row[getMobileCardStatusColumn()?.property]}}\"\r\n [attr.id]=\"'mobile-btn-state-'+getMobileCardStatusColumn()?.property\">\r\n {{ labelKeyByValue(getMobileCardStatusColumn(), row) | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <div class=\"mobile-card__divider\"></div>\r\n\r\n <!-- Mobile Card Body: Other columns -->\r\n <div class=\"mobile-card__body\">\r\n <div *ngFor=\"let column of getMobileCardColumns()\" class=\"mobile-card__row\">\r\n <div class=\"mobile-card__row-label\">\r\n <span>{{ labelKey(column) | translate }} :</span>\r\n </div>\r\n <div class=\"mobile-card__row-value\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'stateType'\">\r\n <button mat-button class=\"stateType {{ row[column.property]}}\"\r\n [attr.id]=\"'mobile-btn-state-'+column.property\">\r\n {{ labelKeyByValue(column, row) | translate}}\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n {{ extractFieldName(row, column.property) | date:'dd/MM/yyyy' }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'netAmount'\">\r\n <span class=\"mobile-card__amount-currency\">{{ row[column.currency] }}</span>\r\n <span class=\"mobile-card__amount-value\">{{ extractFieldName(row, column.property) | currency:'':'' }}</span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'localDateTime'\">\r\n {{ extractFieldName(row, column.property) | date : extractFormat(column) }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'bigdecimal'\">\r\n <small><sup class=\"mainTable__td__currency\">{{row[column.currency]}}</sup></small>\r\n {{ extractFieldName(row, column.property) | number : (column.digitInfo || '1.3-5') }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"column.translate; else noTranslate\">\r\n <span>{{ pageInfo.labelsSection + \".\" + extractFieldName(row, column.property) | translate }}</span>\r\n </ng-container>\r\n <ng-template #noTranslate>\r\n <span [innerText]='extractFieldName(row, column.property)'></span>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Mobile Card Actions -->\r\n <div class=\"mobile-card__actions\" *ngIf=\"listAction && listAction.length > 0\">\r\n <app-button-actions\r\n [row]=\"row\"\r\n [buttonsAction]=\"true\"\r\n [listAction]=\"listAction\"\r\n [actions]=\"listAction\"\r\n (clickedButton)=\"actionListClicked($event,row)\">\r\n </app-button-actions>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"noDataFound\" class=\"dataNotFound flex-column\">\r\n <img *ngIf=\"getDisplaySvgPath()\" [src]=\"getDisplaySvgPath()\" class=\"dataNotFound__icon\" alt=\"No data found\" />\r\n <span class=\"dataNotFound__title\">{{ getDisplayTitle() | translate}}</span>\r\n <span class=\"dataNotFound__subtitle\">{{ getDisplaySubtitle() | translate}}</span>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"(dataSource.data?.length > 0 || customizedData) && !pageInfo.hidePagination\" class=\"main-pagination flex-row\">\r\n <ng-container *ngIf=\"enablePagination\">\r\n <div class=\"flex-column flex-100\">\r\n <app-paginator\r\n [currentPage]=\"pageIndex\"\r\n [totalItems]=\"totalElements\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"[5, 10, 25, 50]\"\r\n [mobileLoadMoreIncrement]=\"mobileLoadMoreIncrement\"\r\n [displayedItems]=\"mobileDisplayedItems || dataSource.data.length\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"\r\n (loadMore)=\"onLoadMore($event)\">\r\n </app-paginator>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%;max-width:100%;box-sizing:border-box}.baseTable{width:100%!important;max-width:100%!important;box-sizing:border-box}.flex-row{display:flex;flex-direction:row}.flex-column{display:flex;flex-direction:column;width:100%;max-width:100%;box-sizing:border-box}.flex-100{flex:1 1 100%}.flex-49{flex:0 0 49%}.flex-50{flex:0 0 50%}.align-start{justify-content:flex-start;align-items:flex-start}.align-center{justify-content:center;align-items:center}.align-end{justify-content:flex-end;align-items:flex-end}.gap-0{gap:0}.gap-5{gap:5px}.gap-10{gap:10px}.dataNotFound{display:flex;flex-direction:column;justify-content:center;align-items:center;height:auto;min-height:280px;text-align:center;margin-top:0;padding:40px 0}.dataNotFound__icon{height:auto;width:auto;max-width:200px;max-height:200px;margin-bottom:8px;object-fit:contain}.dataNotFound__title{color:#6a6a6a;font-size:20px;font-weight:700;margin-bottom:4px}.dataNotFound__subtitle{color:#6a6a6a;font-size:20px;font-weight:400}@media (max-width: 960px){.flex-column-sm{flex-direction:column}.align-center-sm{justify-content:center;align-items:flex-start}}.filter-row{display:flex!important;flex-direction:row!important;align-items:center!important;width:100%!important;max-width:100%!important;gap:16px!important;box-sizing:border-box;margin-top:20px;margin-bottom:16px;padding:0;flex-wrap:nowrap!important;min-width:0!important;min-height:48px!important;overflow:visible!important}.filter-row app-filter-builder{flex:1 1 auto!important;min-width:0!important;max-width:none!important;width:auto!important;flex-shrink:1!important;display:flex!important;align-items:center!important;overflow:visible!important}.button-group{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end;gap:8px!important;flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;height:46px!important;white-space:nowrap!important;z-index:1!important}.mainTable{margin-top:0!important}.btn-apply-filter{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:46px!important;min-width:120px!important;padding:0 16px!important;box-shadow:none!important}.btn-apply-filter .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.btn-apply-filter mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.btn-apply-filter span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.btn-apply-filter:hover{background:#fafafa!important}.btn-export{background:#fff!important;border:1px solid #0d4261!important;border-radius:8px!important;height:46px!important;min-width:109px!important;padding:0 16px!important;box-shadow:none!important;margin-bottom:7px!important}.btn-export .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.btn-export mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.btn-export .arrow-icon{font-size:16px;width:16px;height:16px;margin-left:0}.btn-export span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.btn-export:hover{background:#fafafa!important}.arrow-icon{font-size:16px;width:16px;height:16px}@media (max-width: 1024px){.button-group{width:auto}}@media (max-width: 768px){.filter-row{flex-direction:column;align-items:stretch}.button-group{display:none!important}.btn-export{width:100%}}.table-container{width:100%;overflow:hidden;background:#f7f7f7;box-sizing:border-box;display:flex;flex-direction:column}.table-header{display:flex;align-items:center;background:#f7f7f7;border:1px solid #f0eeee;max-height:48px;height:48px;margin-bottom:16px;border-radius:8px;overflow:hidden;width:100%;box-sizing:border-box;min-width:0}.table-header-cell{display:flex;align-items:center;max-height:48px;height:48px;padding:8px 16px;flex:1;min-width:100px;position:sticky;top:0;background:none;z-index:10;box-sizing:border-box}.table-header-cell.has-width{flex:0 0 auto!important;min-width:0!important;max-width:none!important}.table-header-cell:last-child{border-right:none}.table-header-cell.first-cell{border-top-left-radius:8px;border-bottom-left-radius:8px}.table-header-cell.last-cell{border-top-right-radius:8px;border-bottom-right-radius:8px}.table-header-cell.actions-cell{justify-content:center;text-align:center}.table-header-cell.actions-cell .table-header-content{justify-content:center}.table-header-cell.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.table-header-cell.sortable:hover{background:#fafafa}.table-header-content{display:flex;align-items:center;gap:8px;width:100%}.table-header-label{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.sort-icon{font-size:18px;width:18px;height:18px;color:#5c5c5c;display:flex;align-items:center;justify-content:center;transition:color .2s}.sort-icon.sort-asc,.sort-icon.sort-desc{color:#0d4261}.table-body{display:flex;flex-direction:column;gap:8px;background:#f7f7f7}.table-row{display:flex;align-items:center;min-height:48px;background:#fff;border-bottom:1px solid #f0eeee;transition:background-color .2s;border-radius:8px;overflow:hidden;width:100%;box-sizing:border-box;min-width:0}.table-row:hover{background:#fafafa}.table-row--highlight{background:#f0f8ff}.table-row--dark-highlight{background:#e8f4f8}.table-row .table-cell.first-cell{border-top-left-radius:8px;border-bottom-left-radius:8px}.table-row .table-cell.last-cell{border-top-right-radius:8px;border-bottom-right-radius:8px}.table-cell{display:flex;align-items:center;min-height:48px;max-height:none;padding:8px 16px;flex:1;min-width:100px;font-family:Lusail,sans-serif;font-weight:400;font-size:16px;line-height:1.2;color:#000;box-sizing:border-box}.table-cell.has-width{flex:0 0 auto!important;min-width:0!important;max-width:none!important}.table-cell:last-child{border-right:none}.table-cell.actions-cell{justify-content:center;text-align:center}.mobile-cards-container{display:none;flex-direction:column;gap:12px;width:100%;box-sizing:border-box}.mobile-card{background:#fff;border:1px solid #f0eeee;border-radius:8px;padding:12px 20px;display:flex;flex-direction:column;gap:4px;cursor:pointer;transition:background-color .2s;box-sizing:border-box;width:100%}.mobile-card:hover{background:#fafafa}.mobile-card--highlight{background:#f0f8ff}.mobile-card--dark-highlight{background:#e8f4f8}.mobile-card__header{display:flex;align-items:center;justify-content:space-between;height:48px;width:100%;box-sizing:border-box}.mobile-card__header-id{display:flex;flex-direction:column;justify-content:center;flex:1}.mobile-card__id-text{font-family:Lusail,sans-serif;font-weight:700;font-size:14px;line-height:1.2;color:#222;text-align:left;white-space:nowrap}.mobile-card__header-status{display:flex;align-items:center;justify-content:flex-end;flex-shrink:0}.mobile-card__divider{height:.347px;width:100%;background:#f0eeee;margin:0;flex-shrink:0}.mobile-card__body{display:flex;flex-direction:column;gap:0;width:100%;box-sizing:border-box}.mobile-card__row{display:flex;align-items:center;justify-content:space-between;height:40px;width:100%;overflow:hidden;box-sizing:border-box}.mobile-card__row-label{display:flex;flex-direction:column;justify-content:center;flex-shrink:0}.mobile-card__row-label span{font-family:Lusail,sans-serif;font-weight:400;font-size:14px;line-height:1.2;color:#222;white-space:nowrap}.mobile-card__row-value{display:flex;flex-direction:column;justify-content:center;flex-shrink:0;text-align:right}.mobile-card__row-value span{font-family:Lusail,sans-serif;font-weight:400;font-size:14px;line-height:1.2;color:#222;white-space:nowrap}.mobile-card__amount-currency{font-family:Lusail,sans-serif;font-weight:400;font-size:14px;line-height:1.2;color:#222;display:inline-block}.mobile-card__amount-value{font-family:Lusail,sans-serif;font-weight:700;font-size:14px;line-height:1.2;color:#222;display:inline-block;margin-left:6px;margin-right:6px}.mobile-card__actions{border-top:1px solid #f0eeee;padding-top:8px;margin-top:4px;display:flex;align-items:center;justify-content:center;min-height:48px;max-height:48px;width:100%;box-sizing:border-box}@media (max-width: 768px){.table-container{display:none}.mobile-cards-container{display:flex}}@media (min-width: 769px){.mobile-cards-container{display:none}.table-container{display:flex}}:host ::ng-deep button.mat-mdc-button.stateType,:host ::ng-deep button.mdc-button.stateType{white-space:normal!important;height:auto!important;min-height:28px!important;max-width:100%!important;align-items:center!important;justify-content:center!important;cursor:default!important}:host ::ng-deep button.mat-mdc-button.stateType .mdc-button__label,:host ::ng-deep button.mdc-button.stateType .mdc-button__label{white-space:normal!important;display:-webkit-box!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:2!important;line-clamp:2!important;overflow:hidden!important;word-break:break-word!important;line-height:1.25!important;max-width:100%!important;text-align:center!important}@media (max-width: 450px){.mobile-card__header{flex-direction:column;justify-content:flex-start;height:auto;width:100%;box-sizing:border-box;gap:8px}}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: CurrencyPipe, name: "currency" }, { kind: "ngmodule", type: NgxPaginationModule }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ButtonActionsComponent, selector: "app-button-actions", inputs: ["actions", "disabled", "buttonsAction", "listAction", "row"], outputs: ["clickedButton"] }, { kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: PaginatorComponent, selector: "app-paginator", inputs: ["currentPage", "totalItems", "pageSize", "pageSizeOptions", "mobileLoadMoreIncrement", "displayedItems"], outputs: ["pageChange", "pageSizeChange", "loadMore"] }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: FilterBuilderComponent, selector: "app-filter-builder", inputs: ["columns", "isChecked", "filterFields", "pageInfo", "pendingFilters", "showExportButton"], outputs: ["filterInformation", "isEmpty", "applyFilter", "sortByClicked", "exportClicked"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }], animations: [] }); }
3761
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseTableComponent, deps: [{ token: BackendService }, { token: i2.TranslateService }, { token: ShareDataService }, { token: i4$2.BreakpointObserver }, { token: 'securityManager' }, { token: i3$3.Router }, { token: i2$1.LiveAnnouncer }], target: i0.ɵɵFactoryTarget.Component }); }
3762
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BaseTableComponent, isStandalone: true, selector: "app-base-table", inputs: { filterFields: "filterFields", noDataFoundSvgPath: "noDataFoundSvgPath", noDataFoundTitle: "noDataFoundTitle", noDataFoundSubtitle: "noDataFoundSubtitle", noResultSvgPath: "noResultSvgPath", noResultTitle: "noResultTitle", noResultSubtitle: "noResultSubtitle", pageInfo: "pageInfo", enablePagination: "enablePagination", mobilePageSize: "mobilePageSize", mobileLoadMoreIncrement: "mobileLoadMoreIncrement", data: "data", listAction: "listAction", extraActions: "extraActions", buttonsDisplayMode: "buttonsDisplayMode", columns: "columns", filters: "filters", pathParam: "pathParam", extraButton: "extraButton", enforceRefresh: "enforceRefresh", isPending: "isPending", trigger: "trigger", reportRequest: "reportRequest", separateEndpointData: "separateEndpointData", manageablePages: "manageablePages", totalPagesCount: "totalPagesCount", currentPageIndex: "currentPageIndex", customizedData: "customizedData" }, outputs: { buttonClicked: "buttonClicked", pageChange: "pageChange", userAction: "userAction", hyperLinkAction: "hyperLinkAction", extraAction: "extraAction", selectedColumn: "selectedColumn", listActionClicked: "listActionClicked", showDialog: "showDialog", clickRoutePage: "clickRoutePage" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex-column baseTable\">\r\n <div class=\"flex-row flex-100\" >\r\n <div class=\"flex-column align-start flex-100\" style=\"width: 100%;\">\r\n <app-title-bar\r\n [pageTitle]=\"pageInfo.hideTitle ? '' : pageInfo.labelsSection+'.list_title'\"\r\n [subTitle]=\"(pageInfo.hideTitle || pageInfo.hideSubtitle) ? '' : pageInfo.labelsSection+'.subtitle'\"\r\n [titleMode]=\"''\"\r\n [pageInfo]=\"pageInfo\"\r\n [newAction]=\"showAddNew()\"\r\n [showExtractButton]=\"!pageInfo.hideExtractButton\"\r\n [draftSupported]=\"pageInfo.draftSupported\"\r\n [isPending]=\"isPending\"\r\n [onViewModeChange]=\"switchViewMode.bind(this)\"\r\n [buttons]=\"extraActions\"\r\n [buttonsDisplayMode]=\"buttonsDisplayMode\"\r\n (newActionClicked)=\"onAddNewAction($event)\"\r\n (extractReport)=\"extractReport($event)\"\r\n (viewModeChanged)=\"onViewModeChangedReceived($event)\"\r\n (buttonClicked)=\"buttonClicked.emit($event)\"\r\n [totalElements]=\"pageInfo.hideTitle ? undefined : totalElements\">\r\n </app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <div class=\"filter-row\" *ngIf=\"!pageInfo.hideAdvancedFilter\">\r\n <app-filter-builder\r\n *ngIf=\"!pageInfo.hideAdvancedFilter\"\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columns\"\r\n [filterFields]=\"filterFields\"\r\n [pendingFilters]=\"pendingFilters\"\r\n [showExportButton]=\"!pageInfo.hideExtractButton\"\r\n (filterInformation)=\"storePendingFilters($event)\"\r\n (isEmpty)=\"handleFilterEmpty($event)\"\r\n (applyFilter)=\"applyPendingFilters()\"\r\n (sortByClicked)=\"handleSortClick($event)\"\r\n (exportClicked)=\"extractReport($event)\">\r\n </app-filter-builder>\r\n\r\n <div class=\"button-group\" *ngIf=\"!pageInfo.hideExtractButton\">\r\n <button *ngIf=\"!pageInfo.hideExtractButton\"\r\n mat-flat-button\r\n type=\"button\"\r\n [matMenuTriggerFor]=\"exportMenu\"\r\n class=\"btn-export\"\r\n [attr.aria-label]=\"'export' | translate\"\r\n [attr.aria-haspopup]=\"true\"\r\n >\r\n <div class=\"button-text\">\r\n <mat-icon>file_export</mat-icon>\r\n <span>{{ 'export' | translate }}</span>\r\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n\r\n <mat-menu #exportMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"extractReport('pdf')\">PDF</button>\r\n <button mat-menu-item (click)=\"extractReport('xlsx')\">Excel</button>\r\n <button mat-menu-item (click)=\"extractReport('csv')\">CSV</button>\r\n </mat-menu>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"flex-row flex-100 baseTable__detailsColumn\">\r\n <div class=\"flex-100\">\r\n <div class=\"flex-row flex-100 mainTable\">\r\n <div\r\n class=\"table-container\"\r\n role=\"table\"\r\n [attr.aria-label]=\"\r\n pageInfo.labelsSection && !pageInfo.hideTitle\r\n ? (pageInfo.labelsSection + '.list_title' | translate)\r\n : null\r\n \">\r\n <div class=\"table-header\" [attr.data-sort]=\"sortState\" role=\"row\">\r\n <div *ngFor=\"let columnProp of visibleColumnsArray; let i = index\"\r\n class=\"table-header-cell\"\r\n role=\"columnheader\"\r\n [attr.aria-sort]=\"getColumnAriaSort(columnProp)\"\r\n [attr.tabindex]=\"getColumn(columnProp)?.enableSorting ? 0 : null\"\r\n [class.sortable]=\"getColumn(columnProp)?.enableSorting\"\r\n [class.first-cell]=\"i === 0\"\r\n [class.last-cell]=\"i === visibleColumnsArray.length - 1\"\r\n [class.actions-cell]=\"i === visibleColumnsArray.length - 1 && columnProp === 'actions'\"\r\n [class.has-width]=\"getColumn(columnProp)?.width\"\r\n [ngStyle]=\"getColumn(columnProp)?.width ? {'width': getColumn(columnProp)?.width + '%', 'flex-basis': getColumn(columnProp)?.width + '%'} : {}\"\r\n (click)=\"getColumn(columnProp)?.enableSorting && handleSortClick(columnProp)\"\r\n (keydown)=\"onSortHeaderKeydown($event, columnProp)\">\r\n <div class=\"table-header-content\">\r\n <span class=\"table-header-label\">{{ labelKey(getColumn(columnProp)) | translate }}</span>\r\n <ng-container *ngIf=\"getColumn(columnProp)?.enableSorting\">\r\n <mat-icon *ngIf=\"getSortDirection(columnProp) === 'asc'\"\r\n class=\"sort-icon sort-asc\">arrow_drop_up</mat-icon>\r\n <mat-icon *ngIf=\"getSortDirection(columnProp) === 'desc'\"\r\n class=\"sort-icon sort-desc\">arrow_drop_down</mat-icon>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"table-body\" role=\"rowgroup\">\r\n <div *ngFor=\"let row of dataSource.data; let rowIndex = index\"\r\n class=\"table-row\"\r\n role=\"row\"\r\n [attr.tabindex]=\"-1\"\r\n [attr.id]=\"'table-row-' + (row?.id || row?.key || '')\"\r\n [ngClass]=\"{\r\n 'table-row--highlight': selectedRowIndex == row.id || (pageInfo.groupByProperty && pageInfo.groupByValue?.includes(row[pageInfo.groupByProperty])),\r\n 'table-row--dark-highlight': isDarkHighlight(row)\r\n }\"\r\n (auxclick)=\"openNewTab(row)\"\r\n (click)=\"$event.stopPropagation(); onSelectItem(row)\">\r\n <div *ngFor=\"let columnProp of visibleColumnsArray; let i = index\"\r\n class=\"table-cell\"\r\n role=\"cell\"\r\n [class.first-cell]=\"i === 0\"\r\n [class.last-cell]=\"i === visibleColumnsArray.length - 1\"\r\n [class.actions-cell]=\"i === visibleColumnsArray.length - 1 && columnProp === 'actions'\"\r\n [class.has-width]=\"getColumn(columnProp)?.width\"\r\n [ngStyle]=\"getColumn(columnProp)?.width ? {'width': getColumn(columnProp)?.width + '%', 'flex-basis': getColumn(columnProp)?.width + '%'} : {}\">\r\n <ng-container [ngSwitch]=\"getColumn(columnProp)?.type\">\r\n <ng-container *ngSwitchCase=\"'workflowStatus'\">\r\n <button mat-button type=\"button\" class=\"wfStatus {{ getStatusDescription(row)}}\" [attr.id]=\"'table-btn-wf-'+columnProp+'-'+(row.id || row.key || '')\" [attr.tabindex]=\"-1\">{{ getStatusDescription(row) }}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'hyper-text'\">\r\n <span\r\n *ngIf=\"shouldRenderAsHyperLink(row); else plainHyperText\"\r\n class=\"mat-mdc-form-field-label hyper-link\"\r\n [attr.tabindex]=\"-1\"\r\n (click)=\"hyperLinkClicked(columnProp, row)\">\r\n {{ extractFieldName(row, columnProp) }}\r\n </span>\r\n <ng-template #plainHyperText>\r\n <span class=\"mat-mdc-form-field-label\">{{ extractFieldName(row, columnProp) }}</span>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <button *ngIf=\"shouldShowButton(row)\" mat-button type=\"button\" class=\"primary\" (click)=\"$event.stopPropagation(); actionButtonClicked(columnProp, row)\" [attr.id]=\"'table-btn-action-'+columnProp\">\r\n {{ labelKey(getColumn(columnProp)) + '_title' | translate }}\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <mat-icon [ngClass]=\"{\r\n 'mainTable__td__icon-green': row[columnProp] === 'pass',\r\n 'mainTable__td__icon-orange': row[columnProp] === 'warning',\r\n 'mainTable__td__icon-red': row[columnProp] === 'error'\r\n }\"\r\n [attr.aria-label]=\"getIconAriaLabelKey(row[columnProp]) | translate\">\r\n {{ getIcon(row[columnProp]) }}\r\n </mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <mat-checkbox class=\"primary\" [tabIndex]=\"-1\" [checked]=\"row[columnProp]\" (click)=\"$event.stopPropagation();actionCheckedClicked(columnProp,row)\"></mat-checkbox>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'stateType'\">\r\n <button mat-button type=\"button\" class=\"stateType {{ row[columnProp]}}\" [attr.id]=\"'table-btn-state-'+columnProp\" [attr.tabindex]=\"-1\">{{ labelKeyByValue(getColumn(columnProp), row) | translate}}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n {{ extractFieldName(row, columnProp) | date:'dd/MM/yyyy' }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'croppedText'\">\r\n {{ getCroppedText(row[columnProp], row[getColumn(columnProp)?.width]) }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'download'\">\r\n <mat-icon class=\"mainTable__td__icon-blue\"\r\n [attr.aria-label]=\"'BASE_TABLE.downloadAction' | translate\">system_update_alt</mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'onOff'\">\r\n <mat-icon *ngIf=\"row[columnProp] === null\" class=\"mainTable__td__icon-darkorange\"\r\n [attr.aria-label]=\"getOnOffFlagAriaLabelKey(null) | translate\">flag</mat-icon>\r\n <mat-icon *ngIf=\"row[columnProp] === false\" class=\"mainTable__td__icon-red\"\r\n [attr.aria-label]=\"getOnOffFlagAriaLabelKey(false) | translate\">flag</mat-icon>\r\n <mat-icon *ngIf=\"row[columnProp] === true\" class=\"mainTable__td__icon-green\"\r\n [attr.aria-label]=\"getOnOffFlagAriaLabelKey(true) | translate\">flag</mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'status'\">\r\n <span *ngIf=\"row[columnProp] === null || row[columnProp] === false\">\r\n {{ pageInfo.labelsSection + '.' + getColumn(columnProp)?.label + 'InActive' | translate }}\r\n </span>\r\n <span *ngIf=\"row[columnProp] === true\">\r\n {{ pageInfo.labelsSection + '.' + getColumn(columnProp)?.label + 'Active' | translate }}\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'info'\">\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n [attr.tabindex]=\"-1\"\r\n [attr.aria-label]=\"'BASE_TABLE.rowDetails' | translate\"\r\n (click)=\"$event.stopPropagation();emitEvent(row)\"\r\n [attr.id]=\"'table-btn-info-'+row.id\">\r\n <mat-icon aria-hidden=\"true\">info</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'netAmount'\">\r\n <div class=\"mainTable__td__currency\" style=\"display:inline-block;\">{{ row[getColumn(columnProp)?.currency] }}</div>\r\n <span class=\"mainTable__td__property\" style=\"display:inline-block; margin-left:6px; margin-right:6px;\">\r\n {{ extractFieldName(row, columnProp) | currency:'':'' }}</span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'localDateTime'\">\r\n {{ extractFieldName(row, columnProp) | date : extractFormat(getColumn(columnProp)) }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'bigdecimal'\">\r\n <small><sup class=\"mainTable__td__currency\">{{row[getColumn(columnProp)?.currency]}}</sup></small>\r\n {{ extractFieldName(row, columnProp) | number : (getColumn(columnProp)?.digitInfo || '1.3-5') }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'listAction'\">\r\n <app-button-actions\r\n [row]=\"row\"\r\n [buttonsAction]=\"getColumn(columnProp)?.viewType === 'buttonsAction'\"\r\n [listAction]=\"listAction\"\r\n [actions]=\"listAction\"\r\n (clickedButton)=\"actionListClicked($event,row)\">\r\n </app-button-actions>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"getColumn(columnProp)?.translate; else noTranslate\">\r\n <span\r\n [attr.tabindex]=\"-1\"\r\n (click)=\"$event.stopPropagation(); emitRoutePage(row)\">\r\n {{ pageInfo.labelsSection + \".\" + extractFieldName(row, columnProp) | translate }}\r\n </span>\r\n </ng-container>\r\n <ng-template #noTranslate>\r\n <span\r\n [attr.tabindex]=\"-1\"\r\n (click)=\"$event.stopPropagation(); emitRoutePage(row)\"\r\n [innerText]='extractFieldName(row, columnProp)'></span>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Mobile Card View -->\r\n <div class=\"mobile-cards-container\">\r\n <div *ngFor=\"let row of dataSource.data; let rowIndex = index\"\r\n class=\"mobile-card\"\r\n [attr.id]=\"'mobile-card-' + (row?.id || row?.key || '')\"\r\n [ngClass]=\"{\r\n 'mobile-card--highlight': selectedRowIndex == row.id || (pageInfo.groupByProperty && pageInfo.groupByValue?.includes(row[pageInfo.groupByProperty])),\r\n 'mobile-card--dark-highlight': isDarkHighlight(row)\r\n }\"\r\n (auxclick)=\"openNewTab(row)\"\r\n (click)=\"$event.stopPropagation(); onSelectItem(row)\">\r\n\r\n <!-- Mobile Card Header: ID/Name and Status -->\r\n <div class=\"mobile-card__header\">\r\n <div class=\"mobile-card__header-id\">\r\n <span class=\"mobile-card__id-text\">{{ extractFieldName(row, getMobileCardIdColumn()?.property || 'id') }}</span>\r\n </div>\r\n <div class=\"mobile-card__header-status\" *ngIf=\"getMobileCardStatusColumn()\">\r\n <button mat-button class=\"stateType {{ row[getMobileCardStatusColumn()?.property]}}\"\r\n [attr.id]=\"'mobile-btn-state-'+getMobileCardStatusColumn()?.property\">\r\n {{ labelKeyByValue(getMobileCardStatusColumn(), row) | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <div class=\"mobile-card__divider\"></div>\r\n\r\n <!-- Mobile Card Body: Other columns -->\r\n <div class=\"mobile-card__body\">\r\n <div *ngFor=\"let column of getMobileCardColumns()\" class=\"mobile-card__row\">\r\n <div class=\"mobile-card__row-label\">\r\n <span>{{ labelKey(column) | translate }} :</span>\r\n </div>\r\n <div class=\"mobile-card__row-value\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'stateType'\">\r\n <button mat-button class=\"stateType {{ row[column.property]}}\"\r\n [attr.id]=\"'mobile-btn-state-'+column.property\">\r\n {{ labelKeyByValue(column, row) | translate}}\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n {{ extractFieldName(row, column.property) | date:'dd/MM/yyyy' }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'netAmount'\">\r\n <span class=\"mobile-card__amount-currency\">{{ row[column.currency] }}</span>\r\n <span class=\"mobile-card__amount-value\">{{ extractFieldName(row, column.property) | currency:'':'' }}</span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'localDateTime'\">\r\n {{ extractFieldName(row, column.property) | date : extractFormat(column) }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'bigdecimal'\">\r\n <small><sup class=\"mainTable__td__currency\">{{row[column.currency]}}</sup></small>\r\n {{ extractFieldName(row, column.property) | number : (column.digitInfo || '1.3-5') }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"column.translate; else noTranslate\">\r\n <span>{{ pageInfo.labelsSection + \".\" + extractFieldName(row, column.property) | translate }}</span>\r\n </ng-container>\r\n <ng-template #noTranslate>\r\n <span [innerText]='extractFieldName(row, column.property)'></span>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Mobile Card Actions -->\r\n <div class=\"mobile-card__actions\" *ngIf=\"listAction && listAction.length > 0\">\r\n <app-button-actions\r\n [row]=\"row\"\r\n [buttonsAction]=\"true\"\r\n [listAction]=\"listAction\"\r\n [actions]=\"listAction\"\r\n (clickedButton)=\"actionListClicked($event,row)\">\r\n </app-button-actions>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"noDataFound\" class=\"dataNotFound flex-column\">\r\n <img *ngIf=\"getDisplaySvgPath()\" [src]=\"getDisplaySvgPath()\" class=\"dataNotFound__icon\" alt=\"No data found\" />\r\n <span class=\"dataNotFound__title\">{{ getDisplayTitle() | translate}}</span>\r\n <span class=\"dataNotFound__subtitle\">{{ getDisplaySubtitle() | translate}}</span>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"(dataSource.data?.length > 0 || customizedData) && !pageInfo.hidePagination\" class=\"main-pagination flex-row\">\r\n <ng-container *ngIf=\"enablePagination\">\r\n <div class=\"flex-column flex-100\">\r\n <app-paginator\r\n [currentPage]=\"pageIndex\"\r\n [totalItems]=\"totalElements\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"[5, 10, 25, 50]\"\r\n [mobileLoadMoreIncrement]=\"mobileLoadMoreIncrement\"\r\n [displayedItems]=\"mobileDisplayedItems || dataSource.data.length\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"\r\n (loadMore)=\"onLoadMore($event)\">\r\n </app-paginator>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%;max-width:100%;box-sizing:border-box}.baseTable{width:100%!important;max-width:100%!important;box-sizing:border-box}.flex-row{display:flex;flex-direction:row}.flex-column{display:flex;flex-direction:column;width:100%;max-width:100%;box-sizing:border-box}.flex-100{flex:1 1 100%}.flex-49{flex:0 0 49%}.flex-50{flex:0 0 50%}.align-start{justify-content:flex-start;align-items:flex-start}.align-center{justify-content:center;align-items:center}.align-end{justify-content:flex-end;align-items:flex-end}.gap-0{gap:0}.gap-5{gap:5px}.gap-10{gap:10px}.dataNotFound{display:flex;flex-direction:column;justify-content:center;align-items:center;height:auto;min-height:280px;text-align:center;margin-top:0;padding:40px 0}.dataNotFound__icon{height:auto;width:auto;max-width:200px;max-height:200px;margin-bottom:8px;object-fit:contain}.dataNotFound__title{color:#6a6a6a;font-size:20px;font-weight:700;margin-bottom:4px}.dataNotFound__subtitle{color:#6a6a6a;font-size:20px;font-weight:400}@media (max-width: 960px){.flex-column-sm{flex-direction:column}.align-center-sm{justify-content:center;align-items:flex-start}}.filter-row{display:flex!important;flex-direction:row!important;align-items:center!important;width:100%!important;max-width:100%!important;gap:16px!important;box-sizing:border-box;margin-top:20px;margin-bottom:16px;padding:0;flex-wrap:nowrap!important;min-width:0!important;min-height:48px!important;overflow:visible!important}.filter-row app-filter-builder{flex:1 1 auto!important;min-width:0!important;max-width:none!important;width:auto!important;flex-shrink:1!important;display:flex!important;align-items:center!important;overflow:visible!important}.button-group{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end;gap:8px!important;flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;height:46px!important;white-space:nowrap!important;z-index:1!important}.mainTable{margin-top:0!important}.btn-apply-filter{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:46px!important;min-width:120px!important;padding:0 16px!important;box-shadow:none!important}.btn-apply-filter .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.btn-apply-filter mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.btn-apply-filter span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.btn-apply-filter:hover{background:#fafafa!important}.btn-export{background:#fff!important;border:1px solid #0d4261!important;border-radius:8px!important;height:46px!important;min-width:109px!important;padding:0 16px!important;box-shadow:none!important;margin-bottom:7px!important}.btn-export .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.btn-export mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.btn-export .arrow-icon{font-size:16px;width:16px;height:16px;margin-left:0}.btn-export span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.btn-export:hover{background:#fafafa!important}.arrow-icon{font-size:16px;width:16px;height:16px}@media (max-width: 1024px){.button-group{width:auto}}@media (max-width: 768px){.filter-row{flex-direction:column;align-items:stretch}.button-group{display:none!important}.btn-export{width:100%}}.table-container{width:100%;overflow:hidden;background:#f7f7f7;box-sizing:border-box;display:flex;flex-direction:column}.table-header{display:flex;align-items:center;background:#f7f7f7;border:1px solid #f0eeee;max-height:48px;height:48px;margin-bottom:16px;border-radius:8px;overflow:hidden;width:100%;box-sizing:border-box;min-width:0}.table-header-cell{display:flex;align-items:center;max-height:48px;height:48px;padding:8px 16px;flex:1;min-width:100px;position:sticky;top:0;background:none;z-index:10;box-sizing:border-box}.table-header-cell.has-width{flex:0 0 auto!important;min-width:0!important;max-width:none!important}.table-header-cell:last-child{border-right:none}.table-header-cell.first-cell{border-top-left-radius:8px;border-bottom-left-radius:8px}.table-header-cell.last-cell{border-top-right-radius:8px;border-bottom-right-radius:8px}.table-header-cell.actions-cell{justify-content:center;text-align:center}.table-header-cell.actions-cell .table-header-content{justify-content:center}.table-header-cell.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.table-header-cell.sortable:hover{background:#fafafa}.table-header-content{display:flex;align-items:center;gap:8px;width:100%}.table-header-label{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.sort-icon{font-size:18px;width:18px;height:18px;color:#5c5c5c;display:flex;align-items:center;justify-content:center;transition:color .2s}.sort-icon.sort-asc,.sort-icon.sort-desc{color:#0d4261}.table-body{display:flex;flex-direction:column;gap:8px;background:#f7f7f7}.table-row{display:flex;align-items:center;min-height:48px;background:#fff;border-bottom:1px solid #f0eeee;transition:background-color .2s;border-radius:8px;overflow:hidden;width:100%;box-sizing:border-box;min-width:0}.table-row:hover{background:#fafafa}.table-row--highlight{background:#f0f8ff}.table-row--dark-highlight{background:#e8f4f8}.table-row .table-cell.first-cell{border-top-left-radius:8px;border-bottom-left-radius:8px}.table-row .table-cell.last-cell{border-top-right-radius:8px;border-bottom-right-radius:8px}.table-cell{display:flex;align-items:center;min-height:48px;max-height:none;padding:8px 16px;flex:1;min-width:100px;font-family:Lusail,sans-serif;font-weight:400;font-size:16px;line-height:1.2;color:#000;box-sizing:border-box}.table-cell.has-width{flex:0 0 auto!important;min-width:0!important;max-width:none!important}.table-cell:last-child{border-right:none}.table-cell.actions-cell{justify-content:center;text-align:center}.mobile-cards-container{display:none;flex-direction:column;gap:12px;width:100%;box-sizing:border-box}.mobile-card{background:#fff;border:1px solid #f0eeee;border-radius:8px;padding:12px 20px;display:flex;flex-direction:column;gap:4px;cursor:pointer;transition:background-color .2s;box-sizing:border-box;width:100%}.mobile-card:hover{background:#fafafa}.mobile-card--highlight{background:#f0f8ff}.mobile-card--dark-highlight{background:#e8f4f8}.mobile-card__header{display:flex;align-items:center;justify-content:space-between;height:48px;width:100%;box-sizing:border-box}.mobile-card__header-id{display:flex;flex-direction:column;justify-content:center;flex:1}.mobile-card__id-text{font-family:Lusail,sans-serif;font-weight:700;font-size:14px;line-height:1.2;color:#222;text-align:left;white-space:nowrap}.mobile-card__header-status{display:flex;align-items:center;justify-content:flex-end;flex-shrink:0}.mobile-card__divider{height:.347px;width:100%;background:#f0eeee;margin:0;flex-shrink:0}.mobile-card__body{display:flex;flex-direction:column;gap:0;width:100%;box-sizing:border-box}.mobile-card__row{display:flex;align-items:center;justify-content:space-between;height:40px;width:100%;overflow:hidden;box-sizing:border-box}.mobile-card__row-label{display:flex;flex-direction:column;justify-content:center;flex-shrink:0}.mobile-card__row-label span{font-family:Lusail,sans-serif;font-weight:400;font-size:14px;line-height:1.2;color:#222;white-space:nowrap}.mobile-card__row-value{display:flex;flex-direction:column;justify-content:center;flex-shrink:0;text-align:right}.mobile-card__row-value span{font-family:Lusail,sans-serif;font-weight:400;font-size:14px;line-height:1.2;color:#222;white-space:nowrap}.mobile-card__amount-currency{font-family:Lusail,sans-serif;font-weight:400;font-size:14px;line-height:1.2;color:#222;display:inline-block}.mobile-card__amount-value{font-family:Lusail,sans-serif;font-weight:700;font-size:14px;line-height:1.2;color:#222;display:inline-block;margin-left:6px;margin-right:6px}.mobile-card__actions{border-top:1px solid #f0eeee;padding-top:8px;margin-top:4px;display:flex;align-items:center;justify-content:center;min-height:48px;max-height:48px;width:100%;box-sizing:border-box}@media (max-width: 768px){.table-container{display:none}.mobile-cards-container{display:flex}}@media (min-width: 769px){.mobile-cards-container{display:none}.table-container{display:flex}}:host ::ng-deep button.mat-mdc-button.stateType,:host ::ng-deep button.mdc-button.stateType{white-space:normal!important;height:auto!important;min-height:28px!important;max-width:100%!important;align-items:center!important;justify-content:center!important;cursor:default!important}:host ::ng-deep button.mat-mdc-button.stateType .mdc-button__label,:host ::ng-deep button.mdc-button.stateType .mdc-button__label{white-space:normal!important;display:-webkit-box!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:2!important;line-clamp:2!important;overflow:hidden!important;word-break:break-word!important;line-height:1.25!important;max-width:100%!important;text-align:center!important}@media (max-width: 450px){.mobile-card__header{flex-direction:column;justify-content:flex-start;height:auto;width:100%;box-sizing:border-box;gap:8px}}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: CurrencyPipe, name: "currency" }, { kind: "ngmodule", type: NgxPaginationModule }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ButtonActionsComponent, selector: "app-button-actions", inputs: ["actions", "disabled", "buttonsAction", "listAction", "row"], outputs: ["clickedButton"] }, { kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: PaginatorComponent, selector: "app-paginator", inputs: ["currentPage", "totalItems", "pageSize", "pageSizeOptions", "mobileLoadMoreIncrement", "displayedItems"], outputs: ["pageChange", "pageSizeChange", "loadMore"] }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: FilterBuilderComponent, selector: "app-filter-builder", inputs: ["columns", "isChecked", "filterFields", "pageInfo", "pendingFilters", "showExportButton"], outputs: ["filterInformation", "isEmpty", "applyFilter", "sortByClicked", "exportClicked"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }], animations: [] }); }
3762
3763
  }
3763
3764
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseTableComponent, decorators: [{
3764
3765
  type: Component,
@@ -3789,10 +3790,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3789
3790
  MatMenu,
3790
3791
  MatMenuItem,
3791
3792
  ], template: "<div class=\"flex-column baseTable\">\r\n <div class=\"flex-row flex-100\" >\r\n <div class=\"flex-column align-start flex-100\" style=\"width: 100%;\">\r\n <app-title-bar\r\n [pageTitle]=\"pageInfo.hideTitle ? '' : pageInfo.labelsSection+'.list_title'\"\r\n [subTitle]=\"(pageInfo.hideTitle || pageInfo.hideSubtitle) ? '' : pageInfo.labelsSection+'.subtitle'\"\r\n [titleMode]=\"''\"\r\n [pageInfo]=\"pageInfo\"\r\n [newAction]=\"showAddNew()\"\r\n [showExtractButton]=\"!pageInfo.hideExtractButton\"\r\n [draftSupported]=\"pageInfo.draftSupported\"\r\n [isPending]=\"isPending\"\r\n [onViewModeChange]=\"switchViewMode.bind(this)\"\r\n [buttons]=\"extraActions\"\r\n [buttonsDisplayMode]=\"buttonsDisplayMode\"\r\n (newActionClicked)=\"onAddNewAction($event)\"\r\n (extractReport)=\"extractReport($event)\"\r\n (viewModeChanged)=\"onViewModeChangedReceived($event)\"\r\n (buttonClicked)=\"buttonClicked.emit($event)\"\r\n [totalElements]=\"pageInfo.hideTitle ? undefined : totalElements\">\r\n </app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <div class=\"filter-row\" *ngIf=\"!pageInfo.hideAdvancedFilter\">\r\n <app-filter-builder\r\n *ngIf=\"!pageInfo.hideAdvancedFilter\"\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columns\"\r\n [filterFields]=\"filterFields\"\r\n [pendingFilters]=\"pendingFilters\"\r\n [showExportButton]=\"!pageInfo.hideExtractButton\"\r\n (filterInformation)=\"storePendingFilters($event)\"\r\n (isEmpty)=\"handleFilterEmpty($event)\"\r\n (applyFilter)=\"applyPendingFilters()\"\r\n (sortByClicked)=\"handleSortClick($event)\"\r\n (exportClicked)=\"extractReport($event)\">\r\n </app-filter-builder>\r\n\r\n <div class=\"button-group\" *ngIf=\"!pageInfo.hideExtractButton\">\r\n <button *ngIf=\"!pageInfo.hideExtractButton\"\r\n mat-flat-button\r\n type=\"button\"\r\n [matMenuTriggerFor]=\"exportMenu\"\r\n class=\"btn-export\"\r\n [attr.aria-label]=\"'export' | translate\"\r\n [attr.aria-haspopup]=\"true\"\r\n >\r\n <div class=\"button-text\">\r\n <mat-icon>file_export</mat-icon>\r\n <span>{{ 'export' | translate }}</span>\r\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n\r\n <mat-menu #exportMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"extractReport('pdf')\">PDF</button>\r\n <button mat-menu-item (click)=\"extractReport('xlsx')\">Excel</button>\r\n <button mat-menu-item (click)=\"extractReport('csv')\">CSV</button>\r\n </mat-menu>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"flex-row flex-100 baseTable__detailsColumn\">\r\n <div class=\"flex-100\">\r\n <div class=\"flex-row flex-100 mainTable\">\r\n <div\r\n class=\"table-container\"\r\n role=\"table\"\r\n [attr.aria-label]=\"\r\n pageInfo.labelsSection && !pageInfo.hideTitle\r\n ? (pageInfo.labelsSection + '.list_title' | translate)\r\n : null\r\n \">\r\n <div class=\"table-header\" [attr.data-sort]=\"sortState\" role=\"row\">\r\n <div *ngFor=\"let columnProp of visibleColumnsArray; let i = index\"\r\n class=\"table-header-cell\"\r\n role=\"columnheader\"\r\n [attr.aria-sort]=\"getColumnAriaSort(columnProp)\"\r\n [attr.tabindex]=\"getColumn(columnProp)?.enableSorting ? 0 : null\"\r\n [class.sortable]=\"getColumn(columnProp)?.enableSorting\"\r\n [class.first-cell]=\"i === 0\"\r\n [class.last-cell]=\"i === visibleColumnsArray.length - 1\"\r\n [class.actions-cell]=\"i === visibleColumnsArray.length - 1 && columnProp === 'actions'\"\r\n [class.has-width]=\"getColumn(columnProp)?.width\"\r\n [ngStyle]=\"getColumn(columnProp)?.width ? {'width': getColumn(columnProp)?.width + '%', 'flex-basis': getColumn(columnProp)?.width + '%'} : {}\"\r\n (click)=\"getColumn(columnProp)?.enableSorting && handleSortClick(columnProp)\"\r\n (keydown)=\"onSortHeaderKeydown($event, columnProp)\">\r\n <div class=\"table-header-content\">\r\n <span class=\"table-header-label\">{{ labelKey(getColumn(columnProp)) | translate }}</span>\r\n <ng-container *ngIf=\"getColumn(columnProp)?.enableSorting\">\r\n <mat-icon *ngIf=\"getSortDirection(columnProp) === 'asc'\"\r\n class=\"sort-icon sort-asc\">arrow_drop_up</mat-icon>\r\n <mat-icon *ngIf=\"getSortDirection(columnProp) === 'desc'\"\r\n class=\"sort-icon sort-desc\">arrow_drop_down</mat-icon>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"table-body\" role=\"rowgroup\">\r\n <div *ngFor=\"let row of dataSource.data; let rowIndex = index\"\r\n class=\"table-row\"\r\n role=\"row\"\r\n [attr.tabindex]=\"-1\"\r\n [attr.id]=\"'table-row-' + (row?.id || row?.key || '')\"\r\n [ngClass]=\"{\r\n 'table-row--highlight': selectedRowIndex == row.id || (pageInfo.groupByProperty && pageInfo.groupByValue?.includes(row[pageInfo.groupByProperty])),\r\n 'table-row--dark-highlight': isDarkHighlight(row)\r\n }\"\r\n (auxclick)=\"openNewTab(row)\"\r\n (click)=\"$event.stopPropagation(); onSelectItem(row)\">\r\n <div *ngFor=\"let columnProp of visibleColumnsArray; let i = index\"\r\n class=\"table-cell\"\r\n role=\"cell\"\r\n [class.first-cell]=\"i === 0\"\r\n [class.last-cell]=\"i === visibleColumnsArray.length - 1\"\r\n [class.actions-cell]=\"i === visibleColumnsArray.length - 1 && columnProp === 'actions'\"\r\n [class.has-width]=\"getColumn(columnProp)?.width\"\r\n [ngStyle]=\"getColumn(columnProp)?.width ? {'width': getColumn(columnProp)?.width + '%', 'flex-basis': getColumn(columnProp)?.width + '%'} : {}\">\r\n <ng-container [ngSwitch]=\"getColumn(columnProp)?.type\">\r\n <ng-container *ngSwitchCase=\"'workflowStatus'\">\r\n <button mat-button type=\"button\" class=\"wfStatus {{ getStatusDescription(row)}}\" [attr.id]=\"'table-btn-wf-'+columnProp+'-'+(row.id || row.key || '')\" [attr.tabindex]=\"-1\">{{ getStatusDescription(row) }}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'hyper-text'\">\r\n <span\r\n *ngIf=\"shouldRenderAsHyperLink(row); else plainHyperText\"\r\n class=\"mat-mdc-form-field-label hyper-link\"\r\n [attr.tabindex]=\"-1\"\r\n (click)=\"hyperLinkClicked(columnProp, row)\">\r\n {{ extractFieldName(row, columnProp) }}\r\n </span>\r\n <ng-template #plainHyperText>\r\n <span class=\"mat-mdc-form-field-label\">{{ extractFieldName(row, columnProp) }}</span>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <button *ngIf=\"shouldShowButton(row)\" mat-button type=\"button\" class=\"primary\" (click)=\"$event.stopPropagation(); actionButtonClicked(columnProp, row)\" [attr.id]=\"'table-btn-action-'+columnProp\">\r\n {{ labelKey(getColumn(columnProp)) + '_title' | translate }}\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <mat-icon [ngClass]=\"{\r\n 'mainTable__td__icon-green': row[columnProp] === 'pass',\r\n 'mainTable__td__icon-orange': row[columnProp] === 'warning',\r\n 'mainTable__td__icon-red': row[columnProp] === 'error'\r\n }\"\r\n [attr.aria-label]=\"getIconAriaLabelKey(row[columnProp]) | translate\">\r\n {{ getIcon(row[columnProp]) }}\r\n </mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <mat-checkbox class=\"primary\" [tabIndex]=\"-1\" [checked]=\"row[columnProp]\" (click)=\"$event.stopPropagation();actionCheckedClicked(columnProp,row)\"></mat-checkbox>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'stateType'\">\r\n <button mat-button type=\"button\" class=\"stateType {{ row[columnProp]}}\" [attr.id]=\"'table-btn-state-'+columnProp\" [attr.tabindex]=\"-1\">{{ labelKeyByValue(getColumn(columnProp), row) | translate}}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n {{ extractFieldName(row, columnProp) | date:'dd/MM/yyyy' }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'croppedText'\">\r\n {{ getCroppedText(row[columnProp], row[getColumn(columnProp)?.width]) }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'download'\">\r\n <mat-icon class=\"mainTable__td__icon-blue\"\r\n [attr.aria-label]=\"'BASE_TABLE.downloadAction' | translate\">system_update_alt</mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'onOff'\">\r\n <mat-icon *ngIf=\"row[columnProp] === null\" class=\"mainTable__td__icon-darkorange\"\r\n [attr.aria-label]=\"getOnOffFlagAriaLabelKey(null) | translate\">flag</mat-icon>\r\n <mat-icon *ngIf=\"row[columnProp] === false\" class=\"mainTable__td__icon-red\"\r\n [attr.aria-label]=\"getOnOffFlagAriaLabelKey(false) | translate\">flag</mat-icon>\r\n <mat-icon *ngIf=\"row[columnProp] === true\" class=\"mainTable__td__icon-green\"\r\n [attr.aria-label]=\"getOnOffFlagAriaLabelKey(true) | translate\">flag</mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'status'\">\r\n <span *ngIf=\"row[columnProp] === null || row[columnProp] === false\">\r\n {{ pageInfo.labelsSection + '.' + getColumn(columnProp)?.label + 'InActive' | translate }}\r\n </span>\r\n <span *ngIf=\"row[columnProp] === true\">\r\n {{ pageInfo.labelsSection + '.' + getColumn(columnProp)?.label + 'Active' | translate }}\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'info'\">\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n [attr.tabindex]=\"-1\"\r\n [attr.aria-label]=\"'BASE_TABLE.rowDetails' | translate\"\r\n (click)=\"$event.stopPropagation();emitEvent(row)\"\r\n [attr.id]=\"'table-btn-info-'+row.id\">\r\n <mat-icon aria-hidden=\"true\">info</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'netAmount'\">\r\n <div class=\"mainTable__td__currency\" style=\"display:inline-block;\">{{ row[getColumn(columnProp)?.currency] }}</div>\r\n <span class=\"mainTable__td__property\" style=\"display:inline-block; margin-left:6px; margin-right:6px;\">\r\n {{ extractFieldName(row, columnProp) | currency:'':'' }}</span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'localDateTime'\">\r\n {{ extractFieldName(row, columnProp) | date : extractFormat(getColumn(columnProp)) }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'bigdecimal'\">\r\n <small><sup class=\"mainTable__td__currency\">{{row[getColumn(columnProp)?.currency]}}</sup></small>\r\n {{ extractFieldName(row, columnProp) | number : (getColumn(columnProp)?.digitInfo || '1.3-5') }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'listAction'\">\r\n <app-button-actions\r\n [row]=\"row\"\r\n [buttonsAction]=\"getColumn(columnProp)?.viewType === 'buttonsAction'\"\r\n [listAction]=\"listAction\"\r\n [actions]=\"listAction\"\r\n (clickedButton)=\"actionListClicked($event,row)\">\r\n </app-button-actions>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"getColumn(columnProp)?.translate; else noTranslate\">\r\n <span\r\n [attr.tabindex]=\"-1\"\r\n (click)=\"$event.stopPropagation(); emitRoutePage(row)\">\r\n {{ pageInfo.labelsSection + \".\" + extractFieldName(row, columnProp) | translate }}\r\n </span>\r\n </ng-container>\r\n <ng-template #noTranslate>\r\n <span\r\n [attr.tabindex]=\"-1\"\r\n (click)=\"$event.stopPropagation(); emitRoutePage(row)\"\r\n [innerText]='extractFieldName(row, columnProp)'></span>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Mobile Card View -->\r\n <div class=\"mobile-cards-container\">\r\n <div *ngFor=\"let row of dataSource.data; let rowIndex = index\"\r\n class=\"mobile-card\"\r\n [attr.id]=\"'mobile-card-' + (row?.id || row?.key || '')\"\r\n [ngClass]=\"{\r\n 'mobile-card--highlight': selectedRowIndex == row.id || (pageInfo.groupByProperty && pageInfo.groupByValue?.includes(row[pageInfo.groupByProperty])),\r\n 'mobile-card--dark-highlight': isDarkHighlight(row)\r\n }\"\r\n (auxclick)=\"openNewTab(row)\"\r\n (click)=\"$event.stopPropagation(); onSelectItem(row)\">\r\n\r\n <!-- Mobile Card Header: ID/Name and Status -->\r\n <div class=\"mobile-card__header\">\r\n <div class=\"mobile-card__header-id\">\r\n <span class=\"mobile-card__id-text\">{{ extractFieldName(row, getMobileCardIdColumn()?.property || 'id') }}</span>\r\n </div>\r\n <div class=\"mobile-card__header-status\" *ngIf=\"getMobileCardStatusColumn()\">\r\n <button mat-button class=\"stateType {{ row[getMobileCardStatusColumn()?.property]}}\"\r\n [attr.id]=\"'mobile-btn-state-'+getMobileCardStatusColumn()?.property\">\r\n {{ labelKeyByValue(getMobileCardStatusColumn(), row) | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <div class=\"mobile-card__divider\"></div>\r\n\r\n <!-- Mobile Card Body: Other columns -->\r\n <div class=\"mobile-card__body\">\r\n <div *ngFor=\"let column of getMobileCardColumns()\" class=\"mobile-card__row\">\r\n <div class=\"mobile-card__row-label\">\r\n <span>{{ labelKey(column) | translate }} :</span>\r\n </div>\r\n <div class=\"mobile-card__row-value\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'stateType'\">\r\n <button mat-button class=\"stateType {{ row[column.property]}}\"\r\n [attr.id]=\"'mobile-btn-state-'+column.property\">\r\n {{ labelKeyByValue(column, row) | translate}}\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n {{ extractFieldName(row, column.property) | date:'dd/MM/yyyy' }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'netAmount'\">\r\n <span class=\"mobile-card__amount-currency\">{{ row[column.currency] }}</span>\r\n <span class=\"mobile-card__amount-value\">{{ extractFieldName(row, column.property) | currency:'':'' }}</span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'localDateTime'\">\r\n {{ extractFieldName(row, column.property) | date : extractFormat(column) }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'bigdecimal'\">\r\n <small><sup class=\"mainTable__td__currency\">{{row[column.currency]}}</sup></small>\r\n {{ extractFieldName(row, column.property) | number : (column.digitInfo || '1.3-5') }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"column.translate; else noTranslate\">\r\n <span>{{ pageInfo.labelsSection + \".\" + extractFieldName(row, column.property) | translate }}</span>\r\n </ng-container>\r\n <ng-template #noTranslate>\r\n <span [innerText]='extractFieldName(row, column.property)'></span>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Mobile Card Actions -->\r\n <div class=\"mobile-card__actions\" *ngIf=\"listAction && listAction.length > 0\">\r\n <app-button-actions\r\n [row]=\"row\"\r\n [buttonsAction]=\"true\"\r\n [listAction]=\"listAction\"\r\n [actions]=\"listAction\"\r\n (clickedButton)=\"actionListClicked($event,row)\">\r\n </app-button-actions>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"noDataFound\" class=\"dataNotFound flex-column\">\r\n <img *ngIf=\"getDisplaySvgPath()\" [src]=\"getDisplaySvgPath()\" class=\"dataNotFound__icon\" alt=\"No data found\" />\r\n <span class=\"dataNotFound__title\">{{ getDisplayTitle() | translate}}</span>\r\n <span class=\"dataNotFound__subtitle\">{{ getDisplaySubtitle() | translate}}</span>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"(dataSource.data?.length > 0 || customizedData) && !pageInfo.hidePagination\" class=\"main-pagination flex-row\">\r\n <ng-container *ngIf=\"enablePagination\">\r\n <div class=\"flex-column flex-100\">\r\n <app-paginator\r\n [currentPage]=\"pageIndex\"\r\n [totalItems]=\"totalElements\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"[5, 10, 25, 50]\"\r\n [mobileLoadMoreIncrement]=\"mobileLoadMoreIncrement\"\r\n [displayedItems]=\"mobileDisplayedItems || dataSource.data.length\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"\r\n (loadMore)=\"onLoadMore($event)\">\r\n </app-paginator>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%;max-width:100%;box-sizing:border-box}.baseTable{width:100%!important;max-width:100%!important;box-sizing:border-box}.flex-row{display:flex;flex-direction:row}.flex-column{display:flex;flex-direction:column;width:100%;max-width:100%;box-sizing:border-box}.flex-100{flex:1 1 100%}.flex-49{flex:0 0 49%}.flex-50{flex:0 0 50%}.align-start{justify-content:flex-start;align-items:flex-start}.align-center{justify-content:center;align-items:center}.align-end{justify-content:flex-end;align-items:flex-end}.gap-0{gap:0}.gap-5{gap:5px}.gap-10{gap:10px}.dataNotFound{display:flex;flex-direction:column;justify-content:center;align-items:center;height:auto;min-height:280px;text-align:center;margin-top:0;padding:40px 0}.dataNotFound__icon{height:auto;width:auto;max-width:200px;max-height:200px;margin-bottom:8px;object-fit:contain}.dataNotFound__title{color:#6a6a6a;font-size:20px;font-weight:700;margin-bottom:4px}.dataNotFound__subtitle{color:#6a6a6a;font-size:20px;font-weight:400}@media (max-width: 960px){.flex-column-sm{flex-direction:column}.align-center-sm{justify-content:center;align-items:flex-start}}.filter-row{display:flex!important;flex-direction:row!important;align-items:center!important;width:100%!important;max-width:100%!important;gap:16px!important;box-sizing:border-box;margin-top:20px;margin-bottom:16px;padding:0;flex-wrap:nowrap!important;min-width:0!important;min-height:48px!important;overflow:visible!important}.filter-row app-filter-builder{flex:1 1 auto!important;min-width:0!important;max-width:none!important;width:auto!important;flex-shrink:1!important;display:flex!important;align-items:center!important;overflow:visible!important}.button-group{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end;gap:8px!important;flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;height:46px!important;white-space:nowrap!important;z-index:1!important}.mainTable{margin-top:0!important}.btn-apply-filter{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:46px!important;min-width:120px!important;padding:0 16px!important;box-shadow:none!important}.btn-apply-filter .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.btn-apply-filter mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.btn-apply-filter span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.btn-apply-filter:hover{background:#fafafa!important}.btn-export{background:#fff!important;border:1px solid #0d4261!important;border-radius:8px!important;height:46px!important;min-width:109px!important;padding:0 16px!important;box-shadow:none!important;margin-bottom:7px!important}.btn-export .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.btn-export mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.btn-export .arrow-icon{font-size:16px;width:16px;height:16px;margin-left:0}.btn-export span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.btn-export:hover{background:#fafafa!important}.arrow-icon{font-size:16px;width:16px;height:16px}@media (max-width: 1024px){.button-group{width:auto}}@media (max-width: 768px){.filter-row{flex-direction:column;align-items:stretch}.button-group{display:none!important}.btn-export{width:100%}}.table-container{width:100%;overflow:hidden;background:#f7f7f7;box-sizing:border-box;display:flex;flex-direction:column}.table-header{display:flex;align-items:center;background:#f7f7f7;border:1px solid #f0eeee;max-height:48px;height:48px;margin-bottom:16px;border-radius:8px;overflow:hidden;width:100%;box-sizing:border-box;min-width:0}.table-header-cell{display:flex;align-items:center;max-height:48px;height:48px;padding:8px 16px;flex:1;min-width:100px;position:sticky;top:0;background:none;z-index:10;box-sizing:border-box}.table-header-cell.has-width{flex:0 0 auto!important;min-width:0!important;max-width:none!important}.table-header-cell:last-child{border-right:none}.table-header-cell.first-cell{border-top-left-radius:8px;border-bottom-left-radius:8px}.table-header-cell.last-cell{border-top-right-radius:8px;border-bottom-right-radius:8px}.table-header-cell.actions-cell{justify-content:center;text-align:center}.table-header-cell.actions-cell .table-header-content{justify-content:center}.table-header-cell.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.table-header-cell.sortable:hover{background:#fafafa}.table-header-content{display:flex;align-items:center;gap:8px;width:100%}.table-header-label{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.sort-icon{font-size:18px;width:18px;height:18px;color:#5c5c5c;display:flex;align-items:center;justify-content:center;transition:color .2s}.sort-icon.sort-asc,.sort-icon.sort-desc{color:#0d4261}.table-body{display:flex;flex-direction:column;gap:8px;background:#f7f7f7}.table-row{display:flex;align-items:center;min-height:48px;background:#fff;border-bottom:1px solid #f0eeee;transition:background-color .2s;border-radius:8px;overflow:hidden;width:100%;box-sizing:border-box;min-width:0}.table-row:hover{background:#fafafa}.table-row--highlight{background:#f0f8ff}.table-row--dark-highlight{background:#e8f4f8}.table-row .table-cell.first-cell{border-top-left-radius:8px;border-bottom-left-radius:8px}.table-row .table-cell.last-cell{border-top-right-radius:8px;border-bottom-right-radius:8px}.table-cell{display:flex;align-items:center;min-height:48px;max-height:none;padding:8px 16px;flex:1;min-width:100px;font-family:Lusail,sans-serif;font-weight:400;font-size:16px;line-height:1.2;color:#000;box-sizing:border-box}.table-cell.has-width{flex:0 0 auto!important;min-width:0!important;max-width:none!important}.table-cell:last-child{border-right:none}.table-cell.actions-cell{justify-content:center;text-align:center}.mobile-cards-container{display:none;flex-direction:column;gap:12px;width:100%;box-sizing:border-box}.mobile-card{background:#fff;border:1px solid #f0eeee;border-radius:8px;padding:12px 20px;display:flex;flex-direction:column;gap:4px;cursor:pointer;transition:background-color .2s;box-sizing:border-box;width:100%}.mobile-card:hover{background:#fafafa}.mobile-card--highlight{background:#f0f8ff}.mobile-card--dark-highlight{background:#e8f4f8}.mobile-card__header{display:flex;align-items:center;justify-content:space-between;height:48px;width:100%;box-sizing:border-box}.mobile-card__header-id{display:flex;flex-direction:column;justify-content:center;flex:1}.mobile-card__id-text{font-family:Lusail,sans-serif;font-weight:700;font-size:14px;line-height:1.2;color:#222;text-align:left;white-space:nowrap}.mobile-card__header-status{display:flex;align-items:center;justify-content:flex-end;flex-shrink:0}.mobile-card__divider{height:.347px;width:100%;background:#f0eeee;margin:0;flex-shrink:0}.mobile-card__body{display:flex;flex-direction:column;gap:0;width:100%;box-sizing:border-box}.mobile-card__row{display:flex;align-items:center;justify-content:space-between;height:40px;width:100%;overflow:hidden;box-sizing:border-box}.mobile-card__row-label{display:flex;flex-direction:column;justify-content:center;flex-shrink:0}.mobile-card__row-label span{font-family:Lusail,sans-serif;font-weight:400;font-size:14px;line-height:1.2;color:#222;white-space:nowrap}.mobile-card__row-value{display:flex;flex-direction:column;justify-content:center;flex-shrink:0;text-align:right}.mobile-card__row-value span{font-family:Lusail,sans-serif;font-weight:400;font-size:14px;line-height:1.2;color:#222;white-space:nowrap}.mobile-card__amount-currency{font-family:Lusail,sans-serif;font-weight:400;font-size:14px;line-height:1.2;color:#222;display:inline-block}.mobile-card__amount-value{font-family:Lusail,sans-serif;font-weight:700;font-size:14px;line-height:1.2;color:#222;display:inline-block;margin-left:6px;margin-right:6px}.mobile-card__actions{border-top:1px solid #f0eeee;padding-top:8px;margin-top:4px;display:flex;align-items:center;justify-content:center;min-height:48px;max-height:48px;width:100%;box-sizing:border-box}@media (max-width: 768px){.table-container{display:none}.mobile-cards-container{display:flex}}@media (min-width: 769px){.mobile-cards-container{display:none}.table-container{display:flex}}:host ::ng-deep button.mat-mdc-button.stateType,:host ::ng-deep button.mdc-button.stateType{white-space:normal!important;height:auto!important;min-height:28px!important;max-width:100%!important;align-items:center!important;justify-content:center!important;cursor:default!important}:host ::ng-deep button.mat-mdc-button.stateType .mdc-button__label,:host ::ng-deep button.mdc-button.stateType .mdc-button__label{white-space:normal!important;display:-webkit-box!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:2!important;line-clamp:2!important;overflow:hidden!important;word-break:break-word!important;line-height:1.25!important;max-width:100%!important;text-align:center!important}@media (max-width: 450px){.mobile-card__header{flex-direction:column;justify-content:flex-start;height:auto;width:100%;box-sizing:border-box;gap:8px}}\n"] }]
3792
- }], ctorParameters: () => [{ type: BackendService }, { type: i2.TranslateService }, { type: ShareDataService }, { type: undefined, decorators: [{
3793
+ }], ctorParameters: () => [{ type: BackendService }, { type: i2.TranslateService }, { type: ShareDataService }, { type: i4$2.BreakpointObserver }, { type: undefined, decorators: [{
3793
3794
  type: Inject,
3794
3795
  args: ['securityManager']
3795
- }] }, { type: i3$3.Router }, { type: i5.LiveAnnouncer }], propDecorators: { filterFields: [{
3796
+ }] }, { type: i3$3.Router }, { type: i2$1.LiveAnnouncer }], propDecorators: { filterFields: [{
3796
3797
  type: Input
3797
3798
  }], noDataFoundSvgPath: [{
3798
3799
  type: Input
@@ -3937,7 +3938,7 @@ class AuditLogComponent {
3937
3938
  });
3938
3939
  }
3939
3940
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuditLogComponent, deps: [{ token: i1.MatDialog }, { token: i3$3.ActivatedRoute }, { token: i3$1.Directionality }, { token: 'securityManager' }, { token: BackendService }], target: i0.ɵɵFactoryTarget.Component }); }
3940
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuditLogComponent, isStandalone: true, selector: "app-audit-log", inputs: { pageInfo: "pageInfo", statusName: "statusName", module: "module", identifier: "identifier", fields: "fields", showHiddenFields: "showHiddenFields" }, providers: [DatePipe], ngImport: i0, template: "<div *ngIf=\"auditRecordId !== null && this.auditLogEntries.length > 0\">\n\n<mat-expansion-panel class=\"location-card\"\n #panel=\"matExpansionPanel\"\n [expanded]=\"true\"\n [hideToggle]=\"true\"\n (opened)=\" panel.open() \"\n (closed)=\" panel.open()\">\n <mat-expansion-panel-header class=\"card-header\" >\n <mat-panel-title>\n <div class=\"title-container\">\n <h3 class=\"card-title\">\n {{ 'audit-log.title' | translate }}\n </h3>\n </div>\n </mat-panel-title>\n\n </mat-expansion-panel-header>\n <div class=\"panel-body\">\n <hr class=\"divider\"/>\n <div class=\"timeline-container\">\n <div *ngFor=\"let auditLog of auditLogEntries; let i = index\" class=\"timeline-item\">\n <div class=\"timeline-marker\">\n <div class=\"timeline-circle\"></div>\n <div *ngIf=\"i !== auditLogEntries.length - 1\" class=\"timeline-line\"></div>\n </div>\n\n <div class=\"timeline-content\">\n <div class=\"log-main-text\">\n <span class=\"action-text\">{{ 'audit-log.user' | translate }}</span>\n <span class=\"actor-name\">{{ auditLog.createdByDisplayName || auditLog.createdBy || ('system' | translate) }}</span>\n <span class=\"action-text\">{{ 'audit-log.at' | translate }}</span>\n <span class=\"log-timestamp-inline\">{{ auditLog.createdOn | date: 'dd MMM, yyyy HH:mm a' }}</span>\n <span class=\"action-text action-highlight\">{{\n 'audit-log.action_' +\n auditLog?.action +\n '_' +\n module\n | translate\n }}</span>\n <ng-container *ngIf=\"statusName && auditLog.action === 'EDIT'\">\n <span class=\"action-text\">{{ 'audit-log.to' | translate }}</span>\n <button [ngClass]=\"auditLog.subject[statusName]\" class=\"stateType\" mat-button>\n {{ pageInfo.labelsSection + '.' + auditLog.subject[statusName] | translate }}\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n\n\n </div>\n</mat-expansion-panel>\n\n</div>\n", styles: [".audit-log-header{font-family:sans-serif;color:#333;margin-bottom:8px;padding-left:10px}.timeline-container{padding:20px;background-color:#fff}.timeline-item{display:flex;margin-bottom:15px;position:relative}.timeline-marker{display:flex;flex-direction:column;align-items:center;margin-right:20px;width:20px;justify-content:center}.timeline-marker .timeline-line{width:1px;background-color:#d1d1d1;flex-grow:1;position:absolute;top:0;height:calc(100% + 80px)}.timeline-circle{width:14px;height:14px;border-radius:50%;border:2px solid #345a7d;background:#fff;z-index:2}.timeline-content{flex-grow:1;background:#fff;border:1px solid #f0f0f0;border-radius:8px;padding:15px 20px;box-shadow:0 2px 4px #0000000d;cursor:pointer;transition:background .2s}.log-main-text{font-size:14px;margin-bottom:0;color:#333;display:flex;flex-wrap:wrap;align-items:baseline;gap:.35em}.log-main-text .actor-name,.log-main-text .target-name{font-weight:800;color:#002c44}.log-main-text .action-text{color:#333}.log-main-text .action-highlight{font-weight:600;color:#002c44}.log-timestamp{font-size:12px;color:#888}.log-timestamp-inline{display:inline;font-size:14px;color:#555;font-weight:500}.location-card{border:1px solid #dcdcdc;border-radius:8px;background:#fff;margin:18px auto;overflow:hidden}.location-card .mat-expansion-panel-header{padding:0 15px}.location-card .mat-expansion-panel-header ::ng-deep .mat-content{margin:0!important}.location-card .panel-body{padding:20px 15px;padding-top:0!important}.location-card .panel-body ::ng-deep app-base-form-canvas .main-form-canvas{margin-top:20px!important}.location-card .panel-description{justify-content:end!important;margin:0!important}.location-card .card-header{display:flex;justify-content:space-between;align-items:center;padding:10px 16px!important}.location-card .card-header .title-container{display:flex;flex-direction:column;gap:8px;align-items:flex-start;justify-content:center}.location-card .card-header .card-title{margin:0;font-size:24px;font-weight:700;line-height:1.2;color:#000;width:fit-content;white-space:nowrap}.location-card .card-header .card-subtitle{margin:0;font-family:lusail-light,sans-serif;font-weight:300;font-size:16px;line-height:1.2;color:#888;width:fit-content}.location-card .card-header .btn-edit{width:120px;min-height:32px!important;border-radius:9999px!important;font-size:16px!important}.location-card .card-header .expand-icon{color:#339dff;font-size:16px}.location-card .divider{border:none;border-top:2px solid var(--primary-color-3nd);margin-bottom:20px;margin-top:0}.flex-auto{flex:1 1 auto;display:flex;flex-direction:column}.row{display:flex;flex-direction:row;width:100%}.gap-20{gap:20px}.buttons-wrapper{display:flex;text-align-last:end;margin:0!important;gap:16px;justify-content:flex-end}.buttons-wrapper .action{min-height:44px!important;min-width:135px!important;width:auto!important}.button-text span{font-size:18px}.button-text mat-icon{font-size:18px!important}.btn-none-background-primary{margin:0!important}@media (max-width: 768px){.desktop-buttons{display:none!important}.desktop-buttons.show-on-mobile{display:flex!important}.mobile-buttons{display:flex;gap:12px;align-items:center;justify-content:flex-end}.btn-download-mobile{width:45px!important;height:44px!important;min-width:45px!important;padding:0!important;border-radius:8px!important;background:#0d4261!important;display:flex;align-items:center;justify-content:center}.btn-download-mobile mat-icon{color:#fff!important;font-size:24px!important;width:24px!important;height:28px!important;margin:0!important}.btn-download-mobile .mdc-button__label{padding:0!important}.btn-menu-mobile{width:44px!important;height:44px!important;min-width:44px!important;padding:0!important;border-radius:8px!important;border:1px solid #3e627b!important;background:#fff!important;display:flex;align-items:center;justify-content:center}.btn-menu-mobile mat-icon{color:#0d4261!important;font-size:24px!important;width:25px!important;height:24px!important;margin:0!important;rotate:90deg}.btn-menu-mobile .mdc-button__label{padding:0!important}}@media (min-width: 769px){.mobile-buttons{display:none!important}}@media (max-width: 600px){::ng-deep .main-form-canvas{display:block!important}}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }] }); }
3941
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuditLogComponent, isStandalone: true, selector: "app-audit-log", inputs: { pageInfo: "pageInfo", statusName: "statusName", module: "module", identifier: "identifier", fields: "fields", showHiddenFields: "showHiddenFields" }, providers: [DatePipe], ngImport: i0, template: "<div *ngIf=\"auditRecordId !== null && this.auditLogEntries.length > 0\">\n\n<mat-expansion-panel class=\"location-card\"\n #panel=\"matExpansionPanel\"\n [expanded]=\"true\"\n [hideToggle]=\"true\"\n (opened)=\" panel.open() \"\n (closed)=\" panel.open()\">\n <mat-expansion-panel-header class=\"card-header\" >\n <mat-panel-title>\n <div class=\"title-container\">\n <h3 class=\"card-title\">\n {{ 'audit-log.title' | translate }}\n </h3>\n </div>\n </mat-panel-title>\n\n </mat-expansion-panel-header>\n <div class=\"panel-body\">\n <hr class=\"divider\"/>\n <div class=\"timeline-container\">\n <div *ngFor=\"let auditLog of auditLogEntries; let i = index\" class=\"timeline-item\">\n <div class=\"timeline-marker\">\n <div class=\"timeline-circle\"></div>\n <div *ngIf=\"i !== auditLogEntries.length - 1\" class=\"timeline-line\"></div>\n </div>\n\n <div class=\"timeline-content\">\n <div class=\"log-main-text\">\n <span class=\"action-text\">{{ 'audit-log.user' | translate }}</span>\n <span class=\"actor-name\">{{ auditLog.createdByDisplayName || auditLog.createdBy || ('system' | translate) }}</span>\n <span class=\"action-text\">{{ 'audit-log.at' | translate }}</span>\n <span class=\"log-timestamp-inline\">{{ auditLog.createdOn | date: 'dd MMM, yyyy HH:mm a' }}</span>\n <span class=\"action-text action-highlight\">{{\n 'audit-log.action_' +\n auditLog?.action +\n '_' +\n module\n | translate\n }}</span>\n <ng-container *ngIf=\"statusName && auditLog.action === 'EDIT'\">\n <span class=\"action-text\">{{ 'audit-log.to' | translate }}</span>\n <button [ngClass]=\"auditLog.subject[statusName]\" class=\"stateType\" mat-button>\n {{ pageInfo.labelsSection + '.' + auditLog.subject[statusName] | translate }}\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n\n\n </div>\n</mat-expansion-panel>\n\n</div>\n", styles: [".audit-log-header{font-family:sans-serif;color:#333;margin-bottom:8px;padding-left:10px}.timeline-container{padding:20px;background-color:#fff}.timeline-item{display:flex;margin-bottom:15px;position:relative}.timeline-marker{display:flex;flex-direction:column;align-items:center;margin-right:20px;width:20px;justify-content:center}.timeline-marker .timeline-line{width:1px;background-color:#d1d1d1;flex-grow:1;position:absolute;top:0;height:calc(100% + 80px)}.timeline-circle{width:14px;height:14px;border-radius:50%;border:2px solid #345a7d;background:#fff;z-index:2}.timeline-content{flex-grow:1;background:#fff;border:1px solid #f0f0f0;border-radius:8px;padding:15px 20px;box-shadow:0 2px 4px #0000000d;cursor:pointer;transition:background .2s}.log-main-text{font-size:14px;margin-bottom:0;color:#333;display:flex;flex-wrap:wrap;align-items:baseline;gap:.35em}.log-main-text .actor-name,.log-main-text .target-name{font-weight:800;color:#002c44}.log-main-text .action-text{color:#333}.log-main-text .action-highlight{font-weight:600;color:#002c44}.log-timestamp{font-size:12px;color:#888}.log-timestamp-inline{display:inline;font-size:14px;color:#555;font-weight:500}.location-card{border:1px solid #dcdcdc;border-radius:8px;background:#fff;margin:18px auto;overflow:hidden}.location-card .mat-expansion-panel-header{padding:0 15px}.location-card .mat-expansion-panel-header ::ng-deep .mat-content{margin:0!important}.location-card .panel-body{padding:20px 15px;padding-top:0!important}.location-card .panel-body ::ng-deep app-base-form-canvas .main-form-canvas{margin-top:20px!important}.location-card .panel-description{justify-content:end!important;margin:0!important}.location-card .card-header{display:flex;justify-content:space-between;align-items:center;padding:10px 16px!important}.location-card .card-header .title-container{display:flex;flex-direction:column;gap:8px;align-items:flex-start;justify-content:center}.location-card .card-header .card-title{margin:0;font-size:24px;font-weight:700;line-height:1.2;color:#000;width:fit-content;white-space:nowrap}.location-card .card-header .card-subtitle{margin:0;font-family:lusail-light,sans-serif;font-weight:300;font-size:16px;line-height:1.2;color:#888;width:fit-content}.location-card .card-header .btn-edit{width:120px;min-height:32px!important;border-radius:9999px!important;font-size:16px!important}.location-card .card-header .expand-icon{color:#339dff;font-size:16px}.location-card .divider{border:none;border-top:2px solid var(--primary-color-3nd);margin-bottom:20px;margin-top:0}.flex-auto{flex:1 1 auto;display:flex;flex-direction:column}.row{display:flex;flex-direction:row;width:100%}.gap-20{gap:20px}.buttons-wrapper{display:flex;text-align-last:end;margin:0!important;gap:16px;justify-content:flex-end}.buttons-wrapper .action{min-height:44px!important;min-width:135px!important;width:auto!important}.button-text span{font-size:18px}.button-text mat-icon{font-size:18px!important}.btn-none-background-primary{margin:0!important}@media (max-width: 768px){.desktop-buttons{display:none!important}.desktop-buttons.show-on-mobile{display:flex!important}.mobile-buttons{display:flex;gap:12px;align-items:center;justify-content:flex-end}.btn-download-mobile{width:45px!important;height:44px!important;min-width:45px!important;padding:0!important;border-radius:8px!important;background:#0d4261!important;display:flex;align-items:center;justify-content:center}.btn-download-mobile mat-icon{color:#fff!important;font-size:24px!important;width:24px!important;height:28px!important;margin:0!important}.btn-download-mobile .mdc-button__label{padding:0!important}.btn-menu-mobile{width:44px!important;height:44px!important;min-width:44px!important;padding:0!important;border-radius:8px!important;border:1px solid #3e627b!important;background:#fff!important;display:flex;align-items:center;justify-content:center}.btn-menu-mobile mat-icon{color:#0d4261!important;font-size:24px!important;width:25px!important;height:24px!important;margin:0!important;rotate:90deg}.btn-menu-mobile .mdc-button__label{padding:0!important}}@media (min-width: 769px){.mobile-buttons{display:none!important}}@media (max-width: 600px){::ng-deep .main-form-canvas{display:block!important}}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }] }); }
3941
3942
  }
3942
3943
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuditLogComponent, decorators: [{
3943
3944
  type: Component,
@@ -4457,7 +4458,7 @@ class EditableBaseTableComponent extends BaseUtils {
4457
4458
  // deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
4458
4459
  // },
4459
4460
  // { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
4460
- ], viewQueries: [{ propertyName: "uploaderComponent", first: true, predicate: ["uploader"], descendants: true }, { propertyName: "fileUpload", first: true, predicate: ["fileUpload"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"baseTable flex-column\">\r\n <div class=\"left-align\">\r\n <app-attachment-uploader #uploader\r\n *ngIf=\"isBulkItemsSupported\"\r\n (fileSelected)=\"handleFileUpload($event)\">\r\n </app-attachment-uploader>\r\n </div>\r\n\r\n <div class=\"flex-row full-width\">\r\n <div class=\"flex-half flex-column align-center-start\">\r\n <app-title-bar [pageTitle]=\"pageInfo.hideTitle ? '' : pageInfo.labelsSection+'.list_title'\"\r\n [titleMode]=\"''\"\r\n [newAction]=\"false\"\r\n [showExtractButton]=\"!pageInfo.hideExtractButton\">\r\n </app-title-bar>\r\n <span class=\"font-small\">{{ 'totalCountItem' | translate }} : {{ this.totalElements }}</span>\r\n </div>\r\n <div class=\"flex-half flex-column align-start-end\">\r\n <mat-chip-listbox #box [attr.aria-label]=\"'BASE_TABLE.documentStatus' | translate\" [multiple]=\"false\" [value]=\"isPending ? 'PENDING' : 'COMPLETED'\" (click)=\"$event.stopPropagation()\" (change)=\"onChipSelectionChange($event, box)\" *ngIf=\"pageInfo.draftSupported\">\r\n <mat-chip-option [selected]=\"!isPending\" [color]=\"'accent'\" value=\"COMPLETED\" (click)=\"$event.stopPropagation()\">\r\n {{ 'finished' | translate }}\r\n </mat-chip-option>\r\n <mat-chip-option [selected]=\"isPending\" [color]=\"'accent'\" value=\"PENDING\" (click)=\"$event.stopPropagation()\">\r\n {{ 'todo' | translate }}\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"showSearch()\">\r\n <div class=\"flex-row full-width\">\r\n <div class=\"flex-80 flex-column align-start-end\">\r\n <app-base-form-canvas class=\"flex-fill\"\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"searchFormFields\"\r\n [editable]=\"true\"\r\n (formUpdated)=\"updateSearchForm($event)\">\r\n </app-base-form-canvas>\r\n </div>\r\n <div class=\"flex-15 flex-column align-start-end\">\r\n <div class=\"flex-row align-center-center gap-8 full-width\">\r\n <button mat-button color=\"primary\" type=\"button\" (click)=\"doSearch()\" id=\"editable-search-btn\">\r\n <mat-icon>search</mat-icon>\r\n {{ 'search' | translate }}\r\n </button>\r\n <button mat-button color=\"primary\" type=\"button\" (click)=\"clearSearch()\" id=\"editable-clear-search-btn\">\r\n <mat-icon>clear</mat-icon>\r\n {{ 'clear' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"flex-row full-width baseTable__detailsColumn\">\r\n <div class=\"flex-full\">\r\n <ng-container *ngIf=\"isLoaded\">\r\n <div class=\"flex-row mainTable gap-0 align-start-start\">\r\n <form [formGroup]=\"formParam\" class=\"flex-fill\">\r\n <table [dataSource]=\"dataFormArray.controls\" class=\"flex-fill\" mat-table matSort>\r\n <ng-container *ngFor=\"let column of this.fields; let i = index\">\r\n <ng-container matColumnDef=\"{{column.property}}\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'equation-builder'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\" mat-cell>\r\n <lib-equation-builder\r\n [form]=\"element\"\r\n [field]=\"column\"\r\n [readOnly]=\"column.readonly\"\r\n [isPending]=\"isPending\"\r\n (valueChanged)=\"handleEquationChange($event, element, column)\">\r\n </lib-equation-builder>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'lookup'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <app-auto-complete\r\n [form]=\"element\"\r\n [field]=\"column\"\r\n [defaultValue]=\"element.get(column.property)?.value\"\r\n (selectedValue)=\"patchLookupValue($event, column.property)\">\r\n </app-auto-complete>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}</th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-label>{{element}}</mat-label>\r\n <mat-select\r\n formControlName=\"{{column.property}}\"\r\n [attr.aria-label]=\"column.label! | translate\"\r\n [multiple]=\"false\"\r\n [(value)]=\"element[column.property]\">\r\n <ng-container>\r\n <mat-option\r\n *ngFor=\"let item of column.listOptions\"\r\n [value]=\"item\">\r\n {{ getOptionValue(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stateType'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ 'action' | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td mainTable__td__text-secondary__td\" mat-cell>\r\n <div class=\"flex-column\">\r\n <div class=\"flex-row full-width\">\r\n <div class=\"flex-third flex-column align-center-center\">\r\n <button mat-button class=\"btn-none-background-primary\"\r\n color=\"primary\"\r\n [disabled]=\"disabledSaveButton(element)\"\r\n (click)=\"fieldButtonEvent(column,element,SAVE)\"\r\n [attr.id]=\"'editable-save-' + (element.value?.id || '')\">\r\n {{ getPositiveWfActionKey(element.value.stateType) | translate }}\r\n </button>\r\n </div>\r\n <div class=\"flex-third flex-column align-center-center\">\r\n <button *ngIf=\"isPending\" mat-button class=\"btn-none-background-primary\"\r\n color=\"accent\"\r\n (click)=\"fieldButtonEvent(column,element,REJECT)\"\r\n [attr.id]=\"'editable-reject-' + (element.value?.id || '')\">\r\n {{ getNegativeWfActionKey(element.value.stateType) | translate }}\r\n </button>\r\n </div>\r\n <div class=\"flex-third flex-column align-center-center\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'year'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <mat-label>{{ labelKey(column) | translate }}</mat-label>\r\n <input matInput\r\n [disabled]=\"column.readonly\"\r\n [readonly]=\"column.readonly\"\r\n [matDatepicker]=\"picker\"\r\n [min]=\"minDate\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker startView=\"multi-year\"\r\n (yearSelected)=\"setMonthAndYear($event, picker, element,column)\"\r\n panelClass=\"example-month-picker\"></mat-datepicker>\r\n\r\n </mat-form-field>\r\n <!-- <mat-form-field class=\"flex-auto\" appearance=\"outline\" fxFlexFill>-->\r\n <!-- <input matInput [formControl]=\"getField(element, column)\">-->\r\n <!-- </mat-form-field>-->\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <!-- Visually hidden label just to trigger the floating label and asterisk -->\r\n <mat-label>\r\n </mat-label>\r\n\r\n <input matInput\r\n type=\"number\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [readonly]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'status'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-checkbox\r\n style=\"padding-bottom: 14px; padding-top: 14px;\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\"\r\n [style.pointer-events]=\"column.readonly ? 'none' : 'auto'\"\r\n [style.opacity]=\"column.readonly ? 0.7 : 1\"\r\n (click)=\"column.readonly ? $event.preventDefault() : null\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <mat-label>\r\n {{ labelKey(column) | translate }}\r\n </mat-label>\r\n <input matInput\r\n type=\"text\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [readonly]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <input matInput\r\n [matDatepicker]=\"xpicker\"\r\n [min]=\"minDate\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [readonly]=\"column.readonly\"\r\n [disabled]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"xpicker\"\r\n [disabled]=\"column.readonly\">\r\n </mat-datepicker-toggle>\r\n <mat-datepicker #xpicker></mat-datepicker>\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <input matInput\r\n [readonly]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [formControl]=\"getField(element, column)\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <tr *matHeaderRowDef=\"visibleColumns\" mat-header-row></tr>\r\n <tr (click)=\"onSelectItem(row)\" (auxclick)=\"openNewTab(row)\"\r\n *matRowDef=\"let row; columns: visibleColumns | paginate:config\"\r\n [attr.id]=\"'editable-row-' + (row?.value?.id || row?.value?.key || '')\"\r\n mat-row></tr>\r\n </table>\r\n </form>\r\n </div>\r\n\r\n <div *ngIf=\"noDataFound && !pageInfo.lazyLoadData\" class=\"flex-row dataNotFound\">\r\n <div class=\"flex-column flex-full\">\r\n <span class=\"dataNotFound__details\">\r\n <mat-icon class=\"dataNotFound__details__icon\">info</mat-icon>\r\n <span>{{ 'dataNotFound' | translate }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-row mainTable\" *ngIf=\"!selectedFileFromUploader\">\r\n <div>\r\n <button *ngIf=\"!isPending && pageInfo.hasAddButton\" mat-button color=\"primary\" type=\"button\"\r\n (click)=\"addNewItem()\" id=\"editable-add-item-btn\">\r\n <mat-icon>add_box</mat-icon>\r\n {{ translationKey | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-row flex-wrap align-center-center main-pagination\" *ngIf=\"totalElements > 0\">\r\n <div class=\"flex-column flex-full\">\r\n <app-paginator [currentPage]=\"pageIndex\" [totalItems]=\"totalElements\" [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"[5, 10, 25, 50]\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></app-paginator>\r\n </div>\r\n <div class=\"flex-column flex-full countItem hide-gt-xs\">\r\n <span class=\"countItem__totalElement\">{{ 'totalCountItem' | translate }} : {{ this.totalElements }}</span>\r\n </div>\r\n <div class=\"flex-column flex-2\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isBulkItemsSupported\" class=\"flex-row gap-10 align-start-start mainTable\">\r\n <div>\r\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"addBulkItems()\" [disabled]=\"shouldDisableBulkAdd()\" id=\"editable-bulk-add-btn\">\r\n <mat-icon>add_box</mat-icon>\r\n {{ 'addAll' | translate }}\r\n </button>\r\n </div>\r\n <div>\r\n <button mat-flat-button color=\"warn\" type=\"button\" [disabled]=\"!hasDataToClear()\" (click)=\"clearBulkItems()\" id=\"editable-bulk-clear-btn\">\r\n <mat-icon>delete</mat-icon>\r\n {{ 'clearAll' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".baseTable{padding:20px}.example-month-picker .mat-calendar-period-button{pointer-events:none}.example-month-picker .mat-calendar-arrow{display:none}.responsive-top-gap{margin-top:20px}@media (max-width: 959px){.responsive-top-gap{margin-top:1px}.baseTable{padding:20px;margin-inline:8px;width:max-content}}.flex-row{display:flex;flex-direction:row}.flex-column{display:flex;flex-direction:column}.flex-half{flex:0 0 50%}.flex-80{flex:0 0 80%}.flex-15{flex:0 0 15%}.flex-2{flex:0 0 2%}.flex-full{flex:0 0 100%}.align-start-start{justify-content:flex-start;align-items:flex-start}.align-start-end{justify-content:flex-end;align-items:flex-start}.align-center-start{justify-content:flex-start;align-items:center}.align-center-center{justify-content:center;align-items:center}.align-end-start{justify-content:flex-start;align-items:flex-end}.align-end-end{justify-content:flex-end;align-items:flex-end}.gap-8{gap:8px}.gap-10{gap:10px}.gap-0{gap:0px}@media (max-width: 959px){.flex-column.lt-md{flex-direction:column}.flex-row.lt-md{flex-direction:row}.flex-full.lt-md{flex:0 0 100%}.align-center-center.lt-md{justify-content:center;align-items:center}}@media (max-width: 599px){.flex-hide.gt-xs{display:none!important}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i7.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "ngmodule", type: NgxPaginationModule }, { kind: "pipe", type: i9$1.PaginatePipe, name: "paginate" }, { kind: "component", type: MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "component", type: MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: AutoCompleteComponent, selector: "app-auto-complete", inputs: ["field", "form", "defaultValue", "readonly", "supportingAttributes"], outputs: ["selectedValue"] }, { kind: "component", type: MatFormField$2, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: MatLabel$1, selector: "mat-label" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: PaginatorComponent, selector: "app-paginator", inputs: ["currentPage", "totalItems", "pageSize", "pageSizeOptions", "mobileLoadMoreIncrement", "displayedItems"], outputs: ["pageChange", "pageSizeChange", "loadMore"] }, { kind: "component", type: AttachmentUploaderComponent, selector: "app-attachment-uploader", inputs: ["acceptedTypes", "ariaDescribedBy"], outputs: ["fileSelected"] }, { kind: "component", type: EquationBuilderComponent, selector: "lib-equation-builder", inputs: ["form", "field", "isPending", "readOnly"], outputs: ["valueChanged"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], animations: [] }); }
4461
+ ], viewQueries: [{ propertyName: "uploaderComponent", first: true, predicate: ["uploader"], descendants: true }, { propertyName: "fileUpload", first: true, predicate: ["fileUpload"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"baseTable flex-column\">\r\n <div class=\"left-align\">\r\n <app-attachment-uploader #uploader\r\n *ngIf=\"isBulkItemsSupported\"\r\n (fileSelected)=\"handleFileUpload($event)\">\r\n </app-attachment-uploader>\r\n </div>\r\n\r\n <div class=\"flex-row full-width\">\r\n <div class=\"flex-half flex-column align-center-start\">\r\n <app-title-bar [pageTitle]=\"pageInfo.hideTitle ? '' : pageInfo.labelsSection+'.list_title'\"\r\n [titleMode]=\"''\"\r\n [newAction]=\"false\"\r\n [showExtractButton]=\"!pageInfo.hideExtractButton\">\r\n </app-title-bar>\r\n <span class=\"font-small\">{{ 'totalCountItem' | translate }} : {{ this.totalElements }}</span>\r\n </div>\r\n <div class=\"flex-half flex-column align-start-end\">\r\n <mat-chip-listbox #box [attr.aria-label]=\"'BASE_TABLE.documentStatus' | translate\" [multiple]=\"false\" [value]=\"isPending ? 'PENDING' : 'COMPLETED'\" (click)=\"$event.stopPropagation()\" (change)=\"onChipSelectionChange($event, box)\" *ngIf=\"pageInfo.draftSupported\">\r\n <mat-chip-option [selected]=\"!isPending\" [color]=\"'accent'\" value=\"COMPLETED\" (click)=\"$event.stopPropagation()\">\r\n {{ 'finished' | translate }}\r\n </mat-chip-option>\r\n <mat-chip-option [selected]=\"isPending\" [color]=\"'accent'\" value=\"PENDING\" (click)=\"$event.stopPropagation()\">\r\n {{ 'todo' | translate }}\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"showSearch()\">\r\n <div class=\"flex-row full-width\">\r\n <div class=\"flex-80 flex-column align-start-end\">\r\n <app-base-form-canvas class=\"flex-fill\"\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"searchFormFields\"\r\n [editable]=\"true\"\r\n (formUpdated)=\"updateSearchForm($event)\">\r\n </app-base-form-canvas>\r\n </div>\r\n <div class=\"flex-15 flex-column align-start-end\">\r\n <div class=\"flex-row align-center-center gap-8 full-width\">\r\n <button mat-button color=\"primary\" type=\"button\" (click)=\"doSearch()\" id=\"editable-search-btn\">\r\n <mat-icon>search</mat-icon>\r\n {{ 'search' | translate }}\r\n </button>\r\n <button mat-button color=\"primary\" type=\"button\" (click)=\"clearSearch()\" id=\"editable-clear-search-btn\">\r\n <mat-icon>clear</mat-icon>\r\n {{ 'clear' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"flex-row full-width baseTable__detailsColumn\">\r\n <div class=\"flex-full\">\r\n <ng-container *ngIf=\"isLoaded\">\r\n <div class=\"flex-row mainTable gap-0 align-start-start\">\r\n <form [formGroup]=\"formParam\" class=\"flex-fill\">\r\n <table [dataSource]=\"dataFormArray.controls\" class=\"flex-fill\" mat-table matSort>\r\n <ng-container *ngFor=\"let column of this.fields; let i = index\">\r\n <ng-container matColumnDef=\"{{column.property}}\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'equation-builder'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\" mat-cell>\r\n <lib-equation-builder\r\n [form]=\"element\"\r\n [field]=\"column\"\r\n [readOnly]=\"column.readonly\"\r\n [isPending]=\"isPending\"\r\n (valueChanged)=\"handleEquationChange($event, element, column)\">\r\n </lib-equation-builder>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'lookup'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <app-auto-complete\r\n [form]=\"element\"\r\n [field]=\"column\"\r\n [defaultValue]=\"element.get(column.property)?.value\"\r\n (selectedValue)=\"patchLookupValue($event, column.property)\">\r\n </app-auto-complete>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}</th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-label>{{element}}</mat-label>\r\n <mat-select\r\n formControlName=\"{{column.property}}\"\r\n [attr.aria-label]=\"column.label! | translate\"\r\n [multiple]=\"false\"\r\n [(value)]=\"element[column.property]\">\r\n <ng-container>\r\n <mat-option\r\n *ngFor=\"let item of column.listOptions\"\r\n [value]=\"item\">\r\n {{ getOptionValue(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stateType'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ 'action' | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td mainTable__td__text-secondary__td\" mat-cell>\r\n <div class=\"flex-column\">\r\n <div class=\"flex-row full-width\">\r\n <div class=\"flex-third flex-column align-center-center\">\r\n <button mat-button class=\"btn-none-background-primary\"\r\n color=\"primary\"\r\n [disabled]=\"disabledSaveButton(element)\"\r\n (click)=\"fieldButtonEvent(column,element,SAVE)\"\r\n [attr.id]=\"'editable-save-' + (element.value?.id || '')\">\r\n {{ getPositiveWfActionKey(element.value.stateType) | translate }}\r\n </button>\r\n </div>\r\n <div class=\"flex-third flex-column align-center-center\">\r\n <button *ngIf=\"isPending\" mat-button class=\"btn-none-background-primary\"\r\n color=\"accent\"\r\n (click)=\"fieldButtonEvent(column,element,REJECT)\"\r\n [attr.id]=\"'editable-reject-' + (element.value?.id || '')\">\r\n {{ getNegativeWfActionKey(element.value.stateType) | translate }}\r\n </button>\r\n </div>\r\n <div class=\"flex-third flex-column align-center-center\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'year'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <mat-label>{{ labelKey(column) | translate }}</mat-label>\r\n <input matInput\r\n [disabled]=\"column.readonly\"\r\n [readonly]=\"column.readonly\"\r\n [matDatepicker]=\"picker\"\r\n [min]=\"minDate\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker startView=\"multi-year\"\r\n (yearSelected)=\"setMonthAndYear($event, picker, element,column)\"\r\n panelClass=\"example-month-picker\"></mat-datepicker>\r\n\r\n </mat-form-field>\r\n <!-- <mat-form-field class=\"flex-auto\" appearance=\"outline\" fxFlexFill>-->\r\n <!-- <input matInput [formControl]=\"getField(element, column)\">-->\r\n <!-- </mat-form-field>-->\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <!-- Visually hidden label just to trigger the floating label and asterisk -->\r\n <mat-label>\r\n </mat-label>\r\n\r\n <input matInput\r\n type=\"number\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [readonly]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'status'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-checkbox\r\n style=\"padding-bottom: 14px; padding-top: 14px;\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\"\r\n [style.pointer-events]=\"column.readonly ? 'none' : 'auto'\"\r\n [style.opacity]=\"column.readonly ? 0.7 : 1\"\r\n (click)=\"column.readonly ? $event.preventDefault() : null\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <mat-label>\r\n {{ labelKey(column) | translate }}\r\n </mat-label>\r\n <input matInput\r\n type=\"text\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [readonly]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <input matInput\r\n [matDatepicker]=\"xpicker\"\r\n [min]=\"minDate\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [readonly]=\"column.readonly\"\r\n [disabled]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"xpicker\"\r\n [disabled]=\"column.readonly\">\r\n </mat-datepicker-toggle>\r\n <mat-datepicker #xpicker></mat-datepicker>\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <input matInput\r\n [readonly]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [formControl]=\"getField(element, column)\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <tr *matHeaderRowDef=\"visibleColumns\" mat-header-row></tr>\r\n <tr (click)=\"onSelectItem(row)\" (auxclick)=\"openNewTab(row)\"\r\n *matRowDef=\"let row; columns: visibleColumns | paginate:config\"\r\n [attr.id]=\"'editable-row-' + (row?.value?.id || row?.value?.key || '')\"\r\n mat-row></tr>\r\n </table>\r\n </form>\r\n </div>\r\n\r\n <div *ngIf=\"noDataFound && !pageInfo.lazyLoadData\" class=\"flex-row dataNotFound\">\r\n <div class=\"flex-column flex-full\">\r\n <span class=\"dataNotFound__details\">\r\n <mat-icon class=\"dataNotFound__details__icon\">info</mat-icon>\r\n <span>{{ 'dataNotFound' | translate }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-row mainTable\" *ngIf=\"!selectedFileFromUploader\">\r\n <div>\r\n <button *ngIf=\"!isPending && pageInfo.hasAddButton\" mat-button color=\"primary\" type=\"button\"\r\n (click)=\"addNewItem()\" id=\"editable-add-item-btn\">\r\n <mat-icon>add_box</mat-icon>\r\n {{ translationKey | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-row flex-wrap align-center-center main-pagination\" *ngIf=\"totalElements > 0\">\r\n <div class=\"flex-column flex-full\">\r\n <app-paginator [currentPage]=\"pageIndex\" [totalItems]=\"totalElements\" [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"[5, 10, 25, 50]\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></app-paginator>\r\n </div>\r\n <div class=\"flex-column flex-full countItem hide-gt-xs\">\r\n <span class=\"countItem__totalElement\">{{ 'totalCountItem' | translate }} : {{ this.totalElements }}</span>\r\n </div>\r\n <div class=\"flex-column flex-2\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isBulkItemsSupported\" class=\"flex-row gap-10 align-start-start mainTable\">\r\n <div>\r\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"addBulkItems()\" [disabled]=\"shouldDisableBulkAdd()\" id=\"editable-bulk-add-btn\">\r\n <mat-icon>add_box</mat-icon>\r\n {{ 'addAll' | translate }}\r\n </button>\r\n </div>\r\n <div>\r\n <button mat-flat-button color=\"warn\" type=\"button\" [disabled]=\"!hasDataToClear()\" (click)=\"clearBulkItems()\" id=\"editable-bulk-clear-btn\">\r\n <mat-icon>delete</mat-icon>\r\n {{ 'clearAll' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".baseTable{padding:20px}.example-month-picker .mat-calendar-period-button{pointer-events:none}.example-month-picker .mat-calendar-arrow{display:none}.responsive-top-gap{margin-top:20px}@media (max-width: 959px){.responsive-top-gap{margin-top:1px}.baseTable{padding:20px;margin-inline:8px;width:max-content}}.flex-row{display:flex;flex-direction:row}.flex-column{display:flex;flex-direction:column}.flex-half{flex:0 0 50%}.flex-80{flex:0 0 80%}.flex-15{flex:0 0 15%}.flex-2{flex:0 0 2%}.flex-full{flex:0 0 100%}.align-start-start{justify-content:flex-start;align-items:flex-start}.align-start-end{justify-content:flex-end;align-items:flex-start}.align-center-start{justify-content:flex-start;align-items:center}.align-center-center{justify-content:center;align-items:center}.align-end-start{justify-content:flex-start;align-items:flex-end}.align-end-end{justify-content:flex-end;align-items:flex-end}.gap-8{gap:8px}.gap-10{gap:10px}.gap-0{gap:0px}@media (max-width: 959px){.flex-column.lt-md{flex-direction:column}.flex-row.lt-md{flex-direction:row}.flex-full.lt-md{flex:0 0 100%}.align-center-center.lt-md{justify-content:center;align-items:center}}@media (max-width: 599px){.flex-hide.gt-xs{display:none!important}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i7$1.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "ngmodule", type: NgxPaginationModule }, { kind: "pipe", type: i9$1.PaginatePipe, name: "paginate" }, { kind: "component", type: MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "component", type: MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: AutoCompleteComponent, selector: "app-auto-complete", inputs: ["field", "form", "defaultValue", "readonly", "supportingAttributes"], outputs: ["selectedValue"] }, { kind: "component", type: MatFormField$2, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: MatLabel$1, selector: "mat-label" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: PaginatorComponent, selector: "app-paginator", inputs: ["currentPage", "totalItems", "pageSize", "pageSizeOptions", "mobileLoadMoreIncrement", "displayedItems"], outputs: ["pageChange", "pageSizeChange", "loadMore"] }, { kind: "component", type: AttachmentUploaderComponent, selector: "app-attachment-uploader", inputs: ["acceptedTypes", "ariaDescribedBy"], outputs: ["fileSelected"] }, { kind: "component", type: EquationBuilderComponent, selector: "lib-equation-builder", inputs: ["form", "field", "isPending", "readOnly"], outputs: ["valueChanged"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], animations: [] }); }
4461
4462
  }
4462
4463
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditableBaseTableComponent, decorators: [{
4463
4464
  type: Component,
@@ -4811,7 +4812,7 @@ class BaseFormComponent extends BaseUtils {
4811
4812
  return (!this.isPending && element.stateType == 'PENDING') && this.pageInfo.draftSupported;
4812
4813
  }
4813
4814
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFormComponent, deps: [{ token: i1.MatDialog }, { token: i3$3.ActivatedRoute }, { token: i3$3.Router }, { token: i3$1.Directionality }, { token: i1$1.Location }, { token: 'securityManager' }, { token: BackendService }], target: i0.ɵɵFactoryTarget.Component }); }
4814
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BaseFormComponent, isStandalone: true, selector: "app-base-form", inputs: { pageInfo: "pageInfo", fields: "fields", errors: "errors", editable: "editable", itemId: "itemId", hideBackButton: "hideBackButton" }, outputs: { actionResultEmitter: "actionResultEmitter", formUpdated: "formUpdated", itemLoaded: "itemLoaded", extraAction: "extraAction", hyperTextEvent: "hyperTextEvent" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"page-container\">\r\n\r\n <div class=\"row full-width mt-2vh\">\r\n <div class=\"column full-width\">\r\n <app-title-bar\r\n [pageTitle]=\"getTitle()\"\r\n [newAction]=\"false\"\r\n [hideBackButton]=\"hideBackButton\">\r\n </app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editable\"\r\n [errors]=\"errors\"\r\n [item]=\"item\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"hasWfPositivePermission()\" color=\"primary\" mat-flat-button\r\n (click)=\"doSaveApproveAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-positive-btn\">\r\n {{ getPositiveWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"hasWfNegativePermission()\" color=\"second\" mat-raised-button\r\n (click)=\"doCancelRejectAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-negative-btn\">\r\n {{ getNegativeWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"pageInfo.hideExtractButton === false && itemId > 0 && editable\" color=\"primary\" mat-raised-button\r\n (click)=\"doExtraAction()\"\r\n class=\"action-button\"\r\n id=\"base-form-extra-btn\">\r\n {{ pageInfo.labelsSection + \".\" + \"EXTRA_BUTTON_NAME\" | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!pageInfo.hideAuditLog\">\r\n <div class=\"row main-form-canvas mt-4vh pb-5vh\">\r\n <div class=\"column flex-95\">\r\n <app-audit-log [pageInfo]=\"pageInfo\" [fields]=\"fields\"></app-audit-log>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n", styles: [".page-container{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;gap:10px;width:100%;flex-wrap:wrap}.column{display:flex;flex-direction:column}.full-width{width:100%}.flex-49{flex:0 0 49%}.flex-95{flex:0 0 95%}.row-center-start{align-items:center;justify-content:flex-start}.mt-2vh{margin-top:2vh}.mt-3vh{margin-top:3vh}.mt-4vh{margin-top:4vh}.pb-5vh{padding-bottom:5vh}.action-button{font-weight:700;min-width:140px;max-width:200px;margin:0 10px}@media (max-width: 960px){.flex-49,.flex-95{flex:1 1 100%}}@media (max-width: 600px){.row{flex-direction:column;align-items:center}.action-button{width:100%;max-width:300px;margin:5px 0}}\n"], dependencies: [{ kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: AuditLogComponent, selector: "app-audit-log", inputs: ["pageInfo", "statusName", "module", "identifier", "fields", "showHiddenFields"] }] }); }
4815
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BaseFormComponent, isStandalone: true, selector: "app-base-form", inputs: { pageInfo: "pageInfo", fields: "fields", errors: "errors", editable: "editable", itemId: "itemId", hideBackButton: "hideBackButton" }, outputs: { actionResultEmitter: "actionResultEmitter", formUpdated: "formUpdated", itemLoaded: "itemLoaded", extraAction: "extraAction", hyperTextEvent: "hyperTextEvent" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"page-container\">\r\n\r\n <div class=\"row full-width mt-2vh\">\r\n <div class=\"column full-width\">\r\n <app-title-bar\r\n [pageTitle]=\"getTitle()\"\r\n [newAction]=\"false\"\r\n [hideBackButton]=\"hideBackButton\">\r\n </app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editable\"\r\n [errors]=\"errors\"\r\n [item]=\"item\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"hasWfPositivePermission()\" color=\"primary\" mat-flat-button\r\n (click)=\"doSaveApproveAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-positive-btn\">\r\n {{ getPositiveWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"hasWfNegativePermission()\" color=\"second\" mat-raised-button\r\n (click)=\"doCancelRejectAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-negative-btn\">\r\n {{ getNegativeWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"pageInfo.hideExtractButton === false && itemId > 0 && editable\" color=\"primary\" mat-raised-button\r\n (click)=\"doExtraAction()\"\r\n class=\"action-button\"\r\n id=\"base-form-extra-btn\">\r\n {{ pageInfo.labelsSection + \".\" + \"EXTRA_BUTTON_NAME\" | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!pageInfo.hideAuditLog\">\r\n <div class=\"row main-form-canvas mt-4vh pb-5vh\">\r\n <div class=\"column flex-95\">\r\n <app-audit-log [pageInfo]=\"pageInfo\" [fields]=\"fields\"></app-audit-log>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n", styles: [".page-container{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;gap:10px;width:100%;flex-wrap:wrap}.column{display:flex;flex-direction:column}.full-width{width:100%}.flex-49{flex:0 0 49%}.flex-95{flex:0 0 95%}.row-center-start{align-items:center;justify-content:flex-start}.mt-2vh{margin-top:2vh}.mt-3vh{margin-top:3vh}.mt-4vh{margin-top:4vh}.pb-5vh{padding-bottom:5vh}.action-button{font-weight:700;min-width:140px;max-width:200px;margin:0 10px}@media (max-width: 960px){.flex-49,.flex-95{flex:1 1 100%}}@media (max-width: 600px){.row{flex-direction:column;align-items:center}.action-button{width:100%;max-width:300px;margin:5px 0}}\n"], dependencies: [{ kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: AuditLogComponent, selector: "app-audit-log", inputs: ["pageInfo", "statusName", "module", "identifier", "fields", "showHiddenFields"] }] }); }
4815
4816
  }
4816
4817
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFormComponent, decorators: [{
4817
4818
  type: Component,
@@ -5521,7 +5522,7 @@ class ReportFormComponent {
5521
5522
  return !groupByValues.some(v => value.includes(v) && value.length >= v.length);
5522
5523
  }
5523
5524
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportFormComponent, deps: [{ token: i2.TranslateService }, { token: BackendService }, { token: i3$3.ActivatedRoute }, { token: i0.Injector }, { token: i3$3.Router }, { token: i3$3.ActivatedRoute }, { token: i3$1.Directionality }, { token: i1.MatDialog }, { token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
5524
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ReportFormComponent, isStandalone: true, selector: "app-report-form", inputs: { showDetails: "showDetails", showExtractButton: "showExtractButton", columns: "columns", actionRequestCallback: "actionRequestCallback", enrichDrillDownReportRequest: "enrichDrillDownReportRequest", enrichHyperLinkReportRequest: "enrichHyperLinkReportRequest", enrichJuniorReportRequest: "enrichJuniorReportRequest" }, outputs: { userAction: "userAction" }, ngImport: i0, template: "<div class=\"column full-width\">\r\n\r\n <div class=\"row align-start-center\" style=\"margin-bottom: 10px;\">\r\n <app-title-bar [pageTitle]=\"getTitle()\" [newAction]=\"false\"></app-title-bar>\r\n\r\n <mat-icon\r\n *ngIf=\"pageInfo?.hasHint\"\r\n role=\"img\"\r\n [attr.aria-label]=\"(pageInfo.labelsSection + '.hint') | translate\"\r\n [matTooltip]=\"pageInfo.labelsSection + '.hint' | translate\"\r\n matTooltipPosition=\"right\"\r\n color=\"primary\"\r\n class=\"hint-icon\"\r\n matTooltipClass=\"custom-tooltip\">\r\n help_outline\r\n </mat-icon>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"isEditable\"\r\n [errors]=\"errors\"\r\n [item]=\"this.reportForm?.value || {}\"\r\n (formUpdated)=\"updateForm($event)\"\r\n ></app-base-form-canvas>\r\n\r\n <br><br>\r\n\r\n <div class=\"column\">\r\n <div class=\"row gap-10 responsive-row\">\r\n <button *ngIf=\"activeLevel === 1\" color=\"primary\" mat-flat-button (click)=\"doAction(x)\" [disabled]=\"!isValidForm()\" id=\"report-generate-btn\">\r\n {{ 'REPORTS.generate' | translate }}\r\n </button>\r\n\r\n <button mat-raised-button [matMenuTriggerFor]=\"menu\" [disabled]=\"getIsEmptyList()\" color=\"primary\" id=\"report-extract-trigger\">\r\n {{ 'extract' | translate }}\r\n <mat-icon class=\"expand_more actionButton__expand\">expand_more</mat-icon>\r\n </button>\r\n\r\n <button mat-flat-button (click)=\"clear()\" [disabled]=\"isFormEmpty() || activeLevel > 1\" id=\"report-clear-btn\">\r\n {{ 'REPORTS.clear' | translate }}\r\n </button>\r\n\r\n <button *ngIf=\"activeLevel === 1 && drillDownEnabled()\" color=\"warn\" mat-flat-button (click)=\"drillDown()\" id=\"report-drilldown-btn\">\r\n {{ drillDownLabel() | translate }}\r\n </button>\r\n\r\n <button *ngIf=\"activeLevel > 1 && backButtonEnabled\" color=\"warn\" mat-flat-button (click)=\"goUp()\" id=\"report-up-btn\">\r\n {{ 'REPORTS.up' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"activeLevel >= 1\" class=\"main-form-canvas row align-start-start responsive-table\" style=\"margin-top: 3vh;\">\r\n <div class=\"column full-width\">\r\n <app-base-table\r\n *ngIf=\"activeLevel === 1\"\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columnsDefinition\"\r\n [enforceRefresh]=\"reloadData\"\r\n id=\"parent\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n\r\n <app-base-table\r\n *ngIf=\"activeLevel === 2\"\r\n [pageInfo]=\"drillDownPageInfo\"\r\n [columns]=\"drillDownColumns\"\r\n id=\"child\"\r\n [reportRequest]=\"childReportRequest\"\r\n (userAction)=\"emitJuniorAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n\r\n <app-base-table\r\n *ngIf=\"activeLevel === 3\"\r\n [pageInfo]=\"juniorPageInfo\"\r\n [columns]=\"juniorColumns\"\r\n id=\"junior\"\r\n [reportRequest]=\"juniorReportRequest\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<mat-menu #menu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item *ngFor=\"let type of types\" (click)=\"extractReport(type)\" [attr.id]=\"'report-extract-item-' + type\">\r\n {{ type }}\r\n </button>\r\n</mat-menu>\r\n", styles: [".column{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;width:100%}.align-start-center{align-items:center;justify-content:flex-start}.align-start-start{align-items:flex-start;justify-content:flex-start}.gap-10>*+*{margin-left:10px}.full-width{width:100%}.hint-icon{cursor:pointer;margin-left:10px}.responsive-row{flex-wrap:wrap}@media (max-width: 960px){.responsive-row{flex-direction:column;align-items:flex-start}}@media (max-width: 600px){.responsive-table{justify-content:center}}\n"], dependencies: [{ kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: BaseTableComponent, selector: "app-base-table", inputs: ["filterFields", "noDataFoundSvgPath", "noDataFoundTitle", "noDataFoundSubtitle", "noResultSvgPath", "noResultTitle", "noResultSubtitle", "pageInfo", "enablePagination", "mobilePageSize", "mobileLoadMoreIncrement", "data", "listAction", "extraActions", "buttonsDisplayMode", "columns", "filters", "pathParam", "extraButton", "enforceRefresh", "isPending", "trigger", "reportRequest", "separateEndpointData", "manageablePages", "totalPagesCount", "currentPageIndex", "customizedData"], outputs: ["buttonClicked", "pageChange", "userAction", "hyperLinkAction", "extraAction", "selectedColumn", "listActionClicked", "showDialog", "clickRoutePage"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
5525
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ReportFormComponent, isStandalone: true, selector: "app-report-form", inputs: { showDetails: "showDetails", showExtractButton: "showExtractButton", columns: "columns", actionRequestCallback: "actionRequestCallback", enrichDrillDownReportRequest: "enrichDrillDownReportRequest", enrichHyperLinkReportRequest: "enrichHyperLinkReportRequest", enrichJuniorReportRequest: "enrichJuniorReportRequest" }, outputs: { userAction: "userAction" }, ngImport: i0, template: "<div class=\"column full-width\">\r\n\r\n <div class=\"row align-start-center\" style=\"margin-bottom: 10px;\">\r\n <app-title-bar [pageTitle]=\"getTitle()\" [newAction]=\"false\"></app-title-bar>\r\n\r\n <mat-icon\r\n *ngIf=\"pageInfo?.hasHint\"\r\n role=\"img\"\r\n [attr.aria-label]=\"(pageInfo.labelsSection + '.hint') | translate\"\r\n [matTooltip]=\"pageInfo.labelsSection + '.hint' | translate\"\r\n matTooltipPosition=\"right\"\r\n color=\"primary\"\r\n class=\"hint-icon\"\r\n matTooltipClass=\"custom-tooltip\">\r\n help_outline\r\n </mat-icon>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"isEditable\"\r\n [errors]=\"errors\"\r\n [item]=\"this.reportForm?.value || {}\"\r\n (formUpdated)=\"updateForm($event)\"\r\n ></app-base-form-canvas>\r\n\r\n <br><br>\r\n\r\n <div class=\"column\">\r\n <div class=\"row gap-10 responsive-row\">\r\n <button *ngIf=\"activeLevel === 1\" color=\"primary\" mat-flat-button (click)=\"doAction(x)\" [disabled]=\"!isValidForm()\" id=\"report-generate-btn\">\r\n {{ 'REPORTS.generate' | translate }}\r\n </button>\r\n\r\n <button mat-raised-button [matMenuTriggerFor]=\"menu\" [disabled]=\"getIsEmptyList()\" color=\"primary\" id=\"report-extract-trigger\">\r\n {{ 'extract' | translate }}\r\n <mat-icon class=\"expand_more actionButton__expand\">expand_more</mat-icon>\r\n </button>\r\n\r\n <button mat-flat-button (click)=\"clear()\" [disabled]=\"isFormEmpty() || activeLevel > 1\" id=\"report-clear-btn\">\r\n {{ 'REPORTS.clear' | translate }}\r\n </button>\r\n\r\n <button *ngIf=\"activeLevel === 1 && drillDownEnabled()\" color=\"warn\" mat-flat-button (click)=\"drillDown()\" id=\"report-drilldown-btn\">\r\n {{ drillDownLabel() | translate }}\r\n </button>\r\n\r\n <button *ngIf=\"activeLevel > 1 && backButtonEnabled\" color=\"warn\" mat-flat-button (click)=\"goUp()\" id=\"report-up-btn\">\r\n {{ 'REPORTS.up' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"activeLevel >= 1\" class=\"main-form-canvas row align-start-start responsive-table\" style=\"margin-top: 3vh;\">\r\n <div class=\"column full-width\">\r\n <app-base-table\r\n *ngIf=\"activeLevel === 1\"\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columnsDefinition\"\r\n [enforceRefresh]=\"reloadData\"\r\n id=\"parent\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n\r\n <app-base-table\r\n *ngIf=\"activeLevel === 2\"\r\n [pageInfo]=\"drillDownPageInfo\"\r\n [columns]=\"drillDownColumns\"\r\n id=\"child\"\r\n [reportRequest]=\"childReportRequest\"\r\n (userAction)=\"emitJuniorAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n\r\n <app-base-table\r\n *ngIf=\"activeLevel === 3\"\r\n [pageInfo]=\"juniorPageInfo\"\r\n [columns]=\"juniorColumns\"\r\n id=\"junior\"\r\n [reportRequest]=\"juniorReportRequest\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<mat-menu #menu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item *ngFor=\"let type of types\" (click)=\"extractReport(type)\" [attr.id]=\"'report-extract-item-' + type\">\r\n {{ type }}\r\n </button>\r\n</mat-menu>\r\n", styles: [".column{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;width:100%}.align-start-center{align-items:center;justify-content:flex-start}.align-start-start{align-items:flex-start;justify-content:flex-start}.gap-10>*+*{margin-left:10px}.full-width{width:100%}.hint-icon{cursor:pointer;margin-left:10px}.responsive-row{flex-wrap:wrap}@media (max-width: 960px){.responsive-row{flex-direction:column;align-items:flex-start}}@media (max-width: 600px){.responsive-table{justify-content:center}}\n"], dependencies: [{ kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: BaseTableComponent, selector: "app-base-table", inputs: ["filterFields", "noDataFoundSvgPath", "noDataFoundTitle", "noDataFoundSubtitle", "noResultSvgPath", "noResultTitle", "noResultSubtitle", "pageInfo", "enablePagination", "mobilePageSize", "mobileLoadMoreIncrement", "data", "listAction", "extraActions", "buttonsDisplayMode", "columns", "filters", "pathParam", "extraButton", "enforceRefresh", "isPending", "trigger", "reportRequest", "separateEndpointData", "manageablePages", "totalPagesCount", "currentPageIndex", "customizedData"], outputs: ["buttonClicked", "pageChange", "userAction", "hyperLinkAction", "extraAction", "selectedColumn", "listActionClicked", "showDialog", "clickRoutePage"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
5525
5526
  }
5526
5527
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportFormComponent, decorators: [{
5527
5528
  type: Component,
@@ -5981,7 +5982,7 @@ class ActivityReportFormComponent {
5981
5982
  return !groupByValues.some(v => value.includes(v) && value.length >= v.length);
5982
5983
  }
5983
5984
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityReportFormComponent, deps: [{ token: i2.TranslateService }, { token: BackendService }, { token: i3$3.ActivatedRoute }, { token: i0.Injector }, { token: i3$3.Router }, { token: i3$3.ActivatedRoute }, { token: i1.MatDialog }, { token: i3$1.Directionality }, { token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
5984
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActivityReportFormComponent, isStandalone: true, selector: "app-report-form", inputs: { showDetails: "showDetails", showExtractButton: "showExtractButton", columns: "columns", actionRequestCallback: "actionRequestCallback", enrichDrillDownReportRequest: "enrichDrillDownReportRequest", enrichHyperLinkReportRequest: "enrichHyperLinkReportRequest", enrichJuniorReportRequest: "enrichJuniorReportRequest" }, outputs: { userAction: "userAction" }, ngImport: i0, template: "<div class=\"page-container\">\r\n\r\n <div class=\"row row-center-start mb-10px full-width\">\r\n <app-title-bar [pageTitle]=\"getTitle()\" [newAction]=\"false\"></app-title-bar>\r\n <mat-icon *ngIf=\"pageInfo?.hasHint\"\r\n [matTooltip]=\"pageInfo.labelsSection + '.hint' | translate\"\r\n matTooltipPosition=\"right\"\r\n color=\"primary\"\r\n class=\"help-icon\"\r\n matTooltipClass=\"custom-tooltip\">\r\n help_outline\r\n </mat-icon>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"isEditable\"\r\n [errors]=\"errors\"\r\n [item]=\"reportForm?.value || {}\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"activeLevel === 1\" color=\"primary\" mat-flat-button (click)=\"doAction(x)\"\r\n [disabled]=\"!isValidForm()\" class=\"action-button\" id=\"activity-generate-btn\">\r\n {{ 'REPORTS.generate' | translate }}\r\n </button>\r\n <button mat-raised-button [matMenuTriggerFor]=\"menu\" [disabled]=\"getIsEmptyList()\"\r\n color=\"primary\" class=\"btn-none-background-primary action-button\" id=\"activity-extract-trigger\">\r\n {{ 'extract' | translate }}\r\n <mat-icon class=\"expand_more actionButton__expand\">expand_more</mat-icon>\r\n </button>\r\n <button mat-flat-button (click)=\"clear()\"\r\n [disabled]=\"isFormEmpty() || activeLevel > 1\"\r\n class=\"action-button\" id=\"activity-clear-btn\">\r\n {{ 'REPORTS.clear' | translate }}\r\n </button>\r\n <button *ngIf=\"activeLevel === 1 && drillDownEnabled()\" color=\"warn\" mat-flat-button\r\n (click)=\"drillDown()\" class=\"action-button\" id=\"activity-drilldown-btn\">\r\n {{ drillDownLabel() | translate }}\r\n </button>\r\n <button *ngIf=\"activeLevel > 1 && !(isComparisonReport && activeLevel == 2)\" color=\"warn\"\r\n mat-flat-button (click)=\"goUp()\" class=\"action-button\" id=\"activity-up-btn\">\r\n {{ 'REPORTS.up' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n <!-- Base tables -->\r\n <ng-container *ngIf=\"activeLevel === 1\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"pageInfo\" [columns]=\"columnsDefinition\" [enforceRefresh]=\"reloadData\"\r\n id=\"parent\" [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 2\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\" id=\"child\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 3\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\" id=\"junior\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 4\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n\r\n<!-- Menu -->\r\n<mat-menu #menu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item *ngFor=\"let type of types\" (click)=\"extractReport(type)\" [attr.id]=\"'activity-extract-item-' + type\">\r\n {{ type }}\r\n </button>\r\n</mat-menu>\r\n", styles: [".page-container{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;gap:10px;flex-wrap:wrap;width:100%}.column{display:flex;flex-direction:column}.flex-49{flex:0 0 49%}.flex-100{flex:0 0 100%}.row-center-start{align-items:center;justify-content:flex-start}.mt-3vh{margin-top:3vh}.mb-10px{margin-bottom:10px}.action-button{font-weight:700;min-width:140px;max-width:200px;margin:0 10px}.help-icon{cursor:pointer;margin-left:10px}@media (max-width: 960px){.flex-49,.flex-100{flex:1 1 100%}}@media (max-width: 600px){.row{flex-direction:column;align-items:center}.action-button{width:100%;max-width:300px;margin:5px 0}.help-icon{margin-left:0;margin-top:5px}}\n"], dependencies: [{ kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: BaseTableComponent, selector: "app-base-table", inputs: ["filterFields", "noDataFoundSvgPath", "noDataFoundTitle", "noDataFoundSubtitle", "noResultSvgPath", "noResultTitle", "noResultSubtitle", "pageInfo", "enablePagination", "mobilePageSize", "mobileLoadMoreIncrement", "data", "listAction", "extraActions", "buttonsDisplayMode", "columns", "filters", "pathParam", "extraButton", "enforceRefresh", "isPending", "trigger", "reportRequest", "separateEndpointData", "manageablePages", "totalPagesCount", "currentPageIndex", "customizedData"], outputs: ["buttonClicked", "pageChange", "userAction", "hyperLinkAction", "extraAction", "selectedColumn", "listActionClicked", "showDialog", "clickRoutePage"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
5985
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActivityReportFormComponent, isStandalone: true, selector: "app-report-form", inputs: { showDetails: "showDetails", showExtractButton: "showExtractButton", columns: "columns", actionRequestCallback: "actionRequestCallback", enrichDrillDownReportRequest: "enrichDrillDownReportRequest", enrichHyperLinkReportRequest: "enrichHyperLinkReportRequest", enrichJuniorReportRequest: "enrichJuniorReportRequest" }, outputs: { userAction: "userAction" }, ngImport: i0, template: "<div class=\"page-container\">\r\n\r\n <div class=\"row row-center-start mb-10px full-width\">\r\n <app-title-bar [pageTitle]=\"getTitle()\" [newAction]=\"false\"></app-title-bar>\r\n <mat-icon *ngIf=\"pageInfo?.hasHint\"\r\n [matTooltip]=\"pageInfo.labelsSection + '.hint' | translate\"\r\n matTooltipPosition=\"right\"\r\n color=\"primary\"\r\n class=\"help-icon\"\r\n matTooltipClass=\"custom-tooltip\">\r\n help_outline\r\n </mat-icon>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"isEditable\"\r\n [errors]=\"errors\"\r\n [item]=\"reportForm?.value || {}\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"activeLevel === 1\" color=\"primary\" mat-flat-button (click)=\"doAction(x)\"\r\n [disabled]=\"!isValidForm()\" class=\"action-button\" id=\"activity-generate-btn\">\r\n {{ 'REPORTS.generate' | translate }}\r\n </button>\r\n <button mat-raised-button [matMenuTriggerFor]=\"menu\" [disabled]=\"getIsEmptyList()\"\r\n color=\"primary\" class=\"btn-none-background-primary action-button\" id=\"activity-extract-trigger\">\r\n {{ 'extract' | translate }}\r\n <mat-icon class=\"expand_more actionButton__expand\">expand_more</mat-icon>\r\n </button>\r\n <button mat-flat-button (click)=\"clear()\"\r\n [disabled]=\"isFormEmpty() || activeLevel > 1\"\r\n class=\"action-button\" id=\"activity-clear-btn\">\r\n {{ 'REPORTS.clear' | translate }}\r\n </button>\r\n <button *ngIf=\"activeLevel === 1 && drillDownEnabled()\" color=\"warn\" mat-flat-button\r\n (click)=\"drillDown()\" class=\"action-button\" id=\"activity-drilldown-btn\">\r\n {{ drillDownLabel() | translate }}\r\n </button>\r\n <button *ngIf=\"activeLevel > 1 && !(isComparisonReport && activeLevel == 2)\" color=\"warn\"\r\n mat-flat-button (click)=\"goUp()\" class=\"action-button\" id=\"activity-up-btn\">\r\n {{ 'REPORTS.up' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n <!-- Base tables -->\r\n <ng-container *ngIf=\"activeLevel === 1\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"pageInfo\" [columns]=\"columnsDefinition\" [enforceRefresh]=\"reloadData\"\r\n id=\"parent\" [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 2\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\" id=\"child\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 3\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\" id=\"junior\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 4\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n\r\n<!-- Menu -->\r\n<mat-menu #menu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item *ngFor=\"let type of types\" (click)=\"extractReport(type)\" [attr.id]=\"'activity-extract-item-' + type\">\r\n {{ type }}\r\n </button>\r\n</mat-menu>\r\n", styles: [".page-container{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;gap:10px;flex-wrap:wrap;width:100%}.column{display:flex;flex-direction:column}.flex-49{flex:0 0 49%}.flex-100{flex:0 0 100%}.row-center-start{align-items:center;justify-content:flex-start}.mt-3vh{margin-top:3vh}.mb-10px{margin-bottom:10px}.action-button{font-weight:700;min-width:140px;max-width:200px;margin:0 10px}.help-icon{cursor:pointer;margin-left:10px}@media (max-width: 960px){.flex-49,.flex-100{flex:1 1 100%}}@media (max-width: 600px){.row{flex-direction:column;align-items:center}.action-button{width:100%;max-width:300px;margin:5px 0}.help-icon{margin-left:0;margin-top:5px}}\n"], dependencies: [{ kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: BaseTableComponent, selector: "app-base-table", inputs: ["filterFields", "noDataFoundSvgPath", "noDataFoundTitle", "noDataFoundSubtitle", "noResultSvgPath", "noResultTitle", "noResultSubtitle", "pageInfo", "enablePagination", "mobilePageSize", "mobileLoadMoreIncrement", "data", "listAction", "extraActions", "buttonsDisplayMode", "columns", "filters", "pathParam", "extraButton", "enforceRefresh", "isPending", "trigger", "reportRequest", "separateEndpointData", "manageablePages", "totalPagesCount", "currentPageIndex", "customizedData"], outputs: ["buttonClicked", "pageChange", "userAction", "hyperLinkAction", "extraAction", "selectedColumn", "listActionClicked", "showDialog", "clickRoutePage"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
5985
5986
  }
5986
5987
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityReportFormComponent, decorators: [{
5987
5988
  type: Component,
@@ -6577,7 +6578,7 @@ class ItemLineEditorComponent {
6577
6578
  };
6578
6579
  }
6579
6580
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ItemLineEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6580
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ItemLineEditorComponent, isStandalone: true, selector: "app-item-line-editor", inputs: { noDataFoundIcon: "noDataFoundIcon", noDataFoundTitle: "noDataFoundTitle", noDataFoundSubtitle: "noDataFoundSubtitle", pageInfo: "pageInfo", columnHeaderWidths: "columnHeaderWidths", title: "title", subtitle: "subtitle", allowAdd: "allowAdd", allowDelete: "allowDelete", editable: "editable", currency: "currency", fields: "fields", items: "items" }, outputs: { itemsChange: "itemsChange", itemSaved: "itemSaved", itemDeleted: "itemDeleted", totalsChange: "totalsChange", editStateChange: "editStateChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"item-line-editor\">\r\n <div class=\"header-section\">\r\n <div class=\"header-content\">\r\n <div class=\"header-text\">\r\n <h3 class=\"title\">{{ title | translate }}</h3>\r\n <p class=\"subtitle\">{{ subtitle | translate }}</p>\r\n </div>\r\n </div>\r\n <div class=\"header-divider\"></div>\r\n </div>\r\n\r\n <div class=\"table-section\">\r\n @if (!noDataFound) {\r\n <div class=\"table-container\">\r\n <div class=\"table-header\" [ngStyle]=\"{ 'grid-template-columns': gridTemplate }\">\r\n <ng-container *ngFor=\"let f of headerFields; let idx = index\">\r\n <div class=\"header-cell\" [class.description-cell]=\"f.property === 'description'\">\r\n <span class=\"header-cell-text\">\r\n {{ labelOf(f) | translate }}\r\n <span *ngIf=\"f.required\" class=\"required-asterisk\">*</span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"table-body\">\r\n <div class=\"table-row-container\" *ngFor=\"let it of items; let i = index; trackBy: trackByIndex\">\r\n <div class=\"table-row\">\r\n <div class=\"row-inputs\" [attr.data-grid-columns]=\"gridTemplate\" [ngStyle]=\"{ '--grid-columns': gridTemplate }\">\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editing[i]\"\r\n [emitOnValueChanges]=\"true\"\r\n [item]=\"it\"\r\n [currency]=\"currency\"\r\n (formUpdated)=\"onFormUpdated($event, i)\">\r\n </app-base-form-canvas>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row-actions\">\r\n <button *ngIf=\"editing[i]\" mat-stroked-button class=\"save-btn\" (click)=\"saveRow(i)\"\r\n [disabled]=\"!canSave(i)\">\r\n <div class=\"button-text\">\r\n <mat-icon>check</mat-icon>\r\n <span>{{ 'item-line.save' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n <button *ngIf=\"!editing[i] && editable\" mat-stroked-button class=\"edit-btn\"\r\n (click)=\"editRow(i)\">\r\n <div class=\"button-text\">\r\n <mat-icon>edit</mat-icon>\r\n <span>{{ 'item-line.edit' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n <button *ngIf=\"allowDelete && editable\" mat-stroked-button class=\"delete-btn\"\r\n (click)=\"deleteItem(i)\" type=\"button\">\r\n <div class=\"button-text\">\r\n <mat-icon>delete</mat-icon>\r\n <span>{{ 'item-line.delete' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div class=\"row-divider\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (noDataFound) {\r\n <div class=\"dataNotFound\">\r\n <mat-icon class=\"dataNotFound__icon\">{{ noDataFoundIcon }}</mat-icon>\r\n <span class=\"dataNotFound__title\">{{ noDataFoundTitle | translate }}</span>\r\n <span class=\"dataNotFound__subtitle\">{{ noDataFoundSubtitle | translate }}</span>\r\n </div>\r\n }\r\n\r\n <div class=\"add-item\" *ngIf=\"allowAdd && editable\">\r\n <button mat-stroked-button class=\"add-item-btn\" (click)=\"addNewItem()\"\r\n [disabled]=\"!canAddNew\">\r\n <div class=\"button-text\">\r\n <mat-icon>add_circle_outline</mat-icon>\r\n <span>{{ 'item-line.addNewItem' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Totals Box -->\r\n @if (!noDataFound) {\r\n <div class=\"totals-box\">\r\n <div class=\"total-row\">\r\n <span class=\"label\">{{ 'item-line.discount' | translate }}</span>\r\n <span class=\"value red\">{{ discountTotal | currency:currency }}</span>\r\n </div>\r\n\r\n <div class=\"total-row\">\r\n <span class=\"label\">{{ 'item-line.amount' | translate }}</span>\r\n <span class=\"value\">{{ subtotal | currency:currency }}</span>\r\n </div>\r\n\r\n <div class=\"totals-divider\"></div>\r\n\r\n <div class=\"total-row grand\">\r\n <span class=\"label\">{{ 'item-line.grandTotal' | translate }}</span>\r\n <span class=\"value green\">{{ grandTotal | currency:currency }}</span>\r\n </div>\r\n </div>\r\n }\r\n</div>", styles: [":host{display:block;width:100%}.item-line-editor{background:#fff;border:1px solid #f0eeee;border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:20px;width:100%;max-width:100%;box-sizing:border-box}.header-section{display:flex;flex-direction:column;gap:20px}.header-content{display:flex;align-items:center;justify-content:space-between}.header-text{display:flex;flex-direction:column;line-height:1.2}.title{font-weight:700;font-size:24px;color:#000;margin:0}.subtitle{font-weight:300;font-size:16px;color:#888;margin:0}.header-divider{height:2px;background-color:#0d4261;width:100%}.table-section{display:flex;flex-direction:column;gap:20px}.table-container{display:flex;flex-direction:column;gap:24px}.table-header{display:grid;width:100%;border-top:1px solid #0d4261;border-bottom:1px solid #0d4261}.header-cell{display:flex;align-items:center;justify-content:flex-start;height:48px;padding:0 20px;background:#fff}.header-cell-text{font-weight:400;font-size:16px;color:#0d4261;line-height:1.2;display:flex;align-items:center;gap:4px}.required-asterisk{color:#ce3b3a;font-weight:500}.table-body{width:100%}.table-row-container{display:flex;flex-direction:column;gap:16px;width:100%}.table-row{width:100%}.row-inputs{width:100%;padding:0 20px}:host ::ng-deep .row-container{border-bottom:1px solid #f0eeee}@media (max-width: 768px){:host ::ng-deep .row-container{border-bottom:none!important}}:host ::ng-deep .row-container .field-column{min-height:70px;padding:16px 0;background:#fff}:host ::ng-deep .row-container .field-column .label-and-asterisk-container{display:none!important}:host ::ng-deep .row-container .field-column mat-form-field{width:100%;margin-bottom:0}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper{background:transparent!important;padding:0!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mdc-notched-outline{display:none!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex{padding:0!important;border:none!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding:0!important;min-height:32px!important;width:100%!important;border:none!important;border-bottom:1px solid #b7b7b7!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input{font-family:lusail,sans-serif!important;font-weight:400!important;font-size:16px!important;color:#000!important;padding:4px 0!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input::placeholder{color:#888!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input:disabled{color:#000!important}@media (max-width: 768px){:host ::ng-deep .row-container{border-bottom:none!important;flex-direction:row!important;flex-wrap:nowrap!important;gap:11px!important}:host ::ng-deep .row-container .field-column{flex:1 1 0!important;min-width:0!important;max-width:none!important}:host ::ng-deep .row-container .field-column .label-and-asterisk-container{display:flex!important;margin-bottom:8px}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .custom-label{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#000;display:block}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .required-asterisk{color:#ce3b3a;font-weight:500}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .optional-text{color:#888;font-size:14px}.table-header{display:none}.row-inputs{padding:0}.totals-box{width:100%!important}}.row-actions{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:8px;width:100%;padding-top:8px}.row-divider{height:1px;background-color:#0d4261;width:100%;margin-top:8px;flex-shrink:0;min-height:1px;position:relative;z-index:1}.save-btn,.edit-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:32px!important;min-width:114px!important;padding:0 12px!important;border-radius:9999px!important;border:1px solid #0d4261!important;background:#fff!important;cursor:pointer}.save-btn .button-text,.edit-btn .button-text{display:flex;align-items:center;gap:4px}.save-btn .button-text mat-icon,.edit-btn .button-text mat-icon{font-size:20px!important;width:20px!important;height:26px!important;color:#0d4261}.save-btn .button-text span,.edit-btn .button-text span{font-family:lusail,sans-serif;font-weight:400;font-size:16px;color:#0d4261;line-height:1}.save-btn:disabled,.edit-btn:disabled{opacity:.5;cursor:not-allowed}.delete-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:32px!important;min-width:114px!important;padding:0 12px!important;border-radius:9999px!important;border:1px solid #ce3b3a!important;background:#fff!important;cursor:pointer}.delete-btn .button-text{display:flex;align-items:center;gap:4px}.delete-btn .button-text mat-icon{font-size:20px!important;width:20px!important;height:26px!important;color:#ce3b3a}.delete-btn .button-text span{font-family:lusail,sans-serif;font-weight:400;font-size:16px;color:#ce3b3a;line-height:1}.add-item{width:100%}.add-item-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:44px!important;min-width:185px!important;padding:0 16px!important;border-radius:8px!important;border:1px solid #3e627b!important;background:#fff!important;cursor:pointer}.add-item-btn .button-text{display:flex;align-items:center;gap:4px}.add-item-btn .button-text mat-icon{font-size:24px!important;width:24px!important;height:30px!important;color:#0d4261}.add-item-btn .button-text span{font-weight:500;font-size:16px;color:#0d4261;line-height:1}.add-item-btn:disabled{opacity:.5;cursor:not-allowed}.totals-box{width:400px;max-width:100%}.total-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.total-row .label{font-weight:500;font-size:16px;color:#333}.total-row .value{font-weight:600;font-size:16px}.total-row.grand .label{font-weight:700}.total-row.grand .value{font-weight:700;font-size:18px}.totals-divider{height:1px;background-color:#e0e0e0;margin:8px 0}.red{color:#d9534f}.green{color:#0c7d5e}.dataNotFound{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.dataNotFound__icon{color:#0d4261;font-size:48px;height:50px;width:48px;margin-bottom:16px}.dataNotFound__title{color:#6a6a6a;font-size:18px;font-weight:700;margin-bottom:8px}.dataNotFound__subtitle{color:#6a6a6a;font-size:16px;font-weight:400}.col{padding-left:4px;display:flex;align-items:center;gap:2px}.line-total{font-weight:600;font-size:14px}.divider{border-top:1px solid #e0e0e0;margin:10px 0}::ng-deep .btn-background-primary,::ng-deep .btn-none-background-primary{margin:8px 0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1$1.CurrencyPipe, name: "currency" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
6581
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ItemLineEditorComponent, isStandalone: true, selector: "app-item-line-editor", inputs: { noDataFoundIcon: "noDataFoundIcon", noDataFoundTitle: "noDataFoundTitle", noDataFoundSubtitle: "noDataFoundSubtitle", pageInfo: "pageInfo", columnHeaderWidths: "columnHeaderWidths", title: "title", subtitle: "subtitle", allowAdd: "allowAdd", allowDelete: "allowDelete", editable: "editable", currency: "currency", fields: "fields", items: "items" }, outputs: { itemsChange: "itemsChange", itemSaved: "itemSaved", itemDeleted: "itemDeleted", totalsChange: "totalsChange", editStateChange: "editStateChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"item-line-editor\">\r\n <div class=\"header-section\">\r\n <div class=\"header-content\">\r\n <div class=\"header-text\">\r\n <h3 class=\"title\">{{ title | translate }}</h3>\r\n <p class=\"subtitle\">{{ subtitle | translate }}</p>\r\n </div>\r\n </div>\r\n <div class=\"header-divider\"></div>\r\n </div>\r\n\r\n <div class=\"table-section\">\r\n @if (!noDataFound) {\r\n <div class=\"table-container\">\r\n <div class=\"table-header\" [ngStyle]=\"{ 'grid-template-columns': gridTemplate }\">\r\n <ng-container *ngFor=\"let f of headerFields; let idx = index\">\r\n <div class=\"header-cell\" [class.description-cell]=\"f.property === 'description'\">\r\n <span class=\"header-cell-text\">\r\n {{ labelOf(f) | translate }}\r\n <span *ngIf=\"f.required\" class=\"required-asterisk\">*</span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"table-body\">\r\n <div class=\"table-row-container\" *ngFor=\"let it of items; let i = index; trackBy: trackByIndex\">\r\n <div class=\"table-row\">\r\n <div class=\"row-inputs\" [attr.data-grid-columns]=\"gridTemplate\" [ngStyle]=\"{ '--grid-columns': gridTemplate }\">\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editing[i]\"\r\n [emitOnValueChanges]=\"true\"\r\n [item]=\"it\"\r\n [currency]=\"currency\"\r\n (formUpdated)=\"onFormUpdated($event, i)\">\r\n </app-base-form-canvas>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row-actions\">\r\n <button *ngIf=\"editing[i]\" mat-stroked-button class=\"save-btn\" (click)=\"saveRow(i)\"\r\n [disabled]=\"!canSave(i)\">\r\n <div class=\"button-text\">\r\n <mat-icon>check</mat-icon>\r\n <span>{{ 'item-line.save' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n <button *ngIf=\"!editing[i] && editable\" mat-stroked-button class=\"edit-btn\"\r\n (click)=\"editRow(i)\">\r\n <div class=\"button-text\">\r\n <mat-icon>edit</mat-icon>\r\n <span>{{ 'item-line.edit' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n <button *ngIf=\"allowDelete && editable\" mat-stroked-button class=\"delete-btn\"\r\n (click)=\"deleteItem(i)\" type=\"button\">\r\n <div class=\"button-text\">\r\n <mat-icon>delete</mat-icon>\r\n <span>{{ 'item-line.delete' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div class=\"row-divider\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (noDataFound) {\r\n <div class=\"dataNotFound\">\r\n <mat-icon class=\"dataNotFound__icon\">{{ noDataFoundIcon }}</mat-icon>\r\n <span class=\"dataNotFound__title\">{{ noDataFoundTitle | translate }}</span>\r\n <span class=\"dataNotFound__subtitle\">{{ noDataFoundSubtitle | translate }}</span>\r\n </div>\r\n }\r\n\r\n <div class=\"add-item\" *ngIf=\"allowAdd && editable\">\r\n <button mat-stroked-button class=\"add-item-btn\" (click)=\"addNewItem()\"\r\n [disabled]=\"!canAddNew\">\r\n <div class=\"button-text\">\r\n <mat-icon>add_circle_outline</mat-icon>\r\n <span>{{ 'item-line.addNewItem' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Totals Box -->\r\n @if (!noDataFound) {\r\n <div class=\"totals-box\">\r\n <div class=\"total-row\">\r\n <span class=\"label\">{{ 'item-line.discount' | translate }}</span>\r\n <span class=\"value red\">{{ discountTotal | currency:currency }}</span>\r\n </div>\r\n\r\n <div class=\"total-row\">\r\n <span class=\"label\">{{ 'item-line.amount' | translate }}</span>\r\n <span class=\"value\">{{ subtotal | currency:currency }}</span>\r\n </div>\r\n\r\n <div class=\"totals-divider\"></div>\r\n\r\n <div class=\"total-row grand\">\r\n <span class=\"label\">{{ 'item-line.grandTotal' | translate }}</span>\r\n <span class=\"value green\">{{ grandTotal | currency:currency }}</span>\r\n </div>\r\n </div>\r\n }\r\n</div>", styles: [":host{display:block;width:100%}.item-line-editor{background:#fff;border:1px solid #f0eeee;border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:20px;width:100%;max-width:100%;box-sizing:border-box}.header-section{display:flex;flex-direction:column;gap:20px}.header-content{display:flex;align-items:center;justify-content:space-between}.header-text{display:flex;flex-direction:column;line-height:1.2}.title{font-weight:700;font-size:24px;color:#000;margin:0}.subtitle{font-weight:300;font-size:16px;color:#888;margin:0}.header-divider{height:2px;background-color:#0d4261;width:100%}.table-section{display:flex;flex-direction:column;gap:20px}.table-container{display:flex;flex-direction:column;gap:24px}.table-header{display:grid;width:100%;border-top:1px solid #0d4261;border-bottom:1px solid #0d4261}.header-cell{display:flex;align-items:center;justify-content:flex-start;height:48px;padding:0 20px;background:#fff}.header-cell-text{font-weight:400;font-size:16px;color:#0d4261;line-height:1.2;display:flex;align-items:center;gap:4px}.required-asterisk{color:#ce3b3a;font-weight:500}.table-body{width:100%}.table-row-container{display:flex;flex-direction:column;gap:16px;width:100%}.table-row{width:100%}.row-inputs{width:100%;padding:0 20px}:host ::ng-deep .row-container{border-bottom:1px solid #f0eeee}@media (max-width: 768px){:host ::ng-deep .row-container{border-bottom:none!important}}:host ::ng-deep .row-container .field-column{min-height:70px;padding:16px 0;background:#fff}:host ::ng-deep .row-container .field-column .label-and-asterisk-container{display:none!important}:host ::ng-deep .row-container .field-column mat-form-field{width:100%;margin-bottom:0}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper{background:transparent!important;padding:0!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mdc-notched-outline{display:none!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex{padding:0!important;border:none!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding:0!important;min-height:32px!important;width:100%!important;border:none!important;border-bottom:1px solid #b7b7b7!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input{font-family:lusail,sans-serif!important;font-weight:400!important;font-size:16px!important;color:#000!important;padding:4px 0!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input::placeholder{color:#888!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input:disabled{color:#000!important}@media (max-width: 768px){:host ::ng-deep .row-container{border-bottom:none!important;flex-direction:row!important;flex-wrap:nowrap!important;gap:11px!important}:host ::ng-deep .row-container .field-column{flex:1 1 0!important;min-width:0!important;max-width:none!important}:host ::ng-deep .row-container .field-column .label-and-asterisk-container{display:flex!important;margin-bottom:8px}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .custom-label{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#000;display:block}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .required-asterisk{color:#ce3b3a;font-weight:500}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .optional-text{color:#888;font-size:14px}.table-header{display:none}.row-inputs{padding:0}.totals-box{width:100%!important}}.row-actions{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:8px;width:100%;padding-top:8px}.row-divider{height:1px;background-color:#0d4261;width:100%;margin-top:8px;flex-shrink:0;min-height:1px;position:relative;z-index:1}.save-btn,.edit-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:32px!important;min-width:114px!important;padding:0 12px!important;border-radius:9999px!important;border:1px solid #0d4261!important;background:#fff!important;cursor:pointer}.save-btn .button-text,.edit-btn .button-text{display:flex;align-items:center;gap:4px}.save-btn .button-text mat-icon,.edit-btn .button-text mat-icon{font-size:20px!important;width:20px!important;height:26px!important;color:#0d4261}.save-btn .button-text span,.edit-btn .button-text span{font-family:lusail,sans-serif;font-weight:400;font-size:16px;color:#0d4261;line-height:1}.save-btn:disabled,.edit-btn:disabled{opacity:.5;cursor:not-allowed}.delete-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:32px!important;min-width:114px!important;padding:0 12px!important;border-radius:9999px!important;border:1px solid #ce3b3a!important;background:#fff!important;cursor:pointer}.delete-btn .button-text{display:flex;align-items:center;gap:4px}.delete-btn .button-text mat-icon{font-size:20px!important;width:20px!important;height:26px!important;color:#ce3b3a}.delete-btn .button-text span{font-family:lusail,sans-serif;font-weight:400;font-size:16px;color:#ce3b3a;line-height:1}.add-item{width:100%}.add-item-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:44px!important;min-width:185px!important;padding:0 16px!important;border-radius:8px!important;border:1px solid #3e627b!important;background:#fff!important;cursor:pointer}.add-item-btn .button-text{display:flex;align-items:center;gap:4px}.add-item-btn .button-text mat-icon{font-size:24px!important;width:24px!important;height:30px!important;color:#0d4261}.add-item-btn .button-text span{font-weight:500;font-size:16px;color:#0d4261;line-height:1}.add-item-btn:disabled{opacity:.5;cursor:not-allowed}.totals-box{width:400px;max-width:100%}.total-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.total-row .label{font-weight:500;font-size:16px;color:#333}.total-row .value{font-weight:600;font-size:16px}.total-row.grand .label{font-weight:700}.total-row.grand .value{font-weight:700;font-size:18px}.totals-divider{height:1px;background-color:#e0e0e0;margin:8px 0}.red{color:#d9534f}.green{color:#0c7d5e}.dataNotFound{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.dataNotFound__icon{color:#0d4261;font-size:48px;height:50px;width:48px;margin-bottom:16px}.dataNotFound__title{color:#6a6a6a;font-size:18px;font-weight:700;margin-bottom:8px}.dataNotFound__subtitle{color:#6a6a6a;font-size:16px;font-weight:400}.col{padding-left:4px;display:flex;align-items:center;gap:2px}.line-total{font-weight:600;font-size:14px}.divider{border-top:1px solid #e0e0e0;margin:10px 0}::ng-deep .btn-background-primary,::ng-deep .btn-none-background-primary{margin:8px 0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1$1.CurrencyPipe, name: "currency" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
6581
6582
  }
6582
6583
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ItemLineEditorComponent, decorators: [{
6583
6584
  type: Component,