@eui/components 19.2.0-snapshot-1745854088357 → 19.2.0-snapshot-1745913484358

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.
@@ -1 +1 @@
1
- {"version":3,"file":"eui-components-eui-table-v2.mjs","sources":["../../eui-table-v2/services/eui-table-v2-selectable-row.service.ts","../../eui-table-v2/services/eui-table-v2-sort.service.ts","../../eui-table-v2/eui-table-v2.component.ts","../../eui-table-v2/eui-table-v2.component.html","../../eui-table-v2/selectable-header/eui-table-v2-selectable-header.component.ts","../../eui-table-v2/selectable-header/eui-table-v2-selectable-header.component.html","../../eui-table-v2/selectable-row/eui-table-v2-selectable-row.component.ts","../../eui-table-v2/selectable-row/eui-table-v2-selectable-row.component.html","../../eui-table-v2/directives/eui-table-v2-sticky-col.directive.ts","../../eui-table-v2/filter/eui-table-v2-filter.component.ts","../../eui-table-v2/filter/eui-table-v2-filter.component.html","../../eui-table-v2/pipes/eui-table-v2-highlight.pipe.ts","../../eui-table-v2/sortable-col/eui-table-v2-sortable-col.component.ts","../../eui-table-v2/sortable-col/eui-table-v2-sortable-col.component.html","../../eui-table-v2/directives/eui-table-v2-expandable-row.directive.ts","../../eui-table-v2/eui-table-v2.module.ts","../../eui-table-v2/index.ts","../../eui-table-v2/eui-components-eui-table-v2.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Service to manage the selection state of rows in a table.\n * Allows tracking of selected rows and managing selection for individual and multiple rows.\n */\n@Injectable()\nexport class EuiTableV2SelectableRowService<DATA> {\n /**\n * BehaviorSubject containing the selected rows.\n */\n public selectedRows$: BehaviorSubject<DATA[]> = new BehaviorSubject([]);\n /**\n * BehaviorSubject containing the state of whether all rows are selected.\n */\n public isAllRowsSelected$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n \n private lastSelectedRow: DATA = null;\n private rows: DATA[] = [];\n private propId = 'id';\n\n /**\n * Observable stream of selected rows.\n */\n get selectedRows(): Observable<DATA[]> {\n return this.selectedRows$.asObservable();\n }\n\n /**\n * Observable stream of whether all rows are selected.\n */\n get isAllRowsSelected(): Observable<boolean> {\n return this.isAllRowsSelected$.asObservable();\n }\n\n /**\n * Sets the property name used to identify rows as unique.\n */\n public setPropId(value: string): void {\n this.propId = value;\n }\n\n /**\n * Gets the current property name used to identify rows.\n */\n public getPropId(): string {\n return this.propId;\n }\n\n /**\n * Registers a row as selectable.\n * \n * @param row Row to register.\n */\n public registerRow(row: DATA): void {\n if (row && !this.rows.find((r) => r[this.propId] === row[this.propId])) {\n this.rows.push(row);\n\n if (this.rows.length > this.selectedRows$.value.length && this.isAllRowsSelected$.value) {\n this.isAllRowsSelected$.next(false);\n }\n\n if (this.rows.length <= this.selectedRows$.value.length && this.rows.every((r) => this.selectedRows$.value.includes(r))) {\n this.isAllRowsSelected$.next(true);\n }\n }\n }\n\n /**\n * Registers a set of rows as selectable.\n * \n * @param rows Set of rows to register.\n */\n public registerRows(rows: DATA[]): void {\n rows.forEach((row) => {\n this.registerRow(row);\n });\n }\n\n /**\n * Unregisters a row as selectable.\n * \n * @param row Row to unregister.\n */\n public unregisterRow(row: DATA): void {\n this.rows = this.rows.filter(r => r[this.propId] !== row[this.propId]);\n }\n\n /**\n * Unregisters all rows.\n */\n public unregisterRows(): void {\n this.rows = [];\n }\n\n /**\n * Selects a row.\n * \n * @param row Row to select.\n */\n public selectRow(row: DATA): void {\n if (this.selectedRows$.value.indexOf(row) === -1) {\n this.selectedRows$.next([...this.selectedRows$.value, row]);\n }\n\n this.isAllRowsSelected$.next(this.selectedRows$.value.length === this.rows.length);\n this.lastSelectedRow = row;\n }\n\n /**\n * Unselects a row.\n * \n * @param row Row to unselect.\n */\n public unselectRow(row: DATA): void {\n if (row && this.selectedRows$.value.find((r) => r[this.propId] === row[this.propId]) !== undefined) {\n const value = this.selectedRows$.value.filter((selected) => selected[this.propId] !== row[this.propId]);\n this.selectedRows$.next(value);\n this.isAllRowsSelected$.next(false);\n }\n }\n\n /**\n * Selects a set of rows.\n * \n * @param rows Rows to select.\n */\n public selectRows(rows: DATA[]): void {\n this.selectedRows$.next([...rows]);\n this.isAllRowsSelected$.next(this.rows.length > 0 && this.rows.length === this.selectedRows$.value.length);\n this.lastSelectedRow = rows[rows.length - 1];\n }\n\n /**\n * Select all rows.\n */\n public selectAllRows(): void {\n this.selectedRows$.next([...this.rows]);\n this.isAllRowsSelected$.next(true);\n this.lastSelectedRow = this.rows[this.rows.length - 1];\n }\n\n /**\n * Unselect all rows.\n */\n public unselectAllRows(): void {\n this.selectedRows$.next([]);\n this.isAllRowsSelected$.next(false);\n this.lastSelectedRow = null;\n }\n\n /**\n * Gets the list of registered rows.\n * \n * @returns The list of registered rows.\n */\n public getRows(): DATA[] {\n return this.rows;\n }\n\n /**\n * Gets the last selected row.\n * \n * @returns The last selected row.\n */\n public getLastSelectedRow(): DATA {\n return this.lastSelectedRow;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { Sort, SortOrder } from '../models/sort.model';\n\n/**\n * Service to manage the sorting state of columns in a table.\n * Uses a `BehaviorSubject` to store and emit the current sorting values.\n */\n@Injectable()\nexport class EuiTableV2SortService {\n /**\n * BehaviorSubject containing the current sorting information.\n */\n public sorts$ = new BehaviorSubject<Sort[]>([]);\n\n /**\n * Observable stream of sorting values.\n */\n get sorts(): Observable<Sort[]> {\n return this.sorts$.asObservable();\n }\n\n private isCurrentMultiSortable = false;\n\n /**\n * Sets the ordering order for a given column\n * \n * @param sort The name of the column to sort.\n * @param order The sorting order (ascending or descending).\n * @param isMultiSortable Whether multi-sorting is allowed.\n */\n setSort(sort: string, order: SortOrder, isMultiSortable: boolean): void {\n if (isMultiSortable && this.isCurrentMultiSortable) {\n let sortValues = this.sorts$.value;\n if (!order) {\n sortValues = this.sorts$.value.filter(s => s.sort !== sort);\n this.sorts$.next(sortValues);\n } else {\n if (this.sorts$.value.find(s => s.sort === sort)) {\n sortValues = this.sorts$.value.map(s => s.sort == sort ? ({ ...s, order }) : s);\n this.sorts$.next(sortValues);\n } else {\n this.sorts$.next([ ...sortValues, { sort, order } ]);\n }\n }\n } else {\n this.sorts$.next(sort && order ? [{ sort, order }] : []);\n }\n\n this.isCurrentMultiSortable = isMultiSortable;\n }\n\n /**\n * Sets the full list of sorting values.\n * \n * @param sorts The list of sorts to apply.\n */\n setSorts(sorts: Sort[]): void {\n this.sorts$.next(sorts);\n this.isCurrentMultiSortable = sorts.length > 1;\n }\n}\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit, TemplateRef, ViewChild, AfterViewInit, ElementRef, booleanAttribute, HostBinding,\n ViewEncapsulation, ChangeDetectionStrategy, OnDestroy, OnInit, Output, EventEmitter, SimpleChanges, OnChanges, numberAttribute, ChangeDetectorRef,\n Renderer2 } from '@angular/core';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { BehaviorSubject, Observable, Subject, Subscription, combineLatest, debounceTime, skip, takeUntil } from 'rxjs';\nimport { ListRange } from '@angular/cdk/collections';\nimport { CommonModule, NgFor, NgTemplateOutlet } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { EuiTemplateDirectiveModule } from '@eui/components/directives';\nimport { EUI_SKELETON, EuiSkeletonComponent } from '@eui/components/eui-skeleton';\nimport { EUI_INPUT_CHECKBOX, EuiInputCheckboxComponent } from '@eui/components/eui-input-checkbox';\nimport { EUI_ICON, EuiIconModule } from '@eui/components/eui-icon';\nimport { EUI_INPUT_TEXT, EuiInputTextComponent } from '@eui/components/eui-input-text';\nimport { EUI_BUTTON, EuiButtonComponent } from '@eui/components/eui-button';\nimport { EUI_LIST, EuiListModule } from '@eui/components/eui-list';\nimport { EUI_ICON_INPUT, EuiIconInputModule } from '@eui/components/eui-icon-input';\n\nimport { EuiPaginationEvent, EuiPaginatorComponent } from '@eui/components/eui-paginator';\nimport { EuiTemplateDirective } from '@eui/components/directives';\nimport { BaseStatesDirective } from '@eui/components/shared';\n\nimport { EuiTableV2SelectableRowService } from './services/eui-table-v2-selectable-row.service';\nimport { EuiTableV2FilterComponent } from './filter/eui-table-v2-filter.component';\nimport { EuiTableV2SortService } from './services/eui-table-v2-sort.service';\nimport { Sort, SortOrder } from './models/sort.model';\n\nexport enum ScrollinDirection {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\n/**\n * @description\n * The `eui-table-v2` component has been built to offer various requested features including fast performance and excellent level of control over tabular presentation of data.\n *\n * The eui-table is quite simple of usage and requires :\n *\n * - rows : the data value input as an array of objects, usually fetched from a service (data payload),\n * - view : this is the template for the presentation with its various options such as the search filter, the paginator, sortable columns, etc.\n */\n@Component({\n selector: 'eui-table-v2, table[euiTableV2]',\n templateUrl: './eui-table-v2.component.html',\n styleUrls: ['./styles/_index.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgFor,\n NgTemplateOutlet,\n ScrollingModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n ...EUI_ICON,\n ...EUI_SKELETON,\n ...EUI_LIST,\n ...EUI_ICON_INPUT,\n ...EUI_BUTTON,\n ...EUI_INPUT_TEXT,\n ...EUI_INPUT_CHECKBOX,\n ],\n providers: [EuiTableV2SelectableRowService, EuiTableV2SortService],\n hostDirectives: [\n {\n directive: BaseStatesDirective,\n inputs: [],\n },\n ],\n})\nexport class EuiTableV2Component<DATA = unknown> implements AfterContentInit, AfterViewInit, OnDestroy, OnInit, OnChanges {\n /**\n * @description\n * Computes and returns the CSS classes for the component based on its current state.\n *\n * @returns {string} Space-separated string of CSS class names\n */\n @HostBinding('class')\n public get cssClasses(): string {\n return [\n this.baseStatesDirective.getCssClasses('eui-table-default eui-table-v2'),\n this.isVirtualScroll ? 'eui-table-v2--virtual-scroll' : '',\n this.hasStickyHeader ? 'eui-table-v2--sticky eui-table-v2--sticky-header' : '',\n this.hasStickyFooter ? 'eui-table-v2--sticky eui-table-v2--sticky-footer' : '',\n this.hasStickyCols ? 'eui-table-v2--sticky eui-table-v2--sticky-cols' : '',\n this.isTableResponsive ? 'eui-table-default--responsive' : '',\n this.isColsOrderable ? 'eui-table-v2--cols-orderable' : '',\n this.isLoading ? 'eui-table-v2--loading' : '',\n ]\n .join(' ')\n .trim();\n }\n\n /**\n * Data to display in the table.\n *\n * @type {DATA[]} Generic type of data\n */\n @Input() data: DATA[] = [];\n /**\n * Unicity criteria of the data.\n *\n * @default 'id'\n */\n @Input() propId = 'id';\n /**\n * In combination with `isVirtualScroll`. Row height use by virtual scroll calculation.\n *\n * @default 41\n */\n @Input() itemSize = 41;\n /**\n * `eui-paginator` reference passed to the table.\n *\n * @type {EuiPaginatorComponent}\n */\n @Input() paginator: EuiPaginatorComponent;\n /**\n * `eui-table-v2-filter` reference passed to the table.\n *\n * @type {EuiTableV2FilterComponent}\n */\n @Input() filter: EuiTableV2FilterComponent;\n /**\n * In combination with `isDataSelectable`. Rows to be selected by default.\n *\n * @type {DATA[]} Set of data to select.\n */\n @Input() preselectedRows: DATA[] = [];\n\n /**\n * Wheter the table uses virtual scroll to display data.\n *\n * `eui-table-v2` selector needs to be used in order to make virtual scroll working properly.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isVirtualScroll = false;\n /**\n * In combination with `isVirtualScroll`. Wheter the table caches the data when scroll.\n * Means that if a scroll level has already loads data, the `scrollChange` event won't be emitted.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isVirtualScrollCache = false;\n /**\n * Wheter the table header is sticky.\n * In order to use eui-table sticky feature and control the scrolling overflow,\n * we recommend to wrap the table with the provided eui-table-v2__scrollable-wrapper class and set your custom table width and/or height.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) hasStickyHeader = false;\n /**\n * Wheter the table footer is sticky.\n * In order to use eui-table sticky feature and control the scrolling overflow,\n * we recommend to wrap the table with the provided eui-table-v2__scrollable-wrapper class and set your custom table width and/or height.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) hasStickyFooter = false;\n /**\n * Wheter the table col is sticky.\n * In order to use eui-table sticky feature and control the scrolling overflow,\n * we recommend to wrap the table with the provided eui-table-v2__scrollable-wrapper class and set your custom table width and/or height.\n *\n * Only first or latest columns can be sticky.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) hasStickyCols = false;\n /**\n * Wheter the table is reponsive.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isTableResponsive = false;\n /**\n * Wheter the table uses async data.\n * In this configuration, pagination, filtering and sorting are managed by the backend.\n *\n * When data are async, paginator and filter must not be bound to the eui-table component like in other sample.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isAsync = false;\n /**\n * In combination with `isVirtualScroll`. Total length of data that are displayed in the table with virtual scroll.\n *\n * @default 0\n */\n @Input({ transform: numberAttribute }) virtualScrollAsyncItemsLength = 0;\n /**\n * In combination with `isVirtualScroll`. Nb of data items to load in the table.\n *\n * @default 50\n */\n @Input({ transform: numberAttribute }) virtualScrollNbRows = 50;\n /**\n * Wheter the cols can be reordered.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isColsOrderable = false;\n /**\n * Wheter a loading spinner is displayed in the table.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isLoading = false;\n /**\n * Wheter the 'select all' checkbox in the header will select ONLY items in the current page.\n *\n * If `false`, all items across the pages will be selected.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) isSelectOnlyVisibleRows = true;\n /**\n * @deprecated\n * Has been deprecated to align with Design System\n */\n @Input({ transform: booleanAttribute }) isTableBordered = false;\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 loading = [];\n protected nbCols: HTMLTableCellElement[] = [];\n protected dataRendered: DATA[] = [];\n protected cdkVirtualScrollViewportOverflowValue: ('hidden' | 'auto') = 'auto';\n\n @ContentChildren(EuiTemplateDirective) templates: QueryList<EuiTemplateDirective>;\n\n @ViewChild('cdkVirtualScrollViewport', { static: false }) protected cdkVirtualScrollViewport: CdkVirtualScrollViewport;\n @ViewChild('cdkVirtualScrollViewportElement', { static: false, read: ElementRef }) protected cdkVirtualScrollViewportElement: ElementRef;\n @ViewChild('theadRef') theadRef: ElementRef<HTMLElement>;\n @ViewChild('tbodyRef') tbodyRef: ElementRef<HTMLElement>;\n @ViewChild('tfootRef') tfootRef: ElementRef<HTMLElement>;\n\n /**\n * In combination with `isVirtualScroll`. Event emitted when a scroll is done.\n */\n @Output() scrollChange = new EventEmitter();\n /**\n * In combination with `isDataSelectable` on a row. Event emitted when the selection changes with an array of data.\n */\n @Output() rowsSelect = new EventEmitter<DATA[]>();\n /**\n * In combination with `isSortable` on the cols. Event emitted when the sort changes with the property displayed in the col and the order as `ASC` or `DESC`.\n */\n @Output() sortChange = new EventEmitter<Sort[]>();\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private virtualScrollLastMultiple = 0;\n private virtualScrollSpliceFrom = 0;\n private scrolledIndex = 0;\n private nbItemDisplayed = 0;\n private scrollingDirection: ScrollinDirection;\n private mutationObserver: MutationObserver;\n private dataSrc: DATA[] = [];\n private page = 0;\n private pageSize = 0;\n private tableFeaturesHandlerSubscription = new Subscription();\n private filteredData: DATA[] = [];\n\n constructor(private elementRef: ElementRef,\n private cd: ChangeDetectorRef,\n private euiTableV2SelectableRowService: EuiTableV2SelectableRowService<DATA>,\n private euiTableV2SortService: EuiTableV2SortService,\n private baseStatesDirective: BaseStatesDirective,\n private renderer: Renderer2,\n ) {}\n\n ngOnChanges(c: SimpleChanges): void {\n if (!this.data) {\n this.data = [];\n }\n\n this.euiTableV2SelectableRowService.setPropId(this.propId);\n if (this.isVirtualScroll) {\n if (c.data && c.data.isFirstChange()) {\n this.dataRendered = [...c.data.currentValue, ...Array.from({ length: this.virtualScrollAsyncItemsLength - c.data.currentValue.length })];\n\n this.euiTableV2SelectableRowService.unregisterRows();\n this.euiTableV2SelectableRowService.registerRows(this.dataRendered);\n }\n\n if (c.data && !c.data.isFirstChange()) {\n if (this.isAsync) {\n const source = [...this.dataRendered];\n if (this.isVirtualScrollCache) {\n this.dataRendered = [...source.slice(0, this.virtualScrollSpliceFrom), ...c.data.currentValue, ...source.slice(this.virtualScrollSpliceFrom + this.virtualScrollNbRows)];\n } else {\n this.dataRendered = [\n ...Array.from({ length: this.virtualScrollSpliceFrom - this.nbItemDisplayed }),\n ...source.slice(this.virtualScrollSpliceFrom - this.nbItemDisplayed, this.virtualScrollSpliceFrom),\n ...c.data.currentValue,\n ...source.slice(this.virtualScrollSpliceFrom + this.virtualScrollNbRows, this.virtualScrollSpliceFrom + this.virtualScrollNbRows + this.nbItemDisplayed),\n ...Array.from({ length: this.virtualScrollAsyncItemsLength - (this.virtualScrollSpliceFrom + this.virtualScrollNbRows + this.nbItemDisplayed) }),\n ];\n }\n\n if (c && c.virtualScrollAsyncItemsLength) {\n if (c.virtualScrollAsyncItemsLength.previousValue > c.virtualScrollAsyncItemsLength.currentValue) {\n this.dataRendered = this.dataRendered.slice(0, c.virtualScrollAsyncItemsLength.currentValue);\n } else {\n this.dataRendered = [...c.data.currentValue, ...Array.from({ length: this.virtualScrollAsyncItemsLength - c.data.currentValue.length })];\n }\n }\n\n this.euiTableV2SelectableRowService.unregisterRows();\n this.euiTableV2SelectableRowService.registerRows(this.dataRendered);\n\n if (this.scrollingDirection === ScrollinDirection.DOWN) {\n if ((this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== -1 ||\n this.scrolledIndex === this.virtualScrollSpliceFrom &&\n !this.dataRendered[this.scrolledIndex - 1]) &&\n this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== this.dataRendered.length\n ) {\n // console.log('reposition down')\n this.cdkVirtualScrollViewport.scrollToIndex(this.virtualScrollSpliceFrom + 1);\n }\n }\n\n if (this.scrollingDirection === ScrollinDirection.UP) {\n if (this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== -1) {\n // console.log('reposition up')\n this.cdkVirtualScrollViewport.scrollToIndex(this.virtualScrollSpliceFrom + 1);\n }\n }\n\n this.stickyFeatureHandler();\n }\n }\n } else {\n if (c && c.data) {\n const lengthChanged = this.dataSrc.length !== c.data.currentValue.length;\n this.dataSrc = c.data.currentValue ? [...c.data.currentValue] : [];\n\n if (this.paginator && lengthChanged) {\n this.paginator.goFirstPage({ emitEvent: !c.data.firstChange });\n }\n\n if (!this.isAsync && !c.data.isFirstChange()) {\n this.tableFeaturesHandlerSubscription.unsubscribe();\n this.tableFeaturesHandler();\n }\n\n this.euiTableV2SelectableRowService.registerRows(this.dataSrc);\n }\n if (c && c.paginator?.currentValue) {\n this.paginator.setLength(this.data.length);\n if (!c.paginator?.isFirstChange()) {\n this.paginator.goFirstPage({ emitEvent: false });\n }\n } else {\n // this.data can be changed anytime, then this else can be executed at that time, testing this.paginator allows to make sure\n // the user wants to disable pagination or change the datasource\n if (!this.paginator) {\n this.dataRendered = this.dataSrc;\n this.page = 0;\n }\n }\n }\n\n if (c && c.preselectedRows && !c.preselectedRows.isFirstChange()) {\n this.euiTableV2SelectableRowService.selectRows(c.preselectedRows.currentValue);\n }\n }\n\n ngOnInit(): void {\n this.dataSrc = [...this.data];\n }\n\n ngAfterContentInit(): void {\n this.templates.forEach((item) => {\n if (item.getType() === 'header') {\n this.headerTemplate = item.template;\n }\n if (item.getType() === 'body') {\n this.bodyTemplate = item.template;\n }\n if (item.getType() === 'footer') {\n this.footerTemplate = item.template;\n }\n if (item.getType() === 'noData') {\n this.noDataTemplate = item.template;\n }\n });\n }\n\n // test(index): void {\n // this.cdkVirtualScrollViewport.scrollToIndex(index)\n // }\n\n ngAfterViewInit(): void {\n this.stickyFeatureHandler();\n\n if (this.isVirtualScroll) {\n this.cdkVirtualScrollViewport?.renderedRangeStream\n .pipe(debounceTime(500), takeUntil(this.destroy$))\n .subscribe((listRange: ListRange) => {\n this.stickyFeatureHandler();\n });\n\n const theadElements = Array.from(this.theadRef.nativeElement.querySelectorAll('th'));\n this.nbCols = new Array(theadElements.length);\n\n this.cdkVirtualScrollViewport.scrolledIndexChange\n .pipe(debounceTime(500), takeUntil(this.destroy$))\n .subscribe((scrolledIndex: number) => {\n if (this.isAsync) {\n this.scrollingDirection = scrolledIndex > this.scrolledIndex ? ScrollinDirection.DOWN : ScrollinDirection.UP;\n this.scrolledIndex = scrolledIndex;\n\n this.cdkVirtualScrollViewport.setTotalContentSize(this.virtualScrollAsyncItemsLength * this.itemSize);\n\n const scrollOffset = this.cdkVirtualScrollViewport.measureScrollOffset('top');\n const endIndex = Math.ceil((scrollOffset + this.cdkVirtualScrollViewport.getViewportSize()) / this.itemSize);\n this.nbItemDisplayed = endIndex - scrolledIndex;\n const virtualScrollCurrentMultiple = Math.floor((scrolledIndex + this.nbItemDisplayed) / this.virtualScrollNbRows);\n\n if (scrolledIndex > 0) {\n if (this.dataRendered[scrolledIndex] || (this.scrollingDirection === ScrollinDirection.UP && this.dataRendered[scrolledIndex - 1])) {\n // console.log('virtualScrollCurrentMultiple', virtualScrollCurrentMultiple)\n // console.log('this.virtualScrollLastMultiple', this.virtualScrollLastMultiple)\n // console.log('virtualScrollCurrentMultiple > this.virtualScrollLastMultiple', virtualScrollCurrentMultiple > this.virtualScrollLastMultiple)\n\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\n this.virtualScrollLastMultiple = virtualScrollCurrentMultiple;\n }\n });\n }\n\n if (this.cdkVirtualScrollViewportElement) {\n this.cdkVirtualScrollViewportElement.nativeElement.style.height = this.cdkVirtualScrollViewport.elementRef.nativeElement.parentElement.clientHeight + 'px';\n }\n\n const mutationObservable = new Observable<MutationRecord[]>((observer) => {\n this.mutationObserver = new MutationObserver((mutations) => {\n const filteredMutations = mutations.filter((mutation) => {\n return (\n mutation.target instanceof HTMLElement &&\n mutation.target.tagName.toLowerCase() === 'th' &&\n mutation.attributeName === 'style'\n );\n });\n\n if (filteredMutations.length > 0) {\n observer.next(filteredMutations);\n }\n });\n\n const config = { attributes: true, subtree: true, attributeFilter: ['style'] };\n this.mutationObserver.observe(this.theadRef.nativeElement, config);\n });\n\n mutationObservable.pipe(debounceTime(250), takeUntil(this.destroy$)).subscribe((mutations) => {\n this.stickyFeatureHandler();\n });\n\n if (!this.isAsync && !this.isVirtualScroll) {\n this.tableFeaturesHandlerSubscription.unsubscribe();\n this.tableFeaturesHandler();\n\n if (this.preselectedRows) {\n setTimeout(() => {\n this.euiTableV2SelectableRowService.selectRows(this.preselectedRows);\n });\n }\n }\n\n this.selectRowsFeatureHandler();\n this.sortFeatureHandler();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n this.mutationObserver?.disconnect();\n this.tableFeaturesHandlerSubscription.unsubscribe();\n }\n\n /**\n * Moves an element within the rendered data array.\n *\n * @param itemId - The identifier (default: id) of the element to move.\n * @param fromIndex - The current index of the element to move.\n * @param toIndex - The new desired position for the element.\n */\n public 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\n const source = [...this.dataRendered];\n const [elementToMove] = source.splice(itemPosition, 1);\n\n source.splice(itemPosition + move, 0, elementToMove);\n\n this.dataRendered = source;\n }\n\n /**\n * Select all rows\n */\n public selectAllRows(): void {\n this.euiTableV2SelectableRowService.selectAllRows();\n }\n\n /**\n * Unselect all rows\n */\n public unselectAllRows(): void {\n this.euiTableV2SelectableRowService.unselectAllRows();\n }\n\n /**\n * Return an array with the data matching the string filter\n * @returns\n */\n public getFilteredData(): DATA[] {\n return this.filteredData;\n }\n\n /**\n * Sort the table's data.\n *\n * @param sorts An array of SortOrder. See {@link SortOrder}\n */\n public setSort(sorts: Sort[]): void {\n this.euiTableV2SortService.setSorts(sorts);\n }\n\n /**\n * Filters the table's data based on a string declared in `EuiTableV2FilterComponent`\n *\n * @param filter String to filter the data\n * @param r Array of data to filter\n * @returns The set of data matching the filter\n */\n public 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 === true);\n return matching?.length > 0;\n }) : r;\n\n this.euiTableV2SelectableRowService.unregisterRows();\n this.euiTableV2SelectableRowService.registerRows(rows);\n\n this.filteredData = rows;\n\n return rows;\n }\n\n /**\n * Get the top position in px of the sticky header.\n */\n protected get stickyHeaderTopPosition(): string {\n if (!this.cdkVirtualScrollViewport || !this.cdkVirtualScrollViewport['_renderedContentOffset']) {\n return '0';\n }\n\n return (-this.cdkVirtualScrollViewport['_renderedContentOffset'] - 1) + 'px';\n }\n\n /**\n * Get the bottom position in px of the sticky footer.\n */\n protected get stickyFooterBottomPosition(): string {\n if (!this.cdkVirtualScrollViewport || !this.cdkVirtualScrollViewport['_renderedContentOffset']) {\n return '-1px';\n }\n\n return this.cdkVirtualScrollViewport['_renderedContentOffset'] - 1 + 'px';\n }\n\n /**\n * Get the width in px of the viewport in which the table is.\n */\n protected get cdkVirtualScrollViewportWidth(): string {\n return (this.elementRef.nativeElement?.parentElement?.clientWidth || 0) + 'px';\n }\n\n /**\n * Get the width, as a number, of the host element.\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 /**\n * Handles table features such as sorting, filtering, and pagination before rendering.\n */\n private tableFeaturesHandler(): void {\n this.tableFeaturesHandlerSubscription = combineLatest(\n this.paginator ? this.paginator.page$ : new BehaviorSubject(null),\n this.filter ? this.filter.filter$ : new BehaviorSubject(null),\n this.euiTableV2SortService.sorts,\n ).pipe(takeUntil(this.destroy$)).subscribe(([pagination, filter, sorts]: [EuiPaginationEvent, string, Sort[]]) => {\n let r = [...this.dataSrc];\n\n if (sorts.length > 0) {\n r = this.sortData(sorts, r);\n }\n\n r = this.filterData(filter, r);\n\n if (this.paginator) {\n this.paginator.setLength(r.length);\n r = this.paginateRows(pagination, r);\n }\n\n this.dataRendered = r;\n if (this.isSelectOnlyVisibleRows) {\n this.euiTableV2SelectableRowService.unselectAllRows();\n this.euiTableV2SelectableRowService.unregisterRows();\n this.euiTableV2SelectableRowService.registerRows(this.dataRendered);\n }\n\n this.cd.detectChanges();\n\n if (this.hasStickyCols) {\n this.stickyFeatureHandler();\n }\n });\n }\n\n /**\n * Sorts the data based on the sort, property and order, criterias.\n *\n * @param sortCriterias Array of sort criterias containing the property on which the sort will be performed and the order (`ASC` or `DESC`).\n * @param r Array of data to sort\n * @returns A sorted array\n */\n private sortData(sortCriterias: { sort: string, order: SortOrder }[], r: DATA[]): DATA[] {\n if (sortCriterias.every(criteria => criteria.order === null)) {\n return r.slice();\n }\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) {\n continue;\n }\n\n if (aValue === null || aValue === undefined) {\n return criteria.order === 'asc' ? -1 : 1;\n }\n if (bValue === null || bValue === undefined) {\n return criteria.order === 'asc' ? 1 : -1;\n }\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 const aValueStr = typeof aValue === 'string' ? aValue.toLowerCase() : aValue;\n const bValueStr = typeof bValue === 'string' ? bValue.toLowerCase() : bValue;\n\n const comparison = criteria.order === 'asc' ? aValueStr.localeCompare(bValueStr) : bValueStr.localeCompare(aValueStr);\n\n if (comparison !== 0) {\n return comparison;\n }\n }\n\n return 0;\n });\n }\n\n /**\n * Slices the data array based on the pagination event.\n *\n * @param pagination Object containing the page, the page size and the total number of pages.\n * @param r Array of data to paginate.\n * @returns The sliced array to render.\n */\n private paginateRows(pagination: EuiPaginationEvent, r: DATA[]): DATA[] {\n this.page = pagination.page;\n this.pageSize = pagination.pageSize;\n\n return r.slice(this.page * this.pageSize, this.page * this.pageSize + this.pageSize);\n }\n\n /**\n * Round down the index to the nearest multiple of the number of rows.\n *\n * @param index Index of the current scroll level.\n * @param nbRows Number of rows to display.\n * @returns A rounded number.\n */\n private roundDown(index: number, nbRows: number): number {\n return Math.floor(index / nbRows) * nbRows;\n }\n\n /**\n * Checks if in the range of data to render some of them had already been loaded or not.\n *\n * @param startIndex Start index of the range to check\n * @param limit Number of item to check after the start index.\n * @param dataRendered Array of data to check\n * @returns The index of the first undefined item in the range or `-1` if not found.\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) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Calcultates the position of columns that are sticky.\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((item, i) => {\n const isStickyFirstCol = item.offsetLeft + item.clientWidth < containerWidth;\n const isStickyLastCol = item.offsetLeft + item.clientWidth > containerWidth;\n\n const itemsSticky = isStickyFirstCol\n ? items.filter((it) => it.offsetLeft + it.clientWidth < containerWidth)\n : isStickyLastCol\n ? items.filter((it) => it.offsetLeft + it.clientWidth > containerWidth)\n : [];\n\n itemsSticky.forEach((it, j) => {\n const w = itemsSticky[j - 1]?.clientWidth;\n const offset = isStickyFirstCol\n ? parseInt(itemsSticky[j - 1]?.style.left, 10)\n : parseInt(itemsSticky[j - 1]?.style.right, 10);\n\n if (isStickyFirstCol) {\n it.style.left = (j === 0 ? 0 : w + offset) + 'px';\n } else if (isStickyLastCol) {\n it.style.right = (j === 0 ? 0 : w + offset) + 'px';\n }\n\n if (j + 1 === itemsSticky.length) {\n this.renderer.addClass(it, `eui-table-v2__col--sticky-shadowed-${isStickyFirstCol ? 'first' : 'last'}`);\n }\n });\n });\n };\n\n if (this.theadRef) {\n const thItems: HTMLTableCellElement[] = Array.from(this.theadRef.nativeElement.querySelectorAll('.eui-table-v2__col--sticky'));\n processStickyItems(thItems);\n }\n\n const bodyTrItems = Array.from(this.tbodyRef.nativeElement.querySelectorAll('tr'));\n bodyTrItems.forEach((tr) => {\n const tdItems: HTMLTableCellElement[] = Array.from(tr.querySelectorAll('.eui-table-v2__col--sticky'));\n processStickyItems(tdItems);\n });\n\n if (this.tfootRef) {\n const tdItems: HTMLTableCellElement[] = Array.from(this.tfootRef.nativeElement.querySelectorAll('.eui-table-v2__col--sticky'));\n processStickyItems(tdItems);\n }\n }, 250);\n }\n\n /**\n * Handles the selection of rows.\n */\n private selectRowsFeatureHandler(): void {\n this.euiTableV2SelectableRowService.selectedRows.pipe(skip(1), takeUntil(this.destroy$)).subscribe((selected) => {\n this.rowsSelect.emit(selected);\n });\n }\n\n /**\n * Handles the sorting of columns.\n */\n private sortFeatureHandler(): void {\n this.euiTableV2SortService.sorts.pipe(skip(1), takeUntil(this.destroy$)).subscribe((sorts: Sort[]) => {\n this.sortChange.emit(sorts);\n });\n }\n\n /**\n * Get the properties of the object matching the filter string.\n *\n * @param row Row to extract the property from.\n * @param filter String to search in the properties.\n * @returns An array of properties matching the filter.\n */\n private getProps(row: DATA, filter: string): { key: string; match: boolean; value: string | number }[] {\n const isObject = (val: string | number): boolean => val && 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 const paths = (pathObj: DATA, head = ''): string[] => {\n return Object.entries(pathObj).reduce((product, [key, value]) => {\n const fullPath = addDelimiter(head, key);\n const match = (v: string | number): boolean => v && 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 }, []);\n };\n\n paths(row);\n return props;\n }\n\n /**\n * Get a property of an object based on the path.\n *\n * @param obj Row to extract the property from.\n * @param prop Path of the property to extract.\n * @returns The value of the property\n */\n private getObjProp(obj: DATA, prop: string): string {\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=\"eui-table-v2__scroll-viewport\"\n [itemSize]=\"itemSize\"\n [style.overflow]=\"cdkVirtualScrollViewportOverflowValue\"\n tabindex=\"0\">\n <table class=\"{{ cssClasses }}\" [style.width]=\"hostWidth\">\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 (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-container>\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i }\">\n </ng-template>\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>\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </tfoot>\n }\n}\n\n<ng-template #skeletonLoading>\n <tr [style.height.px]=\"itemSize\">\n <td *ngFor=\"let __ of nbCols\"><eui-skeleton line euiRounded></eui-skeleton></td>\n </tr>\n</ng-template>\n","import { Component, OnInit, Input, OnDestroy, booleanAttribute } from '@angular/core';\nimport { Subject, combineLatest, takeUntil } from 'rxjs';\n\nimport { EuiTableV2SelectableRowService } from '../services/eui-table-v2-selectable-row.service';\nimport { EUI_INPUT_CHECKBOX } from '@eui/components/eui-input-checkbox';\n\n/**\n * @description\n * Component used internally by `eui-table-v2` to add a 'select all' checkbox in the header of the table.\n */\n@Component({\n // eslint-disable-next-line\n selector: 'tr[isHeaderSelectable]',\n templateUrl: './eui-table-v2-selectable-header.component.html',\n imports: [\n ...EUI_INPUT_CHECKBOX,\n ],\n})\nexport class EuiTableV2SelectableHeaderComponent<DATA> implements OnInit, OnDestroy {\n /**\n * Whether select all features are available in the header.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isHeaderSelectable = true;\n\n public isCheckedIndeterminate = false;\n public isChecked = false;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private euiDataTableSelectableRowService: EuiTableV2SelectableRowService<DATA>) {}\n\n ngOnInit(): void {\n combineLatest([\n this.euiDataTableSelectableRowService.isAllRowsSelected,\n this.euiDataTableSelectableRowService.selectedRows,\n ]).pipe(takeUntil(this.destroy$)).subscribe(([allSelected, selectedRows]) => {\n this.isChecked = allSelected;\n this.isCheckedIndeterminate = !allSelected && selectedRows.length > 0;\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Gets the `aria-label` attribute for the checkbox element.\n *\n * @default `Unchecked`\n */\n get ariaLabel(): string {\n if(!this.isChecked && !this.isCheckedIndeterminate) {\n return 'Unchecked';\n }\n if(this.isCheckedIndeterminate) {\n return 'Indeterminate';\n }\n if(this.isChecked && !this.isCheckedIndeterminate) {\n return 'Checked';\n }\n }\n\n /**\n * Handle the change of the selected status.\n *\n * @param e Change Event\n */\n public toggleCheckedState(e: Event): void {\n this.isChecked = (e.target as HTMLInputElement).checked;\n\n if (this.isChecked) {\n this.euiDataTableSelectableRowService.selectAllRows();\n } else {\n this.euiDataTableSelectableRowService.unselectAllRows();\n }\n }\n}\n","@if (isHeaderSelectable) {\n <th class=\"eui-table__cell-select\">\n <div class=\"eui-table__cell-select-checkbox-container\">\n <input [attr.aria-label]=\"ariaLabel\" euiInputCheckBox [checked]=\"isChecked ? 'checked' : null\" [indeterminate]=\"isCheckedIndeterminate\" (click)=\"toggleCheckedState($event)\" />\n </div>\n </th>\n}\n<ng-content></ng-content>\n","import { Component, OnInit, Input, OnDestroy, OnChanges, HostBinding, booleanAttribute, ElementRef, SimpleChanges } from '@angular/core';\nimport { Subject, fromEvent, takeUntil } from 'rxjs';\n\nimport { EuiTableV2SelectableRowService } from '../services/eui-table-v2-selectable-row.service';\nimport { FormsModule } from '@angular/forms';\nimport { EUI_INPUT_CHECKBOX } from '@eui/components/eui-input-checkbox';\n\n/**\n * @description\n * Component used internally by `eui-table-v2` to make a row selectable.\n */\n@Component({\n // eslint-disable-next-line\n selector: 'tr[isDataSelectable]',\n templateUrl: './eui-table-v2-selectable-row.component.html',\n imports: [\n FormsModule, \n ...EUI_INPUT_CHECKBOX,\n ],\n})\nexport class EuiTableV2SelectableRowComponent<DATA> implements OnInit, OnDestroy, OnChanges {\n /**\n * Data of the row.\n */\n @Input() isDataSelectable: DATA;\n /**\n * Wheter the row is selected.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isChecked = false;\n /**\n * Wheter the selection can be done with the keyboard.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isKeyboardSelectable = false;\n\n private propId = 'id';\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n /**\n * @description\n * Computes and returns the CSS classes for the component based on its current state.\n *\n * @returns {string} Space-separated string of CSS class names\n */\n @HostBinding('class')\n public get cssClasses(): string {\n return [\n 'eui-table-v2__row',\n this.isDataSelectable ? 'eui-table-v2__row--selectable' : '',\n this.isChecked ? 'eui-table-v2__row--selected' : '',\n ]\n .join(' ')\n .trim();\n }\n\n constructor(private euiDataTableSelectableRowService: EuiTableV2SelectableRowService<DATA>, private elementRef: ElementRef) {}\n\n ngOnChanges(c: SimpleChanges): void {\n if (c && c.isChecked) {\n if (c.isChecked.currentValue) {\n this.euiDataTableSelectableRowService.selectRow(this.isDataSelectable);\n } else {\n this.euiDataTableSelectableRowService.unselectRow(this.isDataSelectable);\n }\n }\n }\n\n ngOnInit(): void {\n if (this.isKeyboardSelectable && this.isDataSelectable) {\n fromEvent<PointerEvent>(this.elementRef.nativeElement, 'click').pipe(takeUntil(this.destroy$)).subscribe((event) => {\n if (event.ctrlKey) {\n if (!this.isChecked) {\n this.euiDataTableSelectableRowService.selectRow(this.isDataSelectable);\n } else {\n this.euiDataTableSelectableRowService.unselectRow(this.isDataSelectable);\n }\n } else if (event.shiftKey) {\n const rows = this.euiDataTableSelectableRowService.getRows();\n const lastSelectedRow = this.euiDataTableSelectableRowService.getLastSelectedRow();\n const lastSelectedRowPosition = rows.indexOf(lastSelectedRow);\n const position = rows.indexOf(this.isDataSelectable);\n\n const range =\n lastSelectedRowPosition > position\n ? rows.slice(position, lastSelectedRowPosition + 1)\n : rows.slice(lastSelectedRowPosition, position + 1);\n\n this.euiDataTableSelectableRowService.selectRows(range);\n\n window.getSelection()?.empty();\n } else {\n this.euiDataTableSelectableRowService.selectRows([this.isDataSelectable]);\n }\n });\n }\n\n this.propId = this.euiDataTableSelectableRowService.getPropId();\n this.euiDataTableSelectableRowService.selectedRows.pipe(takeUntil(this.destroy$)).subscribe((selected) => {\n this.isChecked = selected.find((s) => s[this.propId] === this.isDataSelectable[this.propId]) !== undefined;\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Handle the change of the selected status.\n *\n * @param e Change Event\n */\n public toggleCheckedState(e: Event): void {\n this.isChecked = (e.target as HTMLInputElement).checked;\n\n if (this.isChecked) {\n this.euiDataTableSelectableRowService.selectRow(this.isDataSelectable);\n } else {\n this.euiDataTableSelectableRowService.unselectRow(this.isDataSelectable);\n }\n }\n}\n","@if (isDataSelectable) {\n <td class=\"eui-table__cell-select\">\n <div class=\"eui-table__cell-select-checkbox-container\">\n <input\n euiInputCheckBox\n [attr.aria-label]=\"isChecked ? 'default checkbox checked' : 'default checkbox unchecked'\"\n [(ngModel)]=\"isChecked\"\n (change)=\"toggleCheckedState($event)\" />\n </div>\n </td>\n}\n<ng-content></ng-content>\n","import { Directive, HostBinding } from '@angular/core';\n\n/**\n * @description\n * Directive used to activate the sticky feature on a column of the table.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'th[isStickyCol], td[isStickyCol]',\n})\nexport class EuiTableV2StickyColDirective {\n @HostBinding('class') class = 'eui-table-v2__col--sticky';\n}\n","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, HostBinding, ViewChild, ElementRef, ViewEncapsulation } from '@angular/core';\nimport { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subject, BehaviorSubject, takeUntil, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_ICON_INPUT } from '@eui/components/eui-icon-input';\nimport { EUI_INPUT_TEXT } from '@eui/components/eui-input-text';\n\n/**\n * @description\n * Component used with `eui-table-v2` to add a filter feature to the table.\n */\n@Component({\n selector: 'eui-table-v2-filter',\n templateUrl: './eui-table-v2-filter.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [\n ReactiveFormsModule,\n ...EUI_ICON,\n ...EUI_ICON_INPUT,\n ...EUI_INPUT_TEXT,\n ],\n})\nexport class EuiTableV2FilterComponent implements OnInit, OnDestroy {\n /**\n * @description\n * Computes and returns the CSS classes for the component based on its current state.\n *\n * @returns {string} Space-separated string of CSS class names\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n 'eui-table-v2__filter',\n ]\n .join(' ')\n .trim();\n }\n\n /**\n * Placeholder text for the filter input.\n */\n @Input() placeholder: string;\n\n /**\n * Event emitted when the value of the input changes.\n */\n @Output() filterChange = new EventEmitter<string>();\n\n @ViewChild('filterInput', { read: ElementRef }) filterInput: ElementRef<HTMLInputElement>;\n\n public filter$: BehaviorSubject<string> = new BehaviorSubject(null);\n public form = new FormGroup({\n filter: new FormControl<string>(null),\n });\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n ngOnInit(): void {\n this.form.get('filter').valueChanges.pipe(debounceTime(500), distinctUntilChanged(), takeUntil(this.destroy$)).subscribe((value) => {\n this.setFilter(value);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Set the filter value and emit the change event.\n *\n * @param value Value of the input.\n */\n public setFilter(value: string): void {\n this.filter$.next(value);\n this.filterChange.emit(value);\n this.form.get('filter').setValue(value);\n }\n\n /**\n * Reset the filter and emit the change event.\n */\n public resetFilter(): void {\n this.setFilter(null);\n this.form.reset();\n this.filterInput.nativeElement.focus();\n }\n}\n","<div class=\"eui-table-v2__filter\">\n <form [formGroup]=\"form\">\n <eui-icon-input>\n <eui-icon-svg icon=\"eui-ecl-search\" fillColor=\"neutral-lighter\" aria-label=\"Search Icon\"></eui-icon-svg>\n <input #filterInput\n euiClearable\n euiInputText\n class=\"eui-table-v2__filter-input\"\n formControlName=\"filter\"\n [attr.aria-label]=\"form.get('filter').value ? form.get('filter').value : placeholder\"\n placeholder=\"{{ placeholder }}\" />\n </eui-icon-input>\n <eui-icon-svg class=\"eui-table-v2__filter-search-icon\" icon=\"eui-ecl-search\" fillColor=\"neutral-lighter\" aria-label=\"Search Icon\"></eui-icon-svg>\n </form>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @description\n * Pipe used to highlight the matching string in the data of the table when used with filter feature.\n *\n * @example\n * ```\n * <td><span [innerHTML]=\"row.year | euiTableV2Highlight: strFilter\"></span></td>\n *\n * strFilter = '19'\n * ```\n */\n@Pipe({\n name: 'euiTableV2Highlight',\n})\nexport class EuiTableV2HighlightPipe implements PipeTransform {\n /**\n * Wrap a matching string with a span element with a class name in the data of the table\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 span element. Default: 'eui-table-v2--highlighted'\n * @returns\n */\n transform(value: string, strFilter: string, className = 'eui-table-v2--highlighted'): string {\n if (!value) return '';\n if (!strFilter || strFilter.length === 0) return value;\n\n const generateVariants = (str: string): string[] => {\n const variants: Set<string> = new Set([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}\n","import { Component, OnInit, OnDestroy, Input, HostBinding, booleanAttribute, ElementRef, ViewChild } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EuiDropdownComponent } from '@eui/components/eui-dropdown';\n\nimport { EuiTableV2SortService } from '../services/eui-table-v2-sort.service';\nimport { SortOrder } from '../models/sort.model';\n\n/**\n * @description\n * Component used internally by `eui-table-v2` to make a column sortable.\n */\n@Component({\n // eslint-disable-next-line\n selector: 'th[isSortable]',\n templateUrl: './eui-table-v2-sortable-col.component.html',\n imports: [\n TranslateModule,\n ...EUI_ICON,\n ...EUI_BUTTON,\n ],\n})\nexport class EuiTableV2SortableColComponent implements OnInit, OnDestroy {\n /**\n * @description\n * Computes and returns the CSS classes for the component based on its current state.\n *\n * @returns {string} Space-separated string of CSS class names\n */\n @HostBinding('class')\n get cssClasses(): string {\n return ['eui-table-v2__sortable-col', this.sortDisabled ? 'eui-table-v2__sortable-col--disabled' : ''].join(' ').trim();\n }\n\n @Input() sortOn: string;\n @Input() sortOrder: SortOrder = 'asc';\n\n /**\n * Wheter the column is sorted by defaut.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) defaultOrder = false;\n /**\n * Wheter the sort is disabled on the column.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) sortDisabled = false;\n /**\n * Wheter the sorting of the column can be cumulated with the one of other column.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isMultiSortable = false;\n\n public order: SortOrder = null;\n public isSorted = false;\n public sortedIndex: number = null;\n\n @ViewChild('euiDropdown') euiDropdown: EuiDropdownComponent;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private euiTableV2SortService: EuiTableV2SortService, private elementRef: ElementRef) {}\n\n ngOnInit(): void {\n this.euiTableV2SortService.sorts.pipe(takeUntil(this.destroy$)).subscribe((sorts) => {\n const isSorted = sorts.find(s => s.sort === this.sortOn);\n this.isSorted = isSorted !== undefined;\n if (this.isSorted) {\n this.order = isSorted.order;\n if (sorts.length > 1) {\n this.sortedIndex = sorts.findIndex(s => s.sort === this.sortOn) + 1;\n } else {\n this.sortedIndex = null;\n }\n } else {\n this.order = null;\n this.sortedIndex = null;\n }\n });\n\n if (this.defaultOrder) {\n this.order = this.sortOrder;\n this.euiTableV2SortService.setSort(this.sortOn, this.order, this.isMultiSortable);\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Handles the click event on the sortable column.\n */\n public changeSort(): void {\n if (!this.sortDisabled) {\n if (this.order === 'asc') {\n this.order = 'desc';\n } else if (this.order === 'desc') {\n this.order = null;\n } else if (this.order === null) {\n this.order = 'asc';\n }\n\n this.euiTableV2SortService.setSort(this.sortOn, this.order, this.isMultiSortable);\n }\n }\n\n /**\n * Handles the click event on the dropdown item when the column is multi-sortable.\n * @param order An array of SortOrder. See {@link SortOrder}\n */\n public onDropdownItemClick(order: SortOrder): void {\n this.euiTableV2SortService.setSort(this.sortOn, order, this.isMultiSortable);\n }\n}\n","<div class=\"eui-table-v2__sortable-col-content\">\n <div class=\"eui-table-v2__sortable-col-content-label\">\n <ng-content></ng-content>\n\n <button class=\"eui-u-ml-xs\" euiButton euiIconButton euiBasicButton (click)=\"changeSort()\">\n @if (!isSorted && !sortDisabled) {\n <eui-icon-svg class=\"sort-icon\" icon=\"swap-vertical:outline\"></eui-icon-svg>\n }\n @if (order === 'asc' && isSorted && !sortDisabled) {\n <eui-icon-svg class=\"sort-icon\" icon=\"arrow-up:outline\" fillColor=\"primary\" [aria-label]=\"'eui.euitable.ASCENDING-ICON' | translate\"></eui-icon-svg>\n }\n @if (order === 'desc' && isSorted && !sortDisabled) {\n <eui-icon-svg class=\"sort-icon\" icon=\"arrow-down:outline\" fillColor=\"primary\" [aria-label]=\"'eui.euitable.DESCENDING-ICON' | translate\"></eui-icon-svg>\n }\n </button>\n @if (sortedIndex && !sortDisabled) {\n <button euiSizeS euiButton euiBasicButton (click)=\"changeSort()\">\n <span class=\"eui-table-v2__sortable-col-multisort-index\">{{ sortedIndex }}</span>\n </button>\n }\n </div>\n</div>\n","import { Directive, HostBinding, ElementRef, OnInit } from '@angular/core';\nimport { AnimationBuilder, AnimationPlayer, animate, style } from '@angular/animations';\n\n/**\n * @description\n * Directive used to activate the expandable feature on a row of the table.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'tr[isExpandableRow]',\n})\nexport class EuiTableV2ExpandableRowDirective implements OnInit {\n @HostBinding('class') string = 'eui-table-v2-expandable-row';\n private animationPlayer: AnimationPlayer;\n\n constructor(private el: ElementRef, private animationBuilder: AnimationBuilder) {}\n\n get isOpen(): boolean {\n return true;\n }\n\n ngOnInit(): void {\n const animation = this.animationBuilder.build([\n style({ opacity: 0 }),\n animate('250ms', style({ opacity: 1 })),\n ]);\n\n this.animationPlayer = animation.create(this.el.nativeElement);\n this.animationPlayer.play();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { EuiTableV2Component } from './eui-table-v2.component';\nimport { EuiTableV2StickyColDirective } from './directives/eui-table-v2-sticky-col.directive';\nimport { EuiTableV2SelectableRowComponent } from './selectable-row/eui-table-v2-selectable-row.component';\nimport { EuiTableV2SelectableHeaderComponent } from './selectable-header/eui-table-v2-selectable-header.component';\nimport { EuiTableV2FilterComponent } from './filter/eui-table-v2-filter.component';\nimport { EuiTableV2HighlightPipe } from './pipes/eui-table-v2-highlight.pipe';\nimport { EuiTableV2SortableColComponent } from './sortable-col/eui-table-v2-sortable-col.component';\nimport { EuiTableV2ExpandableRowDirective } from './directives/eui-table-v2-expandable-row.directive';\n\n/**\n * @description\n * Module that provides the EuiTableV2 component and its dependencies\n *\n * @deprecated Use {@link EUI_TABLE_V2} instead.\n */\n@NgModule({\n imports: [\n EuiTableV2Component,\n EuiTableV2SelectableHeaderComponent,\n EuiTableV2SelectableRowComponent,\n EuiTableV2StickyColDirective,\n EuiTableV2FilterComponent,\n EuiTableV2HighlightPipe,\n EuiTableV2SortableColComponent,\n EuiTableV2ExpandableRowDirective,\n ],\n exports: [\n EuiTableV2Component,\n EuiTableV2SelectableHeaderComponent,\n EuiTableV2SelectableRowComponent,\n EuiTableV2StickyColDirective,\n EuiTableV2FilterComponent,\n EuiTableV2HighlightPipe,\n EuiTableV2SortableColComponent,\n EuiTableV2ExpandableRowDirective,\n ],\n})\nexport class EuiTableV2Module { }\n","import { EuiTableV2Component } from './eui-table-v2.component';\nimport { EuiTableV2SelectableHeaderComponent } from './selectable-header/eui-table-v2-selectable-header.component';\nimport { EuiTableV2SelectableRowComponent } from './selectable-row/eui-table-v2-selectable-row.component';\nimport { EuiTableV2StickyColDirective } from './directives/eui-table-v2-sticky-col.directive';\nimport { EuiTableV2FilterComponent } from './filter/eui-table-v2-filter.component';\nimport { EuiTableV2HighlightPipe } from './pipes/eui-table-v2-highlight.pipe';\nimport { EuiTableV2SortableColComponent } from './sortable-col/eui-table-v2-sortable-col.component';\nimport { EuiTableV2ExpandableRowDirective } from './directives/eui-table-v2-expandable-row.directive';\n\nexport * from './eui-table-v2.component';\nexport * from './directives/eui-table-v2-sticky-col.directive';\nexport * from './directives/eui-table-v2-expandable-row.directive';\nexport * from './selectable-header/eui-table-v2-selectable-header.component';\nexport * from './selectable-row/eui-table-v2-selectable-row.component';\nexport * from './filter/eui-table-v2-filter.component';\nexport * from './pipes/eui-table-v2-highlight.pipe';\nexport * from './sortable-col/eui-table-v2-sortable-col.component';\nexport * from './models/sort.model';\nexport * from './eui-table-v2.module';\n\nexport const EUI_TABLE_V2 = [\n EuiTableV2Component,\n EuiTableV2SelectableHeaderComponent,\n EuiTableV2SelectableRowComponent,\n EuiTableV2StickyColDirective,\n EuiTableV2FilterComponent,\n EuiTableV2HighlightPipe,\n EuiTableV2SortableColComponent,\n EuiTableV2ExpandableRowDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EuiTableV2SelectableRowService","i2.EuiTableV2SortService","i2","i3","i4","i1.EuiTableV2SortService","i1"],"mappings":"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"}
1
+ {"version":3,"file":"eui-components-eui-table-v2.mjs","sources":["../../eui-table-v2/services/eui-table-v2-selectable-row.service.ts","../../eui-table-v2/services/eui-table-v2-sort.service.ts","../../eui-table-v2/eui-table-v2.component.ts","../../eui-table-v2/eui-table-v2.component.html","../../eui-table-v2/selectable-header/eui-table-v2-selectable-header.component.ts","../../eui-table-v2/selectable-header/eui-table-v2-selectable-header.component.html","../../eui-table-v2/selectable-row/eui-table-v2-selectable-row.component.ts","../../eui-table-v2/selectable-row/eui-table-v2-selectable-row.component.html","../../eui-table-v2/directives/eui-table-v2-sticky-col.directive.ts","../../eui-table-v2/filter/eui-table-v2-filter.component.ts","../../eui-table-v2/filter/eui-table-v2-filter.component.html","../../eui-table-v2/pipes/eui-table-v2-highlight.pipe.ts","../../eui-table-v2/sortable-col/eui-table-v2-sortable-col.component.ts","../../eui-table-v2/sortable-col/eui-table-v2-sortable-col.component.html","../../eui-table-v2/directives/eui-table-v2-expandable-row.directive.ts","../../eui-table-v2/eui-table-v2.module.ts","../../eui-table-v2/index.ts","../../eui-table-v2/eui-components-eui-table-v2.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Service to manage the selection state of rows in a table.\n * Allows tracking of selected rows and managing selection for individual and multiple rows.\n */\n@Injectable()\nexport class EuiTableV2SelectableRowService<DATA> {\n /**\n * BehaviorSubject containing the selected rows.\n */\n public selectedRows$: BehaviorSubject<DATA[]> = new BehaviorSubject([]);\n /**\n * BehaviorSubject containing the state of whether all rows are selected.\n */\n public isAllRowsSelected$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n \n private lastSelectedRow: DATA = null;\n private rows: DATA[] = [];\n private propId = 'id';\n\n /**\n * Observable stream of selected rows.\n */\n get selectedRows(): Observable<DATA[]> {\n return this.selectedRows$.asObservable();\n }\n\n /**\n * Observable stream of whether all rows are selected.\n */\n get isAllRowsSelected(): Observable<boolean> {\n return this.isAllRowsSelected$.asObservable();\n }\n\n /**\n * Sets the property name used to identify rows as unique.\n */\n public setPropId(value: string): void {\n this.propId = value;\n }\n\n /**\n * Gets the current property name used to identify rows.\n */\n public getPropId(): string {\n return this.propId;\n }\n\n /**\n * Registers a row as selectable.\n * \n * @param row Row to register.\n */\n public registerRow(row: DATA): void {\n if (row && !this.rows.find((r) => r[this.propId] === row[this.propId])) {\n this.rows.push(row);\n\n if (this.rows.length > this.selectedRows$.value.length && this.isAllRowsSelected$.value) {\n this.isAllRowsSelected$.next(false);\n }\n\n if (this.rows.length <= this.selectedRows$.value.length && this.rows.every((r) => this.selectedRows$.value.includes(r))) {\n this.isAllRowsSelected$.next(true);\n }\n }\n }\n\n /**\n * Registers a set of rows as selectable.\n * \n * @param rows Set of rows to register.\n */\n public registerRows(rows: DATA[]): void {\n rows.forEach((row) => {\n this.registerRow(row);\n });\n }\n\n /**\n * Unregisters a row as selectable.\n * \n * @param row Row to unregister.\n */\n public unregisterRow(row: DATA): void {\n this.rows = this.rows.filter(r => r[this.propId] !== row[this.propId]);\n }\n\n /**\n * Unregisters all rows.\n */\n public unregisterRows(): void {\n this.rows = [];\n }\n\n /**\n * Selects a row.\n * \n * @param row Row to select.\n */\n public selectRow(row: DATA): void {\n if (this.selectedRows$.value.indexOf(row) === -1) {\n this.selectedRows$.next([...this.selectedRows$.value, row]);\n }\n\n this.isAllRowsSelected$.next(this.selectedRows$.value.length === this.rows.length);\n this.lastSelectedRow = row;\n }\n\n /**\n * Unselects a row.\n * \n * @param row Row to unselect.\n */\n public unselectRow(row: DATA): void {\n if (row && this.selectedRows$.value.find((r) => r[this.propId] === row[this.propId]) !== undefined) {\n const value = this.selectedRows$.value.filter((selected) => selected[this.propId] !== row[this.propId]);\n this.selectedRows$.next(value);\n this.isAllRowsSelected$.next(false);\n }\n }\n\n /**\n * Selects a set of rows.\n * \n * @param rows Rows to select.\n */\n public selectRows(rows: DATA[]): void {\n this.selectedRows$.next([...rows]);\n this.isAllRowsSelected$.next(this.rows.length > 0 && this.rows.length === this.selectedRows$.value.length);\n this.lastSelectedRow = rows[rows.length - 1];\n }\n\n /**\n * Select all rows.\n */\n public selectAllRows(): void {\n this.selectedRows$.next([...this.rows]);\n this.isAllRowsSelected$.next(true);\n this.lastSelectedRow = this.rows[this.rows.length - 1];\n }\n\n /**\n * Unselect all rows.\n */\n public unselectAllRows(): void {\n this.selectedRows$.next([]);\n this.isAllRowsSelected$.next(false);\n this.lastSelectedRow = null;\n }\n\n /**\n * Gets the list of registered rows.\n * \n * @returns The list of registered rows.\n */\n public getRows(): DATA[] {\n return this.rows;\n }\n\n /**\n * Gets the last selected row.\n * \n * @returns The last selected row.\n */\n public getLastSelectedRow(): DATA {\n return this.lastSelectedRow;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { Sort, SortOrder } from '../models/sort.model';\n\n/**\n * Service to manage the sorting state of columns in a table.\n * Uses a `BehaviorSubject` to store and emit the current sorting values.\n */\n@Injectable()\nexport class EuiTableV2SortService {\n /**\n * BehaviorSubject containing the current sorting information.\n */\n public sorts$ = new BehaviorSubject<Sort[]>([]);\n\n /**\n * Observable stream of sorting values.\n */\n get sorts(): Observable<Sort[]> {\n return this.sorts$.asObservable();\n }\n\n private isCurrentMultiSortable = false;\n\n /**\n * Sets the ordering order for a given column\n * \n * @param sort The name of the column to sort.\n * @param order The sorting order (ascending or descending).\n * @param isMultiSortable Whether multi-sorting is allowed.\n */\n setSort(sort: string, order: SortOrder, isMultiSortable: boolean): void {\n if (isMultiSortable && this.isCurrentMultiSortable) {\n let sortValues = this.sorts$.value;\n if (!order) {\n sortValues = this.sorts$.value.filter(s => s.sort !== sort);\n this.sorts$.next(sortValues);\n } else {\n if (this.sorts$.value.find(s => s.sort === sort)) {\n sortValues = this.sorts$.value.map(s => s.sort == sort ? ({ ...s, order }) : s);\n this.sorts$.next(sortValues);\n } else {\n this.sorts$.next([ ...sortValues, { sort, order } ]);\n }\n }\n } else {\n this.sorts$.next(sort && order ? [{ sort, order }] : []);\n }\n\n this.isCurrentMultiSortable = isMultiSortable;\n }\n\n /**\n * Sets the full list of sorting values.\n * \n * @param sorts The list of sorts to apply.\n */\n setSorts(sorts: Sort[]): void {\n this.sorts$.next(sorts);\n this.isCurrentMultiSortable = sorts.length > 1;\n }\n}\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit, TemplateRef, ViewChild, AfterViewInit, ElementRef, booleanAttribute, HostBinding,\n ViewEncapsulation, ChangeDetectionStrategy, OnDestroy, OnInit, Output, EventEmitter, SimpleChanges, OnChanges, numberAttribute, ChangeDetectorRef,\n Renderer2 } from '@angular/core';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { BehaviorSubject, Observable, Subject, Subscription, combineLatest, debounceTime, skip, takeUntil } from 'rxjs';\nimport { ListRange } from '@angular/cdk/collections';\nimport { CommonModule, NgFor, NgTemplateOutlet } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { EuiTemplateDirectiveModule } from '@eui/components/directives';\nimport { EUI_SKELETON, EuiSkeletonComponent } from '@eui/components/eui-skeleton';\nimport { EUI_INPUT_CHECKBOX, EuiInputCheckboxComponent } from '@eui/components/eui-input-checkbox';\nimport { EUI_ICON, EuiIconModule } from '@eui/components/eui-icon';\nimport { EUI_INPUT_TEXT, EuiInputTextComponent } from '@eui/components/eui-input-text';\nimport { EUI_BUTTON, EuiButtonComponent } from '@eui/components/eui-button';\nimport { EUI_LIST, EuiListModule } from '@eui/components/eui-list';\nimport { EUI_ICON_INPUT, EuiIconInputModule } from '@eui/components/eui-icon-input';\n\nimport { EuiPaginationEvent, EuiPaginatorComponent } from '@eui/components/eui-paginator';\nimport { EuiTemplateDirective } from '@eui/components/directives';\nimport { BaseStatesDirective } from '@eui/components/shared';\n\nimport { EuiTableV2SelectableRowService } from './services/eui-table-v2-selectable-row.service';\nimport { EuiTableV2FilterComponent } from './filter/eui-table-v2-filter.component';\nimport { EuiTableV2SortService } from './services/eui-table-v2-sort.service';\nimport { Sort, SortOrder } from './models/sort.model';\n\nexport enum ScrollinDirection {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\n/**\n * @description\n * The `eui-table-v2` component has been built to offer various requested features including fast performance and excellent level of control over tabular presentation of data.\n *\n * The eui-table is quite simple of usage and requires :\n *\n * - rows : the data value input as an array of objects, usually fetched from a service (data payload),\n * - view : this is the template for the presentation with its various options such as the search filter, the paginator, sortable columns, etc.\n */\n@Component({\n selector: 'eui-table-v2, table[euiTableV2]',\n templateUrl: './eui-table-v2.component.html',\n styleUrls: ['./styles/_index.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgFor,\n NgTemplateOutlet,\n ScrollingModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n ...EUI_ICON,\n ...EUI_SKELETON,\n ...EUI_LIST,\n ...EUI_ICON_INPUT,\n ...EUI_BUTTON,\n ...EUI_INPUT_TEXT,\n ...EUI_INPUT_CHECKBOX,\n ],\n providers: [EuiTableV2SelectableRowService, EuiTableV2SortService],\n hostDirectives: [\n {\n directive: BaseStatesDirective,\n inputs: [],\n },\n ],\n})\nexport class EuiTableV2Component<DATA = unknown> implements AfterContentInit, AfterViewInit, OnDestroy, OnInit, OnChanges {\n /**\n * @description\n * Computes and returns the CSS classes for the component based on its current state.\n *\n * @returns {string} Space-separated string of CSS class names\n */\n @HostBinding('class')\n public get cssClasses(): string {\n return [\n this.baseStatesDirective.getCssClasses('eui-table-default eui-table-v2'),\n this.isVirtualScroll ? 'eui-table-v2--virtual-scroll' : '',\n this.hasStickyHeader ? 'eui-table-v2--sticky eui-table-v2--sticky-header' : '',\n this.hasStickyFooter ? 'eui-table-v2--sticky eui-table-v2--sticky-footer' : '',\n this.hasStickyCols ? 'eui-table-v2--sticky eui-table-v2--sticky-cols' : '',\n this.isTableResponsive ? 'eui-table-default--responsive' : '',\n this.isColsOrderable ? 'eui-table-v2--cols-orderable' : '',\n this.isLoading ? 'eui-table-v2--loading' : '',\n ]\n .join(' ')\n .trim();\n }\n\n /**\n * Data to display in the table.\n *\n * @type {DATA[]} Generic type of data\n */\n @Input() data: DATA[] = [];\n /**\n * Unicity criteria of the data.\n *\n * @default 'id'\n */\n @Input() propId = 'id';\n /**\n * In combination with `isVirtualScroll`. Row height use by virtual scroll calculation.\n *\n * @default 41\n */\n @Input() itemSize = 41;\n /**\n * `eui-paginator` reference passed to the table.\n *\n * @type {EuiPaginatorComponent}\n */\n @Input() paginator: EuiPaginatorComponent;\n /**\n * `eui-table-v2-filter` reference passed to the table.\n *\n * @type {EuiTableV2FilterComponent}\n */\n @Input() filter: EuiTableV2FilterComponent;\n /**\n * In combination with `isDataSelectable`. Rows to be selected by default.\n *\n * @type {DATA[]} Set of data to select.\n */\n @Input() preselectedRows: DATA[] = [];\n\n /**\n * Wheter the table uses virtual scroll to display data.\n *\n * `eui-table-v2` selector needs to be used in order to make virtual scroll working properly.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isVirtualScroll = false;\n /**\n * In combination with `isVirtualScroll`. Wheter the table caches the data when scroll.\n * Means that if a scroll level has already loads data, the `scrollChange` event won't be emitted.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isVirtualScrollCache = false;\n /**\n * Wheter the table header is sticky.\n * In order to use eui-table sticky feature and control the scrolling overflow,\n * we recommend to wrap the table with the provided eui-table-v2__scrollable-wrapper class and set your custom table width and/or height.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) hasStickyHeader = false;\n /**\n * Wheter the table footer is sticky.\n * In order to use eui-table sticky feature and control the scrolling overflow,\n * we recommend to wrap the table with the provided eui-table-v2__scrollable-wrapper class and set your custom table width and/or height.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) hasStickyFooter = false;\n /**\n * Wheter the table col is sticky.\n * In order to use eui-table sticky feature and control the scrolling overflow,\n * we recommend to wrap the table with the provided eui-table-v2__scrollable-wrapper class and set your custom table width and/or height.\n *\n * Only first or latest columns can be sticky.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) hasStickyCols = false;\n /**\n * Wheter the table is reponsive.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isTableResponsive = false;\n /**\n * Wheter the table uses async data.\n * In this configuration, pagination, filtering and sorting are managed by the backend.\n *\n * When data are async, paginator and filter must not be bound to the eui-table component like in other sample.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isAsync = false;\n /**\n * In combination with `isVirtualScroll`. Total length of data that are displayed in the table with virtual scroll.\n *\n * @default 0\n */\n @Input({ transform: numberAttribute }) virtualScrollAsyncItemsLength = 0;\n /**\n * In combination with `isVirtualScroll`. Nb of data items to load in the table.\n *\n * @default 50\n */\n @Input({ transform: numberAttribute }) virtualScrollNbRows = 50;\n /**\n * Wheter the cols can be reordered.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isColsOrderable = false;\n /**\n * Wheter a loading spinner is displayed in the table.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isLoading = false;\n /**\n * Wheter the 'select all' checkbox in the header will select ONLY items in the current page.\n *\n * If `false`, all items across the pages will be selected.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) isSelectOnlyVisibleRows = true;\n /**\n * @deprecated\n * Has been deprecated to align with Design System\n */\n @Input({ transform: booleanAttribute }) isTableBordered = false;\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 loading = [];\n protected nbCols: HTMLTableCellElement[] = [];\n protected dataRendered: DATA[] = [];\n protected cdkVirtualScrollViewportOverflowValue: ('hidden' | 'auto') = 'auto';\n\n @ContentChildren(EuiTemplateDirective) templates: QueryList<EuiTemplateDirective>;\n\n @ViewChild('cdkVirtualScrollViewport', { static: false }) protected cdkVirtualScrollViewport: CdkVirtualScrollViewport;\n @ViewChild('cdkVirtualScrollViewportElement', { static: false, read: ElementRef }) protected cdkVirtualScrollViewportElement: ElementRef;\n @ViewChild('theadRef') theadRef: ElementRef<HTMLElement>;\n @ViewChild('tbodyRef') tbodyRef: ElementRef<HTMLElement>;\n @ViewChild('tfootRef') tfootRef: ElementRef<HTMLElement>;\n\n /**\n * In combination with `isVirtualScroll`. Event emitted when a scroll is done.\n */\n @Output() scrollChange = new EventEmitter();\n /**\n * In combination with `isDataSelectable` on a row. Event emitted when the selection changes with an array of data.\n */\n @Output() rowsSelect = new EventEmitter<DATA[]>();\n /**\n * In combination with `isSortable` on the cols. Event emitted when the sort changes with the property displayed in the col and the order as `ASC` or `DESC`.\n */\n @Output() sortChange = new EventEmitter<Sort[]>();\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private virtualScrollLastMultiple = 0;\n private virtualScrollSpliceFrom = 0;\n private scrolledIndex = 0;\n private nbItemDisplayed = 0;\n private scrollingDirection: ScrollinDirection;\n private mutationObserver: MutationObserver;\n private dataSrc: DATA[] = [];\n private page = 0;\n private pageSize = 0;\n private tableFeaturesHandlerSubscription = new Subscription();\n private filteredData: DATA[] = [];\n\n constructor(private elementRef: ElementRef,\n private cd: ChangeDetectorRef,\n private euiTableV2SelectableRowService: EuiTableV2SelectableRowService<DATA>,\n private euiTableV2SortService: EuiTableV2SortService,\n private baseStatesDirective: BaseStatesDirective,\n private renderer: Renderer2,\n ) {}\n\n ngOnChanges(c: SimpleChanges): void {\n if (!this.data) {\n this.data = [];\n }\n\n this.euiTableV2SelectableRowService.setPropId(this.propId);\n if (this.isVirtualScroll) {\n if (c.data && c.data.isFirstChange()) {\n this.dataRendered = [...c.data.currentValue, ...Array.from({ length: this.virtualScrollAsyncItemsLength - c.data.currentValue.length })];\n\n this.euiTableV2SelectableRowService.unregisterRows();\n this.euiTableV2SelectableRowService.registerRows(this.dataRendered);\n }\n\n if (c.data && !c.data.isFirstChange()) {\n if (this.isAsync) {\n const source = [...this.dataRendered];\n if (this.isVirtualScrollCache) {\n this.dataRendered = [...source.slice(0, this.virtualScrollSpliceFrom), ...c.data.currentValue, ...source.slice(this.virtualScrollSpliceFrom + this.virtualScrollNbRows)];\n } else {\n this.dataRendered = [\n ...Array.from({ length: this.virtualScrollSpliceFrom - this.nbItemDisplayed }),\n ...source.slice(this.virtualScrollSpliceFrom - this.nbItemDisplayed, this.virtualScrollSpliceFrom),\n ...c.data.currentValue,\n ...source.slice(this.virtualScrollSpliceFrom + this.virtualScrollNbRows, this.virtualScrollSpliceFrom + this.virtualScrollNbRows + this.nbItemDisplayed),\n ...Array.from({ length: this.virtualScrollAsyncItemsLength - (this.virtualScrollSpliceFrom + this.virtualScrollNbRows + this.nbItemDisplayed) }),\n ];\n }\n\n if (c && c.virtualScrollAsyncItemsLength) {\n if (c.virtualScrollAsyncItemsLength.previousValue > c.virtualScrollAsyncItemsLength.currentValue) {\n this.dataRendered = this.dataRendered.slice(0, c.virtualScrollAsyncItemsLength.currentValue);\n } else {\n this.dataRendered = [...c.data.currentValue, ...Array.from({ length: this.virtualScrollAsyncItemsLength - c.data.currentValue.length })];\n }\n }\n\n this.euiTableV2SelectableRowService.unregisterRows();\n this.euiTableV2SelectableRowService.registerRows(this.dataRendered);\n\n if (this.scrollingDirection === ScrollinDirection.DOWN) {\n if ((this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== -1 ||\n this.scrolledIndex === this.virtualScrollSpliceFrom &&\n !this.dataRendered[this.scrolledIndex - 1]) &&\n this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== this.dataRendered.length\n ) {\n // console.log('reposition down')\n this.cdkVirtualScrollViewport.scrollToIndex(this.virtualScrollSpliceFrom + 1);\n }\n }\n\n if (this.scrollingDirection === ScrollinDirection.UP) {\n if (this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== -1) {\n // console.log('reposition up')\n this.cdkVirtualScrollViewport.scrollToIndex(this.virtualScrollSpliceFrom + 1);\n }\n }\n\n this.stickyFeatureHandler();\n }\n }\n } else {\n if (c && c.data) {\n const lengthChanged = this.dataSrc.length !== c.data.currentValue.length;\n this.dataSrc = c.data.currentValue ? [...c.data.currentValue] : [];\n\n if (this.paginator && lengthChanged) {\n this.paginator.goFirstPage({ emitEvent: !c.data.firstChange });\n }\n\n if (!this.isAsync && !c.data.isFirstChange()) {\n this.tableFeaturesHandlerSubscription.unsubscribe();\n this.tableFeaturesHandler();\n }\n\n this.euiTableV2SelectableRowService.registerRows(this.dataSrc);\n }\n if (c && c.paginator?.currentValue) {\n this.paginator.setLength(this.data.length);\n if (!c.paginator?.isFirstChange()) {\n this.paginator.goFirstPage({ emitEvent: false });\n }\n } else {\n // this.data can be changed anytime, then this else can be executed at that time, testing this.paginator allows to make sure\n // the user wants to disable pagination or change the datasource\n if (!this.paginator) {\n this.dataRendered = this.dataSrc;\n this.page = 0;\n }\n }\n }\n\n if (c && c.preselectedRows && !c.preselectedRows.isFirstChange()) {\n this.euiTableV2SelectableRowService.selectRows(c.preselectedRows.currentValue);\n }\n }\n\n ngOnInit(): void {\n this.dataSrc = [...this.data];\n }\n\n ngAfterContentInit(): void {\n this.templates.forEach((item) => {\n if (item.getType() === 'header') {\n this.headerTemplate = item.template;\n }\n if (item.getType() === 'body') {\n this.bodyTemplate = item.template;\n }\n if (item.getType() === 'footer') {\n this.footerTemplate = item.template;\n }\n if (item.getType() === 'noData') {\n this.noDataTemplate = item.template;\n }\n });\n }\n\n // test(index): void {\n // this.cdkVirtualScrollViewport.scrollToIndex(index)\n // }\n\n ngAfterViewInit(): void {\n this.stickyFeatureHandler();\n\n if (this.isVirtualScroll) {\n this.cdkVirtualScrollViewport?.renderedRangeStream\n .pipe(debounceTime(500), takeUntil(this.destroy$))\n .subscribe((listRange: ListRange) => {\n this.stickyFeatureHandler();\n });\n\n const theadElements = Array.from(this.theadRef.nativeElement.querySelectorAll('th'));\n this.nbCols = new Array(theadElements.length);\n\n this.cdkVirtualScrollViewport.scrolledIndexChange\n .pipe(debounceTime(500), takeUntil(this.destroy$))\n .subscribe((scrolledIndex: number) => {\n if (this.isAsync) {\n this.scrollingDirection = scrolledIndex > this.scrolledIndex ? ScrollinDirection.DOWN : ScrollinDirection.UP;\n this.scrolledIndex = scrolledIndex;\n\n this.cdkVirtualScrollViewport.setTotalContentSize(this.virtualScrollAsyncItemsLength * this.itemSize);\n\n const scrollOffset = this.cdkVirtualScrollViewport.measureScrollOffset('top');\n const endIndex = Math.ceil((scrollOffset + this.cdkVirtualScrollViewport.getViewportSize()) / this.itemSize);\n this.nbItemDisplayed = endIndex - scrolledIndex;\n const virtualScrollCurrentMultiple = Math.floor((scrolledIndex + this.nbItemDisplayed) / this.virtualScrollNbRows);\n\n if (scrolledIndex > 0) {\n if (this.dataRendered[scrolledIndex] || (this.scrollingDirection === ScrollinDirection.UP && this.dataRendered[scrolledIndex - 1])) {\n // console.log('virtualScrollCurrentMultiple', virtualScrollCurrentMultiple)\n // console.log('this.virtualScrollLastMultiple', this.virtualScrollLastMultiple)\n // console.log('virtualScrollCurrentMultiple > this.virtualScrollLastMultiple', virtualScrollCurrentMultiple > this.virtualScrollLastMultiple)\n\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\n this.virtualScrollLastMultiple = virtualScrollCurrentMultiple;\n }\n });\n }\n\n if (this.cdkVirtualScrollViewportElement) {\n this.cdkVirtualScrollViewportElement.nativeElement.style.height = this.cdkVirtualScrollViewport.elementRef.nativeElement.parentElement.clientHeight + 'px';\n }\n\n const mutationObservable = new Observable<MutationRecord[]>((observer) => {\n this.mutationObserver = new MutationObserver((mutations) => {\n const filteredMutations = mutations.filter((mutation) => {\n return (\n mutation.target instanceof HTMLElement &&\n mutation.target.tagName.toLowerCase() === 'th' &&\n mutation.attributeName === 'style'\n );\n });\n\n if (filteredMutations.length > 0) {\n observer.next(filteredMutations);\n }\n });\n\n const config = { attributes: true, subtree: true, attributeFilter: ['style'] };\n this.mutationObserver.observe(this.theadRef.nativeElement, config);\n });\n\n mutationObservable.pipe(debounceTime(250), takeUntil(this.destroy$)).subscribe((mutations) => {\n this.stickyFeatureHandler();\n });\n\n if (!this.isAsync && !this.isVirtualScroll) {\n this.tableFeaturesHandlerSubscription.unsubscribe();\n this.tableFeaturesHandler();\n\n if (this.preselectedRows) {\n setTimeout(() => {\n this.euiTableV2SelectableRowService.selectRows(this.preselectedRows);\n });\n }\n }\n\n this.selectRowsFeatureHandler();\n this.sortFeatureHandler();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n this.mutationObserver?.disconnect();\n this.tableFeaturesHandlerSubscription.unsubscribe();\n }\n\n /**\n * Moves an element within the rendered data array.\n *\n * @param itemId - The identifier (default: id) of the element to move.\n * @param fromIndex - The current index of the element to move.\n * @param toIndex - The new desired position for the element.\n */\n public 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\n const source = [...this.dataRendered];\n const [elementToMove] = source.splice(itemPosition, 1);\n\n source.splice(itemPosition + move, 0, elementToMove);\n\n this.dataRendered = source;\n }\n\n /**\n * Select all rows\n */\n public selectAllRows(): void {\n this.euiTableV2SelectableRowService.selectAllRows();\n }\n\n /**\n * Unselect all rows\n */\n public unselectAllRows(): void {\n this.euiTableV2SelectableRowService.unselectAllRows();\n }\n\n /**\n * Return an array with the data matching the string filter\n * @returns\n */\n public getFilteredData(): DATA[] {\n return this.filteredData;\n }\n\n /**\n * Sort the table's data.\n *\n * @param sorts An array of SortOrder. See {@link SortOrder}\n */\n public setSort(sorts: Sort[]): void {\n this.euiTableV2SortService.setSorts(sorts);\n }\n\n /**\n * Filters the table's data based on a string declared in `EuiTableV2FilterComponent`\n *\n * @param filter String to filter the data\n * @param r Array of data to filter\n * @returns The set of data matching the filter\n */\n public 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 === true);\n return matching?.length > 0;\n }) : r;\n\n this.euiTableV2SelectableRowService.unregisterRows();\n this.euiTableV2SelectableRowService.registerRows(rows);\n\n this.filteredData = rows;\n\n return rows;\n }\n\n /**\n * Get the top position in px of the sticky header.\n */\n protected get stickyHeaderTopPosition(): string {\n if (!this.cdkVirtualScrollViewport || !this.cdkVirtualScrollViewport['_renderedContentOffset']) {\n return '0';\n }\n\n return (-this.cdkVirtualScrollViewport['_renderedContentOffset'] - 1) + 'px';\n }\n\n /**\n * Get the bottom position in px of the sticky footer.\n */\n protected get stickyFooterBottomPosition(): string {\n if (!this.cdkVirtualScrollViewport || !this.cdkVirtualScrollViewport['_renderedContentOffset']) {\n return '-1px';\n }\n\n return this.cdkVirtualScrollViewport['_renderedContentOffset'] - 1 + 'px';\n }\n\n /**\n * Get the width in px of the viewport in which the table is.\n */\n protected get cdkVirtualScrollViewportWidth(): string {\n return (this.elementRef.nativeElement?.parentElement?.clientWidth || 0) + 'px';\n }\n\n /**\n * Get the width, as a number, of the host element.\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 /**\n * Handles table features such as sorting, filtering, and pagination before rendering.\n */\n private tableFeaturesHandler(): void {\n this.tableFeaturesHandlerSubscription = combineLatest(\n this.paginator ? this.paginator.page$ : new BehaviorSubject(null),\n this.filter ? this.filter.filter$ : new BehaviorSubject(null),\n this.euiTableV2SortService.sorts,\n ).pipe(takeUntil(this.destroy$)).subscribe(([pagination, filter, sorts]: [EuiPaginationEvent, string, Sort[]]) => {\n let r = [...this.dataSrc];\n\n if (sorts.length > 0) {\n r = this.sortData(sorts, r);\n }\n\n r = this.filterData(filter, r);\n\n if (this.paginator) {\n this.paginator.setLength(r.length);\n r = this.paginateRows(pagination, r);\n }\n\n this.dataRendered = r;\n if (this.isSelectOnlyVisibleRows) {\n this.euiTableV2SelectableRowService.unselectAllRows();\n this.euiTableV2SelectableRowService.unregisterRows();\n this.euiTableV2SelectableRowService.registerRows(this.dataRendered);\n }\n\n this.cd.detectChanges();\n\n if (this.hasStickyCols) {\n this.stickyFeatureHandler();\n }\n });\n }\n\n /**\n * Sorts the data based on the sort, property and order, criterias.\n *\n * @param sortCriterias Array of sort criterias containing the property on which the sort will be performed and the order (`ASC` or `DESC`).\n * @param r Array of data to sort\n * @returns A sorted array\n */\n private sortData(sortCriterias: { sort: string, order: SortOrder }[], r: DATA[]): DATA[] {\n if (sortCriterias.every(criteria => criteria.order === null)) {\n return r.slice();\n }\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) {\n continue;\n }\n\n if (aValue === null || aValue === undefined) {\n return criteria.order === 'asc' ? -1 : 1;\n }\n if (bValue === null || bValue === undefined) {\n return criteria.order === 'asc' ? 1 : -1;\n }\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 const aValueStr = typeof aValue === 'string' ? aValue.toLowerCase() : aValue;\n const bValueStr = typeof bValue === 'string' ? bValue.toLowerCase() : bValue;\n\n const comparison = criteria.order === 'asc' ? aValueStr.localeCompare(bValueStr) : bValueStr.localeCompare(aValueStr);\n\n if (comparison !== 0) {\n return comparison;\n }\n }\n\n return 0;\n });\n }\n\n /**\n * Slices the data array based on the pagination event.\n *\n * @param pagination Object containing the page, the page size and the total number of pages.\n * @param r Array of data to paginate.\n * @returns The sliced array to render.\n */\n private paginateRows(pagination: EuiPaginationEvent, r: DATA[]): DATA[] {\n this.page = pagination.page;\n this.pageSize = pagination.pageSize;\n\n return r.slice(this.page * this.pageSize, this.page * this.pageSize + this.pageSize);\n }\n\n /**\n * Round down the index to the nearest multiple of the number of rows.\n *\n * @param index Index of the current scroll level.\n * @param nbRows Number of rows to display.\n * @returns A rounded number.\n */\n private roundDown(index: number, nbRows: number): number {\n return Math.floor(index / nbRows) * nbRows;\n }\n\n /**\n * Checks if in the range of data to render some of them had already been loaded or not.\n *\n * @param startIndex Start index of the range to check\n * @param limit Number of item to check after the start index.\n * @param dataRendered Array of data to check\n * @returns The index of the first undefined item in the range or `-1` if not found.\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) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Calcultates the position of columns that are sticky.\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((item, i) => {\n const isStickyFirstCol = item.offsetLeft + item.clientWidth < containerWidth;\n const isStickyLastCol = item.offsetLeft + item.clientWidth > containerWidth;\n\n const itemsSticky = isStickyFirstCol\n ? items.filter((it) => it.offsetLeft + it.clientWidth < containerWidth)\n : isStickyLastCol\n ? items.filter((it) => it.offsetLeft + it.clientWidth > containerWidth)\n : [];\n\n itemsSticky.forEach((it, j) => {\n const w = itemsSticky[j - 1]?.clientWidth;\n const offset = isStickyFirstCol\n ? parseInt(itemsSticky[j - 1]?.style.left, 10)\n : parseInt(itemsSticky[j - 1]?.style.right, 10);\n\n if (isStickyFirstCol) {\n it.style.left = (j === 0 ? 0 : w + offset) + 'px';\n } else if (isStickyLastCol) {\n it.style.right = (j === 0 ? 0 : w + offset) + 'px';\n }\n\n if (j + 1 === itemsSticky.length) {\n this.renderer.addClass(it, `eui-table-v2__col--sticky-shadowed-${isStickyFirstCol ? 'first' : 'last'}`);\n }\n });\n });\n };\n\n if (this.theadRef) {\n const thItems: HTMLTableCellElement[] = Array.from(this.theadRef.nativeElement.querySelectorAll('.eui-table-v2__col--sticky'));\n processStickyItems(thItems);\n }\n\n const bodyTrItems = Array.from(this.tbodyRef.nativeElement.querySelectorAll('tr'));\n bodyTrItems.forEach((tr) => {\n const tdItems: HTMLTableCellElement[] = Array.from(tr.querySelectorAll('.eui-table-v2__col--sticky'));\n processStickyItems(tdItems);\n });\n\n if (this.tfootRef) {\n const tdItems: HTMLTableCellElement[] = Array.from(this.tfootRef.nativeElement.querySelectorAll('.eui-table-v2__col--sticky'));\n processStickyItems(tdItems);\n }\n }, 250);\n }\n\n /**\n * Handles the selection of rows.\n */\n private selectRowsFeatureHandler(): void {\n this.euiTableV2SelectableRowService.selectedRows.pipe(skip(1), takeUntil(this.destroy$)).subscribe((selected) => {\n this.rowsSelect.emit(selected);\n });\n }\n\n /**\n * Handles the sorting of columns.\n */\n private sortFeatureHandler(): void {\n this.euiTableV2SortService.sorts.pipe(skip(1), takeUntil(this.destroy$)).subscribe((sorts: Sort[]) => {\n this.sortChange.emit(sorts);\n });\n }\n\n /**\n * Get the properties of the object matching the filter string.\n *\n * @param row Row to extract the property from.\n * @param filter String to search in the properties.\n * @returns An array of properties matching the filter.\n */\n private getProps(row: DATA, filter: string): { key: string; match: boolean; value: string | number }[] {\n const isObject = (val: string | number): boolean => val && 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 const paths = (pathObj: DATA, head = ''): string[] => {\n return Object.entries(pathObj).reduce((product, [key, value]) => {\n const fullPath = addDelimiter(head, key);\n const match = (v: string | number): boolean => v && 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 }, []);\n };\n\n paths(row);\n return props;\n }\n\n /**\n * Get a property of an object based on the path.\n *\n * @param obj Row to extract the property from.\n * @param prop Path of the property to extract.\n * @returns The value of the property\n */\n private getObjProp(obj: DATA, prop: string): string {\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=\"eui-table-v2__scroll-viewport\"\n [itemSize]=\"itemSize\"\n [style.overflow]=\"cdkVirtualScrollViewportOverflowValue\"\n tabindex=\"0\">\n <table class=\"{{ cssClasses }}\" [style.width]=\"hostWidth\">\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 (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-container>\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i }\">\n </ng-template>\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>\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </tfoot>\n }\n}\n\n<ng-template #skeletonLoading>\n <tr [style.height.px]=\"itemSize\">\n <td *ngFor=\"let __ of nbCols\"><eui-skeleton line euiRounded></eui-skeleton></td>\n </tr>\n</ng-template>\n","import { Component, OnInit, Input, OnDestroy, booleanAttribute } from '@angular/core';\nimport { Subject, combineLatest, takeUntil } from 'rxjs';\n\nimport { EuiTableV2SelectableRowService } from '../services/eui-table-v2-selectable-row.service';\nimport { EUI_INPUT_CHECKBOX } from '@eui/components/eui-input-checkbox';\n\n/**\n * @description\n * Component used internally by `eui-table-v2` to add a 'select all' checkbox in the header of the table.\n */\n@Component({\n // eslint-disable-next-line\n selector: 'tr[isHeaderSelectable]',\n templateUrl: './eui-table-v2-selectable-header.component.html',\n imports: [\n ...EUI_INPUT_CHECKBOX,\n ],\n})\nexport class EuiTableV2SelectableHeaderComponent<DATA> implements OnInit, OnDestroy {\n /**\n * Whether select all features are available in the header.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isHeaderSelectable = true;\n\n public isCheckedIndeterminate = false;\n public isChecked = false;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private euiDataTableSelectableRowService: EuiTableV2SelectableRowService<DATA>) {}\n\n ngOnInit(): void {\n combineLatest([\n this.euiDataTableSelectableRowService.isAllRowsSelected,\n this.euiDataTableSelectableRowService.selectedRows,\n ]).pipe(takeUntil(this.destroy$)).subscribe(([allSelected, selectedRows]) => {\n this.isChecked = allSelected;\n this.isCheckedIndeterminate = !allSelected && selectedRows.length > 0;\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Gets the `aria-label` attribute for the checkbox element.\n *\n * @default `Unchecked`\n */\n get ariaLabel(): string {\n if(!this.isChecked && !this.isCheckedIndeterminate) {\n return 'Unchecked';\n }\n if(this.isCheckedIndeterminate) {\n return 'Indeterminate';\n }\n if(this.isChecked && !this.isCheckedIndeterminate) {\n return 'Checked';\n }\n }\n\n /**\n * Handle the change of the selected status.\n *\n * @param e Change Event\n */\n public toggleCheckedState(e: Event): void {\n this.isChecked = (e.target as HTMLInputElement).checked;\n\n if (this.isChecked) {\n this.euiDataTableSelectableRowService.selectAllRows();\n } else {\n this.euiDataTableSelectableRowService.unselectAllRows();\n }\n }\n}\n","@if (isHeaderSelectable) {\n <th class=\"eui-table__cell-select\">\n <div class=\"eui-table__cell-select-checkbox-container\">\n <input [attr.aria-label]=\"ariaLabel\" euiInputCheckBox [checked]=\"isChecked ? 'checked' : null\" [indeterminate]=\"isCheckedIndeterminate\" (click)=\"toggleCheckedState($event)\" />\n </div>\n </th>\n}\n<ng-content></ng-content>\n","import { Component, OnInit, Input, OnDestroy, OnChanges, HostBinding, booleanAttribute, ElementRef, SimpleChanges } from '@angular/core';\nimport { Subject, fromEvent, takeUntil } from 'rxjs';\n\nimport { EuiTableV2SelectableRowService } from '../services/eui-table-v2-selectable-row.service';\nimport { FormsModule } from '@angular/forms';\nimport { EUI_INPUT_CHECKBOX } from '@eui/components/eui-input-checkbox';\n\n/**\n * @description\n * Component used internally by `eui-table-v2` to make a row selectable.\n */\n@Component({\n // eslint-disable-next-line\n selector: 'tr[isDataSelectable]',\n templateUrl: './eui-table-v2-selectable-row.component.html',\n imports: [\n FormsModule, \n ...EUI_INPUT_CHECKBOX,\n ],\n})\nexport class EuiTableV2SelectableRowComponent<DATA> implements OnInit, OnDestroy, OnChanges {\n /**\n * Data of the row.\n */\n @Input() isDataSelectable: DATA;\n /**\n * Wheter the row is selected.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isChecked = false;\n /**\n * Wheter the selection can be done with the keyboard.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isKeyboardSelectable = false;\n\n private propId = 'id';\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n /**\n * @description\n * Computes and returns the CSS classes for the component based on its current state.\n *\n * @returns {string} Space-separated string of CSS class names\n */\n @HostBinding('class')\n public get cssClasses(): string {\n return [\n 'eui-table-v2__row',\n this.isDataSelectable ? 'eui-table-v2__row--selectable' : '',\n this.isChecked ? 'eui-table-v2__row--selected' : '',\n ]\n .join(' ')\n .trim();\n }\n\n constructor(private euiDataTableSelectableRowService: EuiTableV2SelectableRowService<DATA>, private elementRef: ElementRef) {}\n\n ngOnChanges(c: SimpleChanges): void {\n if (c && c.isChecked) {\n if (c.isChecked.currentValue) {\n this.euiDataTableSelectableRowService.selectRow(this.isDataSelectable);\n } else {\n this.euiDataTableSelectableRowService.unselectRow(this.isDataSelectable);\n }\n }\n }\n\n ngOnInit(): void {\n if (this.isKeyboardSelectable && this.isDataSelectable) {\n fromEvent<PointerEvent>(this.elementRef.nativeElement, 'click').pipe(takeUntil(this.destroy$)).subscribe((event) => {\n if (event.ctrlKey) {\n if (!this.isChecked) {\n this.euiDataTableSelectableRowService.selectRow(this.isDataSelectable);\n } else {\n this.euiDataTableSelectableRowService.unselectRow(this.isDataSelectable);\n }\n } else if (event.shiftKey) {\n const rows = this.euiDataTableSelectableRowService.getRows();\n const lastSelectedRow = this.euiDataTableSelectableRowService.getLastSelectedRow();\n const lastSelectedRowPosition = rows.indexOf(lastSelectedRow);\n const position = rows.indexOf(this.isDataSelectable);\n\n const range =\n lastSelectedRowPosition > position\n ? rows.slice(position, lastSelectedRowPosition + 1)\n : rows.slice(lastSelectedRowPosition, position + 1);\n\n this.euiDataTableSelectableRowService.selectRows(range);\n\n window.getSelection()?.empty();\n } else {\n this.euiDataTableSelectableRowService.selectRows([this.isDataSelectable]);\n }\n });\n }\n\n this.propId = this.euiDataTableSelectableRowService.getPropId();\n this.euiDataTableSelectableRowService.selectedRows.pipe(takeUntil(this.destroy$)).subscribe((selected) => {\n this.isChecked = selected.find((s) => s[this.propId] === this.isDataSelectable[this.propId]) !== undefined;\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Handle the change of the selected status.\n *\n * @param e Change Event\n */\n public toggleCheckedState(e: Event): void {\n this.isChecked = (e.target as HTMLInputElement).checked;\n\n if (this.isChecked) {\n this.euiDataTableSelectableRowService.selectRow(this.isDataSelectable);\n } else {\n this.euiDataTableSelectableRowService.unselectRow(this.isDataSelectable);\n }\n }\n}\n","@if (isDataSelectable) {\n <td class=\"eui-table__cell-select\">\n <div class=\"eui-table__cell-select-checkbox-container\">\n <input\n euiInputCheckBox\n [attr.aria-label]=\"isChecked ? 'default checkbox checked' : 'default checkbox unchecked'\"\n [(ngModel)]=\"isChecked\"\n (change)=\"toggleCheckedState($event)\" />\n </div>\n </td>\n}\n<ng-content></ng-content>\n","import { Directive, HostBinding } from '@angular/core';\n\n/**\n * @description\n * Directive used to activate the sticky feature on a column of the table.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'th[isStickyCol], td[isStickyCol]',\n})\nexport class EuiTableV2StickyColDirective {\n @HostBinding('class') class = 'eui-table-v2__col--sticky';\n}\n","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, HostBinding, ViewChild, ElementRef, ViewEncapsulation } from '@angular/core';\nimport { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subject, BehaviorSubject, takeUntil, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_ICON_INPUT } from '@eui/components/eui-icon-input';\nimport { EUI_INPUT_TEXT } from '@eui/components/eui-input-text';\n\n/**\n * @description\n * Component used with `eui-table-v2` to add a filter feature to the table.\n */\n@Component({\n selector: 'eui-table-v2-filter',\n templateUrl: './eui-table-v2-filter.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [\n ReactiveFormsModule,\n ...EUI_ICON,\n ...EUI_ICON_INPUT,\n ...EUI_INPUT_TEXT,\n ],\n})\nexport class EuiTableV2FilterComponent implements OnInit, OnDestroy {\n /**\n * @description\n * Computes and returns the CSS classes for the component based on its current state.\n *\n * @returns {string} Space-separated string of CSS class names\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n 'eui-table-v2__filter',\n ]\n .join(' ')\n .trim();\n }\n\n /**\n * Placeholder text for the filter input.\n */\n @Input() placeholder: string;\n\n /**\n * Event emitted when the value of the input changes.\n */\n @Output() filterChange = new EventEmitter<string>();\n\n @ViewChild('filterInput', { read: ElementRef }) filterInput: ElementRef<HTMLInputElement>;\n\n public filter$: BehaviorSubject<string> = new BehaviorSubject(null);\n public form = new FormGroup({\n filter: new FormControl<string>(null),\n });\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n ngOnInit(): void {\n this.form.get('filter').valueChanges.pipe(debounceTime(500), distinctUntilChanged(), takeUntil(this.destroy$)).subscribe((value) => {\n this.setFilter(value);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Set the filter value and emit the change event.\n *\n * @param value Value of the input.\n */\n public setFilter(value: string): void {\n this.filter$.next(value);\n this.filterChange.emit(value);\n this.form.get('filter').setValue(value);\n }\n\n /**\n * Reset the filter and emit the change event.\n */\n public resetFilter(): void {\n this.setFilter(null);\n this.form.reset();\n this.filterInput.nativeElement.focus();\n }\n}\n","<div class=\"eui-table-v2__filter\">\n <form [formGroup]=\"form\">\n <eui-icon-input>\n <eui-icon-svg icon=\"eui-ecl-search\" fillColor=\"neutral-lighter\" aria-label=\"Search Icon\"></eui-icon-svg>\n <input #filterInput\n euiClearable\n euiInputText\n class=\"eui-table-v2__filter-input\"\n formControlName=\"filter\"\n [attr.aria-label]=\"form.get('filter').value ? form.get('filter').value : placeholder\"\n placeholder=\"{{ placeholder }}\" />\n </eui-icon-input>\n <eui-icon-svg class=\"eui-table-v2__filter-search-icon\" icon=\"eui-ecl-search\" fillColor=\"neutral-lighter\" aria-label=\"Search Icon\"></eui-icon-svg>\n </form>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @description\n * Pipe used to highlight the matching string in the data of the table when used with filter feature.\n *\n * @example\n * ```\n * <td><span [innerHTML]=\"row.year | euiTableV2Highlight: strFilter\"></span></td>\n *\n * strFilter = '19'\n * ```\n */\n@Pipe({\n name: 'euiTableV2Highlight',\n})\nexport class EuiTableV2HighlightPipe implements PipeTransform {\n /**\n * Wrap a matching string with a span element with a class name in the data of the table\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 span element. Default: 'eui-table-v2--highlighted'\n * @returns\n */\n transform(value: string, strFilter: string, className = 'eui-table-v2--highlighted'): string {\n if (!value) return '';\n if (!strFilter || strFilter.length === 0) return value;\n\n const generateVariants = (str: string): string[] => {\n const variants: Set<string> = new Set([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}\n","import { Component, OnInit, OnDestroy, Input, HostBinding, booleanAttribute, ElementRef, ViewChild } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EuiDropdownComponent } from '@eui/components/eui-dropdown';\n\nimport { EuiTableV2SortService } from '../services/eui-table-v2-sort.service';\nimport { SortOrder } from '../models/sort.model';\n\n/**\n * @description\n * Component used internally by `eui-table-v2` to make a column sortable.\n */\n@Component({\n // eslint-disable-next-line\n selector: 'th[isSortable]',\n templateUrl: './eui-table-v2-sortable-col.component.html',\n imports: [\n TranslateModule,\n ...EUI_ICON,\n ...EUI_BUTTON,\n ],\n})\nexport class EuiTableV2SortableColComponent implements OnInit, OnDestroy {\n /**\n * @description\n * Computes and returns the CSS classes for the component based on its current state.\n *\n * @returns {string} Space-separated string of CSS class names\n */\n @HostBinding('class')\n get cssClasses(): string {\n return ['eui-table-v2__sortable-col', this.sortDisabled ? 'eui-table-v2__sortable-col--disabled' : ''].join(' ').trim();\n }\n\n @Input() sortOn: string;\n @Input() sortOrder: SortOrder = 'asc';\n\n /**\n * Wheter the column is sorted by defaut.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) defaultOrder = false;\n /**\n * Wheter the sort is disabled on the column.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) sortDisabled = false;\n /**\n * Wheter the sorting of the column can be cumulated with the one of other column.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isMultiSortable = false;\n\n public order: SortOrder = null;\n public isSorted = false;\n public sortedIndex: number = null;\n\n @ViewChild('euiDropdown') euiDropdown: EuiDropdownComponent;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private euiTableV2SortService: EuiTableV2SortService, private elementRef: ElementRef) {}\n\n ngOnInit(): void {\n this.euiTableV2SortService.sorts.pipe(takeUntil(this.destroy$)).subscribe((sorts) => {\n const isSorted = sorts.find(s => s.sort === this.sortOn);\n this.isSorted = isSorted !== undefined;\n if (this.isSorted) {\n this.order = isSorted.order;\n if (sorts.length > 1) {\n this.sortedIndex = sorts.findIndex(s => s.sort === this.sortOn) + 1;\n } else {\n this.sortedIndex = null;\n }\n } else {\n this.order = null;\n this.sortedIndex = null;\n }\n });\n\n if (this.defaultOrder) {\n this.order = this.sortOrder;\n this.euiTableV2SortService.setSort(this.sortOn, this.order, this.isMultiSortable);\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Handles the click event on the sortable column.\n */\n public changeSort(): void {\n if (!this.sortDisabled) {\n if (this.order === 'asc') {\n this.order = 'desc';\n } else if (this.order === 'desc') {\n this.order = null;\n } else if (this.order === null) {\n this.order = 'asc';\n }\n\n this.euiTableV2SortService.setSort(this.sortOn, this.order, this.isMultiSortable);\n }\n }\n\n /**\n * Handles the click event on the dropdown item when the column is multi-sortable.\n * @param order An array of SortOrder. See {@link SortOrder}\n */\n public onDropdownItemClick(order: SortOrder): void {\n this.euiTableV2SortService.setSort(this.sortOn, order, this.isMultiSortable);\n }\n}\n","<div class=\"eui-table-v2__sortable-col-content\">\n <div class=\"eui-table-v2__sortable-col-content-label\">\n <ng-content></ng-content>\n\n <button class=\"eui-u-ml-xs\" euiButton euiIconButton euiBasicButton (click)=\"changeSort()\">\n @if (!isSorted && !sortDisabled) {\n <eui-icon-svg class=\"sort-icon\" icon=\"swap-vertical:outline\"></eui-icon-svg>\n }\n @if (order === 'asc' && isSorted && !sortDisabled) {\n <eui-icon-svg class=\"sort-icon\" icon=\"arrow-up:outline\" fillColor=\"primary\" [aria-label]=\"'eui.euitable.ASCENDING-ICON' | translate\"></eui-icon-svg>\n }\n @if (order === 'desc' && isSorted && !sortDisabled) {\n <eui-icon-svg class=\"sort-icon\" icon=\"arrow-down:outline\" fillColor=\"primary\" [aria-label]=\"'eui.euitable.DESCENDING-ICON' | translate\"></eui-icon-svg>\n }\n </button>\n @if (sortedIndex && !sortDisabled) {\n <button euiSizeS euiButton euiBasicButton (click)=\"changeSort()\">\n <span class=\"eui-table-v2__sortable-col-multisort-index\">{{ sortedIndex }}</span>\n </button>\n }\n </div>\n</div>\n","import { Directive, HostBinding, ElementRef, OnInit } from '@angular/core';\nimport { AnimationBuilder, AnimationPlayer, animate, style } from '@angular/animations';\n\n/**\n * @description\n * Directive used to activate the expandable feature on a row of the table.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'tr[isExpandableRow]',\n})\nexport class EuiTableV2ExpandableRowDirective implements OnInit {\n @HostBinding('class') string = 'eui-table-v2-expandable-row';\n private animationPlayer: AnimationPlayer;\n\n constructor(private el: ElementRef, private animationBuilder: AnimationBuilder) {}\n\n get isOpen(): boolean {\n return true;\n }\n\n ngOnInit(): void {\n const animation = this.animationBuilder.build([\n style({ opacity: 0 }),\n animate('250ms', style({ opacity: 1 })),\n ]);\n\n this.animationPlayer = animation.create(this.el.nativeElement);\n this.animationPlayer.play();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { EuiTableV2Component } from './eui-table-v2.component';\nimport { EuiTableV2StickyColDirective } from './directives/eui-table-v2-sticky-col.directive';\nimport { EuiTableV2SelectableRowComponent } from './selectable-row/eui-table-v2-selectable-row.component';\nimport { EuiTableV2SelectableHeaderComponent } from './selectable-header/eui-table-v2-selectable-header.component';\nimport { EuiTableV2FilterComponent } from './filter/eui-table-v2-filter.component';\nimport { EuiTableV2HighlightPipe } from './pipes/eui-table-v2-highlight.pipe';\nimport { EuiTableV2SortableColComponent } from './sortable-col/eui-table-v2-sortable-col.component';\nimport { EuiTableV2ExpandableRowDirective } from './directives/eui-table-v2-expandable-row.directive';\n\n/**\n * @description\n * Module that provides the EuiTableV2 component and its dependencies\n *\n * @deprecated Use {@link EUI_TABLE_V2} instead.\n */\n@NgModule({\n imports: [\n EuiTableV2Component,\n EuiTableV2SelectableHeaderComponent,\n EuiTableV2SelectableRowComponent,\n EuiTableV2StickyColDirective,\n EuiTableV2FilterComponent,\n EuiTableV2HighlightPipe,\n EuiTableV2SortableColComponent,\n EuiTableV2ExpandableRowDirective,\n ],\n exports: [\n EuiTableV2Component,\n EuiTableV2SelectableHeaderComponent,\n EuiTableV2SelectableRowComponent,\n EuiTableV2StickyColDirective,\n EuiTableV2FilterComponent,\n EuiTableV2HighlightPipe,\n EuiTableV2SortableColComponent,\n EuiTableV2ExpandableRowDirective,\n ],\n})\nexport class EuiTableV2Module { }\n","import { EuiTableV2Component } from './eui-table-v2.component';\nimport { EuiTableV2SelectableHeaderComponent } from './selectable-header/eui-table-v2-selectable-header.component';\nimport { EuiTableV2SelectableRowComponent } from './selectable-row/eui-table-v2-selectable-row.component';\nimport { EuiTableV2StickyColDirective } from './directives/eui-table-v2-sticky-col.directive';\nimport { EuiTableV2FilterComponent } from './filter/eui-table-v2-filter.component';\nimport { EuiTableV2HighlightPipe } from './pipes/eui-table-v2-highlight.pipe';\nimport { EuiTableV2SortableColComponent } from './sortable-col/eui-table-v2-sortable-col.component';\nimport { EuiTableV2ExpandableRowDirective } from './directives/eui-table-v2-expandable-row.directive';\n\nexport * from './eui-table-v2.component';\nexport * from './directives/eui-table-v2-sticky-col.directive';\nexport * from './directives/eui-table-v2-expandable-row.directive';\nexport * from './selectable-header/eui-table-v2-selectable-header.component';\nexport * from './selectable-row/eui-table-v2-selectable-row.component';\nexport * from './filter/eui-table-v2-filter.component';\nexport * from './pipes/eui-table-v2-highlight.pipe';\nexport * from './sortable-col/eui-table-v2-sortable-col.component';\nexport * from './models/sort.model';\nexport * from './eui-table-v2.module';\n\nexport const EUI_TABLE_V2 = [\n EuiTableV2Component,\n EuiTableV2SelectableHeaderComponent,\n EuiTableV2SelectableRowComponent,\n EuiTableV2StickyColDirective,\n EuiTableV2FilterComponent,\n EuiTableV2HighlightPipe,\n EuiTableV2SortableColComponent,\n EuiTableV2ExpandableRowDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EuiTableV2SelectableRowService","i2.EuiTableV2SortService","i2","i3","i4","i1.EuiTableV2SortService","i1"],"mappings":"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"}