@acorex/components 21.0.0-next.62 → 21.0.0-next.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-components-avatar.mjs +2 -2
- package/fesm2022/acorex-components-avatar.mjs.map +1 -1
- package/fesm2022/acorex-components-button.mjs +2 -2
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-calendar.mjs +2 -2
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-color-box.mjs +2 -2
- package/fesm2022/acorex-components-color-box.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +2 -2
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +2 -2
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +6 -8
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-json-viewer.mjs +11 -5
- package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-kanban.mjs +2 -2
- package/fesm2022/acorex-components-kanban.mjs.map +1 -1
- package/fesm2022/acorex-components-kbd.mjs +2 -2
- package/fesm2022/acorex-components-kbd.mjs.map +1 -1
- package/fesm2022/acorex-components-media-viewer.mjs +2 -2
- package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +4 -4
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs +63 -14
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-step-wizard.mjs +2 -2
- package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
- package/fesm2022/acorex-components-tooltip.mjs +4 -0
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +7 -3
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/fesm2022/acorex-components-uploader.mjs +2 -2
- package/fesm2022/acorex-components-uploader.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +3 -3
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/json-viewer/index.d.ts +3 -2
- package/package.json +3 -3
- package/side-menu/index.d.ts +9 -2
- package/tree-view/index.d.ts +5 -1
- package/wysiwyg/index.d.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-data-table.mjs","sources":["../../../../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 {\n AXDataSource,\n AXDataSourceFilterOption,\n AXEvent,\n MXBaseComponent,\n convertArrayToDataSource,\n} from '@acorex/cdk/common';\nimport { EventEmitter, Injectable, Input, Output, TemplateRef, WritableSignal, signal } from '@angular/core';\nimport { isEqual } from 'lodash-es';\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\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 * Template for expanded custom row content.\n */\n @Input()\n rowDetailsTemplate?: TemplateRef<unknown>;\n\n @Output()\n selectedRowsChange: EventEmitter<unknown[]> = new EventEmitter<unknown[]>();\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 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","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': automatically fits to content after data load\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 @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 {\n ChangeDetectionStrategy,\n Component,\n Input,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject,\n signal,\n} 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 class=\"flex items-center gap-2\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\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 {{ getDisplayText(row.data, this.dataField) }}\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXDataTableTextColumnComponent,\n },\n { provide: AXComponent, useExisting: AXDataTableTextColumnComponent },\n ],\n inputs: ['width', 'caption', 'allowSorting', 'allowResizing', 'fixed'],\n})\nexport class AXDataTableTextColumnComponent extends AXDataTableColumnComponent {\n private 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) {\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 * @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 } from '@acorex/core/translation';\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\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 changeDetection: ChangeDetectionStrategy.OnPush,\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 = 't(\"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\"\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 changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowCommandColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n imports: [AXRippleDirective, AXDecoratorIconComponent, AXButtonComponent, AXLoadingComponent],\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 {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject,\n signal,\n} 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 (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 1.5\"\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=\"fas fa-chevron-down\"></i>\n } @else {\n <i class=\"fas fa-chevron-right\"></i>\n }\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\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 private 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) {\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 { AXFormatPipe } from '@acorex/core/format';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject,\n} 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></ng-template>\n <ng-template #cell let-row>\n {{ row.rowIndex + 1 | format: 'number' : { zeroPadLength: this.formatCount, thousandSeparator: false } | async }}\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\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],\n})\nexport class AXRowIndexColumnComponent extends AXDataTableColumnComponent implements OnInit {\n private 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 { ChangeDetectionStrategy, 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 changeDetection: ChangeDetectionStrategy.OnPush,\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 { 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 ChangeDetectionStrategy,\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 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 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.compiled.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n inputs: ['dataSource', 'selectedRows', 'parentField', 'rowDetailsTemplate'],\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 ],\n})\nexport class AXDataTableComponent extends AXBaseDataTable implements OnInit, AfterViewInit {\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 * @ignore\n */\n protected resizeColumnProp = { startX: 0, startWidth: 0, columnIndex: 0, newColumnWidth: 0, thElement: null };\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 * @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 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 this.dataSource.onLoadingChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.isLoading.set(data);\n });\n\n this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.displayedRows.set(data.items.filter((item) => !item[this.parentField]));\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\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 //\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 /**\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 });\n\n // Auto-fit columns with width='auto' 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 }, 100);\n }\n });\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 return {\n ...item,\n __meta__: { expanded: isExpanded, level: expandedItem?.__meta__?.level ?? 0 },\n children: children ? this.toggleExpanded(children, expandedItem, item.children || []) : null,\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 { ...item, children: cloneDeep(newChildren) };\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 /**\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 * 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 } = { reset: true }) {\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 return this.dataSource.pageSize * this.page() + index;\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 this.columns.get(this.resizeColumnProp.columnIndex).width = `${Math.max(100, newWidth)}px`;\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 * Called automatically after data load.\n *\n * @ignore\n */\n private autoFitColumnsWithAutoWidth(): void {\n const autoWidthColumns: number[] = [];\n\n this.columns.forEach((column, index) => {\n // Only auto-fit if width is explicitly set to 'auto'\n if (column.width === 'auto') {\n autoWidthColumns.push(index);\n try {\n this.autoFitColumn(index, { maxWidth: 500 });\n } catch (error) {\n console.error(`Failed to auto-fit column ${index}:`, error);\n }\n }\n });\n\n if (autoWidthColumns.length > 0) {\n console.warn(\n `Auto-fitted ${autoWidthColumns.length} column(s) with width='auto': indices ${autoWidthColumns.join(', ')}`,\n );\n }\n }\n\n /**\n * Auto-fits all columns width based on their content.\n *\n * @param options - Configuration options\n * @param options.skipFixed - If true, skips fixed columns (default: true)\n * @param options.skipLoading - If true, skips if data is loading (default: true)\n * @param options.maxWidth - Maximum width for any column in pixels (default: 500)\n * @returns void\n */\n public autoFitAllColumns(\n options: {\n skipFixed?: boolean;\n skipLoading?: boolean;\n maxWidth?: number;\n } = {},\n ): 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 // 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 column width based on its content.\n * Similar to Excel's \"AutoFit Column Width\" feature.\n * Uses an invisible helper table to measure actual content width without affecting the main table.\n *\n * @param columnIndex - The index of the column to auto-fit (0-based, based on columns QueryList)\n * @param options - Configuration options\n * @param options.maxWidth - Maximum width for the column in pixels (default: none)\n * @returns void\n */\n public autoFitColumn(columnIndex: number, options: { maxWidth?: number } = {}): 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 // 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 // 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 // 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","<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 [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 [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></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 [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 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]=\"c.cssClass\"\n >\n <div class=\"ax-bg\"></div>\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 </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]=\"c.cssClass\"\n >\n <div class=\"ax-bg\"></div>\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 </td>\n }\n <td><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]=\"c.cssClass\"\n >\n <div class=\"ax-bg\"></div>\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 </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></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 look=\"blank\" class=\"ax-sm\" (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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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-data-table.mjs","sources":["../../../../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 {\n AXDataSource,\n AXDataSourceFilterOption,\n AXEvent,\n MXBaseComponent,\n convertArrayToDataSource,\n} from '@acorex/cdk/common';\nimport { EventEmitter, Injectable, Input, Output, TemplateRef, WritableSignal, signal } from '@angular/core';\nimport { isEqual } from 'lodash-es';\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\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 * Template for expanded custom row content.\n */\n @Input()\n rowDetailsTemplate?: TemplateRef<unknown>;\n\n @Output()\n selectedRowsChange: EventEmitter<unknown[]> = new EventEmitter<unknown[]>();\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 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","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': automatically fits to content after data load\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 @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 {\n ChangeDetectionStrategy,\n Component,\n Input,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject,\n signal,\n} 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 class=\"flex items-center gap-2\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\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 {{ getDisplayText(row.data, this.dataField) }}\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXDataTableTextColumnComponent,\n },\n { provide: AXComponent, useExisting: AXDataTableTextColumnComponent },\n ],\n inputs: ['width', 'caption', 'allowSorting', 'allowResizing', 'fixed'],\n})\nexport class AXDataTableTextColumnComponent extends AXDataTableColumnComponent {\n private 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) {\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 * @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 } from '@acorex/core/translation';\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\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 changeDetection: ChangeDetectionStrategy.OnPush,\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 = 't(\"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\"\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 changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowCommandColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n imports: [AXRippleDirective, AXDecoratorIconComponent, AXButtonComponent, AXLoadingComponent],\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 {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject,\n signal,\n} 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 (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 1.5\"\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=\"fas fa-chevron-down\"></i>\n } @else {\n <i class=\"fas fa-chevron-right\"></i>\n }\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\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 private 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) {\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 { AXFormatPipe } from '@acorex/core/format';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject,\n} 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></ng-template>\n <ng-template #cell let-row>\n {{ row.rowIndex + 1 | format: 'number' : { zeroPadLength: this.formatCount, thousandSeparator: false } | async }}\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\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],\n})\nexport class AXRowIndexColumnComponent extends AXDataTableColumnComponent implements OnInit {\n private 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 { ChangeDetectionStrategy, 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 changeDetection: ChangeDetectionStrategy.OnPush,\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 { 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 ChangeDetectionStrategy,\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 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 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.compiled.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n inputs: ['dataSource', 'selectedRows', 'parentField', 'rowDetailsTemplate'],\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 ],\n})\nexport class AXDataTableComponent extends AXBaseDataTable implements OnInit, AfterViewInit {\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 * @ignore\n */\n protected resizeColumnProp = { startX: 0, startWidth: 0, columnIndex: 0, newColumnWidth: 0, thElement: null };\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 * @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 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 this.dataSource.onLoadingChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.isLoading.set(data);\n });\n\n this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.displayedRows.set(data.items.filter((item) => !item[this.parentField]));\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\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 //\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 /**\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 });\n\n // Auto-fit columns with width='auto' 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 }, 100);\n }\n });\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 return {\n ...item,\n __meta__: { expanded: isExpanded, level: expandedItem?.__meta__?.level ?? 0 },\n children: children ? this.toggleExpanded(children, expandedItem, item.children || []) : null,\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 { ...item, children: cloneDeep(newChildren) };\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 /**\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 * 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 } = { reset: true }) {\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 return this.dataSource.pageSize * this.page() + index;\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 this.columns.get(this.resizeColumnProp.columnIndex).width = `${Math.max(100, newWidth)}px`;\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 * Called automatically after data load.\n *\n * @ignore\n */\n private autoFitColumnsWithAutoWidth(): void {\n const autoWidthColumns: number[] = [];\n\n this.columns.forEach((column, index) => {\n // Only auto-fit if width is explicitly set to 'auto'\n if (column.width === 'auto') {\n autoWidthColumns.push(index);\n try {\n this.autoFitColumn(index, { maxWidth: 500 });\n } catch (error) {\n console.error(`Failed to auto-fit column ${index}:`, error);\n }\n }\n });\n\n if (autoWidthColumns.length > 0) {\n console.warn(\n `Auto-fitted ${autoWidthColumns.length} column(s) with width='auto': indices ${autoWidthColumns.join(', ')}`,\n );\n }\n }\n\n /**\n * Auto-fits all columns width based on their content.\n *\n * @param options - Configuration options\n * @param options.skipFixed - If true, skips fixed columns (default: true)\n * @param options.skipLoading - If true, skips if data is loading (default: true)\n * @param options.maxWidth - Maximum width for any column in pixels (default: 500)\n * @returns void\n */\n public autoFitAllColumns(\n options: {\n skipFixed?: boolean;\n skipLoading?: boolean;\n maxWidth?: number;\n } = {},\n ): 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 // 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 column width based on its content.\n * Similar to Excel's \"AutoFit Column Width\" feature.\n * Uses an invisible helper table to measure actual content width without affecting the main table.\n *\n * @param columnIndex - The index of the column to auto-fit (0-based, based on columns QueryList)\n * @param options - Configuration options\n * @param options.maxWidth - Maximum width for the column in pixels (default: none)\n * @returns void\n */\n public autoFitColumn(columnIndex: number, options: { maxWidth?: number } = {}): 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 // 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 // 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 // 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","<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 [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 [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></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 [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 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]=\"c.cssClass\"\n >\n <div class=\"ax-bg\"></div>\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 </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]=\"c.cssClass\"\n >\n <div class=\"ax-bg\"></div>\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 </td>\n }\n <td><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]=\"c.cssClass\"\n >\n <div class=\"ax-bg\"></div>\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 </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></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 look=\"blank\" class=\"ax-sm\" (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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"}
|