@acorex/components 19.11.2 → 19.11.4-next.0
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/button/index.d.ts +0 -1
- package/button/lib/button.component.d.ts +6 -1
- package/common/lib/types/base/button.type.d.ts +1 -1
- package/common/lib/types/base/color.type.d.ts +1 -1
- package/common/lib/types/base/interactive.type.d.ts +1 -1
- package/common/lib/types/base/look.type.d.ts +1 -1
- package/common/lib/types/base/value.type.d.ts +1 -1
- package/conversation/lib/conversation-input/conversation-input.component.d.ts +18 -11
- package/conversation/lib/conversation-messages/conversation-message-image-popup/conversation-message-image-popup.component.d.ts +1 -1
- package/fesm2022/acorex-components-breadcrumbs.mjs +4 -4
- package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/acorex-components-button-group.mjs +1 -1
- package/fesm2022/acorex-components-button-group.mjs.map +1 -1
- package/fesm2022/acorex-components-button.mjs +26 -7
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-check-box.mjs +2 -2
- package/fesm2022/acorex-components-check-box.mjs.map +1 -1
- package/fesm2022/acorex-components-common.mjs +5 -13
- package/fesm2022/acorex-components-common.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation.mjs +31 -8
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +4 -4
- 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-datetime-box.mjs +26 -1
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-input.mjs +11 -2
- package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs +9 -4
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs +1 -1
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown-button.mjs +2 -2
- package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
- package/fesm2022/acorex-components-file-explorer.mjs +1 -1
- package/fesm2022/acorex-components-file-explorer.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +2 -7
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-grid-layout-builder.mjs +11 -4
- package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-image-editor.mjs +4 -4
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-kbd.mjs +3 -12
- package/fesm2022/acorex-components-kbd.mjs.map +1 -1
- package/fesm2022/acorex-components-loading-dialog.mjs +1 -1
- package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-media-viewer.mjs +3 -0
- package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +4 -4
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-notification.mjs +1 -1
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-otp.mjs +12 -8
- package/fesm2022/acorex-components-otp.mjs.map +1 -1
- package/fesm2022/acorex-components-paint.mjs +1 -1
- package/fesm2022/acorex-components-paint.mjs.map +1 -1
- package/fesm2022/acorex-components-password-box.mjs +2 -2
- package/fesm2022/acorex-components-password-box.mjs.map +1 -1
- package/fesm2022/acorex-components-phone-box.mjs +2 -2
- package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
- package/fesm2022/acorex-components-query-builder.mjs +1 -1
- package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-rail-navigation.mjs +2 -2
- package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-range-slider.mjs +10 -8
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-rest-api-generator.mjs +2 -2
- package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +2 -2
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +2 -2
- package/fesm2022/acorex-components-select-box.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-tabs.mjs +2 -1
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/fesm2022/acorex-components-tag-box.mjs +79 -20
- package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
- package/fesm2022/acorex-components-tag.mjs +2 -2
- package/fesm2022/acorex-components-tag.mjs.map +1 -1
- package/fesm2022/acorex-components-text-area.mjs +2 -2
- package/fesm2022/acorex-components-text-area.mjs.map +1 -1
- package/fesm2022/acorex-components-text-box.mjs +2 -2
- package/fesm2022/acorex-components-text-box.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +8 -8
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/kbd/lib/kbd.component.d.ts +1 -3
- package/media-viewer/lib/media-viewer-container/media-viewer-container.component.d.ts +1 -0
- package/otp/lib/otp.component.d.ts +2 -1
- package/package.json +5 -5
- package/range-slider/lib/range-slider.component.d.ts +1 -0
- package/tag-box/README.md +2 -2
- package/tag-box/lib/tag-box.component.d.ts +11 -4
- package/tag-box/lib/tag-box.module.d.ts +4 -4
- package/button/lib/button.class.d.ts +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-data-table.mjs","sources":["../../../../libs/components/data-table/src/lib/base-data-table.class.ts","../../../../libs/components/data-table/src/lib/columns/data-table-column.ts","../../../../libs/components/data-table/src/lib/columns/data-table-column-resizable.directive.ts","../../../../libs/components/data-table/src/lib/columns/data-text-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-command-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-expand-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-index-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-select-column.component.ts","../../../../libs/components/data-table/src/lib/data-table/data-table.component.ts","../../../../libs/components/data-table/src/lib/data-table/data-table.component.html","../../../../libs/components/data-table/src/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.ts","../../../../libs/components/data-table/src/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.html","../../../../libs/components/data-table/src/lib/data-table.module.ts","../../../../libs/components/data-table/src/acorex-components-data-table.ts"],"sourcesContent":["import {\n AXDataSource,\n AXDataSourceFilterOption,\n AXEvent,\n MXBaseComponent,\n convertArrayToDataSource,\n} from '@acorex/components/common';\nimport { EventEmitter, Injectable, Input, Output, WritableSignal, signal } from '@angular/core';\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 = 'parentId';\n\n @Output()\n selectedRowsChange: EventEmitter<unknown[]> = new EventEmitter<unknown[]>();\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 this._selectedRows.set(v);\n this.selectedRowsChange.emit(v);\n }\n\n public async expandRow(row: any) {\n \n 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 } 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 public async refreshItemChildren(id: string) {\n this.dataSource.onItemRefreshChildren.next({\n id,\n });\n }\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 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(\n (c) => !removedRowIds.includes(typeof c === 'object' ? c[key] : c),\n );\n //this.selectedRows = this.selectedRows.filter((c) => !rows.includes(c));\n }\n}\n","import { AXSortOrder } from '@acorex/components/common';\nimport { Injectable, Input, TemplateRef } from '@angular/core';\n\n@Injectable()\nexport abstract class AXDataTableColumnComponent {\n @Input()\n caption: string;\n\n @Input()\n width: string | number = '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 { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectorRef, Directive, ElementRef, HostListener, inject, Input, NgZone, PLATFORM_ID, Renderer2 } 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 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 private el: ElementRef,\n private renderer: Renderer2,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n ) {\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 @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 onMouseMoveRaw(event: MouseEvent) {\n this.resize$.next(event);\n }\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 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 { AXFormatOptions, AXFormatService } from '@acorex/core/format';\nimport { Memoize } from '@acorex/core/memoize';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n/**\n * Component for a text column in a data table, supporting header, cell, and footer templates.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-text-column',\n template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-items-center ax-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 ax-animate-twSpin ax-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 ],\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 { AXButtonItemComponent, AXButtonItemListComponent, AXButtonItemListItem } from '@acorex/components/button';\nimport { AXButtonClickEvent, AXItemClickEvent, AXRippleDirective } from '@acorex/components/common';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\nexport type AXRowCommandItem = AXButtonItemListItem;\n\nexport type AXRowCommandItemClickEvent = AXButtonClickEvent;\n\nexport abstract class AXBaseRowCommandColumnComponent extends AXDataTableColumnComponent {\n protected grid = inject(AXBaseDataTable);\n protected cdr = inject(ChangeDetectorRef);\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 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 [adaptivityEnabled]=\"true\" (onOpened)=\"handleOnOpened(row.data)\" (onClosed)=\"handleOnClosed()\">\n @if (_items.length) {\n <ax-button-item-list (onItemClick)=\"handleOnItemClick($event, row.data)\" [items]=\"_items\"> </ax-button-item-list>\n } @else {\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\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 ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n imports: [AXRippleDirective, AXDecoratorIconComponent, AXDropdownPanelComponent, AXButtonItemListComponent, AXLoadingComponent],\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 /**\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 /**\n * @ignore\n */\n protected async handleOnOpened(rowData) {\n if (Array.isArray(this.items)) {\n this._items = this.items;\n } else typeof this.items == 'function';\n {\n const result = (this['items'] as any)(rowData);\n if (Array.isArray(result)) {\n this._items = result;\n } else if (result instanceof Promise) {\n this._items = await result;\n }\n }\n this.cdr.detectChanges();\n }\n\n /**\n * @ignore\n */\n protected handleOnClosed() {\n this._items = [];\n }\n\n /**\n * @ignore\n */\n protected handleOnItemClick(e: AXItemClickEvent<AXButtonItemComponent>, data: unknown) {\n const args: AXRowCommandItemClickEvent = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e,\n data,\n name: e.name,\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 (item of getItems(row.data); track $index) {\n <button\n [style.color]=\"'rgba(var(--ax-color-' + (item.color ?? 'primary)') + '-500))'\"\n [disabled]=\"item.disabled\"\n [class.ax-state-disabled]=\"item.disabled\"\n [axRipple]=\"!item.disabled\"\n (click)=\"handleOnItemClick($event, item, row.data)\"\n >\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </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],\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 /**\n * @ignore\n */\n protected handleOnItemClick(e: MouseEvent, item: AXRowCommandItem, data: unknown) {\n const args: AXRowCommandItemClickEvent = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e,\n data,\n name: item.name,\n };\n this.onItemClick.emit(args);\n }\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n/**\n * Column component that provides checkboxes for row selection in a data table.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-expand-column',\n template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n <div (click)=\"handleExpandRow(row)\" class=\"ax-expand-handler\" [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 1.5\">\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i class=\"fas fa-chevron-down\"></i>\n } @else {\n <i class=\"fas fa-chevron-right\"></i>\n }\n }\n </div>\n </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 ],\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 { AXFormatPipe } from '@acorex/core/format';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnInit, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n/**\n * Component for displaying row indices in a data table column.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-index-column',\n template: `<ng-template #header></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 ],\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 { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXValueChangedEvent } from '@acorex/components/common';\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 [ngModel]=\"checkAllSelected(col.rows)\" [indeterminate]=\"true\" (onValueChanged)=\"handleSelectAll($event, col.rows)\"></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 [disabled]=\"!row.data\" (onValueChanged)=\"handleChange($event, row.data)\" [ngModel]=\"isSelected(row.data)\"></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 ],\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) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\n\n const anySelected = rows.some((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\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 { 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, DOCUMENT, NgClass, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\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} from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, AXColumnsOrderChangedEvent, AXDataTableRowClick, AXDataTableRowDbClick, onColumnSizeChangedEvent } 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.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n inputs: ['dataSource', 'parentField'],\n outputs: ['selectedRowsChange'],\n providers: [{ provide: AXBaseDataTable, useExisting: AXDataTableComponent }, AXUnsubscriber],\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(() => this.columnsList().filter((c) => c.fixed === 'start'));\n\n /**\n * @ignore\n */\n protected normalColumnsList: Signal<any[]> = computed(() => this.columnsList().filter((c) => c.fixed !== 'end' && c.fixed !== 'start'));\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 * 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> } = { enabled: true, animation: true };\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 @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 this.displayedRows.update((prev) => this.toggleExpanded(prev, expandedItem, children));\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\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 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({ field: this.parentField, operator: { type: 'equal' }, value: id });\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.pipe(this._unsubscriber.takeUntilDestroy).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 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 in the data source and resets the data pager to the first page.\n * @ignore\n */\n public refresh() {\n this.dataSource.refresh();\n if (this.dataPager) {\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 * @ignore\n */\n protected onResizeColumnStart(event: MouseEvent, columnIndex: number): void {\n this.onColumnSizeChanged.emit({\n type: 'start',\n data: { columnIndex: columnIndex, width: this.columns.get(columnIndex).width, dataField: this.columns.get(columnIndex).name },\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 totalWidth = 0;\n let accumulatedWidthFromStart = 0;\n this.columns.forEach((column) => {\n const width = parseInt(column.width as string);\n if (!isNaN(width)) {\n totalWidth += width;\n }\n });\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","<ng-content select=\"ax-header\"> </ng-content>\n@if (!displayedRows().length) {\n <div class=\"ax-data-table-empty-data\">\n @if (emptyTemplate) {\n <ng-container *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n } @else {\n <span>{{ 'noRecord' | translate | async }}</span>\n }\n </div>\n}\n<div class=\"ax-data-table-wrapper\">\n <table>\n @if (showHeader) {\n <thead [ngClass]=\"{ 'ax-data-table-sticky-header': fixedHeader }\">\n <tr [cdkDropListDisabled]=\"!allowReordering\" cdkDropList cdkScrollable cdkDropListOrientation=\"horizontal\" (cdkDropListDropped)=\"drop($event)\">\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.isLast]=\"c['isLastFixedColumn']\"\n [style.--sticky-start]=\"c['stickyStart']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderHeaderTemplate; context: { $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; context: { $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 class=\"ax-resize-handle\" (mousedown)=\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\"></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.isFirst]=\"c['isFirstFixedColumn']\"\n [style.--sticky-end]=\"c['stickyEnd']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderHeaderTemplate; context: { $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 @for (row of displayedRows(); let rowIndex = $index; track rowIndex) {\n <ng-container *ngTemplateOutlet=\"rowTemp; context: { data: { row, rowIndex } }\"></ng-container>\n }\n\n <ng-template #rowTemp let-data=\"data\">\n @if (rowTemplate) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: { data: data.row, rowIndex: data.rowIndex } }\"> </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.isLast]=\"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; context: { $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) } }\"\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; context: { $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) } }\"\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.isFirst]=\"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; context: { $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) } }\"\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 @for (childRow of data.row.children; let childRowIndex = $index; track childRowIndex) {\n <ng-container *ngTemplateOutlet=\"rowTemp; context: { data: { row: childRow, rowIndex: childRowIndex } }\"></ng-container>\n }\n }\n }\n </ng-template>\n\n <tr class=\"empty-row\"></tr>\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.isLast]=\"c['isLastFixedColumn']\"\n [style.--sticky-start]=\"c['stickyStart']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderFooterTemplate; context: { $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; context: { $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 class=\"ax-resize-handle\" (mousedown)=\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\"></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.isFirst]=\"c['isFirstFixedColumn']\"\n [style.--sticky-end]=\"c['stickyEnd']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderFooterTemplate; context: { $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()\">\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 { AXListDataSource, AXPagedComponent, AXValueChangedEvent } from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnInit,\n Output,\n PLATFORM_ID,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n inject,\n signal,\n} from '@angular/core';\n\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableElement } from '@angular/cdk/scrolling';\nimport { DOCUMENT, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';\nimport sum from 'lodash-es/sum';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, AXDataTableRowClick, AXDataTableRowDbClick, AXDataTableScrollIndexChanged } 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 a data table with infinite scrolling capabilities.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-infinite-scroll-data-table',\n templateUrl: './infinite-scroll-data-table.component.html',\n styleUrls: ['./infinite-scroll-data-table.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: AXPagedComponent, useExisting: AXInfiniteScrollDataTableComponent },\n {\n provide: AXBaseDataTable,\n useExisting: AXInfiniteScrollDataTableComponent,\n },\n ],\n outputs: ['selectedRowsChange'],\n inputs: ['dataSource'],\n imports: [\n NgTemplateOutlet,\n AXDecoratorIconComponent,\n CdkVirtualScrollableElement,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n AXSkeletonComponent,\n AXButtonComponent,\n ],\n})\nexport class AXInfiniteScrollDataTableComponent extends AXBaseDataTable implements OnInit, DoCheck {\n private document = inject(DOCUMENT);\n private platformID = inject(PLATFORM_ID);\n private ngZone = inject(NgZone);\n\n /**\n * @ignore\n */\n @ContentChildren(AXDataTableColumnComponent)\n protected columns: QueryList<AXDataTableColumnComponent>;\n\n /**\n * @ignore\n */\n protected startFixedColumn(): AXDataTableColumnComponent[] {\n return this.columns?.toArray().filter((c) => c.fixed == 'start') ?? [];\n }\n /**\n * @ignore\n */\n protected endFixedColumn(): AXDataTableColumnComponent[] {\n return this.columns?.toArray().filter((c) => c.fixed == 'end') ?? [];\n }\n\n /**\n * @ignore\n */\n protected notFixedColumn(): AXDataTableColumnComponent[] {\n return this.columns?.toArray().filter((c) => !c.fixed) ?? [];\n }\n\n /**\n * @ignore\n */\n protected notFixedColumnCount(): number {\n return this.columns?.toArray().filter((c) => !c.fixed).length ?? 0;\n }\n\n /**\n * @ignore\n */\n protected fixedColumnCount(): number {\n return this.columns?.toArray().filter((c) => c.fixed).length ?? 0;\n }\n\n /**\n * Emits an event when the page changes.\n *\n * @event\n */\n @Output()\n onPageChanged: EventEmitter<AXValueChangedEvent<number>> = new EventEmitter<AXValueChangedEvent<number>>();\n\n /**\n * @ignore\n */\n private clickSubject = new Subject<{ event: MouseEvent; item: any }>();\n\n /**\n * Emits an event when a row is clicked.\n *\n * @event\n */\n @Output()\n onRowClick: EventEmitter<AXDataTableRowClick> = new EventEmitter<AXDataTableRowClick>();\n\n /**\n * Emits an event when a row is double-clicked.\n *\n * @event\n */\n @Output()\n onRowDbClick: EventEmitter<AXDataTableRowDbClick> = new EventEmitter<AXDataTableRowDbClick>();\n\n /**\n * Template for rendering rows in the data table.\n */\n @Input()\n rowTemplate?: TemplateRef<unknown>;\n\n /**\n * Template to display when the data table is empty.\n */\n @Input()\n emptyTemplate?: TemplateRef<unknown>;\n\n /**\n * Controls the visibility of the table header.\n *\n * @defaultValue true\n */\n @Input()\n showHeader = true;\n\n /**\n * Defines the mode for fetching data.\n *\n * @defaultValue 'auto'\n */\n @Input()\n fetchDataMode: 'auto' | 'manual' = 'auto';\n\n /**\n * Configuration for the loading state of the data table.\n *\n * @defaultValue { enabled: true, animation: true }\n */\n @Input()\n loading: {\n enabled: boolean;\n animation: boolean;\n loadingTemplate?: TemplateRef<unknown>;\n } = {\n enabled: true,\n animation: true,\n };\n\n /**\n * @ignore\n */\n protected listDataSource: AXListDataSource<unknown>;\n\n /**\n * @ignore\n */\n protected isLoading: WritableSignal<boolean> = signal(true);\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 * @ignore\n */\n private lastIndex = 0;\n\n /**\n * Event emitted when the focused row changes.\n *\n * @event\n */\n @Output()\n focusedRowChange: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n /**\n * @ignore\n */\n private _focusedRow: unknown;\n\n /**\n * Retrieves 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 a change event.\n *\n * @param v - The row data to be set as focused.\n */\n public set focusedRow(v: unknown) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n\n /**\n * Defines the height of each item in the table.\n *\n * @default 40\n */\n @Input()\n itemHeight: number | 'auto' = 40;\n\n /**\n * @ignore\n */\n protected width = '100%';\n\n /**\n * @ignore\n */\n protected height = '100%';\n\n /**\n * @ignore\n */\n @ViewChild(CdkVirtualScrollViewport, { static: true })\n private viewport: CdkVirtualScrollViewport;\n\n /**\n * Emitted when the scroll index changes in the table.\n *\n * @event\n */\n @Output()\n onScrolledIndexChanged: EventEmitter<AXDataTableScrollIndexChanged> = new EventEmitter<AXDataTableScrollIndexChanged>();\n\n trackByIdx(i) {\n return i;\n }\n\n /**\n * @ignore\n */\n override ngOnInit() {\n super.ngOnInit();\n this.listDataSource = new AXListDataSource<unknown>({\n source: this.dataSource,\n });\n this.listDataSource.source.onLoadingChanged.subscribe((data) => {\n this.isLoading.set(data);\n });\n this.listDataSource.source.onChanged.subscribe((data) => {\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n setTimeout(() => {\n this.render();\n }, 100);\n });\n\n //\n this.clickSubject\n .pipe(\n buffer(this.clickSubject.pipe(debounceTime(250))),\n filter((clickArray) => clickArray.length === 2),\n )\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n\n /**\n * @ignore\n */\n @ViewChild('headerContainer') headerContainer: ElementRef<HTMLDivElement>;\n\n /**\n * @ignore\n */\n @ViewChild('footerContainer') footerContainer: ElementRef;\n\n /**\n * @ignore\n */\n @ViewChild('scrolling', { static: true })\n scrollableContainer: ElementRef<HTMLDivElement>;\n\n /**\n * @ignore\n */\n protected _handleOnscrolledIndexChange(e: number) {\n this.lastIndex = e;\n this.onScrolledIndexChanged.emit({\n component: this,\n index: this.lastIndex,\n isUserInteraction: true,\n });\n }\n\n /**\n * @ignore\n */\n ngDoCheck() {\n //this.copyFixedColumns();\n this.updateHScroll();\n //\n this.updateWidth();\n this.updateHeight();\n //\n this.updateTotalCount();\n }\n\n /**\n * @ignore\n */\n private updateTotalCount() {\n this.startRowIndex = this.lastIndex;\n if (this.startRowIndex < 1) this.startRowIndex = 1;\n if (this.startRowIndex > this.totalRows) this.startRowIndex = this.totalRows;\n }\n\n /**\n * @ignore\n */\n private updateHeight() {\n this.height = `calc(100% - ${(this.headerContainer?.nativeElement.clientHeight ?? 0) + (this.footerContainer?.nativeElement.clientHeight ?? 0)}px)`;\n }\n\n /**\n * @ignore\n */\n private updateWidth() {\n if (this.columns && this.columns.length) {\n const sumPx = sum(this.columns.toArray().map((c) => (typeof c.width == 'number' ? c.width : Number(c.width.replace('px', '')))));\n this.width = `${Math.max(sumPx, this.getHostElement().clientWidth - 5)}px`;\n }\n }\n\n /**\n * @ignore\n */\n private updateHScroll() {\n this.ngZone.runOutsideAngular(() => {\n if (this.headerContainer) {\n const headerContainer = this.headerContainer.nativeElement;\n const left = this.scrollableContainer.nativeElement.scrollLeft;\n headerContainer.style.transform = `translateX(${-left}px)`;\n }\n });\n }\n\n /**\n * @ignore\n */\n // Function to copy fixed columns\n private copyFixedColumns() {\n const originalRows = Array.from(this.viewport._contentWrapper.nativeElement.querySelectorAll('tr'));\n const fixedColumnTable = this.getHostElement().querySelector<HTMLTableElement>('.ax-body-fixed-columns > table > tbody');\n fixedColumnTable.querySelectorAll('tr').forEach((n) => n.remove());\n if (isPlatformBrowser(this.platformID)) {\n for (const row of originalRows) {\n const fixedCells = Array.from(row.querySelectorAll('[data-fixed=\"start\"]'));\n const fixedRow = this.document.createElement('tr');\n for (const cell of fixedCells) {\n const clonedCell = cell.cloneNode(true);\n fixedRow.appendChild(clonedCell);\n }\n fixedColumnTable.appendChild(fixedRow);\n }\n }\n const scrollTop = this.getHostElement().querySelector('.cdk-virtual-scrollable').scrollTop;\n fixedColumnTable.style.transform = `translateY(${-scrollTop}px)`;\n }\n\n /**\n * Updates the viewport by checking its size and scrolling to the last index.\n * Marks the component for change detection.\n * @ignore\n */\n public render() {\n this.viewport.checkViewportSize();\n this.viewport.scrollToIndex(this.lastIndex);\n this.cdr.markForCheck();\n }\n /**\n * Resets the index to zero and refreshes the data source.\n * @ignore\n */\n public refresh() {\n this.lastIndex = 0;\n this.listDataSource.refresh();\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({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n\n /**\n * @ignore\n */\n protected handleRowDoubleClick(e: MouseEvent, item: unknown) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n\n /**\n * Handles column header clicks to toggle sorting on the column.\n *\n * @param e - The mouse event triggered by the click.\n * @param column - The column that was clicked.\n * @ignore\n */\n 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({\n field: column.dataField,\n dir: 'asc',\n });\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 * @ignore\n */\n protected _handleOnScroll() {\n this.updateHScroll();\n }\n}\n","<ng-content select=\"ax-header\"> </ng-content>\n<!------------------- Header contents ------------------->\n@if (showHeader) {\n <div class=\"ax-header-content\">\n <div class=\"ax-header-columns\">\n <table tabindex=\"0\" [style.width]=\"width\" #headerContainer>\n <thead>\n <tr>\n @for (c of notFixedColumn(); track c.name) {\n <th\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [style.width]=\"c.width\"\n >\n <div class=\"ax-caption\">\n <ng-container *ngTemplateOutlet=\"c.renderHeaderTemplate\"></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n <!-- @if(c.allowResizing)\n {\n <div class=\"ax-resize-handle\" [ax-table-column-resizble]=\"c\"></div>\n } -->\n </th>\n }\n <th></th>\n </tr>\n </thead>\n </table>\n </div>\n </div>\n}\n\n<!------------------- Body contents ------------------->\n<div [style.height]=\"height\" class=\"ax-body-content\">\n <div class=\"ax-body-columns\">\n <div cdkVirtualScrollingElement #scrolling [style.height]=\"'100%'\" (scroll)=\"_handleOnScroll()\">\n <cdk-virtual-scroll-viewport\n [itemSize]=\"itemHeight\"\n [style.--item-height]=\"itemHeight + 'px'\"\n (scrolledIndexChange)=\"_handleOnscrolledIndexChange($event)\"\n >\n <table tabindex=\"0\" class=\"ax-table-body ax-relative\" [style.width]=\"width\">\n <colgroup>\n @for (c of notFixedColumn(); track c.name) {\n <col [style.width]=\"c.width\" />\n }\n <col />\n </colgroup>\n <tbody>\n <ng-container\n *cdkVirtualFor=\"let item of listDataSource; templateCacheSize: 100; let i = index; trackBy: trackByIdx; let rIndex = index\"\n >\n <!------------------- custom row template------------------->\n @if (rowTemplate != null) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: { data: item, rowIndex: rIndex } }\"> </ng-container>\n } @else {\n <!------------------- normal row template------------------->\n <tr\n [class.ax-state-focused]=\"focusedRow && item === focusedRow\"\n [attr.data-index]=\"rIndex\"\n [class.ax-state-selected]=\"selectedRows.includes(item)\"\n (click)=\"handleRowClick($event, item)\"\n >\n <!------------------- start fixed column ------------------->\n\n <!------------------- Not fixed column ------------------->\n @for (c of notFixedColumn(); track c.name) {\n <td [attr.data-label]=\"c.caption\" tabindex=\"0\" [class]=\"c.cssClass\">\n @if (item && !isLoading()) {\n <!------------------- render cell ------------------->\n <ng-container\n *ngTemplateOutlet=\"c.renderCellTemplate; context: { $implicit: { data: item, rowIndex: rIndex } }\"\n ></ng-container>\n } @else {\n <!------------------- render loading ------------------->\n @if (c.loadingEnabled && loading) {\n <ax-skeleton [animated]=\"loading.animation\"></ax-skeleton>\n }\n }\n </td>\n }\n <td></td>\n </tr>\n }\n </ng-container>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n </div>\n </div>\n</div>\n<div class=\"ax-table-footer\" #footerContainer>\n <div class=\"ax-table-info\">\n <div>Showing {{ startRowIndex }} of {{ totalRows }} items</div>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"refresh()\">\n <ax-icon icon=\"ax-icon ax-icon-refresh\"></ax-icon>\n </ax-button>\n </div>\n <ng-content select=\"ax-footer\"> </ng-content>\n</div>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXCommonModule, AXRippleDirective } from '@acorex/components/common';\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 { AXRowCommandColumnComponent, AXRowDropdownCommandColumnComponent } 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';\nimport { AXInfiniteScrollDataTableComponent } from './infinite-scroll-data-table/infinite-scroll-data-table.component';\n\nconst COMPONENT = [\n AXInfiniteScrollDataTableComponent,\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":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-components-data-table.mjs","sources":["../../../../libs/components/data-table/src/lib/base-data-table.class.ts","../../../../libs/components/data-table/src/lib/columns/data-table-column.ts","../../../../libs/components/data-table/src/lib/columns/data-table-column-resizable.directive.ts","../../../../libs/components/data-table/src/lib/columns/data-text-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-command-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-expand-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-index-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-select-column.component.ts","../../../../libs/components/data-table/src/lib/data-table/data-table.component.ts","../../../../libs/components/data-table/src/lib/data-table/data-table.component.html","../../../../libs/components/data-table/src/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.ts","../../../../libs/components/data-table/src/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.html","../../../../libs/components/data-table/src/lib/data-table.module.ts","../../../../libs/components/data-table/src/acorex-components-data-table.ts"],"sourcesContent":["import {\n AXDataSource,\n AXDataSourceFilterOption,\n AXEvent,\n MXBaseComponent,\n convertArrayToDataSource,\n} from '@acorex/components/common';\nimport { EventEmitter, Injectable, Input, Output, WritableSignal, signal } from '@angular/core';\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 = 'parentId';\n\n @Output()\n selectedRowsChange: EventEmitter<unknown[]> = new EventEmitter<unknown[]>();\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 this._selectedRows.set(v);\n this.selectedRowsChange.emit(v);\n }\n\n public async expandRow(row: any) {\n \n 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 } 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 public async refreshItemChildren(id: string) {\n this.dataSource.onItemRefreshChildren.next({\n id,\n });\n }\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 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(\n (c) => !removedRowIds.includes(typeof c === 'object' ? c[key] : c),\n );\n //this.selectedRows = this.selectedRows.filter((c) => !rows.includes(c));\n }\n}\n","import { AXSortOrder } from '@acorex/components/common';\nimport { Injectable, Input, TemplateRef } from '@angular/core';\n\n@Injectable()\nexport abstract class AXDataTableColumnComponent {\n @Input()\n caption: string;\n\n @Input()\n width: string | number = '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 { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectorRef, Directive, ElementRef, HostListener, inject, Input, NgZone, PLATFORM_ID, Renderer2 } 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 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 private el: ElementRef,\n private renderer: Renderer2,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n ) {\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 @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 onMouseMoveRaw(event: MouseEvent) {\n this.resize$.next(event);\n }\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 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 { AXFormatOptions, AXFormatService } from '@acorex/core/format';\nimport { Memoize } from '@acorex/core/memoize';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n/**\n * Component for a text column in a data table, supporting header, cell, and footer templates.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-text-column',\n template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-items-center ax-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 ax-animate-twSpin ax-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 ],\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 { AXButtonItemComponent, AXButtonItemListComponent, AXButtonItemListItem } from '@acorex/components/button';\nimport { AXButtonClickEvent, AXItemClickEvent, AXRippleDirective } from '@acorex/components/common';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\nexport type AXRowCommandItem = AXButtonItemListItem;\n\nexport type AXRowCommandItemClickEvent = AXButtonClickEvent;\n\nexport abstract class AXBaseRowCommandColumnComponent extends AXDataTableColumnComponent {\n protected grid = inject(AXBaseDataTable);\n protected cdr = inject(ChangeDetectorRef);\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 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 [adaptivityEnabled]=\"true\" (onOpened)=\"handleOnOpened(row.data)\" (onClosed)=\"handleOnClosed()\">\n @if (_items.length) {\n <ax-button-item-list (onItemClick)=\"handleOnItemClick($event, row.data)\" [items]=\"_items\"> </ax-button-item-list>\n } @else {\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\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 ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n imports: [AXRippleDirective, AXDecoratorIconComponent, AXDropdownPanelComponent, AXButtonItemListComponent, AXLoadingComponent],\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 /**\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 /**\n * @ignore\n */\n protected async handleOnOpened(rowData) {\n if (Array.isArray(this.items)) {\n this._items = this.items;\n } else typeof this.items == 'function';\n {\n const result = (this['items'] as any)(rowData);\n if (Array.isArray(result)) {\n this._items = result;\n } else if (result instanceof Promise) {\n this._items = await result;\n }\n }\n this.cdr.detectChanges();\n }\n\n /**\n * @ignore\n */\n protected handleOnClosed() {\n this._items = [];\n }\n\n /**\n * @ignore\n */\n protected handleOnItemClick(e: AXItemClickEvent<AXButtonItemComponent>, data: unknown) {\n const args: AXRowCommandItemClickEvent = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e,\n data,\n name: e.name,\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 (item of getItems(row.data); track $index) {\n <button\n [style.color]=\"'rgba(var(--ax-color-' + (item.color ?? 'primary)') + '-500))'\"\n [disabled]=\"item.disabled\"\n [class.ax-state-disabled]=\"item.disabled\"\n [axRipple]=\"!item.disabled\"\n (click)=\"handleOnItemClick($event, item, row.data)\"\n >\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </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],\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 /**\n * @ignore\n */\n protected handleOnItemClick(e: MouseEvent, item: AXRowCommandItem, data: unknown) {\n const args: AXRowCommandItemClickEvent = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e,\n data,\n name: item.name,\n };\n this.onItemClick.emit(args);\n }\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n/**\n * Column component that provides checkboxes for row selection in a data table.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-expand-column',\n template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n <div (click)=\"handleExpandRow(row)\" class=\"ax-expand-handler\" [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 1.5\">\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i class=\"fas fa-chevron-down\"></i>\n } @else {\n <i class=\"fas fa-chevron-right\"></i>\n }\n }\n </div>\n </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 ],\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 { AXFormatPipe } from '@acorex/core/format';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnInit, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n/**\n * Component for displaying row indices in a data table column.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-index-column',\n template: `<ng-template #header></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 ],\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 { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXValueChangedEvent } from '@acorex/components/common';\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 [ngModel]=\"checkAllSelected(col.rows)\" [indeterminate]=\"true\" (onValueChanged)=\"handleSelectAll($event, col.rows)\"></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 [disabled]=\"!row.data\" (onValueChanged)=\"handleChange($event, row.data)\" [ngModel]=\"isSelected(row.data)\"></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 ],\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) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\n\n const anySelected = rows.some((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\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 { 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, DOCUMENT, NgClass, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\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} from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, AXColumnsOrderChangedEvent, AXDataTableRowClick, AXDataTableRowDbClick, onColumnSizeChangedEvent } 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.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n inputs: ['dataSource', 'parentField'],\n outputs: ['selectedRowsChange'],\n providers: [{ provide: AXBaseDataTable, useExisting: AXDataTableComponent }, AXUnsubscriber],\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(() => this.columnsList().filter((c) => c.fixed === 'start'));\n\n /**\n * @ignore\n */\n protected normalColumnsList: Signal<any[]> = computed(() => this.columnsList().filter((c) => c.fixed !== 'end' && c.fixed !== 'start'));\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 * 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> } = { enabled: true, animation: true };\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 @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 this.displayedRows.update((prev) => this.toggleExpanded(prev, expandedItem, children));\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\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 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({ field: this.parentField, operator: { type: 'equal' }, value: id });\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.pipe(this._unsubscriber.takeUntilDestroy).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 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 in the data source and resets the data pager to the first page.\n * @ignore\n */\n public refresh() {\n this.dataSource.refresh();\n if (this.dataPager) {\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 * @ignore\n */\n protected onResizeColumnStart(event: MouseEvent, columnIndex: number): void {\n this.onColumnSizeChanged.emit({\n type: 'start',\n data: { columnIndex: columnIndex, width: this.columns.get(columnIndex).width, dataField: this.columns.get(columnIndex).name },\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 totalWidth = 0;\n let accumulatedWidthFromStart = 0;\n this.columns.forEach((column) => {\n const width = parseInt(column.width as string);\n if (!isNaN(width)) {\n totalWidth += width;\n }\n });\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","<ng-content select=\"ax-header\"> </ng-content>\n@if (!displayedRows().length) {\n <div class=\"ax-data-table-empty-data\">\n @if (emptyTemplate) {\n <ng-container *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n } @else {\n <span>{{ 'noRecord' | translate | async }}</span>\n }\n </div>\n}\n<div class=\"ax-data-table-wrapper\">\n <table>\n @if (showHeader) {\n <thead [ngClass]=\"{ 'ax-data-table-sticky-header': fixedHeader }\">\n <tr [cdkDropListDisabled]=\"!allowReordering\" cdkDropList cdkScrollable cdkDropListOrientation=\"horizontal\" (cdkDropListDropped)=\"drop($event)\">\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.isLast]=\"c['isLastFixedColumn']\"\n [style.--sticky-start]=\"c['stickyStart']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderHeaderTemplate; context: { $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; context: { $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 class=\"ax-resize-handle\" (mousedown)=\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\"></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.isFirst]=\"c['isFirstFixedColumn']\"\n [style.--sticky-end]=\"c['stickyEnd']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderHeaderTemplate; context: { $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 @for (row of displayedRows(); let rowIndex = $index; track rowIndex) {\n <ng-container *ngTemplateOutlet=\"rowTemp; context: { data: { row, rowIndex } }\"></ng-container>\n }\n\n <ng-template #rowTemp let-data=\"data\">\n @if (rowTemplate) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: { data: data.row, rowIndex: data.rowIndex } }\"> </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.isLast]=\"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; context: { $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) } }\"\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; context: { $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) } }\"\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.isFirst]=\"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; context: { $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) } }\"\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 @for (childRow of data.row.children; let childRowIndex = $index; track childRowIndex) {\n <ng-container *ngTemplateOutlet=\"rowTemp; context: { data: { row: childRow, rowIndex: childRowIndex } }\"></ng-container>\n }\n }\n }\n </ng-template>\n\n <tr class=\"empty-row\"></tr>\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.isLast]=\"c['isLastFixedColumn']\"\n [style.--sticky-start]=\"c['stickyStart']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderFooterTemplate; context: { $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; context: { $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 class=\"ax-resize-handle\" (mousedown)=\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\"></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.isFirst]=\"c['isFirstFixedColumn']\"\n [style.--sticky-end]=\"c['stickyEnd']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderFooterTemplate; context: { $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()\">\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 { AXListDataSource, AXPagedComponent, AXValueChangedEvent } from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnInit,\n Output,\n PLATFORM_ID,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n inject,\n signal,\n} from '@angular/core';\n\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableElement } from '@angular/cdk/scrolling';\nimport { DOCUMENT, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';\nimport sum from 'lodash-es/sum';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, AXDataTableRowClick, AXDataTableRowDbClick, AXDataTableScrollIndexChanged } 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 a data table with infinite scrolling capabilities.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-infinite-scroll-data-table',\n templateUrl: './infinite-scroll-data-table.component.html',\n styleUrls: ['./infinite-scroll-data-table.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: AXPagedComponent, useExisting: AXInfiniteScrollDataTableComponent },\n {\n provide: AXBaseDataTable,\n useExisting: AXInfiniteScrollDataTableComponent,\n },\n ],\n outputs: ['selectedRowsChange'],\n inputs: ['dataSource'],\n imports: [\n NgTemplateOutlet,\n AXDecoratorIconComponent,\n CdkVirtualScrollableElement,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n AXSkeletonComponent,\n AXButtonComponent,\n ],\n})\nexport class AXInfiniteScrollDataTableComponent extends AXBaseDataTable implements OnInit, DoCheck {\n private document = inject(DOCUMENT);\n private platformID = inject(PLATFORM_ID);\n private ngZone = inject(NgZone);\n\n /**\n * @ignore\n */\n @ContentChildren(AXDataTableColumnComponent)\n protected columns: QueryList<AXDataTableColumnComponent>;\n\n /**\n * @ignore\n */\n protected startFixedColumn(): AXDataTableColumnComponent[] {\n return this.columns?.toArray().filter((c) => c.fixed == 'start') ?? [];\n }\n /**\n * @ignore\n */\n protected endFixedColumn(): AXDataTableColumnComponent[] {\n return this.columns?.toArray().filter((c) => c.fixed == 'end') ?? [];\n }\n\n /**\n * @ignore\n */\n protected notFixedColumn(): AXDataTableColumnComponent[] {\n return this.columns?.toArray().filter((c) => !c.fixed) ?? [];\n }\n\n /**\n * @ignore\n */\n protected notFixedColumnCount(): number {\n return this.columns?.toArray().filter((c) => !c.fixed).length ?? 0;\n }\n\n /**\n * @ignore\n */\n protected fixedColumnCount(): number {\n return this.columns?.toArray().filter((c) => c.fixed).length ?? 0;\n }\n\n /**\n * Emits an event when the page changes.\n *\n * @event\n */\n @Output()\n onPageChanged: EventEmitter<AXValueChangedEvent<number>> = new EventEmitter<AXValueChangedEvent<number>>();\n\n /**\n * @ignore\n */\n private clickSubject = new Subject<{ event: MouseEvent; item: any }>();\n\n /**\n * Emits an event when a row is clicked.\n *\n * @event\n */\n @Output()\n onRowClick: EventEmitter<AXDataTableRowClick> = new EventEmitter<AXDataTableRowClick>();\n\n /**\n * Emits an event when a row is double-clicked.\n *\n * @event\n */\n @Output()\n onRowDbClick: EventEmitter<AXDataTableRowDbClick> = new EventEmitter<AXDataTableRowDbClick>();\n\n /**\n * Template for rendering rows in the data table.\n */\n @Input()\n rowTemplate?: TemplateRef<unknown>;\n\n /**\n * Template to display when the data table is empty.\n */\n @Input()\n emptyTemplate?: TemplateRef<unknown>;\n\n /**\n * Controls the visibility of the table header.\n *\n * @defaultValue true\n */\n @Input()\n showHeader = true;\n\n /**\n * Defines the mode for fetching data.\n *\n * @defaultValue 'auto'\n */\n @Input()\n fetchDataMode: 'auto' | 'manual' = 'auto';\n\n /**\n * Configuration for the loading state of the data table.\n *\n * @defaultValue { enabled: true, animation: true }\n */\n @Input()\n loading: {\n enabled: boolean;\n animation: boolean;\n loadingTemplate?: TemplateRef<unknown>;\n } = {\n enabled: true,\n animation: true,\n };\n\n /**\n * @ignore\n */\n protected listDataSource: AXListDataSource<unknown>;\n\n /**\n * @ignore\n */\n protected isLoading: WritableSignal<boolean> = signal(true);\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 * @ignore\n */\n private lastIndex = 0;\n\n /**\n * Event emitted when the focused row changes.\n *\n * @event\n */\n @Output()\n focusedRowChange: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n /**\n * @ignore\n */\n private _focusedRow: unknown;\n\n /**\n * Retrieves 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 a change event.\n *\n * @param v - The row data to be set as focused.\n */\n public set focusedRow(v: unknown) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n\n /**\n * Defines the height of each item in the table.\n *\n * @default 40\n */\n @Input()\n itemHeight: number | 'auto' = 40;\n\n /**\n * @ignore\n */\n protected width = '100%';\n\n /**\n * @ignore\n */\n protected height = '100%';\n\n /**\n * @ignore\n */\n @ViewChild(CdkVirtualScrollViewport, { static: true })\n private viewport: CdkVirtualScrollViewport;\n\n /**\n * Emitted when the scroll index changes in the table.\n *\n * @event\n */\n @Output()\n onScrolledIndexChanged: EventEmitter<AXDataTableScrollIndexChanged> = new EventEmitter<AXDataTableScrollIndexChanged>();\n\n trackByIdx(i) {\n return i;\n }\n\n /**\n * @ignore\n */\n override ngOnInit() {\n super.ngOnInit();\n this.listDataSource = new AXListDataSource<unknown>({\n source: this.dataSource,\n });\n this.listDataSource.source.onLoadingChanged.subscribe((data) => {\n this.isLoading.set(data);\n });\n this.listDataSource.source.onChanged.subscribe((data) => {\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n setTimeout(() => {\n this.render();\n }, 100);\n });\n\n //\n this.clickSubject\n .pipe(\n buffer(this.clickSubject.pipe(debounceTime(250))),\n filter((clickArray) => clickArray.length === 2),\n )\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n\n /**\n * @ignore\n */\n @ViewChild('headerContainer') headerContainer: ElementRef<HTMLDivElement>;\n\n /**\n * @ignore\n */\n @ViewChild('footerContainer') footerContainer: ElementRef;\n\n /**\n * @ignore\n */\n @ViewChild('scrolling', { static: true })\n scrollableContainer: ElementRef<HTMLDivElement>;\n\n /**\n * @ignore\n */\n protected _handleOnscrolledIndexChange(e: number) {\n this.lastIndex = e;\n this.onScrolledIndexChanged.emit({\n component: this,\n index: this.lastIndex,\n isUserInteraction: true,\n });\n }\n\n /**\n * @ignore\n */\n ngDoCheck() {\n //this.copyFixedColumns();\n this.updateHScroll();\n //\n this.updateWidth();\n this.updateHeight();\n //\n this.updateTotalCount();\n }\n\n /**\n * @ignore\n */\n private updateTotalCount() {\n this.startRowIndex = this.lastIndex;\n if (this.startRowIndex < 1) this.startRowIndex = 1;\n if (this.startRowIndex > this.totalRows) this.startRowIndex = this.totalRows;\n }\n\n /**\n * @ignore\n */\n private updateHeight() {\n this.height = `calc(100% - ${(this.headerContainer?.nativeElement.clientHeight ?? 0) + (this.footerContainer?.nativeElement.clientHeight ?? 0)}px)`;\n }\n\n /**\n * @ignore\n */\n private updateWidth() {\n if (this.columns && this.columns.length) {\n const sumPx = sum(this.columns.toArray().map((c) => (typeof c.width == 'number' ? c.width : Number(c.width.replace('px', '')))));\n this.width = `${Math.max(sumPx, this.getHostElement().clientWidth - 5)}px`;\n }\n }\n\n /**\n * @ignore\n */\n private updateHScroll() {\n this.ngZone.runOutsideAngular(() => {\n if (this.headerContainer) {\n const headerContainer = this.headerContainer.nativeElement;\n const left = this.scrollableContainer.nativeElement.scrollLeft;\n headerContainer.style.transform = `translateX(${-left}px)`;\n }\n });\n }\n\n /**\n * @ignore\n */\n // Function to copy fixed columns\n private copyFixedColumns() {\n const originalRows = Array.from(this.viewport._contentWrapper.nativeElement.querySelectorAll('tr'));\n const fixedColumnTable = this.getHostElement().querySelector<HTMLTableElement>('.ax-body-fixed-columns > table > tbody');\n fixedColumnTable.querySelectorAll('tr').forEach((n) => n.remove());\n if (isPlatformBrowser(this.platformID)) {\n for (const row of originalRows) {\n const fixedCells = Array.from(row.querySelectorAll('[data-fixed=\"start\"]'));\n const fixedRow = this.document.createElement('tr');\n for (const cell of fixedCells) {\n const clonedCell = cell.cloneNode(true);\n fixedRow.appendChild(clonedCell);\n }\n fixedColumnTable.appendChild(fixedRow);\n }\n }\n const scrollTop = this.getHostElement().querySelector('.cdk-virtual-scrollable').scrollTop;\n fixedColumnTable.style.transform = `translateY(${-scrollTop}px)`;\n }\n\n /**\n * Updates the viewport by checking its size and scrolling to the last index.\n * Marks the component for change detection.\n * @ignore\n */\n public render() {\n this.viewport.checkViewportSize();\n this.viewport.scrollToIndex(this.lastIndex);\n this.cdr.markForCheck();\n }\n /**\n * Resets the index to zero and refreshes the data source.\n * @ignore\n */\n public refresh() {\n this.lastIndex = 0;\n this.listDataSource.refresh();\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({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n\n /**\n * @ignore\n */\n protected handleRowDoubleClick(e: MouseEvent, item: unknown) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n\n /**\n * Handles column header clicks to toggle sorting on the column.\n *\n * @param e - The mouse event triggered by the click.\n * @param column - The column that was clicked.\n * @ignore\n */\n 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({\n field: column.dataField,\n dir: 'asc',\n });\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 * @ignore\n */\n protected _handleOnScroll() {\n this.updateHScroll();\n }\n}\n","<ng-content select=\"ax-header\"> </ng-content>\n<!------------------- Header contents ------------------->\n@if (showHeader) {\n <div class=\"ax-header-content\">\n <div class=\"ax-header-columns\">\n <table tabindex=\"0\" [style.width]=\"width\" #headerContainer>\n <thead>\n <tr>\n @for (c of notFixedColumn(); track c.name) {\n <th\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [style.width]=\"c.width\"\n >\n <div class=\"ax-caption\">\n <ng-container *ngTemplateOutlet=\"c.renderHeaderTemplate\"></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n <!-- @if(c.allowResizing)\n {\n <div class=\"ax-resize-handle\" [ax-table-column-resizble]=\"c\"></div>\n } -->\n </th>\n }\n <th></th>\n </tr>\n </thead>\n </table>\n </div>\n </div>\n}\n\n<!------------------- Body contents ------------------->\n<div [style.height]=\"height\" class=\"ax-body-content\">\n <div class=\"ax-body-columns\">\n <div cdkVirtualScrollingElement #scrolling [style.height]=\"'100%'\" (scroll)=\"_handleOnScroll()\">\n <cdk-virtual-scroll-viewport\n [itemSize]=\"itemHeight\"\n [style.--item-height]=\"itemHeight + 'px'\"\n (scrolledIndexChange)=\"_handleOnscrolledIndexChange($event)\"\n >\n <table tabindex=\"0\" class=\"ax-table-body ax-relative\" [style.width]=\"width\">\n <colgroup>\n @for (c of notFixedColumn(); track c.name) {\n <col [style.width]=\"c.width\" />\n }\n <col />\n </colgroup>\n <tbody>\n <ng-container\n *cdkVirtualFor=\"let item of listDataSource; templateCacheSize: 100; let i = index; trackBy: trackByIdx; let rIndex = index\"\n >\n <!------------------- custom row template------------------->\n @if (rowTemplate != null) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: { data: item, rowIndex: rIndex } }\"> </ng-container>\n } @else {\n <!------------------- normal row template------------------->\n <tr\n [class.ax-state-focused]=\"focusedRow && item === focusedRow\"\n [attr.data-index]=\"rIndex\"\n [class.ax-state-selected]=\"selectedRows.includes(item)\"\n (click)=\"handleRowClick($event, item)\"\n >\n <!------------------- start fixed column ------------------->\n\n <!------------------- Not fixed column ------------------->\n @for (c of notFixedColumn(); track c.name) {\n <td [attr.data-label]=\"c.caption\" tabindex=\"0\" [class]=\"c.cssClass\">\n @if (item && !isLoading()) {\n <!------------------- render cell ------------------->\n <ng-container\n *ngTemplateOutlet=\"c.renderCellTemplate; context: { $implicit: { data: item, rowIndex: rIndex } }\"\n ></ng-container>\n } @else {\n <!------------------- render loading ------------------->\n @if (c.loadingEnabled && loading) {\n <ax-skeleton [animated]=\"loading.animation\"></ax-skeleton>\n }\n }\n </td>\n }\n <td></td>\n </tr>\n }\n </ng-container>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n </div>\n </div>\n</div>\n<div class=\"ax-table-footer\" #footerContainer>\n <div class=\"ax-table-info\">\n <div>Showing {{ startRowIndex }} of {{ totalRows }} items</div>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"refresh()\">\n <ax-icon icon=\"ax-icon ax-icon-refresh\"></ax-icon>\n </ax-button>\n </div>\n <ng-content select=\"ax-footer\"> </ng-content>\n</div>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXCommonModule, AXRippleDirective } from '@acorex/components/common';\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 { AXRowCommandColumnComponent, AXRowDropdownCommandColumnComponent } 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';\nimport { AXInfiniteScrollDataTableComponent } from './infinite-scroll-data-table/infinite-scroll-data-table.component';\n\nconst COMPONENT = [\n AXInfiniteScrollDataTableComponent,\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":[],"mappings":"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"}
|