@cauca-911/datagrid 22.3.3 → 22.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/cauca-911-datagrid.mjs +1949 -6559
- package/fesm2022/cauca-911-datagrid.mjs.map +1 -1
- package/package.json +1 -2
- package/types/cauca-911-datagrid.d.ts +529 -1024
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cauca-911-datagrid.mjs","names":[],"sources":["../../../projects/cauca-datagrid/src/lib/data-grid/models/data-grid-row-drop-event.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/base-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/models/grid-export.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-export-menu/data-grid-export-menu.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-export-menu/data-grid-export-menu.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-header/data-grid-header.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-header/data-grid-header.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/models/density-enum.ts","../../../projects/cauca-datagrid/src/lib/services/preference.ts","../../../projects/cauca-datagrid/src/lib/services/mat-paginator-localization.service.ts","../../../projects/cauca-datagrid/src/lib/services/preference.service.ts","../../../projects/cauca-datagrid/src/lib/provide-cauca-grid.ts","../../../projects/cauca-datagrid/src/lib/data-grid/models/export-cell.ts","../../../projects/cauca-datagrid/src/lib/services/grid-export.service.ts","../../../projects/cauca-datagrid/src/lib/data-grid/base-data-grid.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/button-popover/button-popover.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/button-popover/button-popover.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-table-options/data-grid-table-options.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-table-options/data-grid-table-options.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-progress-spiner/data-grid-progress-spiner.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-progress-spiner/data-grid-progress-spiner.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/data-grid/data-grid.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/data-grid/data-grid.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/odata-grid/odata-listing.service.ts","../../../projects/cauca-datagrid/src/lib/data-grid/odata-grid/grid-url-state.ts","../../../projects/cauca-datagrid/src/lib/data-grid/odata-grid/odata-grid.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/odata-grid/odata-grid.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/grid-state-restoration.service.ts","../../../projects/cauca-datagrid/src/lib/data-grid/provide-grid-state-restoration.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/color-data-grid-column/color-data-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/color-data-grid-column/color-data-grid-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/components/check-icon/check-icon.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-check-column/data-grid-check-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-check-column/data-grid-check-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-column/data-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-column/data-grid-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-command-icon-column/data-grid-command-icon-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-command-icon-column/data-grid-command-icon-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-commands-column/data-grid-commands-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-commands-column/data-grid-commands-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-icon-column/data-grid-icon-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-icon-column/data-grid-icon-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-menu-column/data-grid-menu-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-menu-column/data-grid-menu-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/components/time-label/display-date.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/time-label/time-label.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/time-label/time-label.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/date-grid-column/date-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/date-grid-column/date-grid-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/sortable-data-grid-check-column/sortable-data-grid-check-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/sortable-data-grid-check-column/sortable-data-grid-check-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/components/column-label/phone-format.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/column-label/column-label.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/column-label/column-label.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/sortable-data-grid-column/sortable-data-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/sortable-data-grid-column/sortable-data-grid-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/translation-grid-column/translation-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/translation-grid-column/translation-grid-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/time-span-data-grid-column/time-span-data-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/time-span-data-grid-column/time-span-data-grid-column.component.html"],"sourcesContent":["export class DataGridRowDropEvent {\r\n public item: unknown;\r\n public data: unknown[];\r\n public fromIndex: number;\r\n public toIndex: number;\r\n\r\n public constructor(data: {\r\n item: unknown;\r\n data: unknown[];\r\n fromIndex: number;\r\n toIndex: number;\r\n }) {\r\n Object.assign(this, data);\r\n }\r\n}\r\n","import { Component, HostBinding, OnDestroy, OnInit, Optional, ViewChild, ViewEncapsulation, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatCellDef, MatColumnDef, MatFooterCellDef, MatHeaderCellDef, MatTable } from '@angular/material/table';\r\nimport { ExportCell } from '../models/export-cell';\r\n\r\nexport type { ExportCell } from '../models/export-cell';\r\n\r\n@Component({ template: '' ,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport abstract class BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public readonly prop = input('');\r\n public readonly showLabel = input(true);\r\n public readonly label = input<string | undefined>(undefined);\r\n public readonly isInColumnChooser = input(true);\r\n public readonly visibleByDefault = input(true);\r\n public readonly width = input('');\r\n public readonly showToolTip = input(true);\r\n public readonly exportable = input(true);\r\n\r\n @HostBinding('attr.ariaHidden') public ariaHidden!: true;\r\n @HostBinding('class') public classes!: 'column-template cdk-visually-hidden';\r\n\r\n @ViewChild(MatColumnDef, { static: true }) public columnDef!: MatColumnDef;\r\n @ViewChild(MatCellDef, { static: true }) public cellDef!: MatCellDef;\r\n @ViewChild(MatHeaderCellDef, { static: true }) public headerCellDef!: MatHeaderCellDef;\r\n @ViewChild(MatFooterCellDef, { static: true }) public footerCellDef!: MatFooterCellDef;\r\n\r\n public selected: boolean = true;\r\n\r\n public constructor(@Optional() public table: MatTable<unknown>) {\r\n }\r\n\r\n public ngOnInit(): void {\r\n if (this.columnDef) {\r\n if (!this.columnDef.name) {\r\n this.columnDef.name = this.prop();\r\n }\r\n this.columnDef.cell = this.cellDef;\r\n this.columnDef.headerCell = this.headerCellDef;\r\n this.columnDef.footerCell = this.footerCellDef;\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (this.table) {\r\n this.table.removeColumnDef(this.columnDef);\r\n }\r\n }\r\n\r\n public capitalize(value: string): string {\r\n return value.charAt(0).toUpperCase() + value.slice(1);\r\n }\r\n\r\n public getExportValue(row: Record<string, unknown>): ExportCell {\r\n return (row?.[this.prop()] as ExportCell) ?? null;\r\n }\r\n\r\n public getExportHeader(): string {\r\n return this.label() ?? this.capitalize(this.prop());\r\n }\r\n}\r\n","import { BaseGridColumnComponent, ExportCell } from '../columns/base-grid-column.component';\r\n\r\nexport type GridExportFormat = 'excel' | 'pdf';\r\n\r\nexport const ALL_EXPORT_FORMATS: readonly GridExportFormat[] = ['excel', 'pdf'];\r\n\r\nexport interface ExportMatrix {\r\n title?: string;\r\n headers: string[];\r\n rows: ExportCell[][];\r\n}\r\n\r\nexport const GRID_OWNED_COLUMNS: readonly string[] = ['', 'position', 'buttons', 'menu', 'expand'];\r\n\r\nexport function buildExportMatrix(\r\n columnOrder: readonly string[],\r\n columns: readonly BaseGridColumnComponent[],\r\n rows: readonly Record<string, unknown>[],\r\n title?: string,\r\n): ExportMatrix {\r\n const exportedColumns = columnOrder\r\n .filter(name => !GRID_OWNED_COLUMNS.includes(name))\r\n .map(name => columns.find(column => column.columnDef?.name === name))\r\n .filter(column => !!column && column.exportable());\r\n\r\n return {\r\n title: title || undefined,\r\n headers: exportedColumns.map(column => column.getExportHeader()),\r\n rows: (rows ?? []).map(row => exportedColumns.map(column => column.getExportValue(row))),\r\n };\r\n}\r\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { IconButtonComponent, MenuItemComponent } from '@cauca-911/material';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { ALL_EXPORT_FORMATS, GridExportFormat } from '../../models/grid-export';\r\n\r\nconst FORMAT_MENU_ITEMS: Record<GridExportFormat, { icon: string; label: string }> = {\r\n excel: { icon: 'table_view', label: 'dataGrid.export.excel' },\r\n pdf: { icon: 'picture_as_pdf', label: 'dataGrid.export.pdf' },\r\n};\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-export-menu',\r\n templateUrl: './data-grid-export-menu.component.html',\r\n styleUrl: './data-grid-export-menu.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [IconButtonComponent, MenuItemComponent, MatMenuModule, TranslatePipe],\r\n})\r\nexport class DataGridExportMenuComponent {\r\n\r\n public readonly formats = input<readonly GridExportFormat[]>(ALL_EXPORT_FORMATS);\r\n public readonly exportRequest = output<GridExportFormat>();\r\n\r\n protected readonly menuItems = FORMAT_MENU_ITEMS;\r\n\r\n protected onExport(format: GridExportFormat): void {\r\n this.exportRequest.emit(format);\r\n }\r\n}\r\n","<cauca-icon-button icon=\"download\" colorOnHover=\"var(--primary)\" [matMenuTriggerFor]=\"exportMenu\"\r\n [ariaLabel]=\"'dataGrid.export.title' | translate\" />\r\n\r\n<mat-menu #exportMenu=\"matMenu\">\r\n @for (format of formats(); track format) {\r\n <cauca-menu-item [icon]=\"menuItems[format].icon\" [label]=\"menuItems[format].label\" [translateLabel]=\"true\"\r\n (buttonClick)=\"onExport(format)\" [class]=\"'export-' + format + '-button'\" />\r\n }\r\n <ng-content select=\"[exportItem]\" />\r\n</mat-menu>\r\n","import { Component, OnDestroy, OnInit, input, output, signal, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { IconButtonComponent, RaisedButtonComponent } from '@cauca-911/material';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { Subject, debounceTime, takeUntil } from 'rxjs';\r\nimport { DataGridExportMenuComponent } from '../data-grid-export-menu/data-grid-export-menu.component';\r\nimport { ALL_EXPORT_FORMATS, GridExportFormat } from '../../models/grid-export';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-header',\r\n templateUrl: './data-grid-header.component.html',\r\n styleUrls: ['./data-grid-header.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatFormFieldModule, IconButtonComponent, RaisedButtonComponent, MatInputModule, ReactiveFormsModule, TranslatePipe, MatIcon, DataGridExportMenuComponent],\r\n})\r\nexport class DataGridHeaderComponent implements OnInit, OnDestroy {\r\n\r\n public filterControl: FormControl<string> = new FormControl<string>('');\r\n\r\n /** Written from the debounced valueChanges subscription and by OdataGridComponent when it\r\n * restores persisted state, so it is a signal: neither is a change-detection trigger\r\n * under zoneless (ADR-0004). */\r\n public readonly showClearButton = signal(false);\r\n\r\n public readonly showAddButton = input(false);\r\n public readonly showRefreshButton = input(false);\r\n public readonly showExportMenu = input(false);\r\n public readonly exportFormats = input<readonly GridExportFormat[]>(ALL_EXPORT_FORMATS);\r\n public readonly addButtonLabel = input('');\r\n public readonly searchPlaceholder = input('');\r\n public readonly showSearchBar = input(true);\r\n public readonly disableAddButton = input(false);\r\n public readonly filterChange = output<string>();\r\n public readonly addButtonClick = output<void>();\r\n public readonly refreshRequest = output<void>();\r\n public readonly exportRequest = output<GridExportFormat>();\r\n\r\n protected _onDestroy = new Subject<void>();\r\n\r\n public ngOnInit(): void {\r\n this.filterControl.valueChanges\r\n .pipe(\r\n debounceTime(500),\r\n takeUntil(this._onDestroy))\r\n .subscribe((filter: string) => {\r\n this.filterChange.emit(filter);\r\n this.showClearButton.set(!!filter);\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._onDestroy.next();\r\n this._onDestroy.complete();\r\n }\r\n\r\n public onRefresh(): void {\r\n this.refreshRequest.emit();\r\n }\r\n\r\n public clearSearchValue(): void {\r\n this.filterControl.setValue('');\r\n }\r\n\r\n public onAddButtonClick(): void {\r\n this.addButtonClick.emit();\r\n }\r\n}\r\n","<div class=\"grid-header\">\r\n\r\n @if (showSearchBar()) {\r\n <mat-form-field appearance=\"outline\" class=\"full-width-field grid-search-box\" subscriptSizing=\"dynamic\">\r\n @if (showClearButton()) { <cauca-icon-button matPrefix (buttonClick)=\"clearSearchValue()\" icon=\"close\" /> }\r\n <mat-label>{{ 'dataGrid.keywordsLabel' | translate}}</mat-label>\r\n <input matInput [formControl]=\"filterControl\" [placeholder]=\"searchPlaceholder()\">\r\n <mat-icon matSuffix>search</mat-icon>\r\n </mat-form-field>\r\n }\r\n\r\n <ng-content select=\"[filterRow]\" ngProjectAs=\"[filterRow]\" />\r\n\r\n @if (showRefreshButton()) { <cauca-icon-button (buttonClick)=\"onRefresh()\" icon=\"refresh\" class=\"grid-refresh-button\" /> }\r\n\r\n @if (showExportMenu()) {\r\n <cauca-data-grid-export-menu [formats]=\"exportFormats()\" (exportRequest)=\"exportRequest.emit($event)\" class=\"grid-export-menu\">\r\n <ng-content select=\"[exportItem]\" ngProjectAs=\"[exportItem]\" />\r\n </cauca-data-grid-export-menu>\r\n }\r\n\r\n @if (showAddButton()) { <cauca-raised-button icon=\"add\" color=\"primary\" [label]=\"addButtonLabel()\" [translateLabel]=\"false\" class=\"grid-new-button\" [isDisabled]=\"disableAddButton()\" (buttonClick)=\"onAddButtonClick()\" /> }\r\n</div>","export enum Density {\r\n Compact = \"compact\",\r\n Standard = \"standard\",\r\n Comfortable = \"comfortable\"\r\n}","import { Density } from \"../data-grid/models/density-enum\";\r\n\r\nexport class Preference {\r\n public gridDensity: Density;\r\n}\r\n\r\nexport class GridConfiguration {\r\n public name: string;\r\n public visibleColumns: string[];\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatPaginatorIntl } from \"@angular/material/paginator\";\r\nimport { TranslateService } from \"@cauca-911/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MatPaginatorLocalizationService extends MatPaginatorIntl {\r\n public itemsPerPageLabel: string = 'Items per page';\r\n public nextPageLabel: string = 'Next page';\r\n public previousPageLabel: string = 'Previous page';\r\n public ofLabel: string = 'of'\r\n\r\n public constructor(\r\n private readonly translateService: TranslateService) {\r\n super();\r\n this.translateService.onLangChange.subscribe(() => this.loadTranslations());\r\n this.loadTranslations();\r\n }\r\n\r\n public getRangeLabel = (page, pageSize, length): string => {\r\n if (length == 0 || pageSize == 0) {\r\n return `0 ${this.ofLabel} ${length}`;\r\n }\r\n\r\n length = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\r\n return `${startIndex + 1} – ${endIndex} ${this.ofLabel} ${length}`;\r\n };\r\n\r\n private loadTranslations(): any {\r\n this.translateService.get([\r\n 'paginator.itemsPerPage',\r\n 'paginator.nextPage',\r\n 'paginator.previousPage',\r\n 'paginator.of'\r\n ])\r\n .subscribe(translation => {\r\n this.itemsPerPageLabel = translation['paginator.itemsPerPage'];\r\n this.nextPageLabel = translation['paginator.nextPage'];\r\n this.previousPageLabel = translation['paginator.previousPage'];\r\n this.ofLabel = translation['paginator.of'];\r\n this.changes.next();\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { GridConfiguration, Preference } from './preference';\r\nimport { Density } from '../data-grid/models/density-enum';\r\nimport { BasePreferenceService } from './base-preference-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PreferenceService implements BasePreferenceService {\r\n public preference: BehaviorSubject<Preference> = new BehaviorSubject<Preference>(new Preference());\r\n\r\n public gridConfiguration: GridConfiguration[] = [];\r\n\r\n public constructor() {\r\n const data = localStorage.getItem('GridPreference');\r\n const configuration = localStorage.getItem('GridConfiguration');\r\n if (data) {\r\n this.preference.next(JSON.parse(data));\r\n }\r\n if (configuration) {\r\n this.gridConfiguration = JSON.parse(configuration);\r\n }\r\n }\r\n\r\n public getPreference(): Preference {\r\n return this.preference.value;\r\n }\r\n\r\n public setPreferenceDensity(density: Density) {\r\n const preference = this.getPreference();\r\n if (density === preference.gridDensity) return;\r\n preference.gridDensity = density;\r\n this.preference.next(preference);\r\n this.addOrUpdatePreference();\r\n }\r\n\r\n public addOrUpdatePreference(): void {\r\n localStorage.setItem('GridPreference', JSON.stringify(this.getPreference()));\r\n }\r\n\r\n public getPreferenceForGrid(gridName: string): Observable<GridConfiguration> {\r\n return of(this.getPreferenceForGridNotObservable(gridName));\r\n }\r\n\r\n public addOrUpdateGridPreference(gridName: string, visibleColumns: string[]): Observable<void> {\r\n const configuration = this.getPreferenceForGridNotObservable(gridName);\r\n configuration.visibleColumns = visibleColumns || [];\r\n localStorage.setItem('GridConfiguration', JSON.stringify(this.gridConfiguration));\r\n return of();\r\n }\r\n\r\n private getPreferenceForGridNotObservable(gridName: string): GridConfiguration {\r\n const configuration = this.gridConfiguration.find(g => g.name == gridName);\r\n if (configuration) {\r\n return configuration;\r\n }\r\n const newConfiguration = new GridConfiguration();\r\n newConfiguration.name = gridName;\r\n this.gridConfiguration.push(newConfiguration);\r\n return newConfiguration;\r\n }\r\n}","import { CDK_DRAG_CONFIG } from \"@angular/cdk/drag-drop\";\r\nimport { Provider, EnvironmentProviders, Type, InjectionToken } from \"@angular/core\";\r\nimport { MatPaginatorIntl } from \"@angular/material/paginator\";\r\nimport { MatPaginatorLocalizationService } from \"./services/mat-paginator-localization.service\";\r\nimport { PreferenceService } from \"./services/preference.service\";\r\nimport { BasePreferenceService } from \"./services/base-preference-service\";\r\n\r\nexport interface CaucaGridOptions {\r\n /** If not provided, a default implementation will be used which will use localStorage to store the grid preferences. */\r\n gridPreferenceService?: Type<BasePreferenceService>\r\n}\r\n\r\nexport const PREFERENCE_SERVICE_TOKEN = new InjectionToken<BasePreferenceService>('CaucaGridPreferenceService');\r\n\r\nexport function provideCaucaGrid(options?: CaucaGridOptions): (Provider|EnvironmentProviders) {\r\n return [\r\n { provide: CDK_DRAG_CONFIG, useValue: { previewContainer: 'parent' } },\r\n { provide: MatPaginatorIntl, useClass: MatPaginatorLocalizationService },\r\n { provide: PREFERENCE_SERVICE_TOKEN, useClass: options?.gridPreferenceService || PreferenceService }\r\n ];\r\n}\r\n","export type ExportValue = string | number | boolean | Date | null;\r\n\r\nexport interface FilledExportCell {\r\n value: ExportValue;\r\n fillColor: string;\r\n}\r\n\r\nexport type ExportCell = ExportValue | FilledExportCell;\r\n\r\nconst HEX_COLOR_PATTERN = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;\r\nconst SHORT_HEX_LENGTH = 3;\r\nconst ALPHA_OPAQUE = 'FF';\r\n\r\nexport function isFilledExportCell(cell: ExportCell): cell is FilledExportCell {\r\n return typeof cell === 'object' && cell !== null && !(cell instanceof Date) && 'fillColor' in cell;\r\n}\r\n\r\nexport function hexToArgb(fillColor: string): string | undefined {\r\n if (!HEX_COLOR_PATTERN.test(fillColor)) {\r\n return undefined;\r\n }\r\n\r\n const hex = fillColor.slice(1);\r\n const expandedHex = hex.length === SHORT_HEX_LENGTH\r\n ? hex.split('').map(digit => digit + digit).join('')\r\n : hex;\r\n\r\n return `${ALPHA_OPAQUE}${expandedHex}`.toUpperCase();\r\n}\r\n","import { formatDate } from '@angular/common';\r\nimport { inject, Injectable, LOCALE_ID } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ExportCell, ExportValue, hexToArgb, isFilledExportCell } from '../data-grid/models/export-cell';\r\nimport { ExportMatrix } from '../data-grid/models/grid-export';\r\nimport type { CellHookData } from 'jspdf-autotable';\r\n\r\nconst XLSX_MIME = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\r\nconst DATE_MASK = 'dd/MM/yyyy HH:mm';\r\nconst EXCEL_DATE_FORMAT = 'dd/mm/yyyy hh:mm';\r\nconst COLUMN_WIDTH = 24;\r\nconst FONT_NAME = 'Aptos Narrow';\r\nconst FONT_FAMILY = 2;\r\nconst EXCEL_TITLE_FONT_SIZE = 25;\r\nconst TITLE_FONT_SIZE = 14;\r\nconst PAGE_MARGIN = 14;\r\nconst TITLE_BASELINE = 15;\r\nconst TABLE_TOP_WITH_TITLE = 22;\r\nconst MIN_CELL_WIDTH = 15;\r\nconst FILL_BORDER_WIDTH = 0.2;\r\nconst FILL_BORDER_COLOR = '#333333';\r\nconst THIN_BORDER = { style: 'thin' } as const;\r\nconst FILL_CELL_BORDER = { top: THIN_BORDER, left: THIN_BORDER, bottom: THIN_BORDER, right: THIN_BORDER };\r\n\r\ntype WorkbookConstructor = typeof import('exceljs').Workbook;\r\ntype ExcelCell = import('exceljs').Cell;\r\n\r\ninterface ExcelJsNamespace {\r\n Workbook?: WorkbookConstructor;\r\n default?: { Workbook?: WorkbookConstructor };\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GridExportService {\r\n\r\n private readonly locale = inject(LOCALE_ID);\r\n private readonly translateService = inject(TranslateService);\r\n\r\n public async toExcel(matrix: ExportMatrix, fileName: string): Promise<void> {\r\n const Workbook = await this.loadWorkbook();\r\n\r\n const workbook = new Workbook();\r\n const worksheet = workbook.addWorksheet(fileName.slice(0, 31));\r\n const columnCount = matrix.headers.length;\r\n\r\n if (matrix.title) {\r\n const titleRow = worksheet.addRow([matrix.title]);\r\n titleRow.font = { name: FONT_NAME, family: FONT_FAMILY, bold: true, size: EXCEL_TITLE_FONT_SIZE };\r\n titleRow.alignment = { horizontal: 'center', vertical: 'middle' };\r\n if (columnCount > 1) {\r\n worksheet.mergeCells(1, 1, 1, columnCount);\r\n }\r\n }\r\n\r\n const headerRow = matrix.title ? 2 : 1;\r\n worksheet.addRow(matrix.headers).font = { name: FONT_NAME, family: FONT_FAMILY, bold: true };\r\n matrix.rows.forEach(row => {\r\n const addedRow = worksheet.addRow(row.map(cell => this.localize(this.valueOf(cell))));\r\n addedRow.font = { name: FONT_NAME, family: FONT_FAMILY };\r\n row.forEach((cell, columnIndex) => {\r\n if (isFilledExportCell(cell)) {\r\n this.applyFill(addedRow.getCell(columnIndex + 1), cell.fillColor);\r\n }\r\n });\r\n });\r\n\r\n (worksheet.columns ?? []).forEach((column, index) => {\r\n column.width = COLUMN_WIDTH;\r\n if (matrix.rows.some(row => this.valueOf(row[index]) instanceof Date)) {\r\n column.numFmt = EXCEL_DATE_FORMAT;\r\n }\r\n });\r\n\r\n if (columnCount > 0) {\r\n worksheet.autoFilter = {\r\n from: { row: headerRow, column: 1 },\r\n to: { row: headerRow, column: columnCount },\r\n };\r\n }\r\n\r\n const buffer = await workbook.xlsx.writeBuffer();\r\n this.download(new Blob([buffer], { type: XLSX_MIME }), `${fileName}.xlsx`);\r\n }\r\n\r\n public async toPdf(matrix: ExportMatrix, fileName: string): Promise<void> {\r\n const { jsPDF } = await this.load(() => import('jspdf'), 'jspdf');\r\n const { default: autoTable } = await this.load(() => import('jspdf-autotable'), 'jspdf-autotable');\r\n\r\n const document = new jsPDF({ orientation: 'landscape' });\r\n\r\n if (matrix.title) {\r\n document.setFontSize(TITLE_FONT_SIZE);\r\n document.text(matrix.title, PAGE_MARGIN, TITLE_BASELINE);\r\n }\r\n\r\n autoTable(document, {\r\n head: [matrix.headers],\r\n body: matrix.rows.map(row => row.map(cell => this.stringify(cell))),\r\n startY: matrix.title ? TABLE_TOP_WITH_TITLE : undefined,\r\n margin: { left: PAGE_MARGIN, right: PAGE_MARGIN },\r\n styles: { fontSize: 8, overflow: 'linebreak' },\r\n headStyles: { fontStyle: 'bold' },\r\n didParseCell: (data: CellHookData) => this.applyPdfFill(matrix, data),\r\n });\r\n\r\n document.save(`${fileName}.pdf`);\r\n }\r\n\r\n private async loadWorkbook(): Promise<WorkbookConstructor> {\r\n const excel = await this.load(() => import('exceljs'), 'exceljs') as unknown as ExcelJsNamespace;\r\n const Workbook = excel.Workbook ?? excel.default?.Workbook;\r\n\r\n if (!Workbook) {\r\n throw new Error(\r\n '@cauca-911/datagrid could not load exceljs: the module exposes no Workbook. '\r\n + 'This is a bundler CommonJS interop problem, not a missing package.',\r\n );\r\n }\r\n\r\n return Workbook;\r\n }\r\n\r\n private async load<T>(importer: () => Promise<T>, packageName: string): Promise<T> {\r\n try {\r\n return await importer();\r\n } catch (cause) {\r\n throw new Error(\r\n `@cauca-911/datagrid needs the optional peer dependency \"${packageName}\" to export. `\r\n + 'Run: npm install exceljs jspdf jspdf-autotable --save',\r\n { cause },\r\n );\r\n }\r\n }\r\n\r\n private applyFill(cell: ExcelCell, fillColor: string): void {\r\n const argb = hexToArgb(fillColor);\r\n if (!argb) {\r\n return;\r\n }\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb } };\r\n cell.border = FILL_CELL_BORDER;\r\n }\r\n\r\n private applyPdfFill(matrix: ExportMatrix, data: CellHookData): void {\r\n if (data.section !== 'body') {\r\n return;\r\n }\r\n const cell = matrix.rows[data.row.index]?.[data.column.index];\r\n if (!cell || !isFilledExportCell(cell) || !hexToArgb(cell.fillColor)) {\r\n return;\r\n }\r\n data.cell.styles.fillColor = cell.fillColor;\r\n data.cell.styles.lineColor = FILL_BORDER_COLOR;\r\n data.cell.styles.lineWidth = FILL_BORDER_WIDTH;\r\n data.cell.styles.minCellWidth = MIN_CELL_WIDTH;\r\n }\r\n\r\n private valueOf(cell: ExportCell): ExportValue {\r\n return isFilledExportCell(cell) ? cell.value : cell;\r\n }\r\n\r\n private localize(value: ExportValue): ExportValue {\r\n return typeof value === 'boolean'\r\n ? this.translateService.instant(value ? 'dataGrid.export.true' : 'dataGrid.export.false')\r\n : value;\r\n }\r\n\r\n private stringify(cell: ExportCell): string {\r\n const value = this.valueOf(cell);\r\n if (value === null || value === undefined) {\r\n return '';\r\n }\r\n if (value instanceof Date) {\r\n return formatDate(value, DATE_MASK, this.locale);\r\n }\r\n return String(this.localize(value));\r\n }\r\n\r\n private download(blob: Blob, fileName: string): void {\r\n const url = URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.download = fileName;\r\n link.click();\r\n URL.revokeObjectURL(url);\r\n }\r\n}\r\n","import {\r\n AfterContentInit, Component, ContentChild,\r\n computed, ContentChildren, Inject, inject, input, linkedSignal, output, QueryList, signal, ViewChild,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { MatColumnDef, MatFooterRowDef, MatHeaderRowDef, MatNoDataRow, MatRowDef, MatTable } from '@angular/material/table';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { BaseGridColumnComponent } from './columns/base-grid-column.component';\r\nimport { DataGridHeaderComponent } from './components/data-grid-header/data-grid-header.component';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { Density } from './models/density-enum';\r\nimport { Preference } from '../services/preference';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BasePreferenceService } from '../services/base-preference-service';\r\nimport { PREFERENCE_SERVICE_TOKEN } from '../provide-cauca-grid';\r\nimport { ALL_EXPORT_FORMATS, buildExportMatrix, GridExportFormat, GRID_OWNED_COLUMNS } from './models/grid-export';\r\nimport { GridExportService } from '../services/grid-export.service';\r\nimport { ColumnsChangedEvent } from './models/columns-changed-event';\r\n\r\n\r\n@Component({ changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: '' })\r\nexport abstract class BaseDataGridComponent implements AfterContentInit {\r\n public readonly resourceName = input.required<string>();\r\n public readonly displayedColumns = input<string[]>([]);\r\n public readonly showAddButton = input(false);\r\n public readonly disableAddButton = input(false);\r\n public readonly addButtonLabel = input('');\r\n public readonly searchPlaceholder = input('');\r\n public readonly showSearchBar = input(true);\r\n public readonly searchableColumns = input<string[]>();\r\n public readonly showTableOptions = input(false);\r\n public readonly showColumnViewer = input(true);\r\n public readonly showPaginator = input(false);\r\n public readonly hidePageSize = input(false);\r\n public readonly showExpandButton = input(false);\r\n public readonly allowExport = input(false);\r\n public readonly exportFileName = input('');\r\n public readonly exportRows = input<(() => Promise<unknown[]>) | undefined>(undefined);\r\n public readonly exportFormats = input<readonly GridExportFormat[]>(ALL_EXPORT_FORMATS);\r\n public readonly exportTitle = input('');\r\n public readonly canExport = computed(() => this.allowExport());\r\n public readonly addButtonClick = output<void>();\r\n public expandedElement = signal<any>(null);\r\n\r\n @ViewChild(DataGridHeaderComponent) public header!: DataGridHeaderComponent;\r\n @ViewChild(MatTable, { static: true }) public table: MatTable<unknown>;\r\n @ContentChildren(BaseGridColumnComponent) public regularColumns: QueryList<BaseGridColumnComponent>;\r\n @ContentChildren(MatColumnDef) public columnDefs: QueryList<MatColumnDef>;\r\n @ContentChild(MatHeaderRowDef) public headerRowDef: QueryList<MatHeaderRowDef>;\r\n @ContentChild(MatFooterRowDef) public footerRowDef: QueryList<MatFooterRowDef>;\r\n @ContentChildren(MatRowDef) public rowDefs: QueryList<MatRowDef<unknown>>;\r\n @ContentChild(MatNoDataRow) public noDataRow: MatNoDataRow;\r\n @ViewChild(MatPaginator) public paginator: MatPaginator;\r\n\r\n public defaultAddButtonLabel: string = '';\r\n\r\n /**\r\n * Derived from the column inputs, but overwritten when the user picks columns in the table\r\n * options — which is exactly what linkedSignal models. It replaces the ngOnChanges mirroring\r\n * this class used to do (ADR-0003).\r\n */\r\n public readonly allDisplayedColumns = linkedSignal(() => this.computeDisplayedColumns());\r\n public preference: Preference;\r\n\r\n protected sort: MatSort = null;\r\n\r\n private readonly exportService = inject(GridExportService);\r\n\r\n public get density(): typeof Density {\r\n return Density;\r\n }\r\n\r\n public constructor(translateService: TranslateService,\r\n @Inject(PREFERENCE_SERVICE_TOKEN) private preferenceService: BasePreferenceService,) {\r\n this.defaultAddButtonLabel = translateService.instant('dataGrid.defaultAddButtonLabel');\r\n }\r\n\r\n public ngAfterContentInit(): void {\r\n this.setUpPaginator(this.paginator, this.showPaginator());\r\n this.setUpFilterPredicate();\r\n if (this.table && this.regularColumns && this.rowDefs && this.columnDefs) {\r\n this.applyColumns();\r\n }\r\n\r\n if (this.showTableOptions()) {\r\n this.preferenceService.preference.subscribe((preference) => {\r\n this.preference = preference;\r\n });\r\n } else {\r\n this.preference = new Preference();\r\n }\r\n }\r\n\r\n public onExpand(element: any): void {\r\n if (this.expandedElement() === element) {\r\n this.expandedElement.set(null);\r\n } else {\r\n this.expandedElement.set(element);\r\n }\r\n }\r\n\r\n public clearFilter(): void {\r\n this.header?.clearSearchValue();\r\n }\r\n\r\n public renderRows(): void {\r\n this.forceReloadFilter();\r\n this.applyColumns();\r\n this.table.renderRows();\r\n }\r\n\r\n public onDensityChanged(density: Density): void {\r\n this.preferenceService.setPreferenceDensity(density);\r\n }\r\n\r\n public abstract getData(): unknown[];\r\n\r\n /** The rows to export when the caller supplies no `exportRows` provider; may be fetched. */\r\n protected abstract getExportSourceRows(): unknown[] | Promise<unknown[]>;\r\n protected abstract setUpFilterPredicate(): void;\r\n protected abstract setUpSort(sort: MatSort): void;\r\n protected abstract forceReloadFilter(): void;\r\n\r\n protected async onExportRequest(format: GridExportFormat): Promise<void> {\r\n const provider = this.exportRows();\r\n const rows = await (provider ? provider() : this.getExportSourceRows());\r\n const matrix = buildExportMatrix(this.allDisplayedColumns(), this.regularColumns?.toArray() ?? [], rows as Record<string, unknown>[], this.exportTitle());\r\n const fileName = this.exportFileName() || this.resourceName();\r\n\r\n await (format === 'excel'\r\n ? this.exportService.toExcel(matrix, fileName)\r\n : this.exportService.toPdf(matrix, fileName));\r\n }\r\n\r\n /** The set of columns to render, before the user's own column selection is applied. */\r\n protected computeDisplayedColumns(): string[] {\r\n return [...this.displayedColumns()];\r\n }\r\n\r\n protected setUpPaginator(_paginator: MatPaginator, _showPaginator: boolean): void {\r\n // nothing\r\n }\r\n\r\n protected onColumnsChanged({ columns, persist }: ColumnsChangedEvent): void {\r\n this.allDisplayedColumns.set([...columns]);\r\n if (!persist) {\r\n return;\r\n }\r\n const columnsToSave = this.removeMandatoryColumns([...columns]);\r\n this.preferenceService.addOrUpdateGridPreference(this.resourceName(), columnsToSave).subscribe();\r\n }\r\n\r\n protected applyColumns(): void {\r\n this.regularColumns.forEach(dynColumn => this.table.addColumnDef(dynColumn.columnDef));\r\n this.rowDefs.forEach(rowDef => this.table.addRowDef(rowDef));\r\n this.table.setNoDataRow(this.noDataRow);\r\n this.columnDefs.forEach(columnDef => {\r\n this.table.addColumnDef(columnDef);\r\n this.sort.register({ id: columnDef.name, start: 'desc', disableClear: false });\r\n });\r\n }\r\n\r\n private removeMandatoryColumns(columns: string[]): string[] {\r\n return columns.filter(column => !GRID_OWNED_COLUMNS.includes(column));\r\n }\r\n}\r\n","import { CdkConnectedOverlay, CdkOverlayOrigin, STANDARD_DROPDOWN_BELOW_POSITIONS } from '@angular/cdk/overlay';\r\nimport { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\r\nimport { BasicButtonComponent } from '@cauca-911/material';\r\n\r\n@Component({\r\n selector: 'cauca-button-popover',\r\n templateUrl: './button-popover.component.html',\r\n styleUrls: ['./button-popover.component.scss'],\r\n imports: [CdkConnectedOverlay, BasicButtonComponent, CdkOverlayOrigin],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ButtonPopoverComponent {\r\n public buttonLabel = input<string>(null);\r\n public buttonIcon = input<string>('');\r\n public color = input<string>('primary');\r\n\r\n public isActive = signal<boolean>(false);\r\n\r\n protected readonly overlayPositions = STANDARD_DROPDOWN_BELOW_POSITIONS;\r\n\r\n public toggle() {\r\n this.isActive.set(!this.isActive());\r\n }\r\n\r\n public close() {\r\n if (this.isActive()) {\r\n this.isActive.set(false);\r\n }\r\n }\r\n}\r\n","<cauca-basic-button [icon]=\"buttonIcon()\" [color]=\"color()\" [label]=\"buttonLabel()\" [translateLabel]=\"false\" (buttonClick)=\"toggle()\" cdkOverlayOrigin #popoverTrigger=\"cdkOverlayOrigin\" />\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"popoverTrigger\"\r\n [cdkConnectedOverlayOpen]=\"isActive()\"\r\n [cdkConnectedOverlayHasBackdrop]=\"isActive()\"\r\n [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop-cs'\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\r\n [cdkConnectedOverlayPush]=\"true\"\r\n [cdkConnectedOverlayViewportMargin]=\"8\"\r\n [cdkConnectedOverlayMinHeight]=\"200\"\r\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\r\n (backdropClick)=\"toggle()\">\r\n <ng-content></ng-content>\r\n</ng-template>\r\n","import { Component, inject, OnInit, QueryList, ViewChild, input, output, ChangeDetectionStrategy } from '@angular/core';\r\nimport { Density } from '../../models/density-enum';\r\nimport { BaseGridColumnComponent } from '../../columns/base-grid-column.component';\r\nimport { ButtonPopoverComponent } from '../button-popover/button-popover.component';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { BasicButtonComponent, MenuItemComponent, RaisedButtonComponent, StrokedButtonComponent } from '@cauca-911/material';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { PREFERENCE_SERVICE_TOKEN } from '../../../provide-cauca-grid';\r\nimport { ColumnsChangedEvent } from '../../models/columns-changed-event';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-table-options',\r\n templateUrl: './data-grid-table-options.component.html',\r\n styleUrls: ['./data-grid-table-options.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatCardModule, ButtonPopoverComponent, MatCheckboxModule, StrokedButtonComponent, RaisedButtonComponent, BasicButtonComponent, MatMenuModule, FormsModule, TranslatePipe, MenuItemComponent],\r\n})\r\nexport class DataGridTableOptionsComponent implements OnInit {\r\n public readonly gridName = input.required<string>();\r\n public readonly showColumnViewer = input(true);\r\n public readonly allColumns = input<QueryList<BaseGridColumnComponent>>(new QueryList());\r\n\r\n public readonly densityChanged = output<Density>();\r\n public readonly columnsChanged = output<ColumnsChangedEvent>();\r\n\r\n @ViewChild(ButtonPopoverComponent, { static: true }) public columnViewer: ButtonPopoverComponent;\r\n\r\n public columnsSearch: string = '';\r\n\r\n private readonly preferenceService = inject(PREFERENCE_SERVICE_TOKEN);\r\n\r\n public get density(): typeof Density {\r\n return Density;\r\n }\r\n\r\n public get columns(): BaseGridColumnComponent[] {\r\n return this.allColumns().filter(c => c.prop() !== 'buttons' && c.prop() !== 'menu' && c.prop() !== '' && c.isInColumnChooser());\r\n }\r\n\r\n public get currentDensityIcon(): string {\r\n const currentDensity = this.preferenceService.getPreference()?.gridDensity;\r\n if (currentDensity === Density.Compact) {\r\n return 'density_small';\r\n }\r\n\r\n if (currentDensity === Density.Comfortable) {\r\n return 'density_large';\r\n }\r\n\r\n return 'density_medium';\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.preferenceService.getPreferenceForGrid(this.gridName()).subscribe({\r\n next: configuration => {\r\n if (configuration?.visibleColumns) {\r\n this.selectOnlyUserColumns(configuration.visibleColumns);\r\n } else {\r\n this.selectDefaultColumns();\r\n }\r\n this.onColumnsChanged(false);\r\n }\r\n });\r\n }\r\n\r\n public closeColumnViewer(): void {\r\n if (this.columnViewer) {\r\n this.columnViewer.close();\r\n }\r\n }\r\n\r\n public changeDensity(newDensity: Density): void {\r\n this.densityChanged.emit(newDensity);\r\n }\r\n\r\n public onColumnsChanged(persist = true): void {\r\n const newColumns = this.allColumns().filter(column => column.selected);\r\n this.columnsChanged.emit({ columns: newColumns.map((column) => column.prop()), persist });\r\n }\r\n\r\n public resetColumns(): void {\r\n this.selectDefaultColumns();\r\n this.onColumnsChanged();\r\n }\r\n\r\n public showAllColumns(): void {\r\n this.allColumns().forEach((column => column.selected = true));\r\n this.onColumnsChanged();\r\n }\r\n\r\n private selectOnlyUserColumns(configurationVisibleColumns: string[]): void {\r\n this.allColumns().forEach((column => {\r\n const index = configurationVisibleColumns.findIndex(c => c === column.prop());\r\n if (index === -1 && column.prop() !== 'buttons' && column.prop() !== 'menu' && column.prop() !== '') {\r\n column.selected = false;\r\n }\r\n }));\r\n }\r\n\r\n private selectDefaultColumns(): void {\r\n this.allColumns().forEach((column => {\r\n column.selected = column.visibleByDefault();\r\n }));\r\n }\r\n}\r\n","<div class=\"table-options-bar\">\r\n <div class=\"table-options\">\r\n @if (showColumnViewer()) { <cauca-button-popover [buttonLabel]=\"'dataGrid.columns' | translate\" buttonIcon=\"view_column\">\r\n <mat-card>\r\n <mat-card-content>\r\n <div class=\"columns\">\r\n @for (column of columns; track column) {\r\n <mat-checkbox color=\"primary\" [(ngModel)]=\"column.selected\"\r\n (change)=\"onColumnsChanged()\">\r\n {{column.label()}}\r\n </mat-checkbox>\r\n }\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cauca-stroked-button [small]=\"true\" color=\"primary\" (buttonClick)=\"resetColumns()\" label=\"dataGrid.columnChooser.reset\" [translateLabel]=\"true\" />\r\n <cauca-raised-button [small]=\"true\" color=\"primary\" (buttonClick)=\"showAllColumns()\" label=\"dataGrid.columnChooser.showAll\" [translateLabel]=\"true\" />\r\n </mat-card-actions>\r\n </mat-card>\r\n </cauca-button-popover> }\r\n <cauca-basic-button color=\"primary\" [matMenuTriggerFor]=\"densityMenu\" class=\"open-menu-button\" [icon]=\"currentDensityIcon\" label=\"dataGrid.density.title\" [translateLabel]=\"true\" />\r\n </div>\r\n\r\n <ng-content select=\"[customFilter]\"> </ng-content>\r\n</div>\r\n\r\n<mat-menu #densityMenu=\"matMenu\">\r\n <cauca-menu-item label=\"dataGrid.density.compact\" [translateLabel]=\"true\" icon=\"density_small\" (buttonClick)=\"changeDensity(density.Compact)\" class=\"density-compact\" />\r\n <cauca-menu-item label=\"dataGrid.density.standard\" [translateLabel]=\"true\" icon=\"density_medium\" (buttonClick)=\"changeDensity(density.Standard)\" class=\"density-standard\" />\r\n <cauca-menu-item label=\"dataGrid.density.comfortable\" [translateLabel]=\"true\" icon=\"density_large\" (buttonClick)=\"changeDensity(density.Comfortable)\" class=\"density-comfortable\" />\r\n</mat-menu>","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-progress-spiner',\r\n templateUrl: './data-grid-progress-spiner.component.html',\r\n styleUrls: ['./data-grid-progress-spiner.component.scss'],\r\n imports: [MatProgressSpinnerModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DataGridProgressSpinerComponent {\r\n\r\n public isLoading = input<boolean>(false);\r\n public useBackground = input<boolean>(true);\r\n}\r\n","@if (isLoading()) {\r\n <div class=\"spiner-container\" [class.use-background]=\"useBackground()\">\r\n <mat-progress-spinner\r\n color=\"primary\"\r\n mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n </div>\r\n}","import {\r\n AfterContentInit, AfterViewInit, ChangeDetectionStrategy, Component,\r\n ContentChild, effect, inject, input, output,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRow, MatRowDef, MatTable, MatTableDataSource } from '@angular/material/table';\r\nimport { CdkDrag, CdkDragDrop, CdkDragHandle, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { DataGridRowDropEvent } from '../models/data-grid-row-drop-event';\r\nimport { ColumnsChangedEvent } from '../models/columns-changed-event';\r\nimport { toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';\r\nimport { BaseDataGridComponent } from '../base-data-grid.component';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { DataGridHeaderComponent } from '../components/data-grid-header/data-grid-header.component';\r\nimport { DataGridTableOptionsComponent } from '../components/data-grid-table-options/data-grid-table-options.component';\r\nimport { IconButtonComponent } from '@cauca-911/material';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { DataGridProgressSpinerComponent } from '../components/data-grid-progress-spiner/data-grid-progress-spiner.component';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { PREFERENCE_SERVICE_TOKEN } from '../../provide-cauca-grid';\r\nimport { StatusMessageComponent } from '@cauca-911/material';\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'cauca-data-grid',\r\n templateUrl: './data-grid.component.html',\r\n styleUrls: ['./data-grid.component.scss'],\r\n imports: [\r\n NgTemplateOutlet, // still needed\r\n // Material Table structure:\r\n MatTable, MatSort, MatColumnDef,\r\n MatHeaderCell, MatHeaderCellDef, MatCellDef,\r\n MatFooterCell, MatFooterCellDef,\r\n MatRow, MatRowDef,\r\n MatHeaderRow, MatHeaderRowDef,\r\n MatFooterRow, MatFooterRowDef,\r\n MatNoDataRow,\r\n // Drag and Drop:\r\n CdkDropList, CdkDrag, CdkDragHandle,\r\n // Material extras:\r\n MatIcon, MatPaginator,\r\n // Custom Components:\r\n DataGridHeaderComponent,\r\n DataGridTableOptionsComponent,\r\n DataGridProgressSpinerComponent,\r\n IconButtonComponent,\r\n StatusMessageComponent\r\n]\r\n})\r\nexport class DataGridComponent extends BaseDataGridComponent implements AfterContentInit, AfterViewInit {\r\n\r\n public readonly data = input<any[]>([]);\r\n public readonly showLoadingError = input(false);\r\n public readonly isLoading = input(false);\r\n public readonly allowReordering = input(false);\r\n public readonly filterPredicate = input<(data: unknown, filter: string) => boolean>();\r\n public readonly showFooter = input(false);\r\n public readonly showHeader = input(true);\r\n public readonly headerColor = input<string | undefined>(undefined);\r\n public readonly showRefreshButton = input(false);\r\n public readonly rowDrop = output<DataGridRowDropEvent>();\r\n public readonly refreshData = output<void>();\r\n @ContentChild(TemplateRef) public rowDetailTemplate!: TemplateRef<any>;\r\n\r\n public dataSource: MatTableDataSource<unknown[]>;\r\n public dragDisabled: boolean = true;\r\n public currentFilter: string = '';\r\n\r\n\r\n public constructor(\r\n translateService: TranslateService,\r\n ) {\r\n super(translateService, inject(PREFERENCE_SERVICE_TOKEN));\r\n this.dataSource = new MatTableDataSource([]);\r\n\r\n // Replaces the ngOnChanges hook that mirrored the `data` input into the datasource.\r\n effect(() => this.setData(this.data()));\r\n }\r\n\r\n public onRefreshData(): void {\r\n this.dataSource.data = [];\r\n this.refreshData.emit();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.setUpPaginator(this.paginator, this.showPaginator());\r\n }\r\n\r\n public applyFilter(filter: string): void {\r\n if (this.paginator) {\r\n this.paginator.firstPage();\r\n }\r\n this.dataSource.filter = toLowerCaseAndWithoutDiacritics(filter);\r\n }\r\n\r\n public override setUpSort(sort: MatSort): void {\r\n this.sort = sort;\r\n this.dataSource.sort = this.sort;\r\n }\r\n\r\n public override getData(): unknown[] {\r\n return this.dataSource.data;\r\n }\r\n\r\n public getFilteredData(): unknown[] {\r\n return this.dataSource.filteredData;\r\n }\r\n\r\n public refreshDisplayedColumns(columns: string[]): void {\r\n this.onColumnsChanged({ columns, persist: true });\r\n }\r\n\r\n public rowDropped(event: CdkDragDrop<unknown>): void {\r\n const data: unknown[] = this.getData();\r\n const filteredData: any[] = this.getFilteredData();\r\n const fromIndex = data.findIndex((d) => d === filteredData[event.previousIndex]);\r\n const toIndex = data.findIndex((d) => d === filteredData[event.currentIndex]);\r\n if (fromIndex >= 0 && toIndex >= 0) {\r\n moveItemInArray(data, fromIndex, toIndex);\r\n this.renderRows();\r\n this.rowDrop.emit(\r\n new DataGridRowDropEvent({\r\n item: data[fromIndex],\r\n data,\r\n fromIndex,\r\n toIndex,\r\n })\r\n );\r\n }\r\n }\r\n\r\n protected override getExportSourceRows(): unknown[] {\r\n return this.getFilteredData();\r\n }\r\n\r\n protected override setUpPaginator(paginator: MatPaginator, showPaginator: boolean): void {\r\n this.dataSource.paginator = paginator && showPaginator ? paginator : null;\r\n }\r\n\r\n protected override computeDisplayedColumns(): string[] {\r\n return this.decorateColumns(this.displayedColumns());\r\n }\r\n\r\n protected override onColumnsChanged({ columns, persist }: ColumnsChangedEvent): void {\r\n super.onColumnsChanged({ columns, persist });\r\n this.allDisplayedColumns.set(this.decorateColumns(columns));\r\n }\r\n\r\n protected override setUpFilterPredicate(): void {\r\n const filterPredicate = this.filterPredicate();\r\n if (filterPredicate) {\r\n this.dataSource.filterPredicate = filterPredicate;\r\n } else if (this.searchableColumns()?.length > 0) {\r\n this.dataSource.filterPredicate = (data: unknown, filter: string) => {\r\n return this.searchableColumns().some((column) => {\r\n const value = data[column];\r\n return value?.toString().toLowerCaseAndWithoutDiacritics().includes(filter);\r\n });\r\n };\r\n }\r\n }\r\n\r\n protected override forceReloadFilter(): void {\r\n // eslint-disable-next-line no-self-assign\r\n this.dataSource.filter = this.dataSource.filter;\r\n }\r\n\r\n /** `position` and `expand` are grid-owned columns, not part of the caller's list. */\r\n private decorateColumns(columns: string[]): string[] {\r\n let decorated = [...columns];\r\n if (this.allowReordering() && !decorated.includes('position')) {\r\n decorated = ['position', ...decorated];\r\n }\r\n if (this.showExpandButton() && !decorated.includes('expand')) {\r\n decorated = ['expand', ...decorated];\r\n }\r\n return decorated;\r\n }\r\n\r\n private setData(data: any[]): void {\r\n if (!Array.isArray(data)) {\r\n return;\r\n }\r\n this.dataSource.data = data;\r\n setTimeout(() => {\r\n this.table?.setNoDataRow(this.noDataRow);\r\n this.table?.renderRows();\r\n }, 0);\r\n }\r\n}","@if (showHeader()) {\r\n <cauca-data-grid-header [disableAddButton]=\"disableAddButton()\" [showAddButton]=\"showAddButton()\" [addButtonLabel]=\"addButtonLabel() || defaultAddButtonLabel\"\r\n [searchPlaceholder]=\"searchPlaceholder()\" [showSearchBar]=\"showSearchBar()\"\r\n (addButtonClick)=\"addButtonClick.emit($event)\" (filterChange)=\"applyFilter($event)\"\r\n [showRefreshButton]=\"showRefreshButton()\" (refreshRequest)=\"onRefreshData()\"\r\n [showExportMenu]=\"canExport()\" [exportFormats]=\"exportFormats()\" (exportRequest)=\"onExportRequest($event)\">\r\n <ng-content select=\"[filterRow]\" ngProjectAs=\"[filterRow]\" />\r\n <ng-content select=\"[exportItem]\" ngProjectAs=\"[exportItem]\" />\r\n </cauca-data-grid-header>\r\n}\r\n\r\n@if (showTableOptions()) {\r\n <cauca-data-grid-table-options [showColumnViewer]=\"showColumnViewer()\" [gridName]=\"resourceName()\" (densityChanged)=\"onDensityChanged($event)\" (columnsChanged)=\"onColumnsChanged($event)\" [allColumns]=\"regularColumns\">\r\n <ng-content\r\n select=\"[customFilter]\"\r\n ngProjectAs=\"[customFilter]\">\r\n </ng-content>\r\n </cauca-data-grid-table-options>\r\n}\r\n\r\n<table matSort mat-table [dataSource]=\"dataSource\" cdkDropList [cdkDropListData]=\"dataSource\"\r\n (cdkDropListDropped)=\"rowDropped($event)\" aria-describedby=\"Data Grid\" multiTemplateDataRows>\r\n\r\n @if (showExpandButton()) {\r\n <ng-container matColumnDef=\"expand\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <div class=\"align-commands\">\r\n <cauca-icon-button (buttonClick)=\"onExpand(row)\" color=\"primary\" class=\"button-icon\" [icon]=\"row === expandedElement() ? 'keyboard_arrow_up' : 'keyboard_arrow_down'\" />\r\n </div>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n }\r\n\r\n @if (allowReordering()) {\r\n <ng-container matColumnDef=\"position\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell (mousedown)=\"dragDisabled = false\" (mouseup)=\"dragDisabled = true\" *matCellDef=\"let group\">\r\n <mat-icon class=\"reorder-icon\" cdkDragHandle>drag_indicator</mat-icon>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n }\r\n\r\n <ng-content></ng-content>\r\n\r\n <tr class=\"grid-header\" [style.background-color]=\"headerColor()\" mat-header-row *matHeaderRowDef=\"allDisplayedColumns(); sticky: true\"></tr>\r\n\r\n <tr mat-row *matRowDef=\"let row; columns: allDisplayedColumns();\" cdkDrag [cdkDragData]=\"row\"\r\n [cdkDragDisabled]=\"dragDisabled\" (cdkDragReleased)=\"dragDisabled = true\"\r\n [class.compact]=\"preference.gridDensity === density.Compact\" [class.standard]=\"preference.gridDensity === density.Standard\"\r\n [class.comfortable]=\"preference.gridDensity === density.Comfortable\"></tr>\r\n\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"allDisplayedColumns().length\">\r\n <div class=\"grid-element-detail-wrapper\" [class.grid-element-detail-wrapper-expanded]=\"row === expandedElement()\">\r\n <div class=\"grid-element-detail\">\r\n @if (row === expandedElement()) {\r\n <template [ngTemplateOutlet]=\"rowDetailTemplate\" [ngTemplateOutletContext]=\"{ row: expandedElement() }\"></template>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"grid-detail-row\"></tr>\r\n\r\n @if (showFooter()) {\r\n <tr mat-footer-row *matFooterRowDef=\"allDisplayedColumns(); sticky: false\"></tr>\r\n }\r\n\r\n @if (!isLoading()) {\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n @if (!showLoadingError() && !isLoading()) {\r\n <td class=\"mat-cell data-grid-message\"\r\n [attr.colspan]=\"allDisplayedColumns().length\">\r\n <cauca-status-message type=\"noData\" />\r\n </td>\r\n }\r\n @if (showLoadingError()) {\r\n <td class=\"mat-cell data-grid-message error-message\" [attr.colspan]=\"allDisplayedColumns().length\">\r\n <cauca-status-message type=\"error\" />\r\n </td>\r\n }\r\n </tr>\r\n }\r\n\r\n</table>\r\n\r\n<cauca-data-grid-progress-spiner [isLoading]=\"isLoading()\" />\r\n\r\n@if (showPaginator()) {\r\n <mat-paginator #paginator [hidePageSize]=\"hidePageSize()\" [pageSizeOptions]=\"[5, 10, 25, 50]\" [pageSize]=\"10\" />\r\n}","import {EventEmitter, Injectable, signal} from \"@angular/core\";\r\nimport {ODataDataSource, ODataFilter} from \"odata-data-source\";\r\nimport {distinctUntilChanged, map, Observable, of, Subscription, tap} from \"rxjs\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport buildQuery, {QueryOptions} from \"odata-query\";\r\n\r\nexport interface Paginator {\r\n pageIndex: number;\r\n pageSize: number;\r\n length: number;\r\n page: EventEmitter<any>;\r\n}\r\n\r\ninterface SingleSort {\r\n active: string;\r\n direction: 'asc' | 'desc' | '';\r\n sortChange: EventEmitter<any>;\r\n}\r\ninterface MultiSort {\r\n sortedBy: {\r\n id: string;\r\n direction: 'asc' | 'desc';\r\n }[];\r\n multiSortChange: EventEmitter<any>;\r\n}\r\n\r\nexport type Sort = SingleSort | MultiSort;\r\n\r\ntype SortedBy = { id: string; direction: 'asc' | 'desc' }[];\r\n\r\nclass ExportableODataDataSource extends ODataDataSource {\r\n private knownCount: number | undefined;\r\n private countedFilterKey = '';\r\n\r\n public constructor(private readonly requestClient: HttpClient, private readonly requestPath: string) {\r\n super(requestClient, requestPath);\r\n }\r\n\r\n public override refresh(): void {\r\n this.knownCount = undefined;\r\n super.refresh();\r\n }\r\n\r\n public fetchAll(sortedBy: SortedBy, filters: ODataFilter[], rowCount: number): Observable<object> {\r\n const livePaginator = this.paginator;\r\n this.paginator = { pageIndex: 0, pageSize: rowCount, length: rowCount, page: new EventEmitter<any>() };\r\n try {\r\n return this.getData(0, sortedBy, filters);\r\n } finally {\r\n this.paginator = livePaginator;\r\n }\r\n }\r\n\r\n protected override getData(page: number, sortedBy: SortedBy, filters: ODataFilter[]): Observable<object> {\r\n const filterKey = (filters ?? []).map(filter => JSON.stringify(filter.getFilter())).join('|');\r\n const mustCount = !this.paginator || page === 0 || this.knownCount === undefined || filterKey !== this.countedFilterKey;\r\n\r\n if (mustCount) {\r\n return super.getData(page, sortedBy, filters).pipe(tap(result => this.rememberCount(result, filterKey)));\r\n }\r\n\r\n const knownCount = this.knownCount;\r\n return this.requestClient\r\n .get<object>(this.requestPath + buildQuery(this.buildQueryWithoutCount(page, sortedBy, filters)))\r\n .pipe(map(result => ({ ...result, '@odata.count': knownCount })));\r\n }\r\n\r\n private rememberCount(result: object, filterKey: string): void {\r\n const count = (result as Record<string, unknown>)['@odata.count'];\r\n if (typeof count === 'number') {\r\n this.knownCount = count;\r\n this.countedFilterKey = filterKey;\r\n }\r\n }\r\n\r\n private buildQueryWithoutCount(page: number, sortedBy: SortedBy, filters: ODataFilter[]): Partial<QueryOptions<unknown>> {\r\n const query: Partial<QueryOptions<unknown>> = {\r\n top: this.paginator.pageSize,\r\n skip: this.paginator.pageSize * page,\r\n };\r\n if (this.selectedFields) {\r\n query.select = this.selectedFields;\r\n }\r\n if (sortedBy?.length) {\r\n query.orderBy = sortedBy.map(sort => `${sort.id} ${sort.direction}`);\r\n } else if (this.initialSort?.length) {\r\n query.orderBy = this.initialSort;\r\n }\r\n if (filters) {\r\n query.filter = { and: filters.map(filter => filter.getFilter()) };\r\n }\r\n if (this.expandedFields) {\r\n query.expand = this.expandedFields;\r\n }\r\n return query;\r\n }\r\n}\r\n\r\ninterface Props {\r\n baseUrl: string;\r\n resourceName: string;\r\n paginator: Paginator\r\n sort?: Sort;\r\n initialSort?: string[];\r\n filters: ODataFilter[]\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OdataListingService<T = any> {\r\n public dataSource: ODataDataSource | null = null;\r\n public error = signal(false);\r\n public loading = signal(false);\r\n private errorSubscription: Subscription | null = null;\r\n private loadingSubscription: Subscription | null = null;\r\n\r\n public get data(): T[] | null {\r\n return this.dataSource?.data ?? null;\r\n }\r\n\r\n public constructor(private readonly httpClient: HttpClient) {}\r\n\r\n public initialize({baseUrl, resourceName, paginator, sort, initialSort, filters}: Props): ODataDataSource {\r\n const newDataSource = new ExportableODataDataSource(this.httpClient, `${baseUrl}odata/${resourceName}`);\r\n\r\n newDataSource.filters = filters;\r\n if (initialSort){\r\n newDataSource.initialSort = initialSort;\r\n }\r\n if (sort) {\r\n newDataSource.sort = sort;\r\n }\r\n newDataSource.paginator = paginator;\r\n this.dataSource = newDataSource;\r\n\r\n this.dataSource.refresh();\r\n this.errorSubscription = this.dataSource.errors.subscribe((errors) => this.error.set(!!errors));\r\n\r\n this.loadingSubscription = this.dataSource.loading\r\n .pipe(distinctUntilChanged())\r\n .subscribe((isLoading: boolean) => {\r\n if (isLoading) {\r\n this.loading.set(false);\r\n }\r\n this.loading.set(isLoading);\r\n });\r\n\r\n return newDataSource;\r\n }\r\n\r\n public fetchAllForExport(maxRows: number): Observable<T[]> {\r\n const dataSource = this.dataSource as ExportableODataDataSource | null;\r\n if (!dataSource) {\r\n return of([]);\r\n }\r\n\r\n const total = dataSource.paginator?.length ?? 0;\r\n const rowCount = total > 0 ? Math.min(total, maxRows) : maxRows;\r\n\r\n return dataSource\r\n .fetchAll(this.sortedBy(), dataSource.filters ?? [], rowCount)\r\n .pipe(map(result => (dataSource.mapResult(result) ?? []) as T[]));\r\n }\r\n\r\n public updateFilters(filters: ODataFilter[]) {\r\n if (this.dataSource) {\r\n this.dataSource.filters = filters;\r\n }\r\n }\r\n\r\n public forceReloadFilter() {\r\n if (this.dataSource) {\r\n // eslint-disable-next-line no-self-assign\r\n this.dataSource.filters = this.dataSource.filters;\r\n }\r\n }\r\n\r\n public isInitialized() {\r\n return this.dataSource !== null;\r\n }\r\n\r\n public refresh() {\r\n this.dataSource?.refresh();\r\n }\r\n\r\n public destroy() {\r\n this.errorSubscription?.unsubscribe();\r\n this.loadingSubscription?.unsubscribe();\r\n }\r\n\r\n /** Mirrors how ODataDataSource reads the active sort, single or multi. */\r\n private sortedBy(): SortedBy {\r\n const sort = this.dataSource?.sort;\r\n if (!sort) {\r\n return [];\r\n }\r\n if ('multiSortChange' in sort) {\r\n return sort.sortedBy ?? [];\r\n }\r\n if (sort.active && sort.direction) {\r\n return [{ id: sort.active, direction: sort.direction as 'asc' | 'desc' }];\r\n }\r\n return [];\r\n }\r\n}\r\n","import { ParamMap, Params } from '@angular/router';\r\n\r\nexport interface GridUrlState {\r\n filter?: string;\r\n sort?: string;\r\n direction?: 'asc' | 'desc' | '';\r\n pageIndex?: number;\r\n pageSize?: number;\r\n}\r\n\r\nconst PARAM_BASE_NAMES = {\r\n filter: 'filter',\r\n sort: 'sort',\r\n direction: 'dir',\r\n pageIndex: 'page',\r\n pageSize: 'size',\r\n} as const;\r\n\r\n/**\r\n * Builds the query param name for a given base name and optional grid state key.\r\n * With a key, the scheme is `<key><CapitalizedBaseName>` (e.g. key \"alerts\" + base \"filter\" -> \"alertsFilter\").\r\n * Without a key, the plain base name is used (e.g. \"filter\").\r\n */\r\nfunction paramName(baseName: string, key: string): string {\r\n if (!key) {\r\n return baseName;\r\n }\r\n return `${key}${baseName.charAt(0).toUpperCase()}${baseName.slice(1)}`;\r\n}\r\n\r\nexport function toQueryParams(state: GridUrlState, key: string = ''): Params {\r\n const params: Params = {};\r\n\r\n if (state.filter) {\r\n params[paramName(PARAM_BASE_NAMES.filter, key)] = state.filter;\r\n }\r\n if (state.sort) {\r\n params[paramName(PARAM_BASE_NAMES.sort, key)] = state.sort;\r\n }\r\n if (state.direction) {\r\n params[paramName(PARAM_BASE_NAMES.direction, key)] = state.direction;\r\n }\r\n if (state.pageIndex) {\r\n params[paramName(PARAM_BASE_NAMES.pageIndex, key)] = state.pageIndex;\r\n }\r\n if (state.pageSize) {\r\n params[paramName(PARAM_BASE_NAMES.pageSize, key)] = state.pageSize;\r\n }\r\n\r\n return params;\r\n}\r\n\r\nexport function fromQueryParams(map: ParamMap, key: string = ''): GridUrlState {\r\n const state: GridUrlState = {};\r\n\r\n const filter = map.get(paramName(PARAM_BASE_NAMES.filter, key));\r\n if (filter) {\r\n state.filter = filter;\r\n }\r\n\r\n const sort = map.get(paramName(PARAM_BASE_NAMES.sort, key));\r\n if (sort) {\r\n state.sort = sort;\r\n }\r\n\r\n const direction = map.get(paramName(PARAM_BASE_NAMES.direction, key));\r\n if (direction === 'asc' || direction === 'desc') {\r\n state.direction = direction;\r\n }\r\n\r\n const pageIndex = parsePositiveInteger(map.get(paramName(PARAM_BASE_NAMES.pageIndex, key)));\r\n if (pageIndex !== undefined) {\r\n state.pageIndex = pageIndex;\r\n }\r\n\r\n const pageSize = parsePositiveInteger(map.get(paramName(PARAM_BASE_NAMES.pageSize, key)));\r\n if (pageSize !== undefined) {\r\n state.pageSize = pageSize;\r\n }\r\n\r\n return state;\r\n}\r\n\r\n/**\r\n * Returns a Params object with every grid-state param name mapped to `null` for the given key.\r\n * Combined with `queryParamsHandling: 'merge'`, this lets the grid explicitly clear stale\r\n * params (e.g. a previously-set filter) instead of leaving them stuck in the URL.\r\n */\r\nexport function emptyQueryParams(key: string = ''): Params {\r\n const params: Params = {};\r\n Object.values(PARAM_BASE_NAMES).forEach((baseName) => {\r\n params[paramName(baseName, key)] = null;\r\n });\r\n return params;\r\n}\r\n\r\nexport function paramsEqual(a: Params, b: Params): boolean {\r\n const aKeys = Object.keys(a).filter((paramKey) => a[paramKey] !== null && a[paramKey] !== undefined);\r\n const bKeys = Object.keys(b).filter((paramKey) => b[paramKey] !== null && b[paramKey] !== undefined);\r\n\r\n if (aKeys.length !== bKeys.length) {\r\n return false;\r\n }\r\n\r\n return aKeys.every((paramKey) => String(a[paramKey]) === String(b[paramKey]));\r\n}\r\n\r\nfunction parsePositiveInteger(value: string | null): number | undefined {\r\n if (!value) {\r\n return undefined;\r\n }\r\n const parsed = Number(value);\r\n if (Number.isNaN(parsed) || parsed < 0) {\r\n return undefined;\r\n }\r\n return parsed;\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ContentChild, DestroyRef, EventEmitter, inject, input, OnDestroy, output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { ODataFilter } from 'odata-data-source';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { ActivatedRoute, ParamMap, Params, Router } from '@angular/router';\r\nimport { BaseDataGridComponent } from '../base-data-grid.component';\r\nimport { CaucaCoreService, toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { OdataListingService } from \"./odata-listing.service\";\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { MatTable, MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatRow, MatRowDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatCell, MatCellDef } from '@angular/material/table';\r\nimport { IconButtonComponent, StatusMessageComponent } from '@cauca-911/material';\r\nimport { DataGridHeaderComponent } from '../components/data-grid-header/data-grid-header.component';\r\nimport { DataGridProgressSpinerComponent } from '../components/data-grid-progress-spiner/data-grid-progress-spiner.component';\r\nimport { DataGridTableOptionsComponent } from '../components/data-grid-table-options/data-grid-table-options.component';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { PREFERENCE_SERVICE_TOKEN } from '../../provide-cauca-grid';\r\nimport { emptyQueryParams, fromQueryParams, GridUrlState, paramsEqual, toQueryParams } from './grid-url-state';\r\nimport { ColumnsChangedEvent } from '../models/columns-changed-event';\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'cauca-odata-grid',\r\n templateUrl: './odata-grid.component.html',\r\n styleUrls: ['./odata-grid.component.scss'],\r\n providers: [OdataListingService],\r\n /**\r\n * The template gives clickable rows a pointer cursor only when the consumer actually listens\r\n * for itemClick, which needs EventEmitter.observers — a count OutputEmitterRef does not\r\n * expose. Declared here so the property stays an EventEmitter without an @Output decorator.\r\n * See ADR-0003.\r\n */\r\n // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\r\n outputs: ['itemClick'],\r\n imports: [\r\n NgTemplateOutlet,\r\n // Material table structure:\r\n MatTable, MatColumnDef,\r\n MatHeaderCell, MatHeaderCellDef, MatCell, MatCellDef,\r\n MatHeaderRow, MatHeaderRowDef,\r\n MatRow, MatRowDef, MatNoDataRow,\r\n // Material extras\r\n MatPaginator,\r\n // custom components\r\n DataGridHeaderComponent,\r\n DataGridTableOptionsComponent,\r\n IconButtonComponent,\r\n DataGridProgressSpinerComponent,\r\n StatusMessageComponent,\r\n ]\r\n})\r\nexport class OdataGridComponent extends BaseDataGridComponent implements OnDestroy, AfterViewInit {\r\n\r\n public showTableHeader = input(true);\r\n /** Master switch: when true, the grid's filter/sort/page are synced with the URL query params and restored when returning from a detail page. Off by default. */\r\n public persistState = input(false);\r\n /** Optional prefix for the persisted query params, so two independent grids on the same route don't collide (e.g. \"alerts\" -> \"alertsFilter\"). */\r\n public stateKey = input('');\r\n public readonly baseSort = input<string[]>();\r\n public readonly filterPredicate = input<(filter: string) => ODataFilter[]>();\r\n public readonly showHeader = input(true);\r\n public readonly selectedRowId = input<any>();\r\n public readonly idField = input('id');\r\n public readonly showRefreshButton = input(false);\r\n public readonly maxExportRows = input(5000);\r\n public readonly itemClick = new EventEmitter<any>();\r\n public readonly refreshRequested = output<void>();\r\n @ContentChild(TemplateRef) public rowDetailTemplate!: TemplateRef<any>;\r\n @ViewChild(MatPaginator, {static: true}) public paginator!: MatPaginator;\r\n\r\n private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl;\r\n private readonly router = inject(Router, { optional: true });\r\n private readonly route = inject(ActivatedRoute, { optional: true });\r\n private readonly destroyRef = inject(DestroyRef);\r\n private defaultPageSize?: number;\r\n private pendingRestoredFilter?: string;\r\n private lastWrittenParams: Params = {};\r\n private restoredState?: GridUrlState;\r\n\r\n public constructor(\r\n translateService: TranslateService,\r\n public readonly listing: OdataListingService,\r\n ) {\r\n super(translateService, inject(PREFERENCE_SERVICE_TOKEN));\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.listing.destroy();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n if (!this.canPersistState() || !this.header) {\r\n return;\r\n }\r\n\r\n if (this.pendingRestoredFilter !== undefined) {\r\n this.header.filterControl.setValue(this.pendingRestoredFilter, { emitEvent: false });\r\n this.header.showClearButton.set(!!this.pendingRestoredFilter);\r\n }\r\n\r\n outputToObservable(this.header.filterChange)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.writeCurrentUrlState());\r\n\r\n if (this.restoredState && this.hasRestoredState(this.restoredState)) {\r\n // The initial fetch triggered during ngAfterContentInit (setUpFilterPredicate) can run\r\n // before the paginator/sort are fully wired to the table, so it may go out with default\r\n // skip/orderby/filter. Re-applying the restored state here and forcing a reload once the\r\n // view is fully initialized mirrors the warm-navigation path and guarantees the first\r\n // real fetch reflects the restored filter/sort/page on a cold (browser refresh) load.\r\n this.applyUrlStateToGrid(this.restoredState);\r\n }\r\n }\r\n\r\n public refreshData(): void {\r\n this.listing.refresh();\r\n this.refreshRequested.emit();\r\n }\r\n\r\n public getData(): unknown[] {\r\n return this.listing.data;\r\n }\r\n\r\n public applyFilter(filter: string): void {\r\n this.applyFilterValue(filter, { resetPage: true });\r\n }\r\n\r\n public refreshFilter(): void {\r\n this.applyFilterValue(this.header?.filterControl?.value, { resetPage: true });\r\n }\r\n\r\n public override setUpFilterPredicate(): void {\r\n let filters = this.filterPredicate()?.('') ?? [];\r\n\r\n if (this.canPersistState()) {\r\n filters = this.restoreStateBeforeInitialLoad() ?? filters;\r\n }\r\n\r\n this.listing.initialize({\r\n baseUrl: this.baseUrl,\r\n resourceName: this.resourceName(),\r\n paginator: this.paginator,\r\n sort: this.sort,\r\n initialSort: this.baseSort(),\r\n filters,\r\n });\r\n\r\n if (this.canPersistState()) {\r\n this.setUpUrlStatePersistence();\r\n }\r\n }\r\n\r\n public override setUpSort(sort: MatSort): void {\r\n this.sort = sort;\r\n }\r\n\r\n protected override getExportSourceRows(): Promise<unknown[]> {\r\n return firstValueFrom(this.listing.fetchAllForExport(this.maxExportRows()));\r\n }\r\n\r\n protected override forceReloadFilter(): void {\r\n this.listing.forceReloadFilter();\r\n }\r\n\r\n protected override computeDisplayedColumns(): string[] {\r\n return this.decorateColumns(this.displayedColumns());\r\n }\r\n\r\n protected override onColumnsChanged({ columns, persist }: ColumnsChangedEvent): void {\r\n super.onColumnsChanged({ columns: this.decorateColumns(columns), persist });\r\n }\r\n\r\n private applyFilterValue(filter: string | null | undefined, { resetPage }: { resetPage: boolean }): void {\r\n const filterPredicate = this.filterPredicate();\r\n if (!filterPredicate) {\r\n return;\r\n }\r\n\r\n if (resetPage) {\r\n this.paginator?.firstPage();\r\n }\r\n\r\n this.listing.updateFilters(filterPredicate(toLowerCaseAndWithoutDiacritics(filter)));\r\n }\r\n\r\n /** `expand` is a grid-owned column, not part of the caller's list. */\r\n private decorateColumns(columns: string[]): string[] {\r\n return this.showExpandButton() && !columns.includes('expand')\r\n ? ['expand', ...columns]\r\n : [...columns];\r\n }\r\n\r\n private canPersistState(): boolean {\r\n return this.persistState() && !!this.router && !!this.route;\r\n }\r\n\r\n private restoreStateBeforeInitialLoad(): ODataFilter[] | undefined {\r\n this.defaultPageSize = this.paginator?.pageSize;\r\n const restoredState = fromQueryParams(this.route.snapshot.queryParamMap, this.stateKey());\r\n this.applySortAndPage(restoredState);\r\n this.pendingRestoredFilter = restoredState.filter;\r\n this.restoredState = restoredState;\r\n\r\n const filterPredicate = this.filterPredicate();\r\n if (restoredState.filter === undefined || !filterPredicate) {\r\n return undefined;\r\n }\r\n return filterPredicate(toLowerCaseAndWithoutDiacritics(restoredState.filter));\r\n }\r\n\r\n private setUpUrlStatePersistence(): void {\r\n this.lastWrittenParams = toQueryParams(fromQueryParams(this.route.snapshot.queryParamMap, this.stateKey()), this.stateKey());\r\n\r\n this.sort?.sortChange\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.writeCurrentUrlState());\r\n\r\n this.paginator?.page\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.writeCurrentUrlState());\r\n\r\n this.route.queryParamMap\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((paramMap) => this.reactToExternalUrlStateChange(paramMap));\r\n }\r\n\r\n private applySortAndPage(state: GridUrlState): void {\r\n if (state.sort && this.sort) {\r\n this.sort.active = state.sort;\r\n this.sort.direction = state.direction ?? '';\r\n }\r\n if (this.paginator) {\r\n if (state.pageIndex !== undefined) {\r\n this.paginator.pageIndex = state.pageIndex;\r\n }\r\n if (state.pageSize !== undefined) {\r\n this.paginator.pageSize = state.pageSize;\r\n }\r\n }\r\n }\r\n\r\n private currentUrlState(): GridUrlState {\r\n const pageSize = this.paginator?.pageSize;\r\n return {\r\n filter: this.header?.filterControl.value || undefined,\r\n sort: this.sort?.active || undefined,\r\n direction: this.sort?.direction || undefined,\r\n pageIndex: this.paginator?.pageIndex,\r\n pageSize: pageSize !== undefined && pageSize !== this.defaultPageSize ? pageSize : undefined,\r\n };\r\n }\r\n\r\n private writeCurrentUrlState(): void {\r\n const params = toQueryParams(this.currentUrlState(), this.stateKey());\r\n if (paramsEqual(params, this.lastWrittenParams)) {\r\n return;\r\n }\r\n this.lastWrittenParams = params;\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { ...emptyQueryParams(this.stateKey()), ...params },\r\n queryParamsHandling: 'merge',\r\n replaceUrl: true,\r\n });\r\n }\r\n\r\n private reactToExternalUrlStateChange(paramMap: ParamMap): void {\r\n const state = fromQueryParams(paramMap, this.stateKey());\r\n const params = toQueryParams(state, this.stateKey());\r\n if (paramsEqual(params, this.lastWrittenParams)) {\r\n return;\r\n }\r\n this.lastWrittenParams = params;\r\n this.applyUrlStateToGrid(state);\r\n }\r\n\r\n private applyUrlStateToGrid(state: GridUrlState): void {\r\n this.applySortAndPage(state);\r\n\r\n if (this.header) {\r\n this.header.filterControl.setValue(state.filter ?? '', { emitEvent: false });\r\n this.header.showClearButton.set(!!state.filter);\r\n }\r\n\r\n if (this.filterPredicate()) {\r\n this.applyFilterValue(this.header?.filterControl?.value, { resetPage: false });\r\n } else {\r\n this.listing.forceReloadFilter();\r\n }\r\n }\r\n\r\n private hasRestoredState(state: GridUrlState): boolean {\r\n return state.filter !== undefined || state.sort !== undefined || state.pageIndex !== undefined || state.pageSize !== undefined;\r\n }\r\n}\r\n","@if (showHeader()) {\r\n <cauca-data-grid-header\r\n [disableAddButton]=\"disableAddButton()\"\r\n [showRefreshButton]=\"showRefreshButton()\" (refreshRequest)=\"refreshData()\"\r\n [showExportMenu]=\"canExport()\" [exportFormats]=\"exportFormats()\" (exportRequest)=\"onExportRequest($event)\"\r\n [showAddButton]=\"showAddButton()\"\r\n [addButtonLabel]=\"addButtonLabel() || defaultAddButtonLabel\"\r\n [searchPlaceholder]=\"searchPlaceholder()\"\r\n [showSearchBar]=\"showSearchBar()\"\r\n (addButtonClick)=\"addButtonClick.emit($event)\" (filterChange)=\"applyFilter($event)\">\r\n <ng-content select=\"[filterRow]\" ngProjectAs=\"[filterRow]\" />\r\n <ng-content select=\"[exportItem]\" ngProjectAs=\"[exportItem]\" />\r\n </cauca-data-grid-header>\r\n}\r\n\r\n<ng-content select=\"[customHeader]\" ngProjectAs=\"[customHeader]\" />\r\n\r\n@if (showTableOptions()) {\r\n <cauca-data-grid-table-options [showColumnViewer]=\"showColumnViewer()\" [gridName]=\"resourceName()\" (densityChanged)=\"onDensityChanged($event)\" (columnsChanged)=\"onColumnsChanged($event)\" [allColumns]=\"regularColumns\">\r\n <ng-content select=\"[customFilter]\" ngProjectAs=\"[customFilter]\" />\r\n </cauca-data-grid-table-options>\r\n}\r\n\r\n<div class=\"relative\">\r\n <table mat-table [dataSource]=\"listing.dataSource\" aria-describedby=\"Data Grid\" multiTemplateDataRows>\r\n @if (showExpandButton()) {\r\n <ng-container matColumnDef=\"expand\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <div class=\"align-commands\">\r\n <cauca-icon-button (buttonClick)=\"onExpand(row)\" color=\"primary\" class=\"button-icon\" [icon]=\"row === expandedElement() ? 'keyboard_arrow_up' : 'keyboard_arrow_down'\" />\r\n </div>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <ng-content></ng-content>\r\n @if(showTableHeader()) {\r\n <tr mat-header-row *matHeaderRowDef=\"allDisplayedColumns(); sticky: true\"></tr>\r\n }\r\n\r\n <tr mat-row *matRowDef=\"let row; columns: allDisplayedColumns()\"\r\n [class.showClick]=\"itemClick.observers.length > 0\"\r\n [class.compact]=\"preference.gridDensity === density.Compact\"\r\n [class.standard]=\"preference.gridDensity === density.Standard\"\r\n [class.comfortable]=\"preference.gridDensity === density.Comfortable\"\r\n [class.selected]=\"selectedRowId() === row[idField()]\"\r\n (click)=\"itemClick.emit(row)\"\r\n onkeypress=\"itemClick.emit(row)\">\r\n </tr>\r\n\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"allDisplayedColumns().length\">\r\n <div class=\"grid-element-detail-wrapper\" [class.grid-element-detail-wrapper-expanded]=\"row === expandedElement()\">\r\n <div class=\"grid-element-detail\">\r\n @if (row === expandedElement()) {\r\n <template [ngTemplateOutlet]=\"rowDetailTemplate\" [ngTemplateOutletContext]=\"{ row: expandedElement() }\"></template>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"grid-detail-row\"></tr>\r\n\r\n <ng-container *matNoDataRow>\r\n @if(listing.loading() === false) {\r\n <ng-container>\r\n <tr class=\"mat-row\">\r\n @if (listing.error() === false) {\r\n <th class=\"mat-cell data-grid-message\"\r\n [attr.colspan]=\"allDisplayedColumns().length\">\r\n <cauca-status-message type=\"noData\" />\r\n </th>\r\n } @else {\r\n <th class=\"mat-cell data-grid-message\"\r\n [attr.colspan]=\"allDisplayedColumns().length\">\r\n <cauca-status-message type=\"error\" />\r\n </th>\r\n }\r\n </tr>\r\n </ng-container>\r\n }\r\n </ng-container>\r\n </table>\r\n\r\n <cauca-data-grid-progress-spiner [useBackground]=\"false\" [isLoading]=\"listing.loading()\" />\r\n\r\n</div>\r\n\r\n<mat-paginator [hidePageSize]=\"hidePageSize()\" [pageSizeOptions]=\"[5, 10, 25, 50]\" [pageSize]=\"10\" />\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { NavigationEnd, Params, Router } from '@angular/router';\r\nimport { filter } from 'rxjs';\r\n\r\n/**\r\n * Re-injects a list page's remembered grid query params (filter/sort/page, written by\r\n * `OdataGridComponent` when `persistState` is enabled) when the user navigates back to that\r\n * list page from one of its own descendant (detail) routes. Any other way of reaching the\r\n * list page (menu, bookmark, direct link, refresh) leaves it clean, because the previous URL\r\n * won't be a descendant of the list path.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GridStateRestorationService {\r\n private readonly router = inject(Router);\r\n private readonly rememberedParamsByPath = new Map<string, Params>();\r\n private previousPath: string | null = null;\r\n\r\n public constructor() {\r\n this.router.events\r\n .pipe(filter((event): event is NavigationEnd => event instanceof NavigationEnd))\r\n .subscribe((event) => this.onNavigationEnd(event));\r\n }\r\n\r\n private onNavigationEnd(event: NavigationEnd): void {\r\n const currentPath = this.pathOnly(event.urlAfterRedirects);\r\n const currentParams = this.parseParams(event.urlAfterRedirects);\r\n const previousPath = this.previousPath;\r\n this.previousPath = currentPath;\r\n\r\n if (Object.keys(currentParams).length > 0) {\r\n this.rememberedParamsByPath.set(currentPath, currentParams);\r\n return;\r\n }\r\n if (this.restoreIfReturningFromDescendant(currentPath, previousPath)) {\r\n return;\r\n }\r\n this.rememberedParamsByPath.delete(currentPath);\r\n }\r\n\r\n private restoreIfReturningFromDescendant(currentPath: string, previousPath: string | null): boolean {\r\n if (!previousPath || !previousPath.startsWith(`${currentPath}/`)) {\r\n return false;\r\n }\r\n\r\n const remembered = this.rememberedParamsByPath.get(currentPath);\r\n if (!remembered) {\r\n return false;\r\n }\r\n\r\n this.router.navigate([currentPath], { queryParams: remembered, replaceUrl: true });\r\n return true;\r\n }\r\n\r\n private pathOnly(url: string): string {\r\n return url.split('?')[0].split('#')[0];\r\n }\r\n\r\n private parseParams(url: string): Params {\r\n const queryString = url.split('?')[1]?.split('#')[0];\r\n if (!queryString) {\r\n return {};\r\n }\r\n\r\n const params: Params = {};\r\n new URLSearchParams(queryString).forEach((value, key) => {\r\n params[key] = value;\r\n });\r\n return params;\r\n }\r\n}\r\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\r\nimport { GridStateRestorationService } from './grid-state-restoration.service';\r\n\r\n/**\r\n * Activates the grid list-state restoration feature for the whole application. Add this once\r\n * in the app's root providers; it has no effect on pages whose grids don't opt in via\r\n * `[persistState]=\"true\"`.\r\n */\r\nexport function provideGridStateRestoration(): EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n provideAppInitializer(() => {\r\n inject(GridStateRestorationService);\r\n }),\r\n ]);\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, OnDestroy, OnInit, Optional, ViewEncapsulation } from '@angular/core';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { BaseGridColumnComponent, ExportCell } from '../base-grid-column.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cauca-color-data-grid-column',\r\n standalone: true,\r\n imports: [\r\n MatColumnDef,\r\n MatHeaderCell, MatHeaderCellDef, NgStyle,\r\n MatCell, MatCellDef,\r\n MatFooterCellDef, MatFooterCellDef\r\n ],\r\n templateUrl: './color-data-grid-column.component.html',\r\n styleUrl: './color-data-grid-column.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => ColorDataGridColumnComponent) }],\r\n})\r\nexport class ColorDataGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n\r\n public override getExportValue(row: Record<string, unknown>): ExportCell {\r\n return { value: null, fillColor: (row[this.prop()] as string | undefined) ?? 'transparent' };\r\n }\r\n\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n\r\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': width()}\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (row[prop()]) {\r\n <div class=\"color-capsule\" [style.backgroundColor]=\"row[prop()]\"></div>\r\n }\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n\r\n</ng-container>","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'cauca-check-icon',\r\n template: `\r\n <mat-icon\r\n class=\"check-icon\"\r\n [class.check-mark]=\"checkMark()\"\r\n [class.check]=\"check()\"\r\n [class.uncheck]=\"uncheck()\"\r\n aria-hidden=\"false\"\r\n aria-label=\"State icon\"\r\n [fontIcon]=\"icon()\" />\r\n `,\r\n styleUrls: ['./check-icon.component.scss'],\r\n imports: [MatIcon],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CheckIconComponent {\r\n public checkIcon = input<string>('check');\r\n public uncheckIcon = input<string>('block');\r\n public isChecked = input<boolean>(false);\r\n\r\n public icon = computed(() => (this.isChecked() ? this.checkIcon() : this.uncheckIcon()));\r\n public checkMark = computed(() => this.isChecked() && this.checkIcon() === 'check');\r\n public check = computed(() => this.isChecked() && this.checkIcon() !== 'check');\r\n public uncheck = computed(() => !this.isChecked());\r\n}\r\n","import { Component, OnDestroy, OnInit, Optional, forwardRef, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { CheckIconComponent } from '../../components/check-icon/check-icon.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-check-column',\r\n templateUrl: './data-grid-check-column.component.html',\r\n styleUrls: ['./data-grid-check-column.component.scss'],\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridCheckColumnComponent) }],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CheckIconComponent, MatColumnDef, MatHeaderCell, MatHeaderCellDef, NgStyle, MatCell, MatCellDef, MatFooterCell, MatFooterCellDef]\r\n})\r\nexport class DataGridCheckColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n public readonly checkIcon = input('check');\r\n public readonly uncheckIcon = input('block');\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': width(), 'text-align': 'center'}\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <cauca-check-icon [checkIcon]=\"checkIcon()\" [uncheckIcon]=\"uncheckIcon()\" [isChecked]=\"row[prop()]\" />\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, Optional, ViewEncapsulation, forwardRef, input } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { NgStyle } from '@angular/common';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-column',\r\n templateUrl: './data-grid-column.component.html',\r\n styleUrls: ['./data-grid-column.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridColumnComponent) }],\r\n imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, NgStyle, MatCell, MatCellDef, MatTooltip, MatFooterCell, MatFooterCellDef]\r\n})\r\nexport class DataGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public summaryType = input<'none'|'sum'|'count'>('none');\r\n public summaryLabel = input<string>('');\r\n public format = input<'none'|'phone'>('none');\r\n public isInitialized = false;\r\n private readonly grid = null;\r\n\r\n public constructor (@Optional() odata: OdataGridComponent, @Optional() grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n this.grid = grid??odata;\r\n this.isInitialized = true;\r\n }\r\n\r\n public calculateSummary(): string {\r\n const rows = this.grid?.data?.();\r\n if (this.isInitialized && rows) {\r\n if (this.summaryType() === 'sum') {\r\n return this.summaryLabel() + rows.reduce((acc, row) => acc + row[this.prop()], 0) + this.summaryLabel();\r\n }\r\n if (this.summaryType() === 'count') {\r\n return rows.length + this.summaryLabel();\r\n }\r\n }\r\n return '';\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n\r\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': width()}\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (showToolTip()) {<span [matTooltip]=\"row[prop()]\" >{{ row[prop()] }}</span>}\r\n @else { <span>{{ row[prop()] }}</span>}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (isInitialized) {\r\n {{calculateSummary()}}\r\n }\r\n </td>\r\n\r\n</ng-container>","import { Component, OnDestroy, OnInit, Optional, forwardRef, input, output, ChangeDetectionStrategy } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { MatSortHeader } from '@angular/material/sort';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { IconButtonComponent } from '@cauca-911/material';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-command-icon-column',\r\n templateUrl: './data-grid-command-icon-column.component.html',\r\n styleUrls: ['./data-grid-command-icon-column.component.scss'],\r\n providers: [{ provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridCommandIconColumnComponent) }],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatColumnDef, MatHeaderCell, MatSortHeader, MatHeaderCellDef, MatIcon, MatCell, MatCellDef, IconButtonComponent, MatFooterCell, MatFooterCellDef ]\r\n})\r\nexport class DataGridCommandIconColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n public readonly checkColor = input('#F8B132');\r\n public readonly checkIcon = input('star');\r\n public readonly uncheckIcon = input('star_outline');\r\n public readonly uncheckColor = input('default');\r\n\r\n public readonly commandClick = output<unknown>();\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n <th mat-header-cell mat-sort-header *matHeaderCellDef>\r\n <div>\r\n @if (label()) {\r\n {{ label() }}\r\n } @else {\r\n <mat-icon [style.color]=\"uncheckColor()\" aria-hidden=\"false\" aria-label=\"State icon\" [fontIcon]=\"uncheckIcon()\" />\r\n }\r\n </div>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <div>\r\n <cauca-icon-button (buttonClick)=\"commandClick.emit(row)\" [icon]=\"row[prop()] ? checkIcon() : uncheckIcon()\" [color]=\"row[prop()] ? checkColor() : uncheckColor()\" />\r\n </div>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, ContentChild, OnDestroy, OnInit, Optional, TemplateRef, ViewEncapsulation, forwardRef, input, output } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { IconButtonComponent } from '@cauca-911/material';\r\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport { RouterLink } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-commands-column',\r\n templateUrl: './data-grid-commands-column.component.html',\r\n styleUrls: ['./data-grid-commands-column.component.scss'],\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridCommandsColumnComponent) }],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatCell, MatCellDef, IconButtonComponent, NgTemplateOutlet, MatFooterCell, MatFooterCellDef, NgStyle, RouterLink]\r\n})\r\nexport class DataGridCommandsColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public readonly canDelete = input(false);\r\n public readonly canEdit = input(false);\r\n public readonly canDuplicate = input(false);\r\n public readonly editLinkField = input<string>();\r\n\r\n @ContentChild(TemplateRef) public menuTemplate: TemplateRef<any>;\r\n\r\n public readonly deleteClick = output<unknown>();\r\n public readonly editClick = output<unknown>();\r\n public readonly duplicateClick = output<unknown>();\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n}\r\n","<ng-container matColumnDef=\"buttons\">\r\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': width()}\"> {{ label() }} </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n\r\n <div class=\"align-commands\">\r\n\r\n @if (canEdit()) { <cauca-icon-button colorOnHover=\"var(--primary)\" color=\"grey\" icon=\"edit\" [routerLink]=\"editLinkField() ? [row[editLinkField()]] : null\" (buttonClick)=\"editClick?.emit(row)\" class=\"edit-button\" /> }\r\n\r\n @if (canDuplicate()) { <cauca-icon-button color=\"grey\" icon=\"content_copy\" (buttonClick)=\"duplicateClick?.emit(row)\" class=\"duplicate-button\" /> }\r\n\r\n @if (canDelete()) { <cauca-icon-button colorOnHover=\"var(--warn)\" color=\"grey\" icon=\"close\" (buttonClick)=\"deleteClick?.emit(row)\" class=\"delete-button\" /> }\r\n\r\n <template [ngTemplateOutlet]=\"menuTemplate\" [ngTemplateOutletContext]=\"{row:row}\"></template>\r\n\r\n </div>\r\n\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","import { Component, OnDestroy, OnInit, Optional, forwardRef, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { IconComponent } from '@cauca-911/material';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-icon-column',\r\n templateUrl: './data-grid-icon-column.component.html',\r\n styleUrls: ['./data-grid-icon-column.component.scss'],\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridIconColumnComponent) }],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatCell, MatCellDef, IconComponent, MatFooterCell, MatFooterCellDef, NgClass, MatIcon]\r\n})\r\nexport class DataGridIconColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public readonly alignRight = input(false);\r\n public readonly useMatIcon = input(false);\r\n public readonly icon = input('');\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n <th mat-header-cell *matHeaderCellDef> {{ showLabel() ? label() ?? capitalize(prop()) : '' }} </th>\r\n <td [ngClass]=\"alignRight() ? 'td-right' : ''\" mat-cell *matCellDef=\"let row\">\r\n @if (useMatIcon()) { <mat-icon>{{icon()}}</mat-icon> }\r\n @else { <cauca-icon [icon]=\"row[prop()]\" /> }\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, ContentChild, InputSignal, ModelSignal, OnDestroy, OnInit, Optional, TemplateRef, ViewEncapsulation, forwardRef, input, model, output } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { IconButtonComponent, MenuItemComponent } from '@cauca-911/material';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { RouterLink } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-menu-column',\r\n templateUrl: './data-grid-menu-column.component.html',\r\n styleUrls: ['./data-grid-menu-column.component.scss'],\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridMenuColumnComponent) }],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatColumnDef,\r\n MatHeaderCell,\r\n MatHeaderCellDef,\r\n MatCell,\r\n MatCellDef,\r\n IconButtonComponent,\r\n MatMenuModule,\r\n MenuItemComponent,\r\n NgTemplateOutlet,\r\n MatFooterCell,\r\n MatFooterCellDef,\r\n RouterLink\r\n ],\r\n})\r\nexport class DataGridMenuColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n public canDelete: ModelSignal<boolean> = model(false);\r\n public readonly canDeleteByRow = input<(row: any) => boolean>(null);\r\n public canEdit: InputSignal<boolean> = input(false);\r\n public canDuplicate: ModelSignal<boolean> = model(false);\r\n public readonly canDuplicateByRow = input<(row: any) => boolean>(null);\r\n public editLinkField: InputSignal<string> = input();\r\n public duplicateLinkField: InputSignal<string> = input();\r\n @ContentChild(TemplateRef) public menuTemplate: TemplateRef<any>;\r\n\r\n public deleteClick = output<unknown>();\r\n public editClick = output<unknown>();\r\n public duplicateClick = output<unknown>();\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n\r\n public menuOpened(row: any): void {\r\n const canDeleteByRow = this.canDeleteByRow();\r\n if (canDeleteByRow) {\r\n this.canDelete.set(canDeleteByRow(row));\r\n }\r\n const canDuplicateByRow = this.canDuplicateByRow();\r\n if (canDuplicateByRow) {\r\n this.canDuplicate.set(canDuplicateByRow(row));\r\n }\r\n }\r\n}\r\n","<ng-container matColumnDef=\"menu\">\r\n <th mat-header-cell *matHeaderCellDef> {{ label() }} </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <div class=\"align-commands\">\r\n\r\n <cauca-icon-button colorOnHover=\"var(--primary)\" color=\"grey\" icon=\"more_horiz\" [matMenuTriggerFor]=\"actionMenu\" (menuOpened)=\"menuOpened(row)\" />\r\n\r\n <mat-menu #actionMenu=\"matMenu\" class=\"grid-menu\">\r\n @if (canEdit()) {\r\n <cauca-menu-item colorOnHover=\"var(--primary)\" icon=\"edit\" label=\"edit\" [translateLabel]=\"true\" [routerLink]=\"editLinkField() ? [row[editLinkField()]] : null\" (buttonClick)=\"editClick?.emit(row)\" class=\"edit-button\" />\r\n }\r\n\r\n @if (canDuplicate()) {\r\n <cauca-menu-item icon=\"content_copy\" label=\"duplicate\" [translateLabel]=\"true\" [routerLink]=\"duplicateLinkField() ? [row[duplicateLinkField()]] : null\" [queryParams]=\"{ duplicate: true }\" (buttonClick)=\"duplicateClick?.emit(row)\" class=\"duplicate-button\" />\r\n }\r\n\r\n @if (canDelete()) {\r\n <cauca-menu-item colorOnHover=\"var(--warn)\" icon=\"close\" label=\"delete\" [translateLabel]=\"true\" (buttonClick)=\"deleteClick?.emit(row)\" class=\"delete-button\" />\r\n }\r\n <template [ngTemplateOutlet]=\"menuTemplate\" [ngTemplateOutletContext]=\"{row:row}\"></template>\r\n\r\n </mat-menu>\r\n\r\n </div>\r\n\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","import dayjs from 'dayjs';\r\n\r\nexport function resolveDisplayDate(date: Date | null, minLimit: Date | null, maxLimit: Date | null): Date | null {\r\n const upperBound = maxLimit ? dayjs(maxLimit).add(-1, 'second').toDate() : null;\r\n\r\n if (!date) {\r\n return upperBound;\r\n }\r\n\r\n const resolved = new Date(date);\r\n if (minLimit) {\r\n const lowerBound = new Date(minLimit);\r\n return resolved < lowerBound ? lowerBound : resolved;\r\n }\r\n if (upperBound) {\r\n return resolved > upperBound ? upperBound : resolved;\r\n }\r\n return resolved;\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { resolveDisplayDate } from './display-date';\r\n\r\n@Component({\r\n selector: 'cauca-time-label',\r\n imports: [DatePipe, MatTooltip],\r\n templateUrl: './time-label.component.html',\r\n styleUrl: './time-label.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TimeLabelComponent {\r\n public date = input.required<Date|null>();\r\n public minLimit = input<Date|null>(null);\r\n public maxLimit = input<Date|null>(null);\r\n public showTime = input<boolean>(true);\r\n public showSecond = input(false);\r\n\r\n public dateMask = computed(() => this.showTime() ? `dd/MM/yyyy${this.timeFormat()}` : 'dd/MM/yyyy');\r\n public displayDate = computed(() => resolveDisplayDate(this.date(), this.minLimit(), this.maxLimit()) ?? '');\r\n\r\n private readonly timeFormat = computed(() => this.showSecond() ? ' HH:mm:ss' : ' HH:mm');\r\n}\r\n","<span [matTooltip]=\"displayDate() | date:dateMask()\">{{ displayDate() | date:dateMask() }}</span>","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, ViewEncapsulation, forwardRef, Optional, input } from '@angular/core';\r\nimport { BaseGridColumnComponent, ExportCell } from '../base-grid-column.component';\r\nimport { resolveDisplayDate } from '../../components/time-label/display-date';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { MatSortHeader } from '@angular/material/sort';\r\nimport { NgStyle } from '@angular/common';\r\nimport { TimeLabelComponent } from '../../components/time-label/time-label.component';\r\n\r\n@Component({\r\n selector: 'cauca-date-grid-column',\r\n templateUrl: './date-grid-column.component.html',\r\n styleUrls: ['./date-grid-column.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DateGridColumnComponent) }],\r\n imports: [\r\n MatColumnDef,\r\n MatHeaderCell, MatHeaderCellDef, MatSortHeader, NgStyle,\r\n MatCell, MatCellDef,\r\n TimeLabelComponent,\r\n MatFooterCell, MatFooterCellDef,\r\n ]\r\n})\r\nexport class DateGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public showWithTime = input(false);\r\n public showSecond = input(false);\r\n\r\n public maxDate = input<Date|null>(null);\r\n public minDate = input<Date|null>(null);\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n\r\n public override getExportValue(row: Record<string, unknown>): ExportCell {\r\n return resolveDisplayDate(row?.[this.prop()] as Date, this.minDate(), this.maxDate());\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header [ngStyle]=\"{'width': width()}\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row\">\r\n <cauca-time-label [date]=\"row[prop()]\" [showTime]=\"showWithTime()\" [showSecond]=\"showSecond()\" [minLimit]=\"minDate()\" [maxLimit]=\"maxDate()\" />\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>\r\n\r\n","import { Component, OnDestroy, OnInit, Optional, forwardRef, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { NgStyle } from '@angular/common';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { CheckIconComponent } from '../../components/check-icon/check-icon.component';\r\nimport { MatSortHeader } from '@angular/material/sort';\r\n\r\n@Component({\r\n selector: 'cauca-sortable-data-grid-check-column',\r\n templateUrl: './sortable-data-grid-check-column.component.html',\r\n styleUrls: ['./sortable-data-grid-check-column.component.scss'],\r\n providers: [{ provide: BaseGridColumnComponent, useExisting: forwardRef(() => SortableDataGridCheckColumnComponent) }],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatSortHeader, NgStyle, MatTooltip, MatCell, MatCellDef, CheckIconComponent, MatFooterCell, MatFooterCellDef]\r\n})\r\nexport class SortableDataGridCheckColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n public readonly checkIcon = input('check');\r\n public readonly uncheckIcon = input('block');\r\n public readonly sortProp = input('');\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"sortProp() || prop()\" [ngStyle]=\"{'width': width()}\" [matTooltip]=\"label() ?? capitalize(prop())\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\" [ngStyle]=\"{'width': width()}\">\r\n <cauca-check-icon [checkIcon]=\"checkIcon()\" [uncheckIcon]=\"uncheckIcon()\" [isChecked]=\"row[prop()]\" />\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","export function formatPhone(value: unknown): string {\r\n return value?.toString().replace(/(\\d{3})(\\d{3})(\\d{4})/, '$1-$2-$3') ?? '';\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { formatPhone } from './phone-format';\r\n\r\n@Component({\r\n selector: 'cauca-column-label',\r\n imports: [MatTooltip],\r\n templateUrl: './column-label.component.html',\r\n styleUrl: './column-label.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ColumnLabelComponent {\r\n public value = input<any>(null);\r\n public format = input<'none'|'phone'>('none');\r\n public showToolTip = input<boolean>(true);\r\n public displayValue = computed(() => this.format() === 'phone' ? formatPhone(this.value()) : this.value());\r\n}\r\n","@if (showToolTip()) {<span [matTooltip]=\"displayValue()\" >{{ displayValue() }}</span>}\r\n@else { <span>{{displayValue()}}</span>}","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, Optional, ViewEncapsulation, forwardRef, input } from '@angular/core';\r\nimport { BaseGridColumnComponent, ExportCell } from '../base-grid-column.component';\r\nimport { formatPhone } from '../../components/column-label/phone-format';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { ColumnLabelComponent } from '../../components/column-label/column-label.component';\r\nimport { NgStyle } from '@angular/common';\r\nimport { MatSortHeader } from '@angular/material/sort';\r\n\r\n@Component({\r\n selector: 'cauca-sortable-data-grid-column',\r\n templateUrl: './sortable-data-grid-column.component.html',\r\n styleUrls: ['./sortable-data-grid-column.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => SortableDataGridColumnComponent) }],\r\n imports: [\r\n MatColumnDef,\r\n MatHeaderCell, MatHeaderCellDef, MatSortHeader, NgStyle,\r\n MatCell, MatCellDef,\r\n MatTooltip, ColumnLabelComponent,\r\n MatFooterCell, MatFooterCellDef,\r\n ]\r\n})\r\nexport class SortableDataGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public summaryType = input<'none'|'sum'|'count'>('none');\r\n public summaryLabel = input<string>('');\r\n public format = input<'none'|'phone'>('none');\r\n public readonly sortProp = input('');\r\n\r\n public isInitialized = false;\r\n private readonly grid = null;\r\n\r\n public constructor (@Optional() odata: OdataGridComponent, @Optional() grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n this.grid = grid??odata;\r\n this.isInitialized = true;\r\n }\r\n\r\n public override getExportValue(row: Record<string, unknown>): ExportCell {\r\n const value = (row?.[this.prop()] as ExportCell) ?? null;\r\n return this.format() === 'phone' ? formatPhone(value) : value;\r\n }\r\n\r\n public calculateSummary(): string {\r\n const rows = this.grid?.data?.();\r\n if (this.isInitialized && rows) {\r\n if (this.summaryType() === 'sum') {\r\n return this.summaryLabel() + rows.reduce((acc, row) => acc + row[this.prop()], 0) + this.summaryLabel();\r\n }\r\n if (this.summaryType() === 'count') {\r\n return rows.length + this.summaryLabel();\r\n }\r\n }\r\n return '';\r\n }\r\n}\r\n","\r\n<ng-container matColumnDef=\"{{ prop() }}\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"sortProp() || prop()\" [ngStyle]=\"{'width': width()}\" [matTooltip]=\"label() ?? capitalize(prop())\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row\">\r\n <cauca-column-label [value]=\"row[prop()]\" [showToolTip]=\"showToolTip()\" [format]=\"format()\" />\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (isInitialized) {\r\n {{calculateSummary()}}\r\n }\r\n </td>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, forwardRef, inject, OnDestroy, OnInit, Optional, ViewEncapsulation, input } from '@angular/core';\r\nimport { BaseGridColumnComponent, ExportCell } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { ColumnLabelComponent } from '../../components/column-label/column-label.component';\r\n\r\n@Component({\r\n selector: 'cauca-translation-grid-column',\r\n templateUrl: './translation-grid-column.component.html',\r\n styleUrl: './translation-grid-column.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: BaseGridColumnComponent, useExisting: forwardRef(() => TranslationGridColumnComponent) }],\r\n imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatCell, MatCellDef, TranslatePipe, MatFooterCell, MatFooterCellDef, MatTooltip, ColumnLabelComponent],\r\n})\r\nexport class TranslationGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n public readonly prefix = input('');\r\n\r\n private readonly translateService = inject(TranslateService);\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n\r\n public override getExportValue(row: Record<string, unknown>): ExportCell {\r\n const value = row?.[this.prop()];\r\n return value == null ? null : this.translateService.instant(`${this.prefix()}.${value}`);\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (prefix() && row[prop()]) { <cauca-column-label [value]=\"prefix()+'.'+row[prop()] | translate\" [showToolTip]=\"showToolTip()\" /> }\r\n @else if(row[prop()]) { <cauca-column-label [value]=\"row[prop()] | translate\" [showToolTip]=\"showToolTip()\" /> }\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","import { NgStyle } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Optional, ViewEncapsulation } from '@angular/core';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { Iso8601TimeSpanPipe } from '@cauca-911/material';\r\nimport { BaseGridColumnComponent, ExportCell } from '../base-grid-column.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\n\r\nconst timeSpanFormatter = new Iso8601TimeSpanPipe();\r\n\r\n@Component({\r\n selector: 'cauca-time-span-data-grid-column',\r\n imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, NgStyle, MatCell, MatCellDef, MatTooltip, MatFooterCellDef, Iso8601TimeSpanPipe],\r\n templateUrl: './time-span-data-grid-column.component.html',\r\n styleUrl: './time-span-data-grid-column.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: BaseGridColumnComponent, useExisting: forwardRef(() => TimeSpanDataGridColumnComponent) }]\r\n})\r\nexport class TimeSpanDataGridColumnComponent extends BaseGridColumnComponent {\r\n\r\n public constructor(@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid ?? odata)?.table);\r\n }\r\n\r\n public override getExportValue(row: Record<string, unknown>): ExportCell {\r\n return timeSpanFormatter.transform(row?.[this.prop()] as string);\r\n }\r\n}","<ng-container matColumnDef=\"{{ prop() }}\">\r\n\r\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': width()}\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (row[prop()] | Iso8601TimeSpan; as formattedValue) {\r\n <span [matTooltip]=\"showToolTip() ? formattedValue : ''\">\r\n {{ formattedValue }}\r\n </span>\r\n }\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n\r\n</ng-container>"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cauca-911-datagrid.mjs","sources":["../../../projects/cauca-datagrid/src/lib/data-grid/models/data-grid-row-drop-event.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/base-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/models/grid-export.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-export-menu/data-grid-export-menu.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-export-menu/data-grid-export-menu.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-header/data-grid-header.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-header/data-grid-header.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/models/density-enum.ts","../../../projects/cauca-datagrid/src/lib/services/preference.ts","../../../projects/cauca-datagrid/src/lib/services/mat-paginator-localization.service.ts","../../../projects/cauca-datagrid/src/lib/services/preference.service.ts","../../../projects/cauca-datagrid/src/lib/provide-cauca-grid.ts","../../../projects/cauca-datagrid/src/lib/data-grid/models/export-cell.ts","../../../projects/cauca-datagrid/src/lib/services/grid-export.service.ts","../../../projects/cauca-datagrid/src/lib/data-grid/base-data-grid.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/button-popover/button-popover.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/button-popover/button-popover.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-table-options/data-grid-table-options.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-table-options/data-grid-table-options.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-progress-spiner/data-grid-progress-spiner.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/data-grid-progress-spiner/data-grid-progress-spiner.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/data-grid/data-grid.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/data-grid/data-grid.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/odata-grid/odata-listing.service.ts","../../../projects/cauca-datagrid/src/lib/data-grid/odata-grid/grid-url-state.ts","../../../projects/cauca-datagrid/src/lib/data-grid/odata-grid/odata-grid.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/odata-grid/odata-grid.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/grid-state-restoration.service.ts","../../../projects/cauca-datagrid/src/lib/data-grid/provide-grid-state-restoration.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/color-data-grid-column/color-data-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/color-data-grid-column/color-data-grid-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/components/check-icon/check-icon.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-check-column/data-grid-check-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-check-column/data-grid-check-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-column/data-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-column/data-grid-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-command-icon-column/data-grid-command-icon-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-command-icon-column/data-grid-command-icon-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-commands-column/data-grid-commands-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-commands-column/data-grid-commands-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-icon-column/data-grid-icon-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-icon-column/data-grid-icon-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-menu-column/data-grid-menu-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/data-grid-menu-column/data-grid-menu-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/components/time-label/display-date.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/time-label/time-label.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/time-label/time-label.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/date-grid-column/date-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/date-grid-column/date-grid-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/sortable-data-grid-check-column/sortable-data-grid-check-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/sortable-data-grid-check-column/sortable-data-grid-check-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/components/column-label/phone-format.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/column-label/column-label.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/components/column-label/column-label.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/sortable-data-grid-column/sortable-data-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/sortable-data-grid-column/sortable-data-grid-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/translation-grid-column/translation-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/translation-grid-column/translation-grid-column.component.html","../../../projects/cauca-datagrid/src/lib/data-grid/columns/time-span-data-grid-column/time-span-data-grid-column.component.ts","../../../projects/cauca-datagrid/src/lib/data-grid/columns/time-span-data-grid-column/time-span-data-grid-column.component.html","../../../projects/cauca-datagrid/src/public-api.ts","../../../projects/cauca-datagrid/src/cauca-911-datagrid.ts"],"sourcesContent":["export class DataGridRowDropEvent {\r\n public item: unknown;\r\n public data: unknown[];\r\n public fromIndex: number;\r\n public toIndex: number;\r\n\r\n public constructor(data: {\r\n item: unknown;\r\n data: unknown[];\r\n fromIndex: number;\r\n toIndex: number;\r\n }) {\r\n Object.assign(this, data);\r\n }\r\n}\r\n","import { Component, HostBinding, OnDestroy, OnInit, Optional, ViewChild, ViewEncapsulation, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatCellDef, MatColumnDef, MatFooterCellDef, MatHeaderCellDef, MatTable } from '@angular/material/table';\r\nimport { ExportCell } from '../models/export-cell';\r\n\r\nexport type { ExportCell } from '../models/export-cell';\r\n\r\n@Component({ template: '' ,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport abstract class BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public readonly prop = input('');\r\n public readonly showLabel = input(true);\r\n public readonly label = input<string | undefined>(undefined);\r\n public readonly isInColumnChooser = input(true);\r\n public readonly visibleByDefault = input(true);\r\n public readonly width = input('');\r\n public readonly showToolTip = input(true);\r\n public readonly exportable = input(true);\r\n\r\n @HostBinding('attr.ariaHidden') public ariaHidden!: true;\r\n @HostBinding('class') public classes!: 'column-template cdk-visually-hidden';\r\n\r\n @ViewChild(MatColumnDef, { static: true }) public columnDef!: MatColumnDef;\r\n @ViewChild(MatCellDef, { static: true }) public cellDef!: MatCellDef;\r\n @ViewChild(MatHeaderCellDef, { static: true }) public headerCellDef!: MatHeaderCellDef;\r\n @ViewChild(MatFooterCellDef, { static: true }) public footerCellDef!: MatFooterCellDef;\r\n\r\n public selected: boolean = true;\r\n\r\n public constructor(@Optional() public table: MatTable<unknown>) {\r\n }\r\n\r\n public ngOnInit(): void {\r\n if (this.columnDef) {\r\n if (!this.columnDef.name) {\r\n this.columnDef.name = this.prop();\r\n }\r\n this.columnDef.cell = this.cellDef;\r\n this.columnDef.headerCell = this.headerCellDef;\r\n this.columnDef.footerCell = this.footerCellDef;\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (this.table) {\r\n this.table.removeColumnDef(this.columnDef);\r\n }\r\n }\r\n\r\n public capitalize(value: string): string {\r\n return value.charAt(0).toUpperCase() + value.slice(1);\r\n }\r\n\r\n public getExportValue(row: Record<string, unknown>): ExportCell {\r\n return (row?.[this.prop()] as ExportCell) ?? null;\r\n }\r\n\r\n public getExportHeader(): string {\r\n return this.label() ?? this.capitalize(this.prop());\r\n }\r\n}\r\n","import { BaseGridColumnComponent, ExportCell } from '../columns/base-grid-column.component';\r\n\r\nexport type GridExportFormat = 'excel' | 'pdf';\r\n\r\nexport const ALL_EXPORT_FORMATS: readonly GridExportFormat[] = ['excel', 'pdf'];\r\n\r\nexport interface ExportMatrix {\r\n title?: string;\r\n headers: string[];\r\n rows: ExportCell[][];\r\n}\r\n\r\nexport const GRID_OWNED_COLUMNS: readonly string[] = ['', 'position', 'buttons', 'menu', 'expand'];\r\n\r\nexport function buildExportMatrix(\r\n columnOrder: readonly string[],\r\n columns: readonly BaseGridColumnComponent[],\r\n rows: readonly Record<string, unknown>[],\r\n title?: string,\r\n): ExportMatrix {\r\n const exportedColumns = columnOrder\r\n .filter(name => !GRID_OWNED_COLUMNS.includes(name))\r\n .map(name => columns.find(column => column.columnDef?.name === name))\r\n .filter(column => !!column && column.exportable());\r\n\r\n return {\r\n title: title || undefined,\r\n headers: exportedColumns.map(column => column.getExportHeader()),\r\n rows: (rows ?? []).map(row => exportedColumns.map(column => column.getExportValue(row))),\r\n };\r\n}\r\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { IconButtonComponent, MenuItemComponent } from '@cauca-911/material';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { ALL_EXPORT_FORMATS, GridExportFormat } from '../../models/grid-export';\r\n\r\nconst FORMAT_MENU_ITEMS: Record<GridExportFormat, { icon: string; label: string }> = {\r\n excel: { icon: 'table_view', label: 'dataGrid.export.excel' },\r\n pdf: { icon: 'picture_as_pdf', label: 'dataGrid.export.pdf' },\r\n};\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-export-menu',\r\n templateUrl: './data-grid-export-menu.component.html',\r\n styleUrl: './data-grid-export-menu.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [IconButtonComponent, MenuItemComponent, MatMenuModule, TranslatePipe],\r\n})\r\nexport class DataGridExportMenuComponent {\r\n\r\n public readonly formats = input<readonly GridExportFormat[]>(ALL_EXPORT_FORMATS);\r\n public readonly exportRequest = output<GridExportFormat>();\r\n\r\n protected readonly menuItems = FORMAT_MENU_ITEMS;\r\n\r\n protected onExport(format: GridExportFormat): void {\r\n this.exportRequest.emit(format);\r\n }\r\n}\r\n","<cauca-icon-button icon=\"download\" colorOnHover=\"var(--primary)\" [matMenuTriggerFor]=\"exportMenu\"\r\n [ariaLabel]=\"'dataGrid.export.title' | translate\" />\r\n\r\n<mat-menu #exportMenu=\"matMenu\">\r\n @for (format of formats(); track format) {\r\n <cauca-menu-item [icon]=\"menuItems[format].icon\" [label]=\"menuItems[format].label\" [translateLabel]=\"true\"\r\n (buttonClick)=\"onExport(format)\" [class]=\"'export-' + format + '-button'\" />\r\n }\r\n <ng-content select=\"[exportItem]\" />\r\n</mat-menu>\r\n","import { Component, OnDestroy, OnInit, input, output, signal, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { IconButtonComponent, RaisedButtonComponent } from '@cauca-911/material';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { Subject, debounceTime, takeUntil } from 'rxjs';\r\nimport { DataGridExportMenuComponent } from '../data-grid-export-menu/data-grid-export-menu.component';\r\nimport { ALL_EXPORT_FORMATS, GridExportFormat } from '../../models/grid-export';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-header',\r\n templateUrl: './data-grid-header.component.html',\r\n styleUrls: ['./data-grid-header.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatFormFieldModule, IconButtonComponent, RaisedButtonComponent, MatInputModule, ReactiveFormsModule, TranslatePipe, MatIcon, DataGridExportMenuComponent],\r\n})\r\nexport class DataGridHeaderComponent implements OnInit, OnDestroy {\r\n\r\n public filterControl: FormControl<string> = new FormControl<string>('');\r\n\r\n /** Written from the debounced valueChanges subscription and by OdataGridComponent when it\r\n * restores persisted state, so it is a signal: neither is a change-detection trigger\r\n * under zoneless (ADR-0004). */\r\n public readonly showClearButton = signal(false);\r\n\r\n public readonly showAddButton = input(false);\r\n public readonly showRefreshButton = input(false);\r\n public readonly showExportMenu = input(false);\r\n public readonly exportFormats = input<readonly GridExportFormat[]>(ALL_EXPORT_FORMATS);\r\n public readonly addButtonLabel = input('');\r\n public readonly searchPlaceholder = input('');\r\n public readonly showSearchBar = input(true);\r\n public readonly disableAddButton = input(false);\r\n public readonly filterChange = output<string>();\r\n public readonly addButtonClick = output<void>();\r\n public readonly refreshRequest = output<void>();\r\n public readonly exportRequest = output<GridExportFormat>();\r\n\r\n protected _onDestroy = new Subject<void>();\r\n\r\n public ngOnInit(): void {\r\n this.filterControl.valueChanges\r\n .pipe(\r\n debounceTime(500),\r\n takeUntil(this._onDestroy))\r\n .subscribe((filter: string) => {\r\n this.filterChange.emit(filter);\r\n this.showClearButton.set(!!filter);\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._onDestroy.next();\r\n this._onDestroy.complete();\r\n }\r\n\r\n public onRefresh(): void {\r\n this.refreshRequest.emit();\r\n }\r\n\r\n public clearSearchValue(): void {\r\n this.filterControl.setValue('');\r\n }\r\n\r\n public onAddButtonClick(): void {\r\n this.addButtonClick.emit();\r\n }\r\n}\r\n","<div class=\"grid-header\">\r\n\r\n @if (showSearchBar()) {\r\n <mat-form-field appearance=\"outline\" class=\"full-width-field grid-search-box\" subscriptSizing=\"dynamic\">\r\n @if (showClearButton()) { <cauca-icon-button matPrefix (buttonClick)=\"clearSearchValue()\" icon=\"close\" /> }\r\n <mat-label>{{ 'dataGrid.keywordsLabel' | translate}}</mat-label>\r\n <input matInput [formControl]=\"filterControl\" [placeholder]=\"searchPlaceholder()\">\r\n <mat-icon matSuffix>search</mat-icon>\r\n </mat-form-field>\r\n }\r\n\r\n <ng-content select=\"[filterRow]\" ngProjectAs=\"[filterRow]\" />\r\n\r\n @if (showRefreshButton()) { <cauca-icon-button (buttonClick)=\"onRefresh()\" icon=\"refresh\" class=\"grid-refresh-button\" /> }\r\n\r\n @if (showExportMenu()) {\r\n <cauca-data-grid-export-menu [formats]=\"exportFormats()\" (exportRequest)=\"exportRequest.emit($event)\" class=\"grid-export-menu\">\r\n <ng-content select=\"[exportItem]\" ngProjectAs=\"[exportItem]\" />\r\n </cauca-data-grid-export-menu>\r\n }\r\n\r\n @if (showAddButton()) { <cauca-raised-button icon=\"add\" color=\"primary\" [label]=\"addButtonLabel()\" [translateLabel]=\"false\" class=\"grid-new-button\" [isDisabled]=\"disableAddButton()\" (buttonClick)=\"onAddButtonClick()\" /> }\r\n</div>","export enum Density {\r\n Compact = \"compact\",\r\n Standard = \"standard\",\r\n Comfortable = \"comfortable\"\r\n}","import { Density } from \"../data-grid/models/density-enum\";\r\n\r\nexport class Preference {\r\n public gridDensity: Density;\r\n}\r\n\r\nexport class GridConfiguration {\r\n public name: string;\r\n public visibleColumns: string[];\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatPaginatorIntl } from \"@angular/material/paginator\";\r\nimport { TranslateService } from \"@cauca-911/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MatPaginatorLocalizationService extends MatPaginatorIntl {\r\n public itemsPerPageLabel: string = 'Items per page';\r\n public nextPageLabel: string = 'Next page';\r\n public previousPageLabel: string = 'Previous page';\r\n public ofLabel: string = 'of'\r\n\r\n public constructor(\r\n private readonly translateService: TranslateService) {\r\n super();\r\n this.translateService.onLangChange.subscribe(() => this.loadTranslations());\r\n this.loadTranslations();\r\n }\r\n\r\n public getRangeLabel = (page, pageSize, length): string => {\r\n if (length == 0 || pageSize == 0) {\r\n return `0 ${this.ofLabel} ${length}`;\r\n }\r\n\r\n length = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\r\n return `${startIndex + 1} – ${endIndex} ${this.ofLabel} ${length}`;\r\n };\r\n\r\n private loadTranslations(): any {\r\n this.translateService.get([\r\n 'paginator.itemsPerPage',\r\n 'paginator.nextPage',\r\n 'paginator.previousPage',\r\n 'paginator.of'\r\n ])\r\n .subscribe(translation => {\r\n this.itemsPerPageLabel = translation['paginator.itemsPerPage'];\r\n this.nextPageLabel = translation['paginator.nextPage'];\r\n this.previousPageLabel = translation['paginator.previousPage'];\r\n this.ofLabel = translation['paginator.of'];\r\n this.changes.next();\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { GridConfiguration, Preference } from './preference';\r\nimport { Density } from '../data-grid/models/density-enum';\r\nimport { BasePreferenceService } from './base-preference-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PreferenceService implements BasePreferenceService {\r\n public preference: BehaviorSubject<Preference> = new BehaviorSubject<Preference>(new Preference());\r\n\r\n public gridConfiguration: GridConfiguration[] = [];\r\n\r\n public constructor() {\r\n const data = localStorage.getItem('GridPreference');\r\n const configuration = localStorage.getItem('GridConfiguration');\r\n if (data) {\r\n this.preference.next(JSON.parse(data));\r\n }\r\n if (configuration) {\r\n this.gridConfiguration = JSON.parse(configuration);\r\n }\r\n }\r\n\r\n public getPreference(): Preference {\r\n return this.preference.value;\r\n }\r\n\r\n public setPreferenceDensity(density: Density) {\r\n const preference = this.getPreference();\r\n if (density === preference.gridDensity) return;\r\n preference.gridDensity = density;\r\n this.preference.next(preference);\r\n this.addOrUpdatePreference();\r\n }\r\n\r\n public addOrUpdatePreference(): void {\r\n localStorage.setItem('GridPreference', JSON.stringify(this.getPreference()));\r\n }\r\n\r\n public getPreferenceForGrid(gridName: string): Observable<GridConfiguration> {\r\n return of(this.getPreferenceForGridNotObservable(gridName));\r\n }\r\n\r\n public addOrUpdateGridPreference(gridName: string, visibleColumns: string[]): Observable<void> {\r\n const configuration = this.getPreferenceForGridNotObservable(gridName);\r\n configuration.visibleColumns = visibleColumns || [];\r\n localStorage.setItem('GridConfiguration', JSON.stringify(this.gridConfiguration));\r\n return of();\r\n }\r\n\r\n private getPreferenceForGridNotObservable(gridName: string): GridConfiguration {\r\n const configuration = this.gridConfiguration.find(g => g.name == gridName);\r\n if (configuration) {\r\n return configuration;\r\n }\r\n const newConfiguration = new GridConfiguration();\r\n newConfiguration.name = gridName;\r\n this.gridConfiguration.push(newConfiguration);\r\n return newConfiguration;\r\n }\r\n}","import { CDK_DRAG_CONFIG } from \"@angular/cdk/drag-drop\";\r\nimport { Provider, EnvironmentProviders, Type, InjectionToken } from \"@angular/core\";\r\nimport { MatPaginatorIntl } from \"@angular/material/paginator\";\r\nimport { MatPaginatorLocalizationService } from \"./services/mat-paginator-localization.service\";\r\nimport { PreferenceService } from \"./services/preference.service\";\r\nimport { BasePreferenceService } from \"./services/base-preference-service\";\r\n\r\nexport interface CaucaGridOptions {\r\n /** If not provided, a default implementation will be used which will use localStorage to store the grid preferences. */\r\n gridPreferenceService?: Type<BasePreferenceService>\r\n}\r\n\r\nexport const PREFERENCE_SERVICE_TOKEN = new InjectionToken<BasePreferenceService>('CaucaGridPreferenceService');\r\n\r\nexport function provideCaucaGrid(options?: CaucaGridOptions): (Provider|EnvironmentProviders) {\r\n return [\r\n { provide: CDK_DRAG_CONFIG, useValue: { previewContainer: 'parent' } },\r\n { provide: MatPaginatorIntl, useClass: MatPaginatorLocalizationService },\r\n { provide: PREFERENCE_SERVICE_TOKEN, useClass: options?.gridPreferenceService || PreferenceService }\r\n ];\r\n}\r\n","export type ExportValue = string | number | boolean | Date | null;\r\n\r\nexport interface FilledExportCell {\r\n value: ExportValue;\r\n fillColor: string;\r\n}\r\n\r\nexport type ExportCell = ExportValue | FilledExportCell;\r\n\r\nconst HEX_COLOR_PATTERN = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;\r\nconst SHORT_HEX_LENGTH = 3;\r\nconst ALPHA_OPAQUE = 'FF';\r\n\r\nexport function isFilledExportCell(cell: ExportCell): cell is FilledExportCell {\r\n return typeof cell === 'object' && cell !== null && !(cell instanceof Date) && 'fillColor' in cell;\r\n}\r\n\r\nexport function hexToArgb(fillColor: string): string | undefined {\r\n if (!HEX_COLOR_PATTERN.test(fillColor)) {\r\n return undefined;\r\n }\r\n\r\n const hex = fillColor.slice(1);\r\n const expandedHex = hex.length === SHORT_HEX_LENGTH\r\n ? hex.split('').map(digit => digit + digit).join('')\r\n : hex;\r\n\r\n return `${ALPHA_OPAQUE}${expandedHex}`.toUpperCase();\r\n}\r\n","import { formatDate } from '@angular/common';\r\nimport { inject, Injectable, LOCALE_ID } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ExportCell, ExportValue, hexToArgb, isFilledExportCell } from '../data-grid/models/export-cell';\r\nimport { ExportMatrix } from '../data-grid/models/grid-export';\r\nimport type { CellHookData } from 'jspdf-autotable';\r\n\r\nconst XLSX_MIME = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\r\nconst DATE_MASK = 'dd/MM/yyyy HH:mm';\r\nconst EXCEL_DATE_FORMAT = 'dd/mm/yyyy hh:mm';\r\nconst COLUMN_WIDTH = 24;\r\nconst FONT_NAME = 'Aptos Narrow';\r\nconst FONT_FAMILY = 2;\r\nconst EXCEL_TITLE_FONT_SIZE = 25;\r\nconst TITLE_FONT_SIZE = 14;\r\nconst PAGE_MARGIN = 14;\r\nconst TITLE_BASELINE = 15;\r\nconst TABLE_TOP_WITH_TITLE = 22;\r\nconst MIN_CELL_WIDTH = 15;\r\nconst FILL_BORDER_WIDTH = 0.2;\r\nconst FILL_BORDER_COLOR = '#333333';\r\nconst THIN_BORDER = { style: 'thin' } as const;\r\nconst FILL_CELL_BORDER = { top: THIN_BORDER, left: THIN_BORDER, bottom: THIN_BORDER, right: THIN_BORDER };\r\n\r\ntype WorkbookConstructor = typeof import('exceljs').Workbook;\r\ntype ExcelCell = import('exceljs').Cell;\r\n\r\ninterface ExcelJsNamespace {\r\n Workbook?: WorkbookConstructor;\r\n default?: { Workbook?: WorkbookConstructor };\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GridExportService {\r\n\r\n private readonly locale = inject(LOCALE_ID);\r\n private readonly translateService = inject(TranslateService);\r\n\r\n public async toExcel(matrix: ExportMatrix, fileName: string): Promise<void> {\r\n const Workbook = await this.loadWorkbook();\r\n\r\n const workbook = new Workbook();\r\n const worksheet = workbook.addWorksheet(fileName.slice(0, 31));\r\n const columnCount = matrix.headers.length;\r\n\r\n if (matrix.title) {\r\n const titleRow = worksheet.addRow([matrix.title]);\r\n titleRow.font = { name: FONT_NAME, family: FONT_FAMILY, bold: true, size: EXCEL_TITLE_FONT_SIZE };\r\n titleRow.alignment = { horizontal: 'center', vertical: 'middle' };\r\n if (columnCount > 1) {\r\n worksheet.mergeCells(1, 1, 1, columnCount);\r\n }\r\n }\r\n\r\n const headerRow = matrix.title ? 2 : 1;\r\n worksheet.addRow(matrix.headers).font = { name: FONT_NAME, family: FONT_FAMILY, bold: true };\r\n matrix.rows.forEach(row => {\r\n const addedRow = worksheet.addRow(row.map(cell => this.localize(this.valueOf(cell))));\r\n addedRow.font = { name: FONT_NAME, family: FONT_FAMILY };\r\n row.forEach((cell, columnIndex) => {\r\n if (isFilledExportCell(cell)) {\r\n this.applyFill(addedRow.getCell(columnIndex + 1), cell.fillColor);\r\n }\r\n });\r\n });\r\n\r\n (worksheet.columns ?? []).forEach((column, index) => {\r\n column.width = COLUMN_WIDTH;\r\n if (matrix.rows.some(row => this.valueOf(row[index]) instanceof Date)) {\r\n column.numFmt = EXCEL_DATE_FORMAT;\r\n }\r\n });\r\n\r\n if (columnCount > 0) {\r\n worksheet.autoFilter = {\r\n from: { row: headerRow, column: 1 },\r\n to: { row: headerRow, column: columnCount },\r\n };\r\n }\r\n\r\n const buffer = await workbook.xlsx.writeBuffer();\r\n this.download(new Blob([buffer], { type: XLSX_MIME }), `${fileName}.xlsx`);\r\n }\r\n\r\n public async toPdf(matrix: ExportMatrix, fileName: string): Promise<void> {\r\n const { jsPDF } = await this.load(() => import('jspdf'), 'jspdf');\r\n const { default: autoTable } = await this.load(() => import('jspdf-autotable'), 'jspdf-autotable');\r\n\r\n const document = new jsPDF({ orientation: 'landscape' });\r\n\r\n if (matrix.title) {\r\n document.setFontSize(TITLE_FONT_SIZE);\r\n document.text(matrix.title, PAGE_MARGIN, TITLE_BASELINE);\r\n }\r\n\r\n autoTable(document, {\r\n head: [matrix.headers],\r\n body: matrix.rows.map(row => row.map(cell => this.stringify(cell))),\r\n startY: matrix.title ? TABLE_TOP_WITH_TITLE : undefined,\r\n margin: { left: PAGE_MARGIN, right: PAGE_MARGIN },\r\n styles: { fontSize: 8, overflow: 'linebreak' },\r\n headStyles: { fontStyle: 'bold' },\r\n didParseCell: (data: CellHookData) => this.applyPdfFill(matrix, data),\r\n });\r\n\r\n document.save(`${fileName}.pdf`);\r\n }\r\n\r\n private async loadWorkbook(): Promise<WorkbookConstructor> {\r\n const excel = await this.load(() => import('exceljs'), 'exceljs') as unknown as ExcelJsNamespace;\r\n const Workbook = excel.Workbook ?? excel.default?.Workbook;\r\n\r\n if (!Workbook) {\r\n throw new Error(\r\n '@cauca-911/datagrid could not load exceljs: the module exposes no Workbook. '\r\n + 'This is a bundler CommonJS interop problem, not a missing package.',\r\n );\r\n }\r\n\r\n return Workbook;\r\n }\r\n\r\n private async load<T>(importer: () => Promise<T>, packageName: string): Promise<T> {\r\n try {\r\n return await importer();\r\n } catch (cause) {\r\n throw new Error(\r\n `@cauca-911/datagrid needs the optional peer dependency \"${packageName}\" to export. `\r\n + 'Run: npm install exceljs jspdf jspdf-autotable --save',\r\n { cause },\r\n );\r\n }\r\n }\r\n\r\n private applyFill(cell: ExcelCell, fillColor: string): void {\r\n const argb = hexToArgb(fillColor);\r\n if (!argb) {\r\n return;\r\n }\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb } };\r\n cell.border = FILL_CELL_BORDER;\r\n }\r\n\r\n private applyPdfFill(matrix: ExportMatrix, data: CellHookData): void {\r\n if (data.section !== 'body') {\r\n return;\r\n }\r\n const cell = matrix.rows[data.row.index]?.[data.column.index];\r\n if (!cell || !isFilledExportCell(cell) || !hexToArgb(cell.fillColor)) {\r\n return;\r\n }\r\n data.cell.styles.fillColor = cell.fillColor;\r\n data.cell.styles.lineColor = FILL_BORDER_COLOR;\r\n data.cell.styles.lineWidth = FILL_BORDER_WIDTH;\r\n data.cell.styles.minCellWidth = MIN_CELL_WIDTH;\r\n }\r\n\r\n private valueOf(cell: ExportCell): ExportValue {\r\n return isFilledExportCell(cell) ? cell.value : cell;\r\n }\r\n\r\n private localize(value: ExportValue): ExportValue {\r\n return typeof value === 'boolean'\r\n ? this.translateService.instant(value ? 'dataGrid.export.true' : 'dataGrid.export.false')\r\n : value;\r\n }\r\n\r\n private stringify(cell: ExportCell): string {\r\n const value = this.valueOf(cell);\r\n if (value === null || value === undefined) {\r\n return '';\r\n }\r\n if (value instanceof Date) {\r\n return formatDate(value, DATE_MASK, this.locale);\r\n }\r\n return String(this.localize(value));\r\n }\r\n\r\n private download(blob: Blob, fileName: string): void {\r\n const url = URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.download = fileName;\r\n link.click();\r\n URL.revokeObjectURL(url);\r\n }\r\n}\r\n","import {\r\n AfterContentInit, Component, ContentChild,\r\n computed, ContentChildren, Inject, inject, input, linkedSignal, output, QueryList, signal, ViewChild,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { MatColumnDef, MatFooterRowDef, MatHeaderRowDef, MatNoDataRow, MatRowDef, MatTable } from '@angular/material/table';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { BaseGridColumnComponent } from './columns/base-grid-column.component';\r\nimport { DataGridHeaderComponent } from './components/data-grid-header/data-grid-header.component';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { Density } from './models/density-enum';\r\nimport { Preference } from '../services/preference';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BasePreferenceService } from '../services/base-preference-service';\r\nimport { PREFERENCE_SERVICE_TOKEN } from '../provide-cauca-grid';\r\nimport { ALL_EXPORT_FORMATS, buildExportMatrix, GridExportFormat, GRID_OWNED_COLUMNS } from './models/grid-export';\r\nimport { GridExportService } from '../services/grid-export.service';\r\nimport { ColumnsChangedEvent } from './models/columns-changed-event';\r\n\r\n\r\n@Component({ changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: '' })\r\nexport abstract class BaseDataGridComponent implements AfterContentInit {\r\n public readonly resourceName = input.required<string>();\r\n public readonly preferenceKey = input<string>();\r\n protected readonly gridPreferenceKey = computed(() => this.preferenceKey() || this.resourceName());\r\n public readonly displayedColumns = input<string[]>([]);\r\n public readonly showAddButton = input(false);\r\n public readonly disableAddButton = input(false);\r\n public readonly addButtonLabel = input('');\r\n public readonly searchPlaceholder = input('');\r\n public readonly showSearchBar = input(true);\r\n public readonly searchableColumns = input<string[]>();\r\n public readonly showTableOptions = input(false);\r\n public readonly showColumnViewer = input(true);\r\n public readonly showPaginator = input(false);\r\n public readonly hidePageSize = input(false);\r\n public readonly showExpandButton = input(false);\r\n public readonly allowExport = input(false);\r\n public readonly exportFileName = input('');\r\n public readonly exportRows = input<(() => Promise<unknown[]>) | undefined>(undefined);\r\n public readonly exportFormats = input<readonly GridExportFormat[]>(ALL_EXPORT_FORMATS);\r\n public readonly exportTitle = input('');\r\n public readonly canExport = computed(() => this.allowExport());\r\n public readonly addButtonClick = output<void>();\r\n public expandedElement = signal<any>(null);\r\n\r\n @ViewChild(DataGridHeaderComponent) public header!: DataGridHeaderComponent;\r\n @ViewChild(MatTable, { static: true }) public table: MatTable<unknown>;\r\n @ContentChildren(BaseGridColumnComponent) public regularColumns: QueryList<BaseGridColumnComponent>;\r\n @ContentChildren(MatColumnDef) public columnDefs: QueryList<MatColumnDef>;\r\n @ContentChild(MatHeaderRowDef) public headerRowDef: QueryList<MatHeaderRowDef>;\r\n @ContentChild(MatFooterRowDef) public footerRowDef: QueryList<MatFooterRowDef>;\r\n @ContentChildren(MatRowDef) public rowDefs: QueryList<MatRowDef<unknown>>;\r\n @ContentChild(MatNoDataRow) public noDataRow: MatNoDataRow;\r\n @ViewChild(MatPaginator) public paginator: MatPaginator;\r\n\r\n public defaultAddButtonLabel: string = '';\r\n\r\n /**\r\n * Derived from the column inputs, but overwritten when the user picks columns in the table\r\n * options — which is exactly what linkedSignal models. It replaces the ngOnChanges mirroring\r\n * this class used to do (ADR-0003).\r\n */\r\n public readonly allDisplayedColumns = linkedSignal(() => this.computeDisplayedColumns());\r\n public preference: Preference;\r\n\r\n protected sort: MatSort = null;\r\n\r\n private readonly exportService = inject(GridExportService);\r\n\r\n public get density(): typeof Density {\r\n return Density;\r\n }\r\n\r\n public constructor(translateService: TranslateService,\r\n @Inject(PREFERENCE_SERVICE_TOKEN) private preferenceService: BasePreferenceService,) {\r\n this.defaultAddButtonLabel = translateService.instant('dataGrid.defaultAddButtonLabel');\r\n }\r\n\r\n public ngAfterContentInit(): void {\r\n this.setUpPaginator(this.paginator, this.showPaginator());\r\n this.setUpFilterPredicate();\r\n if (this.table && this.regularColumns && this.rowDefs && this.columnDefs) {\r\n this.applyColumns();\r\n }\r\n\r\n if (this.showTableOptions()) {\r\n this.preferenceService.preference.subscribe((preference) => {\r\n this.preference = preference;\r\n });\r\n } else {\r\n this.preference = new Preference();\r\n }\r\n }\r\n\r\n public onExpand(element: any): void {\r\n if (this.expandedElement() === element) {\r\n this.expandedElement.set(null);\r\n } else {\r\n this.expandedElement.set(element);\r\n }\r\n }\r\n\r\n public clearFilter(): void {\r\n this.header?.clearSearchValue();\r\n }\r\n\r\n public renderRows(): void {\r\n this.forceReloadFilter();\r\n this.applyColumns();\r\n this.table.renderRows();\r\n }\r\n\r\n public onDensityChanged(density: Density): void {\r\n this.preferenceService.setPreferenceDensity(density);\r\n }\r\n\r\n public abstract getData(): unknown[];\r\n\r\n /** The rows to export when the caller supplies no `exportRows` provider; may be fetched. */\r\n protected abstract getExportSourceRows(): unknown[] | Promise<unknown[]>;\r\n protected abstract setUpFilterPredicate(): void;\r\n protected abstract setUpSort(sort: MatSort): void;\r\n protected abstract forceReloadFilter(): void;\r\n\r\n protected async onExportRequest(format: GridExportFormat): Promise<void> {\r\n const provider = this.exportRows();\r\n const rows = await (provider ? provider() : this.getExportSourceRows());\r\n const matrix = buildExportMatrix(this.allDisplayedColumns(), this.regularColumns?.toArray() ?? [], rows as Record<string, unknown>[], this.exportTitle());\r\n const fileName = this.exportFileName() || this.resourceName();\r\n\r\n await (format === 'excel'\r\n ? this.exportService.toExcel(matrix, fileName)\r\n : this.exportService.toPdf(matrix, fileName));\r\n }\r\n\r\n /** The set of columns to render, before the user's own column selection is applied. */\r\n protected computeDisplayedColumns(): string[] {\r\n return [...this.displayedColumns()];\r\n }\r\n\r\n protected setUpPaginator(_paginator: MatPaginator, _showPaginator: boolean): void {\r\n // nothing\r\n }\r\n\r\n protected onColumnsChanged({ columns, persist }: ColumnsChangedEvent): void {\r\n this.allDisplayedColumns.set([...columns]);\r\n if (!persist) {\r\n return;\r\n }\r\n const columnsToSave = this.removeMandatoryColumns([...columns]);\r\n this.preferenceService.addOrUpdateGridPreference(this.gridPreferenceKey(), columnsToSave).subscribe();\r\n }\r\n\r\n protected applyColumns(): void {\r\n this.regularColumns.forEach(dynColumn => this.table.addColumnDef(dynColumn.columnDef));\r\n this.rowDefs.forEach(rowDef => this.table.addRowDef(rowDef));\r\n this.table.setNoDataRow(this.noDataRow);\r\n this.columnDefs.forEach(columnDef => {\r\n this.table.addColumnDef(columnDef);\r\n this.sort.register({ id: columnDef.name, start: 'desc', disableClear: false });\r\n });\r\n }\r\n\r\n private removeMandatoryColumns(columns: string[]): string[] {\r\n return columns.filter(column => !GRID_OWNED_COLUMNS.includes(column));\r\n }\r\n}\r\n","import { CdkConnectedOverlay, CdkOverlayOrigin, STANDARD_DROPDOWN_BELOW_POSITIONS } from '@angular/cdk/overlay';\r\nimport { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\r\nimport { BasicButtonComponent } from '@cauca-911/material';\r\n\r\n@Component({\r\n selector: 'cauca-button-popover',\r\n templateUrl: './button-popover.component.html',\r\n styleUrls: ['./button-popover.component.scss'],\r\n imports: [CdkConnectedOverlay, BasicButtonComponent, CdkOverlayOrigin],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ButtonPopoverComponent {\r\n public buttonLabel = input<string>(null);\r\n public buttonIcon = input<string>('');\r\n public color = input<string>('primary');\r\n\r\n public isActive = signal<boolean>(false);\r\n\r\n protected readonly overlayPositions = STANDARD_DROPDOWN_BELOW_POSITIONS;\r\n\r\n public toggle() {\r\n this.isActive.set(!this.isActive());\r\n }\r\n\r\n public close() {\r\n if (this.isActive()) {\r\n this.isActive.set(false);\r\n }\r\n }\r\n}\r\n","<cauca-basic-button [icon]=\"buttonIcon()\" [color]=\"color()\" [label]=\"buttonLabel()\" [translateLabel]=\"false\" (buttonClick)=\"toggle()\" cdkOverlayOrigin #popoverTrigger=\"cdkOverlayOrigin\" />\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"popoverTrigger\"\r\n [cdkConnectedOverlayOpen]=\"isActive()\"\r\n [cdkConnectedOverlayHasBackdrop]=\"isActive()\"\r\n [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop-cs'\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\r\n [cdkConnectedOverlayPush]=\"true\"\r\n [cdkConnectedOverlayViewportMargin]=\"8\"\r\n [cdkConnectedOverlayMinHeight]=\"200\"\r\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\r\n (backdropClick)=\"toggle()\">\r\n <ng-content></ng-content>\r\n</ng-template>\r\n","import { Component, inject, OnInit, QueryList, ViewChild, input, output, ChangeDetectionStrategy } from '@angular/core';\r\nimport { Density } from '../../models/density-enum';\r\nimport { BaseGridColumnComponent } from '../../columns/base-grid-column.component';\r\nimport { ButtonPopoverComponent } from '../button-popover/button-popover.component';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { BasicButtonComponent, MenuItemComponent, RaisedButtonComponent, StrokedButtonComponent } from '@cauca-911/material';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { PREFERENCE_SERVICE_TOKEN } from '../../../provide-cauca-grid';\r\nimport { ColumnsChangedEvent } from '../../models/columns-changed-event';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-table-options',\r\n templateUrl: './data-grid-table-options.component.html',\r\n styleUrls: ['./data-grid-table-options.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatCardModule, ButtonPopoverComponent, MatCheckboxModule, StrokedButtonComponent, RaisedButtonComponent, BasicButtonComponent, MatMenuModule, FormsModule, TranslatePipe, MenuItemComponent],\r\n})\r\nexport class DataGridTableOptionsComponent implements OnInit {\r\n public readonly gridName = input.required<string>();\r\n public readonly showColumnViewer = input(true);\r\n public readonly allColumns = input<QueryList<BaseGridColumnComponent>>(new QueryList());\r\n\r\n public readonly densityChanged = output<Density>();\r\n public readonly columnsChanged = output<ColumnsChangedEvent>();\r\n\r\n @ViewChild(ButtonPopoverComponent, { static: true }) public columnViewer: ButtonPopoverComponent;\r\n\r\n public columnsSearch: string = '';\r\n\r\n private readonly preferenceService = inject(PREFERENCE_SERVICE_TOKEN);\r\n\r\n public get density(): typeof Density {\r\n return Density;\r\n }\r\n\r\n public get columns(): BaseGridColumnComponent[] {\r\n return this.allColumns().filter(c => c.prop() !== 'buttons' && c.prop() !== 'menu' && c.prop() !== '' && c.isInColumnChooser());\r\n }\r\n\r\n public get currentDensityIcon(): string {\r\n const currentDensity = this.preferenceService.getPreference()?.gridDensity;\r\n if (currentDensity === Density.Compact) {\r\n return 'density_small';\r\n }\r\n\r\n if (currentDensity === Density.Comfortable) {\r\n return 'density_large';\r\n }\r\n\r\n return 'density_medium';\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.preferenceService.getPreferenceForGrid(this.gridName()).subscribe({\r\n next: configuration => {\r\n if (configuration?.visibleColumns) {\r\n this.selectOnlyUserColumns(configuration.visibleColumns);\r\n } else {\r\n this.selectDefaultColumns();\r\n }\r\n this.onColumnsChanged(false);\r\n }\r\n });\r\n }\r\n\r\n public closeColumnViewer(): void {\r\n if (this.columnViewer) {\r\n this.columnViewer.close();\r\n }\r\n }\r\n\r\n public changeDensity(newDensity: Density): void {\r\n this.densityChanged.emit(newDensity);\r\n }\r\n\r\n public onColumnsChanged(persist = true): void {\r\n const newColumns = this.allColumns().filter(column => column.selected);\r\n this.columnsChanged.emit({ columns: newColumns.map((column) => column.prop()), persist });\r\n }\r\n\r\n public resetColumns(): void {\r\n this.selectDefaultColumns();\r\n this.onColumnsChanged();\r\n }\r\n\r\n public showAllColumns(): void {\r\n this.allColumns().forEach((column => column.selected = true));\r\n this.onColumnsChanged();\r\n }\r\n\r\n private selectOnlyUserColumns(configurationVisibleColumns: string[]): void {\r\n this.allColumns().forEach((column => {\r\n const index = configurationVisibleColumns.findIndex(c => c === column.prop());\r\n if (index === -1 && column.prop() !== 'buttons' && column.prop() !== 'menu' && column.prop() !== '') {\r\n column.selected = false;\r\n }\r\n }));\r\n }\r\n\r\n private selectDefaultColumns(): void {\r\n this.allColumns().forEach((column => {\r\n column.selected = column.visibleByDefault();\r\n }));\r\n }\r\n}\r\n","<div class=\"table-options-bar\">\r\n <div class=\"table-options\">\r\n @if (showColumnViewer()) { <cauca-button-popover [buttonLabel]=\"'dataGrid.columns' | translate\" buttonIcon=\"view_column\">\r\n <mat-card>\r\n <mat-card-content>\r\n <div class=\"columns\">\r\n @for (column of columns; track column) {\r\n <mat-checkbox color=\"primary\" [(ngModel)]=\"column.selected\"\r\n (change)=\"onColumnsChanged()\">\r\n {{column.label()}}\r\n </mat-checkbox>\r\n }\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cauca-stroked-button [small]=\"true\" color=\"primary\" (buttonClick)=\"resetColumns()\" label=\"dataGrid.columnChooser.reset\" [translateLabel]=\"true\" />\r\n <cauca-raised-button [small]=\"true\" color=\"primary\" (buttonClick)=\"showAllColumns()\" label=\"dataGrid.columnChooser.showAll\" [translateLabel]=\"true\" />\r\n </mat-card-actions>\r\n </mat-card>\r\n </cauca-button-popover> }\r\n <cauca-basic-button color=\"primary\" [matMenuTriggerFor]=\"densityMenu\" class=\"open-menu-button\" [icon]=\"currentDensityIcon\" label=\"dataGrid.density.title\" [translateLabel]=\"true\" />\r\n </div>\r\n\r\n <ng-content select=\"[customFilter]\"> </ng-content>\r\n</div>\r\n\r\n<mat-menu #densityMenu=\"matMenu\">\r\n <cauca-menu-item label=\"dataGrid.density.compact\" [translateLabel]=\"true\" icon=\"density_small\" (buttonClick)=\"changeDensity(density.Compact)\" class=\"density-compact\" />\r\n <cauca-menu-item label=\"dataGrid.density.standard\" [translateLabel]=\"true\" icon=\"density_medium\" (buttonClick)=\"changeDensity(density.Standard)\" class=\"density-standard\" />\r\n <cauca-menu-item label=\"dataGrid.density.comfortable\" [translateLabel]=\"true\" icon=\"density_large\" (buttonClick)=\"changeDensity(density.Comfortable)\" class=\"density-comfortable\" />\r\n</mat-menu>","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-progress-spiner',\r\n templateUrl: './data-grid-progress-spiner.component.html',\r\n styleUrls: ['./data-grid-progress-spiner.component.scss'],\r\n imports: [MatProgressSpinnerModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DataGridProgressSpinerComponent {\r\n\r\n public isLoading = input<boolean>(false);\r\n public useBackground = input<boolean>(true);\r\n}\r\n","@if (isLoading()) {\r\n <div class=\"spiner-container\" [class.use-background]=\"useBackground()\">\r\n <mat-progress-spinner\r\n color=\"primary\"\r\n mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n </div>\r\n}","import {\r\n AfterContentInit, AfterViewInit, ChangeDetectionStrategy, Component,\r\n ContentChild, effect, inject, input, output,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRow, MatRowDef, MatTable, MatTableDataSource } from '@angular/material/table';\r\nimport { CdkDrag, CdkDragDrop, CdkDragHandle, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { DataGridRowDropEvent } from '../models/data-grid-row-drop-event';\r\nimport { ColumnsChangedEvent } from '../models/columns-changed-event';\r\nimport { toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';\r\nimport { BaseDataGridComponent } from '../base-data-grid.component';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { DataGridHeaderComponent } from '../components/data-grid-header/data-grid-header.component';\r\nimport { DataGridTableOptionsComponent } from '../components/data-grid-table-options/data-grid-table-options.component';\r\nimport { IconButtonComponent } from '@cauca-911/material';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { DataGridProgressSpinerComponent } from '../components/data-grid-progress-spiner/data-grid-progress-spiner.component';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { PREFERENCE_SERVICE_TOKEN } from '../../provide-cauca-grid';\r\nimport { StatusMessageComponent } from '@cauca-911/material';\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'cauca-data-grid',\r\n templateUrl: './data-grid.component.html',\r\n styleUrls: ['./data-grid.component.scss'],\r\n imports: [\r\n NgTemplateOutlet, // still needed\r\n // Material Table structure:\r\n MatTable, MatSort, MatColumnDef,\r\n MatHeaderCell, MatHeaderCellDef, MatCellDef,\r\n MatFooterCell, MatFooterCellDef,\r\n MatRow, MatRowDef,\r\n MatHeaderRow, MatHeaderRowDef,\r\n MatFooterRow, MatFooterRowDef,\r\n MatNoDataRow,\r\n // Drag and Drop:\r\n CdkDropList, CdkDrag, CdkDragHandle,\r\n // Material extras:\r\n MatIcon, MatPaginator,\r\n // Custom Components:\r\n DataGridHeaderComponent,\r\n DataGridTableOptionsComponent,\r\n DataGridProgressSpinerComponent,\r\n IconButtonComponent,\r\n StatusMessageComponent\r\n]\r\n})\r\nexport class DataGridComponent extends BaseDataGridComponent implements AfterContentInit, AfterViewInit {\r\n\r\n public readonly data = input<any[]>([]);\r\n public readonly showLoadingError = input(false);\r\n public readonly isLoading = input(false);\r\n public readonly allowReordering = input(false);\r\n public readonly filterPredicate = input<(data: unknown, filter: string) => boolean>();\r\n public readonly showFooter = input(false);\r\n public readonly showHeader = input(true);\r\n public readonly headerColor = input<string | undefined>(undefined);\r\n public readonly showRefreshButton = input(false);\r\n public readonly rowDrop = output<DataGridRowDropEvent>();\r\n public readonly refreshData = output<void>();\r\n @ContentChild(TemplateRef) public rowDetailTemplate!: TemplateRef<any>;\r\n\r\n public dataSource: MatTableDataSource<unknown[]>;\r\n public dragDisabled: boolean = true;\r\n public currentFilter: string = '';\r\n\r\n\r\n public constructor(\r\n translateService: TranslateService,\r\n ) {\r\n super(translateService, inject(PREFERENCE_SERVICE_TOKEN));\r\n this.dataSource = new MatTableDataSource([]);\r\n\r\n // Replaces the ngOnChanges hook that mirrored the `data` input into the datasource.\r\n effect(() => this.setData(this.data()));\r\n }\r\n\r\n public onRefreshData(): void {\r\n this.dataSource.data = [];\r\n this.refreshData.emit();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.setUpPaginator(this.paginator, this.showPaginator());\r\n }\r\n\r\n public applyFilter(filter: string): void {\r\n if (this.paginator) {\r\n this.paginator.firstPage();\r\n }\r\n this.dataSource.filter = toLowerCaseAndWithoutDiacritics(filter);\r\n }\r\n\r\n public override setUpSort(sort: MatSort): void {\r\n this.sort = sort;\r\n this.dataSource.sort = this.sort;\r\n }\r\n\r\n public override getData(): unknown[] {\r\n return this.dataSource.data;\r\n }\r\n\r\n public getFilteredData(): unknown[] {\r\n return this.dataSource.filteredData;\r\n }\r\n\r\n public refreshDisplayedColumns(columns: string[]): void {\r\n this.onColumnsChanged({ columns, persist: true });\r\n }\r\n\r\n public rowDropped(event: CdkDragDrop<unknown>): void {\r\n const data: unknown[] = this.getData();\r\n const filteredData: any[] = this.getFilteredData();\r\n const fromIndex = data.findIndex((d) => d === filteredData[event.previousIndex]);\r\n const toIndex = data.findIndex((d) => d === filteredData[event.currentIndex]);\r\n if (fromIndex >= 0 && toIndex >= 0) {\r\n moveItemInArray(data, fromIndex, toIndex);\r\n this.renderRows();\r\n this.rowDrop.emit(\r\n new DataGridRowDropEvent({\r\n item: data[fromIndex],\r\n data,\r\n fromIndex,\r\n toIndex,\r\n })\r\n );\r\n }\r\n }\r\n\r\n protected override getExportSourceRows(): unknown[] {\r\n return this.getFilteredData();\r\n }\r\n\r\n protected override setUpPaginator(paginator: MatPaginator, showPaginator: boolean): void {\r\n this.dataSource.paginator = paginator && showPaginator ? paginator : null;\r\n }\r\n\r\n protected override computeDisplayedColumns(): string[] {\r\n return this.decorateColumns(this.displayedColumns());\r\n }\r\n\r\n protected override onColumnsChanged({ columns, persist }: ColumnsChangedEvent): void {\r\n super.onColumnsChanged({ columns, persist });\r\n this.allDisplayedColumns.set(this.decorateColumns(columns));\r\n }\r\n\r\n protected override setUpFilterPredicate(): void {\r\n const filterPredicate = this.filterPredicate();\r\n if (filterPredicate) {\r\n this.dataSource.filterPredicate = filterPredicate;\r\n } else if (this.searchableColumns()?.length > 0) {\r\n this.dataSource.filterPredicate = (data: unknown, filter: string) => {\r\n return this.searchableColumns().some((column) => {\r\n const value = data[column];\r\n return value?.toString().toLowerCaseAndWithoutDiacritics().includes(filter);\r\n });\r\n };\r\n }\r\n }\r\n\r\n protected override forceReloadFilter(): void {\r\n // eslint-disable-next-line no-self-assign\r\n this.dataSource.filter = this.dataSource.filter;\r\n }\r\n\r\n /** `position` and `expand` are grid-owned columns, not part of the caller's list. */\r\n private decorateColumns(columns: string[]): string[] {\r\n let decorated = [...columns];\r\n if (this.allowReordering() && !decorated.includes('position')) {\r\n decorated = ['position', ...decorated];\r\n }\r\n if (this.showExpandButton() && !decorated.includes('expand')) {\r\n decorated = ['expand', ...decorated];\r\n }\r\n return decorated;\r\n }\r\n\r\n private setData(data: any[]): void {\r\n if (!Array.isArray(data)) {\r\n return;\r\n }\r\n this.dataSource.data = data;\r\n setTimeout(() => {\r\n this.table?.setNoDataRow(this.noDataRow);\r\n this.table?.renderRows();\r\n }, 0);\r\n }\r\n}","@if (showHeader()) {\r\n <cauca-data-grid-header [disableAddButton]=\"disableAddButton()\" [showAddButton]=\"showAddButton()\" [addButtonLabel]=\"addButtonLabel() || defaultAddButtonLabel\"\r\n [searchPlaceholder]=\"searchPlaceholder()\" [showSearchBar]=\"showSearchBar()\"\r\n (addButtonClick)=\"addButtonClick.emit($event)\" (filterChange)=\"applyFilter($event)\"\r\n [showRefreshButton]=\"showRefreshButton()\" (refreshRequest)=\"onRefreshData()\"\r\n [showExportMenu]=\"canExport()\" [exportFormats]=\"exportFormats()\" (exportRequest)=\"onExportRequest($event)\">\r\n <ng-content select=\"[filterRow]\" ngProjectAs=\"[filterRow]\" />\r\n <ng-content select=\"[exportItem]\" ngProjectAs=\"[exportItem]\" />\r\n </cauca-data-grid-header>\r\n}\r\n\r\n@if (showTableOptions()) {\r\n <cauca-data-grid-table-options [showColumnViewer]=\"showColumnViewer()\" [gridName]=\"gridPreferenceKey()\" (densityChanged)=\"onDensityChanged($event)\" (columnsChanged)=\"onColumnsChanged($event)\" [allColumns]=\"regularColumns\">\r\n <ng-content\r\n select=\"[customFilter]\"\r\n ngProjectAs=\"[customFilter]\">\r\n </ng-content>\r\n </cauca-data-grid-table-options>\r\n}\r\n\r\n<table matSort mat-table [dataSource]=\"dataSource\" cdkDropList [cdkDropListData]=\"dataSource\"\r\n (cdkDropListDropped)=\"rowDropped($event)\" aria-describedby=\"Data Grid\" multiTemplateDataRows>\r\n\r\n @if (showExpandButton()) {\r\n <ng-container matColumnDef=\"expand\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <div class=\"align-commands\">\r\n <cauca-icon-button (buttonClick)=\"onExpand(row)\" color=\"primary\" class=\"button-icon\" [icon]=\"row === expandedElement() ? 'keyboard_arrow_up' : 'keyboard_arrow_down'\" />\r\n </div>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n }\r\n\r\n @if (allowReordering()) {\r\n <ng-container matColumnDef=\"position\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell (mousedown)=\"dragDisabled = false\" (mouseup)=\"dragDisabled = true\" *matCellDef=\"let group\">\r\n <mat-icon class=\"reorder-icon\" cdkDragHandle>drag_indicator</mat-icon>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n }\r\n\r\n <ng-content></ng-content>\r\n\r\n <tr class=\"grid-header\" [style.background-color]=\"headerColor()\" mat-header-row *matHeaderRowDef=\"allDisplayedColumns(); sticky: true\"></tr>\r\n\r\n <tr mat-row *matRowDef=\"let row; columns: allDisplayedColumns();\" cdkDrag [cdkDragData]=\"row\"\r\n [cdkDragDisabled]=\"dragDisabled\" (cdkDragReleased)=\"dragDisabled = true\"\r\n [class.compact]=\"preference.gridDensity === density.Compact\" [class.standard]=\"preference.gridDensity === density.Standard\"\r\n [class.comfortable]=\"preference.gridDensity === density.Comfortable\"></tr>\r\n\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"allDisplayedColumns().length\">\r\n <div class=\"grid-element-detail-wrapper\" [class.grid-element-detail-wrapper-expanded]=\"row === expandedElement()\">\r\n <div class=\"grid-element-detail\">\r\n @if (row === expandedElement()) {\r\n <template [ngTemplateOutlet]=\"rowDetailTemplate\" [ngTemplateOutletContext]=\"{ row: expandedElement() }\"></template>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"grid-detail-row\"></tr>\r\n\r\n @if (showFooter()) {\r\n <tr mat-footer-row *matFooterRowDef=\"allDisplayedColumns(); sticky: false\"></tr>\r\n }\r\n\r\n @if (!isLoading()) {\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n @if (!showLoadingError() && !isLoading()) {\r\n <td class=\"mat-cell data-grid-message\"\r\n [attr.colspan]=\"allDisplayedColumns().length\">\r\n <cauca-status-message type=\"noData\" />\r\n </td>\r\n }\r\n @if (showLoadingError()) {\r\n <td class=\"mat-cell data-grid-message error-message\" [attr.colspan]=\"allDisplayedColumns().length\">\r\n <cauca-status-message type=\"error\" />\r\n </td>\r\n }\r\n </tr>\r\n }\r\n\r\n</table>\r\n\r\n<cauca-data-grid-progress-spiner [isLoading]=\"isLoading()\" />\r\n\r\n@if (showPaginator()) {\r\n <mat-paginator #paginator [hidePageSize]=\"hidePageSize()\" [pageSizeOptions]=\"[5, 10, 25, 50]\" [pageSize]=\"10\" />\r\n}","import {EventEmitter, Injectable, signal} from \"@angular/core\";\r\nimport {ODataDataSource, ODataFilter} from \"odata-data-source\";\r\nimport {distinctUntilChanged, map, Observable, of, Subscription} from \"rxjs\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\nexport interface Paginator {\r\n pageIndex: number;\r\n pageSize: number;\r\n length: number;\r\n page: EventEmitter<any>;\r\n}\r\n\r\ninterface SingleSort {\r\n active: string;\r\n direction: 'asc' | 'desc' | '';\r\n sortChange: EventEmitter<any>;\r\n}\r\ninterface MultiSort {\r\n sortedBy: {\r\n id: string;\r\n direction: 'asc' | 'desc';\r\n }[];\r\n multiSortChange: EventEmitter<any>;\r\n}\r\n\r\nexport type Sort = SingleSort | MultiSort;\r\n\r\ntype SortedBy = { id: string; direction: 'asc' | 'desc' }[];\r\n\r\nclass ExportableODataDataSource extends ODataDataSource {\r\n public fetchAll(sortedBy: SortedBy, filters: ODataFilter[], rowCount: number): Observable<object> {\r\n const livePaginator = this.paginator;\r\n this.paginator = { pageIndex: 0, pageSize: rowCount, length: rowCount, page: new EventEmitter<any>() };\r\n try {\r\n return this.getData(0, sortedBy, filters);\r\n } finally {\r\n this.paginator = livePaginator;\r\n }\r\n }\r\n}\r\n\r\ninterface Props {\r\n baseUrl: string;\r\n resourceName: string;\r\n paginator: Paginator\r\n sort?: Sort;\r\n initialSort?: string[];\r\n filters: ODataFilter[]\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OdataListingService<T = any> {\r\n public dataSource: ODataDataSource | null = null;\r\n public error = signal(false);\r\n public loading = signal(false);\r\n private errorSubscription: Subscription | null = null;\r\n private loadingSubscription: Subscription | null = null;\r\n\r\n public get data(): T[] | null {\r\n return this.dataSource?.data ?? null;\r\n }\r\n\r\n public constructor(private readonly httpClient: HttpClient) {}\r\n\r\n public initialize({baseUrl, resourceName, paginator, sort, initialSort, filters}: Props): ODataDataSource {\r\n const newDataSource = new ExportableODataDataSource(this.httpClient, `${baseUrl}odata/${resourceName}`);\r\n\r\n newDataSource.filters = filters;\r\n if (initialSort){\r\n newDataSource.initialSort = initialSort;\r\n }\r\n if (sort) {\r\n newDataSource.sort = sort;\r\n }\r\n newDataSource.paginator = paginator;\r\n this.dataSource = newDataSource;\r\n\r\n this.dataSource.refresh();\r\n this.errorSubscription = this.dataSource.errors.subscribe((errors) => this.error.set(!!errors));\r\n\r\n this.loadingSubscription = this.dataSource.loading\r\n .pipe(distinctUntilChanged())\r\n .subscribe((isLoading: boolean) => {\r\n if (isLoading) {\r\n this.loading.set(false);\r\n }\r\n this.loading.set(isLoading);\r\n });\r\n\r\n return newDataSource;\r\n }\r\n\r\n public fetchAllForExport(maxRows: number): Observable<T[]> {\r\n const dataSource = this.dataSource as ExportableODataDataSource | null;\r\n if (!dataSource) {\r\n return of([]);\r\n }\r\n\r\n const total = dataSource.paginator?.length ?? 0;\r\n const rowCount = total > 0 ? Math.min(total, maxRows) : maxRows;\r\n\r\n return dataSource\r\n .fetchAll(this.sortedBy(), dataSource.filters ?? [], rowCount)\r\n .pipe(map(result => (dataSource.mapResult(result) ?? []) as T[]));\r\n }\r\n\r\n public updateFilters(filters: ODataFilter[]) {\r\n if (this.dataSource) {\r\n this.dataSource.filters = filters;\r\n }\r\n }\r\n\r\n public forceReloadFilter() {\r\n if (this.dataSource) {\r\n // eslint-disable-next-line no-self-assign\r\n this.dataSource.filters = this.dataSource.filters;\r\n }\r\n }\r\n\r\n public isInitialized() {\r\n return this.dataSource !== null;\r\n }\r\n\r\n public refresh() {\r\n this.dataSource?.refresh();\r\n }\r\n\r\n public destroy() {\r\n this.errorSubscription?.unsubscribe();\r\n this.loadingSubscription?.unsubscribe();\r\n }\r\n\r\n /** Mirrors how ODataDataSource reads the active sort, single or multi. */\r\n private sortedBy(): SortedBy {\r\n const sort = this.dataSource?.sort;\r\n if (!sort) {\r\n return [];\r\n }\r\n if ('multiSortChange' in sort) {\r\n return sort.sortedBy ?? [];\r\n }\r\n if (sort.active && sort.direction) {\r\n return [{ id: sort.active, direction: sort.direction as 'asc' | 'desc' }];\r\n }\r\n return [];\r\n }\r\n}\r\n","import { ParamMap, Params } from '@angular/router';\r\n\r\nexport interface GridUrlState {\r\n filter?: string;\r\n sort?: string;\r\n direction?: 'asc' | 'desc' | '';\r\n pageIndex?: number;\r\n pageSize?: number;\r\n}\r\n\r\nconst PARAM_BASE_NAMES = {\r\n filter: 'filter',\r\n sort: 'sort',\r\n direction: 'dir',\r\n pageIndex: 'page',\r\n pageSize: 'size',\r\n} as const;\r\n\r\n/**\r\n * Builds the query param name for a given base name and optional grid state key.\r\n * With a key, the scheme is `<key><CapitalizedBaseName>` (e.g. key \"alerts\" + base \"filter\" -> \"alertsFilter\").\r\n * Without a key, the plain base name is used (e.g. \"filter\").\r\n */\r\nfunction paramName(baseName: string, key: string): string {\r\n if (!key) {\r\n return baseName;\r\n }\r\n return `${key}${baseName.charAt(0).toUpperCase()}${baseName.slice(1)}`;\r\n}\r\n\r\nexport function toQueryParams(state: GridUrlState, key: string = ''): Params {\r\n const params: Params = {};\r\n\r\n if (state.filter) {\r\n params[paramName(PARAM_BASE_NAMES.filter, key)] = state.filter;\r\n }\r\n if (state.sort) {\r\n params[paramName(PARAM_BASE_NAMES.sort, key)] = state.sort;\r\n }\r\n if (state.direction) {\r\n params[paramName(PARAM_BASE_NAMES.direction, key)] = state.direction;\r\n }\r\n if (state.pageIndex) {\r\n params[paramName(PARAM_BASE_NAMES.pageIndex, key)] = state.pageIndex;\r\n }\r\n if (state.pageSize) {\r\n params[paramName(PARAM_BASE_NAMES.pageSize, key)] = state.pageSize;\r\n }\r\n\r\n return params;\r\n}\r\n\r\nexport function fromQueryParams(map: ParamMap, key: string = ''): GridUrlState {\r\n const state: GridUrlState = {};\r\n\r\n const filter = map.get(paramName(PARAM_BASE_NAMES.filter, key));\r\n if (filter) {\r\n state.filter = filter;\r\n }\r\n\r\n const sort = map.get(paramName(PARAM_BASE_NAMES.sort, key));\r\n if (sort) {\r\n state.sort = sort;\r\n }\r\n\r\n const direction = map.get(paramName(PARAM_BASE_NAMES.direction, key));\r\n if (direction === 'asc' || direction === 'desc') {\r\n state.direction = direction;\r\n }\r\n\r\n const pageIndex = parsePositiveInteger(map.get(paramName(PARAM_BASE_NAMES.pageIndex, key)));\r\n if (pageIndex !== undefined) {\r\n state.pageIndex = pageIndex;\r\n }\r\n\r\n const pageSize = parsePositiveInteger(map.get(paramName(PARAM_BASE_NAMES.pageSize, key)));\r\n if (pageSize !== undefined) {\r\n state.pageSize = pageSize;\r\n }\r\n\r\n return state;\r\n}\r\n\r\n/**\r\n * Returns a Params object with every grid-state param name mapped to `null` for the given key.\r\n * Combined with `queryParamsHandling: 'merge'`, this lets the grid explicitly clear stale\r\n * params (e.g. a previously-set filter) instead of leaving them stuck in the URL.\r\n */\r\nexport function emptyQueryParams(key: string = ''): Params {\r\n const params: Params = {};\r\n Object.values(PARAM_BASE_NAMES).forEach((baseName) => {\r\n params[paramName(baseName, key)] = null;\r\n });\r\n return params;\r\n}\r\n\r\nexport function paramsEqual(a: Params, b: Params): boolean {\r\n const aKeys = Object.keys(a).filter((paramKey) => a[paramKey] !== null && a[paramKey] !== undefined);\r\n const bKeys = Object.keys(b).filter((paramKey) => b[paramKey] !== null && b[paramKey] !== undefined);\r\n\r\n if (aKeys.length !== bKeys.length) {\r\n return false;\r\n }\r\n\r\n return aKeys.every((paramKey) => String(a[paramKey]) === String(b[paramKey]));\r\n}\r\n\r\nfunction parsePositiveInteger(value: string | null): number | undefined {\r\n if (!value) {\r\n return undefined;\r\n }\r\n const parsed = Number(value);\r\n if (Number.isNaN(parsed) || parsed < 0) {\r\n return undefined;\r\n }\r\n return parsed;\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ContentChild, DestroyRef, EventEmitter, inject, input, OnDestroy, output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { ODataFilter } from 'odata-data-source';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { ActivatedRoute, ParamMap, Params, Router } from '@angular/router';\r\nimport { BaseDataGridComponent } from '../base-data-grid.component';\r\nimport { CaucaCoreService, toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { OdataListingService } from \"./odata-listing.service\";\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { MatTable, MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatRow, MatRowDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatCell, MatCellDef } from '@angular/material/table';\r\nimport { IconButtonComponent, StatusMessageComponent } from '@cauca-911/material';\r\nimport { DataGridHeaderComponent } from '../components/data-grid-header/data-grid-header.component';\r\nimport { DataGridProgressSpinerComponent } from '../components/data-grid-progress-spiner/data-grid-progress-spiner.component';\r\nimport { DataGridTableOptionsComponent } from '../components/data-grid-table-options/data-grid-table-options.component';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { PREFERENCE_SERVICE_TOKEN } from '../../provide-cauca-grid';\r\nimport { emptyQueryParams, fromQueryParams, GridUrlState, paramsEqual, toQueryParams } from './grid-url-state';\r\nimport { ColumnsChangedEvent } from '../models/columns-changed-event';\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'cauca-odata-grid',\r\n templateUrl: './odata-grid.component.html',\r\n styleUrls: ['./odata-grid.component.scss'],\r\n providers: [OdataListingService],\r\n /**\r\n * The template gives clickable rows a pointer cursor only when the consumer actually listens\r\n * for itemClick, which needs EventEmitter.observers — a count OutputEmitterRef does not\r\n * expose. Declared here so the property stays an EventEmitter without an @Output decorator.\r\n * See ADR-0003.\r\n */\r\n // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\r\n outputs: ['itemClick'],\r\n imports: [\r\n NgTemplateOutlet,\r\n // Material table structure:\r\n MatTable, MatColumnDef,\r\n MatHeaderCell, MatHeaderCellDef, MatCell, MatCellDef,\r\n MatHeaderRow, MatHeaderRowDef,\r\n MatRow, MatRowDef, MatNoDataRow,\r\n // Material extras\r\n MatPaginator,\r\n // custom components\r\n DataGridHeaderComponent,\r\n DataGridTableOptionsComponent,\r\n IconButtonComponent,\r\n DataGridProgressSpinerComponent,\r\n StatusMessageComponent,\r\n ]\r\n})\r\nexport class OdataGridComponent extends BaseDataGridComponent implements OnDestroy, AfterViewInit {\r\n\r\n public showTableHeader = input(true);\r\n /** Master switch: when true, the grid's filter/sort/page are synced with the URL query params and restored when returning from a detail page. Off by default. */\r\n public persistState = input(false);\r\n /** Optional prefix for the persisted query params, so two independent grids on the same route don't collide (e.g. \"alerts\" -> \"alertsFilter\"). */\r\n public stateKey = input('');\r\n public readonly baseSort = input<string[]>();\r\n public readonly filterPredicate = input<(filter: string) => ODataFilter[]>();\r\n public readonly showHeader = input(true);\r\n public readonly selectedRowId = input<any>();\r\n public readonly idField = input('id');\r\n public readonly showRefreshButton = input(false);\r\n public readonly maxExportRows = input(5000);\r\n public readonly itemClick = new EventEmitter<any>();\r\n public readonly refreshRequested = output<void>();\r\n @ContentChild(TemplateRef) public rowDetailTemplate!: TemplateRef<any>;\r\n @ViewChild(MatPaginator, {static: true}) public paginator!: MatPaginator;\r\n\r\n private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl;\r\n private readonly router = inject(Router, { optional: true });\r\n private readonly route = inject(ActivatedRoute, { optional: true });\r\n private readonly destroyRef = inject(DestroyRef);\r\n private defaultPageSize?: number;\r\n private pendingRestoredFilter?: string;\r\n private lastWrittenParams: Params = {};\r\n private restoredState?: GridUrlState;\r\n\r\n public constructor(\r\n translateService: TranslateService,\r\n public readonly listing: OdataListingService,\r\n ) {\r\n super(translateService, inject(PREFERENCE_SERVICE_TOKEN));\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.listing.destroy();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n if (!this.canPersistState() || !this.header) {\r\n return;\r\n }\r\n\r\n if (this.pendingRestoredFilter !== undefined) {\r\n this.header.filterControl.setValue(this.pendingRestoredFilter, { emitEvent: false });\r\n this.header.showClearButton.set(!!this.pendingRestoredFilter);\r\n }\r\n\r\n outputToObservable(this.header.filterChange)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.writeCurrentUrlState());\r\n\r\n if (this.restoredState && this.hasRestoredState(this.restoredState)) {\r\n // The initial fetch triggered during ngAfterContentInit (setUpFilterPredicate) can run\r\n // before the paginator/sort are fully wired to the table, so it may go out with default\r\n // skip/orderby/filter. Re-applying the restored state here and forcing a reload once the\r\n // view is fully initialized mirrors the warm-navigation path and guarantees the first\r\n // real fetch reflects the restored filter/sort/page on a cold (browser refresh) load.\r\n this.applyUrlStateToGrid(this.restoredState);\r\n }\r\n }\r\n\r\n public refreshData(): void {\r\n this.listing.refresh();\r\n this.refreshRequested.emit();\r\n }\r\n\r\n public getData(): unknown[] {\r\n return this.listing.data;\r\n }\r\n\r\n public applyFilter(filter: string): void {\r\n this.applyFilterValue(filter, { resetPage: true });\r\n }\r\n\r\n public refreshFilter(): void {\r\n this.applyFilterValue(this.header?.filterControl?.value, { resetPage: true });\r\n }\r\n\r\n public override setUpFilterPredicate(): void {\r\n let filters = this.filterPredicate()?.('') ?? [];\r\n\r\n if (this.canPersistState()) {\r\n filters = this.restoreStateBeforeInitialLoad() ?? filters;\r\n }\r\n\r\n this.listing.initialize({\r\n baseUrl: this.baseUrl,\r\n resourceName: this.resourceName(),\r\n paginator: this.paginator,\r\n sort: this.sort,\r\n initialSort: this.baseSort(),\r\n filters,\r\n });\r\n\r\n if (this.canPersistState()) {\r\n this.setUpUrlStatePersistence();\r\n }\r\n }\r\n\r\n public override setUpSort(sort: MatSort): void {\r\n this.sort = sort;\r\n }\r\n\r\n protected override getExportSourceRows(): Promise<unknown[]> {\r\n return firstValueFrom(this.listing.fetchAllForExport(this.maxExportRows()));\r\n }\r\n\r\n protected override forceReloadFilter(): void {\r\n this.listing.forceReloadFilter();\r\n }\r\n\r\n protected override computeDisplayedColumns(): string[] {\r\n return this.decorateColumns(this.displayedColumns());\r\n }\r\n\r\n protected override onColumnsChanged({ columns, persist }: ColumnsChangedEvent): void {\r\n super.onColumnsChanged({ columns: this.decorateColumns(columns), persist });\r\n }\r\n\r\n private applyFilterValue(filter: string | null | undefined, { resetPage }: { resetPage: boolean }): void {\r\n const filterPredicate = this.filterPredicate();\r\n if (!filterPredicate) {\r\n return;\r\n }\r\n\r\n if (resetPage) {\r\n this.paginator?.firstPage();\r\n }\r\n\r\n this.listing.updateFilters(filterPredicate(toLowerCaseAndWithoutDiacritics(filter)));\r\n }\r\n\r\n /** `expand` is a grid-owned column, not part of the caller's list. */\r\n private decorateColumns(columns: string[]): string[] {\r\n return this.showExpandButton() && !columns.includes('expand')\r\n ? ['expand', ...columns]\r\n : [...columns];\r\n }\r\n\r\n private canPersistState(): boolean {\r\n return this.persistState() && !!this.router && !!this.route;\r\n }\r\n\r\n private restoreStateBeforeInitialLoad(): ODataFilter[] | undefined {\r\n this.defaultPageSize = this.paginator?.pageSize;\r\n const restoredState = fromQueryParams(this.route.snapshot.queryParamMap, this.stateKey());\r\n this.applySortAndPage(restoredState);\r\n this.pendingRestoredFilter = restoredState.filter;\r\n this.restoredState = restoredState;\r\n\r\n const filterPredicate = this.filterPredicate();\r\n if (restoredState.filter === undefined || !filterPredicate) {\r\n return undefined;\r\n }\r\n return filterPredicate(toLowerCaseAndWithoutDiacritics(restoredState.filter));\r\n }\r\n\r\n private setUpUrlStatePersistence(): void {\r\n this.lastWrittenParams = toQueryParams(fromQueryParams(this.route.snapshot.queryParamMap, this.stateKey()), this.stateKey());\r\n\r\n this.sort?.sortChange\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.writeCurrentUrlState());\r\n\r\n this.paginator?.page\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.writeCurrentUrlState());\r\n\r\n this.route.queryParamMap\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((paramMap) => this.reactToExternalUrlStateChange(paramMap));\r\n }\r\n\r\n private applySortAndPage(state: GridUrlState): void {\r\n if (state.sort && this.sort) {\r\n this.sort.active = state.sort;\r\n this.sort.direction = state.direction ?? '';\r\n }\r\n if (this.paginator) {\r\n if (state.pageIndex !== undefined) {\r\n this.paginator.pageIndex = state.pageIndex;\r\n }\r\n if (state.pageSize !== undefined) {\r\n this.paginator.pageSize = state.pageSize;\r\n }\r\n }\r\n }\r\n\r\n private currentUrlState(): GridUrlState {\r\n const pageSize = this.paginator?.pageSize;\r\n return {\r\n filter: this.header?.filterControl.value || undefined,\r\n sort: this.sort?.active || undefined,\r\n direction: this.sort?.direction || undefined,\r\n pageIndex: this.paginator?.pageIndex,\r\n pageSize: pageSize !== undefined && pageSize !== this.defaultPageSize ? pageSize : undefined,\r\n };\r\n }\r\n\r\n private writeCurrentUrlState(): void {\r\n const params = toQueryParams(this.currentUrlState(), this.stateKey());\r\n if (paramsEqual(params, this.lastWrittenParams)) {\r\n return;\r\n }\r\n this.lastWrittenParams = params;\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { ...emptyQueryParams(this.stateKey()), ...params },\r\n queryParamsHandling: 'merge',\r\n replaceUrl: true,\r\n });\r\n }\r\n\r\n private reactToExternalUrlStateChange(paramMap: ParamMap): void {\r\n const state = fromQueryParams(paramMap, this.stateKey());\r\n const params = toQueryParams(state, this.stateKey());\r\n if (paramsEqual(params, this.lastWrittenParams)) {\r\n return;\r\n }\r\n this.lastWrittenParams = params;\r\n this.applyUrlStateToGrid(state);\r\n }\r\n\r\n private applyUrlStateToGrid(state: GridUrlState): void {\r\n this.applySortAndPage(state);\r\n\r\n if (this.header) {\r\n this.header.filterControl.setValue(state.filter ?? '', { emitEvent: false });\r\n this.header.showClearButton.set(!!state.filter);\r\n }\r\n\r\n if (this.filterPredicate()) {\r\n this.applyFilterValue(this.header?.filterControl?.value, { resetPage: false });\r\n } else {\r\n this.listing.forceReloadFilter();\r\n }\r\n }\r\n\r\n private hasRestoredState(state: GridUrlState): boolean {\r\n return state.filter !== undefined || state.sort !== undefined || state.pageIndex !== undefined || state.pageSize !== undefined;\r\n }\r\n}\r\n","@if (showHeader()) {\r\n <cauca-data-grid-header\r\n [disableAddButton]=\"disableAddButton()\"\r\n [showRefreshButton]=\"showRefreshButton()\" (refreshRequest)=\"refreshData()\"\r\n [showExportMenu]=\"canExport()\" [exportFormats]=\"exportFormats()\" (exportRequest)=\"onExportRequest($event)\"\r\n [showAddButton]=\"showAddButton()\"\r\n [addButtonLabel]=\"addButtonLabel() || defaultAddButtonLabel\"\r\n [searchPlaceholder]=\"searchPlaceholder()\"\r\n [showSearchBar]=\"showSearchBar()\"\r\n (addButtonClick)=\"addButtonClick.emit($event)\" (filterChange)=\"applyFilter($event)\">\r\n <ng-content select=\"[filterRow]\" ngProjectAs=\"[filterRow]\" />\r\n <ng-content select=\"[exportItem]\" ngProjectAs=\"[exportItem]\" />\r\n </cauca-data-grid-header>\r\n}\r\n\r\n<ng-content select=\"[customHeader]\" ngProjectAs=\"[customHeader]\" />\r\n\r\n@if (showTableOptions()) {\r\n <cauca-data-grid-table-options [showColumnViewer]=\"showColumnViewer()\" [gridName]=\"gridPreferenceKey()\" (densityChanged)=\"onDensityChanged($event)\" (columnsChanged)=\"onColumnsChanged($event)\" [allColumns]=\"regularColumns\">\r\n <ng-content select=\"[customFilter]\" ngProjectAs=\"[customFilter]\" />\r\n </cauca-data-grid-table-options>\r\n}\r\n\r\n<div class=\"relative\">\r\n <table mat-table [dataSource]=\"listing.dataSource\" aria-describedby=\"Data Grid\" multiTemplateDataRows>\r\n @if (showExpandButton()) {\r\n <ng-container matColumnDef=\"expand\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <div class=\"align-commands\">\r\n <cauca-icon-button (buttonClick)=\"onExpand(row)\" color=\"primary\" class=\"button-icon\" [icon]=\"row === expandedElement() ? 'keyboard_arrow_up' : 'keyboard_arrow_down'\" />\r\n </div>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <ng-content></ng-content>\r\n @if(showTableHeader()) {\r\n <tr mat-header-row *matHeaderRowDef=\"allDisplayedColumns(); sticky: true\"></tr>\r\n }\r\n\r\n <tr mat-row *matRowDef=\"let row; columns: allDisplayedColumns()\"\r\n [class.showClick]=\"itemClick.observers.length > 0\"\r\n [class.compact]=\"preference.gridDensity === density.Compact\"\r\n [class.standard]=\"preference.gridDensity === density.Standard\"\r\n [class.comfortable]=\"preference.gridDensity === density.Comfortable\"\r\n [class.selected]=\"selectedRowId() === row[idField()]\"\r\n (click)=\"itemClick.emit(row)\"\r\n onkeypress=\"itemClick.emit(row)\">\r\n </tr>\r\n\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"allDisplayedColumns().length\">\r\n <div class=\"grid-element-detail-wrapper\" [class.grid-element-detail-wrapper-expanded]=\"row === expandedElement()\">\r\n <div class=\"grid-element-detail\">\r\n @if (row === expandedElement()) {\r\n <template [ngTemplateOutlet]=\"rowDetailTemplate\" [ngTemplateOutletContext]=\"{ row: expandedElement() }\"></template>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"grid-detail-row\"></tr>\r\n\r\n <ng-container *matNoDataRow>\r\n @if(listing.loading() === false) {\r\n <ng-container>\r\n <tr class=\"mat-row\">\r\n @if (listing.error() === false) {\r\n <th class=\"mat-cell data-grid-message\"\r\n [attr.colspan]=\"allDisplayedColumns().length\">\r\n <cauca-status-message type=\"noData\" />\r\n </th>\r\n } @else {\r\n <th class=\"mat-cell data-grid-message\"\r\n [attr.colspan]=\"allDisplayedColumns().length\">\r\n <cauca-status-message type=\"error\" />\r\n </th>\r\n }\r\n </tr>\r\n </ng-container>\r\n }\r\n </ng-container>\r\n </table>\r\n\r\n <cauca-data-grid-progress-spiner [useBackground]=\"false\" [isLoading]=\"listing.loading()\" />\r\n\r\n</div>\r\n\r\n<mat-paginator [hidePageSize]=\"hidePageSize()\" [pageSizeOptions]=\"[5, 10, 25, 50]\" [pageSize]=\"10\" />\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { NavigationEnd, Params, Router } from '@angular/router';\r\nimport { filter } from 'rxjs';\r\n\r\n/**\r\n * Re-injects a list page's remembered grid query params (filter/sort/page, written by\r\n * `OdataGridComponent` when `persistState` is enabled) when the user navigates back to that\r\n * list page from one of its own descendant (detail) routes. Any other way of reaching the\r\n * list page (menu, bookmark, direct link, refresh) leaves it clean, because the previous URL\r\n * won't be a descendant of the list path.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GridStateRestorationService {\r\n private readonly router = inject(Router);\r\n private readonly rememberedParamsByPath = new Map<string, Params>();\r\n private previousPath: string | null = null;\r\n\r\n public constructor() {\r\n this.router.events\r\n .pipe(filter((event): event is NavigationEnd => event instanceof NavigationEnd))\r\n .subscribe((event) => this.onNavigationEnd(event));\r\n }\r\n\r\n private onNavigationEnd(event: NavigationEnd): void {\r\n const currentPath = this.pathOnly(event.urlAfterRedirects);\r\n const currentParams = this.parseParams(event.urlAfterRedirects);\r\n const previousPath = this.previousPath;\r\n this.previousPath = currentPath;\r\n\r\n if (Object.keys(currentParams).length > 0) {\r\n this.rememberedParamsByPath.set(currentPath, currentParams);\r\n return;\r\n }\r\n if (this.restoreIfReturningFromDescendant(currentPath, previousPath)) {\r\n return;\r\n }\r\n this.rememberedParamsByPath.delete(currentPath);\r\n }\r\n\r\n private restoreIfReturningFromDescendant(currentPath: string, previousPath: string | null): boolean {\r\n if (!previousPath || !previousPath.startsWith(`${currentPath}/`)) {\r\n return false;\r\n }\r\n\r\n const remembered = this.rememberedParamsByPath.get(currentPath);\r\n if (!remembered) {\r\n return false;\r\n }\r\n\r\n this.router.navigate([currentPath], { queryParams: remembered, replaceUrl: true });\r\n return true;\r\n }\r\n\r\n private pathOnly(url: string): string {\r\n return url.split('?')[0].split('#')[0];\r\n }\r\n\r\n private parseParams(url: string): Params {\r\n const queryString = url.split('?')[1]?.split('#')[0];\r\n if (!queryString) {\r\n return {};\r\n }\r\n\r\n const params: Params = {};\r\n new URLSearchParams(queryString).forEach((value, key) => {\r\n params[key] = value;\r\n });\r\n return params;\r\n }\r\n}\r\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\r\nimport { GridStateRestorationService } from './grid-state-restoration.service';\r\n\r\n/**\r\n * Activates the grid list-state restoration feature for the whole application. Add this once\r\n * in the app's root providers; it has no effect on pages whose grids don't opt in via\r\n * `[persistState]=\"true\"`.\r\n */\r\nexport function provideGridStateRestoration(): EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n provideAppInitializer(() => {\r\n inject(GridStateRestorationService);\r\n }),\r\n ]);\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, OnDestroy, OnInit, Optional, ViewEncapsulation } from '@angular/core';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { BaseGridColumnComponent, ExportCell } from '../base-grid-column.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cauca-color-data-grid-column',\r\n standalone: true,\r\n imports: [\r\n MatColumnDef,\r\n MatHeaderCell, MatHeaderCellDef, NgStyle,\r\n MatCell, MatCellDef,\r\n MatFooterCellDef, MatFooterCellDef\r\n ],\r\n templateUrl: './color-data-grid-column.component.html',\r\n styleUrl: './color-data-grid-column.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => ColorDataGridColumnComponent) }],\r\n})\r\nexport class ColorDataGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n\r\n public override getExportValue(row: Record<string, unknown>): ExportCell {\r\n return { value: null, fillColor: (row[this.prop()] as string | undefined) ?? 'transparent' };\r\n }\r\n\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n\r\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': width()}\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (row[prop()]) {\r\n <div class=\"color-capsule\" [style.backgroundColor]=\"row[prop()]\"></div>\r\n }\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n\r\n</ng-container>","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'cauca-check-icon',\r\n template: `\r\n <mat-icon\r\n class=\"check-icon\"\r\n [class.check-mark]=\"checkMark()\"\r\n [class.check]=\"check()\"\r\n [class.uncheck]=\"uncheck()\"\r\n aria-hidden=\"false\"\r\n aria-label=\"State icon\"\r\n [fontIcon]=\"icon()\" />\r\n `,\r\n styleUrls: ['./check-icon.component.scss'],\r\n imports: [MatIcon],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CheckIconComponent {\r\n public checkIcon = input<string>('check');\r\n public uncheckIcon = input<string>('block');\r\n public isChecked = input<boolean>(false);\r\n\r\n public icon = computed(() => (this.isChecked() ? this.checkIcon() : this.uncheckIcon()));\r\n public checkMark = computed(() => this.isChecked() && this.checkIcon() === 'check');\r\n public check = computed(() => this.isChecked() && this.checkIcon() !== 'check');\r\n public uncheck = computed(() => !this.isChecked());\r\n}\r\n","import { Component, OnDestroy, OnInit, Optional, forwardRef, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { CheckIconComponent } from '../../components/check-icon/check-icon.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-check-column',\r\n templateUrl: './data-grid-check-column.component.html',\r\n styleUrls: ['./data-grid-check-column.component.scss'],\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridCheckColumnComponent) }],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CheckIconComponent, MatColumnDef, MatHeaderCell, MatHeaderCellDef, NgStyle, MatCell, MatCellDef, MatFooterCell, MatFooterCellDef]\r\n})\r\nexport class DataGridCheckColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n public readonly checkIcon = input('check');\r\n public readonly uncheckIcon = input('block');\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': width(), 'text-align': 'center'}\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <cauca-check-icon [checkIcon]=\"checkIcon()\" [uncheckIcon]=\"uncheckIcon()\" [isChecked]=\"row[prop()]\" />\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, Optional, ViewEncapsulation, forwardRef, input } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { NgStyle } from '@angular/common';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-column',\r\n templateUrl: './data-grid-column.component.html',\r\n styleUrls: ['./data-grid-column.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridColumnComponent) }],\r\n imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, NgStyle, MatCell, MatCellDef, MatTooltip, MatFooterCell, MatFooterCellDef]\r\n})\r\nexport class DataGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public summaryType = input<'none'|'sum'|'count'>('none');\r\n public summaryLabel = input<string>('');\r\n public format = input<'none'|'phone'>('none');\r\n public isInitialized = false;\r\n private readonly grid = null;\r\n\r\n public constructor (@Optional() odata: OdataGridComponent, @Optional() grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n this.grid = grid??odata;\r\n this.isInitialized = true;\r\n }\r\n\r\n public calculateSummary(): string {\r\n const rows = this.grid?.data?.();\r\n if (this.isInitialized && rows) {\r\n if (this.summaryType() === 'sum') {\r\n return this.summaryLabel() + rows.reduce((acc, row) => acc + row[this.prop()], 0) + this.summaryLabel();\r\n }\r\n if (this.summaryType() === 'count') {\r\n return rows.length + this.summaryLabel();\r\n }\r\n }\r\n return '';\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n\r\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': width()}\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (showToolTip()) {<span [matTooltip]=\"row[prop()]\" >{{ row[prop()] }}</span>}\r\n @else { <span>{{ row[prop()] }}</span>}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (isInitialized) {\r\n {{calculateSummary()}}\r\n }\r\n </td>\r\n\r\n</ng-container>","import { Component, OnDestroy, OnInit, Optional, forwardRef, input, output, ChangeDetectionStrategy } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { MatSortHeader } from '@angular/material/sort';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { IconButtonComponent } from '@cauca-911/material';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-command-icon-column',\r\n templateUrl: './data-grid-command-icon-column.component.html',\r\n styleUrls: ['./data-grid-command-icon-column.component.scss'],\r\n providers: [{ provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridCommandIconColumnComponent) }],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatColumnDef, MatHeaderCell, MatSortHeader, MatHeaderCellDef, MatIcon, MatCell, MatCellDef, IconButtonComponent, MatFooterCell, MatFooterCellDef ]\r\n})\r\nexport class DataGridCommandIconColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n public readonly checkColor = input('#F8B132');\r\n public readonly checkIcon = input('star');\r\n public readonly uncheckIcon = input('star_outline');\r\n public readonly uncheckColor = input('default');\r\n\r\n public readonly commandClick = output<unknown>();\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n <th mat-header-cell mat-sort-header *matHeaderCellDef>\r\n <div>\r\n @if (label()) {\r\n {{ label() }}\r\n } @else {\r\n <mat-icon [style.color]=\"uncheckColor()\" aria-hidden=\"false\" aria-label=\"State icon\" [fontIcon]=\"uncheckIcon()\" />\r\n }\r\n </div>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <div>\r\n <cauca-icon-button (buttonClick)=\"commandClick.emit(row)\" [icon]=\"row[prop()] ? checkIcon() : uncheckIcon()\" [color]=\"row[prop()] ? checkColor() : uncheckColor()\" />\r\n </div>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, ContentChild, OnDestroy, OnInit, Optional, TemplateRef, ViewEncapsulation, forwardRef, input, output } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { IconButtonComponent } from '@cauca-911/material';\r\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport { RouterLink } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-commands-column',\r\n templateUrl: './data-grid-commands-column.component.html',\r\n styleUrls: ['./data-grid-commands-column.component.scss'],\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridCommandsColumnComponent) }],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatCell, MatCellDef, IconButtonComponent, NgTemplateOutlet, MatFooterCell, MatFooterCellDef, NgStyle, RouterLink]\r\n})\r\nexport class DataGridCommandsColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public readonly canDelete = input(false);\r\n public readonly canEdit = input(false);\r\n public readonly canDuplicate = input(false);\r\n public readonly editLinkField = input<string>();\r\n\r\n @ContentChild(TemplateRef) public menuTemplate: TemplateRef<any>;\r\n\r\n public readonly deleteClick = output<unknown>();\r\n public readonly editClick = output<unknown>();\r\n public readonly duplicateClick = output<unknown>();\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n}\r\n","<ng-container matColumnDef=\"buttons\">\r\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': width()}\"> {{ label() }} </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n\r\n <div class=\"align-commands\">\r\n\r\n @if (canEdit()) { <cauca-icon-button colorOnHover=\"var(--primary)\" color=\"grey\" icon=\"edit\" [routerLink]=\"editLinkField() ? [row[editLinkField()]] : null\" (buttonClick)=\"editClick?.emit(row)\" class=\"edit-button\" /> }\r\n\r\n @if (canDuplicate()) { <cauca-icon-button color=\"grey\" icon=\"content_copy\" (buttonClick)=\"duplicateClick?.emit(row)\" class=\"duplicate-button\" /> }\r\n\r\n @if (canDelete()) { <cauca-icon-button colorOnHover=\"var(--warn)\" color=\"grey\" icon=\"close\" (buttonClick)=\"deleteClick?.emit(row)\" class=\"delete-button\" /> }\r\n\r\n <template [ngTemplateOutlet]=\"menuTemplate\" [ngTemplateOutletContext]=\"{row:row}\"></template>\r\n\r\n </div>\r\n\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","import { Component, OnDestroy, OnInit, Optional, forwardRef, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { IconComponent } from '@cauca-911/material';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-icon-column',\r\n templateUrl: './data-grid-icon-column.component.html',\r\n styleUrls: ['./data-grid-icon-column.component.scss'],\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridIconColumnComponent) }],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatCell, MatCellDef, IconComponent, MatFooterCell, MatFooterCellDef, NgClass, MatIcon]\r\n})\r\nexport class DataGridIconColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public readonly alignRight = input(false);\r\n public readonly useMatIcon = input(false);\r\n public readonly icon = input('');\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n <th mat-header-cell *matHeaderCellDef> {{ showLabel() ? label() ?? capitalize(prop()) : '' }} </th>\r\n <td [ngClass]=\"alignRight() ? 'td-right' : ''\" mat-cell *matCellDef=\"let row\">\r\n @if (useMatIcon()) { <mat-icon>{{icon()}}</mat-icon> }\r\n @else { <cauca-icon [icon]=\"row[prop()]\" /> }\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, ContentChild, InputSignal, ModelSignal, OnDestroy, OnInit, Optional, TemplateRef, ViewEncapsulation, forwardRef, input, model, output } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { IconButtonComponent, MenuItemComponent } from '@cauca-911/material';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { RouterLink } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'cauca-data-grid-menu-column',\r\n templateUrl: './data-grid-menu-column.component.html',\r\n styleUrls: ['./data-grid-menu-column.component.scss'],\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridMenuColumnComponent) }],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatColumnDef,\r\n MatHeaderCell,\r\n MatHeaderCellDef,\r\n MatCell,\r\n MatCellDef,\r\n IconButtonComponent,\r\n MatMenuModule,\r\n MenuItemComponent,\r\n NgTemplateOutlet,\r\n MatFooterCell,\r\n MatFooterCellDef,\r\n RouterLink\r\n ],\r\n})\r\nexport class DataGridMenuColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n public canDelete: ModelSignal<boolean> = model(false);\r\n public readonly canDeleteByRow = input<(row: any) => boolean>(null);\r\n public canEdit: InputSignal<boolean> = input(false);\r\n public canDuplicate: ModelSignal<boolean> = model(false);\r\n public readonly canDuplicateByRow = input<(row: any) => boolean>(null);\r\n public editLinkField: InputSignal<string> = input();\r\n public duplicateLinkField: InputSignal<string> = input();\r\n @ContentChild(TemplateRef) public menuTemplate: TemplateRef<any>;\r\n\r\n public deleteClick = output<unknown>();\r\n public editClick = output<unknown>();\r\n public duplicateClick = output<unknown>();\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n\r\n public menuOpened(row: any): void {\r\n const canDeleteByRow = this.canDeleteByRow();\r\n if (canDeleteByRow) {\r\n this.canDelete.set(canDeleteByRow(row));\r\n }\r\n const canDuplicateByRow = this.canDuplicateByRow();\r\n if (canDuplicateByRow) {\r\n this.canDuplicate.set(canDuplicateByRow(row));\r\n }\r\n }\r\n}\r\n","<ng-container matColumnDef=\"menu\">\r\n <th mat-header-cell *matHeaderCellDef> {{ label() }} </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <div class=\"align-commands\">\r\n\r\n <cauca-icon-button colorOnHover=\"var(--primary)\" color=\"grey\" icon=\"more_horiz\" [matMenuTriggerFor]=\"actionMenu\" (menuOpened)=\"menuOpened(row)\" />\r\n\r\n <mat-menu #actionMenu=\"matMenu\" class=\"grid-menu\">\r\n @if (canEdit()) {\r\n <cauca-menu-item colorOnHover=\"var(--primary)\" icon=\"edit\" label=\"edit\" [translateLabel]=\"true\" [routerLink]=\"editLinkField() ? [row[editLinkField()]] : null\" (buttonClick)=\"editClick?.emit(row)\" class=\"edit-button\" />\r\n }\r\n\r\n @if (canDuplicate()) {\r\n <cauca-menu-item icon=\"content_copy\" label=\"duplicate\" [translateLabel]=\"true\" [routerLink]=\"duplicateLinkField() ? [row[duplicateLinkField()]] : null\" [queryParams]=\"{ duplicate: true }\" (buttonClick)=\"duplicateClick?.emit(row)\" class=\"duplicate-button\" />\r\n }\r\n\r\n @if (canDelete()) {\r\n <cauca-menu-item colorOnHover=\"var(--warn)\" icon=\"close\" label=\"delete\" [translateLabel]=\"true\" (buttonClick)=\"deleteClick?.emit(row)\" class=\"delete-button\" />\r\n }\r\n <template [ngTemplateOutlet]=\"menuTemplate\" [ngTemplateOutletContext]=\"{row:row}\"></template>\r\n\r\n </mat-menu>\r\n\r\n </div>\r\n\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","import dayjs from 'dayjs';\r\n\r\nexport function resolveDisplayDate(date: Date | null, minLimit: Date | null, maxLimit: Date | null): Date | null {\r\n const upperBound = maxLimit ? dayjs(maxLimit).add(-1, 'second').toDate() : null;\r\n\r\n if (!date) {\r\n return upperBound;\r\n }\r\n\r\n const resolved = new Date(date);\r\n if (minLimit) {\r\n const lowerBound = new Date(minLimit);\r\n return resolved < lowerBound ? lowerBound : resolved;\r\n }\r\n if (upperBound) {\r\n return resolved > upperBound ? upperBound : resolved;\r\n }\r\n return resolved;\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { resolveDisplayDate } from './display-date';\r\n\r\n@Component({\r\n selector: 'cauca-time-label',\r\n imports: [DatePipe, MatTooltip],\r\n templateUrl: './time-label.component.html',\r\n styleUrl: './time-label.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TimeLabelComponent {\r\n public date = input.required<Date|null>();\r\n public minLimit = input<Date|null>(null);\r\n public maxLimit = input<Date|null>(null);\r\n public showTime = input<boolean>(true);\r\n public showSecond = input(false);\r\n\r\n public dateMask = computed(() => this.showTime() ? `dd/MM/yyyy${this.timeFormat()}` : 'dd/MM/yyyy');\r\n public displayDate = computed(() => resolveDisplayDate(this.date(), this.minLimit(), this.maxLimit()) ?? '');\r\n\r\n private readonly timeFormat = computed(() => this.showSecond() ? ' HH:mm:ss' : ' HH:mm');\r\n}\r\n","<span [matTooltip]=\"displayDate() | date:dateMask()\">{{ displayDate() | date:dateMask() }}</span>","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, ViewEncapsulation, forwardRef, Optional, input } from '@angular/core';\r\nimport { BaseGridColumnComponent, ExportCell } from '../base-grid-column.component';\r\nimport { resolveDisplayDate } from '../../components/time-label/display-date';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { MatSortHeader } from '@angular/material/sort';\r\nimport { NgStyle } from '@angular/common';\r\nimport { TimeLabelComponent } from '../../components/time-label/time-label.component';\r\n\r\n@Component({\r\n selector: 'cauca-date-grid-column',\r\n templateUrl: './date-grid-column.component.html',\r\n styleUrls: ['./date-grid-column.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DateGridColumnComponent) }],\r\n imports: [\r\n MatColumnDef,\r\n MatHeaderCell, MatHeaderCellDef, MatSortHeader, NgStyle,\r\n MatCell, MatCellDef,\r\n TimeLabelComponent,\r\n MatFooterCell, MatFooterCellDef,\r\n ]\r\n})\r\nexport class DateGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public showWithTime = input(false);\r\n public showSecond = input(false);\r\n\r\n public maxDate = input<Date|null>(null);\r\n public minDate = input<Date|null>(null);\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n\r\n public override getExportValue(row: Record<string, unknown>): ExportCell {\r\n return resolveDisplayDate(row?.[this.prop()] as Date, this.minDate(), this.maxDate());\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header [ngStyle]=\"{'width': width()}\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row\">\r\n <cauca-time-label [date]=\"row[prop()]\" [showTime]=\"showWithTime()\" [showSecond]=\"showSecond()\" [minLimit]=\"minDate()\" [maxLimit]=\"maxDate()\" />\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>\r\n\r\n","import { Component, OnDestroy, OnInit, Optional, forwardRef, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { NgStyle } from '@angular/common';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { CheckIconComponent } from '../../components/check-icon/check-icon.component';\r\nimport { MatSortHeader } from '@angular/material/sort';\r\n\r\n@Component({\r\n selector: 'cauca-sortable-data-grid-check-column',\r\n templateUrl: './sortable-data-grid-check-column.component.html',\r\n styleUrls: ['./sortable-data-grid-check-column.component.scss'],\r\n providers: [{ provide: BaseGridColumnComponent, useExisting: forwardRef(() => SortableDataGridCheckColumnComponent) }],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatSortHeader, NgStyle, MatTooltip, MatCell, MatCellDef, CheckIconComponent, MatFooterCell, MatFooterCellDef]\r\n})\r\nexport class SortableDataGridCheckColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n public readonly checkIcon = input('check');\r\n public readonly uncheckIcon = input('block');\r\n public readonly sortProp = input('');\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"sortProp() || prop()\" [ngStyle]=\"{'width': width()}\" [matTooltip]=\"label() ?? capitalize(prop())\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\" [ngStyle]=\"{'width': width()}\">\r\n <cauca-check-icon [checkIcon]=\"checkIcon()\" [uncheckIcon]=\"uncheckIcon()\" [isChecked]=\"row[prop()]\" />\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","export function formatPhone(value: unknown): string {\r\n return value?.toString().replace(/(\\d{3})(\\d{3})(\\d{4})/, '$1-$2-$3') ?? '';\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { formatPhone } from './phone-format';\r\n\r\n@Component({\r\n selector: 'cauca-column-label',\r\n imports: [MatTooltip],\r\n templateUrl: './column-label.component.html',\r\n styleUrl: './column-label.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ColumnLabelComponent {\r\n public value = input<any>(null);\r\n public format = input<'none'|'phone'>('none');\r\n public showToolTip = input<boolean>(true);\r\n public displayValue = computed(() => this.format() === 'phone' ? formatPhone(this.value()) : this.value());\r\n}\r\n","@if (showToolTip()) {<span [matTooltip]=\"displayValue()\" >{{ displayValue() }}</span>}\r\n@else { <span>{{displayValue()}}</span>}","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, Optional, ViewEncapsulation, forwardRef, input } from '@angular/core';\r\nimport { BaseGridColumnComponent, ExportCell } from '../base-grid-column.component';\r\nimport { formatPhone } from '../../components/column-label/phone-format';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { ColumnLabelComponent } from '../../components/column-label/column-label.component';\r\nimport { NgStyle } from '@angular/common';\r\nimport { MatSortHeader } from '@angular/material/sort';\r\n\r\n@Component({\r\n selector: 'cauca-sortable-data-grid-column',\r\n templateUrl: './sortable-data-grid-column.component.html',\r\n styleUrls: ['./sortable-data-grid-column.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => SortableDataGridColumnComponent) }],\r\n imports: [\r\n MatColumnDef,\r\n MatHeaderCell, MatHeaderCellDef, MatSortHeader, NgStyle,\r\n MatCell, MatCellDef,\r\n MatTooltip, ColumnLabelComponent,\r\n MatFooterCell, MatFooterCellDef,\r\n ]\r\n})\r\nexport class SortableDataGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n\r\n public summaryType = input<'none'|'sum'|'count'>('none');\r\n public summaryLabel = input<string>('');\r\n public format = input<'none'|'phone'>('none');\r\n public readonly sortProp = input('');\r\n\r\n public isInitialized = false;\r\n private readonly grid = null;\r\n\r\n public constructor (@Optional() odata: OdataGridComponent, @Optional() grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n this.grid = grid??odata;\r\n this.isInitialized = true;\r\n }\r\n\r\n public override getExportValue(row: Record<string, unknown>): ExportCell {\r\n const value = (row?.[this.prop()] as ExportCell) ?? null;\r\n return this.format() === 'phone' ? formatPhone(value) : value;\r\n }\r\n\r\n public calculateSummary(): string {\r\n const rows = this.grid?.data?.();\r\n if (this.isInitialized && rows) {\r\n if (this.summaryType() === 'sum') {\r\n return this.summaryLabel() + rows.reduce((acc, row) => acc + row[this.prop()], 0) + this.summaryLabel();\r\n }\r\n if (this.summaryType() === 'count') {\r\n return rows.length + this.summaryLabel();\r\n }\r\n }\r\n return '';\r\n }\r\n}\r\n","\r\n<ng-container matColumnDef=\"{{ prop() }}\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"sortProp() || prop()\" [ngStyle]=\"{'width': width()}\" [matTooltip]=\"label() ?? capitalize(prop())\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row\">\r\n <cauca-column-label [value]=\"row[prop()]\" [showToolTip]=\"showToolTip()\" [format]=\"format()\" />\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (isInitialized) {\r\n {{calculateSummary()}}\r\n }\r\n </td>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, forwardRef, inject, OnDestroy, OnInit, Optional, ViewEncapsulation, input } from '@angular/core';\r\nimport { BaseGridColumnComponent, ExportCell } from '../base-grid-column.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { ColumnLabelComponent } from '../../components/column-label/column-label.component';\r\n\r\n@Component({\r\n selector: 'cauca-translation-grid-column',\r\n templateUrl: './translation-grid-column.component.html',\r\n styleUrl: './translation-grid-column.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: BaseGridColumnComponent, useExisting: forwardRef(() => TranslationGridColumnComponent) }],\r\n imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatCell, MatCellDef, TranslatePipe, MatFooterCell, MatFooterCellDef, MatTooltip, ColumnLabelComponent],\r\n})\r\nexport class TranslationGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n public readonly prefix = input('');\r\n\r\n private readonly translateService = inject(TranslateService);\r\n\r\n public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid??odata)?.table);\r\n }\r\n\r\n public override getExportValue(row: Record<string, unknown>): ExportCell {\r\n const value = row?.[this.prop()];\r\n return value == null ? null : this.translateService.instant(`${this.prefix()}.${value}`);\r\n }\r\n}\r\n","<ng-container matColumnDef=\"{{ prop() }}\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (prefix() && row[prop()]) { <cauca-column-label [value]=\"prefix()+'.'+row[prop()] | translate\" [showToolTip]=\"showToolTip()\" /> }\r\n @else if(row[prop()]) { <cauca-column-label [value]=\"row[prop()] | translate\" [showToolTip]=\"showToolTip()\" /> }\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n</ng-container>","import { NgStyle } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Optional, ViewEncapsulation } from '@angular/core';\r\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { Iso8601TimeSpanPipe } from '@cauca-911/material';\r\nimport { BaseGridColumnComponent, ExportCell } from '../base-grid-column.component';\r\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\r\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\r\n\r\nconst timeSpanFormatter = new Iso8601TimeSpanPipe();\r\n\r\n@Component({\r\n selector: 'cauca-time-span-data-grid-column',\r\n imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, NgStyle, MatCell, MatCellDef, MatTooltip, MatFooterCellDef, Iso8601TimeSpanPipe],\r\n templateUrl: './time-span-data-grid-column.component.html',\r\n styleUrl: './time-span-data-grid-column.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: BaseGridColumnComponent, useExisting: forwardRef(() => TimeSpanDataGridColumnComponent) }]\r\n})\r\nexport class TimeSpanDataGridColumnComponent extends BaseGridColumnComponent {\r\n\r\n public constructor(@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\r\n super((grid ?? odata)?.table);\r\n }\r\n\r\n public override getExportValue(row: Record<string, unknown>): ExportCell {\r\n return timeSpanFormatter.transform(row?.[this.prop()] as string);\r\n }\r\n}","<ng-container matColumnDef=\"{{ prop() }}\">\r\n\r\n <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': width()}\">\r\n {{ label() ?? capitalize(prop()) }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (row[prop()] | Iso8601TimeSpan; as formattedValue) {\r\n <span [matTooltip]=\"showToolTip() ? formattedValue : ''\">\r\n {{ formattedValue }}\r\n </span>\r\n }\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n\r\n</ng-container>","/*\r\n * Public API Surface of cauca-datagrid\r\n */\r\n\r\nexport * from './lib/data-grid/data-grid/data-grid.component';\r\nexport * from './lib/data-grid/odata-grid/odata-grid.component';\r\nexport * from './lib/data-grid/odata-grid/odata-listing.service';\r\nexport * from './lib/data-grid/odata-grid/grid-url-state';\r\nexport * from './lib/data-grid/grid-state-restoration.service';\r\nexport * from './lib/data-grid/provide-grid-state-restoration';\r\n\r\nexport * from './lib/data-grid/components/data-grid-header/data-grid-header.component';\r\n\r\nexport * from './lib/data-grid/models/grid-export';\r\nexport * from './lib/data-grid/models/export-cell';\r\nexport * from './lib/services/grid-export.service';\r\n\r\nexport * from './lib/data-grid/columns/base-grid-column.component';\r\nexport * from './lib/data-grid/columns/color-data-grid-column/color-data-grid-column.component';\r\nexport * from './lib/data-grid/columns/data-grid-check-column/data-grid-check-column.component';\r\nexport * from './lib/data-grid/columns/data-grid-column/data-grid-column.component';\r\nexport * from './lib/data-grid/columns/data-grid-command-icon-column/data-grid-command-icon-column.component';\r\nexport * from './lib/data-grid/columns/data-grid-commands-column/data-grid-commands-column.component';\r\nexport * from './lib/data-grid/columns/data-grid-icon-column/data-grid-icon-column.component';\r\nexport * from './lib/data-grid/columns/data-grid-menu-column/data-grid-menu-column.component';\r\nexport * from './lib/data-grid/columns/date-grid-column/date-grid-column.component';\r\nexport * from './lib/data-grid/columns/sortable-data-grid-check-column/sortable-data-grid-check-column.component';\r\nexport * from './lib/data-grid/columns/sortable-data-grid-column/sortable-data-grid-column.component';\r\nexport * from './lib/data-grid/columns/translation-grid-column/translation-grid-column.component';\r\nexport * from './lib/data-grid/columns/time-span-data-grid-column/time-span-data-grid-column.component';\r\nexport * from './lib/data-grid/models/data-grid-row-drop-event';\r\n\r\nexport * from './lib/provide-cauca-grid';\r\nexport * from './lib/services/base-preference-service';\r\nexport * from './lib/data-grid/models/density-enum';\r\nexport * from './lib/services/preference';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2","i4","i2.OdataListingService","i1.OdataGridComponent","i2.DataGridComponent"],"mappings":"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"}
|