{"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/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/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/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/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 {\n  public item: unknown;\n  public data: unknown[];\n  public fromIndex: number;\n  public toIndex: number;\n\n  public constructor(data: {\n        item: unknown;\n        data: unknown[];\n        fromIndex: number;\n        toIndex: number;\n    }) {\n    Object.assign(this, data);\n  }\n}\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\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 width = input('');\r\n  public readonly showToolTip = input(false);\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","import { Component, OnDestroy, OnInit, input, output, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { IconButtonComponent, RaisedButtonComponent } from '@cauca-911/material';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subject, debounceTime, takeUntil } from 'rxjs';\n\n@Component({\n  selector: 'cauca-data-grid-header',\n  templateUrl: './data-grid-header.component.html',\n  styleUrls: ['./data-grid-header.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [MatFormFieldModule, IconButtonComponent, RaisedButtonComponent, MatInputModule, ReactiveFormsModule, TranslatePipe, MatIcon],\n})\nexport class DataGridHeaderComponent implements OnInit, OnDestroy {\n\n  public filterControl: FormControl<string> = new FormControl<string>('');\n\n  /** Written from the debounced valueChanges subscription and by OdataGridComponent when it\n   * restores persisted state, so it is a signal: neither is a change-detection trigger\n   * under zoneless (ADR-0004). */\n  public readonly showClearButton = signal(false);\n\n  public readonly showAddButton = input(false);\n  public readonly showRefreshButton = input(false);\n  public readonly addButtonLabel = input('');\n  public readonly disableAddButton = input(false);\n  public readonly filterChange = output<string>();\n  public readonly addButtonClick = output<void>();\n  public readonly refreshRequest = output<void>();\n\n  protected _onDestroy = new Subject<void>();\n\n  public ngOnInit(): void {\n    this.filterControl.valueChanges\n      .pipe(\n        debounceTime(500),\n        takeUntil(this._onDestroy))\n      .subscribe((filter: string) => {\n        this.filterChange.emit(filter);\n        this.showClearButton.set(!!filter);\n      });\n  }\n\n  public ngOnDestroy(): void {\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n\n  public onRefresh(): void {\n    this.refreshRequest.emit();\n  }\n\n  public clearSearchValue(): void {\n    this.filterControl.setValue('');\n  }\n\n  public onAddButtonClick(): void {\n    this.addButtonClick.emit();\n  }\n}\n","<div class=\"grid-header\">\n\n  <mat-form-field appearance=\"outline\" class=\"full-width-field grid-search-box\" subscriptSizing=\"dynamic\">\n    @if (showClearButton()) { <cauca-icon-button matPrefix (buttonClick)=\"clearSearchValue()\" icon=\"close\" /> }\n    <mat-label>{{ 'dataGrid.keywordsLabel' | translate}}</mat-label>\n    <input matInput [formControl]=\"filterControl\">\n    <mat-icon matSuffix>search</mat-icon>\n  </mat-form-field>\n\n  <ng-content select=\"[filterRow]\" ngProjectAs=\"[filterRow]\" />\n\n  @if (showRefreshButton()) { <cauca-icon-button (buttonClick)=\"onRefresh()\" icon=\"refresh\" class=\"grid-refresh-button\" /> }\n\n  @if (showAddButton()) { <cauca-raised-button icon=\"add\" color=\"primary\" [label]=\"addButtonLabel()\" [translateLabel]=\"false\" class=\"grid-new-button\" [isDisabled]=\"disableAddButton()\" (buttonClick)=\"onAddButtonClick()\" /> }\n</div>","export enum Density {\n    Compact = \"compact\",\n    Standard = \"standard\",\n    Comfortable = \"comfortable\"\n}","import { Density } from \"../data-grid/models/density-enum\";\n\nexport class Preference {\n    public gridDensity: Density;\n}\n\nexport class GridConfiguration {\n    public name: string;\n    public visibleColumns: string[];\n}\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';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { GridConfiguration, Preference } from './preference';\nimport { Density } from '../data-grid/models/density-enum';\nimport { BasePreferenceService } from './base-preference-service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PreferenceService implements BasePreferenceService {\n  public preference: BehaviorSubject<Preference> = new BehaviorSubject<Preference>(new Preference());\n\n  public gridConfiguration: GridConfiguration[] = [];\n\n  public constructor() {\n    const data = localStorage.getItem('GridPreference');\n    const configuration = localStorage.getItem('GridConfiguration');\n    if (data) {\n      this.preference.next(JSON.parse(data));\n    }\n    if (configuration) {\n      this.gridConfiguration = JSON.parse(configuration);\n    }\n  }\n\n  public getPreference(): Preference {\n    return this.preference.value;\n  }\n\n  public setPreferenceDensity(density: Density) {\n    const preference = this.getPreference();\n    if (density === preference.gridDensity) return;\n    preference.gridDensity = density;\n    this.preference.next(preference);\n    this.addOrUpdatePreference();\n  }\n\n  public addOrUpdatePreference(): void {\n    localStorage.setItem('GridPreference', JSON.stringify(this.getPreference()));\n  }\n\n  public getPreferenceForGrid(gridName: string): Observable<GridConfiguration> {\n    return of(this.getPreferenceForGridNotObservable(gridName));\n  }\n\n  public addOrUpdateGridPreference(gridName: string, visibleColumns: string[]): Observable<void> {\n    const configuration = this.getPreferenceForGridNotObservable(gridName);\n    configuration.visibleColumns = visibleColumns || [];\n    localStorage.setItem('GridConfiguration', JSON.stringify(this.gridConfiguration));\n    return of();\n  }\n\n  private getPreferenceForGridNotObservable(gridName: string): GridConfiguration {\n    const configuration = this.gridConfiguration.find(g => g.name == gridName);\n    if (configuration) {\n      return configuration;\n    }\n    const newConfiguration = new GridConfiguration();\n    newConfiguration.name = gridName;\n    this.gridConfiguration.push(newConfiguration);\n    return newConfiguration;\n  }\n}","import { CDK_DRAG_CONFIG } from \"@angular/cdk/drag-drop\";\nimport { Provider, EnvironmentProviders, Type, InjectionToken } from \"@angular/core\";\nimport { MatPaginatorIntl } from \"@angular/material/paginator\";\nimport { MatPaginatorLocalizationService } from \"./services/mat-paginator-localization.service\";\nimport { PreferenceService } from \"./services/preference.service\";\nimport { BasePreferenceService } from \"./services/base-preference-service\";\n\nexport interface CaucaGridOptions {\n  /** If not provided, a default implementation will be used which will use localStorage to store the grid preferences. */\n  gridPreferenceService?: Type<BasePreferenceService>\n}\n\nexport const PREFERENCE_SERVICE_TOKEN = new InjectionToken<BasePreferenceService>('CaucaGridPreferenceService');\n\nexport function provideCaucaGrid(options?: CaucaGridOptions): (Provider|EnvironmentProviders) {\n  return [\n    { provide: CDK_DRAG_CONFIG, useValue: { previewContainer: 'parent' } },\n    { provide: MatPaginatorIntl, useClass: MatPaginatorLocalizationService },\n    { provide: PREFERENCE_SERVICE_TOKEN, useClass: options?.gridPreferenceService || PreferenceService }\n  ];\n}\n","import {\n  AfterContentInit, Component, ContentChild,\n  ContentChildren, Inject, input, linkedSignal, output, QueryList, signal, ViewChild,\n  ChangeDetectionStrategy\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\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 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 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  public get density(): typeof Density {\r\n    return Density;\r\n  }\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  protected abstract setUpFilterPredicate(): void;\r\n  protected abstract setUpSort(sort: MatSort): void;\r\n  protected abstract forceReloadFilter(): void;\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: string[]): void {\r\n    this.allDisplayedColumns.set([...columns]);\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    let index = columns.indexOf(\"\");\r\n    if (index > -1) {\r\n      columns.splice(index, 1);\r\n    }\r\n\r\n    index = columns.indexOf(\"position\");\r\n    if (index > -1) {\r\n      columns.splice(index, 1);\r\n    }\r\n\r\n    index = columns.indexOf(\"buttons\");\r\n    if (index > -1) {\r\n      columns.splice(index, 1);\r\n    }\r\n\r\n    index = columns.indexOf(\"menu\");\r\n    if (index > -1) {\r\n      columns.splice(index, 1);\r\n    }\r\n\r\n    index = columns.indexOf(\"expand\");\r\n    if (index > -1) {\r\n      columns.splice(index, 1);\r\n    }\r\n\r\n    return columns;\r\n  }\r\n}\r\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { BasicButtonComponent } from '@cauca-911/material';\n\n@Component({\n  selector: 'cauca-button-popover',\n  templateUrl: './button-popover.component.html',\n  styleUrls: ['./button-popover.component.scss'],\n  imports: [CdkConnectedOverlay, BasicButtonComponent, CdkOverlayOrigin],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonPopoverComponent {\n  public buttonLabel = input<string>(null);\n  public buttonIcon = input<string>('');;\n  public color = input<string>('primary');\n\n  public isActive = signal<boolean>(false);\n\n  public toggle() {\n    this.isActive.set(!this.isActive());\n  }\n\n  public close() {\n    if (this.isActive()) {\n      this.isActive.set(false);\n    }\n  }\n}\n","<cauca-basic-button [icon]=\"buttonIcon()\" [color]=\"color()\" [label]=\"buttonLabel()\" [translateLabel]=\"false\" (buttonClick)=\"toggle()\" cdkOverlayOrigin #popoverTrigger=\"cdkOverlayOrigin\" />\n\n<ng-template\n  cdkConnectedOverlay\n  [cdkConnectedOverlayOrigin]=\"popoverTrigger\"\n  [cdkConnectedOverlayOpen]=\"isActive()\"\n  [cdkConnectedOverlayHasBackdrop]=\"isActive()\"\n  [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop-cs'\"\n  (backdropClick)=\"toggle()\">\n  <ng-content></ng-content>\n</ng-template>","import { Component, inject, OnInit, QueryList, ViewChild, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { Density } from '../../models/density-enum';\nimport { BaseGridColumnComponent } from '../../columns/base-grid-column.component';\nimport { ButtonPopoverComponent } from '../button-popover/button-popover.component';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { BasicButtonComponent, MenuItemComponent, RaisedButtonComponent, StrokedButtonComponent } from '@cauca-911/material';\nimport { FormsModule } from '@angular/forms';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { PREFERENCE_SERVICE_TOKEN } from '../../../provide-cauca-grid';\n\n@Component({\n  selector: 'cauca-data-grid-table-options',\n  templateUrl: './data-grid-table-options.component.html',\n  styleUrls: ['./data-grid-table-options.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [MatCardModule, ButtonPopoverComponent, MatCheckboxModule, StrokedButtonComponent, RaisedButtonComponent, BasicButtonComponent, MatMenuModule, FormsModule, TranslatePipe, MenuItemComponent],\n})\nexport class DataGridTableOptionsComponent implements OnInit {\n  public readonly gridName = input.required<string>();\n  public readonly showColumnViewer = input(true);\n  public readonly allColumns = input<QueryList<BaseGridColumnComponent>>(new QueryList());\n\n  public readonly densityChanged = output<Density>();\n  public readonly columnsChanged = output<string[]>();\n\n  @ViewChild(ButtonPopoverComponent, { static: true }) public columnViewer: ButtonPopoverComponent;\n\n  public columnsSearch: string = '';\n\n  private readonly preferenceService = inject(PREFERENCE_SERVICE_TOKEN);\n\n  public get density(): typeof Density {\n    return Density;\n  }\n\n  public get columns(): BaseGridColumnComponent[] {\n    return this.allColumns().filter(c => c.prop() !== 'buttons' && c.prop() !== 'menu' && c.prop() !== '' && c.isInColumnChooser());\n  }\n\n  public get currentDensityIcon(): string {\n    const currentDensity = this.preferenceService.getPreference()?.gridDensity;\n    if (currentDensity === Density.Compact) {\n      return 'density_small';\n    }\n\n    if (currentDensity === Density.Comfortable) {\n      return 'density_large';\n    }\n\n    return 'density_medium';\n  }\n\n  public ngOnInit(): void {\n    this.preferenceService.getPreferenceForGrid(this.gridName()).subscribe({\n      next: configuration => {\n        if (configuration?.visibleColumns) {\n          this.selectOnlyUserColumns(configuration.visibleColumns);\n        } else {\n          this.selectAllColumns();\n        }\n        this.onColumnsChanged();\n      }\n    });\n  }\n\n  public closeColumnViewer(): void {\n    if (this.columnViewer) {\n      this.columnViewer.close();\n    }\n  }\n\n  public changeDensity(newDensity: Density): void {\n    this.densityChanged.emit(newDensity);\n  }\n\n  public onColumnsChanged(): void {\n    const newColumns = this.allColumns().filter(column => column.selected);\n    this.columnsChanged.emit(newColumns.map((column) => column.prop()));\n  }\n\n  public resetColumns(): void {\n    this.allColumns().forEach((column => column.selected = true));\n    this.columnsChanged.emit(this.allColumns().map((column) => column.prop()));\n  }\n\n  private selectOnlyUserColumns(configurationVisibleColumns: string[]): void {\n    this.allColumns().forEach((column => {\n      const index = configurationVisibleColumns.findIndex(c => c === column.prop());\n      if (index === -1 && column.prop() !== 'buttons' && column.prop() !== 'menu' && column.prop() !== '') {\n        column.selected = false;\n      }\n    }));\n  }\n\n  private selectAllColumns(): void {\n    this.allColumns().forEach((column => {\n      column.selected = true;\n    }));\n  }\n}\n","<div class=\"table-options-bar\">\n  <div class=\"table-options\">\n    @if (showColumnViewer()) { <cauca-button-popover [buttonLabel]=\"'dataGrid.columns' | translate\" buttonIcon=\"view_column\">\n      <mat-card>\n        <mat-card-content>\n          <div class=\"columns\">\n            @for (column of columns; track column) {\n              <mat-checkbox color=\"primary\" [(ngModel)]=\"column.selected\"\n                (change)=\"onColumnsChanged()\">\n                {{column.label()}}\n              </mat-checkbox>\n            }\n          </div>\n        </mat-card-content>\n        <mat-card-actions>\n          <cauca-stroked-button [small]=\"true\" color=\"primary\" (buttonClick)=\"resetColumns()\" label=\"dataGrid.columnChooser.reset\" [translateLabel]=\"true\" />\n          <cauca-raised-button [small]=\"true\" color=\"primary\" (buttonClick)=\"resetColumns()\" label=\"dataGrid.columnChooser.showAll\" [translateLabel]=\"true\" />\n        </mat-card-actions>\n      </mat-card>\n    </cauca-button-popover> }\n    <cauca-basic-button color=\"primary\" [matMenuTriggerFor]=\"densityMenu\" class=\"open-menu-button\" [icon]=\"currentDensityIcon\" label=\"dataGrid.density.title\" [translateLabel]=\"true\" />\n  </div>\n\n  <ng-content select=\"[customFilter]\"> </ng-content>\n</div>\n\n<mat-menu #densityMenu=\"matMenu\">\n  <cauca-menu-item label=\"dataGrid.density.compact\" [translateLabel]=\"true\" icon=\"density_small\" (buttonClick)=\"changeDensity(density.Compact)\" class=\"density-compact\" />\n  <cauca-menu-item label=\"dataGrid.density.standard\" [translateLabel]=\"true\" icon=\"density_medium\" (buttonClick)=\"changeDensity(density.Standard)\" class=\"density-standard\" />\n  <cauca-menu-item label=\"dataGrid.density.comfortable\" [translateLabel]=\"true\" icon=\"density_large\" (buttonClick)=\"changeDensity(density.Comfortable)\" class=\"density-comfortable\" />\n</mat-menu>","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n  selector: 'cauca-data-grid-progress-spiner',\n  templateUrl: './data-grid-progress-spiner.component.html',\n  styleUrls: ['./data-grid-progress-spiner.component.scss'],\n  imports: [MatProgressSpinnerModule],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataGridProgressSpinerComponent {\n\n  public isLoading = input<boolean>(false);\n  public useBackground = input<boolean>(true);\n}\n","@if (isLoading()) {\n  <div class=\"spiner-container\" [class.use-background]=\"useBackground()\">\n    <mat-progress-spinner\n      color=\"primary\"\n      mode=\"indeterminate\">\n    </mat-progress-spinner>\n  </div>\n}","import {\n  AfterContentInit, AfterViewInit, ChangeDetectionStrategy, Component,\n  ContentChild, effect, inject, input, output,\n  TemplateRef\n} from '@angular/core';\nimport { MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRow, MatRowDef, MatTable, MatTableDataSource } from '@angular/material/table';\nimport { CdkDrag, CdkDragDrop, CdkDragHandle, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { DataGridRowDropEvent } from '../models/data-grid-row-drop-event';\nimport { toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';\nimport { BaseDataGridComponent } from '../base-data-grid.component';\nimport { MatSort } from '@angular/material/sort';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { DataGridHeaderComponent } from '../components/data-grid-header/data-grid-header.component';\nimport { DataGridTableOptionsComponent } from '../components/data-grid-table-options/data-grid-table-options.component';\nimport { IconButtonComponent } from '@cauca-911/material';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DataGridProgressSpinerComponent } from '../components/data-grid-progress-spiner/data-grid-progress-spiner.component';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PREFERENCE_SERVICE_TOKEN } from '../../provide-cauca-grid';\nimport { StatusMessageComponent } from '@cauca-911/material';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'cauca-data-grid',\n  templateUrl: './data-grid.component.html',\n  styleUrls: ['./data-grid.component.scss'],\n  imports: [\n    NgTemplateOutlet, // still needed\n    // Material Table structure:\n    MatTable, MatSort, MatColumnDef,\n    MatHeaderCell, MatHeaderCellDef, MatCellDef,\n    MatFooterCell, MatFooterCellDef,\n    MatRow, MatRowDef,\n    MatHeaderRow, MatHeaderRowDef,\n    MatFooterRow, MatFooterRowDef,\n    MatNoDataRow,\n    // Drag and Drop:\n    CdkDropList, CdkDrag, CdkDragHandle,\n    // Material extras:\n    MatIcon, MatPaginator,\n    // Custom Components:\n    DataGridHeaderComponent,\n    DataGridTableOptionsComponent,\n    DataGridProgressSpinerComponent,\n    IconButtonComponent,\n    StatusMessageComponent\n]\n})\nexport class DataGridComponent extends BaseDataGridComponent implements AfterContentInit, AfterViewInit {\n\n  public readonly data = input<any[]>([]);\n  public readonly showLoadingError = input(false);\n  public readonly isLoading = input(false);\n  public readonly allowReordering = input(false);\n  public readonly filterPredicate = input<(data: unknown, filter: string) => boolean>();\n  public readonly showFooter = input(false);\n  public readonly showHeader = input(true);\n  public readonly headerColor = input<string | undefined>(undefined);\n  public readonly showRefreshButton = input(false);\n  public readonly rowDrop = output<DataGridRowDropEvent>();\n  public readonly refreshData = output<void>();\n  @ContentChild(TemplateRef) public rowDetailTemplate!: TemplateRef<any>;\n\n  public dataSource: MatTableDataSource<unknown[]>;\n  public dragDisabled: boolean = true;\n  public currentFilter: string = '';\n\n\n  public constructor(\n    translateService: TranslateService,\n  ) {\n    super(translateService, inject(PREFERENCE_SERVICE_TOKEN));\n    this.dataSource = new MatTableDataSource([]);\n\n    // Replaces the ngOnChanges hook that mirrored the `data` input into the datasource.\n    effect(() => this.setData(this.data()));\n  }\n\n  public onRefreshData(): void {\n    this.dataSource.data = [];\n    this.refreshData.emit();\n  }\n\n  public ngAfterViewInit(): void {\n    this.setUpPaginator(this.paginator, this.showPaginator());\n  }\n\n  public applyFilter(filter: string): void {\n    if (this.paginator) {\n      this.paginator.firstPage();\n    }\n    this.dataSource.filter = toLowerCaseAndWithoutDiacritics(filter);\n  }\n\n  public override setUpSort(sort: MatSort): void {\n    this.sort = sort;\n    this.dataSource.sort = this.sort;\n  }\n\n  public override getData(): unknown[] {\n    return this.dataSource.data;\n  }\n\n  public getFilteredData(): unknown[] {\n    return this.dataSource.filteredData;\n  }\n\n  public refreshDisplayedColumns(columns: string[]): void {\n    this.onColumnsChanged(columns);\n  }\n\n  public rowDropped(event: CdkDragDrop<unknown>): void {\n    const data: unknown[] = this.getData();\n    const filteredData: any[] = this.getFilteredData();\n    const fromIndex = data.findIndex((d) => d === filteredData[event.previousIndex]);\n    const toIndex = data.findIndex((d) => d === filteredData[event.currentIndex]);\n    if (fromIndex >= 0 && toIndex >= 0) {\n      moveItemInArray(data, fromIndex, toIndex);\n      this.renderRows();\n      this.rowDrop.emit(\n        new DataGridRowDropEvent({\n          item: data[fromIndex],\n          data,\n          fromIndex,\n          toIndex,\n        })\n      );\n    }\n  }\n\n  protected override setUpPaginator(paginator: MatPaginator, showPaginator: boolean): void {\n    this.dataSource.paginator = paginator && showPaginator ? paginator : null;\n  }\n\n  protected override computeDisplayedColumns(): string[] {\n    return this.decorateColumns(this.displayedColumns());\n  }\n\n  protected onColumnsChanged(columns: string[]): void {\n    super.onColumnsChanged(columns);\n    this.allDisplayedColumns.set(this.decorateColumns(columns));\n  }\n\n  protected override setUpFilterPredicate(): void {\n    const filterPredicate = this.filterPredicate();\n    if (filterPredicate) {\n      this.dataSource.filterPredicate = filterPredicate;\n    } else if (this.searchableColumns()?.length > 0) {\n      this.dataSource.filterPredicate = (data: unknown, filter: string) => {\n        return this.searchableColumns().some((column) => {\n          const value = data[column];\n          return value?.toString().toLowerCaseAndWithoutDiacritics().includes(filter);\n        });\n      };\n    }\n  }\n\n  protected override forceReloadFilter(): void {\n    // eslint-disable-next-line no-self-assign\n    this.dataSource.filter = this.dataSource.filter;\n  }\n\n  /** `position` and `expand` are grid-owned columns, not part of the caller's list. */\n  private decorateColumns(columns: string[]): string[] {\n    let decorated = [...columns];\n    if (this.allowReordering() && !decorated.includes('position')) {\n      decorated = ['position', ...decorated];\n    }\n    if (this.showExpandButton() && !decorated.includes('expand')) {\n      decorated = ['expand', ...decorated];\n    }\n    return decorated;\n  }\n\n  private setData(data: any[]): void {\n    if (!Array.isArray(data)) {\n      return;\n    }\n    this.dataSource.data = data;\n    setTimeout(() => {\n      this.table?.setNoDataRow(this.noDataRow);\n      this.table?.renderRows();\n    }, 0);\n  }\n}","@if (showHeader()) {\n  <cauca-data-grid-header [disableAddButton]=\"disableAddButton()\" [showAddButton]=\"showAddButton()\" [addButtonLabel]=\"addButtonLabel() || defaultAddButtonLabel\"\n    (addButtonClick)=\"addButtonClick.emit($event)\" (filterChange)=\"applyFilter($event)\"\n    [showRefreshButton]=\"showRefreshButton()\" (refreshRequest)=\"onRefreshData()\">\n    <ng-content select=\"[filterRow]\" ngProjectAs=\"[filterRow]\" />\n  </cauca-data-grid-header>\n}\n\n@if (showTableOptions()) {\n  <cauca-data-grid-table-options [showColumnViewer]=\"showColumnViewer()\" [gridName]=\"resourceName()\" (densityChanged)=\"onDensityChanged($event)\" (columnsChanged)=\"onColumnsChanged($event)\" [allColumns]=\"regularColumns\">\n    <ng-content\n      select=\"[customFilter]\"\n      ngProjectAs=\"[customFilter]\">\n    </ng-content>\n  </cauca-data-grid-table-options>\n}\n\n<table matSort mat-table [dataSource]=\"dataSource\" cdkDropList [cdkDropListData]=\"dataSource\"\n  (cdkDropListDropped)=\"rowDropped($event)\" aria-describedby=\"Data Grid\" multiTemplateDataRows>\n\n  @if (showExpandButton()) {\n    <ng-container matColumnDef=\"expand\">\n      <th mat-header-cell *matHeaderCellDef></th>\n      <td mat-cell *matCellDef=\"let row\">\n        <div class=\"align-commands\">\n          <cauca-icon-button (buttonClick)=\"onExpand(row)\" color=\"primary\" class=\"button-icon\" [icon]=\"row === expandedElement() ? 'keyboard_arrow_up' : 'keyboard_arrow_down'\" />\n        </div>\n      </td>\n      <td mat-footer-cell *matFooterCellDef></td>\n    </ng-container>\n  }\n\n  @if (allowReordering()) {\n    <ng-container matColumnDef=\"position\">\n      <th mat-header-cell *matHeaderCellDef></th>\n      <td mat-cell (mousedown)=\"dragDisabled = false\" (mouseup)=\"dragDisabled = true\" *matCellDef=\"let group\">\n        <mat-icon class=\"reorder-icon\" cdkDragHandle>drag_indicator</mat-icon>\n      </td>\n      <td mat-footer-cell *matFooterCellDef></td>\n    </ng-container>\n  }\n\n  <ng-content></ng-content>\n\n  <tr class=\"grid-header\" [style.background-color]=\"headerColor()\" mat-header-row *matHeaderRowDef=\"allDisplayedColumns(); sticky: true\"></tr>\n\n  <tr mat-row *matRowDef=\"let row; columns: allDisplayedColumns();\" cdkDrag [cdkDragData]=\"row\"\n    [cdkDragDisabled]=\"dragDisabled\" (cdkDragReleased)=\"dragDisabled = true\"\n    [class.compact]=\"preference.gridDensity === density.Compact\" [class.standard]=\"preference.gridDensity === density.Standard\"\n  [class.comfortable]=\"preference.gridDensity === density.Comfortable\"></tr>\n\n  <ng-container matColumnDef=\"expandedDetail\">\n    <td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"allDisplayedColumns().length\">\n      <div class=\"grid-element-detail-wrapper\" [class.grid-element-detail-wrapper-expanded]=\"row === expandedElement()\">\n        <div class=\"grid-element-detail\">\n          @if (row === expandedElement()) {\n          <template [ngTemplateOutlet]=\"rowDetailTemplate\" [ngTemplateOutletContext]=\"{ row: expandedElement() }\"></template>\n          }\n        </div>\n      </div>\n    </td>\n  </ng-container>\n\n  <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"grid-detail-row\"></tr>\n\n  @if (showFooter()) {\n    <tr mat-footer-row *matFooterRowDef=\"allDisplayedColumns(); sticky: false\"></tr>\n  }\n\n  @if (!isLoading()) {\n    <tr class=\"mat-row\" *matNoDataRow>\n      @if (!showLoadingError() && !isLoading()) {\n        <td class=\"mat-cell data-grid-message\"\n          [attr.colspan]=\"allDisplayedColumns().length\">\n          <cauca-status-message type=\"noData\" />\n        </td>\n      }\n      @if (showLoadingError()) {\n        <td class=\"mat-cell data-grid-message error-message\" [attr.colspan]=\"allDisplayedColumns().length\">\n          <cauca-status-message type=\"error\" />\n        </td>\n      }\n    </tr>\n  }\n\n</table>\n\n<cauca-data-grid-progress-spiner [isLoading]=\"isLoading()\" />\n\n@if (showPaginator()) {\n  <mat-paginator #paginator [hidePageSize]=\"hidePageSize()\" [pageSizeOptions]=\"[5, 10, 25, 50]\" [pageSize]=\"10\" />\n}","import {EventEmitter, Injectable, signal} from \"@angular/core\";\nimport {ODataDataSource, ODataFilter} from \"odata-data-source\";\nimport {distinctUntilChanged, Subscription} from \"rxjs\";\nimport {HttpClient} from \"@angular/common/http\";\n\nexport interface Paginator {\n    pageIndex: number;\n    pageSize: number;\n    length: number;\n    page: EventEmitter<any>;\n}\n\ninterface SingleSort {\n    active: string;\n    direction: 'asc' | 'desc' | '';\n    sortChange: EventEmitter<any>;\n}\ninterface MultiSort {\n    sortedBy: {\n        id: string;\n        direction: 'asc' | 'desc';\n    }[];\n    multiSortChange: EventEmitter<any>;\n}\n\nexport type Sort = SingleSort | MultiSort;\n\ninterface Props {\n    baseUrl: string;\n    resourceName: string;\n    paginator: Paginator\n    sort?: Sort;\n    initialSort?: string[];\n    filters: ODataFilter[]\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class OdataListingService<T = any> {\n  public dataSource: ODataDataSource | null = null;\n  public error = signal(false);\n  public loading = signal(false);\n  private errorSubscription: Subscription | null = null;\n  private loadingSubscription: Subscription | null = null;\n\n  public get data(): T[] | null {\n    return this.dataSource?.data ?? null;\n  }\n\n  public constructor(private readonly httpClient: HttpClient) {}\n\n  public initialize({baseUrl, resourceName, paginator, sort, initialSort, filters}: Props): ODataDataSource {\n    const newDataSource = new ODataDataSource(this.httpClient, `${baseUrl}odata/${resourceName}`);\n\n    newDataSource.filters = filters;\n    if (initialSort){\n      newDataSource.initialSort = initialSort;\n    }\n    if (sort) {\n      newDataSource.sort = sort;\n    }\n    newDataSource.paginator = paginator;\n    this.dataSource = newDataSource;\n\n    this.dataSource.refresh();\n    this.errorSubscription = this.dataSource.errors.subscribe((errors) => this.error.set(!!errors));\n\n    this.loadingSubscription = this.dataSource.loading\n      .pipe(distinctUntilChanged())\n      .subscribe((isLoading: boolean) => {\n        if (isLoading) {\n          this.loading.set(false);\n        }\n        this.loading.set(isLoading);\n      });\n\n    return newDataSource;\n  }\n\n  public updateFilters(filters: ODataFilter[]) {\n    if (this.dataSource) {\n      this.dataSource.filters = filters;\n    }\n  }\n\n  public forceReloadFilter() {\n    if (this.dataSource) {\n      // eslint-disable-next-line no-self-assign\n      this.dataSource.filters = this.dataSource.filters;\n    }\n  }\n\n  public isInitialized() {\n    return this.dataSource !== null;\n  }\n\n  public refresh() {\n    this.dataSource?.refresh();\n  }\n\n  public destroy() {\n    this.errorSubscription?.unsubscribe();\n    this.loadingSubscription?.unsubscribe();\n  }\n}\n","import { ParamMap, Params } from '@angular/router';\n\nexport interface GridUrlState {\n  filter?: string;\n  sort?: string;\n  direction?: 'asc' | 'desc' | '';\n  pageIndex?: number;\n  pageSize?: number;\n}\n\nconst PARAM_BASE_NAMES = {\n  filter: 'filter',\n  sort: 'sort',\n  direction: 'dir',\n  pageIndex: 'page',\n  pageSize: 'size',\n} as const;\n\n/**\n * Builds the query param name for a given base name and optional grid state key.\n * With a key, the scheme is `<key><CapitalizedBaseName>` (e.g. key \"alerts\" + base \"filter\" -> \"alertsFilter\").\n * Without a key, the plain base name is used (e.g. \"filter\").\n */\nfunction paramName(baseName: string, key: string): string {\n  if (!key) {\n    return baseName;\n  }\n  return `${key}${baseName.charAt(0).toUpperCase()}${baseName.slice(1)}`;\n}\n\nexport function toQueryParams(state: GridUrlState, key: string = ''): Params {\n  const params: Params = {};\n\n  if (state.filter) {\n    params[paramName(PARAM_BASE_NAMES.filter, key)] = state.filter;\n  }\n  if (state.sort) {\n    params[paramName(PARAM_BASE_NAMES.sort, key)] = state.sort;\n  }\n  if (state.direction) {\n    params[paramName(PARAM_BASE_NAMES.direction, key)] = state.direction;\n  }\n  if (state.pageIndex) {\n    params[paramName(PARAM_BASE_NAMES.pageIndex, key)] = state.pageIndex;\n  }\n  if (state.pageSize) {\n    params[paramName(PARAM_BASE_NAMES.pageSize, key)] = state.pageSize;\n  }\n\n  return params;\n}\n\nexport function fromQueryParams(map: ParamMap, key: string = ''): GridUrlState {\n  const state: GridUrlState = {};\n\n  const filter = map.get(paramName(PARAM_BASE_NAMES.filter, key));\n  if (filter) {\n    state.filter = filter;\n  }\n\n  const sort = map.get(paramName(PARAM_BASE_NAMES.sort, key));\n  if (sort) {\n    state.sort = sort;\n  }\n\n  const direction = map.get(paramName(PARAM_BASE_NAMES.direction, key));\n  if (direction === 'asc' || direction === 'desc') {\n    state.direction = direction;\n  }\n\n  const pageIndex = parsePositiveInteger(map.get(paramName(PARAM_BASE_NAMES.pageIndex, key)));\n  if (pageIndex !== undefined) {\n    state.pageIndex = pageIndex;\n  }\n\n  const pageSize = parsePositiveInteger(map.get(paramName(PARAM_BASE_NAMES.pageSize, key)));\n  if (pageSize !== undefined) {\n    state.pageSize = pageSize;\n  }\n\n  return state;\n}\n\n/**\n * Returns a Params object with every grid-state param name mapped to `null` for the given key.\n * Combined with `queryParamsHandling: 'merge'`, this lets the grid explicitly clear stale\n * params (e.g. a previously-set filter) instead of leaving them stuck in the URL.\n */\nexport function emptyQueryParams(key: string = ''): Params {\n  const params: Params = {};\n  Object.values(PARAM_BASE_NAMES).forEach((baseName) => {\n    params[paramName(baseName, key)] = null;\n  });\n  return params;\n}\n\nexport function paramsEqual(a: Params, b: Params): boolean {\n  const aKeys = Object.keys(a).filter((paramKey) => a[paramKey] !== null && a[paramKey] !== undefined);\n  const bKeys = Object.keys(b).filter((paramKey) => b[paramKey] !== null && b[paramKey] !== undefined);\n\n  if (aKeys.length !== bKeys.length) {\n    return false;\n  }\n\n  return aKeys.every((paramKey) => String(a[paramKey]) === String(b[paramKey]));\n}\n\nfunction parsePositiveInteger(value: string | null): number | undefined {\n  if (!value) {\n    return undefined;\n  }\n  const parsed = Number(value);\n  if (Number.isNaN(parsed) || parsed < 0) {\n    return undefined;\n  }\n  return parsed;\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ContentChild, DestroyRef, EventEmitter, inject, input, OnDestroy, output, TemplateRef, ViewChild } from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ODataFilter } from 'odata-data-source';\nimport { MatSort } from '@angular/material/sort';\nimport { ActivatedRoute, ParamMap, Params, Router } from '@angular/router';\nimport { BaseDataGridComponent } from '../base-data-grid.component';\nimport { CaucaCoreService, toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { OdataListingService } from \"./odata-listing.service\";\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MatTable, MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatRow, MatRowDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatCell, MatCellDef } from '@angular/material/table';\nimport { IconButtonComponent, StatusMessageComponent } from '@cauca-911/material';\nimport { DataGridHeaderComponent } from '../components/data-grid-header/data-grid-header.component';\nimport { DataGridProgressSpinerComponent } from '../components/data-grid-progress-spiner/data-grid-progress-spiner.component';\nimport { DataGridTableOptionsComponent } from '../components/data-grid-table-options/data-grid-table-options.component';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PREFERENCE_SERVICE_TOKEN } from '../../provide-cauca-grid';\nimport { emptyQueryParams, fromQueryParams, GridUrlState, paramsEqual, toQueryParams } from './grid-url-state';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'cauca-odata-grid',\n  templateUrl: './odata-grid.component.html',\n  styleUrls: ['./odata-grid.component.scss'],\n  providers: [OdataListingService],\n  /**\n   * The template gives clickable rows a pointer cursor only when the consumer actually listens\n   * for itemClick, which needs EventEmitter.observers — a count OutputEmitterRef does not\n   * expose. Declared here so the property stays an EventEmitter without an @Output decorator.\n   * See ADR-0003.\n   */\n  // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n  outputs: ['itemClick'],\n  imports: [\n    NgTemplateOutlet,\n    // Material table structure:\n    MatTable, MatColumnDef,\n    MatHeaderCell, MatHeaderCellDef, MatCell, MatCellDef,\n    MatHeaderRow, MatHeaderRowDef,\n    MatRow, MatRowDef, MatNoDataRow,\n    // Material extras\n    MatPaginator,\n    // custom components\n    DataGridHeaderComponent,\n    DataGridTableOptionsComponent,\n    IconButtonComponent,\n    DataGridProgressSpinerComponent,\n    StatusMessageComponent,\n  ]\n})\nexport class OdataGridComponent extends BaseDataGridComponent implements OnDestroy, AfterViewInit {\n\n  public showTableHeader = input(true);\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. */\n  public persistState = input(false);\n  /** Optional prefix for the persisted query params, so two independent grids on the same route don't collide (e.g. \"alerts\" -> \"alertsFilter\"). */\n  public stateKey = input('');\n  public readonly baseSort = input<string[]>();\n  public readonly filterPredicate = input<(filter: string) => ODataFilter[]>();\n  public readonly showHeader = input(true);\n  public readonly selectedRowId = input<any>();\n  public readonly idField = input('id');\n  public readonly showRefreshButton = input(false);\n  public readonly itemClick = new EventEmitter<any>();\n  public readonly refreshRequested = output<void>();\n  @ContentChild(TemplateRef) public rowDetailTemplate!: TemplateRef<any>;\n  @ViewChild(MatPaginator, {static: true}) public paginator!: MatPaginator;\n\n  private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl;\n  private readonly router = inject(Router, { optional: true });\n  private readonly route = inject(ActivatedRoute, { optional: true });\n  private readonly destroyRef = inject(DestroyRef);\n  private defaultPageSize?: number;\n  private pendingRestoredFilter?: string;\n  private lastWrittenParams: Params = {};\n  private restoredState?: GridUrlState;\n\n  public constructor(\n    translateService: TranslateService,\n    public readonly listing: OdataListingService,\n  ) {\n    super(translateService, inject(PREFERENCE_SERVICE_TOKEN));\n  }\n\n  public ngOnDestroy(): void {\n    this.listing.destroy();\n  }\n\n  public ngAfterViewInit(): void {\n    if (!this.canPersistState() || !this.header) {\n      return;\n    }\n\n    if (this.pendingRestoredFilter !== undefined) {\n      this.header.filterControl.setValue(this.pendingRestoredFilter, { emitEvent: false });\n      this.header.showClearButton.set(!!this.pendingRestoredFilter);\n    }\n\n    outputToObservable(this.header.filterChange)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.writeCurrentUrlState());\n\n    if (this.restoredState && this.hasRestoredState(this.restoredState)) {\n      // The initial fetch triggered during ngAfterContentInit (setUpFilterPredicate) can run\n      // before the paginator/sort are fully wired to the table, so it may go out with default\n      // skip/orderby/filter. Re-applying the restored state here and forcing a reload once the\n      // view is fully initialized mirrors the warm-navigation path and guarantees the first\n      // real fetch reflects the restored filter/sort/page on a cold (browser refresh) load.\n      this.applyUrlStateToGrid(this.restoredState);\n    }\n  }\n\n  public refreshData(): void {\n    this.listing.refresh();\n    this.refreshRequested.emit();\n  }\n\n  public getData(): unknown[] {\n    return this.listing.data;\n  }\n\n  public applyFilter(filter: string): void {\n    const filterPredicate = this.filterPredicate();\n    if (filterPredicate) {\n      if (this.paginator) {\n        this.paginator.firstPage();\n      }\n      this.listing.updateFilters(filterPredicate(toLowerCaseAndWithoutDiacritics(filter)));\n    }\n  }\n\n  public refreshFilter(): void {\n    const filterPredicate = this.filterPredicate();\n    if (filterPredicate) {\n      this.listing.updateFilters(filterPredicate(toLowerCaseAndWithoutDiacritics(this.header?.filterControl?.value)));\n    }\n  }\n\n  public override setUpFilterPredicate(): void {\n    let filters = this.filterPredicate()?.('') ?? [];\n\n    if (this.canPersistState()) {\n      filters = this.restoreStateBeforeInitialLoad() ?? filters;\n    }\n\n    this.listing.initialize({\n      baseUrl: this.baseUrl,\n      resourceName: this.resourceName(),\n      paginator: this.paginator,\n      sort: this.sort,\n      initialSort: this.baseSort(),\n      filters,\n    });\n\n    if (this.canPersistState()) {\n      this.setUpUrlStatePersistence();\n    }\n  }\n\n  public override setUpSort(sort: MatSort): void {\n    this.sort = sort;\n  }\n\n  protected override forceReloadFilter(): void {\n    this.listing.forceReloadFilter();\n  }\n\n  protected override computeDisplayedColumns(): string[] {\n    return this.decorateColumns(this.displayedColumns());\n  }\n\n  protected override onColumnsChanged(columns: string[]): void {\n    super.onColumnsChanged(this.decorateColumns(columns));\n  }\n\n  /** `expand` is a grid-owned column, not part of the caller's list. */\n  private decorateColumns(columns: string[]): string[] {\n    return this.showExpandButton() && !columns.includes('expand')\n      ? ['expand', ...columns]\n      : [...columns];\n  }\n\n  private canPersistState(): boolean {\n    return this.persistState() && !!this.router && !!this.route;\n  }\n\n  private restoreStateBeforeInitialLoad(): ODataFilter[] | undefined {\n    this.defaultPageSize = this.paginator?.pageSize;\n    const restoredState = fromQueryParams(this.route.snapshot.queryParamMap, this.stateKey());\n    this.applySortAndPage(restoredState);\n    this.pendingRestoredFilter = restoredState.filter;\n    this.restoredState = restoredState;\n\n    const filterPredicate = this.filterPredicate();\n    if (restoredState.filter === undefined || !filterPredicate) {\n      return undefined;\n    }\n    return filterPredicate(toLowerCaseAndWithoutDiacritics(restoredState.filter));\n  }\n\n  private setUpUrlStatePersistence(): void {\n    this.lastWrittenParams = toQueryParams(fromQueryParams(this.route.snapshot.queryParamMap, this.stateKey()), this.stateKey());\n\n    this.sort?.sortChange\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.writeCurrentUrlState());\n\n    this.paginator?.page\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.writeCurrentUrlState());\n\n    this.route.queryParamMap\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((paramMap) => this.reactToExternalUrlStateChange(paramMap));\n  }\n\n  private applySortAndPage(state: GridUrlState): void {\n    if (state.sort && this.sort) {\n      this.sort.active = state.sort;\n      this.sort.direction = state.direction ?? '';\n    }\n    if (this.paginator) {\n      if (state.pageIndex !== undefined) {\n        this.paginator.pageIndex = state.pageIndex;\n      }\n      if (state.pageSize !== undefined) {\n        this.paginator.pageSize = state.pageSize;\n      }\n    }\n  }\n\n  private currentUrlState(): GridUrlState {\n    const pageSize = this.paginator?.pageSize;\n    return {\n      filter: this.header?.filterControl.value || undefined,\n      sort: this.sort?.active || undefined,\n      direction: this.sort?.direction || undefined,\n      pageIndex: this.paginator?.pageIndex,\n      pageSize: pageSize !== undefined && pageSize !== this.defaultPageSize ? pageSize : undefined,\n    };\n  }\n\n  private writeCurrentUrlState(): void {\n    const params = toQueryParams(this.currentUrlState(), this.stateKey());\n    if (paramsEqual(params, this.lastWrittenParams)) {\n      return;\n    }\n    this.lastWrittenParams = params;\n    this.router.navigate([], {\n      relativeTo: this.route,\n      queryParams: { ...emptyQueryParams(this.stateKey()), ...params },\n      queryParamsHandling: 'merge',\n      replaceUrl: true,\n    });\n  }\n\n  private reactToExternalUrlStateChange(paramMap: ParamMap): void {\n    const state = fromQueryParams(paramMap, this.stateKey());\n    const params = toQueryParams(state, this.stateKey());\n    if (paramsEqual(params, this.lastWrittenParams)) {\n      return;\n    }\n    this.lastWrittenParams = params;\n    this.applyUrlStateToGrid(state);\n  }\n\n  private applyUrlStateToGrid(state: GridUrlState): void {\n    this.applySortAndPage(state);\n\n    if (this.header) {\n      this.header.filterControl.setValue(state.filter ?? '', { emitEvent: false });\n      this.header.showClearButton.set(!!state.filter);\n    }\n\n    if (this.filterPredicate()) {\n      this.refreshFilter();\n    } else {\n      this.listing.forceReloadFilter();\n    }\n  }\n\n  private hasRestoredState(state: GridUrlState): boolean {\n    return state.filter !== undefined || state.sort !== undefined || state.pageIndex !== undefined || state.pageSize !== undefined;\n  }\n}\n","@if (showHeader()) {\n  <cauca-data-grid-header\n    [disableAddButton]=\"disableAddButton()\"\n    [showRefreshButton]=\"showRefreshButton()\" (refreshRequest)=\"refreshData()\"\n    [showAddButton]=\"showAddButton()\"\n    [addButtonLabel]=\"addButtonLabel() || defaultAddButtonLabel\"\n    (addButtonClick)=\"addButtonClick.emit($event)\" (filterChange)=\"applyFilter($event)\">\n    <ng-content select=\"[filterRow]\" ngProjectAs=\"[filterRow]\" />\n  </cauca-data-grid-header>\n}\n\n<ng-content select=\"[customHeader]\" ngProjectAs=\"[customHeader]\" />\n\n@if (showTableOptions()) {\n  <cauca-data-grid-table-options [showColumnViewer]=\"showColumnViewer()\" [gridName]=\"resourceName()\" (densityChanged)=\"onDensityChanged($event)\" (columnsChanged)=\"onColumnsChanged($event)\" [allColumns]=\"regularColumns\">\n    <ng-content select=\"[customFilter]\" ngProjectAs=\"[customFilter]\" />\n  </cauca-data-grid-table-options>\n}\n\n<div class=\"relative\">\n  <table mat-table [dataSource]=\"listing.dataSource\" aria-describedby=\"Data Grid\" multiTemplateDataRows>\n    @if (showExpandButton()) {\n      <ng-container matColumnDef=\"expand\">\n        <th mat-header-cell *matHeaderCellDef></th>\n        <td mat-cell *matCellDef=\"let row\">\n          <div class=\"align-commands\">\n            <cauca-icon-button (buttonClick)=\"onExpand(row)\" color=\"primary\" class=\"button-icon\" [icon]=\"row === expandedElement() ? 'keyboard_arrow_up' : 'keyboard_arrow_down'\" />\n          </div>\n        </td>\n      </ng-container>\n    }\n\n    <ng-content></ng-content>\n    @if(showTableHeader()) {\n      <tr mat-header-row *matHeaderRowDef=\"allDisplayedColumns(); sticky: true\"></tr>\n    }\n\n    <tr mat-row *matRowDef=\"let row; columns: allDisplayedColumns()\"\n      [class.showClick]=\"itemClick.observers.length > 0\"\n      [class.compact]=\"preference.gridDensity === density.Compact\"\n      [class.standard]=\"preference.gridDensity === density.Standard\"\n      [class.comfortable]=\"preference.gridDensity === density.Comfortable\"\n      [class.selected]=\"selectedRowId() === row[idField()]\"\n      (click)=\"itemClick.emit(row)\"\n      onkeypress=\"itemClick.emit(row)\">\n    </tr>\n\n    <ng-container matColumnDef=\"expandedDetail\">\n      <td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"allDisplayedColumns().length\">\n        <div class=\"grid-element-detail-wrapper\" [class.grid-element-detail-wrapper-expanded]=\"row === expandedElement()\">\n          <div class=\"grid-element-detail\">\n            @if (row === expandedElement()) {\n              <template [ngTemplateOutlet]=\"rowDetailTemplate\" [ngTemplateOutletContext]=\"{ row: expandedElement() }\"></template>\n            }\n          </div>\n        </div>\n      </td>\n    </ng-container>\n\n    <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"grid-detail-row\"></tr>\n\n    <ng-container *matNoDataRow>\n      @if(listing.loading() === false) {\n        <ng-container>\n          <tr class=\"mat-row\">\n            @if (listing.error() === false) {\n              <th class=\"mat-cell data-grid-message\"\n                [attr.colspan]=\"allDisplayedColumns().length\">\n                <cauca-status-message type=\"noData\" />\n              </th>\n            } @else {\n              <th class=\"mat-cell data-grid-message\"\n                [attr.colspan]=\"allDisplayedColumns().length\">\n                <cauca-status-message type=\"error\" />\n              </th>\n            }\n          </tr>\n        </ng-container>\n      }\n    </ng-container>\n  </table>\n\n  <cauca-data-grid-progress-spiner [useBackground]=\"false\" [isLoading]=\"listing.loading()\" />\n\n</div>\n\n<mat-paginator [hidePageSize]=\"hidePageSize()\" [pageSizeOptions]=\"[5, 10, 25, 50]\" [pageSize]=\"10\" />\n","import { Injectable, inject } from '@angular/core';\nimport { NavigationEnd, Params, Router } from '@angular/router';\nimport { filter } from 'rxjs';\n\n/**\n * Re-injects a list page's remembered grid query params (filter/sort/page, written by\n * `OdataGridComponent` when `persistState` is enabled) when the user navigates back to that\n * list page from one of its own descendant (detail) routes. Any other way of reaching the\n * list page (menu, bookmark, direct link, refresh) leaves it clean, because the previous URL\n * won't be a descendant of the list path.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class GridStateRestorationService {\n  private readonly router = inject(Router);\n  private readonly rememberedParamsByPath = new Map<string, Params>();\n  private previousPath: string | null = null;\n\n  public constructor() {\n    this.router.events\n      .pipe(filter((event): event is NavigationEnd => event instanceof NavigationEnd))\n      .subscribe((event) => this.onNavigationEnd(event));\n  }\n\n  private onNavigationEnd(event: NavigationEnd): void {\n    const currentPath = this.pathOnly(event.urlAfterRedirects);\n    const currentParams = this.parseParams(event.urlAfterRedirects);\n    const previousPath = this.previousPath;\n    this.previousPath = currentPath;\n\n    if (Object.keys(currentParams).length > 0) {\n      this.rememberedParamsByPath.set(currentPath, currentParams);\n      return;\n    }\n    if (this.restoreIfReturningFromDescendant(currentPath, previousPath)) {\n      return;\n    }\n    this.rememberedParamsByPath.delete(currentPath);\n  }\n\n  private restoreIfReturningFromDescendant(currentPath: string, previousPath: string | null): boolean {\n    if (!previousPath || !previousPath.startsWith(`${currentPath}/`)) {\n      return false;\n    }\n\n    const remembered = this.rememberedParamsByPath.get(currentPath);\n    if (!remembered) {\n      return false;\n    }\n\n    this.router.navigate([currentPath], { queryParams: remembered, replaceUrl: true });\n    return true;\n  }\n\n  private pathOnly(url: string): string {\n    return url.split('?')[0].split('#')[0];\n  }\n\n  private parseParams(url: string): Params {\n    const queryString = url.split('?')[1]?.split('#')[0];\n    if (!queryString) {\n      return {};\n    }\n\n    const params: Params = {};\n    new URLSearchParams(queryString).forEach((value, key) => {\n      params[key] = value;\n    });\n    return params;\n  }\n}\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\nimport { GridStateRestorationService } from './grid-state-restoration.service';\n\n/**\n * Activates the grid list-state restoration feature for the whole application. Add this once\n * in the app's root providers; it has no effect on pages whose grids don't opt in via\n * `[persistState]=\"true\"`.\n */\nexport function provideGridStateRestoration(): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    provideAppInitializer(() => {\n      inject(GridStateRestorationService);\n    }),\n  ]);\n}\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 } 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}\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';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n  selector: 'cauca-check-icon',\n  template: `\n    <mat-icon\n      class=\"check-icon\"\n      [class.check-mark]=\"checkMark()\"\n      [class.check]=\"check()\"\n      [class.uncheck]=\"uncheck()\"\n      aria-hidden=\"false\"\n      aria-label=\"State icon\"\n      [fontIcon]=\"icon()\" />\n  `,\n  styleUrls: ['./check-icon.component.scss'],\n  imports: [MatIcon],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckIconComponent {\n  public checkIcon = input<string>('check');\n  public uncheckIcon = input<string>('block');\n  public isChecked = input<boolean>(false);\n\n  public icon = computed(() => (this.isChecked() ? this.checkIcon() : this.uncheckIcon()));\n  public checkMark = computed(() => this.isChecked() && this.checkIcon() === 'check');\n  public check = computed(() => this.isChecked() && this.checkIcon() !== 'check');\n  public uncheck = computed(() => !this.isChecked());\n}\n","import { Component, OnDestroy, OnInit, Optional, forwardRef, input, ChangeDetectionStrategy } from '@angular/core';\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\nimport { CheckIconComponent } from '../../components/check-icon/check-icon.component';\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\nimport { NgStyle } from '@angular/common';\n\n@Component({\n  selector: 'cauca-data-grid-check-column',\n  templateUrl: './data-grid-check-column.component.html',\n  styleUrls: ['./data-grid-check-column.component.scss'],\n  providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridCheckColumnComponent) }],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CheckIconComponent, MatColumnDef, MatHeaderCell, MatHeaderCellDef, NgStyle, MatCell, MatCellDef, MatFooterCell, MatFooterCellDef]\n})\nexport class DataGridCheckColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\n  public readonly checkIcon = input('check');\n  public readonly uncheckIcon = input('block');\n\n  public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\n    super((grid??odata)?.table);\n  }\n}\n","<ng-container matColumnDef=\"{{ prop() }}\">\n    <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': width(), 'text-align': 'center'}\">\n        {{ label() ?? capitalize(prop()) }}\n    </th>\n    <td mat-cell *matCellDef=\"let row\">\n        <cauca-check-icon [checkIcon]=\"checkIcon()\" [uncheckIcon]=\"uncheckIcon()\"  [isChecked]=\"row[prop()]\" />\n    </td>\n    <td mat-footer-cell *matFooterCellDef></td>\n</ng-container>","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, Optional, ViewEncapsulation, forwardRef, input } from '@angular/core';\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\nimport { NgStyle } from '@angular/common';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n  selector: 'cauca-data-grid-column',\n  templateUrl: './data-grid-column.component.html',\n  styleUrls: ['./data-grid-column.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridColumnComponent) }],\n  imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, NgStyle, MatCell, MatCellDef, MatTooltip, MatFooterCell, MatFooterCellDef]\n})\nexport class DataGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\n\n  public summaryType = input<'none'|'sum'|'count'>('none');\n  public summaryLabel = input<string>('');\n  public format = input<'none'|'phone'>('none');\n  public isInitialized = false;\n  private readonly grid = null;\n\n  public constructor (@Optional() odata: OdataGridComponent, @Optional() grid: DataGridComponent) {\n    super((grid??odata)?.table);\n    this.grid = grid??odata;\n    this.isInitialized = true;\n  }\n\n  public calculateSummary(): string {\n    const rows = this.grid?.data?.();\n    if (this.isInitialized && rows) {\n      if (this.summaryType() === 'sum') {\n        return this.summaryLabel() + rows.reduce((acc, row) => acc + row[this.prop()], 0) + this.summaryLabel();\n      }\n      if (this.summaryType() === 'count') {\n        return rows.length + this.summaryLabel();\n      }\n    }\n    return '';\n  }\n}\n","<ng-container matColumnDef=\"{{ prop() }}\">\n\n    <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': width()}\">\n      {{ label() ?? capitalize(prop()) }}\n    </th>\n\n    <td mat-cell *matCellDef=\"let row\">\n      @if (showToolTip()) {<span [matTooltip]=\"row[prop()]\" >{{ row[prop()] }}</span>}\n      @else { <span>{{ row[prop()] }}</span>}\n    </td>\n\n    <td mat-footer-cell *matFooterCellDef>\n      @if (isInitialized) {\n        {{calculateSummary()}}\n      }\n    </td>\n\n</ng-container>","import { Component, OnDestroy, OnInit, Optional, forwardRef, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\nimport { MatSortHeader } from '@angular/material/sort';\nimport { MatIcon } from '@angular/material/icon';\nimport { IconButtonComponent } from '@cauca-911/material';\n\n@Component({\n  selector: 'cauca-data-grid-command-icon-column',\n  templateUrl: './data-grid-command-icon-column.component.html',\n  styleUrls: ['./data-grid-command-icon-column.component.scss'],\n  providers: [{ provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridCommandIconColumnComponent) }],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [MatColumnDef, MatHeaderCell, MatSortHeader, MatHeaderCellDef, MatIcon, MatCell, MatCellDef, IconButtonComponent, MatFooterCell, MatFooterCellDef ]\n})\nexport class DataGridCommandIconColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\n  public readonly checkColor = input('#F8B132');\n  public readonly checkIcon = input('star');\n  public readonly uncheckIcon = input('star_outline');\n  public readonly uncheckColor = input('default');\n\n  public readonly commandClick = output<unknown>();\n\n  public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\n    super((grid??odata)?.table);\n  }\n}\n","<ng-container matColumnDef=\"{{ prop() }}\">\n    <th mat-header-cell mat-sort-header *matHeaderCellDef>\n        <div>\n            @if (label()) {\n                {{ label() }}\n            } @else {\n                <mat-icon [style.color]=\"uncheckColor()\" aria-hidden=\"false\" aria-label=\"State icon\" [fontIcon]=\"uncheckIcon()\" />\n            }\n        </div>\n    </th>\n    <td mat-cell *matCellDef=\"let row\">\n        <div>\n            <cauca-icon-button (buttonClick)=\"commandClick.emit(row)\" [icon]=\"row[prop()] ? checkIcon() : uncheckIcon()\" [color]=\"row[prop()] ? checkColor() : uncheckColor()\" />\n        </div>\n    </td>\n    <td mat-footer-cell *matFooterCellDef></td>\n</ng-container>","import { ChangeDetectionStrategy, Component, ContentChild, OnDestroy, OnInit, Optional, TemplateRef, ViewEncapsulation, forwardRef, input, output } from '@angular/core';\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\nimport { IconButtonComponent } from '@cauca-911/material';\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n  selector: 'cauca-data-grid-commands-column',\n  templateUrl: './data-grid-commands-column.component.html',\n  styleUrls: ['./data-grid-commands-column.component.scss'],\n  providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridCommandsColumnComponent) }],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatCell, MatCellDef, IconButtonComponent, NgTemplateOutlet, MatFooterCell, MatFooterCellDef, NgStyle, RouterLink]\n})\nexport class DataGridCommandsColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\n\n  public readonly canDelete = input(false);\n  public readonly canEdit = input(false);\n  public readonly canDuplicate = input(false);\n  public readonly editLinkField = input<string>();\n\n  @ContentChild(TemplateRef) public menuTemplate: TemplateRef<any>;\n\n  public readonly deleteClick = output<unknown>();\n  public readonly editClick = output<unknown>();\n  public readonly duplicateClick = output<unknown>();\n\n  public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\n    super((grid??odata)?.table);\n  }\n}\n","<ng-container matColumnDef=\"buttons\">\n  <th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': width()}\"> {{ label() }} </th>\n  <td mat-cell *matCellDef=\"let row\">\n\n      <div class=\"align-commands\">\n\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\" /> }\n\n        @if (canDuplicate()) { <cauca-icon-button color=\"grey\" icon=\"content_copy\" (buttonClick)=\"duplicateClick?.emit(row)\" class=\"duplicate-button\" /> }\n\n        @if (canDelete()) { <cauca-icon-button colorOnHover=\"var(--warn)\" color=\"grey\" icon=\"close\" (buttonClick)=\"deleteClick?.emit(row)\" class=\"delete-button\" /> }\n\n        <template [ngTemplateOutlet]=\"menuTemplate\" [ngTemplateOutletContext]=\"{row:row}\"></template>\n\n      </div>\n\n  </td>\n  <td mat-footer-cell *matFooterCellDef></td>\n</ng-container>","import { Component, OnDestroy, OnInit, Optional, forwardRef, input, ChangeDetectionStrategy } from '@angular/core';\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\nimport { IconComponent } from '@cauca-911/material';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgClass } from '@angular/common';\n\n@Component({\n  selector: 'cauca-data-grid-icon-column',\n  templateUrl: './data-grid-icon-column.component.html',\n  styleUrls: ['./data-grid-icon-column.component.scss'],\n  providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridIconColumnComponent) }],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatCell, MatCellDef, IconComponent, MatFooterCell, MatFooterCellDef, NgClass, MatIcon]\n})\nexport class DataGridIconColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\n\n  public readonly alignRight = input(false);\n  public readonly useMatIcon = input(false);\n  public readonly icon = input('');\n\n  public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\n    super((grid??odata)?.table);\n  }\n}\n","<ng-container matColumnDef=\"{{ prop() }}\">\n    <th mat-header-cell *matHeaderCellDef> {{ showLabel() ? label() ?? capitalize(prop()) : '' }} </th>\n    <td [ngClass]=\"alignRight() ? 'td-right' : ''\" mat-cell *matCellDef=\"let row\">\n        @if (useMatIcon()) { <mat-icon>{{icon()}}</mat-icon> }\n        @else { <cauca-icon [icon]=\"row[prop()]\" /> }\n    </td>\n    <td mat-footer-cell *matFooterCellDef></td>\n</ng-container>","import { ChangeDetectionStrategy, Component, ContentChild, InputSignal, ModelSignal, OnDestroy, OnInit, Optional, TemplateRef, ViewEncapsulation, forwardRef, input, model, output } from '@angular/core';\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\nimport { IconButtonComponent, MenuItemComponent } from '@cauca-911/material';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n  selector: 'cauca-data-grid-menu-column',\n  templateUrl: './data-grid-menu-column.component.html',\n  styleUrls: ['./data-grid-menu-column.component.scss'],\n  providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DataGridMenuColumnComponent) }],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    MatColumnDef,\n    MatHeaderCell,\n    MatHeaderCellDef,\n    MatCell,\n    MatCellDef,\n    IconButtonComponent,\n    MatMenuModule,\n    MenuItemComponent,\n    NgTemplateOutlet,\n    MatFooterCell,\n    MatFooterCellDef,\n    RouterLink\n  ],\n})\nexport class DataGridMenuColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\n  public canDelete: ModelSignal<boolean> = model(false);\n  public readonly canDeleteByRow = input<(row: any) => boolean>(null);\n  public canEdit: InputSignal<boolean> = input(false);\n  public canDuplicate: ModelSignal<boolean> = model(false);\n  public readonly canDuplicateByRow = input<(row: any) => boolean>(null);\n  public editLinkField: InputSignal<string> = input();\n  public duplicateLinkField: InputSignal<string> = input();\n  @ContentChild(TemplateRef) public menuTemplate: TemplateRef<any>;\n\n  public deleteClick = output<unknown>();\n  public editClick = output<unknown>();\n  public duplicateClick = output<unknown>();\n\n  public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\n    super((grid??odata)?.table);\n  }\n\n  public menuOpened(row: any): void {\n    const canDeleteByRow = this.canDeleteByRow();\n    if (canDeleteByRow) {\n      this.canDelete.set(canDeleteByRow(row));\n    }\n    const canDuplicateByRow = this.canDuplicateByRow();\n    if (canDuplicateByRow) {\n      this.canDuplicate.set(canDuplicateByRow(row));\n    }\n  }\n}\n","<ng-container matColumnDef=\"menu\">\n    <th mat-header-cell *matHeaderCellDef> {{ label() }} </th>\n    <td mat-cell *matCellDef=\"let row\">\n    <div class=\"align-commands\">\n\n        <cauca-icon-button colorOnHover=\"var(--primary)\" color=\"grey\" icon=\"more_horiz\" [matMenuTriggerFor]=\"actionMenu\" (menuOpened)=\"menuOpened(row)\" />\n\n        <mat-menu #actionMenu=\"matMenu\" class=\"grid-menu\">\n            @if (canEdit()) {\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\" />\n            }\n\n            @if (canDuplicate()) {\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\" />\n            }\n\n            @if (canDelete()) {\n                <cauca-menu-item colorOnHover=\"var(--warn)\" icon=\"close\" label=\"delete\" [translateLabel]=\"true\" (buttonClick)=\"deleteClick?.emit(row)\" class=\"delete-button\" />\n            }\n            <template [ngTemplateOutlet]=\"menuTemplate\" [ngTemplateOutletContext]=\"{row:row}\"></template>\n\n        </mat-menu>\n\n        </div>\n\n    </td>\n    <td mat-footer-cell *matFooterCellDef></td>\n</ng-container>","import { DatePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport dayjs from 'dayjs';\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(() => {\r\n    if (!this.date() && this.maxLimit()) {\r\n      const maxLimit = dayjs(this.maxLimit()).add(-1, 'second').toDate();\r\n      return maxLimit;\r\n    }\r\n    if (!this.date()) {\r\n      return '';\r\n    }\r\n    const date = new Date(this.date());\r\n    if (this.minLimit()) {\r\n      const minLimit = new Date(this.minLimit());\r\n      return date < minLimit ? minLimit : date;\r\n    } else if (this.maxLimit()) {\r\n      const maxLimit = dayjs(this.maxLimit()).add(-1, 'second').toDate();\r\n      return date > maxLimit ? maxLimit : date;\r\n    } else {\r\n      return date;\r\n    }\r\n  });\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';\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\nimport { MatSortHeader } from '@angular/material/sort';\nimport { NgStyle } from '@angular/common';\nimport { TimeLabelComponent } from '../../components/time-label/time-label.component';\n\n@Component({\n  selector: 'cauca-date-grid-column',\n  templateUrl: './date-grid-column.component.html',\n  styleUrls: ['./date-grid-column.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => DateGridColumnComponent) }],\n  imports: [\n    MatColumnDef,\n    MatHeaderCell, MatHeaderCellDef, MatSortHeader, NgStyle,\n    MatCell, MatCellDef,\n    TimeLabelComponent,\n    MatFooterCell, MatFooterCellDef,\n  ]\n})\nexport class DateGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\n\n  public showWithTime = input(false);\n  public showSecond = input(false);\n\n  public maxDate = input<Date|null>(null);\n  public minDate = input<Date|null>(null);\n\n  public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\n    super((grid??odata)?.table);\n  }\n\n}\n","<ng-container matColumnDef=\"{{ prop() }}\">\n\n    <th mat-header-cell *matHeaderCellDef mat-sort-header [ngStyle]=\"{'width': width()}\">\n      {{ label() ?? capitalize(prop()) }}\n    </th>\n\n    <td mat-cell *matCellDef=\"let row\">\n      <cauca-time-label [date]=\"row[prop()]\" [showTime]=\"showWithTime()\" [showSecond]=\"showSecond()\" [minLimit]=\"minDate()\" [maxLimit]=\"maxDate()\" />\n    </td>\n\n    <td mat-footer-cell *matFooterCellDef></td>\n</ng-container>\n\n","import { Component, OnDestroy, OnInit, Optional, forwardRef, input, ChangeDetectionStrategy } from '@angular/core';\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\nimport { NgStyle } from '@angular/common';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { CheckIconComponent } from '../../components/check-icon/check-icon.component';\nimport { MatSortHeader } from '@angular/material/sort';\n\n@Component({\n  selector: 'cauca-sortable-data-grid-check-column',\n  templateUrl: './sortable-data-grid-check-column.component.html',\n  styleUrls: ['./sortable-data-grid-check-column.component.scss'],\n  providers: [{ provide: BaseGridColumnComponent, useExisting: forwardRef(() => SortableDataGridCheckColumnComponent) }],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatSortHeader, NgStyle, MatTooltip, MatCell, MatCellDef, CheckIconComponent, MatFooterCell, MatFooterCellDef]\n})\nexport class SortableDataGridCheckColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\n  public readonly checkIcon = input('check');\n  public readonly uncheckIcon = input('block');\n\n  public constructor (@Optional() public readonly odata: OdataGridComponent, @Optional() public readonly grid: DataGridComponent) {\n    super((grid??odata)?.table);\n  }\n}\n","<ng-container matColumnDef=\"{{ prop() }}\">\n    <th mat-header-cell *matHeaderCellDef mat-sort-header [ngStyle]=\"{'width': width()}\" [matTooltip]=\"label() ?? capitalize(prop())\">\n        {{ label() ?? capitalize(prop()) }}\n    </th>\n    <td mat-cell *matCellDef=\"let row\" [ngStyle]=\"{'width': width()}\">\n        <cauca-check-icon [checkIcon]=\"checkIcon()\" [uncheckIcon]=\"uncheckIcon()\" [isChecked]=\"row[prop()]\" />\n    </td>\n    <td mat-footer-cell *matFooterCellDef></td>\n</ng-container>","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { MatTooltip } from '@angular/material/tooltip';\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>(false);\r\n  public displayValue = computed(() => {\r\n    if (this.format() === 'phone') {\r\n      return this.value()?.toString().replace(/(\\d{3})(\\d{3})(\\d{4})/, '$1-$2-$3');\r\n    }\r\n    return this.value();\r\n  });\r\n}\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';\nimport { BaseGridColumnComponent } from '../base-grid-column.component';\nimport { OdataGridComponent } from '../../odata-grid/odata-grid.component';\nimport { DataGridComponent } from '../../data-grid/data-grid.component';\nimport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatHeaderCell, MatHeaderCellDef } from '@angular/material/table';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ColumnLabelComponent } from '../../components/column-label/column-label.component';\nimport { NgStyle } from '@angular/common';\nimport { MatSortHeader } from '@angular/material/sort';\n\n@Component({\n  selector: 'cauca-sortable-data-grid-column',\n  templateUrl: './sortable-data-grid-column.component.html',\n  styleUrls: ['./sortable-data-grid-column.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [ { provide: BaseGridColumnComponent, useExisting: forwardRef(() => SortableDataGridColumnComponent) }],\n  imports: [\n    MatColumnDef,\n    MatHeaderCell, MatHeaderCellDef, MatSortHeader, NgStyle,\n    MatCell, MatCellDef,\n    MatTooltip, ColumnLabelComponent,\n    MatFooterCell, MatFooterCellDef,\n  ]\n})\nexport class SortableDataGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\n\n  public summaryType = input<'none'|'sum'|'count'>('none');\n  public summaryLabel = input<string>('');\n  public format = input<'none'|'phone'>('none');\n\n  public isInitialized = false;\n  private readonly grid = null;\n\n  public constructor (@Optional() odata: OdataGridComponent, @Optional() grid: DataGridComponent) {\n    super((grid??odata)?.table);\n    this.grid = grid??odata;\n    this.isInitialized = true;\n  }\n\n  public calculateSummary(): string {\n    const rows = this.grid?.data?.();\n    if (this.isInitialized && rows) {\n      if (this.summaryType() === 'sum') {\n        return this.summaryLabel() + rows.reduce((acc, row) => acc + row[this.prop()], 0) + this.summaryLabel();\n      }\n      if (this.summaryType() === 'count') {\n        return rows.length + this.summaryLabel();\n      }\n    }\n    return '';\n  }\n}\n","\n<ng-container matColumnDef=\"{{ prop() }}\">\n    <th mat-header-cell *matHeaderCellDef mat-sort-header  [ngStyle]=\"{'width': width()}\" [matTooltip]=\"label() ?? capitalize(prop())\">\n      {{ label() ?? capitalize(prop()) }}\n    </th>\n\n    <td mat-cell *matCellDef=\"let row\">\n      <cauca-column-label [value]=\"row[prop()]\" [showToolTip]=\"showToolTip()\" [format]=\"format()\" />\n    </td>\n\n    <td mat-footer-cell *matFooterCellDef>\n      @if (isInitialized) {\n        {{calculateSummary()}}\n      }\n    </td>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, forwardRef, OnDestroy, OnInit, Optional, ViewEncapsulation, 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 { TranslatePipe } from '@ngx-translate/core';\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],\r\n})\r\nexport class TranslationGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {\r\n  public readonly prefix = 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}\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()]) { <span>{{ prefix()+'.'+row[prop()] | translate }}</span> }\r\n        @else if(row[prop()]) { <span>{{ row[prop()] | translate }}</span> }\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 } 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\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}","<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/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","i2","i4","i2.OdataListingService","i1.OdataGridComponent","i2.DataGridComponent","i3"],"mappings":"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"}