@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/services/eui-table-sort.service.ts", "../../eui-table/services/eui-table-selectable-row.service.ts", "../../eui-table/models/multi-sort.model.ts", "../../eui-table/eui-table.component.ts", "../../eui-table/eui-table.component.html", "../../eui-table/sortable-col/eui-table-sortable-col.component.ts", "../../eui-table/sortable-col/eui-table-sortable-col.component.html", "../../eui-table/filter/eui-table-filter.component.ts", "../../eui-table/filter/eui-table-filter.component.html", "../../eui-table/pipes/eui-table-highlight-filter.pipe.ts", "../../eui-table/selectable-row/eui-table-selectable-row.component.ts", "../../eui-table/selectable-row/eui-table-selectable-row.component.html", "../../eui-table/selectable-header/eui-table-selectable-header.component.ts", "../../eui-table/selectable-header/eui-table-selectable-header.component.html", "../../eui-table/expandable-row/eui-table-expandable-row.component.ts", "../../eui-table/expandable-row/eui-table-expandable-row.component.html", "../../eui-table/directives/eui-table-sticky-columns.directive.ts", "../../eui-table/eui-table.module.ts"],
|
4
|
-
"sourcesContent": ["import { Injectable } from '@angular/core';\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { MultisortParam } from '../models/multi-sort.model';\n\n@Injectable()\nexport class EuiTableSortService {\n public sortingParams$ = new BehaviorSubject({ sort: null, order: 'desc' });\n public multisortParamsChange$ = new BehaviorSubject([]);\n public multisortParamsSort$ = new BehaviorSubject([]);\n private multisortParams: MultisortParam[] = [];\n\n setSort(sort: string | null, order: 'asc' | 'desc' | null): void {\n this.sortingParams$.next({ sort: order ? sort : null, order });\n this.multisortParamsSort$.next([]);\n this.multisortParams.forEach((param) => {\n param.position = 0;\n param.order = null;\n });\n this.multisortParamsChange$.next(this.multisortParams);\n }\n\n setMultiSortColumns(multisortParams: MultisortParam[]): void {\n this.multisortParamsSort$.next(multisortParams);\n this.sortingParams$.next({ sort: null, order: null });\n this.multisortParamsChange$.next(multisortParams);\n }\n\n addMultisortParam(column: MultisortParam): void {\n this.multisortParams.push(column);\n this.multisortParamsChange$.next(this.multisortParams);\n if (this.checkIsMultisortable(this.multisortParams)) {\n this.multisortParamsSort$.next(this.multisortParams);\n }\n }\n\n toFormGroup(params: MultisortParam[]): FormArray {\n const group = new FormArray([]);\n params.forEach((col, index) => {\n const value = this.getValue(params, index);\n if (value) {\n group.push(new FormGroup({ name: new FormControl(value.name), order: new FormControl(value.order) }));\n } else {\n group.push(new FormGroup({ name: new FormControl(), order: new FormControl() }));\n }\n });\n return group;\n }\n\n private checkIsMultisortable(multisortParams: MultisortParam[]): boolean {\n return multisortParams.find((el) => el.order !== null) !== undefined;\n }\n\n private sortParamsAsc(params: MultisortParam[]): MultisortParam[] {\n return params.sort((a, b) => {\n if (a.position === b.position) {\n return 0;\n }\n if (this.isNullPosition(a.position)) {\n return 1;\n }\n if (this.isNullPosition(b.position)) {\n return -1;\n }\n return a.position < b.position ? -1 : 1;\n });\n }\n\n private isNullPosition(pos: number): boolean {\n return pos === 0 || pos === null;\n }\n\n private getValue(params: MultisortParam[], index: number): MultisortParam {\n const currentCol = params.find((col) => col.position === index + 1);\n return currentCol ? currentCol : null;\n }\n}\n", "import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class EuiTableSelectableRowService {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public selectedRows$: BehaviorSubject<any[]> = new BehaviorSubject([]);\n public isAllRowsSelected$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public lastSelectedRow: any = null;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private rows: any[] = [];\n private isAllRowsSelected = false;\n private propId = 'id';\n\n public setPropId(value: string): void {\n this.propId = value;\n }\n\n public getPropId(): string {\n return this.propId;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public addSelectedRow(row: any): 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.isAllRowsSelected = this.selectedRows$.value.length === this.rows.length;\n\n this.lastSelectedRow = row;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public addSelectedRows(rows: any[]): void {\n const selected = rows.filter((row) => !this.selectedRows$.value.includes(row));\n\n this.selectedRows$.next([...this.selectedRows$.value, ...selected]);\n this.isAllRowsSelected$.next(this.selectedRows$.value.length === this.rows.length);\n this.isAllRowsSelected = this.selectedRows$.value.length === this.rows.length;\n\n this.lastSelectedRow = rows[rows.length - 1];\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public removeSelectedRow(row: any): void {\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 this.isAllRowsSelected = false;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public addRow(row: any): void {\n if (row && !this.rows.find((r) => r[this.propId] === row[this.propId])) {\n this.rows.push(row);\n\n this.isAllRowsSelected$.next(false);\n this.isAllRowsSelected = false;\n\n if (this.rows.length > this.selectedRows$.value.length && this.isAllRowsSelected) {\n this.isAllRowsSelected$.next(false);\n this.isAllRowsSelected = 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 this.isAllRowsSelected = true;\n }\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public addRows(rows: any[]): void {\n rows.forEach((row) => {\n this.addRow(row);\n });\n }\n\n public resetRows(): void {\n this.rows = [];\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public selectRows(rows: any[]): void {\n this.selectedRows$.next([...rows]);\n this.isAllRowsSelected$.next(this.rows.length > 0 && this.rows.length === this.selectedRows$.value.length);\n this.isAllRowsSelected = this.rows.length > 0 && this.rows.length === this.selectedRows$.value.length;\n\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.isAllRowsSelected = true;\n\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.isAllRowsSelected = false;\n\n this.lastSelectedRow = null;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getRows(): any[] {\n return this.rows;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getLastSelectedRow(): any {\n return this.lastSelectedRow;\n }\n}\n", "export class MultisortParam {\n name: string;\n order: 'asc' | 'desc' | null = 'desc';\n position: number;\n\n constructor(name: string, order: string, position: number) {\n Object.assign(this, { name, order, position });\n }\n}\n", "import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, Subject, Subscription, takeUntil } from 'rxjs';\n\nimport { EuiTemplateDirective } from '@eui/components/directives';\nimport { BaseStatesDirective } from '@eui/components/shared';\nimport { EuiPaginatorComponent } from '@eui/components/eui-paginator';\n\nimport { EuiTableSortService } from './services/eui-table-sort.service';\nimport { PaginationEvent } from './models/pagination-event.model';\nimport { EuiTableFilterComponent } from './filter/eui-table-filter.component';\nimport { EuiTableSelectableRowService } from './services/eui-table-selectable-row.service';\nimport { SortEvent } from './models/sort-event.model';\nimport { MultisortParam } from './models/multi-sort.model';\n\n@Component({\n selector: 'eui-table, table[euiTable]',\n templateUrl: './eui-table.component.html',\n styleUrls: ['./styles/_index.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [EuiTableSortService, EuiTableSelectableRowService],\n hostDirectives: [\n {\n directive: BaseStatesDirective,\n inputs: [],\n },\n ],\n})\nexport class EuiTableComponent implements AfterContentInit, OnInit, OnDestroy, AfterViewInit, OnChanges {\n @HostBinding('class')\n get cssClasses(): string {\n return [\n this.baseStatesDirective.getCssClasses('eui-table'),\n this.euiTableResponsive ? 'eui-table--responsive' : '',\n this.euiTableFixedLayout ? 'eui-table--fixed-layout' : '',\n this.euiTableBordered ? 'eui-table--bordered' : '',\n this.euiTableCompact ? 'eui-table--compact' : '',\n this.euiTableDraggable ? 'eui-table--draggable' : '',\n this.euiTableCards ? 'eui-table-cards' : '',\n this.hasStickyHeader ? 'eui-table--sticky-header' : '',\n this.hasStickyColumns ? 'eui-table--sticky-columns' : '',\n this.isColsOrderable ? 'eui-table--cols-orderable' : '',\n this.isHoverable ? 'eui-table--hoverable' : '',\n this.loading ? 'eui-table__loading' : '',\n ]\n .join(' ')\n .trim();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() rows: any[] = [];\n @Input() propId = 'id';\n @Input() e2eAttr = 'eui-table';\n @Input() paginator: EuiPaginatorComponent;\n @Input() filter: EuiTableFilterComponent;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() preselectedRows: any[] = [];\n @Input({ transform: booleanAttribute }) loading = false;\n @Input({ transform: booleanAttribute }) asyncTable = false;\n @Input({ transform: booleanAttribute }) paginable = false;\n @Input({ transform: booleanAttribute }) euiTableResponsive = false;\n @Input({ transform: booleanAttribute }) euiTableFixedLayout = false;\n @Input({ transform: booleanAttribute }) euiTableDraggable = false;\n @Input({ transform: booleanAttribute }) euiTableCards = false;\n @Input({ transform: booleanAttribute }) euiTableBordered = false;\n @Input({ transform: booleanAttribute }) euiTableCompact = false;\n @Input({ transform: booleanAttribute }) hasStickyHeader = false;\n @Input({ transform: booleanAttribute }) hasStickyColumns = false;\n @Input({ transform: booleanAttribute }) isSelectOnlyVisibleRows = false;\n @Input({ transform: booleanAttribute }) isColsOrderable = false;\n @Input({ transform: booleanAttribute }) isHoverable = false;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Output() selectedRows = new EventEmitter<any[]>();\n @Output() sortChange = new EventEmitter<SortEvent>();\n @Output() multiSortChange = new EventEmitter<MultisortParam[]>();\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public headerTemplate: TemplateRef<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public bodyTemplate: TemplateRef<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public footerTemplate: TemplateRef<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public emptyMessageTemplate: TemplateRef<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public rowsRendered: any[] = [];\n\n public page = 0;\n public pageSize = 0;\n public showStickyHeader = false;\n public filteredRows = [];\n\n @ContentChildren(EuiTemplateDirective) templates: QueryList<EuiTemplateDirective>;\n\n @ViewChild('theadRef') theadRef: ElementRef<HTMLElement>;\n @ViewChild('tbodyRef') tbodyRef: ElementRef<HTMLElement>;\n @ViewChild('tfootRef') tfootRef: ElementRef<HTMLElement>;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private rowsSrc: any = null;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private tableFeaturesHandlerSubscription = new Subscription();\n private selectRowsFeatureHandlerSubscription = new Subscription();\n private stickyFeatureHandlerIndex = 0;\n\n constructor(\n private euiTableSortService: EuiTableSortService,\n private cd: ChangeDetectorRef,\n private euiTableSelectableRowService: EuiTableSelectableRowService,\n private elementRef: ElementRef,\n private baseStatesDirective: BaseStatesDirective,\n ) {}\n\n ngOnChanges(c: SimpleChanges): void {\n if (!this.rows) {\n this.rows = [];\n }\n\n this.euiTableSelectableRowService.setPropId(this.propId);\n if (c && c.rows && c.rows.firstChange === false) {\n this.tableFeaturesHandlerSubscription.unsubscribe();\n\n // Go to first page only if length of data has changed. To avoid user to be on a page that no longer exist in case of filtering.\n const lengthChanged = this.rowsSrc.length !== c.rows.currentValue.length;\n\n this.rowsSrc = [...c.rows.currentValue];\n if (this.paginator && lengthChanged) {\n this.paginator.goFirstPage();\n }\n if (!this.asyncTable) {\n this.euiTableSelectableRowService.resetRows();\n this.euiTableSelectableRowService.addRows(c.rows.currentValue);\n this.tableFeaturesHandler();\n } else {\n this.euiTableSelectableRowService.resetRows();\n this.euiTableSelectableRowService.addRows(c.rows.currentValue);\n }\n }\n\n if (c && c.preselectedRows && c.preselectedRows.firstChange === false) {\n this.euiTableSelectableRowService.selectRows(this.preselectedRows);\n }\n\n if (c && c.paginator?.currentValue) {\n this.paginator.setLength(this.rows.length);\n if (!c.paginator?.isFirstChange()) {\n this.paginator.goFirstPage();\n }\n } else {\n // this.rows can be changed anytime, then this else can be executed at that time, testing this.paginator allows to make sure\n // the user whants to disable pagination or change the datasource\n if (!this.paginator) {\n this.rowsRendered = this.rowsSrc ? this.rowsSrc : [...this.rows];\n this.page = 0;\n }\n }\n }\n\n ngOnInit(): void {\n this.rowsSrc = [...this.rows];\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() === 'emptyMessage') {\n this.emptyMessageTemplate = item.template;\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (!this.asyncTable) {\n this.tableFeaturesHandlerSubscription.unsubscribe();\n this.tableFeaturesHandler();\n }\n\n this.euiTableSortService.sortingParams$\n .pipe(takeUntil(this.destroy$))\n .subscribe((sortingParams: { sort: string | null; order: string }) => {\n setTimeout(() => {\n this.sortChange.emit({ sort: sortingParams.sort, order: sortingParams.order });\n });\n });\n\n this.euiTableSortService.multisortParamsSort$.pipe(takeUntil(this.destroy$)).subscribe((multiSortParams: MultisortParam[]) => {\n setTimeout(() => {\n this.multiSortChange.emit(multiSortParams.filter((el) => el.position > 0));\n });\n });\n\n this.selectRowsFeatureHandler();\n\n setTimeout(() => {\n this.euiTableSelectableRowService.selectRows(this.preselectedRows);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n public selectAllRows(): void {\n this.euiTableSelectableRowService.selectAllRows();\n }\n\n public unselectAllRows(): void {\n this.euiTableSelectableRowService.unselectAllRows();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public selectRows(rows: any[]): void {\n this.euiTableSelectableRowService.selectRows(rows);\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public filterRows(filter: string, r: any[]): any[] {\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 })\n : r;\n\n this.euiTableSelectableRowService.resetRows();\n this.euiTableSelectableRowService.addRows(rows);\n\n this.filteredRows = rows;\n\n return rows;\n }\n\n public setSort(sort: string | null, order: 'asc' | 'desc' | null): void {\n this.euiTableSortService.setSort(sort, order);\n }\n\n private stickyFeatureHandler(): void {\n const timeout = this.stickyFeatureHandlerIndex === 0 ? 250 : 0;\n\n setTimeout(() => {\n const bodyTrItems = Array.from(this.tbodyRef.nativeElement.querySelectorAll('tr'));\n const containerWidth = this.elementRef.nativeElement?.parentElement?.clientWidth || 0;\n\n if (this.theadRef) {\n const thItems: HTMLTableCellElement[] = Array.from(this.theadRef.nativeElement.querySelectorAll('.eui-table__col--sticky'));\n\n // Reset left & right position\n thItems.forEach((th: HTMLTableCellElement) => {\n th.style.left = null;\n th.style.right = null;\n });\n\n // Sticky First Cols & Last Cols\n const thItemsStickyFirstCol = thItems.filter((th) => th.offsetLeft + th.clientWidth < containerWidth);\n const thItemsStickyLastCol = thItems.filter((th) => th.offsetLeft + th.clientWidth > containerWidth);\n\n thItemsStickyFirstCol.forEach((th, i) => {\n const w = thItemsStickyFirstCol[i - 1]?.clientWidth;\n const l = parseInt(thItemsStickyFirstCol[i - 1]?.style.left, 10);\n th.style.left = (i === 0 ? 0 : w + l) + 'px';\n\n if (i + 1 === thItemsStickyFirstCol.length) {\n th.classList.add('eui-table__col--sticky-shadowed-first');\n }\n });\n\n thItemsStickyLastCol.reverse().forEach((th, i) => {\n const w = thItemsStickyLastCol[i - 1]?.clientWidth;\n const r = parseInt(thItemsStickyLastCol[i - 1]?.style.right, 10);\n th.style.right = (i === 0 ? 0 : w + r) + 'px';\n\n if (i + 1 === thItemsStickyLastCol.length) {\n th.classList.add('eui-table__col--sticky-shadowed-last');\n }\n });\n }\n\n bodyTrItems.forEach((tr) => {\n const tdItems: HTMLTableCellElement[] = Array.from(tr.querySelectorAll('.eui-table__col--sticky'));\n tdItems.forEach((td) => {\n td.style.left = null;\n td.style.right = null;\n });\n });\n\n bodyTrItems.forEach((tr) => {\n const tdItems: HTMLTableCellElement[] = Array.from(tr.querySelectorAll('.eui-table__col--sticky'));\n\n // Sticky First Cols\n const tdItemsStickyFirstCol = tdItems.filter((td) => td.offsetLeft + td.clientWidth < containerWidth);\n tdItemsStickyFirstCol.forEach((td, i) => {\n const w = tdItemsStickyFirstCol[i - 1]?.clientWidth;\n const l = parseInt(tdItemsStickyFirstCol[i - 1]?.style.left, 10);\n td.style.left = (i === 0 ? 0 : w + l) + 'px';\n\n if (i + 1 === tdItemsStickyFirstCol.length) {\n td.classList.add('eui-table__col--sticky-shadowed-first');\n }\n });\n\n // Sticky Last Cols\n const tdItemsStickyLastCol = tdItems.filter((td) => td.offsetLeft + td.clientWidth > containerWidth);\n tdItemsStickyLastCol.reverse().forEach((td, i) => {\n const w = tdItemsStickyLastCol[i - 1]?.clientWidth;\n const r = parseInt(tdItemsStickyLastCol[i - 1]?.style.right, 10);\n td.style.right = (i === 0 ? 0 : w + r) + 'px';\n\n if (i + 1 === tdItemsStickyLastCol.length) {\n td.classList.add('eui-table__col--sticky-shadowed-last');\n }\n });\n });\n\n if (this.tfootRef) {\n const tdItems: HTMLTableCellElement[] = Array.from(this.tfootRef.nativeElement.querySelectorAll('.eui-table__col--sticky'));\n\n // Reset left & right position\n tdItems.forEach((th: HTMLTableCellElement) => {\n th.style.left = null;\n th.style.right = null;\n });\n\n // Sticky First Cols & Last Cols\n const tdItemsStickyFirstCol = tdItems.filter((td) => td.offsetLeft + td.clientWidth < containerWidth);\n const tdItemsStickyLastCol = tdItems.filter((td) => td.offsetLeft + td.clientWidth > containerWidth);\n\n tdItemsStickyFirstCol.forEach((td, i) => {\n const w = tdItemsStickyFirstCol[i - 1]?.clientWidth;\n const l = parseInt(tdItemsStickyFirstCol[i - 1]?.style.left, 10);\n td.style.left = (i === 0 ? 0 : w + l) + 'px';\n\n if (i + 1 === tdItemsStickyFirstCol.length) {\n td.classList.add('eui-table__col--sticky-shadowed-first');\n }\n });\n\n tdItemsStickyLastCol.reverse().forEach((td, i) => {\n const w = tdItemsStickyLastCol[i - 1]?.clientWidth;\n const r = parseInt(tdItemsStickyLastCol[i - 1]?.style.right, 10);\n td.style.right = (i === 0 ? 0 : w + r) + 'px';\n\n if (i + 1 === tdItemsStickyLastCol.length) {\n td.classList.add('eui-table__col--sticky-shadowed-last');\n }\n });\n }\n }, timeout);\n\n this.stickyFeatureHandlerIndex++;\n }\n\n private tableFeaturesHandler(): void {\n this.tableFeaturesHandlerSubscription = combineLatest([\n this.euiTableSortService.sortingParams$,\n this.paginator ? this.paginator.page$ : new BehaviorSubject(null),\n this.filter ? this.filter.filter$ : new BehaviorSubject(null),\n this.euiTableSortService.multisortParamsSort$,\n ])\n .pipe(takeUntil(this.destroy$))\n .subscribe(([sortingParams, pagination, filter, multisortParams]) => {\n let r = [...this.rowsSrc];\n if (sortingParams.order !== null && sortingParams.sort !== null) {\n const multisort = [];\n multisort.push(new MultisortParam(sortingParams.sort, sortingParams.order, 1));\n r = this.doMultiSort(multisort, r);\n }\n\n if (multisortParams.length > 0) {\n const sortableColumns = multisortParams.filter((col) => col.order !== null);\n if (sortableColumns.length > 0) {\n r = this.doMultiSort(sortableColumns, r);\n }\n }\n r = this.filterRows(filter, r);\n if (this.paginator) {\n this.paginator.setLength(r.length);\n r = this.paginateRows(pagination, r);\n }\n\n this.rowsRendered = r;\n this.stickyFeatureHandler();\n if (this.isSelectOnlyVisibleRows) {\n this.euiTableSelectableRowService.resetRows();\n this.euiTableSelectableRowService.unselectAllRows();\n this.euiTableSelectableRowService.addRows(this.rowsRendered);\n }\n\n this.cd.detectChanges();\n });\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private doMultiSort(multisortParams: MultisortParam[], r: any): any[] {\n r = this.multiSortRows(multisortParams, 1, r);\n return r;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private multiSortRows(multisortParams: MultisortParam[], currentPosition: number, r: any): any[] {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let rows: any[] = null;\n const colParams = multisortParams.find((col) => col.position === currentPosition);\n if (colParams.order === 'desc') {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rows = r.sort((a: any, b: any) => {\n if (this.isColumnSortable(a, b, multisortParams, currentPosition)) {\n return this.sortTwoRowsDesc(a, b, colParams.name);\n } else {\n return 0;\n }\n });\n } else {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rows = r.sort((a: any, b: any) => {\n if (this.isColumnSortable(a, b, multisortParams, currentPosition)) {\n return this.sortTwoRowsAsc(a, b, colParams.name);\n } else {\n return 0;\n }\n });\n }\n if (multisortParams.length === currentPosition) {\n return rows;\n } else {\n return this.multiSortRows(multisortParams, ++currentPosition, rows);\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private isColumnSortable(a: any, b: any, multisortParams: MultisortParam[], currentPosition: number): boolean {\n if (currentPosition === 1) return true;\n const colParams = multisortParams.find((col) => col.position === currentPosition - 1);\n const aCol = this.getObjPropValue(a, colParams.name);\n // typeof this.getObjProp(a, colParams.name) === 'string'\n // ? this.getObjProp(a, colParams.name).toLowerCase()\n // : this.getObjProp(a, colParams.name);\n const bCol = this.getObjPropValue(b, colParams.name);\n // typeof this.getObjProp(b, colParams.name) === 'string'\n // ? this.getObjProp(b, colParams.name).toLowerCase()\n // : this.getObjProp(b, colParams.name);\n if (aCol !== bCol) {\n return false;\n } else {\n if (currentPosition - 1 === 1) {\n return true;\n } else {\n return this.isColumnSortable(a, b, multisortParams, --currentPosition);\n }\n }\n }\n\n //This function is to do the sorting the table with the combination of 0,null and text in descending order.\n //getObjPropValue is to get the object property value\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private sortTwoRowsDesc(a: any, b: any, colName: string): number {\n const aSortOn = this.getObjPropValue(a, colName);\n const bSortOn = this.getObjPropValue(b, colName);\n if ((aSortOn === null || aSortOn === undefined) && bSortOn) {\n return 1;\n } else if (aSortOn && (bSortOn === null || bSortOn === undefined)) {\n return -1;\n } else if ((aSortOn === null || aSortOn === undefined) && (bSortOn === null || bSortOn === undefined)) {\n return 0;\n } else if ((aSortOn === null || aSortOn === undefined) && bSortOn === 0) {\n return 1;\n } else if (aSortOn === 0 && (bSortOn === null || bSortOn === undefined)) {\n return -1;\n } else {\n return aSortOn < bSortOn ? 1 : aSortOn > bSortOn ? -1 : 0;\n }\n }\n\n //This function is to do the sorting the table with the combination of 0,null and text in ascending order.\n //getObjPropValue is to get the object property value\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private sortTwoRowsAsc(a: any, b: any, colName: string): number {\n const aSortOn = this.getObjPropValue(a, colName);\n const bSortOn = this.getObjPropValue(b, colName);\n if ((aSortOn === null || aSortOn === undefined) && bSortOn) {\n return -1;\n } else if (aSortOn && (bSortOn === null || bSortOn === undefined)) {\n return 1;\n } else if ((aSortOn === null || aSortOn === undefined) && (bSortOn === null || bSortOn === undefined)) {\n return 0;\n } else if ((aSortOn === null || aSortOn === undefined) && bSortOn === 0) {\n return -1;\n } else if (aSortOn === 0 && (bSortOn === null || bSortOn === undefined)) {\n return 1;\n } else {\n return aSortOn < bSortOn ? -1 : aSortOn > bSortOn ? 1 : 0;\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getObjPropValue(obj: any, prop: string): any {\n const value = this.getObjProp(obj, prop);\n return typeof value === 'string' ? value.toLowerCase() : value;\n }\n\n private selectRowsFeatureHandler(): void {\n this.selectRowsFeatureHandlerSubscription = this.euiTableSelectableRowService.selectedRows$\n .pipe(takeUntil(this.destroy$))\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .subscribe((selected: any[]) => {\n this.selectedRows.emit(selected);\n });\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getProps(obj: any[], filter: string): { key: string; match: boolean; value: string | number }[] {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isObject = (val: any): boolean => val && typeof val === 'object';\n const addDelimiter = (a: string, b: string): string => (a && a !== '0' ? `${a}.${b}` : b);\n const props = [];\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const paths = (pathObj = {}, head = ''): any[] =>\n Object.entries(pathObj).reduce((product, [key, value]) => {\n const fullPath = addDelimiter(head, key);\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const match = (v: any): boolean =>\n v &&\n typeof v !== 'object' &&\n v\n ?.toString()\n .toLowerCase()\n .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 paths(obj);\n\n return props;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private paginateRows(pagination: PaginationEvent, r: any[]): any[] {\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 // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getObjProp(obj: any, prop: string): string {\n return prop ? prop.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), obj || self) : null;\n }\n}\n", "@if (headerTemplate) {\n <thead #theadRef>\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n </thead>\n}\n@if (bodyTemplate) {\n <tbody #tbodyRef>\n @for (row of rowsRendered; let i = $index; track row) {\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i + page * pageSize }\">\n </ng-template>\n }\n\n @if (emptyMessageTemplate && rowsRendered.length === 0) {\n <ng-template [ngTemplateOutlet]=\"emptyMessageTemplate\"></ng-template>\n }\n </tbody>\n}\n@if (footerTemplate) {\n <tfoot #tfootRef>\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </tfoot>\n}\n", "import { Component, OnInit, OnDestroy, Input, HostBinding, ViewChild, numberAttribute, booleanAttribute } from '@angular/core';\nimport { Subject, combineLatest, takeUntil } from 'rxjs';\nimport { FormArray, FormGroup } from '@angular/forms';\n\nimport { EuiDropdownComponent } from '@eui/components/eui-dropdown';\n\nimport { EuiTableSortService } from '../services/eui-table-sort.service';\nimport { MultisortParam } from '../models/multi-sort.model';\n\n@Component({\n // eslint-disable-next-line\n selector: 'th[sortable]',\n templateUrl: './eui-table-sortable-col.component.html',\n})\nexport class EuiTableSortableColComponent implements OnInit, OnDestroy {\n @ViewChild(EuiDropdownComponent) dropdown: EuiDropdownComponent;\n @Input() sortOn: string;\n @Input() sortOrder: 'asc' | 'desc' = 'desc';\n @Input({ transform: numberAttribute }) defaultMultiOrder = null;\n @Input({ transform: booleanAttribute }) defaultOrder = false;\n @Input({ transform: booleanAttribute }) sortDisabled = false;\n @Input({ transform: booleanAttribute }) isMultiSortable = false;\n\n public order: 'asc' | 'desc' | null = 'desc';\n multisortParams: MultisortParam[] = [];\n currentMultiSortPosition = 0;\n error = false;\n form: FormGroup;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n @HostBinding('class')\n get cssClasses(): string {\n return ['eui-table__sortable-col', this.sortDisabled ? 'eui-table__sortable-col--disabled' : ''].join(' ').trim();\n }\n\n constructor(private euiTableSortService: EuiTableSortService) {}\n\n ngOnInit(): void {\n if (this.isMultiSortable && !this.sortDisabled) {\n if (this.defaultMultiOrder > 0 && this.sortOrder) {\n this.euiTableSortService.addMultisortParam(new MultisortParam(this.sortOn, this.sortOrder, this.defaultMultiOrder));\n } else {\n this.euiTableSortService.addMultisortParam(new MultisortParam(this.sortOn, null, 0));\n }\n }\n\n combineLatest([this.euiTableSortService.sortingParams$, this.euiTableSortService.multisortParamsChange$])\n .pipe(takeUntil(this.destroy$))\n .subscribe(([sortingParams, multisortParams]) => {\n if (!this.isMultiSortable) {\n if (sortingParams.sort !== this.sortOn) {\n this.order = null;\n } else {\n this.order = sortingParams.order as ('asc' | 'desc');\n }\n } else {\n this.multisortParams = [...multisortParams];\n this.form = new FormGroup({ columns: this.euiTableSortService.toFormGroup(multisortParams) });\n if (sortingParams.order !== null && sortingParams.sort !== null) {\n this.currentMultiSortPosition = 0;\n if (sortingParams.sort !== this.sortOn) {\n this.order = null;\n } else {\n return;\n }\n } else {\n this.setCurrentMultisortPosition(multisortParams);\n }\n }\n });\n\n if (this.defaultOrder) {\n this.order = this.sortOrder;\n this.euiTableSortService.setSort(this.sortOn, this.order);\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n get columns(): FormArray {\n return this.form.controls['columns'] as FormArray;\n }\n\n public click(): 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 this.euiTableSortService.setSort(this.sortOn, this.order);\n }\n }\n\n onClickMultisortOrder(index: number, order: 'asc' | 'desc' | null): void {\n (this.form.get('columns') as FormArray).controls[index - 1].get('order').patchValue(order);\n }\n\n onOpenDropdown(): void {\n this.error = false;\n }\n\n getOrderByIndex(index: number): string | null {\n return (this.form.get('columns') as FormArray).controls[index].get('order').value;\n }\n\n onCancelMultiSort(): void {\n this.dropdown.closeDropdown();\n }\n\n onSubmitMultiSort(): void {\n const arr: Array<{ name: string; order: 'asc' | 'desc' | null }> = [];\n (this.form.get('columns') as FormArray).controls.forEach((el) => {\n if (el.get('name').value && el.get('order').value) {\n arr.push({ name: el.get('name').value, order: el.get('order').value });\n }\n });\n\n if (this.checkValidForSorting(arr)) {\n this.multisortParams.map((el) => this.setSortableParams(el, arr));\n this.euiTableSortService.setMultiSortColumns(this.multisortParams);\n this.dropdown.closeDropdown();\n } else {\n this.error = true;\n }\n }\n\n private setSortableParams(el: MultisortParam, arr: Array<{ name: string; order: 'asc' | 'desc' | null }>): MultisortParam {\n const currElArr = arr.find((item) => item.name === el.name);\n if (currElArr) {\n const index = arr.findIndex((item) => item.name === el.name);\n el.order = currElArr.order;\n el.position = index + 1;\n } else {\n el.order = null;\n el.position = 0;\n }\n return el;\n }\n\n private setCurrentMultisortPosition(multisortParams: MultisortParam[]): void {\n const currentColumn = multisortParams.find((el) => el.name === this.sortOn);\n if (currentColumn) {\n this.order = currentColumn.order;\n this.currentMultiSortPosition = currentColumn.position;\n } else {\n this.order = null;\n this.currentMultiSortPosition = 0;\n }\n }\n\n private checkValidForSorting(arr: Array<{ name: string; order: string }>): boolean {\n if (arr.length === 0) {\n return false;\n }\n return arr.find((el) => !this.isElementUniqueName(arr, el)) === undefined;\n }\n\n private isElementUniqueName(arr: Array<{ name: string; order: string }>, el: { name: string; order: string }): boolean {\n return arr.filter((col) => col.name === el.name).length === 1;\n }\n}\n", "<div class=\"eui-table__sortable-col-content\">\n <ng-content></ng-content>\n @if (!sortDisabled) {\n <button type=\"button\" euiSizeS euiButton euiIconButton euiBasicButton class=\"eui-table__sortable-icon-button\" (click)=\"click()\">\n @if (!order) {\n <eui-icon-svg icon=\"eui-swap-vertical\" fillColor=\"neutral-lighter\" [aria-label]=\"'eui.euitable.NO-SORTING-ICON' | translate\"></eui-icon-svg>\n }\n @if (order === 'asc') {\n <eui-icon-svg icon=\"eui-arrow-up\" fillColor=\"primary\" [aria-label]=\"'eui.euitable.ASCENDING-ICON' | translate\"></eui-icon-svg>\n }\n @if (order === 'desc') {\n <eui-icon-svg icon=\"eui-arrow-down\" fillColor=\"primary\" [aria-label]=\"'eui.euitable.DESCENDING-ICON' | translate\"></eui-icon-svg>\n }\n </button>\n }\n @if (isMultiSortable) {\n <ng-template [ngTemplateOutlet]=\"sortDropdown\"></ng-template>\n }\n</div>\n<ng-template #sortDropdown let-index>\n <eui-dropdown [hasClosedOnClickInside]=\"false\">\n <button type=\"button\" euiButton euiBasicButton euiRounded euiIconButton euiSizeS [euiDisabled]=\"sortDisabled\" (click)=\"onOpenDropdown()\">\n <span euiBadge euiPrimary euiOutline>{{ currentMultiSortPosition }}</span>\n </button>\n <eui-dropdown-content>\n <div class=\"eui-u-pt-xs eui-u-pl-s\">\n <small>{{ 'eui.euitable.CHOOSE-SORT-ORDER' | translate }}</small>\n </div>\n @if (form) {\n <form [formGroup]=\"form\">\n <ng-container formArrayName=\"columns\">\n @for (columnForm of columns.controls; let i = $index; track columnForm) {\n <div class=\"eui-u-flex eui-u-p-s\" [formGroup]=\"form.get('columns')['controls'][i]\">\n <span euiLabel class=\"eui-u-mr-s\">{{ i + 1 }}</span>\n <select euiSelect euiSizeS formControlName=\"name\" class=\"eui-u-mr-s\">\n <option value=\"\"></option>\n @for (column of multisortParams; track column) {\n <option [value]=\"column.name\">{{ column.name }}</option>\n }\n </select>\n @if (!getOrderByIndex(i)) {\n <button type=\"button\" euiSizeS euiSecondary euiButton euiIconButton euiBasicButton (click)=\"onClickMultisortOrder(i + 1, 'asc')\">\n <eui-icon-svg icon=\"eui-swap-vertical\" [aria-label]=\"'eui.euitable.NO-SORTING-ICON' | translate\"></eui-icon-svg>\n </button>\n }\n @if (getOrderByIndex(i) === 'asc') {\n <button type=\"button\" euiSizeS euiPrimary euiButton euiIconButton euiBasicButton (click)=\"onClickMultisortOrder(i + 1, 'desc')\">\n <eui-icon-svg icon=\"eui-arrow-up\" [aria-label]=\"'eui.euitable.ASCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n }\n @if (getOrderByIndex(i) === 'desc') {\n <button type=\"button\" euiSizeS euiPrimary euiButton euiIconButton euiBasicButton (click)=\"onClickMultisortOrder(i + 1, null)\">\n <eui-icon-svg icon=\"eui-arrow-down\" [aria-label]=\"'eui.euitable.DESCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n }\n </div>\n }\n </ng-container>\n </form>\n }\n @if (error) {\n <p class=\"eui-u-mt-none eui-u-mb-none eui-u-ml-s\">\n <eui-feedback-message euiDanger>{{ 'eui.euitable.WRONG-SORT-PARAMS' | translate }}</eui-feedback-message>\n </p>\n }\n <div class=\"eui-u-flex eui-u-flex-justify-content-between eui-u-p-s\">\n <button type=\"button\" euiButton euiSizeS euiSecondary (click)=\"onCancelMultiSort()\">{{ 'eui.CANCEL' | translate }}</button>\n <button type=\"button\" euiButton euiSizeS euiPrimary (click)=\"onSubmitMultiSort()\">{{ 'eui.APPLY' | translate }}</button>\n </div>\n </eui-dropdown-content>\n </eui-dropdown>\n</ng-template>\n", "import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, HostBinding, ViewChild, ElementRef, ViewEncapsulation, booleanAttribute } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { Subject, BehaviorSubject, takeUntil, debounceTime, distinctUntilChanged } from 'rxjs';\n\nimport { BaseStatesDirective } from '@eui/components/shared';\n\n@Component({\n selector: 'eui-table-filter',\n templateUrl: './eui-table-filter.component.html',\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: BaseStatesDirective,\n inputs: [],\n },\n ],\n})\nexport class EuiTableFilterComponent implements OnInit, OnDestroy {\n @HostBinding('class')\n get cssClasses(): string {\n return [this.baseStatesDirective.getCssClasses('eui-table__filter')].join(' ').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 | null> = new BehaviorSubject(null);\n public form: FormGroup;\n\n @Input({ transform: booleanAttribute }) autoSearch = false;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private baseStatesDirective: BaseStatesDirective) {\n }\n\n ngOnInit(): void {\n this.form = new FormGroup({\n filter: new FormControl<string>(null),\n });\n\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 public resetFilter(): void {\n this.setFilter(null);\n this.form.reset();\n this.filterInput.nativeElement.focus();\n }\n}\n", "<div class=\"eui-table__filter\">\n <form [formGroup]=\"form\">\n <input\n #filterInput\n euiClearable\n euiInputText\n class=\"eui-table__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__filter-search-icon\" icon=\"eui-search\" set=\"eui\" size=\"m\" fillColor=\"neutral-lightest\"></eui-icon-svg>\n </form>\n</div>\n", "import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'euiTableHighlightFilter',\n})\nexport class EuiTableHighlightFilterPipe implements PipeTransform {\n transform(value: string, strFilter: string, className = 'eui-table--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, Input, OnDestroy, OnChanges, HostBinding, HostListener, booleanAttribute } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { EuiTableSelectableRowService } from '../services/eui-table-selectable-row.service';\n\n@Component({\n // eslint-disable-next-line\n selector: 'tr[isSelectable]',\n templateUrl: './eui-table-selectable-row.component.html',\n})\nexport class EuiTableSelectableRowComponent implements OnInit, OnDestroy, OnChanges {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() isSelectable: any;\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 get cssClasses(): string {\n return ['eui-table__row', this.isSelectable ? 'eui-table__row--selectable' : '', this.isChecked ? 'eui-table__row--selected' : '']\n .join(' ')\n .trim();\n }\n\n constructor(private euiTableSelectableRowService: EuiTableSelectableRowService) {}\n\n @HostListener('click', ['$event']) onClickRow(event: PointerEvent): void {\n if (this.isKeyboardSelectable && this.isSelectable) {\n if (event.ctrlKey) {\n if (!this.isChecked) {\n this.euiTableSelectableRowService.addSelectedRow(this.isSelectable);\n } else {\n this.euiTableSelectableRowService.removeSelectedRow(this.isSelectable);\n }\n } else if (event.shiftKey) {\n const rows = this.euiTableSelectableRowService.getRows();\n const lastSelectedRow = this.euiTableSelectableRowService.getLastSelectedRow();\n const lastSelectedRowPosition = rows.indexOf(lastSelectedRow);\n const position = rows.indexOf(this.isSelectable);\n\n const range =\n lastSelectedRowPosition > position\n ? rows.slice(position, lastSelectedRowPosition + 1)\n : rows.slice(lastSelectedRowPosition, position + 1);\n\n this.euiTableSelectableRowService.addSelectedRows(range);\n\n window.getSelection().empty();\n } else {\n this.euiTableSelectableRowService.selectRows([this.isSelectable]);\n }\n }\n }\n\n ngOnChanges(): void {\n if (this.isSelectable) {\n this.propId = this.euiTableSelectableRowService.getPropId();\n this.isChecked = this.euiTableSelectableRowService.selectedRows$.value.find(\n (s) => s[this.propId] === this.isSelectable[this.propId],\n )\n ? true\n : false;\n }\n }\n\n ngOnInit(): void {\n this.euiTableSelectableRowService.selectedRows$.pipe(takeUntil(this.destroy$)).subscribe((selected) => {\n this.isChecked = selected.filter((s) => s[this.propId] === this.isSelectable[this.propId]).length > 0;\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public toggleCheckedState(e: any): void {\n if (!this.isChecked) {\n this.euiTableSelectableRowService.addSelectedRow(this.isSelectable);\n } else {\n this.euiTableSelectableRowService.removeSelectedRow(this.isSelectable);\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n}\n", "@if (isSelectable) {\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, OnDestroy, ViewChild, ElementRef, booleanAttribute } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { EuiTableSelectableRowService } from '../services/eui-table-selectable-row.service';\n\n@Component({\n // eslint-disable-next-line\n selector: 'tr[isSelectableHeader]',\n templateUrl: './eui-table-selectable-header.component.html',\n})\nexport class EuiTableSelectableHeaderComponent implements OnInit, OnDestroy {\n @ViewChild('checkbox') checkbox: ElementRef<HTMLInputElement>;\n\n public isCheckedIndeterminate = false;\n\n @Input({ transform: booleanAttribute }) isSelectableHeader = true;\n @Input({ transform: booleanAttribute }) isChecked = false;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private euiTableSelectableRowService: EuiTableSelectableRowService) {}\n\n ngOnInit(): void {\n this.euiTableSelectableRowService.isAllRowsSelected$.pipe(takeUntil(this.destroy$)).subscribe((selected) => {\n this.isChecked = selected;\n if (this.checkbox) {\n this.checkbox.nativeElement.checked = selected;\n }\n\n if (!selected && this.euiTableSelectableRowService.selectedRows$.value.length > 0) {\n this.isCheckedIndeterminate = true;\n } else {\n this.isCheckedIndeterminate = false;\n }\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.euiTableSelectableRowService.selectAllRows();\n } else {\n this.euiTableSelectableRowService.unselectAllRows();\n }\n }\n}\n", "@if (isSelectableHeader) {\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\n<ng-content></ng-content>\n", "import { Component, HostBinding } from '@angular/core';\n\n@Component({\n // eslint-disable-next-line\n selector: 'tr[euiTableExpandableRow]',\n templateUrl: './eui-table-expandable-row.component.html',\n})\nexport class EuiTableExpandableRowComponent {\n @HostBinding('class') string = 'eui-table-expandable-row';\n}\n", "<ng-content></ng-content>\n", "import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[isStickyColumn]',\n})\nexport class EuiTableStickyColumnDirective {\n @HostBinding('class.eui-table__col--sticky') get stickyClass(): boolean {\n return true;\n }\n}\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { EuiListModule } from '@eui/components/eui-list';\nimport { EuiDropdownModule } from '@eui/components/eui-dropdown';\nimport { EuiButtonModule } from '@eui/components/eui-button';\nimport { EuiTemplateDirectiveModule } from '@eui/components/directives';\nimport { EuiInputTextModule } from '@eui/components/eui-input-text';\nimport { EuiInputCheckboxModule } from '@eui/components/eui-input-checkbox';\nimport { EuiSelectModule } from '@eui/components/eui-select';\nimport { EuiFeedbackMessageModule } from '@eui/components/eui-feedback-message';\n\nimport { EuiTableComponent } from './eui-table.component';\nimport { EuiTableSortableColComponent } from './sortable-col/eui-table-sortable-col.component';\nimport { EuiTableFilterComponent } from './filter/eui-table-filter.component';\nimport { EuiTableSelectableRowComponent } from './selectable-row/eui-table-selectable-row.component';\nimport { EuiTableSelectableHeaderComponent } from './selectable-header/eui-table-selectable-header.component';\nimport { EuiTableExpandableRowComponent } from './expandable-row/eui-table-expandable-row.component';\nimport { EuiTableHighlightFilterPipe } from './pipes/eui-table-highlight-filter.pipe';\nimport { EuiTableStickyColumnDirective } from './directives/eui-table-sticky-columns.directive';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslateModule,\n FormsModule,\n EuiIconModule,\n EuiListModule,\n EuiDropdownModule,\n EuiButtonModule,\n ReactiveFormsModule,\n EuiTemplateDirectiveModule,\n EuiInputTextModule,\n EuiInputCheckboxModule,\n EuiFeedbackMessageModule,\n EuiSelectModule,\n ],\n declarations: [\n EuiTableComponent,\n EuiTableSortableColComponent,\n EuiTableFilterComponent,\n EuiTableSelectableRowComponent,\n EuiTableSelectableHeaderComponent,\n EuiTableExpandableRowComponent,\n EuiTableHighlightFilterPipe,\n EuiTableStickyColumnDirective,\n ],\n exports: [\n EuiTableComponent,\n EuiTableSortableColComponent,\n EuiTableFilterComponent,\n EuiTableSelectableRowComponent,\n EuiTableSelectableHeaderComponent,\n EuiTableExpandableRowComponent,\n EuiTableHighlightFilterPipe,\n EuiTemplateDirectiveModule,\n EuiTableStickyColumnDirective,\n ],\n})\nexport class EuiTableModule {}\n"],
|
4
|
+
"sourcesContent": ["import { Injectable } from '@angular/core';\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { MultisortParam } from '../models/multi-sort.model';\n\n@Injectable()\nexport class EuiTableSortService {\n public sortingParams$ = new BehaviorSubject({ sort: null, order: 'desc' });\n public multisortParamsChange$ = new BehaviorSubject([]);\n public multisortParamsSort$ = new BehaviorSubject([]);\n private multisortParams: MultisortParam[] = [];\n\n setSort(sort: string | null, order: 'asc' | 'desc' | null): void {\n this.sortingParams$.next({ sort: order ? sort : null, order });\n this.multisortParamsSort$.next([]);\n this.multisortParams.forEach((param) => {\n param.position = 0;\n param.order = null;\n });\n this.multisortParamsChange$.next(this.multisortParams);\n }\n\n setMultiSortColumns(multisortParams: MultisortParam[]): void {\n this.multisortParamsSort$.next(multisortParams);\n this.sortingParams$.next({ sort: null, order: null });\n this.multisortParamsChange$.next(multisortParams);\n }\n\n addMultisortParam(column: MultisortParam): void {\n this.multisortParams.push(column);\n this.multisortParamsChange$.next(this.multisortParams);\n if (this.checkIsMultisortable(this.multisortParams)) {\n this.multisortParamsSort$.next(this.multisortParams);\n }\n }\n\n toFormGroup(params: MultisortParam[]): FormArray {\n const group = new FormArray([]);\n params.forEach((col, index) => {\n const value = this.getValue(params, index);\n if (value) {\n group.push(new FormGroup({ name: new FormControl(value.name), order: new FormControl(value.order) }));\n } else {\n group.push(new FormGroup({ name: new FormControl(), order: new FormControl() }));\n }\n });\n return group;\n }\n\n private checkIsMultisortable(multisortParams: MultisortParam[]): boolean {\n return multisortParams.find((el) => el.order !== null) !== undefined;\n }\n\n private sortParamsAsc(params: MultisortParam[]): MultisortParam[] {\n return params.sort((a, b) => {\n if (a.position === b.position) {\n return 0;\n }\n if (this.isNullPosition(a.position)) {\n return 1;\n }\n if (this.isNullPosition(b.position)) {\n return -1;\n }\n return a.position < b.position ? -1 : 1;\n });\n }\n\n private isNullPosition(pos: number): boolean {\n return pos === 0 || pos === null;\n }\n\n private getValue(params: MultisortParam[], index: number): MultisortParam {\n const currentCol = params.find((col) => col.position === index + 1);\n return currentCol ? currentCol : null;\n }\n}\n", "import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class EuiTableSelectableRowService {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public selectedRows$: BehaviorSubject<any[]> = new BehaviorSubject([]);\n public isAllRowsSelected$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public lastSelectedRow: any = null;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private rows: any[] = [];\n private isAllRowsSelected = false;\n private propId = 'id';\n\n public setPropId(value: string): void {\n this.propId = value;\n }\n\n public getPropId(): string {\n return this.propId;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public addSelectedRow(row: any): 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.isAllRowsSelected = this.selectedRows$.value.length === this.rows.length;\n\n this.lastSelectedRow = row;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public addSelectedRows(rows: any[]): void {\n const selected = rows.filter((row) => !this.selectedRows$.value.includes(row));\n\n this.selectedRows$.next([...this.selectedRows$.value, ...selected]);\n this.isAllRowsSelected$.next(this.selectedRows$.value.length === this.rows.length);\n this.isAllRowsSelected = this.selectedRows$.value.length === this.rows.length;\n\n this.lastSelectedRow = rows[rows.length - 1];\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public removeSelectedRow(row: any): void {\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 this.isAllRowsSelected = false;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public addRow(row: any): void {\n if (row && !this.rows.find((r) => r[this.propId] === row[this.propId])) {\n this.rows.push(row);\n\n this.isAllRowsSelected$.next(false);\n this.isAllRowsSelected = false;\n\n if (this.rows.length > this.selectedRows$.value.length && this.isAllRowsSelected) {\n this.isAllRowsSelected$.next(false);\n this.isAllRowsSelected = 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 this.isAllRowsSelected = true;\n }\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public addRows(rows: any[]): void {\n rows.forEach((row) => {\n this.addRow(row);\n });\n }\n\n public resetRows(): void {\n this.rows = [];\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public selectRows(rows: any[]): void {\n this.selectedRows$.next([...rows]);\n this.isAllRowsSelected$.next(this.rows.length > 0 && this.rows.length === this.selectedRows$.value.length);\n this.isAllRowsSelected = this.rows.length > 0 && this.rows.length === this.selectedRows$.value.length;\n\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.isAllRowsSelected = true;\n\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.isAllRowsSelected = false;\n\n this.lastSelectedRow = null;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getRows(): any[] {\n return this.rows;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getLastSelectedRow(): any {\n return this.lastSelectedRow;\n }\n}\n", "export class MultisortParam {\n name: string;\n order: 'asc' | 'desc' | null = 'desc';\n position: number;\n\n constructor(name: string, order: string, position: number) {\n Object.assign(this, { name, order, position });\n }\n}\n", "import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, Subject, Subscription, takeUntil } from 'rxjs';\n\nimport { EuiTemplateDirective } from '@eui/components/directives';\nimport { BaseStatesDirective } from '@eui/components/shared';\nimport { EuiPaginatorComponent } from '@eui/components/eui-paginator';\n\nimport { EuiTableSortService } from './services/eui-table-sort.service';\nimport { PaginationEvent } from './models/pagination-event.model';\nimport { EuiTableFilterComponent } from './filter/eui-table-filter.component';\nimport { EuiTableSelectableRowService } from './services/eui-table-selectable-row.service';\nimport { SortEvent } from './models/sort-event.model';\nimport { MultisortParam } from './models/multi-sort.model';\n\n@Component({\n selector: 'eui-table, table[euiTable]',\n templateUrl: './eui-table.component.html',\n styleUrls: ['./styles/_index.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [EuiTableSortService, EuiTableSelectableRowService],\n hostDirectives: [\n {\n directive: BaseStatesDirective,\n inputs: [],\n },\n ],\n})\nexport class EuiTableComponent implements AfterContentInit, OnInit, OnDestroy, AfterViewInit, OnChanges {\n @HostBinding('class')\n get cssClasses(): string {\n return [\n this.baseStatesDirective.getCssClasses('eui-table'),\n this.euiTableResponsive ? 'eui-table--responsive' : '',\n this.euiTableFixedLayout ? 'eui-table--fixed-layout' : '',\n this.euiTableBordered ? 'eui-table--bordered' : '',\n this.euiTableCompact ? 'eui-table--compact' : '',\n this.euiTableDraggable ? 'eui-table--draggable' : '',\n this.euiTableCards ? 'eui-table-cards' : '',\n this.hasStickyHeader ? 'eui-table--sticky-header' : '',\n this.hasStickyColumns ? 'eui-table--sticky-columns' : '',\n this.isColsOrderable ? 'eui-table--cols-orderable' : '',\n this.isHoverable ? 'eui-table--hoverable' : '',\n this.loading ? 'eui-table__loading' : '',\n ]\n .join(' ')\n .trim();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() rows: any[] = [];\n @Input() propId = 'id';\n @Input() e2eAttr = 'eui-table';\n @Input() paginator: EuiPaginatorComponent;\n @Input() filter: EuiTableFilterComponent;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() preselectedRows: any[] = [];\n @Input({ transform: booleanAttribute }) loading = false;\n @Input({ transform: booleanAttribute }) asyncTable = false;\n @Input({ transform: booleanAttribute }) paginable = false;\n @Input({ transform: booleanAttribute }) euiTableResponsive = false;\n @Input({ transform: booleanAttribute }) euiTableFixedLayout = false;\n @Input({ transform: booleanAttribute }) euiTableDraggable = false;\n @Input({ transform: booleanAttribute }) euiTableCards = false;\n @Input({ transform: booleanAttribute }) euiTableBordered = false;\n @Input({ transform: booleanAttribute }) euiTableCompact = false;\n @Input({ transform: booleanAttribute }) hasStickyHeader = false;\n @Input({ transform: booleanAttribute }) hasStickyColumns = false;\n @Input({ transform: booleanAttribute }) isSelectOnlyVisibleRows = false;\n @Input({ transform: booleanAttribute }) isColsOrderable = false;\n @Input({ transform: booleanAttribute }) isHoverable = false;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Output() selectedRows = new EventEmitter<any[]>();\n @Output() sortChange = new EventEmitter<SortEvent>();\n @Output() multiSortChange = new EventEmitter<MultisortParam[]>();\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public headerTemplate: TemplateRef<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public bodyTemplate: TemplateRef<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public footerTemplate: TemplateRef<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public emptyMessageTemplate: TemplateRef<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public rowsRendered: any[] = [];\n\n public page = 0;\n public pageSize = 0;\n public showStickyHeader = false;\n public filteredRows = [];\n\n @ContentChildren(EuiTemplateDirective) templates: QueryList<EuiTemplateDirective>;\n\n @ViewChild('theadRef') theadRef: ElementRef<HTMLElement>;\n @ViewChild('tbodyRef') tbodyRef: ElementRef<HTMLElement>;\n @ViewChild('tfootRef') tfootRef: ElementRef<HTMLElement>;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private rowsSrc: any = null;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private tableFeaturesHandlerSubscription = new Subscription();\n private selectRowsFeatureHandlerSubscription = new Subscription();\n private stickyFeatureHandlerIndex = 0;\n\n constructor(\n private euiTableSortService: EuiTableSortService,\n private cd: ChangeDetectorRef,\n private euiTableSelectableRowService: EuiTableSelectableRowService,\n private elementRef: ElementRef,\n private baseStatesDirective: BaseStatesDirective,\n ) {}\n\n ngOnChanges(c: SimpleChanges): void {\n if (!this.rows) {\n this.rows = [];\n }\n\n this.euiTableSelectableRowService.setPropId(this.propId);\n if (c && c.rows && c.rows.firstChange === false) {\n this.tableFeaturesHandlerSubscription.unsubscribe();\n\n // Go to first page only if length of data has changed. To avoid user to be on a page that no longer exist in case of filtering.\n const lengthChanged = this.rowsSrc.length !== c.rows.currentValue.length;\n\n this.rowsSrc = [...c.rows.currentValue];\n if (this.paginator && lengthChanged) {\n this.paginator.goFirstPage();\n }\n if (!this.asyncTable) {\n this.euiTableSelectableRowService.resetRows();\n this.euiTableSelectableRowService.addRows(c.rows.currentValue);\n this.tableFeaturesHandler();\n } else {\n this.euiTableSelectableRowService.resetRows();\n this.euiTableSelectableRowService.addRows(c.rows.currentValue);\n }\n }\n\n if (c && c.preselectedRows && c.preselectedRows.firstChange === false) {\n this.euiTableSelectableRowService.selectRows(this.preselectedRows);\n }\n\n if (c && c.paginator?.currentValue) {\n this.paginator.setLength(this.rows.length);\n if (!c.paginator?.isFirstChange()) {\n this.paginator.goFirstPage();\n }\n } else {\n // this.rows can be changed anytime, then this else can be executed at that time, testing this.paginator allows to make sure\n // the user whants to disable pagination or change the datasource\n if (!this.paginator) {\n this.rowsRendered = this.rowsSrc ? this.rowsSrc : [...this.rows];\n this.page = 0;\n }\n }\n }\n\n ngOnInit(): void {\n this.rowsSrc = [...this.rows];\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() === 'emptyMessage') {\n this.emptyMessageTemplate = item.template;\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (!this.asyncTable) {\n this.tableFeaturesHandlerSubscription.unsubscribe();\n this.tableFeaturesHandler();\n }\n\n this.euiTableSortService.sortingParams$\n .pipe(takeUntil(this.destroy$))\n .subscribe((sortingParams: { sort: string | null; order: string }) => {\n setTimeout(() => {\n this.sortChange.emit({ sort: sortingParams.sort, order: sortingParams.order });\n });\n });\n\n this.euiTableSortService.multisortParamsSort$.pipe(takeUntil(this.destroy$)).subscribe((multiSortParams: MultisortParam[]) => {\n setTimeout(() => {\n this.multiSortChange.emit(multiSortParams.filter((el) => el.position > 0));\n });\n });\n\n this.selectRowsFeatureHandler();\n\n setTimeout(() => {\n this.euiTableSelectableRowService.selectRows(this.preselectedRows);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n public selectAllRows(): void {\n this.euiTableSelectableRowService.selectAllRows();\n }\n\n public unselectAllRows(): void {\n this.euiTableSelectableRowService.unselectAllRows();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public selectRows(rows: any[]): void {\n this.euiTableSelectableRowService.selectRows(rows);\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public filterRows(filter: string, r: any[]): any[] {\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 })\n : r;\n\n this.euiTableSelectableRowService.resetRows();\n this.euiTableSelectableRowService.addRows(rows);\n\n this.filteredRows = rows;\n\n return rows;\n }\n\n public setSort(sort: string | null, order: 'asc' | 'desc' | null): void {\n this.euiTableSortService.setSort(sort, order);\n }\n\n private stickyFeatureHandler(): void {\n const timeout = this.stickyFeatureHandlerIndex === 0 ? 250 : 0;\n\n setTimeout(() => {\n const bodyTrItems = Array.from(this.tbodyRef.nativeElement.querySelectorAll('tr'));\n const containerWidth = this.elementRef.nativeElement?.parentElement?.clientWidth || 0;\n\n if (this.theadRef) {\n const thItems: HTMLTableCellElement[] = Array.from(this.theadRef.nativeElement.querySelectorAll('.eui-table__col--sticky'));\n\n // Reset left & right position\n thItems.forEach((th: HTMLTableCellElement) => {\n th.style.left = null;\n th.style.right = null;\n });\n\n // Sticky First Cols & Last Cols\n const thItemsStickyFirstCol = thItems.filter((th) => th.offsetLeft + th.clientWidth < containerWidth);\n const thItemsStickyLastCol = thItems.filter((th) => th.offsetLeft + th.clientWidth > containerWidth);\n\n thItemsStickyFirstCol.forEach((th, i) => {\n const w = thItemsStickyFirstCol[i - 1]?.clientWidth;\n const l = parseInt(thItemsStickyFirstCol[i - 1]?.style.left, 10);\n th.style.left = (i === 0 ? 0 : w + l) + 'px';\n\n if (i + 1 === thItemsStickyFirstCol.length) {\n th.classList.add('eui-table__col--sticky-shadowed-first');\n }\n });\n\n thItemsStickyLastCol.reverse().forEach((th, i) => {\n const w = thItemsStickyLastCol[i - 1]?.clientWidth;\n const r = parseInt(thItemsStickyLastCol[i - 1]?.style.right, 10);\n th.style.right = (i === 0 ? 0 : w + r) + 'px';\n\n if (i + 1 === thItemsStickyLastCol.length) {\n th.classList.add('eui-table__col--sticky-shadowed-last');\n }\n });\n }\n\n bodyTrItems.forEach((tr) => {\n const tdItems: HTMLTableCellElement[] = Array.from(tr.querySelectorAll('.eui-table__col--sticky'));\n tdItems.forEach((td) => {\n td.style.left = null;\n td.style.right = null;\n });\n });\n\n bodyTrItems.forEach((tr) => {\n const tdItems: HTMLTableCellElement[] = Array.from(tr.querySelectorAll('.eui-table__col--sticky'));\n\n // Sticky First Cols\n const tdItemsStickyFirstCol = tdItems.filter((td) => td.offsetLeft + td.clientWidth < containerWidth);\n tdItemsStickyFirstCol.forEach((td, i) => {\n const w = tdItemsStickyFirstCol[i - 1]?.clientWidth;\n const l = parseInt(tdItemsStickyFirstCol[i - 1]?.style.left, 10);\n td.style.left = (i === 0 ? 0 : w + l) + 'px';\n\n if (i + 1 === tdItemsStickyFirstCol.length) {\n td.classList.add('eui-table__col--sticky-shadowed-first');\n }\n });\n\n // Sticky Last Cols\n const tdItemsStickyLastCol = tdItems.filter((td) => td.offsetLeft + td.clientWidth > containerWidth);\n tdItemsStickyLastCol.reverse().forEach((td, i) => {\n const w = tdItemsStickyLastCol[i - 1]?.clientWidth;\n const r = parseInt(tdItemsStickyLastCol[i - 1]?.style.right, 10);\n td.style.right = (i === 0 ? 0 : w + r) + 'px';\n\n if (i + 1 === tdItemsStickyLastCol.length) {\n td.classList.add('eui-table__col--sticky-shadowed-last');\n }\n });\n });\n\n if (this.tfootRef) {\n const tdItems: HTMLTableCellElement[] = Array.from(this.tfootRef.nativeElement.querySelectorAll('.eui-table__col--sticky'));\n\n // Reset left & right position\n tdItems.forEach((th: HTMLTableCellElement) => {\n th.style.left = null;\n th.style.right = null;\n });\n\n // Sticky First Cols & Last Cols\n const tdItemsStickyFirstCol = tdItems.filter((td) => td.offsetLeft + td.clientWidth < containerWidth);\n const tdItemsStickyLastCol = tdItems.filter((td) => td.offsetLeft + td.clientWidth > containerWidth);\n\n tdItemsStickyFirstCol.forEach((td, i) => {\n const w = tdItemsStickyFirstCol[i - 1]?.clientWidth;\n const l = parseInt(tdItemsStickyFirstCol[i - 1]?.style.left, 10);\n td.style.left = (i === 0 ? 0 : w + l) + 'px';\n\n if (i + 1 === tdItemsStickyFirstCol.length) {\n td.classList.add('eui-table__col--sticky-shadowed-first');\n }\n });\n\n tdItemsStickyLastCol.reverse().forEach((td, i) => {\n const w = tdItemsStickyLastCol[i - 1]?.clientWidth;\n const r = parseInt(tdItemsStickyLastCol[i - 1]?.style.right, 10);\n td.style.right = (i === 0 ? 0 : w + r) + 'px';\n\n if (i + 1 === tdItemsStickyLastCol.length) {\n td.classList.add('eui-table__col--sticky-shadowed-last');\n }\n });\n }\n }, timeout);\n\n this.stickyFeatureHandlerIndex++;\n }\n\n private tableFeaturesHandler(): void {\n this.tableFeaturesHandlerSubscription = combineLatest([\n this.euiTableSortService.sortingParams$,\n this.paginator ? this.paginator.page$ : new BehaviorSubject(null),\n this.filter ? this.filter.filter$ : new BehaviorSubject(null),\n this.euiTableSortService.multisortParamsSort$,\n ])\n .pipe(takeUntil(this.destroy$))\n .subscribe(([sortingParams, pagination, filter, multisortParams]) => {\n let r = [...this.rowsSrc];\n if (sortingParams.order !== null && sortingParams.sort !== null) {\n const multisort = [];\n multisort.push(new MultisortParam(sortingParams.sort, sortingParams.order, 1));\n r = this.doMultiSort(multisort, r);\n }\n\n if (multisortParams.length > 0) {\n const sortableColumns = multisortParams.filter((col) => col.order !== null);\n if (sortableColumns.length > 0) {\n r = this.doMultiSort(sortableColumns, r);\n }\n }\n r = this.filterRows(filter, r);\n if (this.paginator) {\n this.paginator.setLength(r.length);\n r = this.paginateRows(pagination, r);\n }\n\n this.rowsRendered = r;\n this.stickyFeatureHandler();\n if (this.isSelectOnlyVisibleRows) {\n this.euiTableSelectableRowService.resetRows();\n this.euiTableSelectableRowService.unselectAllRows();\n this.euiTableSelectableRowService.addRows(this.rowsRendered);\n }\n\n this.cd.detectChanges();\n });\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private doMultiSort(multisortParams: MultisortParam[], r: any): any[] {\n r = this.multiSortRows(multisortParams, 1, r);\n return r;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private multiSortRows(multisortParams: MultisortParam[], currentPosition: number, r: any): any[] {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let rows: any[] = null;\n const colParams = multisortParams.find((col) => col.position === currentPosition);\n if (colParams.order === 'desc') {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rows = r.sort((a: any, b: any) => {\n if (this.isColumnSortable(a, b, multisortParams, currentPosition)) {\n return this.sortTwoRowsDesc(a, b, colParams.name);\n } else {\n return 0;\n }\n });\n } else {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rows = r.sort((a: any, b: any) => {\n if (this.isColumnSortable(a, b, multisortParams, currentPosition)) {\n return this.sortTwoRowsAsc(a, b, colParams.name);\n } else {\n return 0;\n }\n });\n }\n if (multisortParams.length === currentPosition) {\n return rows;\n } else {\n return this.multiSortRows(multisortParams, ++currentPosition, rows);\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private isColumnSortable(a: any, b: any, multisortParams: MultisortParam[], currentPosition: number): boolean {\n if (currentPosition === 1) return true;\n const colParams = multisortParams.find((col) => col.position === currentPosition - 1);\n const aCol = this.getObjPropValue(a, colParams.name);\n // typeof this.getObjProp(a, colParams.name) === 'string'\n // ? this.getObjProp(a, colParams.name).toLowerCase()\n // : this.getObjProp(a, colParams.name);\n const bCol = this.getObjPropValue(b, colParams.name);\n // typeof this.getObjProp(b, colParams.name) === 'string'\n // ? this.getObjProp(b, colParams.name).toLowerCase()\n // : this.getObjProp(b, colParams.name);\n if (aCol !== bCol) {\n return false;\n } else {\n if (currentPosition - 1 === 1) {\n return true;\n } else {\n return this.isColumnSortable(a, b, multisortParams, --currentPosition);\n }\n }\n }\n\n //This function is to do the sorting the table with the combination of 0,null and text in descending order.\n //getObjPropValue is to get the object property value\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private sortTwoRowsDesc(a: any, b: any, colName: string): number {\n const aSortOn = this.getObjPropValue(a, colName);\n const bSortOn = this.getObjPropValue(b, colName);\n if ((aSortOn === null || aSortOn === undefined) && bSortOn) {\n return 1;\n } else if (aSortOn && (bSortOn === null || bSortOn === undefined)) {\n return -1;\n } else if ((aSortOn === null || aSortOn === undefined) && (bSortOn === null || bSortOn === undefined)) {\n return 0;\n } else if ((aSortOn === null || aSortOn === undefined) && bSortOn === 0) {\n return 1;\n } else if (aSortOn === 0 && (bSortOn === null || bSortOn === undefined)) {\n return -1;\n } else {\n return aSortOn < bSortOn ? 1 : aSortOn > bSortOn ? -1 : 0;\n }\n }\n\n //This function is to do the sorting the table with the combination of 0,null and text in ascending order.\n //getObjPropValue is to get the object property value\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private sortTwoRowsAsc(a: any, b: any, colName: string): number {\n const aSortOn = this.getObjPropValue(a, colName);\n const bSortOn = this.getObjPropValue(b, colName);\n if ((aSortOn === null || aSortOn === undefined) && bSortOn) {\n return -1;\n } else if (aSortOn && (bSortOn === null || bSortOn === undefined)) {\n return 1;\n } else if ((aSortOn === null || aSortOn === undefined) && (bSortOn === null || bSortOn === undefined)) {\n return 0;\n } else if ((aSortOn === null || aSortOn === undefined) && bSortOn === 0) {\n return -1;\n } else if (aSortOn === 0 && (bSortOn === null || bSortOn === undefined)) {\n return 1;\n } else {\n return aSortOn < bSortOn ? -1 : aSortOn > bSortOn ? 1 : 0;\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getObjPropValue(obj: any, prop: string): any {\n const value = this.getObjProp(obj, prop);\n return typeof value === 'string' ? value.toLowerCase() : value;\n }\n\n private selectRowsFeatureHandler(): void {\n this.selectRowsFeatureHandlerSubscription = this.euiTableSelectableRowService.selectedRows$\n .pipe(takeUntil(this.destroy$))\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .subscribe((selected: any[]) => {\n this.selectedRows.emit(selected);\n });\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getProps(obj: any[], filter: string): { key: string; match: boolean; value: string | number }[] {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isObject = (val: any): boolean => val && typeof val === 'object';\n const addDelimiter = (a: string, b: string): string => (a && a !== '0' ? `${a}.${b}` : b);\n const props = [];\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const paths = (pathObj = {}, head = ''): any[] =>\n Object.entries(pathObj).reduce((product, [key, value]) => {\n const fullPath = addDelimiter(head, key);\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const match = (v: any): boolean =>\n v &&\n typeof v !== 'object' &&\n v\n ?.toString()\n .toLowerCase()\n .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 paths(obj);\n\n return props;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private paginateRows(pagination: PaginationEvent, r: any[]): any[] {\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 // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getObjProp(obj: any, prop: string): string {\n return prop ? prop.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), obj || self) : null;\n }\n}\n", "@if (headerTemplate) {\n <thead #theadRef>\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n </thead>\n}\n@if (bodyTemplate) {\n <tbody #tbodyRef>\n @for (row of rowsRendered; let i = $index; track row) {\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i + page * pageSize }\">\n </ng-template>\n }\n\n @if (emptyMessageTemplate && rowsRendered.length === 0) {\n <ng-template [ngTemplateOutlet]=\"emptyMessageTemplate\"></ng-template>\n }\n </tbody>\n}\n@if (footerTemplate) {\n <tfoot #tfootRef>\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </tfoot>\n}\n", "import { Component, OnInit, OnDestroy, Input, HostBinding, ViewChild, numberAttribute, booleanAttribute } from '@angular/core';\nimport { Subject, combineLatest, takeUntil } from 'rxjs';\nimport { FormArray, FormGroup } from '@angular/forms';\n\nimport { EuiDropdownComponent } from '@eui/components/eui-dropdown';\n\nimport { EuiTableSortService } from '../services/eui-table-sort.service';\nimport { MultisortParam } from '../models/multi-sort.model';\n\n@Component({\n // eslint-disable-next-line\n selector: 'th[sortable]',\n templateUrl: './eui-table-sortable-col.component.html',\n})\nexport class EuiTableSortableColComponent implements OnInit, OnDestroy {\n @ViewChild(EuiDropdownComponent) dropdown: EuiDropdownComponent;\n @Input() sortOn: string;\n @Input() sortOrder: 'asc' | 'desc' = 'desc';\n @Input({ transform: numberAttribute }) defaultMultiOrder = null;\n @Input({ transform: booleanAttribute }) defaultOrder = false;\n @Input({ transform: booleanAttribute }) sortDisabled = false;\n @Input({ transform: booleanAttribute }) isMultiSortable = false;\n\n public order: 'asc' | 'desc' | null = 'desc';\n multisortParams: MultisortParam[] = [];\n currentMultiSortPosition = 0;\n error = false;\n form: FormGroup;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n @HostBinding('class')\n get cssClasses(): string {\n return ['eui-table__sortable-col', this.sortDisabled ? 'eui-table__sortable-col--disabled' : ''].join(' ').trim();\n }\n\n constructor(private euiTableSortService: EuiTableSortService) {}\n\n ngOnInit(): void {\n if (this.isMultiSortable && !this.sortDisabled) {\n if (this.defaultMultiOrder > 0 && this.sortOrder) {\n this.euiTableSortService.addMultisortParam(new MultisortParam(this.sortOn, this.sortOrder, this.defaultMultiOrder));\n } else {\n this.euiTableSortService.addMultisortParam(new MultisortParam(this.sortOn, null, 0));\n }\n }\n\n combineLatest([this.euiTableSortService.sortingParams$, this.euiTableSortService.multisortParamsChange$])\n .pipe(takeUntil(this.destroy$))\n .subscribe(([sortingParams, multisortParams]) => {\n if (!this.isMultiSortable) {\n if (sortingParams.sort !== this.sortOn) {\n this.order = null;\n } else {\n this.order = sortingParams.order as ('asc' | 'desc');\n }\n } else {\n this.multisortParams = [...multisortParams];\n this.form = new FormGroup({ columns: this.euiTableSortService.toFormGroup(multisortParams) });\n if (sortingParams.order !== null && sortingParams.sort !== null) {\n this.currentMultiSortPosition = 0;\n if (sortingParams.sort !== this.sortOn) {\n this.order = null;\n } else {\n return;\n }\n } else {\n this.setCurrentMultisortPosition(multisortParams);\n }\n }\n });\n\n if (this.defaultOrder) {\n this.order = this.sortOrder;\n this.euiTableSortService.setSort(this.sortOn, this.order);\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n get columns(): FormArray {\n return this.form.controls['columns'] as FormArray;\n }\n\n public click(): 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 this.euiTableSortService.setSort(this.sortOn, this.order);\n }\n }\n\n onClickMultisortOrder(index: number, order: 'asc' | 'desc' | null): void {\n (this.form.get('columns') as FormArray).controls[index - 1].get('order').patchValue(order);\n }\n\n onOpenDropdown(): void {\n this.error = false;\n }\n\n getOrderByIndex(index: number): string | null {\n return (this.form.get('columns') as FormArray).controls[index].get('order').value;\n }\n\n onCancelMultiSort(): void {\n this.dropdown.closeDropdown();\n }\n\n onSubmitMultiSort(): void {\n const arr: Array<{ name: string; order: 'asc' | 'desc' | null }> = [];\n (this.form.get('columns') as FormArray).controls.forEach((el) => {\n if (el.get('name').value && el.get('order').value) {\n arr.push({ name: el.get('name').value, order: el.get('order').value });\n }\n });\n\n if (this.checkValidForSorting(arr)) {\n this.multisortParams.map((el) => this.setSortableParams(el, arr));\n this.euiTableSortService.setMultiSortColumns(this.multisortParams);\n this.dropdown.closeDropdown();\n } else {\n this.error = true;\n }\n }\n\n private setSortableParams(el: MultisortParam, arr: Array<{ name: string; order: 'asc' | 'desc' | null }>): MultisortParam {\n const currElArr = arr.find((item) => item.name === el.name);\n if (currElArr) {\n const index = arr.findIndex((item) => item.name === el.name);\n el.order = currElArr.order;\n el.position = index + 1;\n } else {\n el.order = null;\n el.position = 0;\n }\n return el;\n }\n\n private setCurrentMultisortPosition(multisortParams: MultisortParam[]): void {\n const currentColumn = multisortParams.find((el) => el.name === this.sortOn);\n if (currentColumn) {\n this.order = currentColumn.order;\n this.currentMultiSortPosition = currentColumn.position;\n } else {\n this.order = null;\n this.currentMultiSortPosition = 0;\n }\n }\n\n private checkValidForSorting(arr: Array<{ name: string; order: string }>): boolean {\n if (arr.length === 0) {\n return false;\n }\n return arr.find((el) => !this.isElementUniqueName(arr, el)) === undefined;\n }\n\n private isElementUniqueName(arr: Array<{ name: string; order: string }>, el: { name: string; order: string }): boolean {\n return arr.filter((col) => col.name === el.name).length === 1;\n }\n}\n", "<div class=\"eui-table__sortable-col-content\">\n <ng-content></ng-content>\n @if (!sortDisabled) {\n <button type=\"button\" euiSizeS euiButton euiIconButton euiBasicButton class=\"eui-table__sortable-icon-button\" (click)=\"click()\">\n @if (!order) {\n <eui-icon-svg icon=\"swap-vertical:outline\" fillColor=\"neutral-lighter\" [aria-label]=\"'eui.euitable.NO-SORTING-ICON' | translate\"></eui-icon-svg>\n }\n @if (order === 'asc') {\n <eui-icon-svg icon=\"arrow-up:outline\" fillColor=\"primary\" [aria-label]=\"'eui.euitable.ASCENDING-ICON' | translate\"></eui-icon-svg>\n }\n @if (order === 'desc') {\n <eui-icon-svg icon=\"arrow-down:outline\" fillColor=\"primary\" [aria-label]=\"'eui.euitable.DESCENDING-ICON' | translate\"></eui-icon-svg>\n }\n </button>\n }\n @if (isMultiSortable) {\n <ng-template [ngTemplateOutlet]=\"sortDropdown\"></ng-template>\n }\n</div>\n<ng-template #sortDropdown let-index>\n <eui-dropdown [hasClosedOnClickInside]=\"false\">\n <button type=\"button\" euiButton euiBasicButton euiRounded euiIconButton euiSizeS [euiDisabled]=\"sortDisabled\" (click)=\"onOpenDropdown()\">\n <span euiBadge euiPrimary euiOutline>{{ currentMultiSortPosition }}</span>\n </button>\n <eui-dropdown-content>\n <div class=\"eui-u-pt-xs eui-u-pl-s\">\n <small>{{ 'eui.euitable.CHOOSE-SORT-ORDER' | translate }}</small>\n </div>\n @if (form) {\n <form [formGroup]=\"form\">\n <ng-container formArrayName=\"columns\">\n @for (columnForm of columns.controls; let i = $index; track columnForm) {\n <div class=\"eui-u-flex eui-u-p-s\" [formGroup]=\"form.get('columns')['controls'][i]\">\n <span euiLabel class=\"eui-u-mr-s\">{{ i + 1 }}</span>\n <select euiSelect euiSizeS formControlName=\"name\" class=\"eui-u-mr-s\">\n <option value=\"\"></option>\n @for (column of multisortParams; track column) {\n <option [value]=\"column.name\">{{ column.name }}</option>\n }\n </select>\n @if (!getOrderByIndex(i)) {\n <button type=\"button\" euiSizeS euiSecondary euiButton euiIconButton euiBasicButton (click)=\"onClickMultisortOrder(i + 1, 'asc')\">\n <eui-icon-svg icon=\"swap-vertical:outline\" [aria-label]=\"'eui.euitable.NO-SORTING-ICON' | translate\"></eui-icon-svg>\n </button>\n }\n @if (getOrderByIndex(i) === 'asc') {\n <button type=\"button\" euiSizeS euiPrimary euiButton euiIconButton euiBasicButton (click)=\"onClickMultisortOrder(i + 1, 'desc')\">\n <eui-icon-svg icon=\"arrow-up:outline\" [aria-label]=\"'eui.euitable.ASCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n }\n @if (getOrderByIndex(i) === 'desc') {\n <button type=\"button\" euiSizeS euiPrimary euiButton euiIconButton euiBasicButton (click)=\"onClickMultisortOrder(i + 1, null)\">\n <eui-icon-svg icon=\"arrow-down:outline\" [aria-label]=\"'eui.euitable.DESCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n }\n </div>\n }\n </ng-container>\n </form>\n }\n @if (error) {\n <p class=\"eui-u-mt-none eui-u-mb-none eui-u-ml-s\">\n <eui-feedback-message euiDanger>{{ 'eui.euitable.WRONG-SORT-PARAMS' | translate }}</eui-feedback-message>\n </p>\n }\n <div class=\"eui-u-flex eui-u-flex-justify-content-between eui-u-p-s\">\n <button type=\"button\" euiButton euiSizeS euiSecondary (click)=\"onCancelMultiSort()\">{{ 'eui.CANCEL' | translate }}</button>\n <button type=\"button\" euiButton euiSizeS euiPrimary (click)=\"onSubmitMultiSort()\">{{ 'eui.APPLY' | translate }}</button>\n </div>\n </eui-dropdown-content>\n </eui-dropdown>\n</ng-template>\n", "import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, HostBinding, ViewChild, ElementRef, ViewEncapsulation, booleanAttribute } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { Subject, BehaviorSubject, takeUntil, debounceTime, distinctUntilChanged } from 'rxjs';\n\nimport { BaseStatesDirective } from '@eui/components/shared';\n\n@Component({\n selector: 'eui-table-filter',\n templateUrl: './eui-table-filter.component.html',\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: BaseStatesDirective,\n inputs: [],\n },\n ],\n})\nexport class EuiTableFilterComponent implements OnInit, OnDestroy {\n @HostBinding('class')\n get cssClasses(): string {\n return [this.baseStatesDirective.getCssClasses('eui-table__filter')].join(' ').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 | null> = new BehaviorSubject(null);\n public form: FormGroup;\n\n @Input({ transform: booleanAttribute }) autoSearch = false;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private baseStatesDirective: BaseStatesDirective) {\n }\n\n ngOnInit(): void {\n this.form = new FormGroup({\n filter: new FormControl<string>(null),\n });\n\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 public resetFilter(): void {\n this.setFilter(null);\n this.form.reset();\n this.filterInput.nativeElement.focus();\n }\n}\n", "<div class=\"eui-table__filter\">\n <form [formGroup]=\"form\">\n <input\n #filterInput\n euiClearable\n euiInputText\n class=\"eui-table__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__filter-search-icon\" icon=\"eui-ecl-search\" size=\"m\" fillColor=\"neutral-lightest\"></eui-icon-svg>\n </form>\n</div>\n", "import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'euiTableHighlightFilter',\n})\nexport class EuiTableHighlightFilterPipe implements PipeTransform {\n transform(value: string, strFilter: string, className = 'eui-table--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, Input, OnDestroy, OnChanges, HostBinding, HostListener, booleanAttribute } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { EuiTableSelectableRowService } from '../services/eui-table-selectable-row.service';\n\n@Component({\n // eslint-disable-next-line\n selector: 'tr[isSelectable]',\n templateUrl: './eui-table-selectable-row.component.html',\n})\nexport class EuiTableSelectableRowComponent implements OnInit, OnDestroy, OnChanges {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() isSelectable: any;\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 get cssClasses(): string {\n return ['eui-table__row', this.isSelectable ? 'eui-table__row--selectable' : '', this.isChecked ? 'eui-table__row--selected' : '']\n .join(' ')\n .trim();\n }\n\n constructor(private euiTableSelectableRowService: EuiTableSelectableRowService) {}\n\n @HostListener('click', ['$event']) onClickRow(event: PointerEvent): void {\n if (this.isKeyboardSelectable && this.isSelectable) {\n if (event.ctrlKey) {\n if (!this.isChecked) {\n this.euiTableSelectableRowService.addSelectedRow(this.isSelectable);\n } else {\n this.euiTableSelectableRowService.removeSelectedRow(this.isSelectable);\n }\n } else if (event.shiftKey) {\n const rows = this.euiTableSelectableRowService.getRows();\n const lastSelectedRow = this.euiTableSelectableRowService.getLastSelectedRow();\n const lastSelectedRowPosition = rows.indexOf(lastSelectedRow);\n const position = rows.indexOf(this.isSelectable);\n\n const range =\n lastSelectedRowPosition > position\n ? rows.slice(position, lastSelectedRowPosition + 1)\n : rows.slice(lastSelectedRowPosition, position + 1);\n\n this.euiTableSelectableRowService.addSelectedRows(range);\n\n window.getSelection().empty();\n } else {\n this.euiTableSelectableRowService.selectRows([this.isSelectable]);\n }\n }\n }\n\n ngOnChanges(): void {\n if (this.isSelectable) {\n this.propId = this.euiTableSelectableRowService.getPropId();\n this.isChecked = this.euiTableSelectableRowService.selectedRows$.value.find(\n (s) => s[this.propId] === this.isSelectable[this.propId],\n )\n ? true\n : false;\n }\n }\n\n ngOnInit(): void {\n this.euiTableSelectableRowService.selectedRows$.pipe(takeUntil(this.destroy$)).subscribe((selected) => {\n this.isChecked = selected.filter((s) => s[this.propId] === this.isSelectable[this.propId]).length > 0;\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public toggleCheckedState(e: any): void {\n if (!this.isChecked) {\n this.euiTableSelectableRowService.addSelectedRow(this.isSelectable);\n } else {\n this.euiTableSelectableRowService.removeSelectedRow(this.isSelectable);\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n}\n", "@if (isSelectable) {\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, OnDestroy, ViewChild, ElementRef, booleanAttribute } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { EuiTableSelectableRowService } from '../services/eui-table-selectable-row.service';\n\n@Component({\n // eslint-disable-next-line\n selector: 'tr[isSelectableHeader]',\n templateUrl: './eui-table-selectable-header.component.html',\n})\nexport class EuiTableSelectableHeaderComponent implements OnInit, OnDestroy {\n @ViewChild('checkbox') checkbox: ElementRef<HTMLInputElement>;\n\n public isCheckedIndeterminate = false;\n\n @Input({ transform: booleanAttribute }) isSelectableHeader = true;\n @Input({ transform: booleanAttribute }) isChecked = false;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private euiTableSelectableRowService: EuiTableSelectableRowService) {}\n\n ngOnInit(): void {\n this.euiTableSelectableRowService.isAllRowsSelected$.pipe(takeUntil(this.destroy$)).subscribe((selected) => {\n this.isChecked = selected;\n if (this.checkbox) {\n this.checkbox.nativeElement.checked = selected;\n }\n\n if (!selected && this.euiTableSelectableRowService.selectedRows$.value.length > 0) {\n this.isCheckedIndeterminate = true;\n } else {\n this.isCheckedIndeterminate = false;\n }\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.euiTableSelectableRowService.selectAllRows();\n } else {\n this.euiTableSelectableRowService.unselectAllRows();\n }\n }\n}\n", "@if (isSelectableHeader) {\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\n<ng-content></ng-content>\n", "import { Component, HostBinding } from '@angular/core';\n\n@Component({\n // eslint-disable-next-line\n selector: 'tr[euiTableExpandableRow]',\n templateUrl: './eui-table-expandable-row.component.html',\n})\nexport class EuiTableExpandableRowComponent {\n @HostBinding('class') string = 'eui-table-expandable-row';\n}\n", "<ng-content></ng-content>\n", "import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[isStickyColumn]',\n})\nexport class EuiTableStickyColumnDirective {\n @HostBinding('class.eui-table__col--sticky') get stickyClass(): boolean {\n return true;\n }\n}\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { EuiListModule } from '@eui/components/eui-list';\nimport { EuiDropdownModule } from '@eui/components/eui-dropdown';\nimport { EuiButtonModule } from '@eui/components/eui-button';\nimport { EuiTemplateDirectiveModule } from '@eui/components/directives';\nimport { EuiInputTextModule } from '@eui/components/eui-input-text';\nimport { EuiInputCheckboxModule } from '@eui/components/eui-input-checkbox';\nimport { EuiSelectModule } from '@eui/components/eui-select';\nimport { EuiFeedbackMessageModule } from '@eui/components/eui-feedback-message';\n\nimport { EuiTableComponent } from './eui-table.component';\nimport { EuiTableSortableColComponent } from './sortable-col/eui-table-sortable-col.component';\nimport { EuiTableFilterComponent } from './filter/eui-table-filter.component';\nimport { EuiTableSelectableRowComponent } from './selectable-row/eui-table-selectable-row.component';\nimport { EuiTableSelectableHeaderComponent } from './selectable-header/eui-table-selectable-header.component';\nimport { EuiTableExpandableRowComponent } from './expandable-row/eui-table-expandable-row.component';\nimport { EuiTableHighlightFilterPipe } from './pipes/eui-table-highlight-filter.pipe';\nimport { EuiTableStickyColumnDirective } from './directives/eui-table-sticky-columns.directive';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslateModule,\n FormsModule,\n EuiIconModule,\n EuiListModule,\n EuiDropdownModule,\n EuiButtonModule,\n ReactiveFormsModule,\n EuiTemplateDirectiveModule,\n EuiInputTextModule,\n EuiInputCheckboxModule,\n EuiFeedbackMessageModule,\n EuiSelectModule,\n ],\n declarations: [\n EuiTableComponent,\n EuiTableSortableColComponent,\n EuiTableFilterComponent,\n EuiTableSelectableRowComponent,\n EuiTableSelectableHeaderComponent,\n EuiTableExpandableRowComponent,\n EuiTableHighlightFilterPipe,\n EuiTableStickyColumnDirective,\n ],\n exports: [\n EuiTableComponent,\n EuiTableSortableColComponent,\n EuiTableFilterComponent,\n EuiTableSelectableRowComponent,\n EuiTableSelectableHeaderComponent,\n EuiTableExpandableRowComponent,\n EuiTableHighlightFilterPipe,\n EuiTemplateDirectiveModule,\n EuiTableStickyColumnDirective,\n ],\n})\nexport class EuiTableModule {}\n"],
|
5
5
|
"mappings": "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",
|
6
6
|
"names": ["Injectable", "BehaviorSubject", "BehaviorSubject", "i0", "Component", "Input", "HostBinding", "ViewChild", "booleanAttribute", "Subject", "combineLatest", "takeUntil", "FormGroup", "i0", "Component", "Input", "Output", "EventEmitter", "HostBinding", "ViewChild", "ElementRef", "ViewEncapsulation", "booleanAttribute", "FormGroup", "FormControl", "Subject", "BehaviorSubject", "takeUntil", "BaseStatesDirective", "i0", "Component", "Input", "HostBinding", "booleanAttribute", "Subject", "takeUntil", "i0", "Component", "Input", "ViewChild", "booleanAttribute", "Subject", "takeUntil", "i0", "Component", "HostBinding", "i0", "HostBinding", "i0"]
|
7
7
|
}
|
@@ -477,12 +477,12 @@ var EuiTabsComponent = class _EuiTabsComponent {
|
|
477
477
|
this.ɵfac = i04.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i04, type: _EuiTabsComponent, deps: [{ token: i04.ChangeDetectorRef }, { token: i12.Router }, { token: i2.AnimationBuilder }, { token: i04.ElementRef }], target: i04.ɵɵFactoryTarget.Component });
|
478
478
|
}
|
479
479
|
static {
|
480
|
-
this.ɵcmp = i04.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0-rc.1", type: _EuiTabsComponent, selector: "eui-tabs", inputs: { tabs: "tabs", activeTabIndex: "activeTabIndex", e2eAttr: "e2eAttr", pathMatch: "pathMatch", isMainNavigation: ["isMainNavigation", "isMainNavigation", booleanAttribute3], isHandleChangeTab: ["isHandleChangeTab", "isHandleChangeTab", booleanAttribute3], isSubTabs: ["isSubTabs", "isSubTabs", booleanAttribute3], isVerticalTabs: ["isVerticalTabs", "isVerticalTabs", booleanAttribute3] }, outputs: { tabClose: "tabClose", tabSelect: "tabSelect" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "class": "this.elementClass", "attr.data-e2e": "this.e2eAttr" } }, queries: [{ propertyName: "_tabs", predicate: i04.forwardRef(() => EuiTabComponent) }], viewQueries: [{ propertyName: "euiTabsItems", first: true, predicate: ["euiTabsItems"], descendants: true }, { propertyName: "euiTabsItemsWrapper", first: true, predicate: ["euiTabsItemsWrapper"], descendants: true }, { propertyName: "euiTabLabelItems", predicate: ["euiTabLabelItem"], descendants: true, read: ViewContainerRef3 }], usesOnChanges: true, ngImport: i04, template: '<div class="eui-u-flex" [class.eui-tabs__wrapper--horizontal]="!isVerticalTabs" [class.eui-tabs__wrapper--vertical]="isVerticalTabs">\n <div\n #euiTabsItems\n class="eui-tabs__items"\n [class.eui-tabs__items--horizontal]="!isVerticalTabs"\n [class.eui-tabs__items--scrolling]="scrolling"\n (cdkObserveContent)="onContentChanges()">\n <div #euiTabsItemsWrapper class="eui-tabs__items-wrapper" [attr.data-offset]="currentOffset" role="tablist">\n @for (tab of tabs; let i = $index; track tab) {\n @if (tab.isVisible) {\n <div\n tabindex="0"\n role="tab"\n class="eui-tab-item eui-tab-item--{{ tab.baseStatesDirective.euiVariant }}"\n [class.eui-tab-item--closable]="tab.isClosable"\n [class.eui-tab-item--active]="activeTabIndex === i"\n [class.eui-tab-item--disabled]="tab.isDisabled"\n [class.eui-tab-item--background-filled]="tab.hasBackgroundFilled"\n [attr.aria-disabled]="tab.isDisabled"\n (click)="changeTab(i)"\n [euiTooltip]="tab.tooltip"\n (keyup)="onKeyUp($event, i)">\n <div class="eui-tab-item__label">\n <ng-template [cdkPortalOutlet]="tab.templateLabel.templatePortal"></ng-template>\n </div>\n @if (tab.isClosable) {\n <button\n (click)="closeTab(i, $event)"\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeXS\n type="button"\n aria-label="Close tab button"\n class="eui-u-ml-s">\n <eui-icon-svg\n icon="eui-ecl-close-outline"\n size="l"\n fillColor="neutral-light"\n class="eui-tab__close-icon"\n aria-label="Close icon">\n </eui-icon-svg>\n </button>\n }\n </div>\n }\n }\n </div>\n\n <div class="eui-tabs__navigation">\n <div class="eui-tabs__navigation__left-item">\n <button\n (click)="goToLeft()"\n euiButton\n euiIconButton\n euiBasicButton\n type="button"\n [euiDisabled]="navigationLeftButtonDisabled"\n aria-label="Scroll left">\n <eui-icon-svg icon="eui-chevron-back"></eui-icon-svg>\n </button>\n </div>\n <div class="eui-tabs__navigation__right-item">\n <button\n (click)="goToRight()"\n euiButton\n euiIconButton\n euiBasicButton\n type="button"\n [euiDisabled]="navigationRightButtonDisabled"\n aria-label="Scroll right">\n <eui-icon-svg icon="eui-chevron-forward"></eui-icon-svg>\n </button>\n </div>\n </div>\n </div>\n\n <div class="eui-tabs__right-content">\n <ng-content select="euiTabsRightContent"></ng-content>\n </div>\n</div>\n\n@for (tab of tabs; let i = $index; track tab) {\n @if (i === activeTabIndex && tab.templateContent) {\n <div class="eui-tab-content-wrapper" tabindex="0">\n <ng-template [cdkPortalOutlet]="tab.templateContent.templatePortal"></ng-template>\n </div>\n }\n}\n', styles: ['.eui-tabs__items{display:flex!important;flex-direction:row;position:relative;width:100%}.eui-tabs .eui-tabs__wrapper--vertical{flex:1 1 25%;flex-direction:column}.eui-tabs .eui-tabs__items-wrapper{display:flex;flex-shrink:0}.eui-tabs .eui-tabs__items{justify-content:space-between;overflow:hidden}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:3px 0 6px 1px #00000040;display:none;height:100%;left:0;position:absolute;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:-3px 0 6px 1px #00000040;display:none;height:100%;position:absolute;right:0;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__items-wrapper{padding-left:var(--eui-s-3xl);padding-right:var(--eui-s-m)}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__left-item,.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__right-item{display:block!important;padding:0 2px 2px}.eui-tabs__right-content{align-items:center;display:flex;margin-left:var(--eui-s-s)}.eui-tabs__right-content .eui-tabs__right-content-wrapper{display:flex;align-items:center}.eui-tabs .eui-tabs__wrapper--vertical .eui-tab-item__label{align-items:center;display:flex}.eui-tabs .eui-tab-item{align-items:center;background-color:inherit;border:var(--eui-bw-none);border-bottom:3px solid transparent;box-shadow:0 2px 1px #00000080,inset 0 1px 0 var(--eui-c-white);color:var(--eui-c-neutral);cursor:pointer;display:flex;padding:var(--eui-s-s) var(--eui-s-m) var(--eui-s-s) var(--eui-s-m);position:relative;text-align:center;transition:.5s cubic-bezier(.35,0,.25,1)}.eui-tabs .eui-tab-item__label{font:var(--eui-f-m-bold)}.eui-tabs .eui-tab-item__label .eui-tab-item__sublabel{align-items:center;display:flex;font:var(--eui-f-s-compact)}.eui-tabs .eui-tab-item:focus{border-bottom:3px solid var(--eui-c-accent);background:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus [tabindex="0"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--active{border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--hidden{display:none}.eui-tabs .eui-tab-item .eui-tab__close-icon{cursor:pointer;color:var(--eui-c-neutral-light);fill:var(--eui-c-neutral-light);opacity:.7}.eui-tabs .eui-tab-item .eui-tab__close-icon:hover>svg{color:var(--eui-c-primary);fill:var(--eui-c-primary);opacity:1}.eui-tabs .eui-tab-item.eui-tab-item--disabled{color:var(--eui-c-neutral-lighter);cursor:not-allowed;pointer-events:none}.eui-tabs .eui-tab-item.eui-tab-item--disabled:hover{border-bottom:3px solid transparent;color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-content-wrapper{border-top:1px solid var(--eui-c-neutral-lightest)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s) 0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs.eui-tabs--vertical{display:flex;flex-direction:row}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items .eui-tabs__items-wrapper{display:flex;flex-direction:column;height:100%}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal){border-bottom:0;flex:1 1 25%;flex-direction:column;position:relative}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item{border-bottom-color:transparent;border-left:3px solid transparent;box-shadow:0 0 1px #000000a6,inset 0 1px 0 var(--eui-c-white)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item--active,.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:active{border-left:3px solid var(--eui-c-primary)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-left:3px solid var(--eui-c-primary);color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus{border-left:3px solid transparent}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus [tabindex="0"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper{border-top:none;flex:1 1 75%;flex-direction:column}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s);position:relative}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs--main-navigation .eui-tabs__items,.eui-tabs--main-navigation .eui-tabs__items-wrapper{width:100%}.eui-tabs--main-navigation .eui-tab-item{flex-grow:1;justify-content:center}.eui-tabs--main-navigation .eui-tab-item--active,.eui-tabs--main-navigation .eui-tab-item :active{background-color:var(--eui-c-active)}.eui-tabs .eui-tab-item:hover,.eui-tabs .eui-tab-item.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary{color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary.eui-tab-item--active,.eui-tabs .eui-tab-item--primary:hover{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--secondary{color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item--secondary.eui-tab-item--active,.eui-tabs .eui-tab-item--secondary:hover{border-bottom-color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-item--info{color:var(--eui-c-info)}.eui-tabs .eui-tab-item--info.eui-tab-item--active,.eui-tabs .eui-tab-item--info:hover{border-bottom-color:var(--eui-c-info)}.eui-tabs .eui-tab-item--success{color:var(--eui-c-success)}.eui-tabs .eui-tab-item--success.eui-tab-item--active,.eui-tabs .eui-tab-item--success:hover{border-bottom-color:var(--eui-c-success)}.eui-tabs .eui-tab-item--warning{color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--warning.eui-tab-item--active,.eui-tabs .eui-tab-item--warning:hover{border-bottom-color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--danger{color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--danger.eui-tab-item--active,.eui-tabs .eui-tab-item--danger:hover{border-bottom-color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--accent{color:var(--eui-c-accent-bg)}.eui-tabs .eui-tab-item--accent.eui-tab-item--active,.eui-tabs .eui-tab-item--accent:hover{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled{background:none}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary{background-color:var(--eui-c-primary);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary{background-color:var(--eui-c-neutral-bg-light);color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info{background-color:var(--eui-c-info);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success{background-color:var(--eui-c-success);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning{background-color:var(--eui-c-warning);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger{background-color:var(--eui-c-danger);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent{background-color:var(--eui-c-accent);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}\n'], dependencies: [{ kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i4.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: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "euiIconButton", "euiLineWrap", "isChecked", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "directive", type: i6.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }, { kind: "directive", type: i7.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }], encapsulation: i04.ViewEncapsulation.None });
|
480
|
+
this.ɵcmp = i04.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0-rc.1", type: _EuiTabsComponent, selector: "eui-tabs", inputs: { tabs: "tabs", activeTabIndex: "activeTabIndex", e2eAttr: "e2eAttr", pathMatch: "pathMatch", isMainNavigation: ["isMainNavigation", "isMainNavigation", booleanAttribute3], isHandleChangeTab: ["isHandleChangeTab", "isHandleChangeTab", booleanAttribute3], isSubTabs: ["isSubTabs", "isSubTabs", booleanAttribute3], isVerticalTabs: ["isVerticalTabs", "isVerticalTabs", booleanAttribute3] }, outputs: { tabClose: "tabClose", tabSelect: "tabSelect" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "class": "this.elementClass", "attr.data-e2e": "this.e2eAttr" } }, queries: [{ propertyName: "_tabs", predicate: i04.forwardRef(() => EuiTabComponent) }], viewQueries: [{ propertyName: "euiTabsItems", first: true, predicate: ["euiTabsItems"], descendants: true }, { propertyName: "euiTabsItemsWrapper", first: true, predicate: ["euiTabsItemsWrapper"], descendants: true }, { propertyName: "euiTabLabelItems", predicate: ["euiTabLabelItem"], descendants: true, read: ViewContainerRef3 }], usesOnChanges: true, ngImport: i04, template: '<div class="eui-u-flex" [class.eui-tabs__wrapper--horizontal]="!isVerticalTabs" [class.eui-tabs__wrapper--vertical]="isVerticalTabs">\n <div\n #euiTabsItems\n class="eui-tabs__items"\n [class.eui-tabs__items--horizontal]="!isVerticalTabs"\n [class.eui-tabs__items--scrolling]="scrolling"\n (cdkObserveContent)="onContentChanges()">\n <div #euiTabsItemsWrapper class="eui-tabs__items-wrapper" [attr.data-offset]="currentOffset" role="tablist">\n @for (tab of tabs; let i = $index; track tab) {\n @if (tab.isVisible) {\n <div\n tabindex="0"\n role="tab"\n class="eui-tab-item eui-tab-item--{{ tab.baseStatesDirective.euiVariant }}"\n [class.eui-tab-item--closable]="tab.isClosable"\n [class.eui-tab-item--active]="activeTabIndex === i"\n [class.eui-tab-item--disabled]="tab.isDisabled"\n [class.eui-tab-item--background-filled]="tab.hasBackgroundFilled"\n [attr.aria-disabled]="tab.isDisabled"\n (click)="changeTab(i)"\n [euiTooltip]="tab.tooltip"\n (keyup)="onKeyUp($event, i)">\n <div class="eui-tab-item__label">\n <ng-template [cdkPortalOutlet]="tab.templateLabel.templatePortal"></ng-template>\n </div>\n @if (tab.isClosable) {\n <button\n (click)="closeTab(i, $event)"\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeXS\n type="button"\n aria-label="Close tab button"\n class="eui-u-ml-s">\n <eui-icon-svg\n icon="eui-ecl-close-outline"\n size="l"\n fillColor="neutral-light"\n class="eui-tab__close-icon"\n aria-label="Close icon">\n </eui-icon-svg>\n </button>\n }\n </div>\n }\n }\n </div>\n\n <div class="eui-tabs__navigation">\n <div class="eui-tabs__navigation__left-item">\n <button\n (click)="goToLeft()"\n euiButton\n euiIconButton\n euiBasicButton\n type="button"\n [euiDisabled]="navigationLeftButtonDisabled"\n aria-label="Scroll left">\n <eui-icon-svg icon="chevron-back:sharp"></eui-icon-svg>\n </button>\n </div>\n <div class="eui-tabs__navigation__right-item">\n <button\n (click)="goToRight()"\n euiButton\n euiIconButton\n euiBasicButton\n type="button"\n [euiDisabled]="navigationRightButtonDisabled"\n aria-label="Scroll right">\n <eui-icon-svg icon="chevron-forward:sharp"></eui-icon-svg>\n </button>\n </div>\n </div>\n </div>\n\n <div class="eui-tabs__right-content">\n <ng-content select="euiTabsRightContent"></ng-content>\n </div>\n</div>\n\n@for (tab of tabs; let i = $index; track tab) {\n @if (i === activeTabIndex && tab.templateContent) {\n <div class="eui-tab-content-wrapper" tabindex="0">\n <ng-template [cdkPortalOutlet]="tab.templateContent.templatePortal"></ng-template>\n </div>\n }\n}\n', styles: ['.eui-tabs__items{display:flex!important;flex-direction:row;position:relative;width:100%}.eui-tabs .eui-tabs__wrapper--vertical{flex:1 1 25%;flex-direction:column}.eui-tabs .eui-tabs__items-wrapper{display:flex;flex-shrink:0}.eui-tabs .eui-tabs__items{justify-content:space-between;overflow:hidden}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:3px 0 6px 1px #00000040;display:none;height:100%;left:0;position:absolute;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:-3px 0 6px 1px #00000040;display:none;height:100%;position:absolute;right:0;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__items-wrapper{padding-left:var(--eui-s-3xl);padding-right:var(--eui-s-m)}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__left-item,.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__right-item{display:block!important;padding:0 2px 2px}.eui-tabs__right-content{align-items:center;display:flex;margin-left:var(--eui-s-s)}.eui-tabs__right-content .eui-tabs__right-content-wrapper{display:flex;align-items:center}.eui-tabs .eui-tabs__wrapper--vertical .eui-tab-item__label{align-items:center;display:flex}.eui-tabs .eui-tab-item{align-items:center;background-color:inherit;border:var(--eui-bw-none);border-bottom:3px solid transparent;box-shadow:0 2px 1px #00000080,inset 0 1px 0 var(--eui-c-white);color:var(--eui-c-neutral);cursor:pointer;display:flex;padding:var(--eui-s-s) var(--eui-s-m) var(--eui-s-s) var(--eui-s-m);position:relative;text-align:center;transition:.5s cubic-bezier(.35,0,.25,1)}.eui-tabs .eui-tab-item__label{font:var(--eui-f-m-bold)}.eui-tabs .eui-tab-item__label .eui-tab-item__sublabel{align-items:center;display:flex;font:var(--eui-f-s-compact)}.eui-tabs .eui-tab-item:focus{border-bottom:3px solid var(--eui-c-accent);background:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus [tabindex="0"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--active{border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--hidden{display:none}.eui-tabs .eui-tab-item .eui-tab__close-icon{cursor:pointer;color:var(--eui-c-neutral-light);fill:var(--eui-c-neutral-light);opacity:.7}.eui-tabs .eui-tab-item .eui-tab__close-icon:hover>svg{color:var(--eui-c-primary);fill:var(--eui-c-primary);opacity:1}.eui-tabs .eui-tab-item.eui-tab-item--disabled{color:var(--eui-c-neutral-lighter);cursor:not-allowed;pointer-events:none}.eui-tabs .eui-tab-item.eui-tab-item--disabled:hover{border-bottom:3px solid transparent;color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-content-wrapper{border-top:1px solid var(--eui-c-neutral-lightest)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s) 0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs.eui-tabs--vertical{display:flex;flex-direction:row}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items .eui-tabs__items-wrapper{display:flex;flex-direction:column;height:100%}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal){border-bottom:0;flex:1 1 25%;flex-direction:column;position:relative}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item{border-bottom-color:transparent;border-left:3px solid transparent;box-shadow:0 0 1px #000000a6,inset 0 1px 0 var(--eui-c-white)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item--active,.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:active{border-left:3px solid var(--eui-c-primary)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-left:3px solid var(--eui-c-primary);color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus{border-left:3px solid transparent}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus [tabindex="0"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper{border-top:none;flex:1 1 75%;flex-direction:column}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s);position:relative}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs--main-navigation .eui-tabs__items,.eui-tabs--main-navigation .eui-tabs__items-wrapper{width:100%}.eui-tabs--main-navigation .eui-tab-item{flex-grow:1;justify-content:center}.eui-tabs--main-navigation .eui-tab-item--active,.eui-tabs--main-navigation .eui-tab-item :active{background-color:var(--eui-c-active)}.eui-tabs .eui-tab-item:hover,.eui-tabs .eui-tab-item.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary{color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary.eui-tab-item--active,.eui-tabs .eui-tab-item--primary:hover{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--secondary{color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item--secondary.eui-tab-item--active,.eui-tabs .eui-tab-item--secondary:hover{border-bottom-color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-item--info{color:var(--eui-c-info)}.eui-tabs .eui-tab-item--info.eui-tab-item--active,.eui-tabs .eui-tab-item--info:hover{border-bottom-color:var(--eui-c-info)}.eui-tabs .eui-tab-item--success{color:var(--eui-c-success)}.eui-tabs .eui-tab-item--success.eui-tab-item--active,.eui-tabs .eui-tab-item--success:hover{border-bottom-color:var(--eui-c-success)}.eui-tabs .eui-tab-item--warning{color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--warning.eui-tab-item--active,.eui-tabs .eui-tab-item--warning:hover{border-bottom-color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--danger{color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--danger.eui-tab-item--active,.eui-tabs .eui-tab-item--danger:hover{border-bottom-color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--accent{color:var(--eui-c-accent-bg)}.eui-tabs .eui-tab-item--accent.eui-tab-item--active,.eui-tabs .eui-tab-item--accent:hover{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled{background:none}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary{background-color:var(--eui-c-primary);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary{background-color:var(--eui-c-neutral-bg-light);color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info{background-color:var(--eui-c-info);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success{background-color:var(--eui-c-success);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning{background-color:var(--eui-c-warning);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger{background-color:var(--eui-c-danger);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent{background-color:var(--eui-c-accent);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}\n'], dependencies: [{ kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i4.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: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "euiIconButton", "euiLineWrap", "isChecked", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "directive", type: i6.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }, { kind: "directive", type: i7.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }], encapsulation: i04.ViewEncapsulation.None });
|
481
481
|
}
|
482
482
|
};
|
483
483
|
i04.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i04, type: EuiTabsComponent, decorators: [{
|
484
484
|
type: Component4,
|
485
|
-
args: [{ selector: "eui-tabs", encapsulation: ViewEncapsulation.None, template: '<div class="eui-u-flex" [class.eui-tabs__wrapper--horizontal]="!isVerticalTabs" [class.eui-tabs__wrapper--vertical]="isVerticalTabs">\n <div\n #euiTabsItems\n class="eui-tabs__items"\n [class.eui-tabs__items--horizontal]="!isVerticalTabs"\n [class.eui-tabs__items--scrolling]="scrolling"\n (cdkObserveContent)="onContentChanges()">\n <div #euiTabsItemsWrapper class="eui-tabs__items-wrapper" [attr.data-offset]="currentOffset" role="tablist">\n @for (tab of tabs; let i = $index; track tab) {\n @if (tab.isVisible) {\n <div\n tabindex="0"\n role="tab"\n class="eui-tab-item eui-tab-item--{{ tab.baseStatesDirective.euiVariant }}"\n [class.eui-tab-item--closable]="tab.isClosable"\n [class.eui-tab-item--active]="activeTabIndex === i"\n [class.eui-tab-item--disabled]="tab.isDisabled"\n [class.eui-tab-item--background-filled]="tab.hasBackgroundFilled"\n [attr.aria-disabled]="tab.isDisabled"\n (click)="changeTab(i)"\n [euiTooltip]="tab.tooltip"\n (keyup)="onKeyUp($event, i)">\n <div class="eui-tab-item__label">\n <ng-template [cdkPortalOutlet]="tab.templateLabel.templatePortal"></ng-template>\n </div>\n @if (tab.isClosable) {\n <button\n (click)="closeTab(i, $event)"\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeXS\n type="button"\n aria-label="Close tab button"\n class="eui-u-ml-s">\n <eui-icon-svg\n icon="eui-ecl-close-outline"\n size="l"\n fillColor="neutral-light"\n class="eui-tab__close-icon"\n aria-label="Close icon">\n </eui-icon-svg>\n </button>\n }\n </div>\n }\n }\n </div>\n\n <div class="eui-tabs__navigation">\n <div class="eui-tabs__navigation__left-item">\n <button\n (click)="goToLeft()"\n euiButton\n euiIconButton\n euiBasicButton\n type="button"\n [euiDisabled]="navigationLeftButtonDisabled"\n aria-label="Scroll left">\n <eui-icon-svg icon="eui-chevron-back"></eui-icon-svg>\n </button>\n </div>\n <div class="eui-tabs__navigation__right-item">\n <button\n (click)="goToRight()"\n euiButton\n euiIconButton\n euiBasicButton\n type="button"\n [euiDisabled]="navigationRightButtonDisabled"\n aria-label="Scroll right">\n <eui-icon-svg icon="eui-chevron-forward"></eui-icon-svg>\n </button>\n </div>\n </div>\n </div>\n\n <div class="eui-tabs__right-content">\n <ng-content select="euiTabsRightContent"></ng-content>\n </div>\n</div>\n\n@for (tab of tabs; let i = $index; track tab) {\n @if (i === activeTabIndex && tab.templateContent) {\n <div class="eui-tab-content-wrapper" tabindex="0">\n <ng-template [cdkPortalOutlet]="tab.templateContent.templatePortal"></ng-template>\n </div>\n }\n}\n', styles: ['.eui-tabs__items{display:flex!important;flex-direction:row;position:relative;width:100%}.eui-tabs .eui-tabs__wrapper--vertical{flex:1 1 25%;flex-direction:column}.eui-tabs .eui-tabs__items-wrapper{display:flex;flex-shrink:0}.eui-tabs .eui-tabs__items{justify-content:space-between;overflow:hidden}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:3px 0 6px 1px #00000040;display:none;height:100%;left:0;position:absolute;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:-3px 0 6px 1px #00000040;display:none;height:100%;position:absolute;right:0;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__items-wrapper{padding-left:var(--eui-s-3xl);padding-right:var(--eui-s-m)}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__left-item,.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__right-item{display:block!important;padding:0 2px 2px}.eui-tabs__right-content{align-items:center;display:flex;margin-left:var(--eui-s-s)}.eui-tabs__right-content .eui-tabs__right-content-wrapper{display:flex;align-items:center}.eui-tabs .eui-tabs__wrapper--vertical .eui-tab-item__label{align-items:center;display:flex}.eui-tabs .eui-tab-item{align-items:center;background-color:inherit;border:var(--eui-bw-none);border-bottom:3px solid transparent;box-shadow:0 2px 1px #00000080,inset 0 1px 0 var(--eui-c-white);color:var(--eui-c-neutral);cursor:pointer;display:flex;padding:var(--eui-s-s) var(--eui-s-m) var(--eui-s-s) var(--eui-s-m);position:relative;text-align:center;transition:.5s cubic-bezier(.35,0,.25,1)}.eui-tabs .eui-tab-item__label{font:var(--eui-f-m-bold)}.eui-tabs .eui-tab-item__label .eui-tab-item__sublabel{align-items:center;display:flex;font:var(--eui-f-s-compact)}.eui-tabs .eui-tab-item:focus{border-bottom:3px solid var(--eui-c-accent);background:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus [tabindex="0"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--active{border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--hidden{display:none}.eui-tabs .eui-tab-item .eui-tab__close-icon{cursor:pointer;color:var(--eui-c-neutral-light);fill:var(--eui-c-neutral-light);opacity:.7}.eui-tabs .eui-tab-item .eui-tab__close-icon:hover>svg{color:var(--eui-c-primary);fill:var(--eui-c-primary);opacity:1}.eui-tabs .eui-tab-item.eui-tab-item--disabled{color:var(--eui-c-neutral-lighter);cursor:not-allowed;pointer-events:none}.eui-tabs .eui-tab-item.eui-tab-item--disabled:hover{border-bottom:3px solid transparent;color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-content-wrapper{border-top:1px solid var(--eui-c-neutral-lightest)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s) 0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs.eui-tabs--vertical{display:flex;flex-direction:row}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items .eui-tabs__items-wrapper{display:flex;flex-direction:column;height:100%}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal){border-bottom:0;flex:1 1 25%;flex-direction:column;position:relative}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item{border-bottom-color:transparent;border-left:3px solid transparent;box-shadow:0 0 1px #000000a6,inset 0 1px 0 var(--eui-c-white)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item--active,.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:active{border-left:3px solid var(--eui-c-primary)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-left:3px solid var(--eui-c-primary);color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus{border-left:3px solid transparent}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus [tabindex="0"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper{border-top:none;flex:1 1 75%;flex-direction:column}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s);position:relative}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs--main-navigation .eui-tabs__items,.eui-tabs--main-navigation .eui-tabs__items-wrapper{width:100%}.eui-tabs--main-navigation .eui-tab-item{flex-grow:1;justify-content:center}.eui-tabs--main-navigation .eui-tab-item--active,.eui-tabs--main-navigation .eui-tab-item :active{background-color:var(--eui-c-active)}.eui-tabs .eui-tab-item:hover,.eui-tabs .eui-tab-item.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary{color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary.eui-tab-item--active,.eui-tabs .eui-tab-item--primary:hover{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--secondary{color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item--secondary.eui-tab-item--active,.eui-tabs .eui-tab-item--secondary:hover{border-bottom-color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-item--info{color:var(--eui-c-info)}.eui-tabs .eui-tab-item--info.eui-tab-item--active,.eui-tabs .eui-tab-item--info:hover{border-bottom-color:var(--eui-c-info)}.eui-tabs .eui-tab-item--success{color:var(--eui-c-success)}.eui-tabs .eui-tab-item--success.eui-tab-item--active,.eui-tabs .eui-tab-item--success:hover{border-bottom-color:var(--eui-c-success)}.eui-tabs .eui-tab-item--warning{color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--warning.eui-tab-item--active,.eui-tabs .eui-tab-item--warning:hover{border-bottom-color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--danger{color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--danger.eui-tab-item--active,.eui-tabs .eui-tab-item--danger:hover{border-bottom-color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--accent{color:var(--eui-c-accent-bg)}.eui-tabs .eui-tab-item--accent.eui-tab-item--active,.eui-tabs .eui-tab-item--accent:hover{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled{background:none}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary{background-color:var(--eui-c-primary);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary{background-color:var(--eui-c-neutral-bg-light);color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info{background-color:var(--eui-c-info);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success{background-color:var(--eui-c-success);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning{background-color:var(--eui-c-warning);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger{background-color:var(--eui-c-danger);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent{background-color:var(--eui-c-accent);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}\n'] }]
|
485
|
+
args: [{ selector: "eui-tabs", encapsulation: ViewEncapsulation.None, template: '<div class="eui-u-flex" [class.eui-tabs__wrapper--horizontal]="!isVerticalTabs" [class.eui-tabs__wrapper--vertical]="isVerticalTabs">\n <div\n #euiTabsItems\n class="eui-tabs__items"\n [class.eui-tabs__items--horizontal]="!isVerticalTabs"\n [class.eui-tabs__items--scrolling]="scrolling"\n (cdkObserveContent)="onContentChanges()">\n <div #euiTabsItemsWrapper class="eui-tabs__items-wrapper" [attr.data-offset]="currentOffset" role="tablist">\n @for (tab of tabs; let i = $index; track tab) {\n @if (tab.isVisible) {\n <div\n tabindex="0"\n role="tab"\n class="eui-tab-item eui-tab-item--{{ tab.baseStatesDirective.euiVariant }}"\n [class.eui-tab-item--closable]="tab.isClosable"\n [class.eui-tab-item--active]="activeTabIndex === i"\n [class.eui-tab-item--disabled]="tab.isDisabled"\n [class.eui-tab-item--background-filled]="tab.hasBackgroundFilled"\n [attr.aria-disabled]="tab.isDisabled"\n (click)="changeTab(i)"\n [euiTooltip]="tab.tooltip"\n (keyup)="onKeyUp($event, i)">\n <div class="eui-tab-item__label">\n <ng-template [cdkPortalOutlet]="tab.templateLabel.templatePortal"></ng-template>\n </div>\n @if (tab.isClosable) {\n <button\n (click)="closeTab(i, $event)"\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeXS\n type="button"\n aria-label="Close tab button"\n class="eui-u-ml-s">\n <eui-icon-svg\n icon="eui-ecl-close-outline"\n size="l"\n fillColor="neutral-light"\n class="eui-tab__close-icon"\n aria-label="Close icon">\n </eui-icon-svg>\n </button>\n }\n </div>\n }\n }\n </div>\n\n <div class="eui-tabs__navigation">\n <div class="eui-tabs__navigation__left-item">\n <button\n (click)="goToLeft()"\n euiButton\n euiIconButton\n euiBasicButton\n type="button"\n [euiDisabled]="navigationLeftButtonDisabled"\n aria-label="Scroll left">\n <eui-icon-svg icon="chevron-back:sharp"></eui-icon-svg>\n </button>\n </div>\n <div class="eui-tabs__navigation__right-item">\n <button\n (click)="goToRight()"\n euiButton\n euiIconButton\n euiBasicButton\n type="button"\n [euiDisabled]="navigationRightButtonDisabled"\n aria-label="Scroll right">\n <eui-icon-svg icon="chevron-forward:sharp"></eui-icon-svg>\n </button>\n </div>\n </div>\n </div>\n\n <div class="eui-tabs__right-content">\n <ng-content select="euiTabsRightContent"></ng-content>\n </div>\n</div>\n\n@for (tab of tabs; let i = $index; track tab) {\n @if (i === activeTabIndex && tab.templateContent) {\n <div class="eui-tab-content-wrapper" tabindex="0">\n <ng-template [cdkPortalOutlet]="tab.templateContent.templatePortal"></ng-template>\n </div>\n }\n}\n', styles: ['.eui-tabs__items{display:flex!important;flex-direction:row;position:relative;width:100%}.eui-tabs .eui-tabs__wrapper--vertical{flex:1 1 25%;flex-direction:column}.eui-tabs .eui-tabs__items-wrapper{display:flex;flex-shrink:0}.eui-tabs .eui-tabs__items{justify-content:space-between;overflow:hidden}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:3px 0 6px 1px #00000040;display:none;height:100%;left:0;position:absolute;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:-3px 0 6px 1px #00000040;display:none;height:100%;position:absolute;right:0;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__items-wrapper{padding-left:var(--eui-s-3xl);padding-right:var(--eui-s-m)}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__left-item,.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__right-item{display:block!important;padding:0 2px 2px}.eui-tabs__right-content{align-items:center;display:flex;margin-left:var(--eui-s-s)}.eui-tabs__right-content .eui-tabs__right-content-wrapper{display:flex;align-items:center}.eui-tabs .eui-tabs__wrapper--vertical .eui-tab-item__label{align-items:center;display:flex}.eui-tabs .eui-tab-item{align-items:center;background-color:inherit;border:var(--eui-bw-none);border-bottom:3px solid transparent;box-shadow:0 2px 1px #00000080,inset 0 1px 0 var(--eui-c-white);color:var(--eui-c-neutral);cursor:pointer;display:flex;padding:var(--eui-s-s) var(--eui-s-m) var(--eui-s-s) var(--eui-s-m);position:relative;text-align:center;transition:.5s cubic-bezier(.35,0,.25,1)}.eui-tabs .eui-tab-item__label{font:var(--eui-f-m-bold)}.eui-tabs .eui-tab-item__label .eui-tab-item__sublabel{align-items:center;display:flex;font:var(--eui-f-s-compact)}.eui-tabs .eui-tab-item:focus{border-bottom:3px solid var(--eui-c-accent);background:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus [tabindex="0"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--active{border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--hidden{display:none}.eui-tabs .eui-tab-item .eui-tab__close-icon{cursor:pointer;color:var(--eui-c-neutral-light);fill:var(--eui-c-neutral-light);opacity:.7}.eui-tabs .eui-tab-item .eui-tab__close-icon:hover>svg{color:var(--eui-c-primary);fill:var(--eui-c-primary);opacity:1}.eui-tabs .eui-tab-item.eui-tab-item--disabled{color:var(--eui-c-neutral-lighter);cursor:not-allowed;pointer-events:none}.eui-tabs .eui-tab-item.eui-tab-item--disabled:hover{border-bottom:3px solid transparent;color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-content-wrapper{border-top:1px solid var(--eui-c-neutral-lightest)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s) 0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs.eui-tabs--vertical{display:flex;flex-direction:row}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items .eui-tabs__items-wrapper{display:flex;flex-direction:column;height:100%}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal){border-bottom:0;flex:1 1 25%;flex-direction:column;position:relative}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item{border-bottom-color:transparent;border-left:3px solid transparent;box-shadow:0 0 1px #000000a6,inset 0 1px 0 var(--eui-c-white)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item--active,.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:active{border-left:3px solid var(--eui-c-primary)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-left:3px solid var(--eui-c-primary);color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus{border-left:3px solid transparent}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus [tabindex="0"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper{border-top:none;flex:1 1 75%;flex-direction:column}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s);position:relative}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs--main-navigation .eui-tabs__items,.eui-tabs--main-navigation .eui-tabs__items-wrapper{width:100%}.eui-tabs--main-navigation .eui-tab-item{flex-grow:1;justify-content:center}.eui-tabs--main-navigation .eui-tab-item--active,.eui-tabs--main-navigation .eui-tab-item :active{background-color:var(--eui-c-active)}.eui-tabs .eui-tab-item:hover,.eui-tabs .eui-tab-item.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary{color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary.eui-tab-item--active,.eui-tabs .eui-tab-item--primary:hover{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--secondary{color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item--secondary.eui-tab-item--active,.eui-tabs .eui-tab-item--secondary:hover{border-bottom-color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-item--info{color:var(--eui-c-info)}.eui-tabs .eui-tab-item--info.eui-tab-item--active,.eui-tabs .eui-tab-item--info:hover{border-bottom-color:var(--eui-c-info)}.eui-tabs .eui-tab-item--success{color:var(--eui-c-success)}.eui-tabs .eui-tab-item--success.eui-tab-item--active,.eui-tabs .eui-tab-item--success:hover{border-bottom-color:var(--eui-c-success)}.eui-tabs .eui-tab-item--warning{color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--warning.eui-tab-item--active,.eui-tabs .eui-tab-item--warning:hover{border-bottom-color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--danger{color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--danger.eui-tab-item--active,.eui-tabs .eui-tab-item--danger:hover{border-bottom-color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--accent{color:var(--eui-c-accent-bg)}.eui-tabs .eui-tab-item--accent.eui-tab-item--active,.eui-tabs .eui-tab-item--accent:hover{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled{background:none}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary{background-color:var(--eui-c-primary);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary{background-color:var(--eui-c-neutral-bg-light);color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info{background-color:var(--eui-c-info);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success{background-color:var(--eui-c-success);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning{background-color:var(--eui-c-warning);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger{background-color:var(--eui-c-danger);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent{background-color:var(--eui-c-accent);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}\n'] }]
|
486
486
|
}], ctorParameters: () => [{ type: i04.ChangeDetectorRef }, { type: i12.Router }, { type: i2.AnimationBuilder }, { type: i04.ElementRef }], propDecorators: { elementClass: [{
|
487
487
|
type: HostBinding,
|
488
488
|
args: ["class"]
|