@elite.framework/ng.ui.core 2.0.6 → 2.0.31

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.
Files changed (71) hide show
  1. package/column-settings-popover/index.d.ts +2 -2
  2. package/excel-import/index.d.ts +1 -1
  3. package/fesm2022/elite.framework-ng.ui.core-checkbox.mjs +3 -4
  4. package/fesm2022/elite.framework-ng.ui.core-checkbox.mjs.map +1 -1
  5. package/fesm2022/elite.framework-ng.ui.core-color-picker.mjs +3 -4
  6. package/fesm2022/elite.framework-ng.ui.core-color-picker.mjs.map +1 -1
  7. package/fesm2022/elite.framework-ng.ui.core-column-settings-popover.mjs +6 -6
  8. package/fesm2022/elite.framework-ng.ui.core-column-settings-popover.mjs.map +1 -1
  9. package/fesm2022/elite.framework-ng.ui.core-condition-editor.mjs +3 -4
  10. package/fesm2022/elite.framework-ng.ui.core-condition-editor.mjs.map +1 -1
  11. package/fesm2022/elite.framework-ng.ui.core-custom-switch.mjs +3 -4
  12. package/fesm2022/elite.framework-ng.ui.core-custom-switch.mjs.map +1 -1
  13. package/fesm2022/elite.framework-ng.ui.core-datepicker.mjs +3 -4
  14. package/fesm2022/elite.framework-ng.ui.core-datepicker.mjs.map +1 -1
  15. package/fesm2022/elite.framework-ng.ui.core-deactivation-reason.mjs +3 -4
  16. package/fesm2022/elite.framework-ng.ui.core-deactivation-reason.mjs.map +1 -1
  17. package/fesm2022/elite.framework-ng.ui.core-excel-import.mjs +5 -6
  18. package/fesm2022/elite.framework-ng.ui.core-excel-import.mjs.map +1 -1
  19. package/fesm2022/elite.framework-ng.ui.core-form-field.mjs +5 -5
  20. package/fesm2022/elite.framework-ng.ui.core-form-field.mjs.map +1 -1
  21. package/fesm2022/elite.framework-ng.ui.core-formly-avatar-label.mjs +3 -4
  22. package/fesm2022/elite.framework-ng.ui.core-formly-avatar-label.mjs.map +1 -1
  23. package/fesm2022/elite.framework-ng.ui.core-formly-button-selector.mjs +6 -6
  24. package/fesm2022/elite.framework-ng.ui.core-formly-button-selector.mjs.map +1 -1
  25. package/fesm2022/elite.framework-ng.ui.core-formly-button.mjs +3 -3
  26. package/fesm2022/elite.framework-ng.ui.core-formly-button.mjs.map +1 -1
  27. package/fesm2022/elite.framework-ng.ui.core-generic-autocomplete.mjs +3 -4
  28. package/fesm2022/elite.framework-ng.ui.core-generic-autocomplete.mjs.map +1 -1
  29. package/fesm2022/elite.framework-ng.ui.core-generic-button.mjs +3 -4
  30. package/fesm2022/elite.framework-ng.ui.core-generic-button.mjs.map +1 -1
  31. package/fesm2022/elite.framework-ng.ui.core-generic-card.mjs +3 -4
  32. package/fesm2022/elite.framework-ng.ui.core-generic-card.mjs.map +1 -1
  33. package/fesm2022/elite.framework-ng.ui.core-generic-crud-table.mjs +8 -9
  34. package/fesm2022/elite.framework-ng.ui.core-generic-crud-table.mjs.map +1 -1
  35. package/fesm2022/elite.framework-ng.ui.core-generic-dialog.mjs +5 -6
  36. package/fesm2022/elite.framework-ng.ui.core-generic-dialog.mjs.map +1 -1
  37. package/fesm2022/elite.framework-ng.ui.core-generic-report.mjs +8 -9
  38. package/fesm2022/elite.framework-ng.ui.core-generic-report.mjs.map +1 -1
  39. package/fesm2022/elite.framework-ng.ui.core-generic-search-advanced.mjs +29 -24
  40. package/fesm2022/elite.framework-ng.ui.core-generic-search-advanced.mjs.map +1 -1
  41. package/fesm2022/elite.framework-ng.ui.core-generic-search.mjs +5 -5
  42. package/fesm2022/elite.framework-ng.ui.core-generic-search.mjs.map +1 -1
  43. package/fesm2022/elite.framework-ng.ui.core-generic-selector.mjs +5 -6
  44. package/fesm2022/elite.framework-ng.ui.core-generic-selector.mjs.map +1 -1
  45. package/fesm2022/elite.framework-ng.ui.core-generic-table.mjs +5 -6
  46. package/fesm2022/elite.framework-ng.ui.core-generic-table.mjs.map +1 -1
  47. package/fesm2022/elite.framework-ng.ui.core-generic-view.mjs +3 -4
  48. package/fesm2022/elite.framework-ng.ui.core-generic-view.mjs.map +1 -1
  49. package/fesm2022/elite.framework-ng.ui.core-input-switch.mjs +3 -4
  50. package/fesm2022/elite.framework-ng.ui.core-input-switch.mjs.map +1 -1
  51. package/fesm2022/elite.framework-ng.ui.core-input.mjs +3 -4
  52. package/fesm2022/elite.framework-ng.ui.core-input.mjs.map +1 -1
  53. package/fesm2022/elite.framework-ng.ui.core-repeat.mjs +5 -6
  54. package/fesm2022/elite.framework-ng.ui.core-repeat.mjs.map +1 -1
  55. package/fesm2022/elite.framework-ng.ui.core-select.mjs +3 -4
  56. package/fesm2022/elite.framework-ng.ui.core-select.mjs.map +1 -1
  57. package/fesm2022/elite.framework-ng.ui.core-tag-type.mjs +7 -8
  58. package/fesm2022/elite.framework-ng.ui.core-tag-type.mjs.map +1 -1
  59. package/fesm2022/elite.framework-ng.ui.core-textarea.mjs +3 -4
  60. package/fesm2022/elite.framework-ng.ui.core-textarea.mjs.map +1 -1
  61. package/fesm2022/elite.framework-ng.ui.core-wrappers.mjs +9 -10
  62. package/fesm2022/elite.framework-ng.ui.core-wrappers.mjs.map +1 -1
  63. package/form-field/index.d.ts +2 -2
  64. package/formly-button-selector/index.d.ts +2 -2
  65. package/generic-crud-table/index.d.ts +2 -3
  66. package/generic-dialog/index.d.ts +2 -3
  67. package/generic-report/index.d.ts +2 -2
  68. package/generic-search/index.d.ts +2 -2
  69. package/generic-search-advanced/index.d.ts +4 -5
  70. package/generic-table/index.d.ts +2 -3
  71. package/package.json +17 -17
@@ -1 +1 @@
1
- {"version":3,"file":"elite.framework-ng.ui.core-generic-card.mjs","sources":["../tmp-esm2022/generic-card/lib/generic-card-module.js","../tmp-esm2022/generic-card/lib/generic-card.js","../tmp-esm2022/generic-card/elite.framework-ng.ui.core-generic-card.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class GenericCardModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCardModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCardModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCardModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jYXJkLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNhcmQvc3JjL2xpYi9nZW5lcmljLWNhcmQtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8saUJBQWlCO3VHQUFqQixpQkFBaUI7d0dBQWpCLGlCQUFpQixZQUZsQixZQUFZO3dHQUVYLGlCQUFpQixZQUZsQixZQUFZOzsyRkFFWCxpQkFBaUI7a0JBSDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0NhcmRNb2R1bGUge31cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport { MenuModule } from 'primeng/menu';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"primeng/button\";\nimport * as i3 from \"primeng/menu\";\nimport * as i4 from \"@ngx-translate/core\";\nexport class GenericCard {\n data = [];\n columns = [];\n loading = false;\n actions = [];\n actionsMode = 'buttons';\n showOperations = true;\n // Added inputs for selection mirroring the table component\n rowSelectable = false;\n showRowSelectionCheckbox = false;\n paginator = false; // Indicates if pagination is externally managed\n // Row class function, mirroring the table component\n rowClassFn = () => '';\n action = new EventEmitter();\n _selection = null;\n get selection() {\n return this._selection;\n }\n set selection(val) {\n this._selection = val;\n // No emit here, emit only from actual user interaction methods\n }\n selectionChange = new EventEmitter();\n rowSelect = new EventEmitter();\n // Note: onLazyLoad is not directly applicable as the card component doesn't have internal pagination UI.\n // The parent component should manage data slicing and pass the correct 'data' array.\n /**\n * Generates menu items for the action menu.\n * @param row The data row for which to generate actions.\n * @returns An array of PrimeNG MenuItem objects.\n */\n getMenuItems(row) {\n return this.actions.map(act => ({\n label: act.label,\n icon: act.icon,\n command: () => this.action.emit({ name: act.name, row }),\n styleClass: act.styleClass\n }));\n }\n /**\n * Handles click events on a clickable cell.\n * @param col The ColumnDef of the clicked column.\n * @param rowData The data row of the clicked cell.\n * @param event The mouse event.\n */\n handleCellClick(col, rowData, event) {\n event.stopPropagation(); // Prevent card selection if applicable\n if (col.clickAction) {\n col.clickAction(rowData, event);\n }\n }\n /**\n * Handles mouse enter events on a hoverable cell.\n * @param col The ColumnDef of the hovered column.\n * @param rowData The data row of the hovered cell.\n * @param event The mouse event.\n */\n onCellHover(col, row, event) {\n event.stopPropagation();\n col.onCellMouseEnter?.(row, event);\n }\n /**\n * Handles mouse leave events on a hoverable cell.\n * @param col The ColumnDef of the hovered column.\n * @param rowData The data row of the hovered cell.\n * @param event The mouse event.\n */\n onCellLeave(col, row, event) {\n event.stopPropagation();\n col.onCellMouseLeave?.(row, event);\n }\n /**\n * Handles click on the entire card for row selection (if not using checkboxes).\n * @param item The data item associated with the clicked card.\n */\n handleCardClick(item) {\n if (this.rowSelectable && !this.showRowSelectionCheckbox) {\n // Single selection mode logic\n if (this._selection === item) {\n this._selection = null; // Deselect if already selected\n }\n else {\n this._selection = item; // Select the current item\n }\n this.selectionChange.emit(this._selection);\n this.rowSelect.emit(item); // Emit the selected item\n }\n }\n /**\n * Checks if an item is currently selected.\n * Used for checkbox binding.\n * @param item The item to check.\n * @returns True if the item is selected, false otherwise.\n */\n isItemSelected(item) {\n if (!this._selection) {\n return false;\n }\n if (Array.isArray(this._selection)) {\n // Check if item exists in the array (for multi-select)\n return this._selection.includes(item);\n }\n // Single selection mode\n return this._selection === item;\n }\n /**\n * Toggles the selection state of an item.\n * Used when a checkbox is clicked.\n * @param item The item to toggle.\n * @param event The change event from the checkbox.\n */\n toggleItemSelection(item, event) {\n event.stopPropagation(); // Prevent card click event from firing\n const isChecked = event.target.checked;\n if (this.showRowSelectionCheckbox) {\n // Multi-selection logic\n let currentSelectionArray = Array.isArray(this._selection) ? [...this._selection] : [];\n if (isChecked) {\n if (!currentSelectionArray.includes(item)) {\n currentSelectionArray.push(item);\n }\n }\n else {\n currentSelectionArray = currentSelectionArray.filter(selectedItem => selectedItem !== item);\n }\n this._selection = currentSelectionArray;\n }\n else if (this.rowSelectable) {\n // Single selection logic (if no checkboxes, this block would be redundant with handleCardClick, but kept for clarity)\n this._selection = isChecked ? item : null;\n }\n this.selectionChange.emit(this._selection);\n if (isChecked) {\n this.rowSelect.emit(item);\n }\n }\n /**\n * Used by *ngFor to optimize rendering.\n * Assumes each item has a unique 'id' property.\n * @param index The index of the item.\n * @param item The data item.\n * @returns The unique identifier of the item.\n */\n trackById(index, item) {\n // You might need to adjust 'id' if your data uses a different unique identifier\n return item.id || index;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCard, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: GenericCard, isStandalone: true, selector: \"lib-generic-card\", inputs: { data: \"data\", columns: \"columns\", loading: \"loading\", actions: \"actions\", actionsMode: \"actionsMode\", showOperations: \"showOperations\", rowSelectable: \"rowSelectable\", showRowSelectionCheckbox: \"showRowSelectionCheckbox\", paginator: \"paginator\", rowClassFn: \"rowClassFn\", selection: \"selection\" }, outputs: { action: \"action\", selectionChange: \"selectionChange\", rowSelect: \"rowSelect\" }, ngImport: i0, template: \"\\n<div class=\\\"p-4 p-4 flex flex-col gap-6 font-inter\\\">\\n <div *ngIf=\\\"loading\\\" class=\\\"col-span-full text-center py-8\\\">\\n <div class=\\\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-500 inline-block\\\"></div>\\n <p class=\\\"mt-4 text-gray-600\\\">Loading data...</p>\\n </div>\\n\\n <div *ngIf=\\\"!loading && data.length === 0\\\" class=\\\"col-span-full text-center py-8 text-gray-500\\\">\\n No records found.\\n </div>\\n\\n <div *ngFor=\\\"let item of data; trackBy: trackById\\\"\\n [ngClass]=\\\"rowClassFn(item)\\\"\\n class=\\\"bg-white rounded-lg shadow-md hover:shadow-lg transition-shadow duration-300 overflow-hidden flex flex-row items-center\\\"\\n (click)=\\\"handleCardClick(item)\\\"\\n [class.cursor-pointer]=\\\"rowSelectable && !showRowSelectionCheckbox\\\">\\n\\n <div *ngIf=\\\"showRowSelectionCheckbox\\\" class=\\\"p-4\\\">\\n <input type=\\\"checkbox\\\"\\n [checked]=\\\"isItemSelected(item)\\\"\\n (change)=\\\"toggleItemSelection(item, $event)\\\"\\n class=\\\"form-checkbox h-5 w-5 text-blue-600 rounded focus:ring-blue-500\\\">\\n </div>\\n\\n <div class=\\\"p-6 flex-grow\\\">\\n <div class=\\\"flex flex-wrap -mx-2\\\">\\n <ng-container *ngFor=\\\"let col of columns\\\">\\n <div *ngIf=\\\"col.isCardVisible\\\" class=\\\"px-2 mb-2 w-full sm:w-1/5\\\">\\n <div class=\\\"flex flex-col sm:flex-row sm:items-center text-sm\\\">\\n <span class=\\\"font-semibold text-gray-700 sm:w-1/3 sm:min-w-[80px] sm:pr-2\\\">{{ col.header | translate }}:</span>\\n <div class=\\\"flex-grow text-gray-800 text-left mt-1 sm:mt-0\\\">\\n <ng-container *ngIf=\\\"col.clickable; else readonlyCardCell\\\">\\n <span class=\\\"cursor-pointer hover:underline text-blue-600\\\"\\n (click)=\\\"handleCellClick(col, item, $event)\\\"\\n (mouseenter)=\\\"col.hoverable && onCellHover(col, item, $event)\\\"\\n (mouseleave)=\\\"col.hoverable && onCellLeave(col, item, $event)\\\">\\n <ng-container *ngIf=\\\"col.formatter; else defaultCardText\\\">\\n <span [innerHTML]=\\\"col.formatter(item)\\\"></span>\\n </ng-container>\\n <ng-template #defaultCardText>\\n {{ col.pipe ? col.pipe(item[col.field]) : item[col.field] }}\\n </ng-template>\\n </span>\\n </ng-container>\\n\\n <ng-template #readonlyCardCell>\\n <span>\\n <ng-container *ngIf=\\\"col.formatter; else defaultCardText2\\\">\\n <span [innerHTML]=\\\"col.formatter(item)\\\"></span>\\n </ng-container>\\n <ng-template #defaultCardText2>\\n {{ col.pipe ? col.pipe(item[col.field]) : item[col.field] }}\\n </ng-template>\\n </span>\\n </ng-template>\\n </div>\\n </div>\\n </div>\\n </ng-container>\\n </div>\\n\\n </div>\\n\\n <div *ngIf=\\\"showOperations && actions.length > 0\\\" class=\\\"border-l border-gray-200 p-4 flex justify-end items-center\\\">\\n <ng-container *ngIf=\\\"actionsMode === 'buttons'; else cardMenuTpl\\\">\\n <ng-container *ngFor=\\\"let act of actions\\\">\\n <button\\n pButton\\n type=\\\"button\\\"\\n [icon]=\\\"act.icon || ''\\\"\\n [title]=\\\"act.label?? '' | translate\\\"\\n class=\\\"p-button-rounded p-button-text text-gray-600 hover:text-blue-600 custom-button-medium mr-1\\\"\\n [ngClass]=\\\"act.styleClass\\\"\\n (click)=\\\"action.emit({ name: act.name, row: item })\\\"\\n ></button>\\n </ng-container>\\n </ng-container>\\n\\n <ng-template #cardMenuTpl>\\n <p-menu\\n #cardMenu\\n [model]=\\\"getMenuItems(item)\\\"\\n popup=\\\"true\\\"\\n appendTo=\\\"body\\\">\\n </p-menu>\\n <button\\n pButton\\n type=\\\"button\\\"\\n icon=\\\"pi pi-ellipsis-v\\\"\\n class=\\\"p-button-rounded p-button-text text-gray-600 hover:text-blue-600\\\"\\n (click)=\\\"cardMenu.toggle($event)\\\">\\n </button>\\n </ng-template>\\n </div>\\n </div>\\n</div>\\n\", styles: [\".custom-button-medium{width:2.5rem;height:2.5rem}.icon-delete{color:#ef4444}.icon-edit{color:#2563eb}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i2.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"ngmodule\", type: MenuModule }, { kind: \"component\", type: i3.Menu, selector: \"p-menu\", inputs: [\"model\", \"popup\", \"style\", \"styleClass\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"ariaLabel\", \"ariaLabelledBy\", \"id\", \"tabindex\", \"appendTo\"], outputs: [\"onShow\", \"onHide\", \"onBlur\", \"onFocus\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"pipe\", type: i4.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCard, decorators: [{\n type: Component,\n args: [{ selector: 'lib-generic-card', imports: [\n CommonModule,\n ButtonModule,\n MenuModule,\n TranslateModule,\n FormsModule,\n ], template: \"\\n<div class=\\\"p-4 p-4 flex flex-col gap-6 font-inter\\\">\\n <div *ngIf=\\\"loading\\\" class=\\\"col-span-full text-center py-8\\\">\\n <div class=\\\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-500 inline-block\\\"></div>\\n <p class=\\\"mt-4 text-gray-600\\\">Loading data...</p>\\n </div>\\n\\n <div *ngIf=\\\"!loading && data.length === 0\\\" class=\\\"col-span-full text-center py-8 text-gray-500\\\">\\n No records found.\\n </div>\\n\\n <div *ngFor=\\\"let item of data; trackBy: trackById\\\"\\n [ngClass]=\\\"rowClassFn(item)\\\"\\n class=\\\"bg-white rounded-lg shadow-md hover:shadow-lg transition-shadow duration-300 overflow-hidden flex flex-row items-center\\\"\\n (click)=\\\"handleCardClick(item)\\\"\\n [class.cursor-pointer]=\\\"rowSelectable && !showRowSelectionCheckbox\\\">\\n\\n <div *ngIf=\\\"showRowSelectionCheckbox\\\" class=\\\"p-4\\\">\\n <input type=\\\"checkbox\\\"\\n [checked]=\\\"isItemSelected(item)\\\"\\n (change)=\\\"toggleItemSelection(item, $event)\\\"\\n class=\\\"form-checkbox h-5 w-5 text-blue-600 rounded focus:ring-blue-500\\\">\\n </div>\\n\\n <div class=\\\"p-6 flex-grow\\\">\\n <div class=\\\"flex flex-wrap -mx-2\\\">\\n <ng-container *ngFor=\\\"let col of columns\\\">\\n <div *ngIf=\\\"col.isCardVisible\\\" class=\\\"px-2 mb-2 w-full sm:w-1/5\\\">\\n <div class=\\\"flex flex-col sm:flex-row sm:items-center text-sm\\\">\\n <span class=\\\"font-semibold text-gray-700 sm:w-1/3 sm:min-w-[80px] sm:pr-2\\\">{{ col.header | translate }}:</span>\\n <div class=\\\"flex-grow text-gray-800 text-left mt-1 sm:mt-0\\\">\\n <ng-container *ngIf=\\\"col.clickable; else readonlyCardCell\\\">\\n <span class=\\\"cursor-pointer hover:underline text-blue-600\\\"\\n (click)=\\\"handleCellClick(col, item, $event)\\\"\\n (mouseenter)=\\\"col.hoverable && onCellHover(col, item, $event)\\\"\\n (mouseleave)=\\\"col.hoverable && onCellLeave(col, item, $event)\\\">\\n <ng-container *ngIf=\\\"col.formatter; else defaultCardText\\\">\\n <span [innerHTML]=\\\"col.formatter(item)\\\"></span>\\n </ng-container>\\n <ng-template #defaultCardText>\\n {{ col.pipe ? col.pipe(item[col.field]) : item[col.field] }}\\n </ng-template>\\n </span>\\n </ng-container>\\n\\n <ng-template #readonlyCardCell>\\n <span>\\n <ng-container *ngIf=\\\"col.formatter; else defaultCardText2\\\">\\n <span [innerHTML]=\\\"col.formatter(item)\\\"></span>\\n </ng-container>\\n <ng-template #defaultCardText2>\\n {{ col.pipe ? col.pipe(item[col.field]) : item[col.field] }}\\n </ng-template>\\n </span>\\n </ng-template>\\n </div>\\n </div>\\n </div>\\n </ng-container>\\n </div>\\n\\n </div>\\n\\n <div *ngIf=\\\"showOperations && actions.length > 0\\\" class=\\\"border-l border-gray-200 p-4 flex justify-end items-center\\\">\\n <ng-container *ngIf=\\\"actionsMode === 'buttons'; else cardMenuTpl\\\">\\n <ng-container *ngFor=\\\"let act of actions\\\">\\n <button\\n pButton\\n type=\\\"button\\\"\\n [icon]=\\\"act.icon || ''\\\"\\n [title]=\\\"act.label?? '' | translate\\\"\\n class=\\\"p-button-rounded p-button-text text-gray-600 hover:text-blue-600 custom-button-medium mr-1\\\"\\n [ngClass]=\\\"act.styleClass\\\"\\n (click)=\\\"action.emit({ name: act.name, row: item })\\\"\\n ></button>\\n </ng-container>\\n </ng-container>\\n\\n <ng-template #cardMenuTpl>\\n <p-menu\\n #cardMenu\\n [model]=\\\"getMenuItems(item)\\\"\\n popup=\\\"true\\\"\\n appendTo=\\\"body\\\">\\n </p-menu>\\n <button\\n pButton\\n type=\\\"button\\\"\\n icon=\\\"pi pi-ellipsis-v\\\"\\n class=\\\"p-button-rounded p-button-text text-gray-600 hover:text-blue-600\\\"\\n (click)=\\\"cardMenu.toggle($event)\\\">\\n </button>\\n </ng-template>\\n </div>\\n </div>\\n</div>\\n\", styles: [\".custom-button-medium{width:2.5rem;height:2.5rem}.icon-delete{color:#ef4444}.icon-edit{color:#2563eb}\\n\"] }]\n }], propDecorators: { data: [{\n type: Input\n }], columns: [{\n type: Input\n }], loading: [{\n type: Input\n }], actions: [{\n type: Input\n }], actionsMode: [{\n type: Input\n }], showOperations: [{\n type: Input\n }], rowSelectable: [{\n type: Input\n }], showRowSelectionCheckbox: [{\n type: Input\n }], paginator: [{\n type: Input\n }], rowClassFn: [{\n type: Input\n }], action: [{\n type: Output\n }], selection: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], rowSelect: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY2FyZC9zcmMvbGliL2dlbmVyaWMtY2FyZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNhcmQvc3JjL2xpYi9nZW5lcmljLWNhcmQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7O0FBYzFDLE1BQU0sT0FBTyxXQUFXO0lBRVgsSUFBSSxHQUFRLEVBQUUsQ0FBQztJQUNqQixPQUFPLEdBQW1CLEVBQUUsQ0FBQztJQUM3QixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLE9BQU8sR0FBbUIsRUFBRSxDQUFDO0lBQzdCLFdBQVcsR0FBdUIsU0FBUyxDQUFDO0lBQzVDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFFL0IsMkRBQTJEO0lBQ2xELGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDdEIsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxnREFBZ0Q7SUFFNUUsb0RBQW9EO0lBQzNDLFVBQVUsR0FBNkIsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRTlDLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FB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QVMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxTQUFTLENBQUMsS0FBYSxFQUFFLElBQU87UUFDOUIsZ0ZBQWdGO1FBQ2hGLE9BQVEsSUFBWSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUM7SUFDbkMsQ0FBQzt1R0FuS1UsV0FBVzsyRkFBWCxXQUFXLDJkQ3RCeEIsa3dJQWdHQSxnS0RuRkssWUFBWSw2VkFDYixZQUFZLG9RQUNaLFVBQVUsMFVBQ1YsZUFBZSw4QkFDZixXQUFXOzsyRkFLRixXQUFXO2tCQVp2QixTQUFTOytCQUNFLGtCQUFrQixXQUNuQjt3QkFDTixZQUFZO3dCQUNiLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixlQUFlO3dCQUNmLFdBQVc7cUJBQ1o7OEJBTVUsSUFBSTtzQkFBWixLQUFLO2dCQUNDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUssTUFBTTtzQkFBZixNQUFNO2dCQUtKLFNBQVM7c0JBRFosS0FBSztnQkFTSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3Rpb25EZWYgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvbW9kZWxzJztcbmltcG9ydCB7IENvbHVtbkRlZiB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9tb2RlbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IE1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lbnUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZ2VuZXJpYy1jYXJkJyxcbiAgaW1wb3J0czogW1xuICAgICBDb21tb25Nb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIE1lbnVNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1jYXJkLmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2VuZXJpYy1jYXJkLmNzcydcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0NhcmQgPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PiB7XG5cbiAgICBASW5wdXQoKSBkYXRhOiBUW10gPSBbXTtcbiAgQElucHV0KCkgY29sdW1uczogQ29sdW1uRGVmPFQ+W10gPSBbXTtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBhY3Rpb25zOiBBY3Rpb25EZWY8VD5bXSA9IFtdO1xuICBASW5wdXQoKSBhY3Rpb25zTW9kZTogJ2J1dHRvbnMnIHwgJ21lbnUnID0gJ2J1dHRvbnMnO1xuICBASW5wdXQoKSBzaG93T3BlcmF0aW9ucyA9IHRydWU7XG5cbiAgLy8gQWRkZWQgaW5wdXRzIGZvciBzZWxlY3Rpb24gbWlycm9yaW5nIHRoZSB0YWJsZSBjb21wb25lbnRcbiAgQElucHV0KCkgcm93U2VsZWN0YWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93Um93U2VsZWN0aW9uQ2hlY2tib3ggPSBmYWxzZTtcbiAgQElucHV0KCkgcGFnaW5hdG9yID0gZmFsc2U7IC8vIEluZGljYXRlcyBpZiBwYWdpbmF0aW9uIGlzIGV4dGVybmFsbHkgbWFuYWdlZFxuXG4gIC8vIFJvdyBjbGFzcyBmdW5jdGlvbiwgbWlycm9yaW5nIHRoZSB0YWJsZSBjb21wb25lbnRcbiAgQElucHV0KCkgcm93Q2xhc3NGbjogKHJvd0RhdGE6IGFueSkgPT4gc3RyaW5nID0gKCkgPT4gJyc7XG5cbiAgIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgbmFtZTogc3RyaW5nOyByb3c6IFQgfT4oKTtcblxuXG4gIF9zZWxlY3Rpb246IFQgfCBUW10gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdGlvbigpOiBUIHwgVFtdIHwgbnVsbCB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uO1xuICB9XG4gIHNldCBzZWxlY3Rpb24odmFsOiBUIHwgVFtdIHwgbnVsbCkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uID0gdmFsO1xuICAgICAgLy8gTm8gZW1pdCBoZXJlLCBlbWl0IG9ubHkgZnJvbSBhY3R1YWwgdXNlciBpbnRlcmFjdGlvbiBtZXRob2RzXG4gIH1cblxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUIHwgVFtdIHwgbnVsbD4oKTtcbiAgQE91dHB1dCgpIHJvd1NlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgLy8gTm90ZTogb25MYXp5TG9hZCBpcyBub3QgZGlyZWN0bHkgYXBwbGljYWJsZSBhcyB0aGUgY2FyZCBjb21wb25lbnQgZG9lc24ndCBoYXZlIGludGVybmFsIHBhZ2luYXRpb24gVUkuXG4gIC8vIFRoZSBwYXJlbnQgY29tcG9uZW50IHNob3VsZCBtYW5hZ2UgZGF0YSBzbGljaW5nIGFuZCBwYXNzIHRoZSBjb3JyZWN0ICdkYXRhJyBhcnJheS5cblxuXG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBtZW51IGl0ZW1zIGZvciB0aGUgYWN0aW9uIG1lbnUuXG4gICAqIEBwYXJhbSByb3cgVGhlIGRhdGEgcm93IGZvciB3aGljaCB0byBnZW5lcmF0ZSBhY3Rpb25zLlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBQcmltZU5HIE1lbnVJdGVtIG9iamVjdHMuXG4gICAqL1xuIGdldE1lbnVJdGVtcyhyb3c6IFQpOiBNZW51SXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zLm1hcChhY3QgPT4gKHtcbiAgICAgIGxhYmVsOiBhY3QubGFiZWwsXG4gICAgICBpY29uOiBhY3QuaWNvbixcbiAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMuYWN0aW9uLmVtaXQoeyBuYW1lOiBhY3QubmFtZSwgcm93IH0pLFxuICAgICAgc3R5bGVDbGFzczogYWN0LnN0eWxlQ2xhc3NcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjbGljayBldmVudHMgb24gYSBjbGlja2FibGUgY2VsbC5cbiAgICogQHBhcmFtIGNvbCBUaGUgQ29sdW1uRGVmIG9mIHRoZSBjbGlja2VkIGNvbHVtbi5cbiAgICogQHBhcmFtIHJvd0RhdGEgVGhlIGRhdGEgcm93IG9mIHRoZSBjbGlja2VkIGNlbGwuXG4gICAqIEBwYXJhbSBldmVudCBUaGUgbW91c2UgZXZlbnQuXG4gICAqL1xuICBoYW5kbGVDZWxsQ2xpY2soY29sOiBDb2x1bW5EZWY8YW55Piwgcm93RGF0YTogYW55LCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBQcmV2ZW50IGNhcmQgc2VsZWN0aW9uIGlmIGFwcGxpY2FibGVcbiAgICBpZiAoY29sLmNsaWNrQWN0aW9uKSB7XG4gICAgICBjb2wuY2xpY2tBY3Rpb24ocm93RGF0YSwgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIG1vdXNlIGVudGVyIGV2ZW50cyBvbiBhIGhvdmVyYWJsZSBjZWxsLlxuICAgKiBAcGFyYW0gY29sIFRoZSBDb2x1bW5EZWYgb2YgdGhlIGhvdmVyZWQgY29sdW1uLlxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgZGF0YSByb3cgb2YgdGhlIGhvdmVyZWQgY2VsbC5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBtb3VzZSBldmVudC5cbiAgICovXG4gIG9uQ2VsbEhvdmVyKGNvbDogQ29sdW1uRGVmPFQ+LCByb3c6IFQsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29sLm9uQ2VsbE1vdXNlRW50ZXI/Lihyb3csIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIG1vdXNlIGxlYXZlIGV2ZW50cyBvbiBhIGhvdmVyYWJsZSBjZWxsLlxuICAgKiBAcGFyYW0gY29sIFRoZSBDb2x1bW5EZWYgb2YgdGhlIGhvdmVyZWQgY29sdW1uLlxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgZGF0YSByb3cgb2YgdGhlIGhvdmVyZWQgY2VsbC5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBtb3VzZSBldmVudC5cbiAgICovXG4gIG9uQ2VsbExlYXZlKGNvbDogQ29sdW1uRGVmPFQ+LCByb3c6IFQsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29sLm9uQ2VsbE1vdXNlTGVhdmU/Lihyb3csIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGNsaWNrIG9uIHRoZSBlbnRpcmUgY2FyZCBmb3Igcm93IHNlbGVjdGlvbiAoaWYgbm90IHVzaW5nIGNoZWNrYm94ZXMpLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgZGF0YSBpdGVtIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2xpY2tlZCBjYXJkLlxuICAgKi9cbiAgaGFuZGxlQ2FyZENsaWNrKGl0ZW06IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dTZWxlY3RhYmxlICYmICF0aGlzLnNob3dSb3dTZWxlY3Rpb25DaGVja2JveCkge1xuICAgICAgLy8gU2luZ2xlIHNlbGVjdGlvbiBtb2RlIGxvZ2ljXG4gICAgICBpZiAodGhpcy5fc2VsZWN0aW9uID09PSBpdGVtKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IG51bGw7IC8vIERlc2VsZWN0IGlmIGFscmVhZHkgc2VsZWN0ZWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IGl0ZW07IC8vIFNlbGVjdCB0aGUgY3VycmVudCBpdGVtXG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuX3NlbGVjdGlvbik7XG4gICAgICB0aGlzLnJvd1NlbGVjdC5lbWl0KGl0ZW0pOyAvLyBFbWl0IHRoZSBzZWxlY3RlZCBpdGVtXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhbiBpdGVtIGlzIGN1cnJlbnRseSBzZWxlY3RlZC5cbiAgICogVXNlZCBmb3IgY2hlY2tib3ggYmluZGluZy5cbiAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGl0ZW0gaXMgc2VsZWN0ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzSXRlbVNlbGVjdGVkKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX3NlbGVjdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLl9zZWxlY3Rpb24pKSB7XG4gICAgICAvLyBDaGVjayBpZiBpdGVtIGV4aXN0cyBpbiB0aGUgYXJyYXkgKGZvciBtdWx0aS1zZWxlY3QpXG4gICAgICByZXR1cm4gKHRoaXMuX3NlbGVjdGlvbiBhcyBUW10pLmluY2x1ZGVzKGl0ZW0pO1xuICAgIH1cbiAgICAvLyBTaW5nbGUgc2VsZWN0aW9uIG1vZGVcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uID09PSBpdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBhbiBpdGVtLlxuICAgKiBVc2VkIHdoZW4gYSBjaGVja2JveCBpcyBjbGlja2VkLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byB0b2dnbGUuXG4gICAqIEBwYXJhbSBldmVudCBUaGUgY2hhbmdlIGV2ZW50IGZyb20gdGhlIGNoZWNrYm94LlxuICAgKi9cbiAgdG9nZ2xlSXRlbVNlbGVjdGlvbihpdGVtOiBULCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gUHJldmVudCBjYXJkIGNsaWNrIGV2ZW50IGZyb20gZmlyaW5nXG4gICAgY29uc3QgaXNDaGVja2VkID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jaGVja2VkO1xuXG4gICAgaWYgKHRoaXMuc2hvd1Jvd1NlbGVjdGlvbkNoZWNrYm94KSB7XG4gICAgICAvLyBNdWx0aS1zZWxlY3Rpb24gbG9naWNcbiAgICAgIGxldCBjdXJyZW50U2VsZWN0aW9uQXJyYXkgPSBBcnJheS5pc0FycmF5KHRoaXMuX3NlbGVjdGlvbikgPyBbLi4udGhpcy5fc2VsZWN0aW9uXSA6IFtdO1xuXG4gICAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICAgIGlmICghY3VycmVudFNlbGVjdGlvbkFycmF5LmluY2x1ZGVzKGl0ZW0pKSB7XG4gICAgICAgICAgY3VycmVudFNlbGVjdGlvbkFycmF5LnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnRTZWxlY3Rpb25BcnJheSA9IGN1cnJlbnRTZWxlY3Rpb25BcnJheS5maWx0ZXIoc2VsZWN0ZWRJdGVtID0+IHNlbGVjdGVkSXRlbSAhPT0gaXRlbSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9zZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0aW9uQXJyYXk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnJvd1NlbGVjdGFibGUpIHtcbiAgICAgIC8vIFNpbmdsZSBzZWxlY3Rpb24gbG9naWMgKGlmIG5vIGNoZWNrYm94ZXMsIHRoaXMgYmxvY2sgd291bGQgYmUgcmVkdW5kYW50IHdpdGggaGFuZGxlQ2FyZENsaWNrLCBidXQga2VwdCBmb3IgY2xhcml0eSlcbiAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IGlzQ2hlY2tlZCA/IGl0ZW0gOiBudWxsO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuX3NlbGVjdGlvbik7XG4gICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgdGhpcy5yb3dTZWxlY3QuZW1pdChpdGVtKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSAqbmdGb3IgdG8gb3B0aW1pemUgcmVuZGVyaW5nLlxuICAgKiBBc3N1bWVzIGVhY2ggaXRlbSBoYXMgYSB1bmlxdWUgJ2lkJyBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgaXRlbS5cbiAgICogQHBhcmFtIGl0ZW0gVGhlIGRhdGEgaXRlbS5cbiAgICogQHJldHVybnMgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtLlxuICAgKi9cbiAgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIGl0ZW06IFQpOiBhbnkge1xuICAgIC8vIFlvdSBtaWdodCBuZWVkIHRvIGFkanVzdCAnaWQnIGlmIHlvdXIgZGF0YSB1c2VzIGEgZGlmZmVyZW50IHVuaXF1ZSBpZGVudGlmaWVyXG4gICAgcmV0dXJuIChpdGVtIGFzIGFueSkuaWQgfHwgaW5kZXg7XG4gIH1cblxufVxuIiwiXG48ZGl2IGNsYXNzPVwicC00IHAtNCBmbGV4IGZsZXgtY29sIGdhcC02IGZvbnQtaW50ZXJcIj5cbiAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cImNvbC1zcGFuLWZ1bGwgdGV4dC1jZW50ZXIgcHktOFwiPlxuICAgIDxkaXYgY2xhc3M9XCJhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGgtMTIgdy0xMiBib3JkZXItYi0yIGJvcmRlci1ibHVlLTUwMCBpbmxpbmUtYmxvY2tcIj48L2Rpdj5cbiAgICA8cCBjbGFzcz1cIm10LTQgdGV4dC1ncmF5LTYwMFwiPkxvYWRpbmcgZGF0YS4uLjwvcD5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmIGRhdGEubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJjb2wtc3Bhbi1mdWxsIHRleHQtY2VudGVyIHB5LTggdGV4dC1ncmF5LTUwMFwiPlxuICAgIE5vIHJlY29yZHMgZm91bmQuXG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YTsgdHJhY2tCeTogdHJhY2tCeUlkXCJcbiAgICAgICBbbmdDbGFzc109XCJyb3dDbGFzc0ZuKGl0ZW0pXCJcbiAgICAgICBjbGFzcz1cImJnLXdoaXRlIHJvdW5kZWQtbGcgc2hhZG93LW1kIGhvdmVyOnNoYWRvdy1sZyB0cmFuc2l0aW9uLXNoYWRvdyBkdXJhdGlvbi0zMDAgb3ZlcmZsb3ctaGlkZGVuIGZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyXCJcbiAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2FyZENsaWNrKGl0ZW0pXCJcbiAgICAgICBbY2xhc3MuY3Vyc29yLXBvaW50ZXJdPVwicm93U2VsZWN0YWJsZSAmJiAhc2hvd1Jvd1NlbGVjdGlvbkNoZWNrYm94XCI+XG5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1Jvd1NlbGVjdGlvbkNoZWNrYm94XCIgY2xhc3M9XCJwLTRcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzSXRlbVNlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUl0ZW1TZWxlY3Rpb24oaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrYm94IGgtNSB3LTUgdGV4dC1ibHVlLTYwMCByb3VuZGVkIGZvY3VzOnJpbmctYmx1ZS01MDBcIj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwLTYgZmxleC1ncm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgLW14LTJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbC5pc0NhcmRWaXNpYmxlXCIgY2xhc3M9XCJweC0yIG1iLTIgdy1mdWxsIHNtOnctMS81XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgc206aXRlbXMtY2VudGVyIHRleHQtc21cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktNzAwIHNtOnctMS8zIHNtOm1pbi13LVs4MHB4XSBzbTpwci0yXCI+e3sgY29sLmhlYWRlciB8IHRyYW5zbGF0ZSB9fTo8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93IHRleHQtZ3JheS04MDAgdGV4dC1sZWZ0IG10LTEgc206bXQtMFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNsaWNrYWJsZTsgZWxzZSByZWFkb25seUNhcmRDZWxsXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBob3Zlcjp1bmRlcmxpbmUgdGV4dC1ibHVlLTYwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNlbGxDbGljayhjb2wsIGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImNvbC5ob3ZlcmFibGUgJiYgb25DZWxsSG92ZXIoY29sLCBpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJjb2wuaG92ZXJhYmxlICYmIG9uQ2VsbExlYXZlKGNvbCwgaXRlbSwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5mb3JtYXR0ZXI7IGVsc2UgZGVmYXVsdENhcmRUZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29sLmZvcm1hdHRlcihpdGVtKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2FyZFRleHQ+XG4gICAgICAgICAgICAgICAgICAgIHt7IGNvbC5waXBlID8gY29sLnBpcGUoaXRlbVtjb2wuZmllbGRdKSA6IGl0ZW1bY29sLmZpZWxkXSB9fVxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlDYXJkQ2VsbD5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuZm9ybWF0dGVyOyBlbHNlIGRlZmF1bHRDYXJkVGV4dDJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjb2wuZm9ybWF0dGVyKGl0ZW0pXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDYXJkVGV4dDI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGNvbC5waXBlID8gY29sLnBpcGUoaXRlbVtjb2wuZmllbGRdKSA6IGl0ZW1bY29sLmZpZWxkXSB9fVxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJzaG93T3BlcmF0aW9ucyAmJiBhY3Rpb25zLmxlbmd0aCA+IDBcIiBjbGFzcz1cImJvcmRlci1sIGJvcmRlci1ncmF5LTIwMCBwLTQgZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbnNNb2RlID09PSAnYnV0dG9ucyc7IGVsc2UgY2FyZE1lbnVUcGxcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdCBvZiBhY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJhY3QuaWNvbiB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJhY3QubGFiZWw/PyAnJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ibHVlLTYwMCBjdXN0b20tYnV0dG9uLW1lZGl1bSBtci0xXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiYWN0LnN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmVtaXQoeyBuYW1lOiBhY3QubmFtZSwgcm93OiBpdGVtIH0pXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjYXJkTWVudVRwbD5cbiAgICAgICAgICAgIDxwLW1lbnVcbiAgICAgICAgICAgICAgICAjY2FyZE1lbnVcbiAgICAgICAgICAgICAgICBbbW9kZWxdPVwiZ2V0TWVudUl0ZW1zKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPlxuICAgICAgICAgICAgPC9wLW1lbnU+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS1lbGxpcHNpcy12XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCB0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtYmx1ZS02MDBcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjYXJkTWVudS50b2dnbGUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1jYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY2FyZC9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1jYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elite.framework-ng.ui.core-generic-card.mjs","sources":["../tmp-esm2022/generic-card/lib/generic-card-module.js","../tmp-esm2022/generic-card/lib/generic-card.js","../tmp-esm2022/generic-card/elite.framework-ng.ui.core-generic-card.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class GenericCardModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCardModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCardModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCardModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jYXJkLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNhcmQvc3JjL2xpYi9nZW5lcmljLWNhcmQtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8saUJBQWlCO3VHQUFqQixpQkFBaUI7d0dBQWpCLGlCQUFpQixZQUZsQixZQUFZO3dHQUVYLGlCQUFpQixZQUZsQixZQUFZOzsyRkFFWCxpQkFBaUI7a0JBSDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0NhcmRNb2R1bGUge31cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@elite.framework/ng.core/pipes';\nimport { ButtonModule } from 'primeng/button';\nimport { MenuModule } from 'primeng/menu';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"primeng/button\";\nimport * as i3 from \"primeng/menu\";\nexport class GenericCard {\n data = [];\n columns = [];\n loading = false;\n actions = [];\n actionsMode = 'buttons';\n showOperations = true;\n // Added inputs for selection mirroring the table component\n rowSelectable = false;\n showRowSelectionCheckbox = false;\n paginator = false; // Indicates if pagination is externally managed\n // Row class function, mirroring the table component\n rowClassFn = () => '';\n action = new EventEmitter();\n _selection = null;\n get selection() {\n return this._selection;\n }\n set selection(val) {\n this._selection = val;\n // No emit here, emit only from actual user interaction methods\n }\n selectionChange = new EventEmitter();\n rowSelect = new EventEmitter();\n // Note: onLazyLoad is not directly applicable as the card component doesn't have internal pagination UI.\n // The parent component should manage data slicing and pass the correct 'data' array.\n /**\n * Generates menu items for the action menu.\n * @param row The data row for which to generate actions.\n * @returns An array of PrimeNG MenuItem objects.\n */\n getMenuItems(row) {\n return this.actions.map(act => ({\n label: act.label,\n icon: act.icon,\n command: () => this.action.emit({ name: act.name, row }),\n styleClass: act.styleClass\n }));\n }\n /**\n * Handles click events on a clickable cell.\n * @param col The ColumnDef of the clicked column.\n * @param rowData The data row of the clicked cell.\n * @param event The mouse event.\n */\n handleCellClick(col, rowData, event) {\n event.stopPropagation(); // Prevent card selection if applicable\n if (col.clickAction) {\n col.clickAction(rowData, event);\n }\n }\n /**\n * Handles mouse enter events on a hoverable cell.\n * @param col The ColumnDef of the hovered column.\n * @param rowData The data row of the hovered cell.\n * @param event The mouse event.\n */\n onCellHover(col, row, event) {\n event.stopPropagation();\n col.onCellMouseEnter?.(row, event);\n }\n /**\n * Handles mouse leave events on a hoverable cell.\n * @param col The ColumnDef of the hovered column.\n * @param rowData The data row of the hovered cell.\n * @param event The mouse event.\n */\n onCellLeave(col, row, event) {\n event.stopPropagation();\n col.onCellMouseLeave?.(row, event);\n }\n /**\n * Handles click on the entire card for row selection (if not using checkboxes).\n * @param item The data item associated with the clicked card.\n */\n handleCardClick(item) {\n if (this.rowSelectable && !this.showRowSelectionCheckbox) {\n // Single selection mode logic\n if (this._selection === item) {\n this._selection = null; // Deselect if already selected\n }\n else {\n this._selection = item; // Select the current item\n }\n this.selectionChange.emit(this._selection);\n this.rowSelect.emit(item); // Emit the selected item\n }\n }\n /**\n * Checks if an item is currently selected.\n * Used for checkbox binding.\n * @param item The item to check.\n * @returns True if the item is selected, false otherwise.\n */\n isItemSelected(item) {\n if (!this._selection) {\n return false;\n }\n if (Array.isArray(this._selection)) {\n // Check if item exists in the array (for multi-select)\n return this._selection.includes(item);\n }\n // Single selection mode\n return this._selection === item;\n }\n /**\n * Toggles the selection state of an item.\n * Used when a checkbox is clicked.\n * @param item The item to toggle.\n * @param event The change event from the checkbox.\n */\n toggleItemSelection(item, event) {\n event.stopPropagation(); // Prevent card click event from firing\n const isChecked = event.target.checked;\n if (this.showRowSelectionCheckbox) {\n // Multi-selection logic\n let currentSelectionArray = Array.isArray(this._selection) ? [...this._selection] : [];\n if (isChecked) {\n if (!currentSelectionArray.includes(item)) {\n currentSelectionArray.push(item);\n }\n }\n else {\n currentSelectionArray = currentSelectionArray.filter(selectedItem => selectedItem !== item);\n }\n this._selection = currentSelectionArray;\n }\n else if (this.rowSelectable) {\n // Single selection logic (if no checkboxes, this block would be redundant with handleCardClick, but kept for clarity)\n this._selection = isChecked ? item : null;\n }\n this.selectionChange.emit(this._selection);\n if (isChecked) {\n this.rowSelect.emit(item);\n }\n }\n /**\n * Used by *ngFor to optimize rendering.\n * Assumes each item has a unique 'id' property.\n * @param index The index of the item.\n * @param item The data item.\n * @returns The unique identifier of the item.\n */\n trackById(index, item) {\n // You might need to adjust 'id' if your data uses a different unique identifier\n return item.id || index;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCard, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: GenericCard, isStandalone: true, selector: \"lib-generic-card\", inputs: { data: \"data\", columns: \"columns\", loading: \"loading\", actions: \"actions\", actionsMode: \"actionsMode\", showOperations: \"showOperations\", rowSelectable: \"rowSelectable\", showRowSelectionCheckbox: \"showRowSelectionCheckbox\", paginator: \"paginator\", rowClassFn: \"rowClassFn\", selection: \"selection\" }, outputs: { action: \"action\", selectionChange: \"selectionChange\", rowSelect: \"rowSelect\" }, ngImport: i0, template: \"\\n<div class=\\\"p-4 p-4 flex flex-col gap-6 font-inter\\\">\\n <div *ngIf=\\\"loading\\\" class=\\\"col-span-full text-center py-8\\\">\\n <div class=\\\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-500 inline-block\\\"></div>\\n <p class=\\\"mt-4 text-gray-600\\\">Loading data...</p>\\n </div>\\n\\n <div *ngIf=\\\"!loading && data.length === 0\\\" class=\\\"col-span-full text-center py-8 text-gray-500\\\">\\n No records found.\\n </div>\\n\\n <div *ngFor=\\\"let item of data; trackBy: trackById\\\"\\n [ngClass]=\\\"rowClassFn(item)\\\"\\n class=\\\"bg-white rounded-lg shadow-md hover:shadow-lg transition-shadow duration-300 overflow-hidden flex flex-row items-center\\\"\\n (click)=\\\"handleCardClick(item)\\\"\\n [class.cursor-pointer]=\\\"rowSelectable && !showRowSelectionCheckbox\\\">\\n\\n <div *ngIf=\\\"showRowSelectionCheckbox\\\" class=\\\"p-4\\\">\\n <input type=\\\"checkbox\\\"\\n [checked]=\\\"isItemSelected(item)\\\"\\n (change)=\\\"toggleItemSelection(item, $event)\\\"\\n class=\\\"form-checkbox h-5 w-5 text-blue-600 rounded focus:ring-blue-500\\\">\\n </div>\\n\\n <div class=\\\"p-6 flex-grow\\\">\\n <div class=\\\"flex flex-wrap -mx-2\\\">\\n <ng-container *ngFor=\\\"let col of columns\\\">\\n <div *ngIf=\\\"col.isCardVisible\\\" class=\\\"px-2 mb-2 w-full sm:w-1/5\\\">\\n <div class=\\\"flex flex-col sm:flex-row sm:items-center text-sm\\\">\\n <span class=\\\"font-semibold text-gray-700 sm:w-1/3 sm:min-w-[80px] sm:pr-2\\\">{{ col.header | translate }}:</span>\\n <div class=\\\"flex-grow text-gray-800 text-left mt-1 sm:mt-0\\\">\\n <ng-container *ngIf=\\\"col.clickable; else readonlyCardCell\\\">\\n <span class=\\\"cursor-pointer hover:underline text-blue-600\\\"\\n (click)=\\\"handleCellClick(col, item, $event)\\\"\\n (mouseenter)=\\\"col.hoverable && onCellHover(col, item, $event)\\\"\\n (mouseleave)=\\\"col.hoverable && onCellLeave(col, item, $event)\\\">\\n <ng-container *ngIf=\\\"col.formatter; else defaultCardText\\\">\\n <span [innerHTML]=\\\"col.formatter(item)\\\"></span>\\n </ng-container>\\n <ng-template #defaultCardText>\\n {{ col.pipe ? col.pipe(item[col.field]) : item[col.field] }}\\n </ng-template>\\n </span>\\n </ng-container>\\n\\n <ng-template #readonlyCardCell>\\n <span>\\n <ng-container *ngIf=\\\"col.formatter; else defaultCardText2\\\">\\n <span [innerHTML]=\\\"col.formatter(item)\\\"></span>\\n </ng-container>\\n <ng-template #defaultCardText2>\\n {{ col.pipe ? col.pipe(item[col.field]) : item[col.field] }}\\n </ng-template>\\n </span>\\n </ng-template>\\n </div>\\n </div>\\n </div>\\n </ng-container>\\n </div>\\n\\n </div>\\n\\n <div *ngIf=\\\"showOperations && actions.length > 0\\\" class=\\\"border-l border-gray-200 p-4 flex justify-end items-center\\\">\\n <ng-container *ngIf=\\\"actionsMode === 'buttons'; else cardMenuTpl\\\">\\n <ng-container *ngFor=\\\"let act of actions\\\">\\n <button\\n pButton\\n type=\\\"button\\\"\\n [icon]=\\\"act.icon || ''\\\"\\n [title]=\\\"act.label?? '' | translate\\\"\\n class=\\\"p-button-rounded p-button-text text-gray-600 hover:text-blue-600 custom-button-medium mr-1\\\"\\n [ngClass]=\\\"act.styleClass\\\"\\n (click)=\\\"action.emit({ name: act.name, row: item })\\\"\\n ></button>\\n </ng-container>\\n </ng-container>\\n\\n <ng-template #cardMenuTpl>\\n <p-menu\\n #cardMenu\\n [model]=\\\"getMenuItems(item)\\\"\\n popup=\\\"true\\\"\\n appendTo=\\\"body\\\">\\n </p-menu>\\n <button\\n pButton\\n type=\\\"button\\\"\\n icon=\\\"pi pi-ellipsis-v\\\"\\n class=\\\"p-button-rounded p-button-text text-gray-600 hover:text-blue-600\\\"\\n (click)=\\\"cardMenu.toggle($event)\\\">\\n </button>\\n </ng-template>\\n </div>\\n </div>\\n</div>\\n\", styles: [\".custom-button-medium{width:2.5rem;height:2.5rem}.icon-delete{color:#ef4444}.icon-edit{color:#2563eb}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i2.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"ngmodule\", type: MenuModule }, { kind: \"component\", type: i3.Menu, selector: \"p-menu\", inputs: [\"model\", \"popup\", \"style\", \"styleClass\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"ariaLabel\", \"ariaLabelledBy\", \"id\", \"tabindex\", \"appendTo\"], outputs: [\"onShow\", \"onHide\", \"onBlur\", \"onFocus\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"pipe\", type: TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCard, decorators: [{\n type: Component,\n args: [{ selector: 'lib-generic-card', imports: [\n CommonModule,\n ButtonModule,\n MenuModule,\n TranslatePipe,\n FormsModule,\n ], template: \"\\n<div class=\\\"p-4 p-4 flex flex-col gap-6 font-inter\\\">\\n <div *ngIf=\\\"loading\\\" class=\\\"col-span-full text-center py-8\\\">\\n <div class=\\\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-500 inline-block\\\"></div>\\n <p class=\\\"mt-4 text-gray-600\\\">Loading data...</p>\\n </div>\\n\\n <div *ngIf=\\\"!loading && data.length === 0\\\" class=\\\"col-span-full text-center py-8 text-gray-500\\\">\\n No records found.\\n </div>\\n\\n <div *ngFor=\\\"let item of data; trackBy: trackById\\\"\\n [ngClass]=\\\"rowClassFn(item)\\\"\\n class=\\\"bg-white rounded-lg shadow-md hover:shadow-lg transition-shadow duration-300 overflow-hidden flex flex-row items-center\\\"\\n (click)=\\\"handleCardClick(item)\\\"\\n [class.cursor-pointer]=\\\"rowSelectable && !showRowSelectionCheckbox\\\">\\n\\n <div *ngIf=\\\"showRowSelectionCheckbox\\\" class=\\\"p-4\\\">\\n <input type=\\\"checkbox\\\"\\n [checked]=\\\"isItemSelected(item)\\\"\\n (change)=\\\"toggleItemSelection(item, $event)\\\"\\n class=\\\"form-checkbox h-5 w-5 text-blue-600 rounded focus:ring-blue-500\\\">\\n </div>\\n\\n <div class=\\\"p-6 flex-grow\\\">\\n <div class=\\\"flex flex-wrap -mx-2\\\">\\n <ng-container *ngFor=\\\"let col of columns\\\">\\n <div *ngIf=\\\"col.isCardVisible\\\" class=\\\"px-2 mb-2 w-full sm:w-1/5\\\">\\n <div class=\\\"flex flex-col sm:flex-row sm:items-center text-sm\\\">\\n <span class=\\\"font-semibold text-gray-700 sm:w-1/3 sm:min-w-[80px] sm:pr-2\\\">{{ col.header | translate }}:</span>\\n <div class=\\\"flex-grow text-gray-800 text-left mt-1 sm:mt-0\\\">\\n <ng-container *ngIf=\\\"col.clickable; else readonlyCardCell\\\">\\n <span class=\\\"cursor-pointer hover:underline text-blue-600\\\"\\n (click)=\\\"handleCellClick(col, item, $event)\\\"\\n (mouseenter)=\\\"col.hoverable && onCellHover(col, item, $event)\\\"\\n (mouseleave)=\\\"col.hoverable && onCellLeave(col, item, $event)\\\">\\n <ng-container *ngIf=\\\"col.formatter; else defaultCardText\\\">\\n <span [innerHTML]=\\\"col.formatter(item)\\\"></span>\\n </ng-container>\\n <ng-template #defaultCardText>\\n {{ col.pipe ? col.pipe(item[col.field]) : item[col.field] }}\\n </ng-template>\\n </span>\\n </ng-container>\\n\\n <ng-template #readonlyCardCell>\\n <span>\\n <ng-container *ngIf=\\\"col.formatter; else defaultCardText2\\\">\\n <span [innerHTML]=\\\"col.formatter(item)\\\"></span>\\n </ng-container>\\n <ng-template #defaultCardText2>\\n {{ col.pipe ? col.pipe(item[col.field]) : item[col.field] }}\\n </ng-template>\\n </span>\\n </ng-template>\\n </div>\\n </div>\\n </div>\\n </ng-container>\\n </div>\\n\\n </div>\\n\\n <div *ngIf=\\\"showOperations && actions.length > 0\\\" class=\\\"border-l border-gray-200 p-4 flex justify-end items-center\\\">\\n <ng-container *ngIf=\\\"actionsMode === 'buttons'; else cardMenuTpl\\\">\\n <ng-container *ngFor=\\\"let act of actions\\\">\\n <button\\n pButton\\n type=\\\"button\\\"\\n [icon]=\\\"act.icon || ''\\\"\\n [title]=\\\"act.label?? '' | translate\\\"\\n class=\\\"p-button-rounded p-button-text text-gray-600 hover:text-blue-600 custom-button-medium mr-1\\\"\\n [ngClass]=\\\"act.styleClass\\\"\\n (click)=\\\"action.emit({ name: act.name, row: item })\\\"\\n ></button>\\n </ng-container>\\n </ng-container>\\n\\n <ng-template #cardMenuTpl>\\n <p-menu\\n #cardMenu\\n [model]=\\\"getMenuItems(item)\\\"\\n popup=\\\"true\\\"\\n appendTo=\\\"body\\\">\\n </p-menu>\\n <button\\n pButton\\n type=\\\"button\\\"\\n icon=\\\"pi pi-ellipsis-v\\\"\\n class=\\\"p-button-rounded p-button-text text-gray-600 hover:text-blue-600\\\"\\n (click)=\\\"cardMenu.toggle($event)\\\">\\n </button>\\n </ng-template>\\n </div>\\n </div>\\n</div>\\n\", styles: [\".custom-button-medium{width:2.5rem;height:2.5rem}.icon-delete{color:#ef4444}.icon-edit{color:#2563eb}\\n\"] }]\n }], propDecorators: { data: [{\n type: Input\n }], columns: [{\n type: Input\n }], loading: [{\n type: Input\n }], actions: [{\n type: Input\n }], actionsMode: [{\n type: Input\n }], showOperations: [{\n type: Input\n }], rowSelectable: [{\n type: Input\n }], showRowSelectionCheckbox: [{\n type: Input\n }], paginator: [{\n type: Input\n }], rowClassFn: [{\n type: Input\n }], action: [{\n type: Output\n }], selection: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], rowSelect: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY2FyZC9zcmMvbGliL2dlbmVyaWMtY2FyZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNhcmQvc3JjL2xpYi9nZW5lcmljLWNhcmQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7OztBQWMxQyxNQUFNLE9BQU8sV0FBVztJQUVYLElBQUksR0FBUSxFQUFFLENBQUM7SUFDakIsT0FBTyxHQUFtQixFQUFFLENBQUM7SUFDN0IsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixPQUFPLEdBQW1CLEVBQUUsQ0FBQztJQUM3QixXQUFXLEdBQXVCLFNBQVMsQ0FBQztJQUM1QyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBRS9CLDJEQUEyRDtJQUNsRCxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLHdCQUF3QixHQUFHLEtBQUssQ0FBQztJQUNqQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsZ0RBQWdEO0lBRTVFLG9EQUFvRDtJQUMzQyxVQUFVLEdBQTZCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUU5QyxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7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LEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFPO1FBQzlCLGdGQUFnRjtRQUNoRixPQUFRLElBQVksQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDO0lBQ25DLENBQUM7dUdBbktVLFdBQVc7MkZBQVgsV0FBVywyZEN0QnhCLGt3SUFnR0EsZ0tEbkZLLFlBQVksNlZBQ2IsWUFBWSxvUUFDWixVQUFVLDBVQUVWLFdBQVcsMEJBRFgsYUFBYTs7MkZBTUosV0FBVztrQkFadkIsU0FBUzsrQkFDRSxrQkFBa0IsV0FDbkI7d0JBQ04sWUFBWTt3QkFDYixZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsYUFBYTt3QkFDYixXQUFXO3FCQUNaOzhCQU1VLElBQUk7c0JBQVosS0FBSztnQkFDQyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVLLE1BQU07c0JBQWYsTUFBTTtnQkFLSixTQUFTO3NCQURaLEtBQUs7Z0JBU0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aW9uRGVmIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XG5pbXBvcnQgeyBDb2x1bW5EZWYgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvbW9kZWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvcGlwZXMnO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBNZW51TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tZW51JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWdlbmVyaWMtY2FyZCcsXG4gIGltcG9ydHM6IFtcbiAgICAgQ29tbW9uTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBNZW51TW9kdWxlLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW5lcmljLWNhcmQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW5lcmljLWNhcmQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmljQ2FyZCA8VCBleHRlbmRzIHsgW2tleTogc3RyaW5nXTogYW55IH0+IHtcblxuICAgIEBJbnB1dCgpIGRhdGE6IFRbXSA9IFtdO1xuICBASW5wdXQoKSBjb2x1bW5zOiBDb2x1bW5EZWY8VD5bXSA9IFtdO1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFjdGlvbnM6IEFjdGlvbkRlZjxUPltdID0gW107XG4gIEBJbnB1dCgpIGFjdGlvbnNNb2RlOiAnYnV0dG9ucycgfCAnbWVudScgPSAnYnV0dG9ucyc7XG4gIEBJbnB1dCgpIHNob3dPcGVyYXRpb25zID0gdHJ1ZTtcblxuICAvLyBBZGRlZCBpbnB1dHMgZm9yIHNlbGVjdGlvbiBtaXJyb3JpbmcgdGhlIHRhYmxlIGNvbXBvbmVudFxuICBASW5wdXQoKSByb3dTZWxlY3RhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dSb3dTZWxlY3Rpb25DaGVja2JveCA9IGZhbHNlO1xuICBASW5wdXQoKSBwYWdpbmF0b3IgPSBmYWxzZTsgLy8gSW5kaWNhdGVzIGlmIHBhZ2luYXRpb24gaXMgZXh0ZXJuYWxseSBtYW5hZ2VkXG5cbiAgLy8gUm93IGNsYXNzIGZ1bmN0aW9uLCBtaXJyb3JpbmcgdGhlIHRhYmxlIGNvbXBvbmVudFxuICBASW5wdXQoKSByb3dDbGFzc0ZuOiAocm93RGF0YTogYW55KSA9PiBzdHJpbmcgPSAoKSA9PiAnJztcblxuICAgQE91dHB1dCgpIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBuYW1lOiBzdHJpbmc7IHJvdzogVCB9PigpO1xuXG5cbiAgX3NlbGVjdGlvbjogVCB8IFRbXSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0aW9uKCk6IFQgfCBUW10gfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb247XG4gIH1cbiAgc2V0IHNlbGVjdGlvbih2YWw6IFQgfCBUW10gfCBudWxsKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb24gPSB2YWw7XG4gICAgICAvLyBObyBlbWl0IGhlcmUsIGVtaXQgb25seSBmcm9tIGFjdHVhbCB1c2VyIGludGVyYWN0aW9uIG1ldGhvZHNcbiAgfVxuXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFQgfCBUW10gfCBudWxsPigpO1xuICBAT3V0cHV0KCkgcm93U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuICAvLyBOb3RlOiBvbkxhenlMb2FkIGlzIG5vdCBkaXJlY3RseSBhcHBsaWNhYmxlIGFzIHRoZSBjYXJkIGNvbXBvbmVudCBkb2Vzbid0IGhhdmUgaW50ZXJuYWwgcGFnaW5hdGlvbiBVSS5cbiAgLy8gVGhlIHBhcmVudCBjb21wb25lbnQgc2hvdWxkIG1hbmFnZSBkYXRhIHNsaWNpbmcgYW5kIHBhc3MgdGhlIGNvcnJlY3QgJ2RhdGEnIGFycmF5LlxuXG5cblxuICAvKipcbiAgICogR2VuZXJhdGVzIG1lbnUgaXRlbXMgZm9yIHRoZSBhY3Rpb24gbWVudS5cbiAgICogQHBhcmFtIHJvdyBUaGUgZGF0YSByb3cgZm9yIHdoaWNoIHRvIGdlbmVyYXRlIGFjdGlvbnMuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIFByaW1lTkcgTWVudUl0ZW0gb2JqZWN0cy5cbiAgICovXG4gZ2V0TWVudUl0ZW1zKHJvdzogVCk6IE1lbnVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmFjdGlvbnMubWFwKGFjdCA9PiAoe1xuICAgICAgbGFiZWw6IGFjdC5sYWJlbCxcbiAgICAgIGljb246IGFjdC5pY29uLFxuICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy5hY3Rpb24uZW1pdCh7IG5hbWU6IGFjdC5uYW1lLCByb3cgfSksXG4gICAgICBzdHlsZUNsYXNzOiBhY3Quc3R5bGVDbGFzc1xuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGNsaWNrIGV2ZW50cyBvbiBhIGNsaWNrYWJsZSBjZWxsLlxuICAgKiBAcGFyYW0gY29sIFRoZSBDb2x1bW5EZWYgb2YgdGhlIGNsaWNrZWQgY29sdW1uLlxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgZGF0YSByb3cgb2YgdGhlIGNsaWNrZWQgY2VsbC5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBtb3VzZSBldmVudC5cbiAgICovXG4gIGhhbmRsZUNlbGxDbGljayhjb2w6IENvbHVtbkRlZjxhbnk+LCByb3dEYXRhOiBhbnksIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIFByZXZlbnQgY2FyZCBzZWxlY3Rpb24gaWYgYXBwbGljYWJsZVxuICAgIGlmIChjb2wuY2xpY2tBY3Rpb24pIHtcbiAgICAgIGNvbC5jbGlja0FjdGlvbihyb3dEYXRhLCBldmVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgbW91c2UgZW50ZXIgZXZlbnRzIG9uIGEgaG92ZXJhYmxlIGNlbGwuXG4gICAqIEBwYXJhbSBjb2wgVGhlIENvbHVtbkRlZiBvZiB0aGUgaG92ZXJlZCBjb2x1bW4uXG4gICAqIEBwYXJhbSByb3dEYXRhIFRoZSBkYXRhIHJvdyBvZiB0aGUgaG92ZXJlZCBjZWxsLlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIG1vdXNlIGV2ZW50LlxuICAgKi9cbiAgb25DZWxsSG92ZXIoY29sOiBDb2x1bW5EZWY8VD4sIHJvdzogVCwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb2wub25DZWxsTW91c2VFbnRlcj8uKHJvdywgZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgbW91c2UgbGVhdmUgZXZlbnRzIG9uIGEgaG92ZXJhYmxlIGNlbGwuXG4gICAqIEBwYXJhbSBjb2wgVGhlIENvbHVtbkRlZiBvZiB0aGUgaG92ZXJlZCBjb2x1bW4uXG4gICAqIEBwYXJhbSByb3dEYXRhIFRoZSBkYXRhIHJvdyBvZiB0aGUgaG92ZXJlZCBjZWxsLlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIG1vdXNlIGV2ZW50LlxuICAgKi9cbiAgb25DZWxsTGVhdmUoY29sOiBDb2x1bW5EZWY8VD4sIHJvdzogVCwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb2wub25DZWxsTW91c2VMZWF2ZT8uKHJvdywgZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY2xpY2sgb24gdGhlIGVudGlyZSBjYXJkIGZvciByb3cgc2VsZWN0aW9uIChpZiBub3QgdXNpbmcgY2hlY2tib3hlcykuXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBkYXRhIGl0ZW0gYXNzb2NpYXRlZCB3aXRoIHRoZSBjbGlja2VkIGNhcmQuXG4gICAqL1xuICBoYW5kbGVDYXJkQ2xpY2soaXRlbTogVCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvd1NlbGVjdGFibGUgJiYgIXRoaXMuc2hvd1Jvd1NlbGVjdGlvbkNoZWNrYm94KSB7XG4gICAgICAvLyBTaW5nbGUgc2VsZWN0aW9uIG1vZGUgbG9naWNcbiAgICAgIGlmICh0aGlzLl9zZWxlY3Rpb24gPT09IGl0ZW0pIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gbnVsbDsgLy8gRGVzZWxlY3QgaWYgYWxyZWFkeSBzZWxlY3RlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gaXRlbTsgLy8gU2VsZWN0IHRoZSBjdXJyZW50IGl0ZW1cbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5fc2VsZWN0aW9uKTtcbiAgICAgIHRoaXMucm93U2VsZWN0LmVtaXQoaXRlbSk7IC8vIEVtaXQgdGhlIHNlbGVjdGVkIGl0ZW1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGFuIGl0ZW0gaXMgY3VycmVudGx5IHNlbGVjdGVkLlxuICAgKiBVc2VkIGZvciBjaGVja2JveCBiaW5kaW5nLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byBjaGVjay5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgaXRlbSBpcyBzZWxlY3RlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNJdGVtU2VsZWN0ZWQoaXRlbTogVCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5fc2VsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX3NlbGVjdGlvbikpIHtcbiAgICAgIC8vIENoZWNrIGlmIGl0ZW0gZXhpc3RzIGluIHRoZSBhcnJheSAoZm9yIG11bHRpLXNlbGVjdClcbiAgICAgIHJldHVybiAodGhpcy5fc2VsZWN0aW9uIGFzIFRbXSkuaW5jbHVkZXMoaXRlbSk7XG4gICAgfVxuICAgIC8vIFNpbmdsZSBzZWxlY3Rpb24gbW9kZVxuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb24gPT09IGl0ZW07XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIGFuIGl0ZW0uXG4gICAqIFVzZWQgd2hlbiBhIGNoZWNrYm94IGlzIGNsaWNrZWQuXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBpdGVtIHRvIHRvZ2dsZS5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBjaGFuZ2UgZXZlbnQgZnJvbSB0aGUgY2hlY2tib3guXG4gICAqL1xuICB0b2dnbGVJdGVtU2VsZWN0aW9uKGl0ZW06IFQsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBQcmV2ZW50IGNhcmQgY2xpY2sgZXZlbnQgZnJvbSBmaXJpbmdcbiAgICBjb25zdCBpc0NoZWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG5cbiAgICBpZiAodGhpcy5zaG93Um93U2VsZWN0aW9uQ2hlY2tib3gpIHtcbiAgICAgIC8vIE11bHRpLXNlbGVjdGlvbiBsb2dpY1xuICAgICAgbGV0IGN1cnJlbnRTZWxlY3Rpb25BcnJheSA9IEFycmF5LmlzQXJyYXkodGhpcy5fc2VsZWN0aW9uKSA/IFsuLi50aGlzLl9zZWxlY3Rpb25dIDogW107XG5cbiAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgaWYgKCFjdXJyZW50U2VsZWN0aW9uQXJyYXkuaW5jbHVkZXMoaXRlbSkpIHtcbiAgICAgICAgICBjdXJyZW50U2VsZWN0aW9uQXJyYXkucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudFNlbGVjdGlvbkFycmF5ID0gY3VycmVudFNlbGVjdGlvbkFycmF5LmZpbHRlcihzZWxlY3RlZEl0ZW0gPT4gc2VsZWN0ZWRJdGVtICE9PSBpdGVtKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IGN1cnJlbnRTZWxlY3Rpb25BcnJheTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucm93U2VsZWN0YWJsZSkge1xuICAgICAgLy8gU2luZ2xlIHNlbGVjdGlvbiBsb2dpYyAoaWYgbm8gY2hlY2tib3hlcywgdGhpcyBibG9jayB3b3VsZCBiZSByZWR1bmRhbnQgd2l0aCBoYW5kbGVDYXJkQ2xpY2ssIGJ1dCBrZXB0IGZvciBjbGFyaXR5KVxuICAgICAgdGhpcy5fc2VsZWN0aW9uID0gaXNDaGVja2VkID8gaXRlbSA6IG51bGw7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5fc2VsZWN0aW9uKTtcbiAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICB0aGlzLnJvd1NlbGVjdC5lbWl0KGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5ICpuZ0ZvciB0byBvcHRpbWl6ZSByZW5kZXJpbmcuXG4gICAqIEFzc3VtZXMgZWFjaCBpdGVtIGhhcyBhIHVuaXF1ZSAnaWQnIHByb3BlcnR5LlxuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBpdGVtLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgZGF0YSBpdGVtLlxuICAgKiBAcmV0dXJucyBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0uXG4gICAqL1xuICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgaXRlbTogVCk6IGFueSB7XG4gICAgLy8gWW91IG1pZ2h0IG5lZWQgdG8gYWRqdXN0ICdpZCcgaWYgeW91ciBkYXRhIHVzZXMgYSBkaWZmZXJlbnQgdW5pcXVlIGlkZW50aWZpZXJcbiAgICByZXR1cm4gKGl0ZW0gYXMgYW55KS5pZCB8fCBpbmRleDtcbiAgfVxuXG59XG4iLCJcbjxkaXYgY2xhc3M9XCJwLTQgcC00IGZsZXggZmxleC1jb2wgZ2FwLTYgZm9udC1pbnRlclwiPlxuICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwiY29sLXNwYW4tZnVsbCB0ZXh0LWNlbnRlciBweS04XCI+XG4gICAgPGRpdiBjbGFzcz1cImFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgaC0xMiB3LTEyIGJvcmRlci1iLTIgYm9yZGVyLWJsdWUtNTAwIGlubGluZS1ibG9ja1wiPjwvZGl2PlxuICAgIDxwIGNsYXNzPVwibXQtNCB0ZXh0LWdyYXktNjAwXCI+TG9hZGluZyBkYXRhLi4uPC9wPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgZGF0YS5sZW5ndGggPT09IDBcIiBjbGFzcz1cImNvbC1zcGFuLWZ1bGwgdGV4dC1jZW50ZXIgcHktOCB0ZXh0LWdyYXktNTAwXCI+XG4gICAgTm8gcmVjb3JkcyBmb3VuZC5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhOyB0cmFja0J5OiB0cmFja0J5SWRcIlxuICAgICAgIFtuZ0NsYXNzXT1cInJvd0NsYXNzRm4oaXRlbSlcIlxuICAgICAgIGNsYXNzPVwiYmctd2hpdGUgcm91bmRlZC1sZyBzaGFkb3ctbWQgaG92ZXI6c2hhZG93LWxnIHRyYW5zaXRpb24tc2hhZG93IGR1cmF0aW9uLTMwMCBvdmVyZmxvdy1oaWRkZW4gZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXJcIlxuICAgICAgIChjbGljayk9XCJoYW5kbGVDYXJkQ2xpY2soaXRlbSlcIlxuICAgICAgIFtjbGFzcy5jdXJzb3ItcG9pbnRlcl09XCJyb3dTZWxlY3RhYmxlICYmICFzaG93Um93U2VsZWN0aW9uQ2hlY2tib3hcIj5cblxuICAgIDxkaXYgKm5nSWY9XCJzaG93Um93U2VsZWN0aW9uQ2hlY2tib3hcIiBjbGFzcz1cInAtNFwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlSXRlbVNlbGVjdGlvbihpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2tib3ggaC01IHctNSB0ZXh0LWJsdWUtNjAwIHJvdW5kZWQgZm9jdXM6cmluZy1ibHVlLTUwMFwiPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInAtNiBmbGV4LWdyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCAtbXgtMlwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLmlzQ2FyZFZpc2libGVcIiBjbGFzcz1cInB4LTIgbWItMiB3LWZ1bGwgc206dy0xLzVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBzbTpmbGV4LXJvdyBzbTppdGVtcy1jZW50ZXIgdGV4dC1zbVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtZ3JheS03MDAgc206dy0xLzMgc206bWluLXctWzgwcHhdIHNtOnByLTJcIj57eyBjb2wuaGVhZGVyIHwgdHJhbnNsYXRlIH19Ojwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3cgdGV4dC1ncmF5LTgwMCB0ZXh0LWxlZnQgbXQtMSBzbTptdC0wXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2xpY2thYmxlOyBlbHNlIHJlYWRvbmx5Q2FyZENlbGxcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGhvdmVyOnVuZGVybGluZSB0ZXh0LWJsdWUtNjAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2VsbENsaWNrKGNvbCwgaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiY29sLmhvdmVyYWJsZSAmJiBvbkNlbGxIb3Zlcihjb2wsIGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImNvbC5ob3ZlcmFibGUgJiYgb25DZWxsTGVhdmUoY29sLCBpdGVtLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmZvcm1hdHRlcjsgZWxzZSBkZWZhdWx0Q2FyZFRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjb2wuZm9ybWF0dGVyKGl0ZW0pXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDYXJkVGV4dD5cbiAgICAgICAgICAgICAgICAgICAge3sgY29sLnBpcGUgPyBjb2wucGlwZShpdGVtW2NvbC5maWVsZF0pIDogaXRlbVtjb2wuZmllbGRdIH19XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkb25seUNhcmRDZWxsPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5mb3JtYXR0ZXI7IGVsc2UgZGVmYXVsdENhcmRUZXh0MlwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbC5mb3JtYXR0ZXIoaXRlbSlcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENhcmRUZXh0Mj5cbiAgICAgICAgICAgICAgICAgICAge3sgY29sLnBpcGUgPyBjb2wucGlwZShpdGVtW2NvbC5maWVsZF0pIDogaXRlbVtjb2wuZmllbGRdIH19XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cInNob3dPcGVyYXRpb25zICYmIGFjdGlvbnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiYm9yZGVyLWwgYm9yZGVyLWdyYXktMjAwIHAtNCBmbGV4IGp1c3RpZnktZW5kIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uc01vZGUgPT09ICdidXR0b25zJzsgZWxzZSBjYXJkTWVudVRwbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0IG9mIGFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImFjdC5pY29uIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImFjdC5sYWJlbD8/ICcnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgdGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWJsdWUtNjAwIGN1c3RvbS1idXR0b24tbWVkaXVtIG1yLTFcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJhY3Quc3R5bGVDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb24uZW1pdCh7IG5hbWU6IGFjdC5uYW1lLCByb3c6IGl0ZW0gfSlcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2NhcmRNZW51VHBsPlxuICAgICAgICAgICAgPHAtbWVudVxuICAgICAgICAgICAgICAgICNjYXJkTWVudVxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJnZXRNZW51SXRlbXMoaXRlbSlcIlxuICAgICAgICAgICAgICAgIHBvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCI+XG4gICAgICAgICAgICA8L3AtbWVudT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWVsbGlwc2lzLXZcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ibHVlLTYwMFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhcmRNZW51LnRvZ2dsZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1jYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY2FyZC9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1jYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
@@ -9,13 +9,12 @@ import * as i1 from 'primeng/button';
9
9
  import { ButtonModule } from 'primeng/button';
10
10
  import { TableModule } from 'primeng/table';
11
11
  import { ToolbarModule } from 'primeng/toolbar';
12
- import * as i4 from '@ngx-translate/core';
13
- import { TranslateService, TranslateModule } from '@ngx-translate/core';
12
+ import { TranslatePipe } from '@elite.framework/ng.core/pipes';
14
13
  import { IconFieldModule } from 'primeng/iconfield';
15
14
  import { DrawerModule } from 'primeng/drawer';
16
15
  import { DialogModule } from 'primeng/dialog';
17
16
  import { FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';
18
- import { SwalService, BaseService } from '@elite.framework/ng.core/services';
17
+ import { LocalizationService, SwalService, BaseService } from '@elite.framework/ng.core/services';
19
18
  import * as i3 from 'primeng/tooltip';
20
19
  import { TooltipModule } from 'primeng/tooltip';
21
20
  import { Menu } from 'primeng/menu';
@@ -41,7 +40,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
41
40
  }] });
42
41
 
43
42
  class GenericCrudHeaderComponent {
44
- translate = inject(TranslateService);
43
+ translate = inject(LocalizationService);
45
44
  dialogService = inject(DialogService);
46
45
  // 🟢 Inputs
47
46
  mode = 'full';
@@ -208,13 +207,13 @@ class GenericCrudHeaderComponent {
208
207
  // etc.
209
208
  }
210
209
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericCrudHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
211
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: GenericCrudHeaderComponent, isStandalone: true, selector: "app-generic-crud-header", inputs: { mode: "mode", breadcrumb: "breadcrumb", isSingleItemSelected: "isSingleItemSelected", selectedItems: "selectedItems", singleActionButtons: "singleActionButtons", bulkActionButtons: "bulkActionButtons", addButtonConfigs: "addButtonConfigs", filters: "filters", filterModel: "filterModel", showSearch: "showSearch", first: "first", rows: "rows", totalRecords: "totalRecords", apiName: "apiName", actions: "actions" }, outputs: { singleItemAction: "singleItemAction", bulkAction: "bulkAction", search: "search", resetSearch: "resetSearch", action: "action", paginateChange: "paginateChange" }, providers: [DialogService], ngImport: i0, template: "@if (mode !== 'form-only' && mode !== 'detail') {\r\n<div class=\"flex items-start gap-2 justify-between\">\r\n <div>\r\n <app-breadcrumb\r\n class=\"xs:block hidden\"\r\n [breadcrumb]=\"breadcrumb\"\r\n ></app-breadcrumb>\r\n </div>\r\n\r\n <div class=\"flex items-center gap-2 justify-end flex-wrap\">\r\n @if (mode === 'full') {\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0645\u0641\u0631\u062F\u0629 -->\r\n @if (isSingleItemSelected) {\r\n @for (btn of singleActionButtons; track trackByIdx($index)) {\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [severity]=\"btn.severity\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onSingleItemAction(btn)\"\r\n ></lib-generic-button>\r\n }\r\n }\r\n }\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0645\u062A\u0639\u062F\u062F\u0629 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 -->\r\n @if (selectedItems.length > 0) {\r\n @for (btn of bulkActionButtons; track trackByIdx($index)) {\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [severity]=\"btn.severity\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onInternalBulkAction(btn)\"\r\n ></lib-generic-button>\r\n }\r\n }\r\n }\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0627\u0644\u0625\u0636\u0627\u0641\u0629 -->\r\n @for (btn of addButtonConfigs; track trackByIdx($index)) {\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [severity]=\"btn.severity\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"handleButtonClick(btn)\"\r\n ></lib-generic-button>\r\n }\r\n }\r\n }\r\n </div>\r\n</div>\r\n}\r\n\r\n@if (mode !== 'form-only' && mode !== 'detail') {\r\n<div class=\"mt-2 mb-4 flex items-center justify-between\">\r\n <!-- \u0627\u0644\u0628\u062D\u062B -->\r\n @if (showSearch && filters) {\r\n <lib-generic-search-advanced\r\n [model]=\"filterModel\"\r\n [fields]=\"filters\"\r\n (search)=\"applySearch($event)\"\r\n (paginationChange)=\"paginationChange($event)\"\r\n >\r\n</lib-generic-search-advanced>\r\n } @else {\r\n <div></div>\r\n }\r\n\r\n <!-- \u0623\u062F\u0648\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629 -->\r\n <div class=\"flex items-center gap-3 rtl:space-x-reverse\">\r\n <!-- Refresh Button -->\r\n <p-button\r\n icon=\"pi pi-refresh\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"hidden xs:block\"\r\n (onClick)=\"reset()\"\r\n />\r\n\r\n <p-divider layout=\"vertical\" class=\"m-0 p-0 hidden xs:block\" />\r\n\r\n\r\n <p-button (click)=\"menu.toggle($event)\" class=\"xs:block\" severity=\"secondary\" outlined icon=\"pi pi-ellipsis-v\"/>\r\n <p-menu #menu [model]=\"actions\" [popup]=\"true\" />\r\n <!-- Pagination Controls -->\r\n <div class=\"flex items-center gap-1 rtl:space-x-reverse\">\r\n <!-- First Page Button -->\r\n <p-button\r\n [icon]=\"isRTL ? 'pi pi-angle-double-right' : 'pi pi-angle-double-left'\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"hidden xs:block\"\r\n (click)=\"goFirst()\"\r\n [disabled]=\"isFirstPage()\"\r\n ></p-button>\r\n\r\n <!-- Previous Page Button -->\r\n <p-button\r\n [icon]=\"isRTL ? 'pi pi-chevron-right' : 'pi pi-chevron-left'\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"xs:block\"\r\n (click)=\"goPrev()\"\r\n [disabled]=\"isFirstPage()\"\r\n ></p-button>\r\n\r\n\r\n <!-- Current Page Display with Dropdown -->\r\n <div class=\"relative\">\r\n\r\n <p-button\r\n [label]=\"currentPage + ' / ' + totalPages()\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"hidden xs:block\"\r\n (click)=\"showPageMenu = !showPageMenu\"\r\n pTooltip=\"{{totalRecords}}\"\r\n tooltipPosition=\"top\"\r\n />\r\n\r\n\r\n </div>\r\n <!-- Next Page Button -->\r\n <p-button\r\n [icon]=\"isRTL ? 'pi pi-chevron-left' : 'pi pi-chevron-right'\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"xs:block\"\r\n (click)=\"goNext()\"\r\n [disabled]=\"isLastPage()\"\r\n ></p-button>\r\n\r\n <!-- Last Page Button -->\r\n <p-button\r\n [icon]=\"isRTL ? 'pi pi-angle-double-left' : 'pi pi-angle-double-right'\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"hidden xs:block\"\r\n (click)=\"goLast()\"\r\n [disabled]=\"isLastPage()\"\r\n ></p-button>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "component", type: GenericButton, selector: "lib-generic-button", inputs: ["model", "type", "icon", "label", "variant", "severity", "size", "iconPosition", "disabled", "loading", "ariaLabel", "extraClasses", "permission"], outputs: ["clicked", "itemClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: BreadcrumbComponent, selector: "app-breadcrumb", inputs: ["breadcrumb"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: DividerModule }, { kind: "component", type: i2.Divider, selector: "p-divider", inputs: ["styleClass", "layout", "type", "align"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo"] }, { kind: "component", type: Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex", "appendTo"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: GenericSearchAdvanced, selector: "lib-generic-search-advanced", inputs: ["model", "fields", "enableSelect", "enableGroup", "odataConfig"], outputs: ["search", "paginationChange", "odataSearch"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
210
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: GenericCrudHeaderComponent, isStandalone: true, selector: "app-generic-crud-header", inputs: { mode: "mode", breadcrumb: "breadcrumb", isSingleItemSelected: "isSingleItemSelected", selectedItems: "selectedItems", singleActionButtons: "singleActionButtons", bulkActionButtons: "bulkActionButtons", addButtonConfigs: "addButtonConfigs", filters: "filters", filterModel: "filterModel", showSearch: "showSearch", first: "first", rows: "rows", totalRecords: "totalRecords", apiName: "apiName", actions: "actions" }, outputs: { singleItemAction: "singleItemAction", bulkAction: "bulkAction", search: "search", resetSearch: "resetSearch", action: "action", paginateChange: "paginateChange" }, providers: [DialogService], ngImport: i0, template: "@if (mode !== 'form-only' && mode !== 'detail') {\r\n<div class=\"flex items-start gap-2 justify-between\">\r\n <div>\r\n <app-breadcrumb\r\n class=\"xs:block hidden\"\r\n [breadcrumb]=\"breadcrumb\"\r\n ></app-breadcrumb>\r\n </div>\r\n\r\n <div class=\"flex items-center gap-2 justify-end flex-wrap\">\r\n @if (mode === 'full') {\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0645\u0641\u0631\u062F\u0629 -->\r\n @if (isSingleItemSelected) {\r\n @for (btn of singleActionButtons; track trackByIdx($index)) {\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [severity]=\"btn.severity\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onSingleItemAction(btn)\"\r\n ></lib-generic-button>\r\n }\r\n }\r\n }\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0645\u062A\u0639\u062F\u062F\u0629 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 -->\r\n @if (selectedItems.length > 0) {\r\n @for (btn of bulkActionButtons; track trackByIdx($index)) {\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [severity]=\"btn.severity\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onInternalBulkAction(btn)\"\r\n ></lib-generic-button>\r\n }\r\n }\r\n }\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0627\u0644\u0625\u0636\u0627\u0641\u0629 -->\r\n @for (btn of addButtonConfigs; track trackByIdx($index)) {\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [severity]=\"btn.severity\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"handleButtonClick(btn)\"\r\n ></lib-generic-button>\r\n }\r\n }\r\n }\r\n </div>\r\n</div>\r\n}\r\n\r\n@if (mode !== 'form-only' && mode !== 'detail') {\r\n<div class=\"mt-2 mb-4 flex items-center justify-between\">\r\n <!-- \u0627\u0644\u0628\u062D\u062B -->\r\n @if (showSearch && filters) {\r\n <lib-generic-search-advanced\r\n [model]=\"filterModel\"\r\n [fields]=\"filters\"\r\n (search)=\"applySearch($event)\"\r\n (paginationChange)=\"paginationChange($event)\"\r\n >\r\n</lib-generic-search-advanced>\r\n } @else {\r\n <div></div>\r\n }\r\n\r\n <!-- \u0623\u062F\u0648\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629 -->\r\n <div class=\"flex items-center gap-3 rtl:space-x-reverse\">\r\n <!-- Refresh Button -->\r\n <p-button\r\n icon=\"pi pi-refresh\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"hidden xs:block\"\r\n (onClick)=\"reset()\"\r\n />\r\n\r\n <p-divider layout=\"vertical\" class=\"m-0 p-0 hidden xs:block\" />\r\n\r\n\r\n <p-button (click)=\"menu.toggle($event)\" class=\"xs:block\" severity=\"secondary\" outlined icon=\"pi pi-ellipsis-v\"/>\r\n <p-menu #menu [model]=\"actions\" [popup]=\"true\" />\r\n <!-- Pagination Controls -->\r\n <div class=\"flex items-center gap-1 rtl:space-x-reverse\">\r\n <!-- First Page Button -->\r\n <p-button\r\n [icon]=\"isRTL ? 'pi pi-angle-double-right' : 'pi pi-angle-double-left'\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"hidden xs:block\"\r\n (click)=\"goFirst()\"\r\n [disabled]=\"isFirstPage()\"\r\n ></p-button>\r\n\r\n <!-- Previous Page Button -->\r\n <p-button\r\n [icon]=\"isRTL ? 'pi pi-chevron-right' : 'pi pi-chevron-left'\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"xs:block\"\r\n (click)=\"goPrev()\"\r\n [disabled]=\"isFirstPage()\"\r\n ></p-button>\r\n\r\n\r\n <!-- Current Page Display with Dropdown -->\r\n <div class=\"relative\">\r\n\r\n <p-button\r\n [label]=\"currentPage + ' / ' + totalPages()\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"hidden xs:block\"\r\n (click)=\"showPageMenu = !showPageMenu\"\r\n pTooltip=\"{{totalRecords}}\"\r\n tooltipPosition=\"top\"\r\n />\r\n\r\n\r\n </div>\r\n <!-- Next Page Button -->\r\n <p-button\r\n [icon]=\"isRTL ? 'pi pi-chevron-left' : 'pi pi-chevron-right'\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"xs:block\"\r\n (click)=\"goNext()\"\r\n [disabled]=\"isLastPage()\"\r\n ></p-button>\r\n\r\n <!-- Last Page Button -->\r\n <p-button\r\n [icon]=\"isRTL ? 'pi pi-angle-double-left' : 'pi pi-angle-double-right'\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"hidden xs:block\"\r\n (click)=\"goLast()\"\r\n [disabled]=\"isLastPage()\"\r\n ></p-button>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "component", type: GenericButton, selector: "lib-generic-button", inputs: ["model", "type", "icon", "label", "variant", "severity", "size", "iconPosition", "disabled", "loading", "ariaLabel", "extraClasses", "permission"], outputs: ["clicked", "itemClick"] }, { kind: "component", type: BreadcrumbComponent, selector: "app-breadcrumb", inputs: ["breadcrumb"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: DividerModule }, { kind: "component", type: i2.Divider, selector: "p-divider", inputs: ["styleClass", "layout", "type", "align"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo"] }, { kind: "component", type: Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex", "appendTo"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: GenericSearchAdvanced, selector: "lib-generic-search-advanced", inputs: ["model", "fields", "enableSelect", "enableGroup", "odataConfig"], outputs: ["search", "paginationChange", "odataSearch"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
212
211
  }
213
212
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericCrudHeaderComponent, decorators: [{
214
213
  type: Component,
215
214
  args: [{ selector: 'app-generic-crud-header', standalone: true, imports: [
216
215
  GenericButton,
217
- TranslateModule,
216
+ TranslatePipe,
218
217
  BreadcrumbComponent,
219
218
  CommonModule,
220
219
  ButtonModule,
@@ -279,7 +278,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
279
278
  class GenericCrudTableComponent {
280
279
  genericTable;
281
280
  dialog;
282
- translate = inject(TranslateService);
281
+ translate = inject(LocalizationService);
283
282
  swalService = inject(SwalService);
284
283
  queryBuilder = inject(QueryBuilderService);
285
284
  home = { icon: 'pi pi-home', routerLink: '/' };
@@ -598,7 +597,7 @@ class GenericCrudTableComponent {
598
597
  });
599
598
  }
600
599
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericCrudTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
601
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: GenericCrudTableComponent, isStandalone: true, selector: "app-generic-crud-table", inputs: { data: "data", formFields: "formFields", columns: "columns", dialogMaxWidth: "dialogMaxWidth", isViewMode: "isViewMode", displayMode: "displayMode", useConfirmOnSave: "useConfirmOnSave", isEditMode: "isEditMode", drawerVisible: "drawerVisible", dialogVisible: "dialogVisible", model: "model", loading: "loading", errorMsg: "errorMsg", errorMessage: "errorMessage", actions: "actions", actionsMode: "actionsMode", beforeSaveTransform: "beforeSaveTransform", filters: "filters", filterModel: "filterModel", showSearch: "showSearch", first: "first", rows: "rows", totalRecords: "totalRecords", rowSelectable: "rowSelectable", scrollHeight: "scrollHeight", paginator: "paginator", service: "service", apiName: "apiName", idField: "idField", showRowSelectionCheckbox: "showRowSelectionCheckbox", showAddButton: "showAddButton", addPermissionName: "addPermissionName", addButtonConfigs: "addButtonConfigs", createEditActions: "createEditActions", supportSubPage: "supportSubPage", tabs: "tabs", bulkActionButtons: "bulkActionButtons", singleActionButtons: "singleActionButtons", breadcrumb: "breadcrumb", mode: "mode", forceState: "forceState", hideTable: "hideTable", autoShowForm: "autoShowForm", rowStyleFn: "rowStyleFn", rowClassFn: "rowClassFn", disableRowCheckboxFn: "disableRowCheckboxFn" }, outputs: { action: "action", bulkAction: "bulkAction", singleAction: "singleAction", afterSave: "afterSave", afterDelete: "afterDelete", beforeSave: "beforeSave", beforeDelete: "beforeDelete", formCancel: "formCancel", formInit: "formInit", dataLoaded: "dataLoaded", selectionChange: "selectionChange", error: "error", search: "search", pageChange: "pageChange", onSearch: "onSearch", visibleChange: "visibleChange", rowSelect: "rowSelect" }, viewQueries: [{ propertyName: "genericTable", first: true, predicate: ["genericTable"], descendants: true }, { propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], ngImport: i0, template: "<div\r\n [class]=\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\"\r\n>\r\n <app-generic-crud-header\r\n [mode]=\"mode\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [isSingleItemSelected]=\"isSingleItemSelected\"\r\n [selectedItems]=\"_selectedRows\"\r\n [singleActionButtons]=\"singleActionButtons\"\r\n [bulkActionButtons]=\"bulkActionButtons\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [apiName]=\"service.apiName\"\r\n [filters]=\"filters\"\r\n [filterModel]=\"filterModel\"\r\n [showSearch]=\"showSearch\"\r\n (singleItemAction)=\"onSingleItemAction($event)\"\r\n (bulkAction)=\"onInternalBulkAction($event)\"\r\n (action)=\"action.emit($event)\"\r\n (search)=\"resetPage($event);applySearch($event);\"\r\n (resetSearch)=\"resetPage($event);applySearch('');\"\r\n (paginateChange)=\"onHeaderPaginateChange($event)\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n/>\r\n\r\n @if (!hideTable) {\r\n <lib-generic-table\r\n [data]=\"data\"\r\n [columns]=\"columns\"\r\n [paginator]=\"paginator\"\r\n [loading]=\"loading\"\r\n [actions]=\"actions\"\r\n [actionsMode]=\"actionsMode\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [showRowSelectionCheckbox]=\"showRowSelectionCheckbox\"\r\n (action)=\"action.emit($event)\"\r\n (onAddNew)=\"action.emit({ name: 'add', row: null! })\"\r\n (pageChange)=\"onLazyLoad($event)\"\r\n [rowSelectable]=\"rowSelectable\"\r\n (rowSelect)=\"onRowClick($event)\"\r\n [(selection)]=\"_selectedRows\"\r\n #genericTable\r\n ></lib-generic-table>\r\n\r\n }\r\n\r\n <app-generic-dialog\r\n #dialog\r\n [service]=\"service\"\r\n [apiName]=\"service.apiName\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [dialogMaxWidth]=\"dialogMaxWidth\"\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [forceState]=\"forceState\"\r\n [drawerVisible]=\"drawerVisible\"\r\n [dialogVisible]=\"dialogVisible\"\r\n [isViewMode]=\"isViewMode\"\r\n [isEditMode]=\"isEditMode\"\r\n [useConfirmOnSave]=\"useConfirmOnSave\"\r\n [loading]=\"loading\"\r\n [errorMsg]=\"errorMsg\"\r\n [errorMessage]=\"errorMessage\"\r\n [beforeSaveTransform]=\"beforeSaveTransform\"\r\n (action)=\"action.emit($event)\"\r\n (afterSave)=\"afterSave.emit($event);onSubmit();\"\r\n (afterDelete)=\"afterDelete.emit($event)\"\r\n (beforeSave)=\"beforeSave.emit($event)\"\r\n (beforeDelete)=\"beforeDelete.emit($event)\"\r\n (formCancel)=\"formCancel.emit()\"\r\n (formInit)=\"formInit.emit($event)\"\r\n (dataLoaded)=\"dataLoaded.emit($event)\"\r\n (selectionChange)=\"selectionChange.emit($event)\"\r\n (error)=\"error.emit($event)\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n >\r\n </app-generic-dialog>\r\n\r\n <app-detail-view\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [title]=\"breadcrumb_?.[0]?.label || 'Detail'\"\r\n [service]=\"service\"\r\n [apiName]=\"service.apiName\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [actions]=\"actions\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [tabs]=\"tabs\"\r\n [loading]=\"loading\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [createEditActions]=\"createEditActions\"\r\n (action)=\"action.emit($event)\"\r\n >\r\n </app-detail-view>\r\n\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TableModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: GenericTable, selector: "lib-generic-table", inputs: ["data", "columns", "loading", "actions", "actionsPosition", "actionsMode", "first", "rows", "totalRecords", "sortField", "sortOrder", "globalFilterFields", "addButtonConfigs", "scrollHeight", "rowSelectable", "rowStyleFn", "rowClassFn", "disableRowCheckboxFn", "selection", "paginator", "showRowSelectionCheckbox"], outputs: ["action", "pageChange", "onAddNew", "rowSelect", "selectionChange"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: DividerModule }, { kind: "ngmodule", type: IconFieldModule }, { kind: "ngmodule", type: DrawerModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MessageModule }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: GenericDialogComponent, selector: "app-generic-dialog", inputs: ["form", "service", "formFields", "model", "apiName", "idField", "dialogMaxWidth", "displayMode", "mode", "forceState", "drawerVisible", "dialogVisible", "isViewMode", "isEditMode", "useConfirmOnSave", "loading", "errorMsg", "errorMessage", "beforeSaveTransform", "hideTable", "autoShowForm"], outputs: ["action", "afterSave", "afterDelete", "beforeSave", "beforeDelete", "formCancel", "formInit", "dataLoaded", "selectionChange", "error", "visibleChange"] }, { kind: "component", type: GenericCrudHeaderComponent, selector: "app-generic-crud-header", inputs: ["mode", "breadcrumb", "isSingleItemSelected", "selectedItems", "singleActionButtons", "bulkActionButtons", "addButtonConfigs", "filters", "filterModel", "showSearch", "first", "rows", "totalRecords", "apiName", "actions"], outputs: ["singleItemAction", "bulkAction", "search", "resetSearch", "action", "paginateChange"] }, { kind: "component", type: GenericViewComponent, selector: "app-detail-view", inputs: ["title", "actions", "createEditActions", "tabs", "viewMode", "breadcrumb", "service", "formFields", "apiName", "idField", "standaloneMode", "isViewMode", "isCreateMode", "isEditMode", "model", "displayMode", "mode", "loading"], outputs: ["action", "afterDelete"] }] });
600
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: GenericCrudTableComponent, isStandalone: true, selector: "app-generic-crud-table", inputs: { data: "data", formFields: "formFields", columns: "columns", dialogMaxWidth: "dialogMaxWidth", isViewMode: "isViewMode", displayMode: "displayMode", useConfirmOnSave: "useConfirmOnSave", isEditMode: "isEditMode", drawerVisible: "drawerVisible", dialogVisible: "dialogVisible", model: "model", loading: "loading", errorMsg: "errorMsg", errorMessage: "errorMessage", actions: "actions", actionsMode: "actionsMode", beforeSaveTransform: "beforeSaveTransform", filters: "filters", filterModel: "filterModel", showSearch: "showSearch", first: "first", rows: "rows", totalRecords: "totalRecords", rowSelectable: "rowSelectable", scrollHeight: "scrollHeight", paginator: "paginator", service: "service", apiName: "apiName", idField: "idField", showRowSelectionCheckbox: "showRowSelectionCheckbox", showAddButton: "showAddButton", addPermissionName: "addPermissionName", addButtonConfigs: "addButtonConfigs", createEditActions: "createEditActions", supportSubPage: "supportSubPage", tabs: "tabs", bulkActionButtons: "bulkActionButtons", singleActionButtons: "singleActionButtons", breadcrumb: "breadcrumb", mode: "mode", forceState: "forceState", hideTable: "hideTable", autoShowForm: "autoShowForm", rowStyleFn: "rowStyleFn", rowClassFn: "rowClassFn", disableRowCheckboxFn: "disableRowCheckboxFn" }, outputs: { action: "action", bulkAction: "bulkAction", singleAction: "singleAction", afterSave: "afterSave", afterDelete: "afterDelete", beforeSave: "beforeSave", beforeDelete: "beforeDelete", formCancel: "formCancel", formInit: "formInit", dataLoaded: "dataLoaded", selectionChange: "selectionChange", error: "error", search: "search", pageChange: "pageChange", onSearch: "onSearch", visibleChange: "visibleChange", rowSelect: "rowSelect" }, viewQueries: [{ propertyName: "genericTable", first: true, predicate: ["genericTable"], descendants: true }, { propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], ngImport: i0, template: "<div\r\n [class]=\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\"\r\n>\r\n <app-generic-crud-header\r\n [mode]=\"mode\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [isSingleItemSelected]=\"isSingleItemSelected\"\r\n [selectedItems]=\"_selectedRows\"\r\n [singleActionButtons]=\"singleActionButtons\"\r\n [bulkActionButtons]=\"bulkActionButtons\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [apiName]=\"service.apiName\"\r\n [filters]=\"filters\"\r\n [filterModel]=\"filterModel\"\r\n [showSearch]=\"showSearch\"\r\n (singleItemAction)=\"onSingleItemAction($event)\"\r\n (bulkAction)=\"onInternalBulkAction($event)\"\r\n (action)=\"action.emit($event)\"\r\n (search)=\"resetPage($event);applySearch($event);\"\r\n (resetSearch)=\"resetPage($event);applySearch('');\"\r\n (paginateChange)=\"onHeaderPaginateChange($event)\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n/>\r\n\r\n @if (!hideTable) {\r\n <lib-generic-table\r\n [data]=\"data\"\r\n [columns]=\"columns\"\r\n [paginator]=\"paginator\"\r\n [loading]=\"loading\"\r\n [actions]=\"actions\"\r\n [actionsMode]=\"actionsMode\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [showRowSelectionCheckbox]=\"showRowSelectionCheckbox\"\r\n (action)=\"action.emit($event)\"\r\n (onAddNew)=\"action.emit({ name: 'add', row: null! })\"\r\n (pageChange)=\"onLazyLoad($event)\"\r\n [rowSelectable]=\"rowSelectable\"\r\n (rowSelect)=\"onRowClick($event)\"\r\n [(selection)]=\"_selectedRows\"\r\n #genericTable\r\n ></lib-generic-table>\r\n\r\n }\r\n\r\n <app-generic-dialog\r\n #dialog\r\n [service]=\"service\"\r\n [apiName]=\"service.apiName\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [dialogMaxWidth]=\"dialogMaxWidth\"\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [forceState]=\"forceState\"\r\n [drawerVisible]=\"drawerVisible\"\r\n [dialogVisible]=\"dialogVisible\"\r\n [isViewMode]=\"isViewMode\"\r\n [isEditMode]=\"isEditMode\"\r\n [useConfirmOnSave]=\"useConfirmOnSave\"\r\n [loading]=\"loading\"\r\n [errorMsg]=\"errorMsg\"\r\n [errorMessage]=\"errorMessage\"\r\n [beforeSaveTransform]=\"beforeSaveTransform\"\r\n (action)=\"action.emit($event)\"\r\n (afterSave)=\"afterSave.emit($event);onSubmit();\"\r\n (afterDelete)=\"afterDelete.emit($event)\"\r\n (beforeSave)=\"beforeSave.emit($event)\"\r\n (beforeDelete)=\"beforeDelete.emit($event)\"\r\n (formCancel)=\"formCancel.emit()\"\r\n (formInit)=\"formInit.emit($event)\"\r\n (dataLoaded)=\"dataLoaded.emit($event)\"\r\n (selectionChange)=\"selectionChange.emit($event)\"\r\n (error)=\"error.emit($event)\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n >\r\n </app-generic-dialog>\r\n\r\n <app-detail-view\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [title]=\"breadcrumb_?.[0]?.label || 'Detail'\"\r\n [service]=\"service\"\r\n [apiName]=\"service.apiName\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [actions]=\"actions\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [tabs]=\"tabs\"\r\n [loading]=\"loading\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [createEditActions]=\"createEditActions\"\r\n (action)=\"action.emit($event)\"\r\n >\r\n </app-detail-view>\r\n\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TableModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: GenericTable, selector: "lib-generic-table", inputs: ["data", "columns", "loading", "actions", "actionsPosition", "actionsMode", "first", "rows", "totalRecords", "sortField", "sortOrder", "globalFilterFields", "addButtonConfigs", "scrollHeight", "rowSelectable", "rowStyleFn", "rowClassFn", "disableRowCheckboxFn", "selection", "paginator", "showRowSelectionCheckbox"], outputs: ["action", "pageChange", "onAddNew", "rowSelect", "selectionChange"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "ngmodule", type: DividerModule }, { kind: "ngmodule", type: IconFieldModule }, { kind: "ngmodule", type: DrawerModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MessageModule }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: GenericDialogComponent, selector: "app-generic-dialog", inputs: ["form", "service", "formFields", "model", "apiName", "idField", "dialogMaxWidth", "displayMode", "mode", "forceState", "drawerVisible", "dialogVisible", "isViewMode", "isEditMode", "useConfirmOnSave", "loading", "errorMsg", "errorMessage", "beforeSaveTransform", "hideTable", "autoShowForm"], outputs: ["action", "afterSave", "afterDelete", "beforeSave", "beforeDelete", "formCancel", "formInit", "dataLoaded", "selectionChange", "error", "visibleChange"] }, { kind: "component", type: GenericCrudHeaderComponent, selector: "app-generic-crud-header", inputs: ["mode", "breadcrumb", "isSingleItemSelected", "selectedItems", "singleActionButtons", "bulkActionButtons", "addButtonConfigs", "filters", "filterModel", "showSearch", "first", "rows", "totalRecords", "apiName", "actions"], outputs: ["singleItemAction", "bulkAction", "search", "resetSearch", "action", "paginateChange"] }, { kind: "component", type: GenericViewComponent, selector: "app-detail-view", inputs: ["title", "actions", "createEditActions", "tabs", "viewMode", "breadcrumb", "service", "formFields", "apiName", "idField", "standaloneMode", "isViewMode", "isCreateMode", "isEditMode", "model", "displayMode", "mode", "loading"], outputs: ["action", "afterDelete"] }] });
602
601
  }
603
602
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericCrudTableComponent, decorators: [{
604
603
  type: Component,
@@ -608,7 +607,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
608
607
  ButtonModule,
609
608
  GenericTable,
610
609
  ToolbarModule,
611
- TranslateModule,
610
+ TranslatePipe,
612
611
  DividerModule,
613
612
  IconFieldModule,
614
613
  DrawerModule,