@eui/eds 22.0.0-alpha.16 → 22.0.0-alpha.18

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.
Files changed (72) hide show
  1. package/docs/changelog.html +28 -0
  2. package/docs/components/EdsLanguageSelectorDialog.html +1 -1
  3. package/docs/js/search/search_index.js +2 -2
  4. package/docs/json/documentation.json +42 -42
  5. package/docs/llms.txt +1 -1
  6. package/docs/properties.html +1 -1
  7. package/fesm2022/eui-eds-charts-eds-chart-legend.mjs +2 -2
  8. package/fesm2022/eui-eds-charts-eds-chart-legend.mjs.map +1 -1
  9. package/fesm2022/eui-eds-eds-accordion.mjs +2 -2
  10. package/fesm2022/eui-eds-eds-accordion.mjs.map +1 -1
  11. package/fesm2022/eui-eds-eds-alert.mjs +2 -2
  12. package/fesm2022/eui-eds-eds-alert.mjs.map +1 -1
  13. package/fesm2022/eui-eds-eds-autocomplete.mjs +2 -2
  14. package/fesm2022/eui-eds-eds-autocomplete.mjs.map +1 -1
  15. package/fesm2022/eui-eds-eds-avatar.mjs +4 -4
  16. package/fesm2022/eui-eds-eds-avatar.mjs.map +1 -1
  17. package/fesm2022/eui-eds-eds-blockquote.mjs +2 -2
  18. package/fesm2022/eui-eds-eds-blockquote.mjs.map +1 -1
  19. package/fesm2022/eui-eds-eds-calendar.mjs +4 -4
  20. package/fesm2022/eui-eds-eds-calendar.mjs.map +1 -1
  21. package/fesm2022/eui-eds-eds-card.mjs +2 -2
  22. package/fesm2022/eui-eds-eds-card.mjs.map +1 -1
  23. package/fesm2022/eui-eds-eds-date-block.mjs +2 -2
  24. package/fesm2022/eui-eds-eds-date-block.mjs.map +1 -1
  25. package/fesm2022/eui-eds-eds-datepicker.mjs +2 -2
  26. package/fesm2022/eui-eds-eds-datepicker.mjs.map +1 -1
  27. package/fesm2022/eui-eds-eds-discussion-thread.mjs +4 -4
  28. package/fesm2022/eui-eds-eds-discussion-thread.mjs.map +1 -1
  29. package/fesm2022/eui-eds-eds-empty-state.mjs +2 -2
  30. package/fesm2022/eui-eds-eds-empty-state.mjs.map +1 -1
  31. package/fesm2022/eui-eds-eds-fieldset.mjs +2 -2
  32. package/fesm2022/eui-eds-eds-fieldset.mjs.map +1 -1
  33. package/fesm2022/eui-eds-eds-file-upload.mjs +2 -2
  34. package/fesm2022/eui-eds-eds-file-upload.mjs.map +1 -1
  35. package/fesm2022/eui-eds-eds-growl.mjs +2 -2
  36. package/fesm2022/eui-eds-eds-growl.mjs.map +1 -1
  37. package/fesm2022/eui-eds-eds-language-selector.mjs +4 -4
  38. package/fesm2022/eui-eds-eds-language-selector.mjs.map +1 -1
  39. package/fesm2022/eui-eds-eds-list.mjs +2 -2
  40. package/fesm2022/eui-eds-eds-list.mjs.map +1 -1
  41. package/fesm2022/eui-eds-eds-menu.mjs +2 -2
  42. package/fesm2022/eui-eds-eds-menu.mjs.map +1 -1
  43. package/fesm2022/eui-eds-eds-multiselect.mjs +2 -2
  44. package/fesm2022/eui-eds-eds-multiselect.mjs.map +1 -1
  45. package/fesm2022/eui-eds-eds-page.mjs +2 -2
  46. package/fesm2022/eui-eds-eds-page.mjs.map +1 -1
  47. package/fesm2022/eui-eds-eds-popover.mjs +2 -2
  48. package/fesm2022/eui-eds-eds-popover.mjs.map +1 -1
  49. package/fesm2022/eui-eds-eds-progress-bar.mjs +2 -2
  50. package/fesm2022/eui-eds-eds-progress-bar.mjs.map +1 -1
  51. package/fesm2022/eui-eds-eds-progress-circle.mjs +2 -2
  52. package/fesm2022/eui-eds-eds-progress-circle.mjs.map +1 -1
  53. package/fesm2022/eui-eds-eds-select.mjs +2 -2
  54. package/fesm2022/eui-eds-eds-select.mjs.map +1 -1
  55. package/fesm2022/eui-eds-eds-shell.mjs +4 -4
  56. package/fesm2022/eui-eds-eds-shell.mjs.map +1 -1
  57. package/fesm2022/eui-eds-eds-table.mjs +2 -2
  58. package/fesm2022/eui-eds-eds-table.mjs.map +1 -1
  59. package/fesm2022/eui-eds-eds-tabs.mjs +2 -2
  60. package/fesm2022/eui-eds-eds-tabs.mjs.map +1 -1
  61. package/fesm2022/eui-eds-eds-timeline.mjs +2 -2
  62. package/fesm2022/eui-eds-eds-timeline.mjs.map +1 -1
  63. package/fesm2022/eui-eds-eds-timepicker.mjs +2 -2
  64. package/fesm2022/eui-eds-eds-timepicker.mjs.map +1 -1
  65. package/fesm2022/eui-eds-eds-user-profile.mjs +2 -2
  66. package/fesm2022/eui-eds-eds-user-profile.mjs.map +1 -1
  67. package/fesm2022/eui-eds-eds-wizard.mjs +2 -2
  68. package/fesm2022/eui-eds-utilities-eds-label.mjs +2 -2
  69. package/fesm2022/eui-eds-utilities-eds-label.mjs.map +1 -1
  70. package/fesm2022/eui-eds-utilities-eds-trend.mjs +2 -2
  71. package/fesm2022/eui-eds-utilities-eds-trend.mjs.map +1 -1
  72. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"eui-eds-eds-table.mjs","sources":["../../eds-table/eds-table-selectable.service.ts","../../eds-table/eds-table-sort.service.ts","../../eds-table/eds-table-template.ts","../../eds-table/eds-table.ts","../../eds-table/eds-table.html","../../eds-table/eds-table-filter.ts","../../eds-table/eds-table-filter.html","../../eds-table/eds-table-selectable-header.ts","../../eds-table/eds-table-selectable-header.html","../../eds-table/eds-table-selectable-row.ts","../../eds-table/eds-table-selectable-row.html","../../eds-table/eds-table-sortable-col.ts","../../eds-table/eds-table-sortable-col.html","../../eds-table/eds-table-sticky-col.ts","../../eds-table/eds-table-expandable-row.ts","../../eds-table/eds-table-highlight.pipe.ts","../../eds-table/index.ts","../../eds-table/eui-eds-eds-table.ts"],"sourcesContent":["import { Injectable, signal, computed } from '@angular/core';\n\n/**\n * Service to manage the selection state of rows in an eds-table.\n * Uses signals to store and expose the current selection.\n */\n@Injectable()\nexport class EdsTableSelectableService<DATA = unknown> {\n /** Currently selected rows as a readonly signal. */\n readonly selectedRows = computed(() => this._selectedRows());\n\n /** Whether all rows are currently selected. */\n readonly isAllRowsSelected = computed(() => {\n const rows = this._rows();\n const selected = this._selectedRows();\n return rows.length > 0 && rows.length === selected.length;\n });\n\n /** Whether some (but not all) rows are selected. */\n readonly isIndeterminate = computed(() => {\n const rows = this._rows();\n const selected = this._selectedRows();\n return selected.length > 0 && selected.length < rows.length;\n });\n\n private readonly _selectedRows = signal<DATA[]>([]);\n private readonly _rows = signal<DATA[]>([]);\n private _lastSelectedRow: DATA | null = null;\n private _propId = 'id';\n\n /** Sets the property name used to identify rows as unique. */\n setPropId(value: string): void {\n this._propId = value;\n }\n\n /** Gets the current property name used to identify rows. */\n getPropId(): string {\n return this._propId;\n }\n\n /** Registers a set of rows as selectable. */\n registerRows(rows: DATA[]): void {\n this._rows.set([...rows]);\n }\n\n /** Unregisters all rows. */\n unregisterRows(): void {\n this._rows.set([]);\n }\n\n /** Selects a single row (adds to selection). */\n selectRow(row: DATA): void {\n const current = this._selectedRows();\n if (!current.find(r => r[this._propId] === row[this._propId])) {\n this._selectedRows.set([...current, row]);\n }\n this._lastSelectedRow = row;\n }\n\n /** Selects only a single row, replacing any existing selection. */\n selectSingleRow(row: DATA): void {\n this._selectedRows.set([row]);\n this._lastSelectedRow = row;\n }\n\n /** Unselects a row. */\n unselectRow(row: DATA): void {\n if (row) {\n const value = this._selectedRows().filter(r => r[this._propId] !== row[this._propId]);\n this._selectedRows.set(value);\n }\n }\n\n /** Selects a set of rows (replaces current selection). */\n selectRows(rows: DATA[]): void {\n this._selectedRows.set([...rows]);\n this._lastSelectedRow = rows[rows.length - 1] ?? null;\n }\n\n /** Select all registered rows. */\n selectAllRows(): void {\n this._selectedRows.set([...this._rows()]);\n const rows = this._rows();\n this._lastSelectedRow = rows[rows.length - 1] ?? null;\n }\n\n /** Unselect all rows. */\n unselectAllRows(): void {\n this._selectedRows.set([]);\n this._lastSelectedRow = null;\n }\n\n /** Gets the list of registered rows. */\n getRows(): DATA[] {\n return this._rows();\n }\n\n /** Gets the last selected row. */\n getLastSelectedRow(): DATA | null {\n return this._lastSelectedRow;\n }\n}\n","import { Injectable, signal, computed } from '@angular/core';\n\nimport { EdsTableSort, EdsTableSortOrder } from './eds-table-sort.model';\n\n/**\n * Service to manage the sorting state of columns in an eds-table.\n * Uses signals to store and expose the current sorting values.\n */\n@Injectable()\nexport class EdsTableSortService {\n /** Current sorting configuration as a readonly signal. */\n readonly sorts = computed(() => this._sorts());\n\n private readonly _sorts = signal<EdsTableSort[]>([]);\n private isCurrentMultiSortable = false;\n\n /**\n * Sets the ordering for a given column.\n * @param sort The name of the column to sort.\n * @param order The sorting order (asc, desc, none).\n * @param isMultiSortable Whether multi-sorting is allowed.\n */\n setSort(sort: string, order: EdsTableSortOrder, isMultiSortable: boolean): void {\n if (isMultiSortable && this.isCurrentMultiSortable) {\n let sortValues = this._sorts();\n if (!order || order === 'none') {\n sortValues = sortValues.filter(s => s.sort !== sort);\n this._sorts.set(sortValues);\n } else {\n if (sortValues.find(s => s.sort === sort)) {\n sortValues = sortValues.map(s => s.sort === sort ? ({ ...s, order }) : s);\n this._sorts.set(sortValues);\n } else {\n this._sorts.set([...sortValues, { sort, order }]);\n }\n }\n } else {\n this._sorts.set(sort && order && order !== 'none' ? [{ sort, order }] : []);\n }\n\n this.isCurrentMultiSortable = isMultiSortable;\n }\n\n /**\n * Sets the full list of sorting values.\n * @param sorts The list of sorts to apply.\n */\n setSorts(sorts: EdsTableSort[]): void {\n this._sorts.set(sorts);\n this.isCurrentMultiSortable = sorts.length > 1;\n }\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\n\n/**\n * Directive for defining named template references within eds-table.\n * Provides a way to identify templates by name (header, body, footer, noData, caption).\n *\n * @usageNotes\n * ```html\n * <ng-template edsTableTemplate=\"header\">\n * <tr><th>Column</th></tr>\n * </ng-template>\n * <ng-template let-row edsTableTemplate=\"body\">\n * <tr><td>{{ row.value }}</td></tr>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[edsTableTemplate]',\n})\nexport class EdsTableTemplate<T = never> {\n template = inject<TemplateRef<T>>(TemplateRef);\n\n readonly name = input<string>(undefined, { alias: 'edsTableTemplate' });\n\n getType(): string {\n return this.name();\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n AfterContentInit,\n AfterViewInit,\n OnDestroy,\n OnInit,\n TemplateRef,\n ElementRef,\n Renderer2,\n ViewEncapsulation,\n booleanAttribute,\n numberAttribute,\n inject,\n input,\n output,\n computed,\n contentChildren,\n viewChild,\n effect,\n} from '@angular/core';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { Subject, debounceTime, takeUntil, skip, Observable } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\n\nimport { EdsTableSelectableService } from './eds-table-selectable.service';\nimport { EdsTableSortService } from './eds-table-sort.service';\nimport { EdsTableTemplate } from './eds-table-template';\nimport { EdsTableSort, EdsTableSortOrder } from './eds-table-sort.model';\n\nexport type EdsTableScrollDirection = 'UP' | 'DOWN';\n\n/**\n * High-performance data table component with support for virtual scrolling,\n * pagination, sorting, filtering, row selection, sticky headers/footers/columns,\n * responsive layouts, and async data loading.\n *\n * Uses template directives (`edsTableTemplate`) for header, body, footer, noData and caption slots.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <table edsTable [data]=\"data\" edsTableCompact>\n * <ng-template edsTableTemplate=\"header\">\n * <tr>\n * <th>Country</th>\n * <th>Year</th>\n * </tr>\n * </ng-template>\n * <ng-template let-row edsTableTemplate=\"body\">\n * <tr>\n * <td>{{ row.country }}</td>\n * <td>{{ row.year }}</td>\n * </tr>\n * </ng-template>\n * </table>\n * ```\n *\n * ### Imports\n * ```ts\n * import { EDS_TABLE } from '@eui/eds/eds-table';\n * imports: [...EDS_TABLE]\n * ```\n */\n@Component({\n selector: 'eds-table, table[edsTable]',\n templateUrl: './eds-table.html',\n styleUrl: './eds-table.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n ScrollingModule,\n ],\n providers: [EdsTableSelectableService, EdsTableSortService],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': '\"eds-table\"',\n },\n})\nexport class EdsTable<DATA = unknown> implements AfterContentInit, AfterViewInit, OnDestroy, OnInit {\n /** Data to display in the table. */\n readonly data = input<DATA[]>([]);\n\n /** Unique property identifier for rows. */\n readonly propId = input('id');\n\n /** Row height used by virtual scroll calculation. */\n readonly itemSize = input(41, { transform: numberAttribute });\n\n /** Rows to be pre-selected. */\n readonly preselectedRows = input<DATA[]>([]);\n\n /** Whether the table uses virtual scroll. Use `eds-table` selector for virtual scroll. */\n readonly isVirtualScroll = input(false, { transform: booleanAttribute });\n\n /** Whether to cache data when scrolling (virtual scroll). */\n readonly isVirtualScrollCache = input(false, { transform: booleanAttribute });\n\n /** Whether the table header is sticky. */\n readonly hasStickyHeader = input(false, { transform: booleanAttribute });\n\n /** Whether the table footer is sticky. */\n readonly hasStickyFooter = input(false, { transform: booleanAttribute });\n\n /** Whether columns are sticky. */\n readonly hasStickyCols = input(false, { transform: booleanAttribute });\n\n /** Whether the table is responsive (cards layout on mobile). */\n readonly edsTableResponsive = input(true, { transform: booleanAttribute });\n\n /** Whether the table uses async data (server-side pagination/sorting/filtering). */\n readonly isAsync = input(false, { transform: booleanAttribute });\n\n /** Total length of async virtual scroll items. */\n readonly virtualScrollAsyncItemsLength = input(0, { transform: numberAttribute });\n\n /** Number of rows to load per virtual scroll batch. */\n readonly virtualScrollNbRows = input(50, { transform: numberAttribute });\n\n /** Whether a loading state is displayed. */\n readonly isLoading = input(false, { transform: booleanAttribute });\n\n /** Whether 'select all' only selects visible rows (current page). */\n readonly isSelectOnlyVisibleRows = input(true, { transform: booleanAttribute });\n\n /** Whether the table uses bordered styles. */\n readonly edsTableBordered = input(false, { transform: booleanAttribute });\n\n /** Whether the table uses a fixed layout. */\n readonly edsTableFixedLayout = input(false, { transform: booleanAttribute });\n\n /** Whether the table uses compact styling. */\n readonly edsTableCompact = input(false, { transform: booleanAttribute });\n\n /** Whether the table uses flat styling (no borders, no background — suitable for embedding in dashboard cards). */\n readonly isFlat = input(false, { transform: booleanAttribute });\n\n /** Event emitted on virtual scroll changes. */\n readonly scrollChange = output<{ start: number; end: number }>();\n\n /** Event emitted when the row selection changes. */\n readonly rowsSelect = output<DATA[]>();\n\n /** Event emitted when sort changes. */\n readonly sortChange = output<EdsTableSort[]>();\n\n protected headerTemplate: TemplateRef<HTMLElement>;\n protected bodyTemplate: TemplateRef<{ $implicit: DATA; index: number }>;\n protected footerTemplate: TemplateRef<HTMLElement>;\n protected noDataTemplate: TemplateRef<HTMLElement>;\n protected captionTemplate: TemplateRef<HTMLElement>;\n protected nbCols: HTMLTableCellElement[] = [];\n protected dataRendered: DATA[] = [];\n protected cdkVirtualScrollViewportOverflowValue: 'hidden' | 'auto' = 'auto';\n\n readonly templates = contentChildren(EdsTableTemplate);\n\n protected readonly cdkVirtualScrollViewport = viewChild<CdkVirtualScrollViewport>('cdkVirtualScrollViewport');\n protected readonly cdkVirtualScrollViewportElement = viewChild('cdkVirtualScrollViewportElement', { read: ElementRef });\n readonly theadRef = viewChild<ElementRef<HTMLElement>>('theadRef');\n readonly tbodyRef = viewChild<ElementRef<HTMLElement>>('tbodyRef');\n readonly tfootRef = viewChild<ElementRef<HTMLElement>>('tfootRef');\n\n hostClasses = computed(() => {\n return [\n 'eds-table eds-table-default',\n this.isVirtualScroll() ? 'eds-table--virtual-scroll' : '',\n this.hasStickyHeader() ? 'eds-table--sticky eds-table--sticky-header' : '',\n this.hasStickyFooter() ? 'eds-table--sticky eds-table--sticky-footer' : '',\n this.hasStickyCols() ? 'eds-table--sticky eds-table--sticky-cols' : '',\n this.edsTableResponsive() ? 'eds-table-default--responsive' : '',\n this.isLoading() ? 'eds-table--loading' : '',\n this.edsTableFixedLayout() ? 'eds-table--fixed-layout' : '',\n this.edsTableBordered() ? 'eds-table--bordered' : '',\n this.edsTableCompact() ? 'eds-table--compact' : '',\n this.isFlat() ? 'eds-table--flat' : '',\n ].join(' ').trim();\n });\n\n private destroy$ = new Subject<boolean>();\n private virtualScrollLastMultiple = 0;\n private virtualScrollSpliceFrom = 0;\n private scrolledIndex = 0;\n private nbItemDisplayed = 0;\n private scrollingDirection: EdsTableScrollDirection;\n private mutationObserver: MutationObserver;\n private dataSrc: DATA[] = [];\n private dataInitialized = false;\n private previousSorts: EdsTableSort[] = [];\n private selectionInitialized = false;\n\n private elementRef = inject(ElementRef);\n private selectableService = inject<EdsTableSelectableService<DATA>>(EdsTableSelectableService);\n private sortService = inject(EdsTableSortService);\n private renderer = inject(Renderer2);\n\n constructor() {\n // Data effect\n effect(() => {\n const data = this.data() ?? [];\n const virtualScrollNbRows = this.virtualScrollNbRows();\n\n this.selectableService.setPropId(this.propId());\n\n if (this.isVirtualScroll()) {\n if (!this.dataInitialized) {\n this.dataInitialized = true;\n this.dataRendered = [...data, ...Array.from<DATA>({ length: this.virtualScrollAsyncItemsLength() - data.length })];\n this.selectableService.unregisterRows();\n this.selectableService.registerRows(this.dataRendered);\n } else if (this.isAsync()) {\n const source = [...this.dataRendered];\n if (this.isVirtualScrollCache()) {\n this.dataRendered = [\n ...source.slice(0, this.virtualScrollSpliceFrom),\n ...data,\n ...source.slice(this.virtualScrollSpliceFrom + virtualScrollNbRows),\n ];\n } else {\n this.dataRendered = [\n ...Array.from<DATA>({ length: this.virtualScrollSpliceFrom - this.nbItemDisplayed }),\n ...source.slice(this.virtualScrollSpliceFrom - this.nbItemDisplayed, this.virtualScrollSpliceFrom),\n ...data,\n ...source.slice(this.virtualScrollSpliceFrom + virtualScrollNbRows, this.virtualScrollSpliceFrom + virtualScrollNbRows + this.nbItemDisplayed),\n ...Array.from<DATA>({ length: this.virtualScrollAsyncItemsLength() - (this.virtualScrollSpliceFrom + virtualScrollNbRows + this.nbItemDisplayed) }),\n ];\n }\n\n this.selectableService.unregisterRows();\n this.selectableService.registerRows(this.dataRendered);\n\n if (this.scrollingDirection === 'DOWN') {\n if ((this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== -1 ||\n (this.scrolledIndex === this.virtualScrollSpliceFrom && !this.dataRendered[this.scrolledIndex - 1])) &&\n this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== this.dataRendered.length\n ) {\n this.cdkVirtualScrollViewport()?.scrollToIndex(this.virtualScrollSpliceFrom + 1);\n }\n }\n\n if (this.scrollingDirection === 'UP') {\n if (this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== -1) {\n this.cdkVirtualScrollViewport()?.scrollToIndex(this.virtualScrollSpliceFrom + 1);\n }\n }\n\n this.stickyFeatureHandler();\n }\n } else {\n this.dataSrc = data ? [...data] : [];\n this.selectableService.registerRows(this.dataSrc);\n this.dataRendered = this.dataSrc;\n this.dataInitialized = true;\n }\n });\n\n // Sort effect — re-sort data when sort configuration changes\n effect(() => {\n const sorts = this.sortService.sorts();\n if (sorts.length > 0 && !this.isAsync() && this.dataInitialized) {\n this.dataRendered = this.sortData(sorts, [...this.dataSrc]);\n }\n // Emit sort changes\n if (this.dataInitialized && sorts !== this.previousSorts) {\n this.sortChange.emit(sorts);\n this.previousSorts = sorts;\n }\n });\n\n // Selection effect — emit row selection changes\n effect(() => {\n const selected = this.selectableService.selectedRows();\n if (this.selectionInitialized) {\n this.rowsSelect.emit(selected);\n }\n this.selectionInitialized = true;\n });\n\n // Preselected rows effect\n effect(() => {\n const preselectedRows = this.preselectedRows();\n if (preselectedRows?.length > 0) {\n this.selectableService.selectRows(preselectedRows);\n }\n });\n }\n\n ngOnInit(): void {\n this.dataSrc = [...this.data()];\n }\n\n ngAfterContentInit(): void {\n this.templates().forEach((item) => {\n const type = item.getType();\n if (type === 'header') this.headerTemplate = item.template;\n if (type === 'body') this.bodyTemplate = item.template;\n if (type === 'footer') this.footerTemplate = item.template;\n if (type === 'noData') this.noDataTemplate = item.template;\n if (type === 'caption') this.captionTemplate = item.template;\n });\n }\n\n ngAfterViewInit(): void {\n this.stickyFeatureHandler();\n\n if (this.isVirtualScroll()) {\n const viewport = this.cdkVirtualScrollViewport();\n if (viewport) {\n viewport.renderedRangeStream\n .pipe(debounceTime(500), takeUntil(this.destroy$))\n .subscribe(() => this.stickyFeatureHandler());\n\n const theadRef = this.theadRef();\n if (theadRef) {\n const theadElements = Array.from(theadRef.nativeElement.querySelectorAll('th'));\n this.nbCols = new Array(theadElements.length);\n }\n\n viewport.scrolledIndexChange\n .pipe(debounceTime(500), takeUntil(this.destroy$), skip(1))\n .subscribe((scrolledIndex: number) => {\n if (this.isAsync()) {\n this.handleAsyncScroll(scrolledIndex);\n }\n });\n }\n\n const viewportElement = this.cdkVirtualScrollViewportElement();\n if (viewportElement && viewport) {\n viewportElement.nativeElement.style.height = viewport.elementRef.nativeElement.parentElement.clientHeight + 'px';\n }\n }\n\n this.setupMutationObserver();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n this.mutationObserver?.disconnect();\n }\n\n /** Moves an element within the rendered data array. */\n moveItem(itemId: number | string, fromIndex: number, toIndex: number): void {\n const itemPosition = this.dataRendered.findIndex(d => d && d[this.propId()] === itemId);\n const move = toIndex - fromIndex;\n const source = [...this.dataRendered];\n const [elementToMove] = source.splice(itemPosition, 1);\n source.splice(itemPosition + move, 0, elementToMove);\n this.dataRendered = source;\n }\n\n /** Select all rows. */\n selectAllRows(): void {\n this.selectableService.selectAllRows();\n }\n\n /** Unselect all rows. */\n unselectAllRows(): void {\n this.selectableService.unselectAllRows();\n }\n\n /** Filters data based on a string. Returns matching rows. */\n filterData(filter: string, r: DATA[]): DATA[] {\n const rows = filter\n ? r.filter((row) => {\n const matching = this.getProps(row, filter).filter((p) => p.match);\n return matching.length > 0;\n })\n : r;\n\n this.selectableService.unregisterRows();\n this.selectableService.registerRows(rows);\n return rows;\n }\n\n /** Set sort programmatically. */\n setSort(sorts: EdsTableSort[]): void {\n this.sortService.setSorts(sorts);\n }\n\n protected get stickyHeaderTopPosition(): string {\n const viewport = this.cdkVirtualScrollViewport();\n if (!viewport || !viewport['_renderedContentOffset']) return '0';\n return (-viewport['_renderedContentOffset'] - 1) + 'px';\n }\n\n protected get stickyFooterBottomPosition(): string {\n const viewport = this.cdkVirtualScrollViewport();\n if (!viewport || !viewport['_renderedContentOffset']) return '-1px';\n return viewport['_renderedContentOffset'] - 1 + 'px';\n }\n\n protected get cdkVirtualScrollViewportWidth(): string {\n return (this.elementRef.nativeElement?.parentElement?.clientWidth || 0) + 'px';\n }\n\n protected get hostWidth(): number {\n return this.elementRef.nativeElement.style.width;\n }\n\n protected trackByFn(index: number): number {\n return index;\n }\n\n private handleAsyncScroll(scrolledIndex: number): void {\n this.scrollingDirection = scrolledIndex > this.scrolledIndex ? 'DOWN' : 'UP';\n this.scrolledIndex = scrolledIndex;\n\n const viewport = this.cdkVirtualScrollViewport();\n viewport.setTotalContentSize(this.virtualScrollAsyncItemsLength() * this.itemSize());\n\n const scrollOffset = viewport.measureScrollOffset('top');\n const endIndex = Math.ceil((scrollOffset + viewport.getViewportSize()) / this.itemSize());\n this.nbItemDisplayed = endIndex - scrolledIndex;\n const virtualScrollCurrentMultiple = Math.floor((scrolledIndex + this.nbItemDisplayed) / this.virtualScrollNbRows());\n\n if (this.dataRendered[scrolledIndex] || (this.scrollingDirection === 'UP' && this.dataRendered[scrolledIndex - 1])) {\n if (virtualScrollCurrentMultiple > this.virtualScrollLastMultiple) {\n this.virtualScrollSpliceFrom = virtualScrollCurrentMultiple * this.virtualScrollNbRows();\n this.scrollChange.emit({ start: virtualScrollCurrentMultiple * this.virtualScrollNbRows(), end: this.virtualScrollNbRows() });\n }\n } else {\n this.virtualScrollSpliceFrom = this.roundDown(scrolledIndex, this.virtualScrollNbRows());\n this.scrollChange.emit({ start: this.virtualScrollSpliceFrom, end: this.virtualScrollNbRows() });\n }\n\n this.virtualScrollLastMultiple = virtualScrollCurrentMultiple;\n }\n\n private setupMutationObserver(): void {\n const mutationObservable = new Observable<MutationRecord[]>((observer) => {\n this.mutationObserver = new MutationObserver((mutations) => {\n const filteredMutations = mutations.filter((mutation) =>\n mutation.target instanceof HTMLElement &&\n mutation.target.tagName.toLowerCase() === 'th' &&\n mutation.attributeName === 'style',\n );\n if (filteredMutations.length > 0) observer.next(filteredMutations);\n });\n\n const theadRef = this.theadRef();\n if (theadRef) {\n this.mutationObserver.observe(theadRef.nativeElement, { attributes: true, subtree: true, attributeFilter: ['style'] });\n }\n });\n\n mutationObservable.pipe(debounceTime(250), takeUntil(this.destroy$)).subscribe(() => {\n this.stickyFeatureHandler();\n });\n }\n\n private sortData(sortCriterias: EdsTableSort[], r: DATA[]): DATA[] {\n if (sortCriterias.every(c => c.order === 'none')) return r.slice();\n\n return r.sort((a, b) => {\n for (const criteria of sortCriterias) {\n const aValue = this.getObjProp(a, criteria.sort);\n const bValue = this.getObjProp(b, criteria.sort);\n\n if (aValue === bValue) continue;\n if (aValue === null || aValue === undefined) return criteria.order === 'asc' ? -1 : 1;\n if (bValue === null || bValue === undefined) return criteria.order === 'asc' ? 1 : -1;\n\n if (typeof aValue === 'boolean' && typeof bValue === 'boolean') {\n return criteria.order === 'asc' ? (aValue ? -1 : 1) : (bValue ? -1 : 1);\n }\n\n if (typeof aValue === 'number' && typeof bValue === 'number') {\n return criteria.order === 'asc' ? aValue - bValue : bValue - aValue;\n }\n\n if (aValue instanceof Date && bValue instanceof Date) {\n return criteria.order === 'asc' ? aValue.getTime() - bValue.getTime() : bValue.getTime() - aValue.getTime();\n }\n\n const aStr = typeof aValue === 'string' ? aValue.toLowerCase() : aValue;\n const bStr = typeof bValue === 'string' ? bValue.toLowerCase() : bValue;\n const comparison = criteria.order === 'asc' ? aStr.localeCompare(bStr) : bStr.localeCompare(aStr);\n\n if (comparison !== 0) return comparison;\n }\n return 0;\n });\n }\n\n private roundDown(index: number, nbRows: number): number {\n return Math.floor(index / nbRows) * nbRows;\n }\n\n private hasUndefinedInRange(startIndex: number, limit: number, dataRendered: DATA[]): number {\n for (let i = startIndex; i < startIndex + limit; i++) {\n if (dataRendered[i] === undefined) return i;\n }\n return -1;\n }\n\n private stickyFeatureHandler(): void {\n setTimeout(() => {\n const containerWidth = this.elementRef.nativeElement?.parentElement?.clientWidth || 0;\n\n const processStickyItems = (items: HTMLTableCellElement[]): void => {\n items.forEach(() => {\n const itemsSticky = items.filter((it) => it.classList.contains('eds-table__col--sticky'));\n\n const firstColItems = itemsSticky.filter((it) => it.offsetLeft + it.clientWidth < containerWidth);\n const lastColItems = itemsSticky.filter((it) => it.offsetLeft + it.clientWidth > containerWidth);\n\n firstColItems.forEach((it, j) => {\n const w = firstColItems[j - 1]?.clientWidth ?? 0;\n const offset = parseInt(firstColItems[j - 1]?.style.left, 10) || 0;\n it.style.left = (j === 0 ? 0 : w + offset) + 'px';\n\n if (j + 1 === firstColItems.length) {\n this.renderer.addClass(it, 'eds-table__col--sticky-shadowed-first');\n }\n });\n\n lastColItems.forEach((it, j) => {\n const w = lastColItems[j - 1]?.clientWidth ?? 0;\n const offset = parseInt(lastColItems[j - 1]?.style.right, 10) || 0;\n it.style.right = (j === 0 ? 0 : w + offset) + 'px';\n\n if (j + 1 === lastColItems.length) {\n this.renderer.addClass(it, 'eds-table__col--sticky-shadowed-last');\n }\n });\n });\n };\n\n const theadRef = this.theadRef();\n if (theadRef) {\n const thItems: HTMLTableCellElement[] = Array.from(theadRef.nativeElement.querySelectorAll('.eds-table__col--sticky'));\n processStickyItems(thItems);\n }\n\n const tbodyRef = this.tbodyRef();\n if (tbodyRef) {\n Array.from(tbodyRef.nativeElement.querySelectorAll('tr')).forEach((tr: HTMLTableRowElement) => {\n const tdItems: HTMLTableCellElement[] = Array.from(tr.querySelectorAll('.eds-table__col--sticky'));\n processStickyItems(tdItems);\n });\n }\n\n const tfootRef = this.tfootRef();\n if (tfootRef) {\n const tdItems: HTMLTableCellElement[] = Array.from(tfootRef.nativeElement.querySelectorAll('.eds-table__col--sticky'));\n processStickyItems(tdItems);\n }\n }, 250);\n }\n\n private getProps(row: DATA, filter: string): { key: string; match: boolean; value: string | number }[] {\n const isObject = (val: unknown): boolean => val !== null && typeof val === 'object';\n const addDelimiter = (a: string, b: string): string => (a && a !== '0' ? `${a}.${b}` : b);\n const props: { key: string; match: boolean; value: string | number }[] = [];\n\n const paths = (pathObj: object, head = ''): string[] => {\n return Object.entries(pathObj).reduce((product, [key, value]) => {\n const fullPath = addDelimiter(head, key);\n const match = (v: unknown): boolean =>\n v !== null && v !== undefined && typeof v !== 'object' && v.toString().toLowerCase().indexOf(filter.trim().toLowerCase()) !== -1;\n\n if (key !== '0' && typeof value !== 'object') {\n props.push({ key: addDelimiter(head, key), match: match(value), value });\n }\n\n return isObject(value) ? product.concat(paths(value, fullPath)) : product.concat(fullPath);\n }, [] as string[]);\n };\n\n paths(row as object);\n return props;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getObjProp(obj: DATA, prop: string): any {\n return prop ? prop.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), obj || self) : null;\n }\n}\n","@if (isVirtualScroll()) {\n <cdk-virtual-scroll-viewport\n #cdkVirtualScrollViewport\n #cdkVirtualScrollViewportElement\n class=\"eds-table__scroll-viewport\"\n [itemSize]=\"itemSize()\"\n [style.overflow]=\"cdkVirtualScrollViewportOverflowValue\"\n tabindex=\"0\">\n <table class=\"eds-table__inner\" [style.width]=\"hostWidth\">\n @if (captionTemplate) {\n <caption>\n <ng-template [ngTemplateOutlet]=\"captionTemplate\"></ng-template>\n </caption>\n }\n @if (headerTemplate) {\n <thead #theadRef [style.top]=\"stickyHeaderTopPosition\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n </thead>\n }\n @if (bodyTemplate) {\n <tbody #tbodyRef>\n <ng-container *cdkVirtualFor=\"let row of dataRendered; let i = index; trackBy: trackByFn\">\n @if (row) {\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i }\">\n </ng-template>\n } @else {\n <ng-template [ngTemplateOutlet]=\"skeletonLoading\"></ng-template>\n }\n </ng-container>\n\n @if (noDataTemplate && (data()?.length === 0 || dataRendered?.length === 0)) {\n <ng-template [ngTemplateOutlet]=\"noDataTemplate\"></ng-template>\n }\n </tbody>\n }\n @if (footerTemplate) {\n <tfoot #tfootRef [style.bottom]=\"stickyFooterBottomPosition\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </tfoot>\n }\n </table>\n </cdk-virtual-scroll-viewport>\n} @else {\n @if (captionTemplate) {\n <caption>\n <ng-template [ngTemplateOutlet]=\"captionTemplate\"></ng-template>\n </caption>\n }\n @if (headerTemplate) {\n <thead #theadRef>\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n </thead>\n }\n @if (bodyTemplate) {\n <tbody #tbodyRef>\n @for (row of dataRendered; let i = $index; track $index) {\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i }\">\n </ng-template>\n }\n @if (noDataTemplate && (data()?.length === 0 || dataRendered?.length === 0)) {\n <ng-template [ngTemplateOutlet]=\"noDataTemplate\"></ng-template>\n }\n </tbody>\n }\n @if (footerTemplate) {\n <tfoot #tfootRef>\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </tfoot>\n }\n}\n\n@if (isLoading()) {\n <div class=\"eds-table__loading-overlay\">\n <div class=\"eds-table__loading-spinner\"></div>\n </div>\n}\n\n<ng-template #skeletonLoading>\n <tr [style.height.px]=\"itemSize()\">\n @for (__ of nbCols; track $index) {\n <td><div class=\"eds-table__skeleton-line\"></div></td>\n }\n </tr>\n</ng-template>\n","import {\n Component,\n ChangeDetectionStrategy,\n OnInit,\n OnDestroy,\n ElementRef,\n output,\n input,\n viewChild,\n signal,\n} from '@angular/core';\nimport { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from 'rxjs';\n\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EDS_INPUT_ICON } from '@eui/eds/eds-input-icon';\nimport { EDS_INPUT_TEXT } from '@eui/eds/eds-input-text';\n\n/**\n * Filter component for eds-table.\n * Provides a search input that emits filter value changes with debouncing.\n */\n@Component({\n selector: 'eds-table-filter',\n templateUrl: './eds-table-filter.html',\n styleUrl: './eds-table-filter.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n ...EDS_ICON,\n ...EDS_INPUT_ICON,\n ...EDS_INPUT_TEXT,\n ],\n host: {\n class: 'eds-table-filter',\n '[attr.data-e2e]': '\"eds-table-filter\"',\n },\n})\nexport class EdsTableFilter implements OnInit, OnDestroy {\n /** Placeholder text for the filter input. */\n readonly placeholder = input<string>('Search...');\n\n /** Event emitted when the filter value changes (debounced). */\n readonly filterChange = output<string>();\n\n readonly filterInput = viewChild<ElementRef>('filterInput');\n\n /** Current filter value as a signal for reactive consumption. */\n readonly filterValue = signal<string | null>(null);\n\n form = new FormGroup({\n filter: new FormControl<string>(null),\n });\n\n private destroy$ = new Subject<boolean>();\n\n ngOnInit(): void {\n this.form.get('filter').valueChanges\n .pipe(debounceTime(500), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((value) => {\n this.setFilter(value);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /** Set the filter value and emit the change event. */\n setFilter(value: string | null): void {\n this.filterValue.set(value);\n this.filterChange.emit(value);\n this.form.get('filter').setValue(value, { emitEvent: false });\n }\n\n /** Reset the filter and focus the input. */\n resetFilter(): void {\n this.setFilter(null);\n this.form.reset();\n this.filterInput()?.nativeElement.focus();\n }\n}\n","<form [formGroup]=\"form\" class=\"eds-table-filter__form\">\n <eds-input-icon>\n <eds-icon icon=\"magnifying-glass\"></eds-icon>\n <input edsInputText\n formControlName=\"filter\"\n [attr.aria-label]=\"form.get('filter').value || placeholder()\"\n [placeholder]=\"placeholder()\"/>\n </eds-input-icon> \n</form>\n","import {\n Component,\n ChangeDetectionStrategy,\n computed,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\n\nimport { EDS_INPUT_CHECKBOX } from '@eui/eds/eds-input-checkbox';\nimport { EdsTableSelectableService } from './eds-table-selectable.service';\n\n/**\n * Component used with eds-table to add a 'select all' checkbox in the header row.\n * Applied as a directive on a `<tr>` element.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'tr[edsHeaderSelectable]',\n templateUrl: './eds-table-selectable-header.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ...EDS_INPUT_CHECKBOX,\n ],\n host: {\n class: 'eds-table__header-selectable',\n },\n})\nexport class EdsTableSelectableHeader<DATA = unknown> {\n /** Whether the select-all checkbox is displayed. */\n readonly edsHeaderSelectable = input(true, { transform: booleanAttribute });\n\n private selectableService = inject<EdsTableSelectableService<DATA>>(EdsTableSelectableService);\n\n protected isChecked = computed(() => this.selectableService.isAllRowsSelected());\n protected isIndeterminate = computed(() => this.selectableService.isIndeterminate());\n\n protected get ariaLabel(): string {\n if (this.isIndeterminate()) return 'Indeterminate';\n if (this.isChecked()) return 'Checked';\n return 'Unchecked';\n }\n\n protected toggleCheckedState(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n if (checked) {\n this.selectableService.selectAllRows();\n } else {\n this.selectableService.unselectAllRows();\n }\n }\n}\n","@if (edsHeaderSelectable()) {\n <th class=\"eds-table__cell-select\">\n <div class=\"eds-table__cell-select-checkbox-container\">\n <input\n edsInputCheckbox\n [attr.aria-label]=\"ariaLabel\"\n [checked]=\"isChecked()\"\n [indeterminate]=\"isIndeterminate()\"\n (click)=\"toggleCheckedState($event)\" />\n </div>\n </th>\n}\n<ng-content />\n","import {\n Component,\n ChangeDetectionStrategy,\n computed,\n booleanAttribute,\n inject,\n input,\n effect,\n ElementRef,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { Subject, fromEvent, takeUntil } from 'rxjs';\n\nimport { EDS_INPUT_CHECKBOX } from '@eui/eds/eds-input-checkbox';\nimport { EdsTableSelectableService } from './eds-table-selectable.service';\n\n/**\n * Component used with eds-table to make a row selectable.\n * Applied as a directive on a `<tr>` element.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'tr[edsDataSelectable]',\n templateUrl: './eds-table-selectable-row.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ...EDS_INPUT_CHECKBOX,\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class EdsTableSelectableRow<DATA = unknown> implements OnInit, OnDestroy {\n /** Data of the row. */\n readonly edsDataSelectable = input<DATA>();\n\n /** Whether only one row can be selected at a time. */\n readonly isSingleSelectable = input(false, { transform: booleanAttribute });\n\n /** Whether the row is pre-selected. */\n readonly isChecked = input(false, { transform: booleanAttribute });\n\n /** Whether keyboard-based selection (ctrl+click, shift+click) is enabled. */\n readonly isKeyboardSelectable = input(false, { transform: booleanAttribute });\n\n hostClasses = computed(() => {\n return [\n 'eds-table__row',\n this.edsDataSelectable() ? 'eds-table__row--selectable' : '',\n this.currentIsChecked() ? 'eds-table__row--selected' : '',\n ].join(' ').trim();\n });\n\n protected currentIsChecked = computed(() => {\n const selected = this.selectableService.selectedRows();\n const data = this.edsDataSelectable();\n const propId = this.selectableService.getPropId();\n return data ? selected.some(s => s[propId] === data[propId]) : false;\n });\n\n private selectableService = inject<EdsTableSelectableService<DATA>>(EdsTableSelectableService);\n private elementRef = inject(ElementRef);\n private destroy$ = new Subject<boolean>();\n\n constructor() {\n effect(() => {\n const checked = this.isChecked();\n const data = this.edsDataSelectable();\n if (checked && data) {\n this.selectableService.selectRow(data);\n }\n });\n }\n\n ngOnInit(): void {\n const data = this.edsDataSelectable();\n if (this.isKeyboardSelectable() && data) {\n fromEvent<PointerEvent>(this.elementRef.nativeElement, 'click')\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => {\n if (event.ctrlKey) {\n if (!this.currentIsChecked()) {\n this.selectableService.selectRow(data);\n } else {\n this.selectableService.unselectRow(data);\n }\n } else if (event.shiftKey) {\n const rows = this.selectableService.getRows();\n const lastSelectedRow = this.selectableService.getLastSelectedRow();\n const lastSelectedRowPosition = rows.indexOf(lastSelectedRow);\n const position = rows.indexOf(data);\n\n const range = lastSelectedRowPosition > position\n ? rows.slice(position, lastSelectedRowPosition + 1)\n : rows.slice(lastSelectedRowPosition, position + 1);\n\n this.selectableService.selectRows(range);\n window.getSelection()?.empty();\n } else {\n this.selectableService.selectRows([data]);\n }\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n protected toggleCheckedState(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n const data = this.edsDataSelectable();\n\n if (checked) {\n if (this.isSingleSelectable()) {\n this.selectableService.selectSingleRow(data);\n } else {\n this.selectableService.selectRow(data);\n }\n } else {\n this.selectableService.unselectRow(data);\n }\n }\n}\n","@if (edsDataSelectable()) {\n <td class=\"eds-table__cell-select\">\n <div class=\"eds-table__cell-select-checkbox-container\">\n <input\n edsInputCheckbox\n [attr.aria-label]=\"currentIsChecked() ? 'Row selected' : 'Row not selected'\"\n [checked]=\"currentIsChecked()\"\n (change)=\"toggleCheckedState($event)\" />\n </div>\n </td>\n}\n<ng-content />\n","import {\n Component,\n ChangeDetectionStrategy,\n computed,\n booleanAttribute,\n inject,\n input,\n effect,\n} from '@angular/core';\n\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EDS_ICON_BUTTON } from '@eui/eds/eds-icon-button';\n\nimport { EdsTableSortService } from './eds-table-sort.service';\nimport { EdsTableSortOrder } from './eds-table-sort.model';\n\n/**\n * Component used with eds-table to make a column header sortable.\n * Applied as a directive on a `<th>` element.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'th[edsSortable]',\n templateUrl: './eds-table-sortable-col.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ...EDS_ICON,\n ...EDS_ICON_BUTTON,\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.aria-sort]': 'ariaSort()',\n },\n})\nexport class EdsTableSortableCol {\n /** Property name to sort on. */\n readonly sortOn = input<string>();\n\n /** Initial sort order for this column. */\n readonly sortOrder = input<EdsTableSortOrder>('asc');\n\n /** Whether this column is sorted by default on init. */\n readonly defaultOrder = input(false, { transform: booleanAttribute });\n\n /** Whether sorting is disabled for this column. */\n readonly sortDisabled = input(false, { transform: booleanAttribute });\n\n /** Whether multi-column sorting is enabled for this column. */\n readonly isMultiSortable = input(false, { transform: booleanAttribute });\n\n hostClasses = computed(() => {\n return [\n 'eds-table__sortable-col',\n this.sortDisabled() ? 'eds-table__sortable-col--disabled' : '',\n ].join(' ').trim();\n });\n\n ariaSort = computed((): 'ascending' | 'descending' | 'none' => {\n const order = this.order();\n if (order === 'asc') return 'ascending';\n if (order === 'desc') return 'descending';\n return 'none';\n });\n\n protected order = computed(() => {\n const sorts = this.sortService.sorts();\n const match = sorts.find(s => s.sort === this.sortOn());\n return match ? match.order : 'none';\n });\n\n protected isSorted = computed(() => {\n const sorts = this.sortService.sorts();\n return sorts.some(s => s.sort === this.sortOn());\n });\n\n protected sortedIndex = computed(() => {\n const sorts = this.sortService.sorts();\n if (sorts.length <= 1) return null;\n const idx = sorts.findIndex(s => s.sort === this.sortOn());\n return idx >= 0 ? idx + 1 : null;\n });\n\n private sortService = inject(EdsTableSortService);\n\n constructor() {\n effect(() => {\n if (this.defaultOrder()) {\n this.sortService.setSort(this.sortOn(), this.sortOrder(), this.isMultiSortable());\n }\n });\n }\n\n protected changeSort(): void {\n if (this.sortDisabled()) return;\n\n const current = this.order();\n let next: EdsTableSortOrder;\n\n if (current === 'asc') {\n next = 'desc';\n } else if (current === 'desc') {\n next = 'none';\n } else {\n next = 'asc';\n }\n\n this.sortService.setSort(this.sortOn(), next, this.isMultiSortable());\n }\n}\n","<div class=\"eds-table__sortable-col-content\">\n <div class=\"eds-table__sortable-col-content-label\">\n <ng-content />\n\n @if (order() === 'none' && !sortDisabled()) {\n <button edsIconButton icon=\"arrows-down-up:core\" [ariaLabel]=\"'Click to sort ascending'\" (click)=\"changeSort()\"></button>\n }\n @if (order() === 'asc' && isSorted() && !sortDisabled()) {\n <button edsIconButton icon=\"arrow-up:core\" [ariaLabel]=\"'Click to sort descending'\" (click)=\"changeSort()\"></button>\n }\n @if (order() === 'desc' && isSorted() && !sortDisabled()) {\n <button edsIconButton icon=\"arrow-down:core\" [ariaLabel]=\"'Click to sort none'\" (click)=\"changeSort()\"></button>\n }\n\n @if (sortedIndex() && !sortDisabled()) {\n <span class=\"eds-table__sortable-col-multisort-index\">{{ sortedIndex() }}</span>\n }\n </div>\n</div>\n","import { Directive } from '@angular/core';\n\n/**\n * Directive to mark a column (th or td) as sticky.\n * Only first or last columns can be sticky.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'th[edsStickyCol], td[edsStickyCol]',\n host: {\n class: 'eds-table__col--sticky',\n },\n})\nexport class EdsTableStickyCol {}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n/**\n * Directive to activate the expandable feature on a table row.\n * Adds an entry animation when the row is rendered.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'tr[edsExpandableRow]',\n host: {\n class: 'eds-table__expandable-row',\n },\n})\nexport class EdsTableExpandableRow {\n private el = inject(ElementRef);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Pipe to highlight matching text in table cells when used with the filter feature.\n *\n * @example\n * ```html\n * <td><span [innerHTML]=\"row.year | edsTableHighlight: filterString\"></span></td>\n * ```\n */\n@Pipe({\n name: 'edsTableHighlight',\n})\nexport class EdsTableHighlightPipe implements PipeTransform {\n /**\n * Wraps matching text with a `<span>` element having the specified CSS class.\n *\n * @param value Data displayed in a cell.\n * @param strFilter Search string to highlight.\n * @param className CSS class to add to the highlight span. Default: 'eds-u-text-search'\n */\n transform(value: string, strFilter: string, className = 'eds-u-text-search'): string {\n if (!value) return '';\n if (!strFilter || strFilter.length === 0) return value;\n\n const generateVariants = (str: string): string[] => {\n const variants = new Set<string>([str]);\n\n for (let j = 1; j <= 3; j++) {\n for (const separator of ['.', ',', ' ']) {\n let newVariant = str;\n let i = j;\n\n while (i < newVariant.length) {\n newVariant = newVariant.slice(0, i) + separator + newVariant.slice(i);\n i += 4;\n }\n variants.add(newVariant);\n }\n }\n return Array.from(variants);\n };\n\n const isNumber = (str: string): boolean => !isNaN(Number(str)) && str.trim() !== '';\n const variants = isNumber(strFilter) ? generateVariants(strFilter) : [strFilter];\n const regex = new RegExp(`(${variants.map(v => v.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')).join('|')})`, 'gi');\n\n return value.toString().replace(regex, `<span class=\"${className}\">$1</span>`);\n }\n}\n","import { EdsTable } from './eds-table';\nimport { EdsTableFilter } from './eds-table-filter';\nimport { EdsTableSelectableHeader } from './eds-table-selectable-header';\nimport { EdsTableSelectableRow } from './eds-table-selectable-row';\nimport { EdsTableSortableCol } from './eds-table-sortable-col';\nimport { EdsTableStickyCol } from './eds-table-sticky-col';\nimport { EdsTableExpandableRow } from './eds-table-expandable-row';\nimport { EdsTableHighlightPipe } from './eds-table-highlight.pipe';\nimport { EdsTableTemplate } from './eds-table-template';\n\nexport { EdsTable } from './eds-table';\nexport { EdsTableFilter } from './eds-table-filter';\nexport { EdsTableSelectableHeader } from './eds-table-selectable-header';\nexport { EdsTableSelectableRow } from './eds-table-selectable-row';\nexport { EdsTableSortableCol } from './eds-table-sortable-col';\nexport { EdsTableStickyCol } from './eds-table-sticky-col';\nexport { EdsTableExpandableRow } from './eds-table-expandable-row';\nexport { EdsTableHighlightPipe } from './eds-table-highlight.pipe';\nexport { EdsTableTemplate } from './eds-table-template';\nexport { EdsTableSelectableService } from './eds-table-selectable.service';\nexport { EdsTableSortService } from './eds-table-sort.service';\nexport { EdsTableSort, EdsTableSortOrder } from './eds-table-sort.model';\n\n/** Convenience array for importing all eds-table components. */\nexport const EDS_TABLE = [\n EdsTable,\n EdsTableFilter,\n EdsTableSelectableHeader,\n EdsTableSelectableRow,\n EdsTableSortableCol,\n EdsTableStickyCol,\n EdsTableExpandableRow,\n EdsTableHighlightPipe,\n EdsTableTemplate,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"eui-eds-eds-table.mjs","sources":["../../eds-table/eds-table-selectable.service.ts","../../eds-table/eds-table-sort.service.ts","../../eds-table/eds-table-template.ts","../../eds-table/eds-table.ts","../../eds-table/eds-table.html","../../eds-table/eds-table-filter.ts","../../eds-table/eds-table-filter.html","../../eds-table/eds-table-selectable-header.ts","../../eds-table/eds-table-selectable-header.html","../../eds-table/eds-table-selectable-row.ts","../../eds-table/eds-table-selectable-row.html","../../eds-table/eds-table-sortable-col.ts","../../eds-table/eds-table-sortable-col.html","../../eds-table/eds-table-sticky-col.ts","../../eds-table/eds-table-expandable-row.ts","../../eds-table/eds-table-highlight.pipe.ts","../../eds-table/index.ts","../../eds-table/eui-eds-eds-table.ts"],"sourcesContent":["import { Injectable, signal, computed } from '@angular/core';\n\n/**\n * Service to manage the selection state of rows in an eds-table.\n * Uses signals to store and expose the current selection.\n */\n@Injectable()\nexport class EdsTableSelectableService<DATA = unknown> {\n /** Currently selected rows as a readonly signal. */\n readonly selectedRows = computed(() => this._selectedRows());\n\n /** Whether all rows are currently selected. */\n readonly isAllRowsSelected = computed(() => {\n const rows = this._rows();\n const selected = this._selectedRows();\n return rows.length > 0 && rows.length === selected.length;\n });\n\n /** Whether some (but not all) rows are selected. */\n readonly isIndeterminate = computed(() => {\n const rows = this._rows();\n const selected = this._selectedRows();\n return selected.length > 0 && selected.length < rows.length;\n });\n\n private readonly _selectedRows = signal<DATA[]>([]);\n private readonly _rows = signal<DATA[]>([]);\n private _lastSelectedRow: DATA | null = null;\n private _propId = 'id';\n\n /** Sets the property name used to identify rows as unique. */\n setPropId(value: string): void {\n this._propId = value;\n }\n\n /** Gets the current property name used to identify rows. */\n getPropId(): string {\n return this._propId;\n }\n\n /** Registers a set of rows as selectable. */\n registerRows(rows: DATA[]): void {\n this._rows.set([...rows]);\n }\n\n /** Unregisters all rows. */\n unregisterRows(): void {\n this._rows.set([]);\n }\n\n /** Selects a single row (adds to selection). */\n selectRow(row: DATA): void {\n const current = this._selectedRows();\n if (!current.find(r => r[this._propId] === row[this._propId])) {\n this._selectedRows.set([...current, row]);\n }\n this._lastSelectedRow = row;\n }\n\n /** Selects only a single row, replacing any existing selection. */\n selectSingleRow(row: DATA): void {\n this._selectedRows.set([row]);\n this._lastSelectedRow = row;\n }\n\n /** Unselects a row. */\n unselectRow(row: DATA): void {\n if (row) {\n const value = this._selectedRows().filter(r => r[this._propId] !== row[this._propId]);\n this._selectedRows.set(value);\n }\n }\n\n /** Selects a set of rows (replaces current selection). */\n selectRows(rows: DATA[]): void {\n this._selectedRows.set([...rows]);\n this._lastSelectedRow = rows[rows.length - 1] ?? null;\n }\n\n /** Select all registered rows. */\n selectAllRows(): void {\n this._selectedRows.set([...this._rows()]);\n const rows = this._rows();\n this._lastSelectedRow = rows[rows.length - 1] ?? null;\n }\n\n /** Unselect all rows. */\n unselectAllRows(): void {\n this._selectedRows.set([]);\n this._lastSelectedRow = null;\n }\n\n /** Gets the list of registered rows. */\n getRows(): DATA[] {\n return this._rows();\n }\n\n /** Gets the last selected row. */\n getLastSelectedRow(): DATA | null {\n return this._lastSelectedRow;\n }\n}\n","import { Injectable, signal, computed } from '@angular/core';\n\nimport { EdsTableSort, EdsTableSortOrder } from './eds-table-sort.model';\n\n/**\n * Service to manage the sorting state of columns in an eds-table.\n * Uses signals to store and expose the current sorting values.\n */\n@Injectable()\nexport class EdsTableSortService {\n /** Current sorting configuration as a readonly signal. */\n readonly sorts = computed(() => this._sorts());\n\n private readonly _sorts = signal<EdsTableSort[]>([]);\n private isCurrentMultiSortable = false;\n\n /**\n * Sets the ordering for a given column.\n * @param sort The name of the column to sort.\n * @param order The sorting order (asc, desc, none).\n * @param isMultiSortable Whether multi-sorting is allowed.\n */\n setSort(sort: string, order: EdsTableSortOrder, isMultiSortable: boolean): void {\n if (isMultiSortable && this.isCurrentMultiSortable) {\n let sortValues = this._sorts();\n if (!order || order === 'none') {\n sortValues = sortValues.filter(s => s.sort !== sort);\n this._sorts.set(sortValues);\n } else {\n if (sortValues.find(s => s.sort === sort)) {\n sortValues = sortValues.map(s => s.sort === sort ? ({ ...s, order }) : s);\n this._sorts.set(sortValues);\n } else {\n this._sorts.set([...sortValues, { sort, order }]);\n }\n }\n } else {\n this._sorts.set(sort && order && order !== 'none' ? [{ sort, order }] : []);\n }\n\n this.isCurrentMultiSortable = isMultiSortable;\n }\n\n /**\n * Sets the full list of sorting values.\n * @param sorts The list of sorts to apply.\n */\n setSorts(sorts: EdsTableSort[]): void {\n this._sorts.set(sorts);\n this.isCurrentMultiSortable = sorts.length > 1;\n }\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\n\n/**\n * Directive for defining named template references within eds-table.\n * Provides a way to identify templates by name (header, body, footer, noData, caption).\n *\n * @usageNotes\n * ```html\n * <ng-template edsTableTemplate=\"header\">\n * <tr><th>Column</th></tr>\n * </ng-template>\n * <ng-template let-row edsTableTemplate=\"body\">\n * <tr><td>{{ row.value }}</td></tr>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[edsTableTemplate]',\n})\nexport class EdsTableTemplate<T = never> {\n template = inject<TemplateRef<T>>(TemplateRef);\n\n readonly name = input<string>(undefined, { alias: 'edsTableTemplate' });\n\n getType(): string {\n return this.name();\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n AfterContentInit,\n AfterViewInit,\n OnDestroy,\n OnInit,\n TemplateRef,\n ElementRef,\n Renderer2,\n ViewEncapsulation,\n booleanAttribute,\n numberAttribute,\n inject,\n input,\n output,\n computed,\n contentChildren,\n viewChild,\n effect,\n} from '@angular/core';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { Subject, debounceTime, takeUntil, skip, Observable } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\n\nimport { EdsTableSelectableService } from './eds-table-selectable.service';\nimport { EdsTableSortService } from './eds-table-sort.service';\nimport { EdsTableTemplate } from './eds-table-template';\nimport { EdsTableSort, EdsTableSortOrder } from './eds-table-sort.model';\n\nexport type EdsTableScrollDirection = 'UP' | 'DOWN';\n\n/**\n * High-performance data table component with support for virtual scrolling,\n * pagination, sorting, filtering, row selection, sticky headers/footers/columns,\n * responsive layouts, and async data loading.\n *\n * Uses template directives (`edsTableTemplate`) for header, body, footer, noData and caption slots.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <table edsTable [data]=\"data\" edsTableCompact>\n * <ng-template edsTableTemplate=\"header\">\n * <tr>\n * <th>Country</th>\n * <th>Year</th>\n * </tr>\n * </ng-template>\n * <ng-template let-row edsTableTemplate=\"body\">\n * <tr>\n * <td>{{ row.country }}</td>\n * <td>{{ row.year }}</td>\n * </tr>\n * </ng-template>\n * </table>\n * ```\n *\n * ### Imports\n * ```ts\n * import { EDS_TABLE } from '@eui/eds/eds-table';\n * imports: [...EDS_TABLE]\n * ```\n */\n@Component({\n selector: 'eds-table, table[edsTable]',\n templateUrl: './eds-table.html',\n styleUrl: './eds-table.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n ScrollingModule,\n ],\n providers: [EdsTableSelectableService, EdsTableSortService],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': '\"eds-table\"',\n },\n})\nexport class EdsTable<DATA = unknown> implements AfterContentInit, AfterViewInit, OnDestroy, OnInit {\n /** Data to display in the table. */\n readonly data = input<DATA[]>([]);\n\n /** Unique property identifier for rows. */\n readonly propId = input('id');\n\n /** Row height used by virtual scroll calculation. */\n readonly itemSize = input(41, { transform: numberAttribute });\n\n /** Rows to be pre-selected. */\n readonly preselectedRows = input<DATA[]>([]);\n\n /** Whether the table uses virtual scroll. Use `eds-table` selector for virtual scroll. */\n readonly isVirtualScroll = input(false, { transform: booleanAttribute });\n\n /** Whether to cache data when scrolling (virtual scroll). */\n readonly isVirtualScrollCache = input(false, { transform: booleanAttribute });\n\n /** Whether the table header is sticky. */\n readonly hasStickyHeader = input(false, { transform: booleanAttribute });\n\n /** Whether the table footer is sticky. */\n readonly hasStickyFooter = input(false, { transform: booleanAttribute });\n\n /** Whether columns are sticky. */\n readonly hasStickyCols = input(false, { transform: booleanAttribute });\n\n /** Whether the table is responsive (cards layout on mobile). */\n readonly edsTableResponsive = input(true, { transform: booleanAttribute });\n\n /** Whether the table uses async data (server-side pagination/sorting/filtering). */\n readonly isAsync = input(false, { transform: booleanAttribute });\n\n /** Total length of async virtual scroll items. */\n readonly virtualScrollAsyncItemsLength = input(0, { transform: numberAttribute });\n\n /** Number of rows to load per virtual scroll batch. */\n readonly virtualScrollNbRows = input(50, { transform: numberAttribute });\n\n /** Whether a loading state is displayed. */\n readonly isLoading = input(false, { transform: booleanAttribute });\n\n /** Whether 'select all' only selects visible rows (current page). */\n readonly isSelectOnlyVisibleRows = input(true, { transform: booleanAttribute });\n\n /** Whether the table uses bordered styles. */\n readonly edsTableBordered = input(false, { transform: booleanAttribute });\n\n /** Whether the table uses a fixed layout. */\n readonly edsTableFixedLayout = input(false, { transform: booleanAttribute });\n\n /** Whether the table uses compact styling. */\n readonly edsTableCompact = input(false, { transform: booleanAttribute });\n\n /** Whether the table uses flat styling (no borders, no background — suitable for embedding in dashboard cards). */\n readonly isFlat = input(false, { transform: booleanAttribute });\n\n /** Event emitted on virtual scroll changes. */\n readonly scrollChange = output<{ start: number; end: number }>();\n\n /** Event emitted when the row selection changes. */\n readonly rowsSelect = output<DATA[]>();\n\n /** Event emitted when sort changes. */\n readonly sortChange = output<EdsTableSort[]>();\n\n protected headerTemplate: TemplateRef<HTMLElement>;\n protected bodyTemplate: TemplateRef<{ $implicit: DATA; index: number }>;\n protected footerTemplate: TemplateRef<HTMLElement>;\n protected noDataTemplate: TemplateRef<HTMLElement>;\n protected captionTemplate: TemplateRef<HTMLElement>;\n protected nbCols: HTMLTableCellElement[] = [];\n protected dataRendered: DATA[] = [];\n protected cdkVirtualScrollViewportOverflowValue: 'hidden' | 'auto' = 'auto';\n\n readonly templates = contentChildren(EdsTableTemplate);\n\n protected readonly cdkVirtualScrollViewport = viewChild<CdkVirtualScrollViewport>('cdkVirtualScrollViewport');\n protected readonly cdkVirtualScrollViewportElement = viewChild('cdkVirtualScrollViewportElement', { read: ElementRef });\n readonly theadRef = viewChild<ElementRef<HTMLElement>>('theadRef');\n readonly tbodyRef = viewChild<ElementRef<HTMLElement>>('tbodyRef');\n readonly tfootRef = viewChild<ElementRef<HTMLElement>>('tfootRef');\n\n hostClasses = computed(() => {\n return [\n 'eds-table eds-table-default',\n this.isVirtualScroll() ? 'eds-table--virtual-scroll' : '',\n this.hasStickyHeader() ? 'eds-table--sticky eds-table--sticky-header' : '',\n this.hasStickyFooter() ? 'eds-table--sticky eds-table--sticky-footer' : '',\n this.hasStickyCols() ? 'eds-table--sticky eds-table--sticky-cols' : '',\n this.edsTableResponsive() ? 'eds-table-default--responsive' : '',\n this.isLoading() ? 'eds-table--loading' : '',\n this.edsTableFixedLayout() ? 'eds-table--fixed-layout' : '',\n this.edsTableBordered() ? 'eds-table--bordered' : '',\n this.edsTableCompact() ? 'eds-table--compact' : '',\n this.isFlat() ? 'eds-table--flat' : '',\n ].join(' ').trim();\n });\n\n private destroy$ = new Subject<boolean>();\n private virtualScrollLastMultiple = 0;\n private virtualScrollSpliceFrom = 0;\n private scrolledIndex = 0;\n private nbItemDisplayed = 0;\n private scrollingDirection: EdsTableScrollDirection;\n private mutationObserver: MutationObserver;\n private dataSrc: DATA[] = [];\n private dataInitialized = false;\n private previousSorts: EdsTableSort[] = [];\n private selectionInitialized = false;\n\n private elementRef = inject(ElementRef);\n private selectableService = inject<EdsTableSelectableService<DATA>>(EdsTableSelectableService);\n private sortService = inject(EdsTableSortService);\n private renderer = inject(Renderer2);\n\n constructor() {\n // Data effect\n effect(() => {\n const data = this.data() ?? [];\n const virtualScrollNbRows = this.virtualScrollNbRows();\n\n this.selectableService.setPropId(this.propId());\n\n if (this.isVirtualScroll()) {\n if (!this.dataInitialized) {\n this.dataInitialized = true;\n this.dataRendered = [...data, ...Array.from<DATA>({ length: this.virtualScrollAsyncItemsLength() - data.length })];\n this.selectableService.unregisterRows();\n this.selectableService.registerRows(this.dataRendered);\n } else if (this.isAsync()) {\n const source = [...this.dataRendered];\n if (this.isVirtualScrollCache()) {\n this.dataRendered = [\n ...source.slice(0, this.virtualScrollSpliceFrom),\n ...data,\n ...source.slice(this.virtualScrollSpliceFrom + virtualScrollNbRows),\n ];\n } else {\n this.dataRendered = [\n ...Array.from<DATA>({ length: this.virtualScrollSpliceFrom - this.nbItemDisplayed }),\n ...source.slice(this.virtualScrollSpliceFrom - this.nbItemDisplayed, this.virtualScrollSpliceFrom),\n ...data,\n ...source.slice(this.virtualScrollSpliceFrom + virtualScrollNbRows, this.virtualScrollSpliceFrom + virtualScrollNbRows + this.nbItemDisplayed),\n ...Array.from<DATA>({ length: this.virtualScrollAsyncItemsLength() - (this.virtualScrollSpliceFrom + virtualScrollNbRows + this.nbItemDisplayed) }),\n ];\n }\n\n this.selectableService.unregisterRows();\n this.selectableService.registerRows(this.dataRendered);\n\n if (this.scrollingDirection === 'DOWN') {\n if ((this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== -1 ||\n (this.scrolledIndex === this.virtualScrollSpliceFrom && !this.dataRendered[this.scrolledIndex - 1])) &&\n this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== this.dataRendered.length\n ) {\n this.cdkVirtualScrollViewport()?.scrollToIndex(this.virtualScrollSpliceFrom + 1);\n }\n }\n\n if (this.scrollingDirection === 'UP') {\n if (this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== -1) {\n this.cdkVirtualScrollViewport()?.scrollToIndex(this.virtualScrollSpliceFrom + 1);\n }\n }\n\n this.stickyFeatureHandler();\n }\n } else {\n this.dataSrc = data ? [...data] : [];\n this.selectableService.registerRows(this.dataSrc);\n this.dataRendered = this.dataSrc;\n this.dataInitialized = true;\n }\n });\n\n // Sort effect — re-sort data when sort configuration changes\n effect(() => {\n const sorts = this.sortService.sorts();\n if (sorts.length > 0 && !this.isAsync() && this.dataInitialized) {\n this.dataRendered = this.sortData(sorts, [...this.dataSrc]);\n }\n // Emit sort changes\n if (this.dataInitialized && sorts !== this.previousSorts) {\n this.sortChange.emit(sorts);\n this.previousSorts = sorts;\n }\n });\n\n // Selection effect — emit row selection changes\n effect(() => {\n const selected = this.selectableService.selectedRows();\n if (this.selectionInitialized) {\n this.rowsSelect.emit(selected);\n }\n this.selectionInitialized = true;\n });\n\n // Preselected rows effect\n effect(() => {\n const preselectedRows = this.preselectedRows();\n if (preselectedRows?.length > 0) {\n this.selectableService.selectRows(preselectedRows);\n }\n });\n }\n\n ngOnInit(): void {\n this.dataSrc = [...this.data()];\n }\n\n ngAfterContentInit(): void {\n this.templates().forEach((item) => {\n const type = item.getType();\n if (type === 'header') this.headerTemplate = item.template;\n if (type === 'body') this.bodyTemplate = item.template;\n if (type === 'footer') this.footerTemplate = item.template;\n if (type === 'noData') this.noDataTemplate = item.template;\n if (type === 'caption') this.captionTemplate = item.template;\n });\n }\n\n ngAfterViewInit(): void {\n this.stickyFeatureHandler();\n\n if (this.isVirtualScroll()) {\n const viewport = this.cdkVirtualScrollViewport();\n if (viewport) {\n viewport.renderedRangeStream\n .pipe(debounceTime(500), takeUntil(this.destroy$))\n .subscribe(() => this.stickyFeatureHandler());\n\n const theadRef = this.theadRef();\n if (theadRef) {\n const theadElements = Array.from(theadRef.nativeElement.querySelectorAll('th'));\n this.nbCols = new Array(theadElements.length);\n }\n\n viewport.scrolledIndexChange\n .pipe(debounceTime(500), takeUntil(this.destroy$), skip(1))\n .subscribe((scrolledIndex: number) => {\n if (this.isAsync()) {\n this.handleAsyncScroll(scrolledIndex);\n }\n });\n }\n\n const viewportElement = this.cdkVirtualScrollViewportElement();\n if (viewportElement && viewport) {\n viewportElement.nativeElement.style.height = viewport.elementRef.nativeElement.parentElement.clientHeight + 'px';\n }\n }\n\n this.setupMutationObserver();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n this.mutationObserver?.disconnect();\n }\n\n /** Moves an element within the rendered data array. */\n moveItem(itemId: number | string, fromIndex: number, toIndex: number): void {\n const itemPosition = this.dataRendered.findIndex(d => d && d[this.propId()] === itemId);\n const move = toIndex - fromIndex;\n const source = [...this.dataRendered];\n const [elementToMove] = source.splice(itemPosition, 1);\n source.splice(itemPosition + move, 0, elementToMove);\n this.dataRendered = source;\n }\n\n /** Select all rows. */\n selectAllRows(): void {\n this.selectableService.selectAllRows();\n }\n\n /** Unselect all rows. */\n unselectAllRows(): void {\n this.selectableService.unselectAllRows();\n }\n\n /** Filters data based on a string. Returns matching rows. */\n filterData(filter: string, r: DATA[]): DATA[] {\n const rows = filter\n ? r.filter((row) => {\n const matching = this.getProps(row, filter).filter((p) => p.match);\n return matching.length > 0;\n })\n : r;\n\n this.selectableService.unregisterRows();\n this.selectableService.registerRows(rows);\n return rows;\n }\n\n /** Set sort programmatically. */\n setSort(sorts: EdsTableSort[]): void {\n this.sortService.setSorts(sorts);\n }\n\n protected get stickyHeaderTopPosition(): string {\n const viewport = this.cdkVirtualScrollViewport();\n if (!viewport || !viewport['_renderedContentOffset']) return '0';\n return (-viewport['_renderedContentOffset'] - 1) + 'px';\n }\n\n protected get stickyFooterBottomPosition(): string {\n const viewport = this.cdkVirtualScrollViewport();\n if (!viewport || !viewport['_renderedContentOffset']) return '-1px';\n return viewport['_renderedContentOffset'] - 1 + 'px';\n }\n\n protected get cdkVirtualScrollViewportWidth(): string {\n return (this.elementRef.nativeElement?.parentElement?.clientWidth || 0) + 'px';\n }\n\n protected get hostWidth(): number {\n return this.elementRef.nativeElement.style.width;\n }\n\n protected trackByFn(index: number): number {\n return index;\n }\n\n private handleAsyncScroll(scrolledIndex: number): void {\n this.scrollingDirection = scrolledIndex > this.scrolledIndex ? 'DOWN' : 'UP';\n this.scrolledIndex = scrolledIndex;\n\n const viewport = this.cdkVirtualScrollViewport();\n viewport.setTotalContentSize(this.virtualScrollAsyncItemsLength() * this.itemSize());\n\n const scrollOffset = viewport.measureScrollOffset('top');\n const endIndex = Math.ceil((scrollOffset + viewport.getViewportSize()) / this.itemSize());\n this.nbItemDisplayed = endIndex - scrolledIndex;\n const virtualScrollCurrentMultiple = Math.floor((scrolledIndex + this.nbItemDisplayed) / this.virtualScrollNbRows());\n\n if (this.dataRendered[scrolledIndex] || (this.scrollingDirection === 'UP' && this.dataRendered[scrolledIndex - 1])) {\n if (virtualScrollCurrentMultiple > this.virtualScrollLastMultiple) {\n this.virtualScrollSpliceFrom = virtualScrollCurrentMultiple * this.virtualScrollNbRows();\n this.scrollChange.emit({ start: virtualScrollCurrentMultiple * this.virtualScrollNbRows(), end: this.virtualScrollNbRows() });\n }\n } else {\n this.virtualScrollSpliceFrom = this.roundDown(scrolledIndex, this.virtualScrollNbRows());\n this.scrollChange.emit({ start: this.virtualScrollSpliceFrom, end: this.virtualScrollNbRows() });\n }\n\n this.virtualScrollLastMultiple = virtualScrollCurrentMultiple;\n }\n\n private setupMutationObserver(): void {\n const mutationObservable = new Observable<MutationRecord[]>((observer) => {\n this.mutationObserver = new MutationObserver((mutations) => {\n const filteredMutations = mutations.filter((mutation) =>\n mutation.target instanceof HTMLElement &&\n mutation.target.tagName.toLowerCase() === 'th' &&\n mutation.attributeName === 'style',\n );\n if (filteredMutations.length > 0) observer.next(filteredMutations);\n });\n\n const theadRef = this.theadRef();\n if (theadRef) {\n this.mutationObserver.observe(theadRef.nativeElement, { attributes: true, subtree: true, attributeFilter: ['style'] });\n }\n });\n\n mutationObservable.pipe(debounceTime(250), takeUntil(this.destroy$)).subscribe(() => {\n this.stickyFeatureHandler();\n });\n }\n\n private sortData(sortCriterias: EdsTableSort[], r: DATA[]): DATA[] {\n if (sortCriterias.every(c => c.order === 'none')) return r.slice();\n\n return r.sort((a, b) => {\n for (const criteria of sortCriterias) {\n const aValue = this.getObjProp(a, criteria.sort);\n const bValue = this.getObjProp(b, criteria.sort);\n\n if (aValue === bValue) continue;\n if (aValue === null || aValue === undefined) return criteria.order === 'asc' ? -1 : 1;\n if (bValue === null || bValue === undefined) return criteria.order === 'asc' ? 1 : -1;\n\n if (typeof aValue === 'boolean' && typeof bValue === 'boolean') {\n return criteria.order === 'asc' ? (aValue ? -1 : 1) : (bValue ? -1 : 1);\n }\n\n if (typeof aValue === 'number' && typeof bValue === 'number') {\n return criteria.order === 'asc' ? aValue - bValue : bValue - aValue;\n }\n\n if (aValue instanceof Date && bValue instanceof Date) {\n return criteria.order === 'asc' ? aValue.getTime() - bValue.getTime() : bValue.getTime() - aValue.getTime();\n }\n\n const aStr = typeof aValue === 'string' ? aValue.toLowerCase() : aValue;\n const bStr = typeof bValue === 'string' ? bValue.toLowerCase() : bValue;\n const comparison = criteria.order === 'asc' ? aStr.localeCompare(bStr) : bStr.localeCompare(aStr);\n\n if (comparison !== 0) return comparison;\n }\n return 0;\n });\n }\n\n private roundDown(index: number, nbRows: number): number {\n return Math.floor(index / nbRows) * nbRows;\n }\n\n private hasUndefinedInRange(startIndex: number, limit: number, dataRendered: DATA[]): number {\n for (let i = startIndex; i < startIndex + limit; i++) {\n if (dataRendered[i] === undefined) return i;\n }\n return -1;\n }\n\n private stickyFeatureHandler(): void {\n setTimeout(() => {\n const containerWidth = this.elementRef.nativeElement?.parentElement?.clientWidth || 0;\n\n const processStickyItems = (items: HTMLTableCellElement[]): void => {\n items.forEach(() => {\n const itemsSticky = items.filter((it) => it.classList.contains('eds-table__col--sticky'));\n\n const firstColItems = itemsSticky.filter((it) => it.offsetLeft + it.clientWidth < containerWidth);\n const lastColItems = itemsSticky.filter((it) => it.offsetLeft + it.clientWidth > containerWidth);\n\n firstColItems.forEach((it, j) => {\n const w = firstColItems[j - 1]?.clientWidth ?? 0;\n const offset = parseInt(firstColItems[j - 1]?.style.left, 10) || 0;\n it.style.left = (j === 0 ? 0 : w + offset) + 'px';\n\n if (j + 1 === firstColItems.length) {\n this.renderer.addClass(it, 'eds-table__col--sticky-shadowed-first');\n }\n });\n\n lastColItems.forEach((it, j) => {\n const w = lastColItems[j - 1]?.clientWidth ?? 0;\n const offset = parseInt(lastColItems[j - 1]?.style.right, 10) || 0;\n it.style.right = (j === 0 ? 0 : w + offset) + 'px';\n\n if (j + 1 === lastColItems.length) {\n this.renderer.addClass(it, 'eds-table__col--sticky-shadowed-last');\n }\n });\n });\n };\n\n const theadRef = this.theadRef();\n if (theadRef) {\n const thItems: HTMLTableCellElement[] = Array.from(theadRef.nativeElement.querySelectorAll('.eds-table__col--sticky'));\n processStickyItems(thItems);\n }\n\n const tbodyRef = this.tbodyRef();\n if (tbodyRef) {\n Array.from(tbodyRef.nativeElement.querySelectorAll('tr')).forEach((tr: HTMLTableRowElement) => {\n const tdItems: HTMLTableCellElement[] = Array.from(tr.querySelectorAll('.eds-table__col--sticky'));\n processStickyItems(tdItems);\n });\n }\n\n const tfootRef = this.tfootRef();\n if (tfootRef) {\n const tdItems: HTMLTableCellElement[] = Array.from(tfootRef.nativeElement.querySelectorAll('.eds-table__col--sticky'));\n processStickyItems(tdItems);\n }\n }, 250);\n }\n\n private getProps(row: DATA, filter: string): { key: string; match: boolean; value: string | number }[] {\n const isObject = (val: unknown): boolean => val !== null && typeof val === 'object';\n const addDelimiter = (a: string, b: string): string => (a && a !== '0' ? `${a}.${b}` : b);\n const props: { key: string; match: boolean; value: string | number }[] = [];\n\n const paths = (pathObj: object, head = ''): string[] => {\n return Object.entries(pathObj).reduce((product, [key, value]) => {\n const fullPath = addDelimiter(head, key);\n const match = (v: unknown): boolean =>\n v !== null && v !== undefined && typeof v !== 'object' && v.toString().toLowerCase().indexOf(filter.trim().toLowerCase()) !== -1;\n\n if (key !== '0' && typeof value !== 'object') {\n props.push({ key: addDelimiter(head, key), match: match(value), value });\n }\n\n return isObject(value) ? product.concat(paths(value, fullPath)) : product.concat(fullPath);\n }, [] as string[]);\n };\n\n paths(row as object);\n return props;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getObjProp(obj: DATA, prop: string): any {\n return prop ? prop.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), obj || self) : null;\n }\n}\n","@if (isVirtualScroll()) {\n <cdk-virtual-scroll-viewport\n #cdkVirtualScrollViewport\n #cdkVirtualScrollViewportElement\n class=\"eds-table__scroll-viewport\"\n [itemSize]=\"itemSize()\"\n [style.overflow]=\"cdkVirtualScrollViewportOverflowValue\"\n tabindex=\"0\">\n <table class=\"eds-table__inner\" [style.width]=\"hostWidth\">\n @if (captionTemplate) {\n <caption>\n <ng-template [ngTemplateOutlet]=\"captionTemplate\"></ng-template>\n </caption>\n }\n @if (headerTemplate) {\n <thead #theadRef [style.top]=\"stickyHeaderTopPosition\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n </thead>\n }\n @if (bodyTemplate) {\n <tbody #tbodyRef>\n <ng-container *cdkVirtualFor=\"let row of dataRendered; let i = index; trackBy: trackByFn\">\n @if (row) {\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i }\">\n </ng-template>\n } @else {\n <ng-template [ngTemplateOutlet]=\"skeletonLoading\"></ng-template>\n }\n </ng-container>\n\n @if (noDataTemplate && (data()?.length === 0 || dataRendered?.length === 0)) {\n <ng-template [ngTemplateOutlet]=\"noDataTemplate\"></ng-template>\n }\n </tbody>\n }\n @if (footerTemplate) {\n <tfoot #tfootRef [style.bottom]=\"stickyFooterBottomPosition\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </tfoot>\n }\n </table>\n </cdk-virtual-scroll-viewport>\n} @else {\n @if (captionTemplate) {\n <caption>\n <ng-template [ngTemplateOutlet]=\"captionTemplate\"></ng-template>\n </caption>\n }\n @if (headerTemplate) {\n <thead #theadRef>\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n </thead>\n }\n @if (bodyTemplate) {\n <tbody #tbodyRef>\n @for (row of dataRendered; let i = $index; track $index) {\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i }\">\n </ng-template>\n }\n @if (noDataTemplate && (data()?.length === 0 || dataRendered?.length === 0)) {\n <ng-template [ngTemplateOutlet]=\"noDataTemplate\"></ng-template>\n }\n </tbody>\n }\n @if (footerTemplate) {\n <tfoot #tfootRef>\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </tfoot>\n }\n}\n\n@if (isLoading()) {\n <div class=\"eds-table__loading-overlay\">\n <div class=\"eds-table__loading-spinner\"></div>\n </div>\n}\n\n<ng-template #skeletonLoading>\n <tr [style.height.px]=\"itemSize()\">\n @for (__ of nbCols; track $index) {\n <td><div class=\"eds-table__skeleton-line\"></div></td>\n }\n </tr>\n</ng-template>\n","import {\n Component,\n ChangeDetectionStrategy,\n OnInit,\n OnDestroy,\n ElementRef,\n output,\n input,\n viewChild,\n signal,\n} from '@angular/core';\nimport { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from 'rxjs';\n\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EDS_INPUT_ICON } from '@eui/eds/eds-input-icon';\nimport { EDS_INPUT_TEXT } from '@eui/eds/eds-input-text';\n\n/**\n * Filter component for eds-table.\n * Provides a search input that emits filter value changes with debouncing.\n */\n@Component({\n selector: 'eds-table-filter',\n templateUrl: './eds-table-filter.html',\n styleUrl: './eds-table-filter.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n ...EDS_ICON,\n ...EDS_INPUT_ICON,\n ...EDS_INPUT_TEXT,\n ],\n host: {\n class: 'eds-table-filter',\n '[attr.data-e2e]': '\"eds-table-filter\"',\n },\n})\nexport class EdsTableFilter implements OnInit, OnDestroy {\n /** Placeholder text for the filter input. */\n readonly placeholder = input<string>('Search...');\n\n /** Event emitted when the filter value changes (debounced). */\n readonly filterChange = output<string>();\n\n readonly filterInput = viewChild<ElementRef>('filterInput');\n\n /** Current filter value as a signal for reactive consumption. */\n readonly filterValue = signal<string | null>(null);\n\n form = new FormGroup({\n filter: new FormControl<string>(null),\n });\n\n private destroy$ = new Subject<boolean>();\n\n ngOnInit(): void {\n this.form.get('filter').valueChanges\n .pipe(debounceTime(500), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((value) => {\n this.setFilter(value);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /** Set the filter value and emit the change event. */\n setFilter(value: string | null): void {\n this.filterValue.set(value);\n this.filterChange.emit(value);\n this.form.get('filter').setValue(value, { emitEvent: false });\n }\n\n /** Reset the filter and focus the input. */\n resetFilter(): void {\n this.setFilter(null);\n this.form.reset();\n this.filterInput()?.nativeElement.focus();\n }\n}\n","<form [formGroup]=\"form\" class=\"eds-table-filter__form\">\n <eds-input-icon>\n <eds-icon icon=\"magnifying-glass\"></eds-icon>\n <input edsInputText\n formControlName=\"filter\"\n [attr.aria-label]=\"form.get('filter').value || placeholder()\"\n [placeholder]=\"placeholder()\"/>\n </eds-input-icon> \n</form>\n","import {\n Component,\n ChangeDetectionStrategy,\n computed,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\n\nimport { EDS_INPUT_CHECKBOX } from '@eui/eds/eds-input-checkbox';\nimport { EdsTableSelectableService } from './eds-table-selectable.service';\n\n/**\n * Component used with eds-table to add a 'select all' checkbox in the header row.\n * Applied as a directive on a `<tr>` element.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'tr[edsHeaderSelectable]',\n templateUrl: './eds-table-selectable-header.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ...EDS_INPUT_CHECKBOX,\n ],\n host: {\n class: 'eds-table__header-selectable',\n },\n})\nexport class EdsTableSelectableHeader<DATA = unknown> {\n /** Whether the select-all checkbox is displayed. */\n readonly edsHeaderSelectable = input(true, { transform: booleanAttribute });\n\n private selectableService = inject<EdsTableSelectableService<DATA>>(EdsTableSelectableService);\n\n protected isChecked = computed(() => this.selectableService.isAllRowsSelected());\n protected isIndeterminate = computed(() => this.selectableService.isIndeterminate());\n\n protected get ariaLabel(): string {\n if (this.isIndeterminate()) return 'Indeterminate';\n if (this.isChecked()) return 'Checked';\n return 'Unchecked';\n }\n\n protected toggleCheckedState(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n if (checked) {\n this.selectableService.selectAllRows();\n } else {\n this.selectableService.unselectAllRows();\n }\n }\n}\n","@if (edsHeaderSelectable()) {\n <th class=\"eds-table__cell-select\">\n <div class=\"eds-table__cell-select-checkbox-container\">\n <input\n edsInputCheckbox\n [attr.aria-label]=\"ariaLabel\"\n [checked]=\"isChecked()\"\n [indeterminate]=\"isIndeterminate()\"\n (click)=\"toggleCheckedState($event)\" />\n </div>\n </th>\n}\n<ng-content />\n","import {\n Component,\n ChangeDetectionStrategy,\n computed,\n booleanAttribute,\n inject,\n input,\n effect,\n ElementRef,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { Subject, fromEvent, takeUntil } from 'rxjs';\n\nimport { EDS_INPUT_CHECKBOX } from '@eui/eds/eds-input-checkbox';\nimport { EdsTableSelectableService } from './eds-table-selectable.service';\n\n/**\n * Component used with eds-table to make a row selectable.\n * Applied as a directive on a `<tr>` element.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'tr[edsDataSelectable]',\n templateUrl: './eds-table-selectable-row.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ...EDS_INPUT_CHECKBOX,\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class EdsTableSelectableRow<DATA = unknown> implements OnInit, OnDestroy {\n /** Data of the row. */\n readonly edsDataSelectable = input<DATA>();\n\n /** Whether only one row can be selected at a time. */\n readonly isSingleSelectable = input(false, { transform: booleanAttribute });\n\n /** Whether the row is pre-selected. */\n readonly isChecked = input(false, { transform: booleanAttribute });\n\n /** Whether keyboard-based selection (ctrl+click, shift+click) is enabled. */\n readonly isKeyboardSelectable = input(false, { transform: booleanAttribute });\n\n hostClasses = computed(() => {\n return [\n 'eds-table__row',\n this.edsDataSelectable() ? 'eds-table__row--selectable' : '',\n this.currentIsChecked() ? 'eds-table__row--selected' : '',\n ].join(' ').trim();\n });\n\n protected currentIsChecked = computed(() => {\n const selected = this.selectableService.selectedRows();\n const data = this.edsDataSelectable();\n const propId = this.selectableService.getPropId();\n return data ? selected.some(s => s[propId] === data[propId]) : false;\n });\n\n private selectableService = inject<EdsTableSelectableService<DATA>>(EdsTableSelectableService);\n private elementRef = inject(ElementRef);\n private destroy$ = new Subject<boolean>();\n\n constructor() {\n effect(() => {\n const checked = this.isChecked();\n const data = this.edsDataSelectable();\n if (checked && data) {\n this.selectableService.selectRow(data);\n }\n });\n }\n\n ngOnInit(): void {\n const data = this.edsDataSelectable();\n if (this.isKeyboardSelectable() && data) {\n fromEvent<PointerEvent>(this.elementRef.nativeElement, 'click')\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => {\n if (event.ctrlKey) {\n if (!this.currentIsChecked()) {\n this.selectableService.selectRow(data);\n } else {\n this.selectableService.unselectRow(data);\n }\n } else if (event.shiftKey) {\n const rows = this.selectableService.getRows();\n const lastSelectedRow = this.selectableService.getLastSelectedRow();\n const lastSelectedRowPosition = rows.indexOf(lastSelectedRow);\n const position = rows.indexOf(data);\n\n const range = lastSelectedRowPosition > position\n ? rows.slice(position, lastSelectedRowPosition + 1)\n : rows.slice(lastSelectedRowPosition, position + 1);\n\n this.selectableService.selectRows(range);\n window.getSelection()?.empty();\n } else {\n this.selectableService.selectRows([data]);\n }\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n protected toggleCheckedState(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n const data = this.edsDataSelectable();\n\n if (checked) {\n if (this.isSingleSelectable()) {\n this.selectableService.selectSingleRow(data);\n } else {\n this.selectableService.selectRow(data);\n }\n } else {\n this.selectableService.unselectRow(data);\n }\n }\n}\n","@if (edsDataSelectable()) {\n <td class=\"eds-table__cell-select\">\n <div class=\"eds-table__cell-select-checkbox-container\">\n <input\n edsInputCheckbox\n [attr.aria-label]=\"currentIsChecked() ? 'Row selected' : 'Row not selected'\"\n [checked]=\"currentIsChecked()\"\n (change)=\"toggleCheckedState($event)\" />\n </div>\n </td>\n}\n<ng-content />\n","import {\n Component,\n ChangeDetectionStrategy,\n computed,\n booleanAttribute,\n inject,\n input,\n effect,\n} from '@angular/core';\n\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EDS_ICON_BUTTON } from '@eui/eds/eds-icon-button';\n\nimport { EdsTableSortService } from './eds-table-sort.service';\nimport { EdsTableSortOrder } from './eds-table-sort.model';\n\n/**\n * Component used with eds-table to make a column header sortable.\n * Applied as a directive on a `<th>` element.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'th[edsSortable]',\n templateUrl: './eds-table-sortable-col.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ...EDS_ICON,\n ...EDS_ICON_BUTTON,\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.aria-sort]': 'ariaSort()',\n },\n})\nexport class EdsTableSortableCol {\n /** Property name to sort on. */\n readonly sortOn = input<string>();\n\n /** Initial sort order for this column. */\n readonly sortOrder = input<EdsTableSortOrder>('asc');\n\n /** Whether this column is sorted by default on init. */\n readonly defaultOrder = input(false, { transform: booleanAttribute });\n\n /** Whether sorting is disabled for this column. */\n readonly sortDisabled = input(false, { transform: booleanAttribute });\n\n /** Whether multi-column sorting is enabled for this column. */\n readonly isMultiSortable = input(false, { transform: booleanAttribute });\n\n hostClasses = computed(() => {\n return [\n 'eds-table__sortable-col',\n this.sortDisabled() ? 'eds-table__sortable-col--disabled' : '',\n ].join(' ').trim();\n });\n\n ariaSort = computed((): 'ascending' | 'descending' | 'none' => {\n const order = this.order();\n if (order === 'asc') return 'ascending';\n if (order === 'desc') return 'descending';\n return 'none';\n });\n\n protected order = computed(() => {\n const sorts = this.sortService.sorts();\n const match = sorts.find(s => s.sort === this.sortOn());\n return match ? match.order : 'none';\n });\n\n protected isSorted = computed(() => {\n const sorts = this.sortService.sorts();\n return sorts.some(s => s.sort === this.sortOn());\n });\n\n protected sortedIndex = computed(() => {\n const sorts = this.sortService.sorts();\n if (sorts.length <= 1) return null;\n const idx = sorts.findIndex(s => s.sort === this.sortOn());\n return idx >= 0 ? idx + 1 : null;\n });\n\n private sortService = inject(EdsTableSortService);\n\n constructor() {\n effect(() => {\n if (this.defaultOrder()) {\n this.sortService.setSort(this.sortOn(), this.sortOrder(), this.isMultiSortable());\n }\n });\n }\n\n protected changeSort(): void {\n if (this.sortDisabled()) return;\n\n const current = this.order();\n let next: EdsTableSortOrder;\n\n if (current === 'asc') {\n next = 'desc';\n } else if (current === 'desc') {\n next = 'none';\n } else {\n next = 'asc';\n }\n\n this.sortService.setSort(this.sortOn(), next, this.isMultiSortable());\n }\n}\n","<div class=\"eds-table__sortable-col-content\">\n <div class=\"eds-table__sortable-col-content-label\">\n <ng-content />\n\n @if (order() === 'none' && !sortDisabled()) {\n <button edsIconButton icon=\"arrows-down-up:core\" [ariaLabel]=\"'Click to sort ascending'\" (click)=\"changeSort()\"></button>\n }\n @if (order() === 'asc' && isSorted() && !sortDisabled()) {\n <button edsIconButton icon=\"arrow-up:core\" [ariaLabel]=\"'Click to sort descending'\" (click)=\"changeSort()\"></button>\n }\n @if (order() === 'desc' && isSorted() && !sortDisabled()) {\n <button edsIconButton icon=\"arrow-down:core\" [ariaLabel]=\"'Click to sort none'\" (click)=\"changeSort()\"></button>\n }\n\n @if (sortedIndex() && !sortDisabled()) {\n <span class=\"eds-table__sortable-col-multisort-index\">{{ sortedIndex() }}</span>\n }\n </div>\n</div>\n","import { Directive } from '@angular/core';\n\n/**\n * Directive to mark a column (th or td) as sticky.\n * Only first or last columns can be sticky.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'th[edsStickyCol], td[edsStickyCol]',\n host: {\n class: 'eds-table__col--sticky',\n },\n})\nexport class EdsTableStickyCol {}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n/**\n * Directive to activate the expandable feature on a table row.\n * Adds an entry animation when the row is rendered.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'tr[edsExpandableRow]',\n host: {\n class: 'eds-table__expandable-row',\n },\n})\nexport class EdsTableExpandableRow {\n private el = inject(ElementRef);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Pipe to highlight matching text in table cells when used with the filter feature.\n *\n * @example\n * ```html\n * <td><span [innerHTML]=\"row.year | edsTableHighlight: filterString\"></span></td>\n * ```\n */\n@Pipe({\n name: 'edsTableHighlight',\n})\nexport class EdsTableHighlightPipe implements PipeTransform {\n /**\n * Wraps matching text with a `<span>` element having the specified CSS class.\n *\n * @param value Data displayed in a cell.\n * @param strFilter Search string to highlight.\n * @param className CSS class to add to the highlight span. Default: 'eds-u-text-search'\n */\n transform(value: string, strFilter: string, className = 'eds-u-text-search'): string {\n if (!value) return '';\n if (!strFilter || strFilter.length === 0) return value;\n\n const generateVariants = (str: string): string[] => {\n const variants = new Set<string>([str]);\n\n for (let j = 1; j <= 3; j++) {\n for (const separator of ['.', ',', ' ']) {\n let newVariant = str;\n let i = j;\n\n while (i < newVariant.length) {\n newVariant = newVariant.slice(0, i) + separator + newVariant.slice(i);\n i += 4;\n }\n variants.add(newVariant);\n }\n }\n return Array.from(variants);\n };\n\n const isNumber = (str: string): boolean => !isNaN(Number(str)) && str.trim() !== '';\n const variants = isNumber(strFilter) ? generateVariants(strFilter) : [strFilter];\n const regex = new RegExp(`(${variants.map(v => v.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')).join('|')})`, 'gi');\n\n return value.toString().replace(regex, `<span class=\"${className}\">$1</span>`);\n }\n}\n","import { EdsTable } from './eds-table';\nimport { EdsTableFilter } from './eds-table-filter';\nimport { EdsTableSelectableHeader } from './eds-table-selectable-header';\nimport { EdsTableSelectableRow } from './eds-table-selectable-row';\nimport { EdsTableSortableCol } from './eds-table-sortable-col';\nimport { EdsTableStickyCol } from './eds-table-sticky-col';\nimport { EdsTableExpandableRow } from './eds-table-expandable-row';\nimport { EdsTableHighlightPipe } from './eds-table-highlight.pipe';\nimport { EdsTableTemplate } from './eds-table-template';\n\nexport { EdsTable } from './eds-table';\nexport { EdsTableFilter } from './eds-table-filter';\nexport { EdsTableSelectableHeader } from './eds-table-selectable-header';\nexport { EdsTableSelectableRow } from './eds-table-selectable-row';\nexport { EdsTableSortableCol } from './eds-table-sortable-col';\nexport { EdsTableStickyCol } from './eds-table-sticky-col';\nexport { EdsTableExpandableRow } from './eds-table-expandable-row';\nexport { EdsTableHighlightPipe } from './eds-table-highlight.pipe';\nexport { EdsTableTemplate } from './eds-table-template';\nexport { EdsTableSelectableService } from './eds-table-selectable.service';\nexport { EdsTableSortService } from './eds-table-sort.service';\nexport { EdsTableSort, EdsTableSortOrder } from './eds-table-sort.model';\n\n/** Convenience array for importing all eds-table components. */\nexport const EDS_TABLE = [\n EdsTable,\n EdsTableFilter,\n EdsTableSelectableHeader,\n EdsTableSelectableRow,\n EdsTableSortableCol,\n EdsTableStickyCol,\n EdsTableExpandableRow,\n EdsTableHighlightPipe,\n EdsTableTemplate,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}