@eui/components 18.0.0-next.63 → 18.0.0-next.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/components/CollapsedBreadcrumbComponent.html +1 -1
- package/docs/components/EuiAppSidebarHeaderUserProfileComponent.html +1 -1
- package/docs/components/EuiAppTopMessageComponent.html +1 -1
- package/docs/components/EuiBreadcrumbItemComponent.html +1 -1
- package/docs/components/EuiCardFooterMenuContentComponent.html +1 -1
- package/docs/components/EuiCardHeaderComponent.html +1 -1
- package/docs/components/EuiChipListComponent.html +1 -1
- package/docs/components/EuiDialogContainerComponent.html +1 -1
- package/docs/components/EuiDiscussionThreadItemComponent.html +1 -1
- package/docs/components/EuiDropdownItemComponent.html +1 -1
- package/docs/components/EuiEditorComponent.html +1 -1
- package/docs/components/EuiFilePreviewComponent.html +1 -1
- package/docs/components/EuiGrowlComponent.html +1 -1
- package/docs/components/EuiIconButtonExpanderComponent.html +1 -1
- package/docs/components/EuiListItemComponent.html +1 -1
- package/docs/components/EuiMenuComponent.html +1 -1
- package/docs/components/EuiMenuItemComponent.html +1 -1
- package/docs/components/EuiNotificationItemComponent.html +1 -1
- package/docs/components/EuiNotificationItemV2Component.html +1 -1
- package/docs/components/EuiNotificationsComponent.html +1 -1
- package/docs/components/EuiNotificationsV2Component.html +1 -1
- package/docs/components/EuiOverlayHeaderTitleComponent.html +1 -1
- package/docs/components/EuiPageColumnComponent.html +1 -1
- package/docs/components/EuiPageHeaderComponent.html +1 -1
- package/docs/components/EuiPaginatorComponent.html +1 -1
- package/docs/components/EuiPopoverComponent.html +1 -1
- package/docs/components/EuiSearchComponent.html +1 -1
- package/docs/components/EuiTableFilterComponent.html +1 -1
- package/docs/components/EuiTableSortableColComponent.html +1 -1
- package/docs/components/EuiTableV2FilterComponent.html +1 -1
- package/docs/components/EuiTableV2SortableColComponent.html +1 -1
- package/docs/components/EuiTabsComponent.html +1 -1
- package/docs/components/EuiTimebarComponent.html +1 -1
- package/docs/components/EuiTimepickerComponent.html +1 -1
- package/docs/components/EuiToolbarMenuComponent.html +1 -1
- package/docs/components/EuiToolbarNavbarComponent.html +1 -1
- package/docs/components/EuiTreeComponent.html +3 -3
- package/docs/components/EuiTreeListToolbarComponent.html +1 -1
- package/docs/components/EuiUserProfileCardComponent.html +1 -1
- package/docs/components/EuiUserProfileComponent.html +1 -1
- package/docs/components/EuiWizardComponent.html +1 -1
- package/docs/dependencies.html +1 -1
- package/docs/js/menu-wc.js +3 -3
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/esm2022/eui-card/components/eui-card-footer/eui-card-footer-menu-content.component.mjs +3 -3
- package/esm2022/eui-card/components/eui-card-header/eui-card-header.component.mjs +3 -3
- package/esm2022/eui-card/eui-card.component.mjs +2 -2
- package/esm2022/eui-chip-list/eui-chip-list.component.mjs +3 -3
- package/esm2022/eui-dialog/container/eui-dialog-container.component.mjs +3 -3
- package/esm2022/eui-dialog/eui-dialog.component.mjs +2 -2
- package/esm2022/eui-discussion-thread/eui-discussion-thread-item.component.mjs +3 -3
- package/esm2022/eui-dropdown/dropdown-item/eui-dropdown-item.component.mjs +3 -3
- package/esm2022/eui-file-upload/file-preview/file-preview.component.mjs +3 -3
- package/esm2022/eui-growl/eui-growl.component.mjs +3 -3
- package/esm2022/eui-icon/eui-icon-button-expander/eui-icon-button-expander.component.mjs +3 -3
- package/esm2022/eui-icon/eui-icon-svg.component.mjs +2 -2
- package/esm2022/eui-list/eui-list-item/eui-list-item.component.mjs +3 -3
- package/esm2022/eui-list/eui-list.component.mjs +2 -2
- package/esm2022/eui-menu/eui-menu-item.component.mjs +3 -3
- package/esm2022/eui-menu/eui-menu.component.mjs +3 -3
- package/esm2022/eui-overlay/components/eui-overlay-header/eui-overlay-header-title/eui-overlay-header-title.component.mjs +3 -3
- package/esm2022/eui-page/components/eui-page-column/eui-page-column.component.mjs +3 -3
- package/esm2022/eui-page/components/eui-page-header/eui-page-header.component.mjs +3 -3
- package/esm2022/eui-paginator/eui-paginator.component.mjs +3 -3
- package/esm2022/eui-popover/eui-popover.component.mjs +3 -3
- package/esm2022/eui-table/filter/eui-table-filter.component.mjs +3 -3
- package/esm2022/eui-table/sortable-col/eui-table-sortable-col.component.mjs +3 -3
- package/esm2022/eui-table-v2/filter/eui-table-v2-filter.component.mjs +3 -3
- package/esm2022/eui-table-v2/sortable-col/eui-table-v2-sortable-col.component.mjs +3 -3
- package/esm2022/eui-tabs/eui-tabs.component.mjs +3 -3
- package/esm2022/eui-timebar/eui-timebar.component.mjs +3 -3
- package/esm2022/eui-timepicker/eui-timepicker.component.mjs +3 -3
- package/esm2022/eui-tree/eui-tree.component.mjs +5 -5
- package/esm2022/eui-tree-list/toolbar/toolbar.component.mjs +3 -3
- package/esm2022/eui-user-profile/user-profile-card/user-profile-card.component.mjs +3 -3
- package/esm2022/eui-user-profile/user-profile.component.mjs +3 -3
- package/esm2022/eui-wizard/eui-wizard.component.mjs +3 -3
- package/esm2022/externals/eui-editor/eui-editor.component.mjs +3 -3
- package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-header-user-profile/sidebar-header-user-profile.component.mjs +3 -3
- package/esm2022/layout/eui-app/eui-app-top-message/top-message.component.mjs +3 -3
- package/esm2022/layout/eui-breadcrumb/collapsed-breadcrumb/collapsed-breadcrumb.component.mjs +3 -3
- package/esm2022/layout/eui-breadcrumb/item/breadcrumb-item.component.mjs +3 -3
- package/esm2022/layout/eui-notifications/eui-notification-item.component.mjs +3 -3
- package/esm2022/layout/eui-notifications/eui-notifications.component.mjs +3 -3
- package/esm2022/layout/eui-notifications-v2/eui-notification-item.component.mjs +3 -3
- package/esm2022/layout/eui-notifications-v2/eui-notifications.component.mjs +3 -3
- package/esm2022/layout/eui-search/search.component.mjs +3 -3
- package/esm2022/layout/eui-toolbar/toolbar-menu/toolbar-menu.component.mjs +3 -3
- package/esm2022/layout/eui-toolbar/toolbar-navbar/toolbar-navbar.component.mjs +3 -3
- package/eui-list/eui-list-item/eui-list-item.component.d.ts +1 -1
- package/eui-tree/eui-tree.component.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-card.mjs +6 -6
- package/fesm2022/eui-components-eui-card.mjs.map +2 -2
- package/fesm2022/eui-components-eui-chip-list.mjs +4 -4
- package/fesm2022/eui-components-eui-chip-list.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dialog.mjs +18 -18
- package/fesm2022/eui-components-eui-dialog.mjs.map +2 -2
- package/fesm2022/eui-components-eui-discussion-thread.mjs +8 -8
- package/fesm2022/eui-components-eui-discussion-thread.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dropdown.mjs +2 -2
- package/fesm2022/eui-components-eui-dropdown.mjs.map +2 -2
- package/fesm2022/eui-components-eui-file-upload.mjs +2 -2
- package/fesm2022/eui-components-eui-file-upload.mjs.map +2 -2
- package/fesm2022/eui-components-eui-growl.mjs +2 -2
- package/fesm2022/eui-components-eui-growl.mjs.map +1 -1
- package/fesm2022/eui-components-eui-icon.mjs +10 -10
- package/fesm2022/eui-components-eui-icon.mjs.map +2 -2
- package/fesm2022/eui-components-eui-list.mjs +4 -4
- package/fesm2022/eui-components-eui-list.mjs.map +2 -2
- package/fesm2022/eui-components-eui-menu.mjs +18 -18
- package/fesm2022/eui-components-eui-menu.mjs.map +2 -2
- package/fesm2022/eui-components-eui-overlay.mjs +2 -2
- package/fesm2022/eui-components-eui-overlay.mjs.map +2 -2
- package/fesm2022/eui-components-eui-page.mjs +4 -4
- package/fesm2022/eui-components-eui-page.mjs.map +2 -2
- package/fesm2022/eui-components-eui-paginator.mjs +8 -8
- package/fesm2022/eui-components-eui-paginator.mjs.map +1 -1
- package/fesm2022/eui-components-eui-popover.mjs +2 -2
- package/fesm2022/eui-components-eui-popover.mjs.map +2 -2
- package/fesm2022/eui-components-eui-table-v2.mjs +8 -8
- package/fesm2022/eui-components-eui-table-v2.mjs.map +1 -1
- package/fesm2022/eui-components-eui-table.mjs +14 -14
- package/fesm2022/eui-components-eui-table.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tabs.mjs +2 -2
- package/fesm2022/eui-components-eui-tabs.mjs.map +2 -2
- package/fesm2022/eui-components-eui-timebar.mjs +6 -6
- package/fesm2022/eui-components-eui-timebar.mjs.map +1 -1
- package/fesm2022/eui-components-eui-timepicker.mjs +12 -12
- package/fesm2022/eui-components-eui-timepicker.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tree-list.mjs +6 -6
- package/fesm2022/eui-components-eui-tree-list.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tree.mjs +6 -6
- package/fesm2022/eui-components-eui-tree.mjs.map +1 -1
- package/fesm2022/eui-components-eui-user-profile.mjs +4 -4
- package/fesm2022/eui-components-eui-user-profile.mjs.map +2 -2
- package/fesm2022/eui-components-eui-wizard.mjs +2 -2
- package/fesm2022/eui-components-eui-wizard.mjs.map +2 -2
- package/fesm2022/eui-components-externals-eui-editor.mjs +8 -8
- package/fesm2022/eui-components-externals-eui-editor.mjs.map +1 -1
- package/fesm2022/eui-components-layout.mjs +36 -36
- package/fesm2022/eui-components-layout.mjs.map +2 -2
- package/package.json +21 -21
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
3
|
"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/directives/eui-table-v2-sticky-col.directive.ts", "../../eui-table-v2/directives/eui-table-v2-expandable-row.directive.ts", "../../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/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/eui-table-v2.module.ts"],
|
4
|
-
"sourcesContent": ["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class EuiTableV2SelectableRowService<DATA> {\n \n public selectedRows$: BehaviorSubject<DATA[]> = new BehaviorSubject([]);\n public isAllRowsSelected$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n \n private lastSelectedRow: DATA = null;\n private rows: DATA[] = [];\n private propId = 'id';\n\n get selectedRows(): Observable<DATA[]> {\n return this.selectedRows$.asObservable();\n }\n\n get isAllRowsSelected(): Observable<boolean> {\n return this.isAllRowsSelected$.asObservable();\n }\n\n public setPropId(value: string): void {\n this.propId = value;\n }\n\n public getPropId(): string {\n return this.propId;\n }\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 public registerRows(rows: DATA[]): void {\n rows.forEach((row) => {\n this.registerRow(row);\n });\n }\n\n public unregisterRow(row: DATA): void {\n this.rows = this.rows.filter(r => r[this.propId] !== row[this.propId]);\n }\n\n public unregisterRows(): void {\n this.rows = [];\n }\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 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 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 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 public unselectAllRows(): void {\n this.selectedRows$.next([]);\n this.isAllRowsSelected$.next(false);\n this.lastSelectedRow = null;\n }\n\n public getRows(): DATA[] {\n return this.rows;\n }\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@Injectable()\nexport class EuiTableV2SortService {\n public sorts$ = new BehaviorSubject<Sort[]>([]);\n\n get sorts(): Observable<Sort[]> {\n return this.sorts$.asObservable();\n }\n\n private isCurrentMultiSortable = false;\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 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 } from '@angular/cdk/scrolling';\nimport { BehaviorSubject, Observable, Subject, Subscription, combineLatest, debounceTime, skip, takeUntil } from 'rxjs';\nimport { ListRange } from '@angular/cdk/collections';\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@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 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 @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.isTableCondensed ? 'eui-table-v2--condensed' : '',\n this.isLoading ? 'eui-table-v2--loading' : '',\n ]\n .join(' ')\n .trim();\n }\n\n @Input() data: DATA[] = [];\n @Input() propId = 'id';\n @Input() itemSize = 41;\n @Input() paginator: EuiPaginatorComponent;\n @Input() filter: EuiTableV2FilterComponent;\n @Input() preselectedRows: DATA[] = [];\n\n @Input({ transform: booleanAttribute }) isVirtualScroll = false;\n @Input({ transform: booleanAttribute }) isVirtualScrollCache = false;\n @Input({ transform: booleanAttribute }) hasStickyHeader = false;\n @Input({ transform: booleanAttribute }) hasStickyFooter = false;\n @Input({ transform: booleanAttribute }) hasStickyCols = false;\n @Input({ transform: booleanAttribute }) isTableResponsive = false;\n @Input({ transform: booleanAttribute }) isAsync = false;\n @Input({ transform: numberAttribute }) virtualScrollAsyncItemsLength = 0;\n @Input({ transform: numberAttribute }) virtualScrollNbRows = 50;\n @Input({ transform: booleanAttribute }) isColsOrderable = false;\n @Input({ transform: booleanAttribute }) isLoading = false;\n @Input({ transform: booleanAttribute }) isSelectOnlyVisibleRows = true;\n @Input({ transform: booleanAttribute }) isTableBordered = false;\n @Input({ transform: booleanAttribute }) isTableCondensed = 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 @Output() scrollChange = new EventEmitter();\n @Output() rowsSelect = new EventEmitter<DATA[]>();\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();\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();\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\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 * @param sorts An array of SortOrder. See {@link SortOrder}\n */\n public setSort(sorts: Sort[]): void {\n this.euiTableV2SortService.setSorts(sorts);\n }\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 protected get stickyHeaderTopPosition(): string {\n if (!this.cdkVirtualScrollViewport || !this.cdkVirtualScrollViewport['_renderedContentOffset']) {\n return '0';\n }\n\n return -this.cdkVirtualScrollViewport['_renderedContentOffset'] + 'px';\n }\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 protected get cdkVirtualScrollViewportWidth(): string {\n return (this.elementRef.nativeElement?.parentElement?.clientWidth || 0) + 'px';\n }\n\n protected get hostWidth(): number {\n return this.elementRef.nativeElement.style.width;\n }\n\n protected trackByFn(index: number): number {\n return index;\n }\n\n private 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 if (this.preselectedRows) {\n this.euiTableV2SelectableRowService.selectRows(this.preselectedRows);\n }\n\n this.cd.detectChanges();\n\n if (this.hasStickyCols) {\n this.stickyFeatureHandler();\n }\n });\n }\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 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 private roundDown(index: number, nbRows: number): number {\n return Math.floor(index / nbRows) * nbRows;\n }\n\n private hasUndefinedInRange(startIndex: number, limit: number, dataRendered: DATA[]): number {\n for (let i = startIndex; i < startIndex + limit; i ++) {\n if (dataRendered[i] === undefined) {\n return i;\n }\n }\n\n return -1;\n }\n\n private stickyFeatureHandler(): void {\n setTimeout(() => {\n const containerWidth = this.elementRef.nativeElement?.parentElement?.clientWidth || 0;\n\n const processStickyItems = (items: HTMLTableCellElement[]): void => {\n items.forEach((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 private selectRowsFeatureHandler(): void {\n this.euiTableV2SelectableRowService.selectedRows.pipe(skip(1), takeUntil(this.destroy$)).subscribe((selected) => {\n this.rowsSelect.emit(selected);\n });\n }\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 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 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", "<!-- <button (click)=\"test(19250)\">19250</button>\n<button (click)=\"test(7895)\">7895</button>\n<button (click)=\"test(16860)\">16860</button>\n<button (click)=\"test(16870)\">16870</button>\n<button (click)=\"test(16880)\">16880</button>\n<button (click)=\"test(16890)\">16890</button>\n<button (click)=\"test(16900)\">16900</button>\n<button (click)=\"test(26998)\">26998</button>\n<button (click)=\"test(28000)\">28000</button> -->\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 <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 row) {\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 { Directive, HostBinding } from '@angular/core';\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 { Directive, HostBinding, ElementRef, OnInit } from '@angular/core';\nimport { AnimationBuilder, AnimationPlayer, animate, style } from '@angular/animations';\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 { Component, OnInit, Input, OnDestroy, ViewChild, ElementRef, booleanAttribute } from '@angular/core';\nimport { Subject, combineLatest, takeUntil } from 'rxjs';\n\nimport { EuiTableV2SelectableRowService } from '../services/eui-table-v2-selectable-row.service';\n\n@Component({\n // eslint-disable-next-line\n selector: 'tr[isHeaderSelectable]',\n templateUrl: './eui-table-v2-selectable-header.component.html',\n})\nexport class EuiTableV2SelectableHeaderComponent<DATA> implements OnInit, OnDestroy {\n @ViewChild('checkbox') checkbox: ElementRef<HTMLInputElement>;\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 public toggleCheckedState(value: boolean): void {\n this.isChecked = value;\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 @if (!isChecked && !isCheckedIndeterminate) {\n <input aria-label=\"Unchecked\" euiInputCheckBox checked=\"false\" (click)=\"toggleCheckedState(true)\" />\n }\n @if (isCheckedIndeterminate) {\n <input aria-label=\"Indeterminate\" euiInputCheckBox indeterminate (click)=\"toggleCheckedState(false)\" />\n }\n @if (isChecked && !isCheckedIndeterminate) {\n <input aria-label=\"Checked\" euiInputCheckBox checked=\"true\" (click)=\"toggleCheckedState(false)\" />\n }\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';\n\n@Component({\n // eslint-disable-next-line\n selector: 'tr[isDataSelectable]',\n templateUrl: './eui-table-v2-selectable-row.component.html',\n})\nexport class EuiTableV2SelectableRowComponent<DATA> implements OnInit, OnDestroy, OnChanges {\n @Input() isDataSelectable: DATA;\n @Input({ transform: booleanAttribute }) isChecked = false;\n @Input({ transform: booleanAttribute }) isKeyboardSelectable = false;\n\n private propId = 'id';\n private destroy$: Subject<boolean> = new Subject<boolean>();\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 public toggleCheckedState(e: Event): void {\n if (!this.isChecked) {\n this.isChecked = true;\n this.euiDataTableSelectableRowService.selectRow(this.isDataSelectable);\n } else {\n this.isChecked = false;\n this.euiDataTableSelectableRowService.unselectRow(this.isDataSelectable);\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n}\n", "@if (isDataSelectable) {\n <td class=\"eui-table__cell-select\">\n <div class=\"eui-table__cell-select-checkbox-container\">\n @if (isChecked) {\n <input aria-label=\"default checkbox checked\" euiInputCheckBox checked=\"true\" (click)=\"toggleCheckedState($event)\" />\n }\n @if (!isChecked) {\n <input aria-label=\"default checkbox unchecked\" euiInputCheckBox checked=\"false\" (click)=\"toggleCheckedState($event)\" />\n }\n </div>\n </td>\n}\n<ng-content></ng-content>\n", "import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, HostBinding, ViewChild, ElementRef, ViewEncapsulation } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { Subject, BehaviorSubject, takeUntil, debounceTime, distinctUntilChanged } from 'rxjs';\n\n@Component({\n selector: 'eui-table-v2-filter',\n templateUrl: './eui-table-v2-filter.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class EuiTableV2FilterComponent implements OnInit, OnDestroy {\n @HostBinding('class')\n get cssClasses(): string {\n return [\n 'eui-table-v2__filter',\n ]\n .join(' ')\n .trim();\n }\n\n @Input() placeholder: string;\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 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 <input\n #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-svg class=\"eui-table-v2__filter-search-icon\" icon=\"eui-search\" fillColor=\"neutral-lighter\" aria-label=\"Search Icon\"></eui-icon-svg>\n </form>\n</div>\n", "import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'euiTableV2Highlight',\n})\nexport class EuiTableV2HighlightPipe implements PipeTransform {\n transform(value: string, strFilter: string, className = 'eui-table-v2--highlighted'): string {\n if (strFilter && strFilter.length > 0) {\n const regex = new RegExp('(' + strFilter + ')', 'gi');\n return value.toString().replace(regex, '<span class=\"' + className + '\">$1</span>');\n } else {\n return value;\n }\n }\n}\n", "import { Component, OnInit, OnDestroy, Input, HostBinding, booleanAttribute, ElementRef, ViewChild } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\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@Component({\n // eslint-disable-next-line\n selector: 'th[isSortable]',\n templateUrl: './eui-table-v2-sortable-col.component.html',\n})\nexport class EuiTableV2SortableColComponent implements OnInit, OnDestroy {\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 @Input({ transform: booleanAttribute }) defaultOrder = false;\n @Input({ transform: booleanAttribute }) sortDisabled = false;\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 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 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 @if (!isSorted && !sortDisabled) {\n <button class=\"eui-u-ml-xs\" euiButton euiIconButton euiBasicButton (click)=\"changeSort()\">\n <eui-icon-svg class=\"sort-icon\" icon=\"swap-vertical\" set=\"outline\"></eui-icon-svg>\n </button>\n }\n @if (order === 'asc' && isSorted && !sortDisabled) {\n <button class=\"eui-u-ml-xs\" euiButton euiIconButton euiBasicButton (click)=\"changeSort()\">\n <eui-icon-svg class=\"sort-icon\" icon=\"eui-arrow-up-thin\" fillColor=\"primary\" [aria-label]=\"'eui.euitable.ASCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n }\n @if (order === 'desc' && isSorted && !sortDisabled) {\n <button class=\"eui-u-ml-xs\" euiButton euiIconButton euiBasicButton (click)=\"changeSort()\">\n <eui-icon-svg class=\"sort-icon\" icon=\"eui-arrow-down-thin\" fillColor=\"primary\" [aria-label]=\"'eui.euitable.DESCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n }\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\n </div>\n</div>\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { EuiTemplateDirectiveModule } from '@eui/components/directives';\nimport { EuiSkeletonModule } from '@eui/components/eui-skeleton';\nimport { EuiInputCheckboxModule } from '@eui/components/eui-input-checkbox';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { EuiInputTextModule } from '@eui/components/eui-input-text';\nimport { EuiButtonModule } from '@eui/components/eui-button';\nimport { EuiListModule } from '@eui/components/eui-list';\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@NgModule({\n imports: [\n CommonModule,\n EuiTemplateDirectiveModule,\n ScrollingModule,\n EuiSkeletonModule,\n EuiInputCheckboxModule,\n ReactiveFormsModule,\n EuiIconModule,\n EuiInputTextModule,\n TranslateModule,\n EuiButtonModule,\n EuiListModule,\n ],\n declarations: [\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 EuiTemplateDirectiveModule,\n EuiTableV2StickyColDirective,\n EuiTableV2FilterComponent,\n EuiTableV2HighlightPipe,\n EuiTableV2SortableColComponent,\n EuiTableV2ExpandableRowDirective,\n ],\n})\nexport class EuiTableV2Module { }\n"],
|
4
|
+
"sourcesContent": ["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class EuiTableV2SelectableRowService<DATA> {\n \n public selectedRows$: BehaviorSubject<DATA[]> = new BehaviorSubject([]);\n public isAllRowsSelected$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n \n private lastSelectedRow: DATA = null;\n private rows: DATA[] = [];\n private propId = 'id';\n\n get selectedRows(): Observable<DATA[]> {\n return this.selectedRows$.asObservable();\n }\n\n get isAllRowsSelected(): Observable<boolean> {\n return this.isAllRowsSelected$.asObservable();\n }\n\n public setPropId(value: string): void {\n this.propId = value;\n }\n\n public getPropId(): string {\n return this.propId;\n }\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 public registerRows(rows: DATA[]): void {\n rows.forEach((row) => {\n this.registerRow(row);\n });\n }\n\n public unregisterRow(row: DATA): void {\n this.rows = this.rows.filter(r => r[this.propId] !== row[this.propId]);\n }\n\n public unregisterRows(): void {\n this.rows = [];\n }\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 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 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 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 public unselectAllRows(): void {\n this.selectedRows$.next([]);\n this.isAllRowsSelected$.next(false);\n this.lastSelectedRow = null;\n }\n\n public getRows(): DATA[] {\n return this.rows;\n }\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@Injectable()\nexport class EuiTableV2SortService {\n public sorts$ = new BehaviorSubject<Sort[]>([]);\n\n get sorts(): Observable<Sort[]> {\n return this.sorts$.asObservable();\n }\n\n private isCurrentMultiSortable = false;\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 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 } from '@angular/cdk/scrolling';\nimport { BehaviorSubject, Observable, Subject, Subscription, combineLatest, debounceTime, skip, takeUntil } from 'rxjs';\nimport { ListRange } from '@angular/cdk/collections';\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@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 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 @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.isTableCondensed ? 'eui-table-v2--condensed' : '',\n this.isLoading ? 'eui-table-v2--loading' : '',\n ]\n .join(' ')\n .trim();\n }\n\n @Input() data: DATA[] = [];\n @Input() propId = 'id';\n @Input() itemSize = 41;\n @Input() paginator: EuiPaginatorComponent;\n @Input() filter: EuiTableV2FilterComponent;\n @Input() preselectedRows: DATA[] = [];\n\n @Input({ transform: booleanAttribute }) isVirtualScroll = false;\n @Input({ transform: booleanAttribute }) isVirtualScrollCache = false;\n @Input({ transform: booleanAttribute }) hasStickyHeader = false;\n @Input({ transform: booleanAttribute }) hasStickyFooter = false;\n @Input({ transform: booleanAttribute }) hasStickyCols = false;\n @Input({ transform: booleanAttribute }) isTableResponsive = false;\n @Input({ transform: booleanAttribute }) isAsync = false;\n @Input({ transform: numberAttribute }) virtualScrollAsyncItemsLength = 0;\n @Input({ transform: numberAttribute }) virtualScrollNbRows = 50;\n @Input({ transform: booleanAttribute }) isColsOrderable = false;\n @Input({ transform: booleanAttribute }) isLoading = false;\n @Input({ transform: booleanAttribute }) isSelectOnlyVisibleRows = true;\n @Input({ transform: booleanAttribute }) isTableBordered = false;\n @Input({ transform: booleanAttribute }) isTableCondensed = 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 @Output() scrollChange = new EventEmitter();\n @Output() rowsSelect = new EventEmitter<DATA[]>();\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();\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();\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\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 * @param sorts An array of SortOrder. See {@link SortOrder}\n */\n public setSort(sorts: Sort[]): void {\n this.euiTableV2SortService.setSorts(sorts);\n }\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 protected get stickyHeaderTopPosition(): string {\n if (!this.cdkVirtualScrollViewport || !this.cdkVirtualScrollViewport['_renderedContentOffset']) {\n return '0';\n }\n\n return -this.cdkVirtualScrollViewport['_renderedContentOffset'] + 'px';\n }\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 protected get cdkVirtualScrollViewportWidth(): string {\n return (this.elementRef.nativeElement?.parentElement?.clientWidth || 0) + 'px';\n }\n\n protected get hostWidth(): number {\n return this.elementRef.nativeElement.style.width;\n }\n\n protected trackByFn(index: number): number {\n return index;\n }\n\n private 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 if (this.preselectedRows) {\n this.euiTableV2SelectableRowService.selectRows(this.preselectedRows);\n }\n\n this.cd.detectChanges();\n\n if (this.hasStickyCols) {\n this.stickyFeatureHandler();\n }\n });\n }\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 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 private roundDown(index: number, nbRows: number): number {\n return Math.floor(index / nbRows) * nbRows;\n }\n\n private hasUndefinedInRange(startIndex: number, limit: number, dataRendered: DATA[]): number {\n for (let i = startIndex; i < startIndex + limit; i ++) {\n if (dataRendered[i] === undefined) {\n return i;\n }\n }\n\n return -1;\n }\n\n private stickyFeatureHandler(): void {\n setTimeout(() => {\n const containerWidth = this.elementRef.nativeElement?.parentElement?.clientWidth || 0;\n\n const processStickyItems = (items: HTMLTableCellElement[]): void => {\n items.forEach((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 private selectRowsFeatureHandler(): void {\n this.euiTableV2SelectableRowService.selectedRows.pipe(skip(1), takeUntil(this.destroy$)).subscribe((selected) => {\n this.rowsSelect.emit(selected);\n });\n }\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 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 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", "<!-- <button (click)=\"test(19250)\">19250</button>\n<button (click)=\"test(7895)\">7895</button>\n<button (click)=\"test(16860)\">16860</button>\n<button (click)=\"test(16870)\">16870</button>\n<button (click)=\"test(16880)\">16880</button>\n<button (click)=\"test(16890)\">16890</button>\n<button (click)=\"test(16900)\">16900</button>\n<button (click)=\"test(26998)\">26998</button>\n<button (click)=\"test(28000)\">28000</button> -->\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 <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 row) {\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 { Directive, HostBinding } from '@angular/core';\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 { Directive, HostBinding, ElementRef, OnInit } from '@angular/core';\nimport { AnimationBuilder, AnimationPlayer, animate, style } from '@angular/animations';\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 { Component, OnInit, Input, OnDestroy, ViewChild, ElementRef, booleanAttribute } from '@angular/core';\nimport { Subject, combineLatest, takeUntil } from 'rxjs';\n\nimport { EuiTableV2SelectableRowService } from '../services/eui-table-v2-selectable-row.service';\n\n@Component({\n // eslint-disable-next-line\n selector: 'tr[isHeaderSelectable]',\n templateUrl: './eui-table-v2-selectable-header.component.html',\n})\nexport class EuiTableV2SelectableHeaderComponent<DATA> implements OnInit, OnDestroy {\n @ViewChild('checkbox') checkbox: ElementRef<HTMLInputElement>;\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 public toggleCheckedState(value: boolean): void {\n this.isChecked = value;\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 @if (!isChecked && !isCheckedIndeterminate) {\n <input aria-label=\"Unchecked\" euiInputCheckBox checked=\"false\" (click)=\"toggleCheckedState(true)\" />\n }\n @if (isCheckedIndeterminate) {\n <input aria-label=\"Indeterminate\" euiInputCheckBox indeterminate (click)=\"toggleCheckedState(false)\" />\n }\n @if (isChecked && !isCheckedIndeterminate) {\n <input aria-label=\"Checked\" euiInputCheckBox checked=\"true\" (click)=\"toggleCheckedState(false)\" />\n }\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';\n\n@Component({\n // eslint-disable-next-line\n selector: 'tr[isDataSelectable]',\n templateUrl: './eui-table-v2-selectable-row.component.html',\n})\nexport class EuiTableV2SelectableRowComponent<DATA> implements OnInit, OnDestroy, OnChanges {\n @Input() isDataSelectable: DATA;\n @Input({ transform: booleanAttribute }) isChecked = false;\n @Input({ transform: booleanAttribute }) isKeyboardSelectable = false;\n\n private propId = 'id';\n private destroy$: Subject<boolean> = new Subject<boolean>();\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 public toggleCheckedState(e: Event): void {\n if (!this.isChecked) {\n this.isChecked = true;\n this.euiDataTableSelectableRowService.selectRow(this.isDataSelectable);\n } else {\n this.isChecked = false;\n this.euiDataTableSelectableRowService.unselectRow(this.isDataSelectable);\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n}\n", "@if (isDataSelectable) {\n <td class=\"eui-table__cell-select\">\n <div class=\"eui-table__cell-select-checkbox-container\">\n @if (isChecked) {\n <input aria-label=\"default checkbox checked\" euiInputCheckBox checked=\"true\" (click)=\"toggleCheckedState($event)\" />\n }\n @if (!isChecked) {\n <input aria-label=\"default checkbox unchecked\" euiInputCheckBox checked=\"false\" (click)=\"toggleCheckedState($event)\" />\n }\n </div>\n </td>\n}\n<ng-content></ng-content>\n", "import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, HostBinding, ViewChild, ElementRef, ViewEncapsulation } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { Subject, BehaviorSubject, takeUntil, debounceTime, distinctUntilChanged } from 'rxjs';\n\n@Component({\n selector: 'eui-table-v2-filter',\n templateUrl: './eui-table-v2-filter.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class EuiTableV2FilterComponent implements OnInit, OnDestroy {\n @HostBinding('class')\n get cssClasses(): string {\n return [\n 'eui-table-v2__filter',\n ]\n .join(' ')\n .trim();\n }\n\n @Input() placeholder: string;\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 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 <input\n #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-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@Pipe({\n name: 'euiTableV2Highlight',\n})\nexport class EuiTableV2HighlightPipe implements PipeTransform {\n transform(value: string, strFilter: string, className = 'eui-table-v2--highlighted'): string {\n if (strFilter && strFilter.length > 0) {\n const regex = new RegExp('(' + strFilter + ')', 'gi');\n return value.toString().replace(regex, '<span class=\"' + className + '\">$1</span>');\n } else {\n return value;\n }\n }\n}\n", "import { Component, OnInit, OnDestroy, Input, HostBinding, booleanAttribute, ElementRef, ViewChild } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\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@Component({\n // eslint-disable-next-line\n selector: 'th[isSortable]',\n templateUrl: './eui-table-v2-sortable-col.component.html',\n})\nexport class EuiTableV2SortableColComponent implements OnInit, OnDestroy {\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 @Input({ transform: booleanAttribute }) defaultOrder = false;\n @Input({ transform: booleanAttribute }) sortDisabled = false;\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 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 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 @if (!isSorted && !sortDisabled) {\n <button class=\"eui-u-ml-xs\" euiButton euiIconButton euiBasicButton (click)=\"changeSort()\">\n <eui-icon-svg class=\"sort-icon\" icon=\"swap-vertical:outline\"></eui-icon-svg>\n </button>\n }\n @if (order === 'asc' && isSorted && !sortDisabled) {\n <button class=\"eui-u-ml-xs\" euiButton euiIconButton euiBasicButton (click)=\"changeSort()\">\n <eui-icon-svg class=\"sort-icon\" icon=\"arrow-up:outline\" fillColor=\"primary\" [aria-label]=\"'eui.euitable.ASCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n }\n @if (order === 'desc' && isSorted && !sortDisabled) {\n <button class=\"eui-u-ml-xs\" euiButton euiIconButton euiBasicButton (click)=\"changeSort()\">\n <eui-icon-svg class=\"sort-icon\" icon=\"arrow-down:outline\" fillColor=\"primary\" [aria-label]=\"'eui.euitable.DESCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n }\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\n </div>\n</div>\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { EuiTemplateDirectiveModule } from '@eui/components/directives';\nimport { EuiSkeletonModule } from '@eui/components/eui-skeleton';\nimport { EuiInputCheckboxModule } from '@eui/components/eui-input-checkbox';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { EuiInputTextModule } from '@eui/components/eui-input-text';\nimport { EuiButtonModule } from '@eui/components/eui-button';\nimport { EuiListModule } from '@eui/components/eui-list';\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@NgModule({\n imports: [\n CommonModule,\n EuiTemplateDirectiveModule,\n ScrollingModule,\n EuiSkeletonModule,\n EuiInputCheckboxModule,\n ReactiveFormsModule,\n EuiIconModule,\n EuiInputTextModule,\n TranslateModule,\n EuiButtonModule,\n EuiListModule,\n ],\n declarations: [\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 EuiTemplateDirectiveModule,\n EuiTableV2StickyColDirective,\n EuiTableV2FilterComponent,\n EuiTableV2HighlightPipe,\n EuiTableV2SortableColComponent,\n EuiTableV2ExpandableRowDirective,\n ],\n})\nexport class EuiTableV2Module { }\n"],
|
5
5
|
"mappings": "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",
|
6
6
|
"names": ["Injectable", "BehaviorSubject", "BehaviorSubject", "ScrollinDirection", "i0", "HostBinding", "i0", "Directive", "HostBinding", "i0", "Component", "Input", "ViewChild", "booleanAttribute", "Subject", "combineLatest", "takeUntil", "i0", "Component", "Input", "HostBinding", "booleanAttribute", "Subject", "takeUntil", "i0", "Component", "Input", "Output", "EventEmitter", "HostBinding", "ViewChild", "ElementRef", "ViewEncapsulation", "Subject", "BehaviorSubject", "takeUntil", "debounceTime", "i0", "Component", "Input", "HostBinding", "booleanAttribute", "ViewChild", "Subject", "takeUntil", "i0"]
|
7
7
|
}
|
@@ -866,13 +866,13 @@ var EuiTableSortableColComponent = class _EuiTableSortableColComponent {
|
|
866
866
|
@if (!sortDisabled) {
|
867
867
|
<button type="button" euiSizeS euiButton euiIconButton euiBasicButton class="eui-table__sortable-icon-button" (click)="click()">
|
868
868
|
@if (!order) {
|
869
|
-
<eui-icon-svg icon="
|
869
|
+
<eui-icon-svg icon="swap-vertical:outline" fillColor="neutral-lighter" [aria-label]="'eui.euitable.NO-SORTING-ICON' | translate"></eui-icon-svg>
|
870
870
|
}
|
871
871
|
@if (order === 'asc') {
|
872
|
-
<eui-icon-svg icon="
|
872
|
+
<eui-icon-svg icon="arrow-up:outline" fillColor="primary" [aria-label]="'eui.euitable.ASCENDING-ICON' | translate"></eui-icon-svg>
|
873
873
|
}
|
874
874
|
@if (order === 'desc') {
|
875
|
-
<eui-icon-svg icon="
|
875
|
+
<eui-icon-svg icon="arrow-down:outline" fillColor="primary" [aria-label]="'eui.euitable.DESCENDING-ICON' | translate"></eui-icon-svg>
|
876
876
|
}
|
877
877
|
</button>
|
878
878
|
}
|
@@ -903,17 +903,17 @@ var EuiTableSortableColComponent = class _EuiTableSortableColComponent {
|
|
903
903
|
</select>
|
904
904
|
@if (!getOrderByIndex(i)) {
|
905
905
|
<button type="button" euiSizeS euiSecondary euiButton euiIconButton euiBasicButton (click)="onClickMultisortOrder(i + 1, 'asc')">
|
906
|
-
<eui-icon-svg icon="
|
906
|
+
<eui-icon-svg icon="swap-vertical:outline" [aria-label]="'eui.euitable.NO-SORTING-ICON' | translate"></eui-icon-svg>
|
907
907
|
</button>
|
908
908
|
}
|
909
909
|
@if (getOrderByIndex(i) === 'asc') {
|
910
910
|
<button type="button" euiSizeS euiPrimary euiButton euiIconButton euiBasicButton (click)="onClickMultisortOrder(i + 1, 'desc')">
|
911
|
-
<eui-icon-svg icon="
|
911
|
+
<eui-icon-svg icon="arrow-up:outline" [aria-label]="'eui.euitable.ASCENDING-ICON' | translate"></eui-icon-svg>
|
912
912
|
</button>
|
913
913
|
}
|
914
914
|
@if (getOrderByIndex(i) === 'desc') {
|
915
915
|
<button type="button" euiSizeS euiPrimary euiButton euiIconButton euiBasicButton (click)="onClickMultisortOrder(i + 1, null)">
|
916
|
-
<eui-icon-svg icon="
|
916
|
+
<eui-icon-svg icon="arrow-down:outline" [aria-label]="'eui.euitable.DESCENDING-ICON' | translate"></eui-icon-svg>
|
917
917
|
</button>
|
918
918
|
}
|
919
919
|
</div>
|
@@ -943,13 +943,13 @@ i04.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", n
|
|
943
943
|
@if (!sortDisabled) {
|
944
944
|
<button type="button" euiSizeS euiButton euiIconButton euiBasicButton class="eui-table__sortable-icon-button" (click)="click()">
|
945
945
|
@if (!order) {
|
946
|
-
<eui-icon-svg icon="
|
946
|
+
<eui-icon-svg icon="swap-vertical:outline" fillColor="neutral-lighter" [aria-label]="'eui.euitable.NO-SORTING-ICON' | translate"></eui-icon-svg>
|
947
947
|
}
|
948
948
|
@if (order === 'asc') {
|
949
|
-
<eui-icon-svg icon="
|
949
|
+
<eui-icon-svg icon="arrow-up:outline" fillColor="primary" [aria-label]="'eui.euitable.ASCENDING-ICON' | translate"></eui-icon-svg>
|
950
950
|
}
|
951
951
|
@if (order === 'desc') {
|
952
|
-
<eui-icon-svg icon="
|
952
|
+
<eui-icon-svg icon="arrow-down:outline" fillColor="primary" [aria-label]="'eui.euitable.DESCENDING-ICON' | translate"></eui-icon-svg>
|
953
953
|
}
|
954
954
|
</button>
|
955
955
|
}
|
@@ -980,17 +980,17 @@ i04.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", n
|
|
980
980
|
</select>
|
981
981
|
@if (!getOrderByIndex(i)) {
|
982
982
|
<button type="button" euiSizeS euiSecondary euiButton euiIconButton euiBasicButton (click)="onClickMultisortOrder(i + 1, 'asc')">
|
983
|
-
<eui-icon-svg icon="
|
983
|
+
<eui-icon-svg icon="swap-vertical:outline" [aria-label]="'eui.euitable.NO-SORTING-ICON' | translate"></eui-icon-svg>
|
984
984
|
</button>
|
985
985
|
}
|
986
986
|
@if (getOrderByIndex(i) === 'asc') {
|
987
987
|
<button type="button" euiSizeS euiPrimary euiButton euiIconButton euiBasicButton (click)="onClickMultisortOrder(i + 1, 'desc')">
|
988
|
-
<eui-icon-svg icon="
|
988
|
+
<eui-icon-svg icon="arrow-up:outline" [aria-label]="'eui.euitable.ASCENDING-ICON' | translate"></eui-icon-svg>
|
989
989
|
</button>
|
990
990
|
}
|
991
991
|
@if (getOrderByIndex(i) === 'desc') {
|
992
992
|
<button type="button" euiSizeS euiPrimary euiButton euiIconButton euiBasicButton (click)="onClickMultisortOrder(i + 1, null)">
|
993
|
-
<eui-icon-svg icon="
|
993
|
+
<eui-icon-svg icon="arrow-down:outline" [aria-label]="'eui.euitable.DESCENDING-ICON' | translate"></eui-icon-svg>
|
994
994
|
</button>
|
995
995
|
}
|
996
996
|
</div>
|
@@ -1092,7 +1092,7 @@ var EuiTableFilterComponent = class _EuiTableFilterComponent {
|
|
1092
1092
|
formControlName="filter"
|
1093
1093
|
[attr.aria-label]="form.get('filter').value ? form.get('filter').value : placeholder"
|
1094
1094
|
placeholder="{{ placeholder }}" />
|
1095
|
-
<eui-icon-svg class="eui-table__filter-search-icon" icon="eui-search"
|
1095
|
+
<eui-icon-svg class="eui-table__filter-search-icon" icon="eui-ecl-search" size="m" fillColor="neutral-lightest"></eui-icon-svg>
|
1096
1096
|
</form>
|
1097
1097
|
</div>
|
1098
1098
|
`, dependencies: [{ kind: "directive", type: i22.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i22.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i22.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i22.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i33.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "directive", type: i22.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i22.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i43.EuiInputTextComponent, selector: "input[euiInputText]", inputs: ["isInvalid"] }], encapsulation: i05.ViewEncapsulation.None });
|
@@ -1115,7 +1115,7 @@ i05.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", n
|
|
1115
1115
|
formControlName="filter"
|
1116
1116
|
[attr.aria-label]="form.get('filter').value ? form.get('filter').value : placeholder"
|
1117
1117
|
placeholder="{{ placeholder }}" />
|
1118
|
-
<eui-icon-svg class="eui-table__filter-search-icon" icon="eui-search"
|
1118
|
+
<eui-icon-svg class="eui-table__filter-search-icon" icon="eui-ecl-search" size="m" fillColor="neutral-lightest"></eui-icon-svg>
|
1119
1119
|
</form>
|
1120
1120
|
</div>
|
1121
1121
|
` }]
|