{"version":3,"file":"acorex-components-data-table.mjs","sources":["../../../../packages/components/data-table/src/lib/data-table-css-class.cache.ts","../../../../packages/components/data-table/src/lib/base-data-table.class.ts","../../../../packages/components/data-table/src/lib/columns/data-table-column.ts","../../../../packages/components/data-table/src/lib/columns/data-table-column-resizable.directive.ts","../../../../packages/components/data-table/src/lib/columns/data-text-column.component.ts","../../../../packages/components/data-table/src/lib/columns/row-command-column.component.ts","../../../../packages/components/data-table/src/lib/columns/row-expand-column.component.ts","../../../../packages/components/data-table/src/lib/columns/row-index-column.component.ts","../../../../packages/components/data-table/src/lib/columns/row-select-column.component.ts","../../../../packages/components/data-table/src/lib/data-table/data-table.component.ts","../../../../packages/components/data-table/src/lib/data-table/data-table.component.html","../../../../packages/components/data-table/src/lib/data-table.module.ts","../../../../packages/components/data-table/src/acorex-components-data-table.ts"],"sourcesContent":["import { WritableSignal, signal } from '@angular/core';\n\nexport type AXDataTableCssClassValue = string | null | undefined;\n\n/**\n * Caches synchronous CSS class resolutions in a plain map (safe during template render)\n * and asynchronous results in a signal (updated only after promises settle).\n */\nexport class AXDataTableCssClassCache {\n  private generation = 0;\n  private readonly syncCache = new Map<string | number, string>();\n  private readonly pendingResolvers = new Map<string | number, Promise<void>>();\n  readonly resolvedAsync: WritableSignal<Map<string | number, string>> = signal(new Map());\n\n  clear(): void {\n    this.generation++;\n    this.pendingResolvers.clear();\n    this.syncCache.clear();\n\n    if (this.resolvedAsync().size > 0) {\n      this.resolvedAsync.set(new Map());\n    }\n  }\n\n  resolve(\n    cacheKey: string | number,\n    factory: () => AXDataTableCssClassValue | Promise<AXDataTableCssClassValue>,\n    onResolved: () => void,\n  ): string {\n    const asyncCached = this.resolvedAsync().get(cacheKey);\n    if (asyncCached !== undefined) {\n      return asyncCached;\n    }\n\n    if (this.syncCache.has(cacheKey)) {\n      return this.syncCache.get(cacheKey) ?? '';\n    }\n\n    const result = factory();\n    if (isCssClassPromise(result)) {\n      this.scheduleAsync(cacheKey, result, onResolved);\n      return '';\n    }\n\n    const normalized = normalizeCssClass(result);\n    this.syncCache.set(cacheKey, normalized);\n    return normalized;\n  }\n\n  private scheduleAsync(\n    cacheKey: string | number,\n    promise: Promise<AXDataTableCssClassValue>,\n    onResolved: () => void,\n  ): void {\n    if (this.pendingResolvers.has(cacheKey)) {\n      return;\n    }\n\n    const generation = this.generation;\n    const task = promise\n      .then((value) => normalizeCssClass(value))\n      .catch(() => '')\n      .then((cssClass) => {\n        if (generation !== this.generation) {\n          return;\n        }\n\n        this.pendingResolvers.delete(cacheKey);\n        this.resolvedAsync.update((map) => {\n          const next = new Map(map);\n          next.set(cacheKey, cssClass);\n          return next;\n        });\n        onResolved();\n      });\n\n    this.pendingResolvers.set(cacheKey, task);\n  }\n}\n\nexport function normalizeCssClass(value: unknown): string {\n  return typeof value === 'string' ? value.trim() : '';\n}\n\nexport function isCssClassPromise(\n  value: AXDataTableCssClassValue | Promise<AXDataTableCssClassValue>,\n): value is Promise<AXDataTableCssClassValue> {\n  return value != null && typeof (value as Promise<AXDataTableCssClassValue>).then === 'function';\n}\n","import {\n  AXDataSource,\n  AXDataSourceFilterOption,\n  AXEvent,\n  AXStyleColorType,\n  MXBaseComponent,\n  convertArrayToDataSource,\n} from '@acorex/cdk/common';\nimport { AXHighlightService } from '@acorex/core/utils';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DestroyRef, EventEmitter, Injectable, Input, Output, PLATFORM_ID, TemplateRef, WritableSignal, inject, signal } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport { AXDataTableColumnComponent } from './columns/data-table-column';\nimport { AXDataTableCssClassCache, type AXDataTableCssClassValue } from './data-table-css-class.cache';\n\nexport interface AXDataTableScrollIndexChanged extends AXEvent {\n  index: number;\n}\n\nexport interface AXDataTableRowClick extends AXEvent {\n  data?: any;\n}\n\nexport interface AXColumnsOrderChangedEvent extends AXEvent {\n  data?: any;\n}\nexport interface onColumnSizeChangedEvent extends AXEvent {\n  type: 'start' | 'end';\n  data?: any;\n}\n\nexport interface AXDataTableRowDbClick extends AXDataTableRowClick {}\n\nexport type AXDataTableLook = 'classic' | 'minimal';\n\n/**\n * Semantic row background colors supported by the data table.\n */\nexport type AXDataTableRowColorType = Exclude<AXStyleColorType, 'default'>;\n\nexport const AX_DATA_TABLE_ROW_COLOR_TYPES: AXDataTableRowColorType[] = [\n  'primary',\n  'secondary',\n  'success',\n  'warning',\n  'danger',\n];\n\n/** Sync or optional CSS class string returned by `rowCssClass` / `cellCssClass`. */\nexport type { AXDataTableCssClassValue } from './data-table-css-class.cache';\n\n/** Row CSS class resolver; may return a value synchronously or as a `Promise`. */\nexport type AXDataTableRowCssClassResolver = (\n  row: unknown,\n  rowIndex: number,\n) => AXDataTableCssClassValue | Promise<AXDataTableCssClassValue>;\n\n/** Cell CSS class resolver; may return a value synchronously or as a `Promise`. */\nexport type AXDataTableCellCssClassResolver = (\n  row: unknown,\n  column: AXDataTableColumnComponent,\n  rowIndex: number,\n) => AXDataTableCssClassValue | Promise<AXDataTableCssClassValue>;\n\n/**\n * Options for temporarily highlighting a row (e.g. after create).\n */\nexport interface AXDataTableRowHighlightOptions {\n  /** Semantic row background color. @defaultValue `'success'` */\n  color?: AXDataTableRowColorType;\n  /**\n   * Translation key for the row badge.\n   * Pass `null` to hide the badge.\n   * @defaultValue `'@acorex:dataTable.rowHighlight.new'`\n   */\n  badge?: string | null;\n  /** Whether the row background should pulse. @defaultValue `true` */\n  pulse?: boolean;\n  /** Whether the row should be pinned above other rows until refresh. @defaultValue `true` */\n  pinned?: boolean;\n}\n\nexport interface AXDataTableRowHighlight {\n  row: unknown;\n  color: AXDataTableRowColorType;\n  badge: string | null;\n  pulse: boolean;\n  pinned: boolean;\n  order: number;\n}\n\nexport const AX_DATA_TABLE_ROW_HIGHLIGHT_DEFAULT_BADGE = '@acorex:dataTable.rowHighlight.new';\n\n/** Options for auto-fitting a single column to its content width. */\nexport interface AXDataTableAutoFitColumnOptions {\n  /** Maximum width in pixels. */\n  maxWidth?: number;\n  /** When true, only the header cell is measured (e.g. before row data exists). */\n  headerOnly?: boolean;\n}\n\n/** Options for auto-fitting all columns to their content width. */\nexport interface AXDataTableAutoFitAllColumnsOptions {\n  /** When true, fixed columns are skipped. @defaultValue `true` */\n  skipFixed?: boolean;\n  /** When true, auto-fit is skipped while data is loading. @defaultValue `true` */\n  skipLoading?: boolean;\n  /** Maximum width in pixels for any column. @defaultValue `500` */\n  maxWidth?: number;\n}\n\n@Injectable()\nexport abstract class AXBaseDataTable extends MXBaseComponent {\n  @Input() dataSource: AXDataSource<unknown> = convertArrayToDataSource([]);\n\n  /**\n   * For handle nested rows.\n   *\n   * @defaultValue `parentId`\n   */\n  @Input()\n  parentField: string | undefined = undefined;\n\n  /**\n   * Field name on each row that indicates whether the row has children (for showing expand icon).\n   *\n   * @defaultValue `hasChild`\n   */\n  @Input()\n  hasChildrenField = 'hasChild';\n\n  /**\n   * Template for expanded custom row content.\n   */\n  @Input()\n  rowDetailsTemplate?: TemplateRef<unknown>;\n\n  /**\n   * Resolves custom CSS classes for a row `<tr>`.\n   * Supports synchronous and asynchronous (`Promise`) return values.\n   */\n  @Input()\n  rowCssClass?: AXDataTableRowCssClassResolver;\n\n  /**\n   * Resolves custom CSS classes for an individual body cell `<td>`.\n   * Column `cssClass` is preserved and merged with the resolved value.\n   * Supports synchronous and asynchronous (`Promise`) return values.\n   */\n  @Input()\n  cellCssClass?: AXDataTableCellCssClassResolver;\n\n  /**\n   * When set, matching text in the table body is highlighted.\n   */\n  @Input()\n  get highlightText(): string | undefined {\n    return this._highlightText;\n  }\n  set highlightText(value: string | undefined) {\n    if (this._highlightText === value) {\n      return;\n    }\n\n    this._highlightText = value;\n    this.scheduleTextHighlight();\n  }\n\n  @Output()\n  selectedRowsChange: EventEmitter<unknown[]> = new EventEmitter<unknown[]>();\n\n  protected readonly highlightedRows: WritableSignal<Map<string | number, AXDataTableRowHighlight>> = signal(new Map());\n\n  protected readonly highlightedColumns: WritableSignal<Map<string, AXDataTableRowColorType>> = signal(new Map());\n\n  private readonly rowCssClassCache = new AXDataTableCssClassCache();\n  private readonly cellCssClassCache = new AXDataTableCssClassCache();\n  private readonly highlightService = inject(AXHighlightService);\n  private readonly platformId = inject(PLATFORM_ID);\n  private readonly destroyRef = inject(DestroyRef);\n\n  private _highlightText?: string;\n  private highlightOrder = 0;\n  private textHighlightFrame?: number;\n\n  constructor() {\n    super();\n    this.destroyRef.onDestroy(() => {\n      if (this.textHighlightFrame != null) {\n        cancelAnimationFrame(this.textHighlightFrame);\n      }\n\n      this.clearTextHighlight();\n    });\n  }\n\n  /**\n   * Gets the data source key field name.\n   *\n   * @returns string - The key field name for the data source.\n   */\n  public getDataSourceKey(): string {\n    return this.dataSource.config.key || 'id';\n  }\n\n  /**\n   * Temporarily highlights a row with optional pin, badge, and pulse styling.\n   * Highlights are cleared on the next grid `refresh()` unless `preserveHighlights` is set.\n   */\n  public highlightRow(row: unknown, options: AXDataTableRowHighlightOptions = {}): void {\n    const key = this.resolveRowKey(row);\n    if (key == null) {\n      return;\n    }\n\n    const entry: AXDataTableRowHighlight = {\n      row: typeof row === 'object' && row !== null ? row : { [this.getDataSourceKey()]: row },\n      color: options.color ?? 'success',\n      badge: options.badge !== undefined ? options.badge : AX_DATA_TABLE_ROW_HIGHLIGHT_DEFAULT_BADGE,\n      pulse: options.pulse ?? true,\n      pinned: options.pinned ?? true,\n      order: ++this.highlightOrder,\n    };\n\n    this.highlightedRows.update((map) => {\n      const next = new Map(map);\n      next.set(key, entry);\n      return next;\n    });\n\n    this.onRowHighlightsChanged();\n  }\n\n  /**\n   * Temporarily highlights multiple rows.\n   */\n  public highlightRows(rows: unknown[], options: AXDataTableRowHighlightOptions = {}): void {\n    rows.forEach((row) => this.highlightRow(row, options));\n  }\n\n  /**\n   * Applies a color highlight to rows by their key (id) values.\n   * Unlike `highlightRow`, no badge, pulse, or pinning is applied.\n   *\n   * @param keys - Key (id) values of the rows to highlight.\n   * @param color - Semantic highlight color. @defaultValue `'primary'`\n   */\n  public highlightRowsByKey(keys: (string | number)[], color: AXDataTableRowColorType = 'primary'): void {\n    keys.forEach((key) => this.highlightRow(key, { color, badge: null, pulse: false, pinned: false }));\n  }\n\n  /**\n   * Clears temporary row highlights.\n   *\n   * @param keys - When provided, only highlights of rows with these key (id) values are cleared.\n   */\n  public clearRowHighlights(keys?: (string | number)[]): void {\n    if (this.highlightedRows().size === 0) {\n      return;\n    }\n\n    if (keys == null) {\n      this.highlightedRows.set(new Map());\n    } else {\n      this.highlightedRows.update((map) => {\n        const next = new Map(map);\n        keys.forEach((key) => next.delete(key));\n        return next;\n      });\n    }\n\n    this.onRowHighlightsChanged();\n  }\n\n  /**\n   * Applies a color highlight to one or more columns.\n   *\n   * @param columnNames - Column identifiers; either the column `name` (e.g. `cl-firstName`) or its `dataField`.\n   * @param color - Semantic highlight color. @defaultValue `'primary'`\n   */\n  public highlightColumns(columnNames: string | string[], color: AXDataTableRowColorType = 'primary'): void {\n    const names = Array.isArray(columnNames) ? columnNames : [columnNames];\n    if (!names.length) {\n      return;\n    }\n\n    this.highlightedColumns.update((map) => {\n      const next = new Map(map);\n      names.forEach((name) => next.set(name, color));\n      return next;\n    });\n  }\n\n  /**\n   * Clears column highlights.\n   *\n   * @param columnNames - When provided, only highlights of these columns are cleared.\n   */\n  public clearColumnHighlights(columnNames?: string | string[]): void {\n    if (this.highlightedColumns().size === 0) {\n      return;\n    }\n\n    if (columnNames == null) {\n      this.highlightedColumns.set(new Map());\n      return;\n    }\n\n    const names = Array.isArray(columnNames) ? columnNames : [columnNames];\n    this.highlightedColumns.update((map) => {\n      const next = new Map(map);\n      names.forEach((name) => next.delete(name));\n      return next;\n    });\n  }\n\n  /**\n   * Returns the highlight color of a column, if any.\n   */\n  public getColumnHighlightColor(column: AXDataTableColumnComponent): AXDataTableRowColorType | null {\n    const highlights = this.highlightedColumns();\n    if (highlights.size === 0) {\n      return null;\n    }\n\n    const dataField = (column as { dataField?: string }).dataField;\n    return highlights.get(column.name) ?? (dataField != null ? highlights.get(dataField) : undefined) ?? null;\n  }\n\n  /**\n   * Returns the CSS class of a highlighted column, applied to its header and body cells.\n   */\n  public getColumnCssClass(column: AXDataTableColumnComponent): string {\n    const color = this.getColumnHighlightColor(column);\n    return color ? `ax-column-color-${color}` : '';\n  }\n\n  /**\n   * Returns the temporary highlight state for a row, if any.\n   */\n  public getRowHighlight(row: unknown): AXDataTableRowHighlight | null {\n    const key = this.resolveRowKey(row);\n    if (key == null) {\n      return null;\n    }\n\n    return this.highlightedRows().get(key) ?? null;\n  }\n\n  /**\n   * Returns the translation key for the row highlight badge, if any.\n   */\n  public getRowHighlightBadge(row: unknown): string | null {\n    return this.getRowHighlight(row)?.badge ?? null;\n  }\n\n  /**\n   * Clears cached asynchronous CSS class results for rows and cells.\n   */\n  public clearResolvedCssClasses(): void {\n    this.rowCssClassCache.clear();\n    this.cellCssClassCache.clear();\n  }\n\n  /**\n   * Returns CSS classes for the given row `<tr>`, including temporary highlight styles.\n   */\n  public getRowCssClass(row: unknown, rowIndex: number): string {\n    const classes: string[] = [];\n    const highlight = this.getRowHighlight(row);\n\n    if (highlight) {\n      classes.push(`ax-row-color-${highlight.color}`);\n      if (highlight.pulse) {\n        classes.push('ax-row-color-pulse');\n      }\n    }\n\n    if (this.rowCssClass) {\n      classes.push(this.resolveRowCssClass(row, rowIndex));\n    }\n\n    return classes.filter(Boolean).join(' ');\n  }\n\n  /**\n   * Returns CSS classes for a body cell, merging column `cssClass`, column highlight, and `cellCssClass`.\n   */\n  public getCellCssClass(row: unknown, column: AXDataTableColumnComponent, rowIndex: number): string {\n    const classes: string[] = [];\n\n    if (column.cssClass) {\n      classes.push(column.cssClass);\n    }\n\n    const columnHighlight = this.getColumnCssClass(column);\n    if (columnHighlight) {\n      classes.push(columnHighlight);\n    }\n\n    if (this.cellCssClass) {\n      classes.push(this.resolveCellCssClass(row, column, rowIndex));\n    }\n\n    return classes.filter(Boolean).join(' ');\n  }\n\n  /**\n   * Merges pinned highlighted rows with loaded items.\n   */\n  protected mergeRowsWithHighlights(items: unknown[]): unknown[] {\n    const highlights = this.highlightedRows();\n    if (highlights.size === 0) {\n      return items;\n    }\n\n    const itemsByKey = new Map<string | number, unknown>();\n    for (const item of items) {\n      const itemKey = this.resolveRowKey(item);\n      if (itemKey != null) {\n        itemsByKey.set(itemKey, item);\n      }\n    }\n\n    const pinnedEntries = [...highlights.values()].filter((entry) => entry.pinned).sort((a, b) => a.order - b.order);\n\n    const pinnedRows = pinnedEntries.map((entry) => {\n      const entryKey = this.resolveRowKey(entry.row);\n      if (entryKey != null && itemsByKey.has(entryKey)) {\n        return itemsByKey.get(entryKey) as unknown;\n      }\n\n      return entry.row;\n    });\n\n    const pinnedKeys = new Set(\n      pinnedEntries.map((entry) => this.resolveRowKey(entry.row)).filter((key): key is string | number => key != null),\n    );\n\n    const rest = items.filter((item) => {\n      const itemKey = this.resolveRowKey(item);\n      return itemKey == null || !pinnedKeys.has(itemKey);\n    });\n\n    return [...pinnedRows, ...rest];\n  }\n\n  protected resolveRowKey(row: unknown): string | number | null {\n    const keyField = this.getDataSourceKey();\n    if (row == null) {\n      return null;\n    }\n\n    if (typeof row === 'object') {\n      const value = (row as Record<string, unknown>)[keyField];\n      if (value == null || value === '') {\n        return null;\n      }\n\n      return value as string | number;\n    }\n\n    return row as string | number;\n  }\n\n  protected abstract onRowHighlightsChanged(): void;\n\n  protected onCssClassResolved(): void {\n    this.scheduleTextHighlight();\n  }\n\n  /**\n   * Schedules text highlighting after the current render frame.\n   */\n  protected scheduleTextHighlight(): void {\n    if (!isPlatformBrowser(this.platformId)) {\n      return;\n    }\n\n    if (this.textHighlightFrame != null) {\n      cancelAnimationFrame(this.textHighlightFrame);\n    }\n\n    this.textHighlightFrame = requestAnimationFrame(() => {\n      this.textHighlightFrame = undefined;\n      this.applyTextHighlight();\n    });\n  }\n\n  /**\n   * Returns the DOM root used for text highlighting.\n   */\n  protected getTextHighlightRoot(): HTMLElement | null {\n    const host = this.getHostElement<HTMLElement>();\n    const root =\n      host.querySelector<HTMLElement>('.ax-data-table-wrapper') ??\n      host.querySelector<HTMLElement>('.ax-body-content') ??\n      host;\n\n    root.setAttribute('data-ax-highlight-root', this.id);\n    return root;\n  }\n\n  protected getTextHighlightSelector(): string {\n    return `[data-ax-highlight-root=\"${this.id}\"] tbody td`;\n  }\n\n  protected applyTextHighlight(): void {\n    const query = this._highlightText?.trim();\n    const selector = this.getTextHighlightSelector();\n\n    if (!query) {\n      this.highlightService.clear(selector);\n      return;\n    }\n\n    if (!this.getTextHighlightRoot()) {\n      return;\n    }\n\n    this.highlightService.highlight(selector, query);\n  }\n\n  protected clearTextHighlight(): void {\n    this.highlightService.clear(this.getTextHighlightSelector());\n  }\n\n  private resolveRowCssClass(row: unknown, rowIndex: number): string {\n    const cacheKey = this.resolveRowCssClassCacheKey(row, rowIndex);\n    return this.rowCssClassCache.resolve(\n      cacheKey,\n      () => this.rowCssClass!(row, rowIndex),\n      () => this.onCssClassResolved(),\n    );\n  }\n\n  private resolveCellCssClass(row: unknown, column: AXDataTableColumnComponent, rowIndex: number): string {\n    const cacheKey = this.resolveCellCssClassCacheKey(row, column, rowIndex);\n    return this.cellCssClassCache.resolve(\n      cacheKey,\n      () => this.cellCssClass!(row, column, rowIndex),\n      () => this.onCssClassResolved(),\n    );\n  }\n\n  private resolveRowCssClassCacheKey(row: unknown, rowIndex: number): string | number {\n    const key = this.resolveRowKey(row);\n    return key != null ? `r:${key}:${rowIndex}` : `r:${rowIndex}`;\n  }\n\n  private resolveCellCssClassCacheKey(\n    row: unknown,\n    column: AXDataTableColumnComponent,\n    rowIndex: number,\n  ): string | number {\n    const key = this.resolveRowKey(row);\n    return key != null ? `c:${key}:${column.name}:${rowIndex}` : `c:${column.name}:${rowIndex}`;\n  }\n\n  private _selectedRows: WritableSignal<unknown[]> = signal([]);\n  @Input()\n  public get selectedRows(): unknown[] {\n    return this._selectedRows();\n  }\n  public set selectedRows(v: unknown[]) {\n    if (!isEqual(this._selectedRows(), v)) {\n      this._selectedRows.set(v);\n      this.selectedRowsChange.emit(v);\n    }\n  }\n\n  /**\n   * Expands a row to show its children.\n   *\n   * @param row - The row data to expand.\n   * @returns Promise<void> - Promise that resolves when expansion is complete.\n   */\n  public async expandRow(row: any) {\n    // Scenario 1: Row details template without nested children\n    if (this.rowDetailsTemplate && !this.parentField) {\n      this.dataSource.onItemExpanded.next({\n        expandedItem: row.data,\n        children: null,\n      });\n    }\n    // Scenario 2: Children already exist in the row data\n    else if (row.data['__meta__.expanded'] || row.data.children != undefined) {\n      this.dataSource.onItemExpanded.next({\n        expandedItem: row.data,\n        children: row.data.children,\n      });\n    }\n    // Scenario 3: Fetch children from datasource using parentField\n    else {\n      const key = this.getDataSourceKey();\n      const filter: AXDataSourceFilterOption = {\n        field: this.parentField,\n        operator: {\n          type: 'equal',\n        },\n        value: row['data'][key],\n      };\n      const expandedItems = await this.dataSource.getItemsByFilter(filter);\n\n      this.dataSource.onItemExpanded.next({\n        expandedItem: row.data,\n        children: expandedItems.items,\n      });\n    }\n  }\n\n  /**\n   * Refreshes the children of a specific item.\n   *\n   * @param id - The ID of the item whose children should be refreshed.\n   * @returns Promise<void> - Promise that resolves when refresh is complete.\n   */\n  public async refreshItemChildren(id: string) {\n    this.dataSource.onItemRefreshChildren.next({\n      id,\n    });\n  }\n\n  /**\n   * Selects one or more rows.\n   *\n   * @param rows - The rows to select.\n   * @returns void - No return value.\n   */\n  public selectRows(...rows: unknown[]) {\n    const key = this.getDataSourceKey();\n    const selectRowIds = this.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n    const newRows = rows.filter((nr) => !selectRowIds.includes(typeof nr === 'object' ? nr[key] : nr));\n    this.selectedRows = this.selectedRows.concat(newRows);\n    //this.selectedRows = _.uniq(this.selectedRows.concat(rows));\n  }\n\n  /**\n   * Unselects one or more rows.\n   *\n   * @param rows - The rows to unselect.\n   * @returns void - No return value.\n   */\n  public unSelectRows(...rows: unknown[]) {\n    const key = this.getDataSourceKey();\n    const removedRowIds = rows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n    this.selectedRows = this.selectedRows.filter((c) => !removedRowIds.includes(typeof c === 'object' ? c[key] : c));\n    //this.selectedRows = this.selectedRows.filter((c) => !rows.includes(c));\n  }\n\n  /**\n   * Auto-fits all resizable columns to their content width.\n   * Call this whenever row data or templates change and column widths should be recalculated.\n   */\n  public abstract autoFitAllColumns(options?: AXDataTableAutoFitAllColumnsOptions): void;\n\n  /**\n   * Auto-fits a single column to its content width.\n   *\n   * @param columnIndex - 0-based index in the columns `QueryList`.\n   */\n  public abstract autoFitColumn(columnIndex: number, options?: AXDataTableAutoFitColumnOptions): void;\n\n  /**\n   * Auto-fits a single column by its `name` / data field.\n   */\n  public abstract autoFitColumnByName(columnName: string, options?: AXDataTableAutoFitColumnOptions): void;\n}\n","import { AXSortOrder } from '@acorex/cdk/common';\nimport { Injectable, Input, TemplateRef } from '@angular/core';\n\n@Injectable()\nexport abstract class AXDataTableColumnComponent {\n  @Input()\n  caption: string;\n\n  /**\n   * Width of the column.\n   * - string: e.g., '180px', '20%'\n   * - number: e.g., 180 (treated as pixels)\n   * - 'auto': sizes from headers when the table first renders, then refits from row content once data loads\n   *\n   * @defaultValue 'auto'\n   */\n  @Input()\n  width: string | number | 'auto' = 'auto';\n\n  @Input()\n  fixed: 'start' | 'end' | undefined;\n\n  @Input()\n  allowSorting = false;\n\n  @Input()\n  allowResizing = false;\n\n  /**\n   * When true, shows the cell content as tooltip on hover (via `axTooltip`).\n   */\n  @Input()\n  hasTitle = false;\n\n  @Input()\n  sortIndex: number | undefined = undefined;\n\n  @Input()\n  sortOrder: AXSortOrder | undefined = undefined;\n\n  abstract get renderCellTemplate(): TemplateRef<unknown>;\n  abstract get renderHeaderTemplate(): TemplateRef<unknown>;\n  abstract get renderFooterTemplate(): TemplateRef<unknown>;\n\n  abstract get loadingEnabled(): boolean;\n\n  abstract get name(): string;\n\n  get cssClass(): string | undefined {\n    return null;\n  }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n  ChangeDetectorRef,\n  Directive,\n  DOCUMENT,\n  ElementRef,\n  HostListener,\n  inject,\n  Input,\n  NgZone,\n  PLATFORM_ID,\n  Renderer2,\n} from '@angular/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n@Directive({ selector: '[ax-table-column-resizble]' })\nexport class AXDataTableColumnResizableDirective {\n  private el = inject(ElementRef);\n  private renderer = inject(Renderer2);\n  private ngZone = inject(NgZone);\n  private cdr = inject(ChangeDetectorRef);\n\n  private document = inject(DOCUMENT);\n  private platformID = inject(PLATFORM_ID);\n  @Input('ax-table-column-resizble')\n  public column: AXDataTableColumnComponent;\n  private resize$ = new Subject<MouseEvent>();\n  private startX: number;\n  private startWidth: number;\n  private onMouseMoveRawBound: (event: MouseEvent) => void;\n  private onMouseUpBound: () => void;\n\n  constructor() {\n    this.onMouseMoveRawBound = this.onMouseMoveRaw.bind(this);\n    this.onMouseUpBound = this.onMouseUp.bind(this);\n    this.resize$.pipe(debounceTime(10)).subscribe((event) => this.onMouseMove(event));\n  }\n\n  /**\n   * Handles mouse down events to initiate column resizing.\n   *\n   * @param event - The mouse down event.\n   * @returns void - No return value.\n   */\n  @HostListener('mousedown', ['$event'])\n  onMouseDown(event: MouseEvent) {\n    if (isPlatformBrowser(this.platformID)) {\n      event.stopPropagation();\n      this.ngZone.runOutsideAngular(() => {\n        this.startX = event.pageX;\n        this.startWidth = this.el?.nativeElement?.parentElement.offsetWidth;\n        this.document.addEventListener('mousemove', this.onMouseMoveRawBound);\n        this.document.addEventListener('mouseup', this.onMouseUpBound);\n      });\n      this.cdr.detach(); // Detach the change detector\n    }\n  }\n\n  /**\n   * Handles raw mouse move events and forwards them to the debounced resize stream.\n   * This method acts as a bridge between the raw DOM event and the debounced onMouseMove method.\n   *\n   * @param event - The raw mouse move event.\n   * @returns void - No return value.\n   */\n  onMouseMoveRaw(event: MouseEvent) {\n    this.resize$.next(event);\n  }\n\n  /**\n   * Handles mouse move events during column resizing.\n   *\n   * @param event - The mouse move event.\n   * @returns void - No return value.\n   */\n  onMouseMove(event: MouseEvent) {\n    const newWidth = this.startWidth + (event.pageX - this.startX);\n    this.renderer.setStyle(this.el?.nativeElement?.parentElement, 'width', `${newWidth}px`);\n    this.column.width = `${newWidth}px`;\n  }\n\n  /**\n   * Handles mouse up events to complete column resizing.\n   *\n   * @returns void - No return value.\n   */\n  onMouseUp() {\n    if (isPlatformBrowser(this.platformID)) {\n      this.document.removeEventListener('mousemove', this.onMouseMoveRawBound);\n      this.document.removeEventListener('mouseup', this.onMouseUpBound);\n      this.cdr.reattach(); // Reattach the change detector\n    }\n  }\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXFormatOptions, AXFormatService } from '@acorex/core/format';\nimport { Memoize } from '@acorex/core/memoize';\nimport { Component, Input, TemplateRef, ViewChild, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n/**\n * Component for a text column in a data table, supporting header, cell, and footer templates.\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-text-column',\n  template: `\n    <ng-template #header>{{ caption }}</ng-template>\n    <ng-template #cell let-row>\n      <div\n        [class.ax-data-table-nested-indent]=\"expandHandler\"\n        [attr.data-level]=\"expandHandler ? (row.data?.__meta__?.level || 0) : null\"\n      >\n        @if (expandHandler && (row.data?.[grid.hasChildrenField] !== false || (row.data?.children?.length ?? 0) > 0)) {\n          <div\n            (click)=\"handleExpandRow(row, $event)\"\n            class=\"ax-expand-handler\"\n            id=\"ax-expand-handler-container\"\n          >\n            @if (loadingRow() === row) {\n              <i class=\"fas fa-spinner-third animate-twSpin animate-infinite\"></i>\n            } @else {\n              @if (row.data?.__meta__?.expanded) {\n                <i [class]=\"customCollapseIcon || 'fas fa-chevron-down'\"></i>\n              } @else {\n                <i [class]=\"customExpandIcon || 'fas fa-chevron-right'\"></i>\n              }\n            }\n          </div>\n        }\n        <span class=\"ax-data-table-cell-text\">{{ getDisplayText(row.data, this.dataField) }}</span>\n      </div>\n    </ng-template>\n    <ng-template #footer></ng-template>\n  `,\n  encapsulation: ViewEncapsulation.None,\n\n  providers: [\n    {\n      provide: AXDataTableColumnComponent,\n      useExisting: AXDataTableTextColumnComponent,\n    },\n    { provide: AXComponent, useExisting: AXDataTableTextColumnComponent },\n  ],\n  inputs: ['width', 'caption', 'allowSorting', 'allowResizing', 'fixed', 'hasTitle'],\n})\nexport class AXDataTableTextColumnComponent extends AXDataTableColumnComponent {\n  protected grid = inject(AXBaseDataTable);\n  protected loadingRow = signal(null);\n\n  protected initialWidth = '';\n\n  @Input() customExpandIcon: string;\n  @Input() customCollapseIcon: string;\n\n  /**\n   * Defines the data field to display in the column.\n   */\n  @Input()\n  dataField: string;\n\n  /**\n   * Controls the display of an expandable arrow icon beside the cell text.\n   * If set to `true`, an arrow icon is shown next to the text, indicating expandability.\n   *\n   * @defaultValue false\n   *\n   */\n  @Input()\n  expandHandler = false;\n\n  /**\n   * Toggles text wrapping in the cell.\n   *\n   * @defaultValue false\n   */\n  @Input()\n  wrapText = false;\n\n  /**\n   * Provides a custom template for rendering cells within the column.\n   */\n  @Input()\n  public cellTemplate: TemplateRef<unknown>;\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('cell')\n  private _contentCellTemplate: TemplateRef<unknown>;\n\n  /**\n   * Returns the template used for rendering cells.\n   * Falls back to a default template if no custom template is provided.\n   */\n  get renderCellTemplate(): TemplateRef<unknown> {\n    return this.cellTemplate ?? this._contentCellTemplate;\n  }\n\n  /**\n   * Template used for rendering the footer of the column.\n   */\n  @Input()\n  public footerTemplate: TemplateRef<unknown>;\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('footer')\n  private _contentFooterTemplate: TemplateRef<unknown>;\n\n  /**\n   * Returns the template used for rendering the column footer,\n   * falling back to a default if not provided.\n   */\n  get renderFooterTemplate(): TemplateRef<unknown> {\n    return this.footerTemplate ?? this._contentFooterTemplate;\n  }\n\n  /**\n   * Defines the template for rendering the column header.\n   */\n  @Input()\n  public headerTemplate: TemplateRef<unknown>;\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('header')\n  private _contentHeaderTemplate: TemplateRef<unknown>;\n\n  /**\n   * Retrieves the template used for rendering the column header.\n   * Falls back to a default template if none is provided.\n   */\n  get renderHeaderTemplate(): TemplateRef<unknown> {\n    return this.headerTemplate ?? this._contentHeaderTemplate;\n  }\n\n  /**\n   * Indicates whether loading functionality is enabled.\n   */\n  get loadingEnabled(): boolean {\n    return true;\n  }\n\n  /**\n   *  @ignore\n   */\n  protected async handleExpandRow(row: any, event?: Event) {\n    event?.stopPropagation();\n    this.loadingRow.set(row);\n    await this.grid.expandRow(row);\n    this.loadingRow.set(null);\n  }\n\n  /**\n   * Generates a unique name based on the `dataField` value.\n   */\n  get name(): string {\n    return `cl-${this.dataField}`;\n  }\n\n  /**\n   * Returns the display text for a row cell. Used for cell tooltip when the column has `hasTitle`.\n   */\n  public getCellDisplayText(rowData: unknown): string {\n    if (rowData == null) return '';\n    const text = this.getDisplayText(rowData, this.dataField);\n    return text != null ? String(text) : '';\n  }\n\n  /**\n   *  @ignore\n   */\n  private formatService = inject(AXFormatService);\n\n  @Memoize()\n  protected getDisplayText(rowData: unknown, dataField: string): string {\n    const value = rowData[dataField];\n    return !this.format ? value : this.formatService.format(value, this.format as any, this.formatOptions);\n  }\n\n  /**\n   * Defines the format string for displaying values in the component.\n   */\n  @Input()\n  format: string;\n\n  /**\n   * Provides additional options for formatting values.\n   */\n  @Input()\n  formatOptions: AXFormatOptions;\n}\n","import {\n  AXButtonClickEvent,\n  AXClickEvent,\n  AXComponent,\n  AXItemClickEvent,\n  AXRippleDirective,\n  AXStyleLookType,\n} from '@acorex/cdk/common';\nimport {\n  AXButtonComponent,\n  AXButtonItemComponent,\n  AXButtonItemListComponent,\n  AXButtonItemListItem,\n} from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXTranslationModule, AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, CommonModule, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n  effect,\n  inject,\n  signal,\n} from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\nexport type AXRowCommandItem = AXButtonItemListItem & {\n  commandId?: string;\n  look?: AXStyleLookType;\n};\n\nexport interface AXRowCommandItemClickEvent extends AXButtonClickEvent {\n  setLoading?: (loading: boolean) => void;\n}\n\nexport abstract class AXBaseRowCommandColumnComponent extends AXDataTableColumnComponent {\n  protected grid = inject(AXBaseDataTable);\n  protected cdr = inject(ChangeDetectorRef);\n  protected commandLoading = signal<string | null>(null);\n  private rowIdentityMap = new WeakMap<Record<string, unknown>, string>();\n  private rowIdentitySeq = 0;\n\n  override allowSorting = false;\n\n  get loadingEnabled(): boolean {\n    return false;\n  }\n\n  override get cssClass() {\n    return 'ax-command-column';\n  }\n\n  protected resolveCommandId(rowData: unknown, commandName: string): string {\n    if (rowData && typeof rowData === 'object') {\n      const record = rowData as Record<string, unknown>;\n      const keyValue = record[this.grid.getDataSourceKey()];\n      if (typeof keyValue === 'string' || typeof keyValue === 'number') {\n        return `${keyValue}:${commandName}`;\n      }\n      let fallbackKey = this.rowIdentityMap.get(record);\n      if (!fallbackKey) {\n        fallbackKey = `row-${++this.rowIdentitySeq}`;\n        this.rowIdentityMap.set(record, fallbackKey);\n      }\n      return `${fallbackKey}:${commandName}`;\n    }\n    return `unknown:${commandName}`;\n  }\n\n  protected setCommandLoadingState(commandId: string, loading: boolean): void {\n    this.commandLoading.set(loading ? commandId : null);\n  }\n\n  onItemClick: EventEmitter<AXRowCommandItemClickEvent> = new EventEmitter<AXRowCommandItemClickEvent>();\n}\n\n/**\n * A column for displaying dropdown command buttons in a data table.\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-dropdown-command-column',\n  template: `\n    <ng-template #header></ng-template>\n    <ng-template #cell let-row>\n      @if (row.data) {\n        <div>\n          <button [axRipple]>\n            <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n            <ax-dropdown-panel\n              [adaptivityEnabled]=\"true\"\n              (onOpened)=\"handleOnOpened(row.data)\"\n              (onClosed)=\"handleOnClosed()\"\n            >\n              @if (itemsLoading()) {\n                <div panel style=\"padding: 0.875rem;\">\n                  <ax-loading></ax-loading>\n                </div>\n              } @else if (!_items.length && itemsFetched()) {\n                <div panel style=\"padding: 0.875rem;\">\n                  @if (emptyStateTemplate) {\n                    <ng-container [ngTemplateOutlet]=\"emptyStateTemplate\"></ng-container>\n                  } @else {\n                    <span class=\"ax-dropdown-command-empty-state-text\">{{ emptyStateText | translate | async }}</span>\n                  }\n                </div>\n              } @else if (_items.length) {\n                <ax-button-item-list\n                  (onItemClick)=\"handleOnItemClick($event, row.data)\"\n                  [items]=\"_items\"\n                  [closeParentOnClick]=\"false\"\n                  [lockOnLoading]=\"true\"\n                ></ax-button-item-list>\n              }\n            </ax-dropdown-panel>\n          </button>\n        </div>\n      }\n      <ng-template #loading>\n        <div panel style=\"padding: 0.875rem;\">\n          <ax-loading></ax-loading>\n        </div>\n      </ng-template>\n    </ng-template>\n    <ng-template #footer></ng-template>\n  `,\n  encapsulation: ViewEncapsulation.None,\n\n  providers: [\n    {\n      provide: AXDataTableColumnComponent,\n      useExisting: AXRowDropdownCommandColumnComponent,\n    },\n    { provide: AXComponent, useExisting: AXRowDropdownCommandColumnComponent },\n  ],\n  inputs: ['width', 'caption', 'fixed'],\n  outputs: ['onItemClick'],\n  imports: [\n    CommonModule,\n    AXRippleDirective,\n    AXDecoratorIconComponent,\n    AXDropdownPanelComponent,\n    AXButtonItemListComponent,\n    AXLoadingComponent,\n    NgTemplateOutlet,\n    AXTranslationModule,\n  ],\n})\nexport class AXRowDropdownCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n  /**\n   *  @ignore\n   */\n  @ViewChild('cell')\n  private _cellTemplate: TemplateRef<unknown>;\n\n  /**\n   * Returns the template used for rendering cell content.\n   * This method provides the cell template used in the data table column, falling back to a default template if none is provided.\n   */\n  get renderCellTemplate(): TemplateRef<unknown> {\n    return this._cellTemplate;\n  }\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('header')\n  private _contentHeaderTemplate: TemplateRef<unknown>;\n\n  /**\n   * Returns the template used for rendering the header content.\n   * This method provides the header template used in the data table column.\n   */\n\n  override get renderHeaderTemplate(): TemplateRef<unknown> {\n    return this._contentHeaderTemplate;\n  }\n\n  @Input()\n  public footerTemplate: TemplateRef<unknown>;\n\n  @Input()\n  public emptyStateTemplate?: TemplateRef<unknown>;\n\n  @Input()\n  public emptyStateText = '@acorex:dataTable.rowCommandColumn.emptyStateText';\n\n  protected itemsLoading = signal(false);\n  protected itemsFetched = signal(false);\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('footer')\n  private _contentFooterTemplate: TemplateRef<unknown>;\n\n  /**\n   * Returns the template used for rendering the footer content.\n   * This method provides the footer template used in the data table column.\n   */\n  get renderFooterTemplate(): TemplateRef<unknown> {\n    return this.footerTemplate ?? this._contentFooterTemplate;\n  }\n\n  /**\n   * Returns the name identifier for the column component.\n   */\n  get name(): string {\n    return 'cl-dd-cmd';\n  }\n\n  /**\n   *  @ignore\n   */\n  protected _items: AXRowCommandItem[] = [];\n\n  @Input()\n  items: AXRowCommandItem[] | ((rowData: unknown) => AXRowCommandItem[] | Promise<AXRowCommandItem[]>) = [];\n\n  private dropdownLoadingEffect = effect(() => {\n    this.applyLoadingState(this.commandLoading());\n  });\n\n  /**\n   *  @ignore\n   */\n  protected async handleOnOpened(rowData) {\n    this.itemsLoading.set(true);\n    this.itemsFetched.set(false);\n    try {\n      let resolvedItems: AXRowCommandItem[] = [];\n      if (Array.isArray(this.items)) {\n        resolvedItems = this.items;\n      } else typeof this.items == 'function';\n      {\n        const result = (this['items'] as any)(rowData);\n        if (Array.isArray(result)) {\n          resolvedItems = result;\n        } else if (result instanceof Promise) {\n          resolvedItems = await result;\n        }\n      }\n      this._items = this.decorateItems(rowData, resolvedItems);\n      this.applyLoadingState(this.commandLoading());\n      this.itemsFetched.set(true);\n    } finally {\n      this.itemsLoading.set(false);\n      this.cdr.detectChanges();\n    }\n  }\n\n  /**\n   *  @ignore\n   */\n  protected handleOnClosed() {\n    this._items = [];\n    this.itemsFetched.set(false);\n    this.itemsLoading.set(false);\n  }\n\n  private decorateItems(rowData: unknown, items: AXRowCommandItem[]): AXRowCommandItem[] {\n    return items.map((item) => ({\n      ...item,\n      commandId: this.resolveCommandId(rowData, item.name ?? 'command'),\n      loading: false,\n    }));\n  }\n\n  private applyLoadingState(activeCommandId: string | null) {\n    if (!this._items.length) {\n      return;\n    }\n    let hasChanges = false;\n    const updatedItems = this._items.map((item) => {\n      const nextLoading = !!activeCommandId && item.commandId === activeCommandId;\n      if (item.loading !== nextLoading) {\n        hasChanges = true;\n        return { ...item, loading: nextLoading };\n      }\n      return item;\n    });\n    if (hasChanges) {\n      this._items = updatedItems;\n      this.cdr.markForCheck();\n    }\n  }\n\n  /**\n   *  @ignore\n   */\n  protected handleOnItemClick(e: AXItemClickEvent<AXButtonItemComponent>, data: unknown) {\n    const commandName = e.name ?? 'command';\n    const commandId = this.resolveCommandId(data, commandName);\n    const itemList = e.component as AXButtonItemListComponent | undefined;\n    let pendingAutoClose: ReturnType<typeof setTimeout> | undefined = setTimeout(() => {\n      itemList?.closeParent();\n      pendingAutoClose = undefined;\n    });\n    const args: AXRowCommandItemClickEvent = {\n      component: this.grid,\n      isUserInteraction: true,\n      nativeEvent: e,\n      data,\n      name: commandName,\n      setLoading: (loading: boolean) => {\n        if (pendingAutoClose) {\n          clearTimeout(pendingAutoClose);\n          pendingAutoClose = undefined;\n        }\n        this.setCommandLoadingState(commandId, loading);\n        if (!loading) {\n          itemList?.closeParent();\n        }\n      },\n    };\n    this.onItemClick.emit(args);\n  }\n}\n\n/**\n * A column for displaying command buttons in a data table.\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-command-column',\n  template: `<ng-template #header></ng-template>\n    <ng-template #cell let-row>\n      @if (row.data) {\n        @for (command of getItemsWithIds(row.data); track command.commandId) {\n          <ax-button\n            [iconOnly]=\"command.item.iconOnly ?? true\"\n            [text]=\"command.item.text\"\n            [attr.title]=\"command.item.text | translate | async\"\n            [style.color]=\"'rgba(var(--ax-sys-color-' + (command.item.color ?? 'primary)') + '-500))'\"\n            [disabled]=\"command.item.disabled || commandLoading()\"\n            [class.ax-state-disabled]=\"command.item.disabled\"\n            [axRipple]=\"!command.item.disabled\"\n            [look]=\"command.item.look ?? 'blank'\"\n            (onClick)=\"handleOnItemClick($event, command.item, row.data)\"\n          >\n            <ax-icon [icon]=\"command.item.icon\"></ax-icon>\n            @if (commandLoading() === command.commandId) {\n              <ax-loading></ax-loading>\n            }\n          </ax-button>\n        }\n      }\n    </ng-template>\n    <ng-template #footer></ng-template> `,\n  encapsulation: ViewEncapsulation.None,\n\n  providers: [\n    {\n      provide: AXDataTableColumnComponent,\n      useExisting: AXRowCommandColumnComponent,\n    },\n  ],\n  inputs: ['width', 'caption', 'fixed'],\n  outputs: ['onItemClick'],\n  imports: [\n    AXRippleDirective,\n    AXDecoratorIconComponent,\n    AXButtonComponent,\n    AXLoadingComponent,\n    AXTranslatorPipe,\n    AsyncPipe,\n  ],\n})\nexport class AXRowCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n  /**\n   *  @ignore\n   */\n\n  @ViewChild('cell')\n  private _cellTemplate: TemplateRef<unknown>;\n\n  /**\n   * Returns the template used for rendering the cell content.\n   * Uses the specified cell template if provided; otherwise, falls back to a default template.\n   */\n  get renderCellTemplate(): TemplateRef<unknown> {\n    return this._cellTemplate;\n  }\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('header')\n  private _contentHeaderTemplate: TemplateRef<unknown>;\n\n  /**\n   * Returns the template used for rendering the header content.\n   * Overrides the base implementation to provide a specific template for the command column.\n   */\n  override get renderHeaderTemplate(): TemplateRef<unknown> {\n    return this._contentHeaderTemplate;\n  }\n\n  /**\n   * Template used for rendering the footer content of the column.\n   */\n  @Input()\n  public footerTemplate: TemplateRef<unknown>;\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('footer')\n  private _contentFooterTemplate: TemplateRef<unknown>;\n\n  /**\n   * Gets the template used for rendering the footer content of the column.\n   * Returns `footerTemplate` if provided; otherwise, returns `_contentFooterTemplate`.\n   */\n  get renderFooterTemplate(): TemplateRef<unknown> {\n    return this.footerTemplate ?? this._contentFooterTemplate;\n  }\n\n  /**\n   * Gets the unique name identifier for the command column.\n   */\n  get name(): string {\n    return 'cl-in-cmd';\n  }\n\n  /**\n   * Defines the command items to display in the column.\n   * @defaultValue []\n   */\n  @Input()\n  items: AXRowCommandItem[] | ((rowData: unknown) => AXRowCommandItem[]) = [];\n\n  /**\n   *  @ignore\n   */\n  protected getItems(rowData: unknown): AXRowCommandItem[] {\n    if (Array.isArray(this.items)) {\n      return this.items;\n    } else typeof this.items == 'function';\n    {\n      return this.items(rowData);\n    }\n    return [];\n  }\n\n  protected getItemsWithIds(rowData: unknown): Array<{ item: AXRowCommandItem; commandId: string }> {\n    return this.getItems(rowData).map((item) => ({\n      item,\n      commandId: this.getCommandId(rowData, item),\n    }));\n  }\n\n  /**\n   *  @ignore\n   */\n  protected getCommandId(rowData: unknown, item: AXRowCommandItem): string {\n    const commandName = item.name ?? 'command';\n    return this.resolveCommandId(rowData, commandName);\n  }\n\n  protected handleOnItemClick(e: AXClickEvent, item: AXRowCommandItem, data: unknown) {\n    const commandId = this.getCommandId(data, item);\n    const args: AXRowCommandItemClickEvent = {\n      component: this.grid,\n      isUserInteraction: true,\n      nativeEvent: e.nativeEvent,\n      data,\n      name: item.name ?? 'command',\n      setLoading: (loading: boolean) => {\n        this.setCommandLoadingState(commandId, loading);\n      },\n    };\n    this.onItemClick.emit(args);\n  }\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, TemplateRef, ViewChild, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n/**\n * Column component that provides checkboxes for row selection in a data table.\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-expand-column',\n  template: `\n    <ng-template #header></ng-template>\n    <ng-template #cell let-row>\n      <div\n        class=\"ax-data-table-nested-indent ax-data-table-nested-indent--compact\"\n        [attr.data-level]=\"row.data?.__meta__?.level || 0\"\n      >\n        @if (row.data?.[grid.hasChildrenField] !== false || (row.data?.children?.length ?? 0) > 0) {\n        <div (click)=\"handleExpandRow(row, $event)\" class=\"ax-expand-handler\">\n            @if (loadingRow() === row) {\n              <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n            } @else {\n              @if (row.data?.__meta__?.expanded) {\n                <i class=\"fas fa-chevron-down\"></i>\n              } @else {\n                <i class=\"fas fa-chevron-right\"></i>\n              }\n            }\n          </div>\n        }\n      </div>\n    </ng-template>\n    <ng-template #footer></ng-template>\n  `,\n  encapsulation: ViewEncapsulation.None,\n\n  providers: [\n    {\n      provide: AXDataTableColumnComponent,\n      useExisting: AXRowExpandColumnComponent,\n    },\n    { provide: AXComponent, useExisting: AXRowExpandColumnComponent },\n  ],\n  inputs: ['width', 'caption', 'fixed'],\n})\nexport class AXRowExpandColumnComponent extends AXDataTableColumnComponent {\n  protected grid = inject(AXBaseDataTable);\n\n  protected loadingRow = signal(null);\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('cell')\n  private _cellTemplate: TemplateRef<unknown>;\n\n  /**\n   * Gets the template used to render cells in the column.\n   */\n  get renderCellTemplate(): TemplateRef<unknown> {\n    return this._cellTemplate;\n  }\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('header')\n  private _contentHeaderTemplate: TemplateRef<unknown>;\n\n  /**\n   * Gets the template used to render the column header.\n   */\n  override get renderHeaderTemplate(): TemplateRef<unknown> {\n    return this._contentHeaderTemplate;\n  }\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('footer')\n  private _contentFooterTemplate: TemplateRef<unknown>;\n\n  /**\n   * Gets the template used to render the column footer.\n   */\n  get renderFooterTemplate(): TemplateRef<unknown> {\n    return this._contentFooterTemplate;\n  }\n\n  /**\n   * Gets the unique identifier for the column.\n   */\n  get name(): string {\n    return 'cl-expand';\n  }\n\n  /**\n   *  @ignore\n   */\n  protected async handleExpandRow(row: any, event?: Event) {\n    event?.stopPropagation();\n    this.loadingRow.set(row);\n    await this.grid.expandRow(row);\n    this.loadingRow.set(null);\n  }\n\n  /**\n   * Indicates whether loading is enabled for the column.\n   */\n  get loadingEnabled(): boolean {\n    return false;\n  }\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXBadgeComponent } from '@acorex/components/badge';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, Input, OnInit, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n/**\n * Component for displaying row indices in a data table column.\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-index-column',\n  template: `<ng-template #header>{{ caption }}</ng-template>\n    <ng-template #cell let-row>\n      @if (grid.getRowHighlightBadge(row.data); as badgeKey) {\n        <ax-badge\n          class=\"ax-data-table-row-highlight-badge\"\n          [color]=\"grid.getRowHighlight(row.data)?.color ?? 'success'\"\n          [text]=\"badgeKey | translate | async\"\n        />\n      } @else {\n        {{\n          row.rowIndex + 1 | format: 'number' : { zeroPadLength: this.formatCount, thousandSeparator: false } | async\n        }}\n      }\n    </ng-template>\n    <ng-template #footer></ng-template> `,\n  encapsulation: ViewEncapsulation.None,\n\n  providers: [\n    AXUnsubscriber,\n    {\n      provide: AXDataTableColumnComponent,\n      useExisting: AXRowIndexColumnComponent,\n    },\n    { provide: AXComponent, useExisting: AXRowIndexColumnComponent },\n  ],\n  inputs: ['width', 'caption', 'fixed'],\n  imports: [AsyncPipe, AXFormatPipe, AXBadgeComponent, AXTranslatorPipe],\n})\nexport class AXRowIndexColumnComponent extends AXDataTableColumnComponent implements OnInit {\n  protected grid = inject(AXBaseDataTable);\n  private unsubscriber = inject(AXUnsubscriber);\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('cell')\n  private _cellTemplate: TemplateRef<unknown>;\n\n  /**\n   * Provides the cell template for custom rendering if defined.\n   */\n  get renderCellTemplate(): TemplateRef<unknown> {\n    return this._cellTemplate;\n  }\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('header')\n  private _contentHeaderTemplate: TemplateRef<unknown>;\n\n  /**\n   * Provides the header template for custom rendering if defined.\n   */\n  override get renderHeaderTemplate(): TemplateRef<unknown> {\n    return this._contentHeaderTemplate;\n  }\n\n  /**\n   * Template used for rendering the footer content of the column.\n   */\n  @Input()\n  public footerTemplate: TemplateRef<unknown>;\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('footer')\n  private _contentFooterTemplate: TemplateRef<unknown>;\n\n  /**\n   * Returns the template used for rendering the footer of the column.\n   * This method returns the `footerTemplate` if it is provided; otherwise, it defaults to the `_contentFooterTemplate`. This allows for custom footer content while falling back to a default template if no custom template is specified.\n   */\n  get renderFooterTemplate(): TemplateRef<unknown> {\n    return this.footerTemplate ?? this._contentFooterTemplate;\n  }\n\n  /**\n   * Gets the unique identifier name for the column.\n   */\n  get name(): string {\n    return 'cl-inx';\n  }\n\n  /**\n   * Determines whether the index should be zero-padded.\n   * @defaultValue false\n   */\n  @Input()\n  padZero = false;\n\n  /**\n   *  @ignore\n   */\n  protected formatCount = 1;\n\n  /**\n   *  @ignore\n   */\n  ngOnInit() {\n    if (this.padZero) {\n      this.grid.dataSource.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n        this.formatCount = c.totalCount.toString().length;\n      });\n    }\n  }\n\n  /**\n   * Disables sorting for this column.\n   *\n   * @defaultValue false\n   */\n  override allowSorting = false;\n\n  /**\n   * Indicates whether loading is enabled for this component.\n   */\n  get loadingEnabled(): boolean {\n    return false;\n  }\n\n  /**\n   * Gets the CSS class applied to the component.\n   */\n  override get cssClass(): string | undefined {\n    return 'ax-index-column';\n  }\n}\n","import { AXComponent, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { Component, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n/**\n * Column component that provides checkboxes for row selection in a data table.\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-select-column',\n  template: `<ng-template #header let-col>\n      <ax-check-box\n        [ngModel]=\"checkAllSelected(col.rows)\"\n        [indeterminate]=\"true\"\n        (onValueChanged)=\"handleSelectAll($event, col.rows)\"\n      ></ax-check-box>\n      <!-- <input\n        class=\"ax-checkbox\"\n        type=\"checkbox\"\n        (change)=\"handleSelectAll(col.rows)\"\n        [indeterminate]=\"checkAnySelected(col.rows)\"\n        [checked]=\"checkAllSelected(col.rows)\"\n      /> -->\n    </ng-template>\n    <ng-template #cell let-row>\n      <ax-check-box\n        [disabled]=\"!row.data\"\n        (onValueChanged)=\"handleChange($event, row.data)\"\n        [ngModel]=\"isSelected(row.data)\"\n      ></ax-check-box>\n      <!-- <input class=\"ax-checkbox\" type=\"checkbox\" [disabled]=\"!row.data\" (change)=\"handleChange(row.data)\" [checked]=\"isSelected(row.data)\" /> -->\n    </ng-template>\n    <ng-template #footer></ng-template> `,\n  encapsulation: ViewEncapsulation.None,\n\n  providers: [\n    {\n      provide: AXDataTableColumnComponent,\n      useExisting: AXRowSelectColumnComponent,\n    },\n    { provide: AXComponent, useExisting: AXRowSelectColumnComponent },\n  ],\n  imports: [FormsModule, AXCheckBoxModule],\n  inputs: ['width', 'caption', 'fixed'],\n})\nexport class AXRowSelectColumnComponent extends AXDataTableColumnComponent {\n  private grid = inject(AXBaseDataTable);\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('cell')\n  private _cellTemplate: TemplateRef<unknown>;\n\n  /**\n   * Gets the template used to render cells in the column.\n   */\n  get renderCellTemplate(): TemplateRef<unknown> {\n    return this._cellTemplate;\n  }\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('header')\n  private _contentHeaderTemplate: TemplateRef<unknown>;\n\n  /**\n   * Gets the template used to render the column header.\n   */\n  override get renderHeaderTemplate(): TemplateRef<unknown> {\n    return this._contentHeaderTemplate;\n  }\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('footer')\n  private _contentFooterTemplate: TemplateRef<unknown>;\n\n  /**\n   * Gets the template used to render the column footer.\n   */\n  get renderFooterTemplate(): TemplateRef<unknown> {\n    return this._contentFooterTemplate;\n  }\n\n  /**\n   * Gets the unique identifier for the column.\n   */\n  get name(): string {\n    return 'cl-select';\n  }\n\n  /**\n   *  @ignore\n   */\n  private getDataSourceKey() {\n    return this.grid.dataSource.config.key || 'id';\n  }\n\n  /**\n   *  @ignore\n   */\n  protected isSelected(item: unknown) {\n    const key = this.getDataSourceKey();\n    const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n    return item != null && selectedRowKeys.includes(typeof item === 'object' ? item[key] : item);\n  }\n\n  /**\n   *  @ignore\n   */\n  protected checkAllSelected(rows) {\n    const key = this.getDataSourceKey();\n    const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n\n    if (!rows || !rows.length || !selectedRowKeys.length) {\n      return false;\n    }\n\n    const allSelected = rows.every((element) =>\n      selectedRowKeys.includes(typeof element === 'object' ? element[key] : element),\n    );\n\n    const anySelected = rows.some((element) =>\n      selectedRowKeys.includes(typeof element === 'object' ? element[key] : element),\n    );\n\n    if (allSelected) {\n      return true;\n    }\n    if (anySelected) {\n      return null;\n    }\n    return false;\n  }\n\n  /**\n   *  @ignore\n   */\n  protected handleChange(e: AXValueChangedEvent, item: unknown) {\n    if (e.isUserInteraction) {\n      if (this.isSelected(item)) {\n        this.grid.unSelectRows(item);\n      } else {\n        this.grid.selectRows(item);\n      }\n    }\n  }\n\n  /**\n   *  @ignore\n   */\n  protected handleSelectAll(e: AXValueChangedEvent, rows: any) {\n    if (e.isUserInteraction) {\n      if (this.checkAllSelected(rows)) {\n        this.grid.unSelectRows(...rows);\n      } else {\n        this.grid.selectRows(...rows);\n      }\n    }\n  }\n\n  /**\n   * Indicates whether loading is enabled for the column.\n   */\n  get loadingEnabled(): boolean {\n    return false;\n  }\n\n  /**\n   * Gets the CSS class applied to the component.\n   */\n  override get cssClass(): string | undefined {\n    return 'ax-select-column';\n  }\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport {\n  AXDataPagerChangedEvent,\n  AXDataPagerComponent,\n  AXDataPagerInfoComponent,\n  AXDataPagerInputSelectorComponent,\n  AXDataPagerNextButtonsComponent,\n  AXDataPagerNumericSelectorComponent,\n  AXDataPagerPageSizesComponent,\n  AXDataPagerPrevButtonsComponent,\n} from '@acorex/components/data-pager';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXHtmlUtil, AXUnsubscriber } from '@acorex/core/utils';\nimport { CdkDrag, CdkDragDrop, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgClass, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  ContentChild,\n  ContentChildren,\n  DOCUMENT,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnInit,\n  Output,\n  PLATFORM_ID,\n  QueryList,\n  Signal,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n  WritableSignal,\n  computed,\n  effect,\n  inject,\n  input,\n  signal,\n  untracked,\n} from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport {\n  AXBaseDataTable,\n  AXColumnsOrderChangedEvent,\n  AXDataTableAutoFitAllColumnsOptions,\n  AXDataTableAutoFitColumnOptions,\n  AXDataTableLook,\n  AXDataTableRowClick,\n  AXDataTableRowDbClick,\n  onColumnSizeChangedEvent,\n} from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from '../columns/data-table-column';\nimport { AXDataTableTextColumnComponent } from '../columns/data-text-column.component';\n\n/**\n * Component for displaying and managing a data table with advanced features.\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-data-table',\n  templateUrl: './data-table.component.html',\n  styleUrls: ['./data-table.component.css'],\n\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    ngSkipHydration: 'true',\n    '[class.ax-data-table-look-minimal]': 'look() === \"minimal\"',\n    '[class.ax-data-table--tree-fill]': 'hasTreeFillColumn()',\n  },\n  inputs: [\n    'dataSource',\n    'selectedRows',\n    'parentField',\n    'hasChildrenField',\n    'rowDetailsTemplate',\n    'rowCssClass',\n    'cellCssClass',\n    'highlightText',\n  ],\n  outputs: ['selectedRowsChange'],\n  providers: [\n    { provide: AXBaseDataTable, useExisting: AXDataTableComponent },\n    AXUnsubscriber,\n    { provide: AXComponent, useExisting: AXDataTableComponent },\n  ],\n  imports: [\n    NgTemplateOutlet,\n    NgClass,\n    CdkDropList,\n    CdkScrollable,\n    CdkDrag,\n    AXDecoratorIconComponent,\n    AXSkeletonComponent,\n    AXDataPagerComponent,\n    AXDecoratorGenericComponent,\n    AXDataPagerNumericSelectorComponent,\n    AXDataPagerPageSizesComponent,\n    AXDataPagerPrevButtonsComponent,\n    AXDataPagerInputSelectorComponent,\n    AXDataPagerNextButtonsComponent,\n    AXDataPagerInfoComponent,\n    AXButtonComponent,\n    AsyncPipe,\n    AXTranslatorPipe,\n    AXTooltipDirective,\n  ],\n})\nexport class AXDataTableComponent extends AXBaseDataTable implements OnInit, AfterViewInit {\n  /**\n   * Controls the table look.\n   *\n   * - `classic` — classic look (default).\n   * - `minimal` — minimal look.\n   *\n   * @defaultValue `'classic'`\n   */\n  look = input<AXDataTableLook>('classic');\n\n  private _unsubscriber = inject(AXUnsubscriber);\n  private _zone = inject(NgZone);\n  private document = inject(DOCUMENT);\n  private platformID = inject(PLATFORM_ID);\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('dataPager') dataPager;\n  /**\n   *  @ignore\n   */\n  @ContentChild(AXDataPagerComponent, {\n    static: true,\n  })\n  customDataPager: AXDataPagerComponent;\n\n  /**\n   *  @ignore\n   */\n  protected rtl!: boolean;\n\n  /**\n   *  @ignore\n   */\n  protected displayedRows: WritableSignal<any[]> = signal([]);\n\n  /**\n   *  @ignore\n   */\n  protected page: WritableSignal<number> = signal(0);\n\n  /**\n   *  @ignore\n   */\n  protected pageSize: WritableSignal<number> = signal(0);\n\n  /**\n   *  @ignore\n   */\n  protected isLoading: WritableSignal<boolean> = signal(true);\n\n  /**\n   *  @ignore\n   */\n  protected columnsList: WritableSignal<any[]> = signal([]);\n\n  /**\n   *  @ignore\n   */\n  protected endFixedColumnsList: Signal<any[]> = computed(() => this.columnsList().filter((c) => c.fixed === 'end'));\n\n  /**\n   *  @ignore\n   */\n  protected startFixedColumnsList: Signal<any[]> = computed(() =>\n    this.columnsList().filter((c) => c.fixed === 'start'),\n  );\n\n  /**\n   *  @ignore\n   */\n  protected normalColumnsList: Signal<any[]> = computed(() =>\n    this.columnsList().filter((c) => c.fixed !== 'end' && c.fixed !== 'start'),\n  );\n\n  /**\n   * True when a text column owns the tree expander. That column stays `width: auto`\n   * so leftover table space is used for nested indent instead of the empty spacer.\n   */\n  protected hasTreeFillColumn: Signal<boolean> = computed(() =>\n    this.columnsList().some((column) => this.isTreeFillColumn(column)),\n  );\n\n  /**\n   *  @ignore\n   */\n  protected resizeColumnProp = { startX: 0, startWidth: 0, columnIndex: 0, newColumnWidth: 0, thElement: null };\n\n  /**\n   * Columns that used `width=\"auto\"` and received header-only sizing before rows were available.\n   * They get a full content measurement once data is present.\n   * @ignore\n   */\n  private pendingContentAutoFitColumns = new WeakSet<AXDataTableColumnComponent>();\n\n  /**\n   * Columns that were configured with `width=\"auto\"` (intent), even if we later set a pixel width.\n   * Used to re-measure on every page/data change.\n   * @ignore\n   */\n  private autoFitIntentColumns = new WeakSet<AXDataTableColumnComponent>();\n\n  /**\n   * Columns the user manually resized by dragging. Auto-fit should not override user choice.\n   * @ignore\n   */\n  private userResizedColumns = new WeakSet<AXDataTableColumnComponent>();\n\n  /**\n   *  @ignore\n   */\n  protected hasItems = false;\n\n  /**\n   *  @ignore\n   */\n  protected totalRows = 0;\n\n  /**\n   *  @ignore\n   */\n  protected currentPage = 0;\n\n  /**\n   *  @ignore\n   */\n  protected totalPages = 0;\n\n  /**\n   *  @ignore\n   */\n  protected startRowIndex = 0;\n\n  /**\n   * Template for custom row content.\n   */\n  @Input()\n  rowTemplate?: TemplateRef<unknown>;\n\n  /**\n   * Template to display when the table is empty.\n   */\n  @Input()\n  emptyTemplate?: TemplateRef<unknown>;\n\n  /**\n   * Template to display when no data is loaded yet.\n   */\n  @Input()\n  noDataTemplate?: TemplateRef<unknown>;\n\n  /**\n   * Defines if alternative row styling should be applied.\n   *\n   * @defaultValue `true`\n   */\n  @Input()\n  alternative = true;\n\n  /**\n   * Indicates if the table header should be displayed.\n   *\n   * @defaultValue `true`\n   */\n  @Input()\n  showHeader = true;\n\n  /**\n   * Indicates if the table header should be fixed.\n   *\n   * @defaultValue `true`\n   */\n  @Input()\n  fixedHeader = true;\n\n  /**\n   * Indicates if the table footer should be displayed.\n   *\n   * @defaultValue `false`\n   */\n  @Input()\n  showFooter = false;\n\n  /**\n   * Indicates if the table footer should be fixed.\n   *\n   * @defaultValue `true`\n   */\n  @Input()\n  fixedFooter = true;\n\n  /**\n   * Specifies the height of each item in the table.\n   *\n   * @defaultValue `40`\n   */\n  @Input()\n  itemHeight: number | 'auto' = 40;\n\n  /**\n   * Enables or disables row reordering.\n   *\n   * @defaultValue `false`\n   */\n  @Input()\n  allowReordering = false;\n\n  /**\n   * Enables or disables paging.\n   *\n   * @defaultValue `true`\n   */\n  @Input()\n  paging = true;\n\n  /**\n   * Specifies how data should be fetched.\n   *\n   * @defaultValue `'auto'`\n   */\n  @Input()\n  fetchDataMode: 'auto' | 'manual' = 'auto';\n\n  /**\n   * Configuration for loading state.\n   *\n   * @defaultValue `{ enabled: true, animation: true }`\n   */\n  @Input()\n  loading: { enabled: boolean; animation: boolean; loadingTemplate?: TemplateRef<unknown> } = {\n    enabled: true,\n    animation: true,\n  };\n\n  /**\n   *  @ignore\n   */\n  private _focusedRow: unknown;\n\n  /**\n   * Gets the currently focused row.\n   */\n  @Input()\n  public get focusedRow(): unknown {\n    return this._focusedRow;\n  }\n\n  /**\n   * Sets the currently focused row and emits the change event.\n   *\n   * @param v - The row to be focused.\n   */\n  public set focusedRow(v: unknown) {\n    this._focusedRow = v;\n    this.focusedRowChange.emit(v);\n  }\n\n  /**\n   * Emits when the focused row changes.\n   *\n   * @event\n   */\n  @Output()\n  focusedRowChange: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n  /**\n   * Emits when a row is clicked.\n   *\n   * @event onRowClick\n   */\n  @Output()\n  onRowClick: EventEmitter<AXDataTableRowClick> = new EventEmitter<AXDataTableRowClick>();\n\n  /**\n   * Emits when a row is double-clicked.\n   *\n   * @event onRowDbClick\n   */\n  @Output()\n  onRowDbClick: EventEmitter<AXDataTableRowDbClick> = new EventEmitter<AXDataTableRowDbClick>();\n\n  /**\n   * Emits when the order of columns changes.\n   *\n   * @event onColumnsOrderChanged\n   */\n  @Output()\n  onColumnsOrderChanged: EventEmitter<AXColumnsOrderChangedEvent> = new EventEmitter<AXColumnsOrderChangedEvent>();\n\n  /**\n   * Emits when the size of columns changes.\n   *\n   * @event onColumnSizeChanged\n   */\n  @Output()\n  onColumnSizeChanged: EventEmitter<onColumnSizeChangedEvent> = new EventEmitter<onColumnSizeChangedEvent>();\n\n  /**\n   * Emits when page changes.\n   *\n   * @event onColumnSizeChanged\n   */\n  @Output()\n  onPageChanged: EventEmitter<AXDataPagerChangedEvent> = new EventEmitter<AXDataPagerChangedEvent>();\n\n  /**\n   *  @ignore\n   */\n  private clickSubject = new Subject<{ event: MouseEvent; item: any }>();\n\n  /**\n   *  @ignore\n   */\n  private isRefreshCalled = signal(false);\n\n  /**\n   * Returns true if in manual mode and no data has been loaded yet.\n   */\n  public get showNoDataLoadedYet(): boolean {\n    return this.fetchDataMode === 'manual' && !this.isRefreshCalled();\n  }\n\n  /**\n   * Root rows from the latest data source load (before highlight merge).\n   * @ignore\n   */\n  private lastLoadedRows: unknown[] = [];\n\n  /**\n   *  @ignore\n   */\n  @ContentChildren(AXDataTableColumnComponent)\n  protected columns: QueryList<AXDataTableColumnComponent>;\n\n  /**\n   *  @ignore\n   */\n  override ngOnInit() {\n    super.ngOnInit();\n    if (this.customDataPager) {\n      this.applyDataPagerMethods();\n    }\n    this.rtl = AXHtmlUtil.isRtl(this.getHostElement());\n\n    this.dataSource.onLoadingChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n      this.isLoading.set(data);\n    });\n    this.isLoading.set(this.dataSource.isLoading);\n\n    this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n      const shouldMoveToPreviousPage = data.totalCount > 0 && data.items.length === 0 && data.page > 0;\n      if (shouldMoveToPreviousPage) {\n        this.goToPage(data.page);\n        return;\n      }\n\n      this.applyLoadedRows(data.items, data.totalCount);\n    });\n\n    this.dataSource.onItemExpanded.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n      const { expandedItem, children } = data;\n      // If children is null, it means we only want to toggle row details without managing children\n      if (children === null) {\n        this.displayedRows.update((prev) => this.toggleExpandedState(prev, expandedItem));\n      } else {\n        this.displayedRows.update((prev) => this.toggleExpanded(prev, expandedItem, children));\n      }\n    });\n\n    this.dataSource.onItemRefreshChildren.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n      const { id } = data;\n      this.refreshExpandedItem(id);\n    });\n\n    this.pageSize.set(this.dataSource.pageSize);\n\n    const existingItems = (this.dataSource.items ?? []).filter((item) => item != null);\n    if (existingItems.length > 0) {\n      // Popup/lookup remounts this table; setPage(0) is a no-op on a warm source and\n      // would leave the default skeleton rows in place. Paint cached rows instead of refetching.\n      this.applyLoadedRows(existingItems, this.dataSource.totalCount || existingItems.length);\n      this.isLoading.set(false);\n    } else {\n      this.dataSource.useCache = false;\n      if (this.fetchDataMode == 'auto') {\n        this.dataSource.setPage(0);\n      }\n      this.displayedRows.set(new Array(this.dataSource.pageSize));\n      this.totalRows = this.dataSource.items.length;\n    }\n\n    //\n    this.clickSubject\n      .pipe(\n        buffer(this.clickSubject.pipe(debounceTime(250))),\n        filter((clickArray) => clickArray.length === 2),\n      )\n      .subscribe((clickArray) => {\n        this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n      });\n  }\n\n  private applyLoadedRows(items: unknown[], totalCount: number) {\n    this.clearResolvedCssClasses();\n    this.lastLoadedRows = items.filter((item) => item != null && !(item as Record<string, unknown>)[this.parentField]);\n    this.displayedRows.set(this.mergeRowsWithHighlights(this.lastLoadedRows));\n    this.totalRows = totalCount;\n    this.hasItems = totalCount > 0;\n    this.scheduleTextHighlight();\n  }\n\n  /**\n   *  @ignore\n   */\n  ngAfterViewInit(): void {\n    this.calculateStickyColumnsPositions();\n    this.columnsList.set(this.columns.toArray());\n    this.columns.changes.pipe(this._unsubscriber.takeUntilDestroy).subscribe((cols) => {\n      this.columnsList.set(cols.toArray());\n      this.captureAutoFitIntentColumns();\n      setTimeout(() => this.autoFitColumnsWithAutoWidth({ headerOnly: true }), 0);\n    });\n\n    // Header-only auto-fit for width='auto' so columns do not collapse before data loads\n    this.captureAutoFitIntentColumns();\n    setTimeout(() => this.autoFitColumnsWithAutoWidth({ headerOnly: true }), 0);\n\n    // Full auto-fit for width='auto' (and pending header-only columns) after data load\n\n    this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n      if (data.items.length > 0) {\n        // Delay to ensure DOM is ready\n        setTimeout(() => {\n          this.autoFitColumnsWithAutoWidth();\n          this.scheduleTextHighlight();\n        }, 100);\n      }\n    });\n\n    this.scheduleTextHighlight();\n  }\n\n  private captureAutoFitIntentColumns(): void {\n    this.columns.forEach((column) => {\n      if (column.width === 'auto') {\n        this.autoFitIntentColumns.add(column);\n      }\n    });\n  }\n\n  /**\n   * Tree expand columns must keep `width: auto` so nested indent can use leftover table space.\n   */\n  private isTreeFillColumn(column: AXDataTableColumnComponent): boolean {\n    return column instanceof AXDataTableTextColumnComponent && column.expandHandler === true;\n  }\n\n  /**\n   * Returns the display text for a cell. Used for the cell tooltip when the column has `hasTitle`.\n   */\n  protected getCellTooltipText(column: AXDataTableColumnComponent, rowData: unknown): string {\n    if (rowData == null || typeof rowData !== 'object') return '';\n    if (column instanceof AXDataTableTextColumnComponent) {\n      return column.getCellDisplayText(rowData);\n    }\n    const col = column as { dataField?: string };\n    if (col.dataField != null && col.dataField in (rowData as object)) {\n      const v = (rowData as Record<string, unknown>)[col.dataField];\n      return v != null ? String(v) : '';\n    }\n    return '';\n  }\n\n  /**\n   *  @ignore\n   */\n  #effect = effect(() => {\n    if (this.customDataPager) {\n      this.customDataPager.total = this.dataSource.totalCount;\n      this.customDataPager.size = this.dataSource.pageSize;\n      this.customDataPager.isLoading = this.isLoading();\n    }\n  });\n\n  /**\n   * Toggles the expanded state of a row without managing children.\n   * Used for row details template without nested hierarchy.\n   *\n   * @param rows - The array of rows to search in\n   * @param expandedItem - The item to toggle\n   * @returns Updated rows array with toggled state\n   */\n  protected toggleExpandedState(rows: any[], expandedItem: any): any[] {\n    return rows.map((item) => {\n      if (expandedItem[this.getDataSourceKey()] === item[this.getDataSourceKey()]) {\n        const isExpanded = !item?.__meta__?.expanded;\n        return {\n          ...item,\n          __meta__: { expanded: isExpanded, level: expandedItem?.__meta__?.level ?? 0 },\n        };\n      }\n      return item;\n    });\n  }\n\n  protected toggleExpanded(rows: any[], expandedItem: any, children: any[]): any[] {\n    return rows.map((item) => {\n      children.forEach((c) => {\n        if (!c.__meta__) {\n          c.__meta__ = { level: (expandedItem?.__meta__?.level ?? 0) + 1 };\n        }\n      });\n\n      if (expandedItem[this.getDataSourceKey()] === item[this.getDataSourceKey()]) {\n        const isExpanded = !item?.__meta__?.expanded;\n        const nextChildren = children ? this.toggleExpanded(children, expandedItem, item.children || []) : null;\n        return {\n          ...item,\n          __meta__: { expanded: isExpanded, level: expandedItem?.__meta__?.level ?? 0 },\n          children: nextChildren,\n          [this.hasChildrenField]: nextChildren != null && nextChildren.length > 0,\n        };\n      } else if (item.children) {\n        return { ...item, children: this.toggleExpanded(item.children, expandedItem, children) };\n      }\n      return item;\n    });\n  }\n  protected async refreshExpandedItem(id: string | number) {\n    const newChildren = await this.dataSource.getItemsByFilter({\n      field: this.parentField,\n      operator: { type: 'equal' },\n      value: id,\n    });\n\n    this.displayedRows.update((prev) => this.updateChildren(prev, id, newChildren.items));\n  }\n\n  private updateChildren(items: any[], id: string | number, newChildren: any[]): any[] {\n    return items.map((item) => {\n      if (item[this.getDataSourceKey()] === id) {\n        newChildren.forEach((child) => {\n          child.__meta__ = { ...child.__meta__, level: (item.__meta__?.level || 0) + 1 };\n        });\n        return {\n          ...item,\n          children: cloneDeep(newChildren),\n          [this.hasChildrenField]: newChildren.length > 0,\n        };\n      } else if (item.children) {\n        return { ...item, children: this.updateChildren(item.children, id, newChildren) };\n      }\n      return item;\n    });\n  }\n\n  /**\n   *  @ignore\n   */\n  protected drop(event: CdkDragDrop<any, any, any>) {\n    const clonedColumns = [...this.columnsList()];\n    moveItemInArray(clonedColumns, event.previousIndex, event.currentIndex);\n    this.columnsList.set(clonedColumns);\n\n    this.onColumnsOrderChanged.emit({ component: this, data: { event }, isUserInteraction: true });\n  }\n\n  /**\n   *  @ignore\n   */\n  protected handleRowClick(event: MouseEvent, item: unknown) {\n    this.handleRowSingleClick(event, item);\n    this.clickSubject.next({ event, item });\n  }\n\n  /**\n   *  @ignore\n   */\n  private handleRowSingleClick(event: Event, item: any): void {\n    if (this.focusedRow == item) {\n      this.focusedRow = null;\n    } else {\n      this.focusedRow = item;\n    }\n    //\n    this.onRowClick.emit({ component: this, data: item, isUserInteraction: true });\n  }\n\n  /**\n   *  @ignore\n   */\n  protected handleChangePage(event: AXDataPagerChangedEvent) {\n    this.onPageChanged.emit(event);\n    if (event.isUserInteraction) {\n      const pageChanged = event.page - 1 != this.page();\n      const pageSizeChanged = event.take != this.pageSize();\n\n      if (pageChanged || pageSizeChanged) {\n        if (pageChanged) {\n          this.page.set(event.page - 1);\n          this.dataSource.setPage(this.page());\n        }\n\n        if (pageSizeChanged) {\n          this.pageSize.set(event.take);\n          this.dataSource.setPageSize(this.pageSize());\n        }\n\n        // Update displayed rows and data source\n        this.displayedRows.set(new Array(this.pageSize()));\n      }\n    }\n  }\n\n  private goToPage(pageIndex: number): void {\n    const pagerPage = Math.max(1, pageIndex);\n    if (this.customDataPager) {\n      this.customDataPager.goToPage(pagerPage);\n      return;\n    }\n    if (this.dataPager) {\n      this.dataPager.goToPage(pagerPage);\n      return;\n    }\n    this.page.set(pagerPage - 1);\n    this.dataSource.setPage(this.page());\n  }\n\n  /**\n   *  @ignore\n   */\n  protected handleRowDoubleClick(e: MouseEvent, item: unknown) {\n    this.focusedRow = item;\n    //\n    this.onRowDbClick.emit({ component: this, data: item, isUserInteraction: true });\n  }\n\n  /**\n   *  @ignore\n   */\n  private applyDataPagerMethods() {\n    this.customDataPager.onChanged\n      .pipe(this._unsubscriber.takeUntilDestroy)\n      .subscribe((event: AXDataPagerChangedEvent) => this.handleChangePage(event));\n    this.customDataPager.displayMode = 'custom';\n  }\n\n  /**\n   * Handles the click event on a column header.\n   * Toggles the sorting direction or removes the sort if already sorted.\n   *\n   * @param e - The mouse event triggered by the click.\n   * @param column - The column that was clicked.\n   * @ignore\n   */\n  protected handleColumnClick(e: MouseEvent, column: AXDataTableColumnComponent) {\n    if (column instanceof AXDataTableTextColumnComponent) {\n      const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n      if (!sort) {\n        this.dataSource.query.sort.push({ field: column.dataField, dir: 'asc' });\n      } else {\n        if (sort.dir == 'asc') {\n          sort.dir = 'desc';\n        } else {\n          this.dataSource.query.sort = this.dataSource.query.sort.filter((c) => c != sort);\n        }\n      }\n      this.refresh();\n    }\n  }\n\n  /**\n   *  @ignore\n   */\n  protected getSort(column: AXDataTableColumnComponent): string | undefined {\n    if (column instanceof AXDataTableTextColumnComponent) {\n      const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n      return sort ? (sort.dir == 'asc' ? 'ax-icon-arrow-long-down' : 'ax-icon-arrow-long-up') : undefined;\n    }\n    return undefined;\n  }\n\n  /**\n   * Re-applies pinned highlighted rows to the current view.\n   * @ignore\n   */\n  protected override onRowHighlightsChanged(): void {\n    this.displayedRows.set(this.mergeRowsWithHighlights(this.lastLoadedRows));\n  }\n\n  protected override onCssClassResolved(): void {\n    this.displayedRows.update((rows) => [...rows]);\n    super.onCssClassResolved();\n  }\n\n  /**\n   * Refreshes the data table with optional reset options.\n   *\n   * @param options - Configuration options for refresh operation.\n   * @param options.reset - Whether to reset pagination state.\n   * @returns void - No return value.\n   */\n  refresh(options: { reset?: boolean; preserveHighlights?: boolean } = { reset: true }) {\n    if (!options.preserveHighlights) {\n      this.clearRowHighlights();\n    }\n    this.clearResolvedCssClasses();\n    this.dataSource.refresh(options);\n    const isRefreshCalled = untracked(() => this.isRefreshCalled());\n    if (this.fetchDataMode === 'manual' && !isRefreshCalled) {\n      this.isRefreshCalled.set(true);\n    }\n    if (this.dataPager && options.reset) {\n      this.dataPager.goFirstPage();\n    }\n  }\n\n  /**\n   *  @ignore\n   */\n  protected calculateRowIndex(index: number) {\n    const highlightOffset = this.countHighlightBadgeRowsBefore(index);\n    return this.dataSource.pageSize * this.page() + index - highlightOffset;\n  }\n\n  private countHighlightBadgeRowsBefore(displayIndex: number): number {\n    let count = 0;\n    const rows = this.displayedRows();\n\n    for (let i = 0; i < displayIndex && i < rows.length; i++) {\n      if (this.getRowHighlightBadge(rows[i])) {\n        count++;\n      }\n    }\n\n    return count;\n  }\n\n  /**\n   * Handles double-click on resize handle to auto-fit column width.\n   *\n   * @param event - The mouse event from the double-click\n   * @param columnIndex - The index of the column to auto-fit\n   * @ignore\n   */\n  protected onResizeHandlerDoubleClick(event: MouseEvent, columnIndex: number): void {\n    event.preventDefault();\n    event.stopPropagation();\n    this.autoFitColumn(columnIndex);\n  }\n\n  /**\n   *  @ignore\n   */\n  protected onResizeColumnStart(event: MouseEvent, columnIndex: number): void {\n    this.onColumnSizeChanged.emit({\n      type: 'start',\n      data: {\n        columnIndex: columnIndex,\n        width: this.columns.get(columnIndex).width,\n        dataField: this.columns.get(columnIndex).name,\n      },\n      isUserInteraction: true,\n      component: this,\n    });\n\n    event.preventDefault();\n    event.stopPropagation();\n\n    this.resizeColumnProp.startX = event.pageX;\n    this.resizeColumnProp.thElement = (event.target as HTMLElement).parentElement;\n    this.resizeColumnProp.startWidth = parseInt(this.resizeColumnProp.thElement.style.width);\n    this.resizeColumnProp.columnIndex = columnIndex;\n    if (isPlatformBrowser(this.platformID)) {\n      this._zone.runOutsideAngular(() => {\n        this.document.addEventListener('mousemove', this.onResizeColumnMove);\n        this.document.addEventListener('mouseup', this.onResizeColumnEnd);\n      });\n    }\n  }\n\n  /**\n   *  @ignore\n   */\n  private onResizeColumnMove = (event: MouseEvent): void => {\n    const diffX = event.pageX - this.resizeColumnProp.startX;\n    const newWidth = this.rtl ? this.resizeColumnProp.startWidth - diffX : this.resizeColumnProp.startWidth + diffX;\n    this.resizeColumnProp.thElement.style.width = `${Math.max(100, newWidth)}px`;\n    this.resizeColumnProp.thElement.setAttribute('new-width', `${newWidth}`);\n  };\n\n  /**\n   *  @ignore\n   */\n  private onResizeColumnEnd = (): void => {\n    if (isPlatformBrowser(this.platformID)) {\n      this.document.removeEventListener('mousemove', this.onResizeColumnMove);\n      this.document.removeEventListener('mouseup', this.onResizeColumnEnd);\n    }\n    const newWidth = parseInt(this.resizeColumnProp.thElement.attributes.getNamedItem('new-width')?.value);\n    const column = this.columns.get(this.resizeColumnProp.columnIndex);\n    column.width = `${Math.max(100, newWidth)}px`;\n    this.userResizedColumns.add(column);\n    this.pendingContentAutoFitColumns.delete(column);\n\n    this.onColumnSizeChanged.emit({\n      type: 'end',\n      data: {\n        columnIndex: this.resizeColumnProp.columnIndex,\n        width: this.columns.get(this.resizeColumnProp.columnIndex).width,\n        dataField: this.columns.get(this.resizeColumnProp.columnIndex).name,\n      },\n      isUserInteraction: true,\n      component: this,\n    });\n\n    this.resetResizingProcess();\n  };\n\n  /**\n   *  @ignore\n   */\n  private resetResizingProcess() {\n    this.resizeColumnProp.thElement.removeAttribute('new-width');\n    this.resizeColumnProp = { startX: 0, startWidth: 0, columnIndex: 0, newColumnWidth: 0, thElement: null };\n  }\n\n  /**\n   *  @ignore\n   */\n  private calculateStickyColumnsPositions() {\n    let accumulatedWidthFromStart = 0;\n    let lastStartColumn: AXDataTableColumnComponent;\n\n    this.columns.forEach((column) => {\n      const width = parseInt(column.width as string);\n\n      if (column.fixed === 'start' && !isNaN(width)) {\n        column['stickyStart'] = accumulatedWidthFromStart + 'px';\n        lastStartColumn = column;\n      }\n\n      if (!isNaN(width)) {\n        accumulatedWidthFromStart += width;\n      }\n    });\n    if (lastStartColumn) lastStartColumn['isLastFixedColumn'] = true;\n\n    let accumulatedWidthFromEnd = 0;\n    let firstEndColumn: AXDataTableColumnComponent;\n\n    for (let i = this.columns.length - 1; i >= 0; i--) {\n      const column = this.columns.get(i);\n\n      const width = parseInt(column.width as string);\n\n      if (column.fixed === 'end' && !isNaN(width)) {\n        column['stickyEnd'] = accumulatedWidthFromEnd + 'px';\n        firstEndColumn = column;\n      }\n\n      if (!isNaN(width)) {\n        accumulatedWidthFromEnd += width;\n      }\n    }\n    if (firstEndColumn) firstEndColumn['isFirstFixedColumn'] = true;\n  }\n\n  /**\n   * Auto-fits columns that have width='auto'.\n   * Runs header-only sizing after view init (`headerOnly: true`) and full measurement after data load.\n   *\n   * @ignore\n   */\n  private autoFitColumnsWithAutoWidth(options: { headerOnly?: boolean } = {}): void {\n    const headerOnly = options.headerOnly ?? false;\n    const autoWidthColumns: number[] = [];\n\n    this.columns.forEach((column, index) => {\n      if (this.isTreeFillColumn(column)) {\n        return;\n      }\n\n      const fitsByIntent = this.autoFitIntentColumns.has(column);\n      const fitsPendingHeaderOnly = !headerOnly && this.pendingContentAutoFitColumns.has(column);\n\n      if (!fitsByIntent && !fitsPendingHeaderOnly) {\n        return;\n      }\n\n      if (this.userResizedColumns.has(column)) {\n        return;\n      }\n\n      if (fitsByIntent && headerOnly && column.width === 'auto') {\n        this.pendingContentAutoFitColumns.add(column);\n      }\n\n      autoWidthColumns.push(index);\n      try {\n        this.autoFitColumn(index, { maxWidth: 500, headerOnly });\n      } catch (error) {\n        console.error(`Failed to auto-fit column ${index}:`, error);\n      }\n    });\n  }\n\n  /**\n   * Auto-fits all resizable columns to their content width.\n   * Call this whenever row data or templates change and column widths should be recalculated.\n   */\n  public override autoFitAllColumns(options: AXDataTableAutoFitAllColumnsOptions = {}): void {\n    const { skipFixed = true, skipLoading = true, maxWidth = 500 } = options;\n\n    // Skip if loading\n    if (skipLoading && this.isLoading()) {\n      console.warn('Cannot auto-fit columns while data is loading');\n      return;\n    }\n\n    // Auto-fit each column\n    this.columns.forEach((column, index) => {\n      // Skip fixed columns if requested\n      if (skipFixed && column.fixed) {\n        return;\n      }\n\n      if (this.isTreeFillColumn(column)) {\n        return;\n      }\n\n      // Skip if column doesn't allow resizing\n      if (!column.allowResizing) {\n        return;\n      }\n\n      try {\n        this.autoFitColumn(index, { maxWidth });\n      } catch (error) {\n        console.error(`Failed to auto-fit column ${index}:`, error);\n      }\n    });\n  }\n\n  /**\n   * Auto-fits a single column to its content width.\n   * Similar to Excel's \"AutoFit Column Width\" feature.\n   *\n   * @param columnIndex - 0-based index in the columns `QueryList`.\n   */\n  public override autoFitColumn(columnIndex: number, options: AXDataTableAutoFitColumnOptions = {}): void {\n    if (!isPlatformBrowser(this.platformID)) {\n      return;\n    }\n\n    const column = this.columns.get(columnIndex);\n    if (!column) {\n      console.warn(`Column at index ${columnIndex} not found`);\n      return;\n    }\n\n    const hostElement = this.getHostElement();\n    if (!hostElement) {\n      return;\n    }\n\n    const mainTable = hostElement.querySelector('table');\n    if (!mainTable) {\n      return;\n    }\n\n    // Find actual column index in rendered table (accounting for fixed columns)\n    const allColumns = [...this.startFixedColumnsList(), ...this.normalColumnsList(), ...this.endFixedColumnsList()];\n    const actualColumnIndex = allColumns.findIndex((c) => c === column);\n\n    if (actualColumnIndex === -1) {\n      console.warn('Column not found in rendered table');\n      return;\n    }\n\n    // Create invisible helper table\n    const helperTable = this.document.createElement('table');\n    helperTable.style.position = 'absolute';\n    helperTable.style.visibility = 'hidden';\n    helperTable.style.tableLayout = 'auto';\n    helperTable.style.width = 'auto';\n    helperTable.style.top = '-9999px';\n    helperTable.style.left = '-9999px';\n\n    // Copy styles from main table\n    const mainTableStyle = this.document.defaultView?.getComputedStyle(mainTable);\n    if (mainTableStyle) {\n      helperTable.style.fontSize = mainTableStyle.fontSize;\n      helperTable.style.fontFamily = mainTableStyle.fontFamily;\n      helperTable.style.fontWeight = mainTableStyle.fontWeight;\n    }\n\n    this.document.body.appendChild(helperTable);\n\n    let maxWidth = 0;\n\n    try {\n      // Measure header cell\n      const headerRow = mainTable.querySelector('thead tr');\n      if (headerRow) {\n        const headerCells = headerRow.querySelectorAll('th');\n        if (headerCells.length > actualColumnIndex) {\n          const headerCell = headerCells[actualColumnIndex] as HTMLElement;\n\n          // Clone header cell to helper table\n          const helperThead = this.document.createElement('thead');\n          const helperTr = this.document.createElement('tr');\n          const helperTh = headerCell.cloneNode(true) as HTMLElement;\n          helperTh.style.width = 'auto';\n          helperTh.style.whiteSpace = 'nowrap';\n          helperTr.appendChild(helperTh);\n          helperThead.appendChild(helperTr);\n          helperTable.appendChild(helperThead);\n\n          // Force layout calculation\n          const headerWidth = helperTh.offsetWidth;\n          maxWidth = Math.max(maxWidth, headerWidth);\n\n          helperTable.removeChild(helperThead);\n        }\n      }\n\n      if (!(options.headerOnly ?? false)) {\n        // Measure body cells\n        const bodyRows = mainTable.querySelectorAll('tbody tr:not(.empty-row)');\n        const helperTbody = this.document.createElement('tbody');\n        helperTable.appendChild(helperTbody);\n\n        // Sample first 20 rows for performance (you can adjust this)\n        const sampleSize = Math.min(20, bodyRows.length);\n        for (let i = 0; i < sampleSize; i++) {\n          const row = bodyRows[i];\n          const cells = row.querySelectorAll('td');\n\n          if (cells.length > actualColumnIndex) {\n            const cell = cells[actualColumnIndex] as HTMLElement;\n\n            // Clone cell to helper table\n            const helperTr = this.document.createElement('tr');\n            const helperTd = cell.cloneNode(true) as HTMLElement;\n            helperTd.style.width = 'auto';\n            helperTd.style.whiteSpace = 'nowrap';\n            helperTr.appendChild(helperTd);\n            helperTbody.appendChild(helperTr);\n\n            // Force layout calculation\n            const cellWidth = helperTd.offsetWidth;\n            maxWidth = Math.max(maxWidth, cellWidth);\n\n            helperTbody.removeChild(helperTr);\n          }\n        }\n      }\n\n      // Add some padding for better UX\n      let finalWidth = Math.max(maxWidth + 40, 100); // Minimum 100px, add 40px padding\n\n      // Apply max width if specified\n      if (options.maxWidth) {\n        finalWidth = Math.min(finalWidth, options.maxWidth);\n      }\n\n      // Set column width\n      column.width = `${finalWidth}px`;\n\n      if (!(options.headerOnly ?? false)) {\n        this.pendingContentAutoFitColumns.delete(column);\n      }\n\n      // Trigger change detection to update the view\n      this.columnsList.set([...this.columnsList()]);\n\n      // Recalculate sticky positions if column is fixed\n      if (column.fixed) {\n        setTimeout(() => {\n          this.calculateStickyColumnsPositions();\n        }, 0);\n      }\n\n      // Emit column size changed event\n      this.onColumnSizeChanged.emit({\n        type: 'end',\n        data: {\n          columnIndex: columnIndex,\n          width: column.width,\n          dataField: column.name,\n        },\n        isUserInteraction: true,\n        component: this,\n      });\n    } finally {\n      // Clean up helper table\n      if (helperTable.parentNode) {\n        this.document.body.removeChild(helperTable);\n      }\n    }\n  }\n\n  /**\n   * Auto-fits a single column by its `name` / data field.\n   */\n  public override autoFitColumnByName(columnName: string, options: AXDataTableAutoFitColumnOptions = {}): void {\n    const columnIndex = this.columns.toArray().findIndex((column) => column.name === columnName);\n    if (columnIndex === -1) {\n      console.warn(`Column \"${columnName}\" not found`);\n      return;\n    }\n\n    this.autoFitColumn(columnIndex, options);\n  }\n}\n","<ng-content select=\"ax-header\"> </ng-content>\n<div class=\"ax-data-table-wrapper\">\n  <table>\n    @if (showHeader) {\n      <thead [ngClass]=\"{ 'ax-data-table-sticky-header': fixedHeader }\">\n        <tr\n          [cdkDropListDisabled]=\"!allowReordering\"\n          cdkDropList\n          cdkScrollable\n          cdkDropListOrientation=\"horizontal\"\n          (cdkDropListDropped)=\"drop($event)\"\n        >\n          @for (c of startFixedColumnsList(); track $index) {\n            <th\n              cdkDrag\n              [cdkDragDisabled]=\"true\"\n              cdkDragLockAxis=\"x\"\n              class=\"ax-data-table-head-cell sticky-start\"\n              [ngClass]=\"getColumnCssClass(c)\"\n              [class.ax-interactive]=\"c.allowSorting\"\n              (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n              [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n              [style.width]=\"c.width\"\n              [class.ax-state-is-last]=\"c['isLastFixedColumn']\"\n              [style.--sticky-start]=\"c['stickyStart']\"\n            >\n              <div class=\"ax-caption\">\n                <ng-container\n                  [ngTemplateOutlet]=\"c.renderHeaderTemplate\"\n                  [ngTemplateOutletContext]=\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n                ></ng-container>\n                @if (getSort(c)) {\n                  <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n                }\n              </div>\n            </th>\n          }\n          @for (c of normalColumnsList(); track $index) {\n            <th\n              cdkDrag\n              cdkDragLockAxis=\"x\"\n              class=\"ax-data-table-head-cell\"\n              [ngClass]=\"getColumnCssClass(c)\"\n              [class.ax-interactive]=\"c.allowSorting\"\n              (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n              [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n              [style.width]=\"c.width\"\n            >\n              <div class=\"ax-caption\">\n                <ng-container\n                  [ngTemplateOutlet]=\"c.renderHeaderTemplate\"\n                  [ngTemplateOutletContext]=\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n                ></ng-container>\n                @if (getSort(c)) {\n                  <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n                }\n              </div>\n              @if (c.allowResizing && !c.fixed) {\n                <div\n                  class=\"ax-resize-handle\"\n                  (mousedown)=\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\"\n                  (dblclick)=\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\"\n                  title=\"Double-click to auto-fit column width\"\n                ></div>\n              }\n            </th>\n          }\n          <th class=\"ax-data-table-spacer\"></th>\n          @for (c of endFixedColumnsList(); track $index) {\n            <th\n              cdkDrag\n              [cdkDragDisabled]=\"true\"\n              cdkDragLockAxis=\"x\"\n              class=\"ax-data-table-head-cell sticky-end\"\n              [ngClass]=\"getColumnCssClass(c)\"\n              [class.ax-interactive]=\"c.allowSorting\"\n              (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n              [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n              [style.width]=\"c.width\"\n              [class.ax-state-is-first]=\"c['isFirstFixedColumn']\"\n              [style.--sticky-end]=\"c['stickyEnd']\"\n            >\n              <div class=\"ax-caption\">\n                <ng-container\n                  [ngTemplateOutlet]=\"c.renderHeaderTemplate\"\n                  [ngTemplateOutletContext]=\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n                ></ng-container>\n                @if (getSort(c)) {\n                  <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n                }\n              </div>\n            </th>\n          }\n        </tr>\n      </thead>\n    }\n    <tbody [ngClass]=\"{ 'ax-data-table-row-alternative': alternative }\">\n      @if (showNoDataLoadedYet) {\n        <tr style=\"display: inherit\">\n          <td class=\"ax-data-table-empty-data\" [attr.colspan]=\"columnsList().length + 1\">\n            @if (noDataTemplate) {\n              <ng-container [ngTemplateOutlet]=\"noDataTemplate\"></ng-container>\n            } @else {\n              <span>{{ '@acorex:common.general.no-data-yet' | translate | async }}</span>\n            }\n          </td>\n        </tr>\n      } @else if (!displayedRows().length) {\n        <tr style=\"display: inherit\">\n          <td class=\"ax-data-table-empty-data\" [attr.colspan]=\"columnsList().length + 1\">\n            @if (emptyTemplate) {\n              <ng-container [ngTemplateOutlet]=\"emptyTemplate\"></ng-container>\n            } @else {\n              <span>{{ '@acorex:common.general.no-record' | translate | async }}</span>\n            }\n          </td>\n        </tr>\n      } @else {\n        @for (row of displayedRows(); let rowIndex = $index; track rowIndex) {\n          <ng-container\n            [ngTemplateOutlet]=\"rowTemp\"\n            [ngTemplateOutletContext]=\"{ data: { row, rowIndex } }\"\n          ></ng-container>\n        }\n\n        <ng-template #rowTemp let-data=\"data\">\n          @if (rowTemplate) {\n            <ng-container\n              [ngTemplateOutlet]=\"rowTemplate\"\n              [ngTemplateOutletContext]=\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\"\n            >\n            </ng-container>\n          } @else {\n            <tr\n              [class.ax-state-focused]=\"focusedRow && data.row === focusedRow\"\n              [attr.data-index]=\"data.rowIndex\"\n              [class.ax-state-selected]=\"selectedRows.includes(data.row)\"\n              [ngClass]=\"getRowCssClass(data.row, data.rowIndex)\"\n              style.height=\"{{ itemHeight }}px\"\n              style.max-height=\"{{ itemHeight }}px\"\n              (click)=\"handleRowClick($event, data.row)\"\n            >\n              @for (c of startFixedColumnsList(); track $index) {\n                <td\n                  [style.width]=\"c.width\"\n                  [class.ax-data-table-sticky-body-cell]=\"c.fixed && c.width\"\n                  [class.sticky-start]=\"true\"\n                  [class.ax-state-is-last]=\"c['isLastFixedColumn']\"\n                  [style.--sticky-start]=\"c['stickyStart']\"\n                  [attr.data-label]=\"c.caption\"\n                  tabindex=\"0\"\n                  [class]=\"getCellCssClass(data.row, c, calculateRowIndex(data.rowIndex))\"\n                >\n                  <div class=\"ax-bg\"></div>\n                  <span\n                    class=\"ax-data-table-cell-tooltip-wrapper\"\n                    [axTooltip]=\"\n                      c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\n                    \"\n                  >\n                    @if (data.row && !isLoading()) {\n                      <ng-container\n                        [ngTemplateOutlet]=\"c.renderCellTemplate\"\n                        [ngTemplateOutletContext]=\"{\n                          $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\n                        }\"\n                      ></ng-container>\n                    } @else {\n                      @if (c.loadingEnabled && loading.enabled) {\n                        @if (loading.loadingTemplate) {\n                          <ng-container [ngTemplateOutlet]=\"loading.loadingTemplate\"></ng-container>\n                        } @else {\n                          <ax-skeleton [animated]=\"loading.animation\"></ax-skeleton>\n                        }\n                      }\n                    }\n                  </span>\n                </td>\n              }\n              @for (c of normalColumnsList(); track $index) {\n                <td\n                  [style.width]=\"c.width\"\n                  [class.ax-data-table-sticky-body-cell]=\"c.fixed && c.width\"\n                  [attr.data-label]=\"c.caption\"\n                  tabindex=\"0\"\n                  [class]=\"getCellCssClass(data.row, c, calculateRowIndex(data.rowIndex))\"\n                >\n                  <div class=\"ax-bg\"></div>\n                  <span\n                    class=\"ax-data-table-cell-tooltip-wrapper\"\n                    [axTooltip]=\"\n                      c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\n                    \"\n                  >\n                    @if (data.row && !isLoading()) {\n                      <ng-container\n                        [ngTemplateOutlet]=\"c.renderCellTemplate\"\n                        [ngTemplateOutletContext]=\"{\n                          $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\n                        }\"\n                      ></ng-container>\n                    } @else {\n                      @if (c.loadingEnabled && loading.enabled) {\n                        @if (loading.loadingTemplate) {\n                          <ng-container [ngTemplateOutlet]=\"loading.loadingTemplate\"></ng-container>\n                        } @else {\n                          <ax-skeleton [animated]=\"loading.animation\"></ax-skeleton>\n                        }\n                      }\n                    }\n                  </span>\n                </td>\n              }\n              <td class=\"ax-data-table-spacer\"><div class=\"ax-bg\"></div></td>\n              @for (c of endFixedColumnsList(); track $index) {\n                <td\n                  [style.width]=\"c.width\"\n                  [class.ax-data-table-sticky-body-cell]=\"c.fixed && c.width\"\n                  [class.sticky-end]=\"true\"\n                  [class.ax-state-is-first]=\"c['isFirstFixedColumn']\"\n                  [style.--sticky-end]=\"c['stickyEnd']\"\n                  [attr.data-label]=\"c.caption\"\n                  tabindex=\"0\"\n                  [class]=\"getCellCssClass(data.row, c, calculateRowIndex(data.rowIndex))\"\n                >\n                  <div class=\"ax-bg\"></div>\n                  <span\n                    class=\"ax-data-table-cell-tooltip-wrapper\"\n                    [axTooltip]=\"\n                      c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\n                    \"\n                  >\n                    @if (data.row && !isLoading()) {\n                      <ng-container\n                        [ngTemplateOutlet]=\"c.renderCellTemplate\"\n                        [ngTemplateOutletContext]=\"{\n                          $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\n                        }\"\n                      ></ng-container>\n                    } @else {\n                      @if (c.loadingEnabled && loading.enabled) {\n                        @if (loading.loadingTemplate) {\n                          <ng-container [ngTemplateOutlet]=\"loading.loadingTemplate\"></ng-container>\n                        } @else {\n                          <ax-skeleton [animated]=\"loading.animation\"></ax-skeleton>\n                        }\n                      }\n                    }\n                  </span>\n                </td>\n              }\n            </tr>\n            @if (data.row?.__meta__?.expanded) {\n              @if (rowDetailsTemplate) {\n                <tr>\n                  @for (c of startFixedColumnsList(); track $index) {\n                    <td\n                      [style.width]=\"c.width\"\n                      [class.ax-data-table-sticky-body-cell]=\"c.fixed && c.width\"\n                      [class.sticky-start]=\"true\"\n                      [class.ax-state-is-last]=\"c['isLastFixedColumn']\"\n                      [style.--sticky-start]=\"c['stickyStart']\"\n                    >\n                      <div class=\"ax-bg\"></div>\n                    </td>\n                  }\n                  <td class=\"ax-data-table-row-details\" [attr.colspan]=\"normalColumnsList().length + 1\">\n                    <ng-container\n                      [ngTemplateOutlet]=\"rowDetailsTemplate\"\n                      [ngTemplateOutletContext]=\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\"\n                    ></ng-container>\n                  </td>\n                  @for (c of endFixedColumnsList(); track $index) {\n                    <td\n                      [style.width]=\"c.width\"\n                      [class.ax-data-table-sticky-body-cell]=\"c.fixed && c.width\"\n                      [class.sticky-end]=\"true\"\n                      [class.ax-state-is-first]=\"c['isFirstFixedColumn']\"\n                      [style.--sticky-end]=\"c['stickyEnd']\"\n                    >\n                      <div class=\"ax-bg\"></div>\n                    </td>\n                  }\n                </tr>\n              }\n              @for (childRow of data.row.children; let childRowIndex = $index; track childRowIndex) {\n                <ng-container\n                  [ngTemplateOutlet]=\"rowTemp\"\n                  [ngTemplateOutletContext]=\"{ data: { row: childRow, rowIndex: childRowIndex } }\"\n                ></ng-container>\n              }\n            }\n          }\n        </ng-template>\n\n        <tr class=\"empty-row\"></tr>\n      }\n    </tbody>\n    @if (showFooter) {\n      <tfoot [ngClass]=\"{ 'ax-data-table-sticky-footer': fixedFooter }\">\n        <tr>\n          @for (c of startFixedColumnsList(); track $index) {\n            <td\n              class=\"ax-data-table-sticky-footer-cell sticky-start\"\n              [class.ax-data-table-sticky-footer-cell]=\"c.fixed && c.width\"\n              [style.width]=\"c.width\"\n              [class.ax-state-is-last]=\"c['isLastFixedColumn']\"\n              [style.--sticky-start]=\"c['stickyStart']\"\n            >\n              <div class=\"ax-caption\">\n                <ng-container\n                  [ngTemplateOutlet]=\"c.renderFooterTemplate\"\n                  [ngTemplateOutletContext]=\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n                ></ng-container>\n                @if (getSort(c)) {\n                  <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n                }\n              </div>\n            </td>\n          }\n          @for (c of normalColumnsList(); track $index) {\n            <td\n              [class.ax-interactive]=\"c.allowSorting\"\n              (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n              [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n              [style.width]=\"c.width\"\n            >\n              <div class=\"ax-caption\">\n                <ng-container\n                  [ngTemplateOutlet]=\"c.renderFooterTemplate\"\n                  [ngTemplateOutletContext]=\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n                ></ng-container>\n                @if (getSort(c)) {\n                  <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n                }\n              </div>\n              @if (c.allowResizing && !c.fixed) {\n                <div\n                  class=\"ax-resize-handle\"\n                  (mousedown)=\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\"\n                  (dblclick)=\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\"\n                  title=\"Double-click to auto-fit column width\"\n                ></div>\n              }\n            </td>\n          }\n          <td class=\"ax-data-table-spacer\"></td>\n          @for (c of endFixedColumnsList(); track $index) {\n            <td\n              class=\"ax-data-table-sticky-footer-cell sticky-end\"\n              [class.ax-interactive]=\"c.allowSorting\"\n              (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n              [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n              [style.width]=\"c.width\"\n              [class.ax-state-is-first]=\"c['isFirstFixedColumn']\"\n              [style.--sticky-end]=\"c['stickyEnd']\"\n            >\n              <div class=\"ax-caption\">\n                <ng-container\n                  [ngTemplateOutlet]=\"c.renderFooterTemplate\"\n                  [ngTemplateOutletContext]=\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n                ></ng-container>\n                @if (getSort(c)) {\n                  <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n                }\n              </div>\n            </td>\n          }\n        </tr>\n      </tfoot>\n    }\n  </table>\n</div>\n\n@if (paging) {\n  <div class=\"ax-table-footer\" #footerContainer>\n    <ng-template #customPager>\n      <ng-content select=\"ax-data-pager\"></ng-content>\n    </ng-template>\n\n    @if (customDataPager) {\n      <ng-container [ngTemplateOutlet]=\"customPager\"></ng-container>\n    } @else {\n      <ax-data-pager\n        #dataPager\n        [displayMode]=\"'custom'\"\n        (onChanged)=\"handleChangePage($event)\"\n        [total]=\"dataSource.totalCount\"\n        [size]=\"dataSource.pageSize\"\n        [isLoading]=\"isLoading()\"\n      >\n        <ax-prefix class=\"ax-data-table-numeric-paging\">\n          <ax-data-pager-numeric-selector> </ax-data-pager-numeric-selector>\n          <ax-data-pager-page-sizes> </ax-data-pager-page-sizes>\n        </ax-prefix>\n        <ax-prefix class=\"ax-data-table-input-paging\">\n          <ax-data-pager-prev-buttons> </ax-data-pager-prev-buttons>\n          <ax-data-pager-input-selector> </ax-data-pager-input-selector>\n          <ax-data-pager-next-buttons> </ax-data-pager-next-buttons>\n        </ax-prefix>\n        <ax-suffix class=\"ax-data-table-info\">\n          <ax-data-pager-info> </ax-data-pager-info>\n          <ax-button class=\"ms-2\" look=\"blank\" (onClick)=\"refresh({ reset: false })\">\n            <ax-icon icon=\"ax-icon ax-icon-refresh\"></ax-icon>\n          </ax-button>\n        </ax-suffix>\n      </ax-data-pager>\n    }\n  </div>\n}\n<ng-content select=\"ax-footer\"> </ng-content>\n","import { AXCommonModule, AXRippleDirective } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDataPagerModule } from '@acorex/components/data-pager';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXResultModule } from '@acorex/components/result';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDropList } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXDataTableColumnResizableDirective } from './columns/data-table-column-resizable.directive';\nimport { AXDataTableTextColumnComponent } from './columns/data-text-column.component';\nimport {\n  AXRowCommandColumnComponent,\n  AXRowDropdownCommandColumnComponent,\n} from './columns/row-command-column.component';\nimport { AXRowExpandColumnComponent } from './columns/row-expand-column.component';\nimport { AXRowIndexColumnComponent } from './columns/row-index-column.component';\nimport { AXRowSelectColumnComponent } from './columns/row-select-column.component';\nimport { AXDataTableComponent } from './data-table/data-table.component';\n\nconst COMPONENT = [\n  AXDataTableComponent,\n  AXDataTableTextColumnComponent,\n  AXRowIndexColumnComponent,\n  AXRowSelectColumnComponent,\n  AXRowExpandColumnComponent,\n  AXRowCommandColumnComponent,\n  AXRowDropdownCommandColumnComponent,\n  AXDataTableColumnResizableDirective,\n];\nconst MODULES = [\n  CommonModule,\n  AXCommonModule,\n  ScrollingModule,\n  AXTranslationModule,\n  AXResultModule,\n  AXLoadingModule,\n  AXSkeletonModule,\n  AXButtonModule,\n  AXDecoratorModule,\n  AXDropdownModule,\n  AXFormatModule,\n  AXRippleDirective,\n  AXDataPagerModule,\n  CdkDropList,\n  CdkDrag,\n  CdkDragPlaceholder,\n  CdkDragHandle,\n];\n\n@NgModule({\n  imports: [...MODULES, ...COMPONENT],\n  exports: [...COMPONENT],\n  providers: [],\n})\nexport class AXDataTableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2"],"mappings":"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"}