@fundamental-ngx/platform 0.49.2 → 0.49.3-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-platform-table.mjs","sources":["../../../../libs/platform/table/components/no-data-wrapper/no-data-wrapper.component.ts","../../../../libs/platform/table/components/reset-button/reset-button.component.ts","../../../../libs/platform/table/components/table-cell-header-popover/table-cell-header-popover.component.ts","../../../../libs/platform/table/components/table-cell-header-popover/table-cell-header-popover.component.html","../../../../libs/platform/table/components/table-column-resizer/table-column-resizer.component.ts","../../../../libs/platform/table/components/table-column/table-column.component.ts","../../../../libs/platform/table/components/table-header-cell-content/table-header-cell-content.component.ts","../../../../libs/platform/table/components/table-header-cell-content/table-header-cell-content.component.html","../../../../libs/platform/table/components/table-p13-dialog/columns/columns.component.ts","../../../../libs/platform/table/components/table-p13-dialog/columns/columns.component.html","../../../../libs/platform/table/components/table-p13-dialog/filtering/filtering.model.ts","../../../../libs/platform/table/components/table-p13-dialog/filtering/filter-rule.component.ts","../../../../libs/platform/table/components/table-p13-dialog/filtering/filter-rule.component.html","../../../../libs/platform/table/components/table-p13-dialog/filtering/filtering.component.ts","../../../../libs/platform/table/components/table-p13-dialog/filtering/filtering.component.html","../../../../libs/platform/table/components/table-p13-dialog/grouping/grouping.component.ts","../../../../libs/platform/table/components/table-p13-dialog/grouping/grouping.component.html","../../../../libs/platform/table/components/table-p13-dialog/table-p13-columns.component.ts","../../../../libs/platform/table/components/table-p13-dialog/table-p13-filter.component.ts","../../../../libs/platform/table/components/table-p13-dialog/table-p13-group.component.ts","../../../../libs/platform/table/components/table-p13-dialog/table-p13-sort.component.ts","../../../../libs/platform/table/components/table-p13-dialog/sorting/sorting.component.ts","../../../../libs/platform/table/components/table-p13-dialog/sorting/sorting.component.html","../../../../libs/platform/table/components/table-p13-dialog/table-p13-dialog.component.ts","../../../../libs/platform/table/components/table-toolbar/table-toolbar.ts","../../../../libs/platform/table/components/table-toolbar/table-toolbar-actions.component.ts","../../../../libs/platform/table/components/table-toolbar/table-toolbar-left-actions.component.ts","../../../../libs/platform/table/components/table-toolbar/table-toolbar.component.ts","../../../../libs/platform/table/components/table-toolbar/table-toolbar.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/constants.ts","../../../../libs/platform/table/components/table-view-settings-dialog/table-view-settings-filter.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-custom.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-custom.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-single-select.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-single-select.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filters-active-step.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-step.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-step.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filters-list-step.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filters-list-step.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filters.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filters.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/grouping/grouping.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/grouping/grouping.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/sorting/sorting.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/sorting/sorting.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/table-view-settings-dialog.component.ts","../../../../libs/platform/table/components/growing-button/table-growing-button.component.ts","../../../../libs/platform/table/components/growing-button/table-growing-button.component.html","../../../../libs/platform/table/components/table-group-row/table-group-row.component.ts","../../../../libs/platform/table/components/table-group-row/table-group-row.component.html","../../../../libs/platform/table/components/table-header-row/table-header-row.component.ts","../../../../libs/platform/table/components/table-header-row/table-header-row.component.html","../../../../libs/platform/table/components/table-popping-row/table-popping-row.component.ts","../../../../libs/platform/table/components/table-popping-row/table-popping-row.component.html","../../../../libs/platform/table/components/table-editable-cell/table-editable-cell.component.ts","../../../../libs/platform/table/components/table-editable-cell/table-editable-cell.component.html","../../../../libs/platform/table/components/table-row/table-row.component.ts","../../../../libs/platform/table/components/table-row/table-row.component.html","../../../../libs/platform/table/table.component.ts","../../../../libs/platform/table/table.component.html","../../../../libs/platform/table/table.module.ts","../../../../libs/platform/table/fundamental-ngx-platform-table.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fdp-table-no-data-wrapper',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class NoDataWrapperComponent {}\n","import { ChangeDetectionStrategy, Component, Inject, InjectionToken, Signal, ViewEncapsulation } from '@angular/core';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\n\n/**\n * Reset button.\n *\n * Used to reset resettable state by click.\n *\n */\n\nexport interface Resettable {\n reset: () => void;\n isResetAvailable$: Signal<boolean>;\n}\n\nexport const RESETTABLE_TOKEN = new InjectionToken<Resettable>('Resettable');\n\n@Component({\n selector: `fdp-table-reset-button`,\n template: `<button\n fd-button\n fdType=\"transparent\"\n [label]=\"'platformTable.resetChangesButtonLabel' | fdTranslate\"\n (click)=\"resettable.reset()\"\n [disabled]=\"!resettable.isResetAvailable$()\"\n ></button>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [ButtonComponent, FdTranslatePipe]\n})\nexport class ResetButtonComponent {\n /** @hidden */\n constructor(@Inject(RESETTABLE_TOKEN) public resettable: Resettable) {}\n}\n","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Input,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { FormControlComponent, FormItemComponent, FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { ListIconDirective, ListLinkDirective, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { PopoverComponent, TriggerConfig } from '@fundamental-ngx/core/popover';\nimport { TablePopoverDirective } from '@fundamental-ngx/core/table';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { FreeContentListItemComponent, ListComponent } from '@fundamental-ngx/platform/list';\nimport {\n CollectionStringFilter,\n FILTER_STRING_STRATEGY,\n FilterableColumnDataType,\n SortDirection,\n Table,\n TableColumn,\n TableService\n} from '@fundamental-ngx/platform/table-helpers';\nimport { startWith } from 'rxjs/operators';\n\n@Component({\n selector: 'fdp-table-cell-header-popover',\n templateUrl: './table-cell-header-popover.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n PopoverComponent,\n TablePopoverDirective,\n ListComponent,\n FreeContentListItemComponent,\n NgTemplateOutlet,\n TemplateDirective,\n ListLinkDirective,\n ListIconDirective,\n ListTitleDirective,\n FormItemComponent,\n FormLabelComponent,\n FormControlComponent,\n AsyncPipe,\n FdTranslatePipe\n ]\n})\nexport class TableCellHeaderPopoverComponent implements AfterViewInit {\n /** Column definition. */\n @Input()\n column: TableColumn;\n\n /** Custom popover template. */\n @Input()\n popoverTemplate: Nullable<TemplateRef<any>>;\n\n /** Whether the popover is disabled. */\n @Input()\n disabled = false;\n\n /** Whether the column is frozen. */\n @Input()\n columnFrozen = false;\n\n /** Whether the filtering from header is disabled. */\n @Input()\n filteringFromHeaderDisabled: Nullable<boolean> = false;\n\n /** Column index */\n @Input()\n columnIndex: number;\n\n /** @hidden */\n @ViewChild(PopoverComponent, { static: false })\n popover: Nullable<PopoverComponent>;\n\n /** @hidden */\n @ViewChildren(TemplateDirective)\n _popoverItems: QueryList<TemplateDirective>;\n\n /** @hidden */\n _popoverItems$ = signal<TemplateRef<any>[]>([]);\n\n /** @hidden */\n _headerPopoverTriggers: TriggerConfig[] = [\n {\n trigger: 'click',\n openAction: true,\n closeAction: true,\n stopPropagation: true\n },\n {\n trigger: 'keydown.enter',\n openAction: true,\n closeAction: true,\n stopPropagation: true\n },\n {\n trigger: 'keydown.space',\n openAction: true,\n closeAction: true,\n stopPropagation: true\n }\n ];\n\n /** @hidden */\n protected readonly SORT_DIRECTION = SortDirection;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _tableService = inject(TableService);\n\n /** @hidden */\n private readonly _table = inject(Table);\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._popoverItems.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._popoverItems$.set(this._popoverItems.map((t) => t.templateRef));\n });\n }\n\n /** @hidden */\n _setColumnHeaderSortBy(field: TableColumn['key'], direction: SortDirection): void {\n this._tableService.setSort([{ field, direction }]);\n this.popover?.close();\n }\n\n /** @hidden */\n _setColumnHeaderGroupBy(field: TableColumn['key']): void {\n const state = this._tableService.getTableState();\n if (state.groupBy?.length === 1 && state.groupBy[0].field === field) {\n // reset grouping, if already grouped by this field\n this._tableService.setGroups([]);\n } else {\n this._tableService.setGroups([{ field, direction: SortDirection.NONE, showAsColumn: true }]);\n }\n }\n\n /** @hidden */\n _setColumnHeaderFilterBy(field: TableColumn['key'], value: any): void {\n if (!value) {\n this._tableService.removeFilters([field]);\n return;\n }\n const collectionFilter: CollectionStringFilter = {\n field,\n value,\n type: FilterableColumnDataType.STRING,\n strategy: FILTER_STRING_STRATEGY.CONTAINS,\n exclude: false\n };\n\n this._tableService.addFilters([collectionFilter]);\n this.popover?.close();\n }\n\n /** @hidden */\n _freeze(): void {\n this._table.freezeToColumn(this.column.name, this.column.endFreezable);\n this.popover?.close();\n }\n\n /** @hidden */\n _unFreeze(): void {\n this._table.unfreeze(this.column.name, this.column.endFreezable);\n this.popover?.close();\n }\n}\n","@if (!popoverTemplate) {\n <fd-popover\n [disabled]=\"disabled\"\n [noArrow]=\"true\"\n fd-table-popover\n [focusAutoCapture]=\"true\"\n [focusTrapped]=\"true\"\n [triggers]=\"_headerPopoverTriggers\"\n >\n <fdp-list [noBorder]=\"true\" [navigated]=\"true\">\n @for (item of _popoverItems$(); track item) {\n <fdp-free-content-list-item>\n <ng-template\n [ngTemplateOutlet]=\"item\"\n [ngTemplateOutletContext]=\"{ popover: popover }\"\n ></ng-template>\n </fdp-free-content-list-item>\n }\n </fdp-list>\n </fd-popover>\n} @else {\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: _popoverItems$.asReadonly() }\"\n ></ng-template>\n}\n@if (column?.sortable) {\n <ng-template fdkTemplate=\"sortingAscPopoverItem\" let-popover=\"popover\">\n <a\n fd-list-link\n [focusable]=\"true\"\n (click)=\"_setColumnHeaderSortBy(column.key, SORT_DIRECTION.ASC)\"\n (keydown.enter)=\"_setColumnHeaderSortBy(column.key, SORT_DIRECTION.ASC)\"\n >\n <span fd-list-icon glyph=\"sort-ascending\"></span>\n <span fd-list-title>{{ 'platformTable.headerMenuSortAsc' | fdTranslate }}</span>\n </a>\n </ng-template>\n <ng-template fdkTemplate=\"sortingDescPopoverItem\" let-popover=\"popover\">\n <a\n fd-list-link\n [focusable]=\"true\"\n (click)=\"_setColumnHeaderSortBy(column.key, SORT_DIRECTION.DESC)\"\n (keydown.enter)=\"_setColumnHeaderSortBy(column.key, SORT_DIRECTION.DESC)\"\n >\n <span fd-list-icon glyph=\"sort-descending\"></span>\n <span fd-list-title>{{ 'platformTable.headerMenuSortDesc' | fdTranslate }}</span>\n </a>\n </ng-template>\n}\n@if (column?.groupable) {\n <ng-template fdkTemplate=\"groupPopoverItem\" let-popover=\"popover\">\n <a\n fd-list-link\n [focusable]=\"true\"\n (click)=\"_setColumnHeaderGroupBy(column.key)\"\n (keydown.enter)=\"_setColumnHeaderGroupBy(column.key)\"\n >\n <span fd-list-title>{{ 'platformTable.headerMenuGroup' | fdTranslate }}</span>\n </a>\n </ng-template>\n}\n@if (column?.freezable || column?.endFreezable) {\n <ng-template fdkTemplate=\"freezePopoverItem\" let-popover=\"popover\">\n @if (!columnFrozen) {\n <a fd-list-link [focusable]=\"true\" (click)=\"_freeze()\" (keyup.enter)=\"_freeze()\">\n <span fd-list-title>{{\n (!column.endFreezable\n ? columnIndex > 0\n ? 'platformTable.headerMenuFreezePlural'\n : 'platformTable.headerMenuFreeze'\n : 'platformTable.headerMenuEndFreeze'\n ) | fdTranslate\n }}</span>\n </a>\n } @else {\n <a fd-list-link [focusable]=\"true\" (click)=\"_unFreeze()\" (keyup.enter)=\"_unFreeze()\">\n <span fd-list-title>{{\n (columnIndex > 0 ? 'platformTable.headerMenuUnfreezePlural' : 'platformTable.headerMenuUnfreeze')\n | fdTranslate\n }}</span>\n </a>\n }\n </ng-template>\n}\n@if (column?.filterable && !filteringFromHeaderDisabled) {\n <ng-template fdkTemplate=\"filteringPopoverItem\" let-popover=\"popover\">\n <div fd-list-link [style.cursor]=\"'auto'\">\n <i fd-list-icon glyph=\"filter\"></i>\n <div fd-form-item [horizontal]=\"true\" (click)=\"$event.stopPropagation()\">\n <label fd-form-label [for]=\"'fdp-table-column-filtering-' + column.name\">{{\n 'platformTable.headerMenuFilter' | fdTranslate\n }}</label>\n <input\n fd-form-control\n [id]=\"'fdp-table-column-filtering-' + column.name\"\n (keydown.enter)=\"_setColumnHeaderFilterBy(column.key, $any($event.target)?.value)\"\n />\n </div>\n </div>\n </ng-template>\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n Inject,\n NgZone,\n OnInit,\n Optional,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\nimport { TableColumnResizeService } from '@fundamental-ngx/platform/table-helpers';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\n\n/** @dynamic */\n@Component({\n selector: `fdp-table-column-resizer`,\n template: ` <div class=\"fdp-table__resizer-inner\"></div>`,\n styleUrl: './table-column-resizer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'fdp-table-column-resizer'\n },\n standalone: true\n})\nexport class PlatformTableColumnResizerComponent implements OnInit {\n /** @hidden */\n private _pointerMoveListener: Subscription;\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _rtl$ = computed(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n constructor(\n private readonly _ngZone: NgZone,\n private readonly _tableColumnResizeService: TableColumnResizeService,\n private readonly _renderer: Renderer2,\n private readonly _elmRef: ElementRef,\n @Inject(DOCUMENT) private readonly _document: Document | null,\n @Optional() private readonly _rtlService: RtlService\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._ngZone.runOutsideAngular(() => {\n fromEvent<MouseEvent>(this._elmRef.nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((evt) => {\n this._tableColumnResizeService.startResize(evt);\n\n this._listenForMouseUp();\n });\n\n this._tableColumnResizeService.resizerPosition$\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((position) => {\n this._renderer.setStyle(this._elmRef.nativeElement, 'display', position > 0 ? 'block' : 'none');\n if (!position) {\n return;\n }\n this._renderer.setStyle(\n this._elmRef.nativeElement,\n 'left',\n this._rtl$() ? 'auto' : `${position}px`\n );\n this._renderer.setStyle(\n this._elmRef.nativeElement,\n 'right',\n !this._rtl$() ? 'auto' : `${position}px`\n );\n });\n\n this._tableColumnResizeService.resizeInProgress$\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((resizeInProgress) => {\n if (resizeInProgress) {\n this._renderer.addClass(this._elmRef.nativeElement, 'fdp-table-column-resizer--active');\n } else {\n this._renderer.removeClass(this._elmRef.nativeElement, 'fdp-table-column-resizer--active');\n }\n });\n });\n }\n\n /** @hidden */\n private _listenForMouseUp(): void {\n this._ngZone.runOutsideAngular(() => {\n this._pointerMoveListener?.unsubscribe();\n\n if (!this._document) {\n return;\n }\n this._pointerMoveListener = fromEvent<MouseEvent>(this._document, 'mouseup')\n .pipe(take(1), takeUntilDestroyed(this._destroyRef))\n .subscribe((event) => {\n this._tableColumnResizeService.finishResize(event);\n // this._cd.markForCheck();\n });\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Host,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n ColumnAlignValue,\n FdpCellDef,\n FdpColumnResponsiveState,\n FdpEditableCellDef,\n FdpHeaderCellDef,\n FilterableColumnDataType,\n TableCellHeaderPopoverDirective,\n TableColumn,\n TableColumnResizeService,\n TableService\n} from '@fundamental-ngx/platform/table-helpers';\n\n/**\n * The component that represents a table column.\n * ```html\n * <fdp-column\n * name=\"name\"\n * key=\"name\"\n * label=\"Name\"\n * align=\"start\">\n * </fdp-column>\n *\n * <fdp-column\n * name=\"price\"\n * key=\"price.value\">\n * <fdp-table-header *fdpHeaderCellDef>Price</fdp-table-header>\n * <fdp-table-cell *fdpCellDef=\"let item\">\n * {{item.price.value}} {{item.price.currency}}\n * </fdp-table-cell>\n * </fdp-column>\n * ```\n * */\n@Component({\n selector: 'fdp-column',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: TableColumn, useExisting: TableColumnComponent }],\n standalone: true\n})\nexport class TableColumnComponent extends TableColumn implements OnInit, OnChanges {\n /** Column unique identifier. */\n @Input()\n name: string;\n\n /** Column data accessor. */\n @Input()\n key: string;\n\n /** Column header label. */\n @Input()\n label: string;\n\n /** Cell text alignment. */\n @Input() align: ColumnAlignValue = 'start';\n\n /** Toggles sort feature for the column. */\n @Input()\n sortable = false;\n\n /** Toggles filter feature for the column. */\n @Input()\n filterable = false;\n\n /** Initial visibility state of the column. Default `true`. */\n @Input()\n visible = true;\n\n /**\n * Data type the column represents. Default is 'string'\n * @type { 'string' | 'number' | 'date' | 'boolean' }\n */\n @Input()\n dataType: FilterableColumnDataType = FilterableColumnDataType.STRING;\n\n /** Toggles grouping feature for the column. */\n @Input()\n groupable = false;\n\n /** Toggles freeze feature for the column. */\n @Input()\n freezable = false;\n\n /** Toggles freeze feature for the column. */\n @Input()\n endFreezable = false;\n\n /** Width of the column cells. */\n @Input()\n set width(value: string) {\n this._width = value;\n this._tableColumnResizeService.setCustomWidth(this.name, value);\n }\n get width(): string {\n return this._width;\n }\n\n /** Whether the text should wrap, when text is too long for 1 line */\n @Input()\n noWrap = false;\n\n /** Whether to apply fd-table-text (text-shadow) to the cell content, if disabled noWrap has no effect. */\n @Input()\n applyText = true;\n\n /** Column role attribute. */\n @Input()\n role: 'cell' | 'rowheader' | 'gridcell' = 'gridcell';\n\n /** Column cell template */\n columnCellTemplate: Nullable<TemplateRef<any>>;\n\n /** Editable column cell template. */\n editableColumnCellTemplate: Nullable<TemplateRef<any>>;\n\n /** Column header template */\n headerCellTemplate: Nullable<TemplateRef<any>>;\n\n /** Column header popover template. */\n headerCellPopoverTemplate: Nullable<TemplateRef<any>>;\n\n /** Stores information for the header cell if the ellipsis are visible after the column resize */\n headerOverflows = false;\n\n /** @hidden */\n _freezed = false;\n\n /** @hidden */\n _endFreezed = false;\n\n /** @hidden */\n @ContentChild(FdpCellDef)\n set fdpCellDef(fdpCellDef: Nullable<FdpCellDef>) {\n this.columnCellTemplate = fdpCellDef?.templateRef;\n }\n\n /** Editable column cell template definition. */\n @ContentChild(FdpEditableCellDef)\n set fdpEditableCellDef(fdpEditableCellDef: Nullable<FdpEditableCellDef>) {\n this.editableColumnCellTemplate = fdpEditableCellDef?.templateRef;\n }\n\n /** @hidden */\n @ContentChild(FdpHeaderCellDef)\n set fdpHeaderCellDef(fdpHeaderCellDef: Nullable<FdpHeaderCellDef>) {\n this.headerCellTemplate = fdpHeaderCellDef?.templateRef;\n }\n\n /** @hidden */\n @ContentChild(TableCellHeaderPopoverDirective)\n set fdpHeaderCellPopover(popover: Nullable<TableCellHeaderPopoverDirective>) {\n this.headerCellPopoverTemplate = popover?.templateRef;\n }\n\n /** Responsive state of the column. */\n responsiveState: FdpColumnResponsiveState = 'visible';\n\n /** @hidden */\n private _width: string;\n\n /** @hidden */\n constructor(\n private readonly _tableColumnResizeService: TableColumnResizeService,\n @Optional() @Host() private readonly _tableService?: TableService\n ) {\n super();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._validateNameOption();\n }\n\n /** Table won't know about column properties update so notify about it manually\n * @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (this._tableService && (changes.sortable || changes.filterable || changes.groupable || changes.freezable)) {\n this._tableService.markForCheck();\n }\n }\n\n /** @hidden */\n private _validateNameOption(): void {\n if (typeof this.name !== 'string') {\n throw Error('fdp-column: \"name\" option is required.');\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, computed, inject, signal } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { TableIconDirective } from '@fundamental-ngx/core/table';\nimport { SortDirection, TableColumn, TableService } from '@fundamental-ngx/platform/table-helpers';\n\n@Component({\n selector: 'fdp-table-header-cell-content',\n templateUrl: './table-header-cell-content.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\n `\n fdp-table-header-cell-content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-grow: 0;\n }\n fdp-table-header-cell-content .fd-table__text--no-wrap {\n width: 100%;\n }\n `\n ],\n standalone: true,\n imports: [NgTemplateOutlet, IconComponent, TableIconDirective]\n})\nexport class TableHeaderCellContentComponent {\n /** Table Id */\n @Input()\n id: string;\n\n /** Column reference. */\n @Input()\n set column(value: Nullable<TableColumn>) {\n this._column$.set(value);\n }\n\n get column(): Nullable<TableColumn> {\n return this._column$();\n }\n\n /** Whether column has applied sorting. */\n readonly hasSorting$ = computed(() => {\n const column = this._column$();\n return column && this._fdpTableService.sortRules$().has(column.key);\n });\n\n /** Whether column has applied filtering. */\n readonly hasFilter$ = computed(() => {\n const column = this._column$();\n return column && this._fdpTableService.filterRules$().has(column.key);\n });\n\n /** Applied sorting. */\n readonly sorting$ = computed(() => {\n const column = this._column$();\n return column && this._fdpTableService.sortRules$().get(column.key);\n });\n\n /** @hidden */\n readonly SORT_DIRECTION = SortDirection;\n\n /** @hidden */\n private readonly _column$ = signal<Nullable<TableColumn>>(null);\n\n /** @hidden */\n private readonly _fdpTableService = inject(TableService);\n}\n","<div class=\"fd-table__text--no-wrap\" [class.fd-table__inner]=\"hasSorting$() || hasFilter$()\">\n <ng-template\n [ngTemplateOutlet]=\"tableHeaderCellContentTemplate\"\n [ngTemplateOutletContext]=\"{ column: column }\"\n ></ng-template>\n @if (hasSorting$() || hasFilter$()) {\n <div class=\"fd-table__column-header-icons\">\n @if (hasFilter$()) {\n <fd-icon fd-table-icon glyph=\"filter\"></fd-icon>\n }\n @if (hasSorting$()) {\n <fd-icon\n fd-table-icon\n [ariaHidden]=\"true\"\n [glyph]=\"sorting$()?.direction === SORT_DIRECTION.ASC ? 'sort-ascending' : 'sort-descending'\"\n ></fd-icon>\n }\n </div>\n }\n</div>\n<ng-content></ng-content>\n<ng-template #tableHeaderCellContentTemplate let-column=\"column\">\n @if (column?.headerCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.headerCellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: column }\"\n ></ng-template>\n } @else {\n <span [id]=\"id + '-header-cell-' + column?.name\" class=\"fd-table__cell--truncate-txt\">\n {{ column?.label }}\n </span>\n }\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n signal\n} from '@angular/core';\nimport { TableDialogCommonData } from '@fundamental-ngx/platform/table-helpers';\nimport { BehaviorSubject, Subscription, combineLatest } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\nimport { SearchInput } from '@fundamental-ngx/platform/search-field';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { InitialFocusDirective, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { ListComponent, ListItemComponent, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { ToolbarComponent, ToolbarItemDirective, ToolbarSpacerDirective } from '@fundamental-ngx/core/toolbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchFieldComponent } from '@fundamental-ngx/platform/search-field';\nimport { RESETTABLE_TOKEN, ResetButtonComponent, Resettable } from '../../reset-button/reset-button.component';\n\nexport interface DialogTableColumn {\n label: string;\n key: string;\n}\n\ntype VisibleColumnType = string; // ColumnKey\n\nexport interface ColumnsDialogData extends TableDialogCommonData {\n availableColumns: DialogTableColumn[];\n visibleColumns: VisibleColumnType[];\n}\n\nexport interface ColumnsDialogResultData {\n visibleColumns: VisibleColumnType[];\n}\n\nclass SelectableColumn {\n constructor(\n /** Selected */\n public selected: boolean,\n /** Active */\n public active: boolean,\n /** Table Column it belongs to */\n public column: DialogTableColumn\n ) {}\n}\n\nconst INITIAL_SEARCH_TEXT = '';\nconst INITIAL_SHOW_ALL_ITEMS = true;\n\n@Component({\n templateUrl: './columns.component.html',\n styleUrl: './columns.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: P13ColumnsDialogComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n ToolbarComponent,\n SearchFieldComponent,\n ToolbarSpacerDirective,\n ButtonComponent,\n ToolbarItemDirective,\n ListComponent,\n ListItemComponent,\n CheckboxComponent,\n FormsModule,\n ListTitleDirective,\n DialogFooterComponent,\n ButtonBarComponent,\n AsyncPipe,\n FdTranslatePipe,\n InitialFocusDirective\n ]\n})\nexport class P13ColumnsDialogComponent implements Resettable, OnInit, OnDestroy {\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** Table columns available for grouping */\n readonly availableColumns: DialogTableColumn[] = [];\n\n /** All available columns for interacting */\n _selectableColumns: SelectableColumn[] = [];\n\n /** filtered columns that are rendered in the list */\n _filteredColumns: SelectableColumn[] = [];\n\n /** Search Query subject */\n _searchQuerySubject = new BehaviorSubject<string>(INITIAL_SEARCH_TEXT);\n /** Show All flag subject */\n _showAllItemsSubject = new BehaviorSubject<boolean>(INITIAL_SHOW_ALL_ITEMS);\n\n /** Selected columns count */\n _selectedColumnsCount = 0;\n\n /** Flag to track disabled state for move-down move-up buttons */\n _moveUpDisabled = true;\n /** Flag to track disabled state for move-down move-up buttons */\n _moveDownDisabled = true;\n\n /** @hidden */\n get _isShownAllItems(): boolean {\n return this._showAllItemsSubject.getValue();\n }\n\n /** @hidden */\n get _selectAllDisabled(): boolean {\n return !this._isShownAllItems || this._filteredColumns.length === 0;\n }\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(\n public dialogRef: DialogRef<ColumnsDialogData>,\n private cdr: ChangeDetectorRef\n ) {\n const { availableColumns, visibleColumns } = this.dialogRef.data;\n\n this.availableColumns = availableColumns?.map(({ label, key }) => ({ label, key })) || [];\n\n this._initiateColumns(visibleColumns);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenToFilterOptions();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** Reset to the initial state */\n reset(): void {\n this._initiateColumns(this.availableColumns.map((c) => c.key));\n this.isResetAvailable$.set(false);\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const visibleColumns = this._getVisibleColumnsFromSelectedColumns(this._selectableColumns);\n const result: ColumnsDialogResultData = { visibleColumns };\n this.dialogRef.close(result);\n }\n\n /** @hidden */\n _toggleSelectAll(selectAll: boolean): void {\n this._selectableColumns.forEach((column) => (column.selected = selectAll));\n this._onToggleColumn();\n }\n\n /** @hidden */\n _onToggleColumn(): void {\n this._countSelectedColumns();\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n _recalculateResetAvailability(): void {\n let resettable = false;\n if (this._selectedColumnsCount !== this.availableColumns.length) {\n // Initially all columns are selected. If not, reset should be active\n resettable = true;\n } else {\n // if all are selected, check for columns order to match the initial one\n for (let index = 0; index < this.availableColumns.length; index++) {\n if (this._selectableColumns[index].column.key !== this.availableColumns[index].key) {\n resettable = true;\n break;\n }\n }\n }\n this.isResetAvailable$.set(resettable);\n }\n\n /** @hidden */\n _searchInputChange({ text }: SearchInput): void {\n this._searchQuerySubject.next(text || '');\n }\n\n /** @hidden */\n _toggleShowAll(): void {\n const showAllItems = this._showAllItemsSubject.getValue();\n this._showAllItemsSubject.next(!showAllItems);\n }\n\n /** @hidden */\n _setActiveColumn(column: SelectableColumn | null): void {\n this._selectableColumns.map((_column) => {\n _column.active = _column === column;\n });\n\n this._calculateMovementButtonsState();\n }\n\n /** @hidden */\n _moveActiveToTop(): void {\n this._moveColumnInFilteredListByIndex(this._getActiveColumnIndexInFilteredList(), 0);\n }\n\n /** @hidden */\n _moveActiveToBottom(): void {\n this._moveColumnInFilteredListByIndex(\n this._getActiveColumnIndexInFilteredList(),\n this._filteredColumns.length - 1\n );\n }\n\n /** @hidden */\n _moveActiveUp(): void {\n const activeColumnIndex = this._getActiveColumnIndexInFilteredList();\n this._moveColumnInFilteredListByIndex(activeColumnIndex, activeColumnIndex - 1);\n }\n\n /** @hidden */\n _moveActiveDown(): void {\n const activeColumnIndex = this._getActiveColumnIndexInFilteredList();\n this._moveColumnInFilteredListByIndex(activeColumnIndex, activeColumnIndex + 1);\n }\n\n /** @hidden */\n _filterByColumnKy(index: number, item: SelectableColumn): string {\n return item?.column.key;\n }\n\n /**\n * @hidden\n * @param visibleColumnKeys keys of columns that should be displayed as selected.\n * Also, their order matters: it will be used\n */\n private _initiateColumns(visibleColumnKeys: string[]): void {\n const visibleColumnIndexMap = new Map(visibleColumnKeys.map((key, index) => [key, index]));\n this._selectableColumns = this.availableColumns\n .slice()\n // sorting columns in accordance with the order of visible columns\n .sort((a, b) => {\n const aIndex = visibleColumnIndexMap.get(a.key);\n const bIndex = visibleColumnIndexMap.get(b.key);\n if (aIndex === undefined || bIndex === undefined) {\n // preserving initial order of not selected column\n return 0;\n }\n return aIndex - bIndex;\n })\n .map(\n (column, index: number): SelectableColumn => ({\n column,\n selected: visibleColumnKeys.includes(column.key),\n active: index === 0\n })\n );\n\n // keep count of selected\n this._countSelectedColumns();\n\n this._recalculateResetAvailability();\n\n // reset filter settings settings\n this._searchQuerySubject.next(INITIAL_SEARCH_TEXT);\n this._showAllItemsSubject.next(INITIAL_SHOW_ALL_ITEMS);\n }\n\n /** @hidden */\n private _listenToFilterOptions(): void {\n this._subscriptions.add(\n combineLatest([this._showAllItemsSubject, this._searchQuerySubject])\n .pipe(debounceTime(20))\n .subscribe(([showAll, searchQuery]) => {\n this._filteredColumns = this._selectableColumns\n .filter((item) =>\n item.column.label.toLocaleLowerCase().includes(searchQuery.toLocaleLowerCase())\n )\n .filter((item) => showAll || item.selected);\n\n this._onChangeFilteredColumnsList();\n\n this.cdr.markForCheck();\n })\n );\n }\n\n /** @hidden */\n private _onChangeFilteredColumnsList(): void {\n this._calculateMovementButtonsState();\n }\n\n /** @hidden */\n private _getVisibleColumnsFromSelectedColumns(columns = this._selectableColumns): VisibleColumnType[] {\n return columns.filter(({ selected }) => selected).map(({ column }): VisibleColumnType => column.key);\n }\n\n /** @hidden */\n private _getActiveColumnIndexInFilteredList(): number {\n return this._filteredColumns.findIndex(({ active }) => active);\n }\n\n /** @hidden */\n private _moveColumnInFilteredListByIndex(from: number, to: number): void {\n const { movedItem, replacedItem } = this._moveElementInTheListByIndex(this._filteredColumns, from, to);\n /**\n * need to reflect analogical movement in the original list\n * with respect to the original list order\n */\n this._moveColumnInSelectableList(movedItem, replacedItem);\n\n this._calculateMovementButtonsState();\n\n this._recalculateResetAvailability();\n }\n\n /**\n * @hidden\n * Move column in selectable list.\n */\n private _moveColumnInSelectableList(itemToMove: SelectableColumn, targetItem: SelectableColumn): void {\n const list = this._selectableColumns;\n this._moveElementInTheListByIndex(list, list.indexOf(itemToMove), list.indexOf(targetItem));\n }\n\n /**\n * @hidden\n * Move element in the list\n * @return moved item and replaced item.\n */\n private _moveElementInTheListByIndex<T>(\n list: T[],\n fromIndex: number,\n toIndex: number\n ): { movedItem: T; replacedItem: T } {\n const listLength = list.length;\n\n fromIndex = Math.min(Math.max(fromIndex, 0), listLength - 1);\n toIndex = Math.min(Math.max(toIndex, 0), listLength - 1);\n\n const replacedItem = list[toIndex];\n const movedItem = list.splice(fromIndex, 1)[0];\n\n list.splice(toIndex, 0, movedItem);\n\n return { movedItem, replacedItem };\n }\n\n /** @hidden */\n private _countSelectedColumns(): void {\n this._selectedColumnsCount = this._selectableColumns.filter(({ selected }) => selected).length;\n }\n\n /** @hidden */\n private _calculateMovementButtonsState(): void {\n const activeIndex = this._getActiveColumnIndexInFilteredList();\n this._moveUpDisabled = activeIndex < 1;\n this._moveDownDisabled = activeIndex < 0 || activeIndex >= this._filteredColumns.length - 1;\n }\n}\n","<fd-dialog class=\"fdp-table-p13-columns-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.P13ColumnsDialogHeader' | fdTranslate }}\n </h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <fd-toolbar>\n <fdp-search-field\n [placeholder]=\"'platformTable.P13ColumnsDialogSearchPlaceholder' | fdTranslate\"\n [inputText]=\"(_searchQuerySubject | async) || ''\"\n [suggestions]=\"[]\"\n (inputChange)=\"_searchInputChange($event)\"\n fdkInitialFocus\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <!-- Show Selected/All -->\n <button fd-toolbar-item fd-button fdType=\"transparent\" (click)=\"_toggleShowAll()\">\n @if ((_showAllItemsSubject | async) === true) {\n {{ 'platformTable.P13ColumnsDialogsShowSelected' | fdTranslate }}\n } @else {\n {{ 'platformTable.P13ColumnsDialogShowAll' | fdTranslate }}\n }\n </button>\n <!-- Active Button Movement -->\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"collapse-group\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n (click)=\"_moveActiveToTop()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-up\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n (click)=\"_moveActiveUp()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-down\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n (click)=\"_moveActiveDown()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"expand-group\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n (click)=\"_moveActiveToBottom()\"\n ></button>\n </fd-toolbar>\n <ul fd-list [selection]=\"true\" aria-multiselectable=\"true\">\n <li\n fd-list-item\n (focus)=\"_setActiveColumn(null)\"\n [selected]=\"_selectedColumnsCount === _selectableColumns.length\"\n >\n <fd-checkbox\n [ngModel]=\"_selectedColumnsCount === _selectableColumns.length\"\n (ngModelChange)=\"_toggleSelectAll($event)\"\n [disabled]=\"_selectAllDisabled\"\n ></fd-checkbox>\n <span fd-list-title>\n {{\n 'platformTable.P13ColumnsDialogSelectAll'\n | fdTranslate\n : {\n selectedColumnsCount: _selectedColumnsCount,\n selectableColumnsCount: _selectableColumns.length\n }\n }}\n </span>\n </li>\n @for (item of _filteredColumns; track _filterByColumnKy($index, item)) {\n <li\n fd-list-item\n [class.fd-select-item--selected]=\"item.selected\"\n [selected]=\"item.selected\"\n [class.fd-select-item--active]=\"item.active\"\n (focus)=\"_setActiveColumn(item)\"\n >\n <fd-checkbox [(ngModel)]=\"item.selected\" (ngModelChange)=\"_onToggleColumn()\"></fd-checkbox>\n <span fd-list-title>\n {{ item.column.label }}\n </span>\n </li>\n }\n </ul>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13ColumnsDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13ColumnsDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import {\n CollectionFilter,\n FilterableColumnDataType,\n FilterStrategy,\n getFilterStrategiesBasedOnDataType,\n TableDialogCommonData\n} from '@fundamental-ngx/platform/table-helpers';\n\nexport interface FilterableColumn {\n label: string;\n key: string;\n dataType: FilterableColumnDataType;\n filterable?: boolean;\n}\n\nexport interface FilterDialogData extends TableDialogCommonData {\n collectionFilter: CollectionFilter[];\n columns: FilterableColumn[];\n validator?: ((rules: CollectionFilter[]) => boolean) | undefined;\n}\n\nexport interface FilterDialogResultData {\n collectionFilter: CollectionFilter[];\n}\n\n/**\n * Filter Rule\n *\n * represents one rule per row\n */\n\nexport class FilterRule<T = any> {\n /** Validation flg */\n isValid = false;\n\n /** Available strategies options */\n strategies: ReadonlyArray<FilterStrategy> = [];\n\n /** Data type */\n dataType?: FilterableColumnDataType;\n\n /** returns whether filter rule has value */\n get hasValue(): boolean {\n return this.valueExists(this.value) || this.valueExists(this.value2);\n }\n\n /** @hidden */\n constructor(\n readonly columns: ReadonlyArray<FilterableColumn>,\n /** Column key the rule belongs to */\n public columnKey?: string,\n /** Data type */\n public strategy?: FilterStrategy,\n /** Main filter value */\n public value?: T | null,\n /** Additional filter value */\n public value2?: T | null\n ) {\n if (!this.columnKey) {\n this.setColumnKey(columns[0]?.key);\n }\n if (!this.dataType) {\n this.setDataTypeByColumnKey(this.columnKey);\n }\n if (this.strategies.length === 0) {\n this.setStrategiesByColumnKey(this.columnKey);\n }\n }\n\n /** @hidden */\n setValid(isValid: boolean): void {\n this.isValid = isValid;\n }\n\n /** @hidden */\n setValue(value: T | null): void {\n this.value = value;\n }\n\n /** @hidden */\n setValue2(value: T | null): void {\n this.value2 = value;\n }\n\n /** @hidden */\n setStrategy(strategy: FilterStrategy): void {\n this.strategy = strategy;\n }\n\n /** @hidden */\n setStrategiesByColumnKey(columnKey?: string): void {\n const dataType = this.columns.find((column) => column.key === columnKey)?.dataType;\n if (!dataType) {\n return;\n }\n\n const strategies = getFilterStrategiesBasedOnDataType(dataType);\n\n if (this.strategies === strategies) {\n return;\n }\n\n this.strategies = strategies;\n\n if (!this.strategies.includes(this.strategy!)) {\n this.setStrategy(strategies[0]);\n }\n }\n\n /** @hidden */\n setColumnKey(columnKey: string): void {\n if (columnKey === this.columnKey) {\n return;\n }\n this.columnKey = columnKey;\n\n // reset values\n this.setValue(null);\n this.setValue2(null);\n\n // update data type\n this.setDataTypeByColumnKey(columnKey);\n\n // update available strategies list\n this.setStrategiesByColumnKey(columnKey);\n }\n\n /** @hidden */\n setDataTypeByColumnKey(columnKey?: string): void {\n const dataType = this.columns.find((column) => column.key === columnKey)?.dataType;\n\n if (dataType === this.dataType) {\n return;\n }\n\n this.dataType = dataType;\n }\n\n /** @hidden */\n private valueExists(value: any): boolean {\n return !!value || value === 0 || typeof value === 'boolean';\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormsModule, NgForm } from '@angular/forms';\nimport {\n FILTER_STRATEGY,\n FILTER_STRATEGY_LABEL,\n FilterableColumnDataType\n} from '@fundamental-ngx/platform/table-helpers';\nimport { Subscription } from 'rxjs';\nimport { skip } from 'rxjs/operators';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DatePickerComponent } from '@fundamental-ngx/core/date-picker';\nimport { FormControlComponent } from '@fundamental-ngx/core/form';\nimport { LayoutGridColDirective, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { FilterRule } from './filtering.model';\n\n@Component({\n selector: 'fdp-table-filter-rule',\n templateUrl: './filter-rule.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n LayoutGridRowDirective,\n LayoutGridColDirective,\n SelectComponent,\n FormsModule,\n OptionComponent,\n NgTemplateOutlet,\n DatePickerComponent,\n FormControlComponent,\n FdTranslatePipe\n ]\n})\nexport class FilterRuleComponent implements OnDestroy {\n /** Rule to be displayed **/\n @Input() rule: FilterRule;\n\n /** Emits when rule is changed */\n @Output() ruleChange: EventEmitter<void> = new EventEmitter();\n\n /** Emits when rule state is changed */\n @Output() ruleStateChange: EventEmitter<boolean> = new EventEmitter();\n\n /** @hidden */\n readonly FILTER_STRATEGY = FILTER_STRATEGY;\n\n /** @hidden */\n readonly DATA_TYPE = FilterableColumnDataType;\n\n /** @hidden */\n readonly strategyLabels = FILTER_STRATEGY_LABEL;\n\n /** @hidden */\n @ViewChild(NgForm)\n set ngForm(ngForm: NgForm) {\n if (!ngForm) {\n return;\n }\n this._subscriptions.add(\n ngForm.statusChanges\n ?.pipe(\n // Skip first that triggers on initial phase\n skip(1)\n )\n .subscribe(() => {\n const isValid = !!ngForm.valid;\n this.rule.setValid(isValid);\n this.ruleStateChange.emit(isValid);\n })\n );\n }\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n _onModelChange(): void {\n this.ruleChange.emit();\n }\n}\n","<div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow>\n <!-- Column -->\n <fd-select\n class=\"filter-row__select\"\n [ngModel]=\"rule.columnKey\"\n (ngModelChange)=\"rule.setColumnKey($event); _onModelChange()\"\n >\n @for (column of rule.columns; track column) {\n <li fd-option [value]=\"column.key\">{{ column.label }}</li>\n }\n </fd-select>\n </div>\n <div fdLayoutGridCol colGrow>\n <!-- Strategy -->\n <fd-select\n class=\"filter-row__select\"\n [ngModel]=\"rule.strategy\"\n (ngModelChange)=\"rule.setStrategy($event); _onModelChange()\"\n >\n @for (strategy of rule.strategies; track strategy) {\n <li fd-option [value]=\"strategy\">\n {{\n strategyLabels[strategy] || 'platformTable.P13FilterStrategyLabelNotDefined'\n | fdTranslate\n }}\n </li>\n }\n </fd-select>\n </div>\n </div>\n </div>\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow ngForm>\n @if (rule.strategy === FILTER_STRATEGY.BETWEEN) {\n <div fdLayoutGridCol colGrow>\n <ng-template\n [ngTemplateOutlet]=\"ruleInputTemplate\"\n [ngTemplateOutletContext]=\"{ valueKey: 'value' }\"\n ></ng-template>\n </div>\n <div fdLayoutGridCol colGrow>\n <ng-template\n [ngTemplateOutlet]=\"ruleInputTemplate\"\n [ngTemplateOutletContext]=\"{ valueKey: 'value2' }\"\n ></ng-template>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <ng-template\n [ngTemplateOutlet]=\"ruleInputTemplate\"\n [ngTemplateOutletContext]=\"{ valueKey: 'value' }\"\n ></ng-template>\n </div>\n }\n\n <!-- Rule Control Based on Data Type -->\n <ng-template #ruleInputTemplate let-valueKey=\"valueKey\">\n @if (rule.dataType === DATA_TYPE.DATE) {\n <fd-date-picker\n class=\"filter-row__input\"\n type=\"single\"\n [required]=\"true\"\n [name]=\"valueKey\"\n [(ngModel)]=\"rule[valueKey]\"\n (ngModelChange)=\"_onModelChange()\"\n ></fd-date-picker>\n } @else if (rule.dataType === DATA_TYPE.BOOLEAN) {\n <fd-select\n class=\"filter-row__select\"\n [name]=\"valueKey\"\n [(ngModel)]=\"rule[valueKey]\"\n (ngModelChange)=\"_onModelChange()\"\n [required]=\"true\"\n >\n <li fd-option [value]=\"undefined\">\n {{ 'platformTable.P13FilterBooleanOptionNotDefined' | fdTranslate }}\n </li>\n <li fd-option [value]=\"true\">\n {{ 'platformTable.P13FilterBooleanOptionTrue' | fdTranslate }}\n </li>\n <li fd-option [value]=\"false\">\n {{ 'platformTable.P13FilterBooleanOptionFalse' | fdTranslate }}\n </li>\n </fd-select>\n } @else {\n <input\n type=\"text\"\n class=\"filter-row__input\"\n fd-form-control\n required\n [name]=\"valueKey\"\n [(ngModel)]=\"rule[valueKey]\"\n (ngModelChange)=\"_onModelChange()\"\n />\n }\n </ng-template>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, signal } from '@angular/core';\nimport { CollectionFilter } from '@fundamental-ngx/platform/table-helpers';\n\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\n\nimport { RESETTABLE_TOKEN, ResetButtonComponent, Resettable } from '../../reset-button/reset-button.component';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';\nimport { PanelComponent, PanelContentDirective, PanelTitleDirective } from '@fundamental-ngx/core/panel';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { FilterRuleComponent } from './filter-rule.component';\nimport { FilterDialogData, FilterDialogResultData, FilterRule, FilterableColumn } from './filtering.model';\n\nexport { FilterDialogData, FilterDialogResultData };\n\n@Component({\n templateUrl: './filtering.component.html',\n styleUrl: './filtering.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: P13FilteringDialogComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n PanelComponent,\n PanelTitleDirective,\n PanelContentDirective,\n LayoutGridComponent,\n LayoutGridRowDirective,\n FilterRuleComponent,\n LayoutGridColDirective,\n ButtonComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe\n ]\n})\nexport class P13FilteringDialogComponent implements Resettable {\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** Table columns available for filtering */\n readonly columns: FilterableColumn[] = [];\n\n /**\n * @hidden\n * Include Rules\n */\n _includeRules: FilterRule[] = [];\n\n /**\n * @hidden\n * Exclude Rules\n */\n _excludeRules: FilterRule[] = [];\n\n /**\n * @hidden\n * Count of valid included rules\n */\n _validIncludeRulesCount = 0;\n\n /**\n * @hidden\n * Count of valid excluded rules\n */\n _validExcludeRulesCount = 0;\n\n /**\n * @hidden\n * Panel opened/closed flag\n */\n _includePanelExpanded = true;\n\n /**\n * @hidden\n * Panel opened/closed flag\n */\n _excludePanelExpanded = false;\n\n /** @hidden */\n constructor(public dialogRef: DialogRef<FilterDialogData>) {\n const { columns, collectionFilter } = this.dialogRef.data;\n\n this.columns = columns.filter((column) => column.filterable) || [];\n\n this._initiateRules(collectionFilter);\n\n this._calculateValidRulesCount();\n\n this._excludePanelExpanded = this._validExcludeRulesCount > 0;\n\n this._recalculateResetAvailability();\n }\n\n /** Reset changes to the initial state */\n reset(): void {\n this._initiateRules();\n this.isResetAvailable$.set(false);\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const includeFilters = this._getCollectionFiltersFromIncludeRules();\n const excludeFilters = this._getCollectionFiltersFromExcludeRules();\n const validator = this.dialogRef.data.validator;\n const combinedFilters = [...includeFilters, ...excludeFilters];\n\n if (!validator || validator(combinedFilters)) {\n const result: FilterDialogResultData = { collectionFilter: combinedFilters };\n\n this.dialogRef.close(result);\n }\n }\n\n /** @hidden */\n _removeRule(rule: FilterRule, rules: FilterRule[]): void {\n const index = rules.indexOf(rule);\n\n if (index === -1) {\n return;\n }\n\n rules.splice(index, 1);\n\n // Keep at least one item in the list\n if (rules.length === 0) {\n rules.push(new FilterRule(this.columns));\n }\n\n this._recalculateResetAvailability();\n\n this._calculateValidRulesCount();\n }\n\n /** @hidden */\n _addNewRule(rules: FilterRule[]): void {\n const lastRule = rules.slice(-1)[0];\n rules.push(new FilterRule(this.columns, lastRule?.columnKey, lastRule?.strategy));\n }\n\n /** @hidden */\n _recalculateResetAvailability(): void {\n const hasOnlyOneEmptyIncludeRule = this._includeRules.length === 1 && !this._includeRules[0].hasValue;\n const hasOnlyOneEmptyExcludeRule = this._excludeRules.length === 1 && !this._excludeRules[0].hasValue;\n this.isResetAvailable$.set(!hasOnlyOneEmptyIncludeRule || !hasOnlyOneEmptyExcludeRule);\n }\n\n /** @hidden */\n _onRuleStateChange(): void {\n this._calculateValidRulesCount();\n }\n\n /** @hidden */\n private _initiateRules(initialRules?: CollectionFilter[]): void {\n this._includeRules = this._createRules(initialRules?.filter(({ exclude }) => !exclude));\n this._excludeRules = this._createRules(initialRules?.filter(({ exclude }) => exclude));\n\n [this._includeRules, this._excludeRules].forEach((rules) => {\n // Rules on initial phase are considered as valid\n rules.forEach((rule) => rule.setValid(true));\n // Keep at least one item in the list\n if (rules.length === 0) {\n rules.push(new FilterRule(this.columns));\n }\n });\n }\n\n /** @hidden */\n private _createRules(collectionFilter: CollectionFilter[] = []): FilterRule[] {\n return collectionFilter.map(\n ({ field, value, value2, strategy }): FilterRule =>\n new FilterRule(this.columns, field, strategy, value, value2)\n );\n }\n\n /** @hidden */\n private _getCollectionFiltersFromRules(rules: FilterRule[]): CollectionFilter[] {\n return rules.filter(this._isRuleValid).map(\n ({ columnKey, strategy, value, value2 }): CollectionFilter => ({\n field: columnKey!,\n value,\n value2,\n strategy: strategy!\n })\n );\n }\n\n /** @hidden */\n private _getCollectionFiltersFromIncludeRules(): CollectionFilter[] {\n return this._getCollectionFiltersFromRules(this._includeRules).map(\n (collectionFilter): CollectionFilter => ({\n ...collectionFilter,\n exclude: false\n })\n );\n }\n\n /** @hidden */\n private _getCollectionFiltersFromExcludeRules(): CollectionFilter[] {\n return this._getCollectionFiltersFromRules(this._excludeRules).map(\n (collectionFilter): CollectionFilter => ({\n ...collectionFilter,\n exclude: true\n })\n );\n }\n\n /** @hidden */\n private _calculateValidRulesCount = (): void => {\n this._validIncludeRulesCount = this._includeRules.filter(this._isRuleValid).length;\n this._validExcludeRulesCount = this._excludeRules.filter(this._isRuleValid).length;\n };\n\n /** @hidden */\n private _isRuleValid = (rule: FilterRule): boolean => rule?.isValid;\n}\n","<fd-dialog class=\"fdp-table-p13-filtering-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.P13FilterDialogHeader' | fdTranslate }}</h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <!-- Include Rules -->\n <fd-panel [expanded]=\"_includePanelExpanded\">\n <div fd-panel-title>\n {{\n (_validIncludeRulesCount > 0\n ? 'platformTable.P13FilterDialogIncludePanelTitleWithCount'\n : 'platformTable.P13FilterDialogIncludePanelTitleWithoutCount'\n ) | fdTranslate: { count: _validIncludeRulesCount }\n }}\n </div>\n <div fd-panel-content>\n @for (rule of _includeRules; track rule) {\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <fdp-table-filter-rule\n [fdLayoutGridCol]=\"10\"\n [rule]=\"rule\"\n (ruleChange)=\"_recalculateResetAvailability()\"\n (ruleStateChange)=\"_onRuleStateChange()\"\n ></fdp-table-filter-rule>\n <!-- Actions buttons -->\n <div [fdLayoutGridCol]=\"2\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"\n 'platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate\n \"\n [title]=\"'platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate\"\n (click)=\"_removeRule(rule, _includeRules)\"\n ></button>\n @if (_includeRules.length - 1 === $index) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"\n 'platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate\n \"\n [title]=\"'platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate\"\n (click)=\"_addNewRule(_includeRules)\"\n ></button>\n }\n </div>\n </div>\n </fd-layout-grid>\n }\n </div>\n </fd-panel>\n <!-- Exclude Rules -->\n <fd-panel [expanded]=\"_excludePanelExpanded\">\n <div fd-panel-title>\n {{\n (_validExcludeRulesCount > 0\n ? 'platformTable.P13FilterDialogExcludePanelTitleWithCount'\n : 'platformTable.P13FilterDialogExcludePanelTitleWithoutCount'\n ) | fdTranslate: { count: _validExcludeRulesCount }\n }}\n </div>\n <div fd-panel-content>\n @for (rule of _excludeRules; track rule) {\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <fdp-table-filter-rule\n [fdLayoutGridCol]=\"10\"\n [rule]=\"rule\"\n (ruleChange)=\"_recalculateResetAvailability()\"\n (ruleStateChange)=\"_onRuleStateChange()\"\n ></fdp-table-filter-rule>\n <!-- Actions buttons -->\n <div [fdLayoutGridCol]=\"2\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"\n 'platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate\n \"\n [title]=\"'platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate\"\n (click)=\"_removeRule(rule, _excludeRules)\"\n ></button>\n @if (_excludeRules.length - 1 === $index) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"\n 'platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate\n \"\n [title]=\"'platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate\"\n (click)=\"_addNewRule(_excludeRules)\"\n ></button>\n }\n </div>\n </div>\n </fd-layout-grid>\n }\n </div>\n </fd-panel>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13FilterDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13FilterDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, signal } from '@angular/core';\nimport {\n CollectionGroup,\n SortDirection,\n TableDialogCommonData,\n getUniqueListValuesByKey\n} from '@fundamental-ngx/platform/table-helpers';\n\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { FormsModule } from '@angular/forms';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { RESETTABLE_TOKEN, ResetButtonComponent, Resettable } from '../../reset-button/reset-button.component';\n\nexport interface GroupDialogColumn {\n label: string;\n key: string;\n}\n\nexport interface GroupDialogData extends TableDialogCommonData {\n collectionGroup: CollectionGroup[];\n columns: GroupDialogColumn[];\n}\n\nexport interface GroupDialogResultData {\n collectionGroup: CollectionGroup[];\n}\n\nconst NOT_SELECTED_OPTION_VALUE = null;\n\nclass GroupRule {\n get isValid(): boolean {\n return this.columnKey !== NOT_SELECTED_OPTION_VALUE;\n }\n\n constructor(\n /** Column key the rule belongs to */\n public columnKey: string | null = NOT_SELECTED_OPTION_VALUE,\n /** Show Field as Column */\n public showAsColumn = true\n ) {}\n}\n\n@Component({\n templateUrl: './grouping.component.html',\n styleUrl: './grouping.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: P13GroupingDialogComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n SelectComponent,\n OptionComponent,\n CheckboxComponent,\n FormsModule,\n ButtonComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe\n ]\n})\nexport class P13GroupingDialogComponent implements Resettable {\n /** Table columns available for grouping */\n readonly columns: GroupDialogColumn[] = [];\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** Group rules to render */\n rules: GroupRule[] = [];\n\n /** @hidden */\n constructor(public dialogRef: DialogRef<GroupDialogData>) {\n const { columns, collectionGroup } = this.dialogRef.data;\n\n this.columns = columns || [];\n\n this._initiateRules(collectionGroup);\n }\n\n /** Reset changes to the initial state */\n reset(): void {\n this._initiateRules();\n this.isResetAvailable$.set(false);\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const collectionGroup = this._getCollectionGroupFromGroupRules(this._getUniqueRules(this.rules));\n const result: GroupDialogResultData = { collectionGroup };\n this.dialogRef.close(result);\n }\n\n /** @hidden */\n _recalculateResetAvailability(): void {\n const hasOnlyOneEmptyRule = this.rules.length === 1 && !this.rules[0].isValid;\n this.isResetAvailable$.set(!hasOnlyOneEmptyRule);\n }\n\n /** @hidden */\n _removeRule(rule: GroupRule): void {\n this.rules = this.rules.filter((_rule) => _rule !== rule);\n\n // Keep at least one item in the list\n if (this.rules.length === 0) {\n this.rules.push(new GroupRule());\n }\n\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n _addNew(index: number): void {\n this.rules.splice(index + 1, 0, new GroupRule());\n }\n\n /** @hidden */\n _onRuleColumnKeyChange(rule: GroupRule, columnKey: string): void {\n rule.columnKey = columnKey;\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n _onRuleShowAsColumnChange(rule: GroupRule, value: boolean): void {\n rule.showAsColumn = value;\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n private _initiateRules(collectionGroup?: CollectionGroup[]): void {\n this.rules = this._createGroupRules(collectionGroup);\n\n // Keep at least one item in the list\n if (this.rules.length === 0) {\n this.rules.push(new GroupRule());\n }\n\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n private _createGroupRules(collectionGroup: CollectionGroup[] = []): GroupRule[] {\n return collectionGroup.map(({ field, showAsColumn }): GroupRule => new GroupRule(field, showAsColumn));\n }\n\n /** @hidden */\n private _getCollectionGroupFromGroupRules(rules = this.rules): CollectionGroup[] {\n return rules.filter(this._isRuleValid).map(\n ({ columnKey, showAsColumn }): CollectionGroup => ({\n field: columnKey!,\n showAsColumn,\n direction: SortDirection.NONE\n })\n );\n }\n\n /** @hidden */\n private _getUniqueRules(rules: GroupRule[]): GroupRule[] {\n return getUniqueListValuesByKey(rules, 'columnKey');\n }\n\n /** @hidden */\n private _isRuleValid = (rule: GroupRule): boolean => rule?.isValid;\n}\n","<fd-dialog class=\"fdp-table-p13-grouping-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.P13GroupDialogHeader' | fdTranslate }}</h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n @for (rule of rules; track rule) {\n <div class=\"group-row\">\n <fd-select\n class=\"group-row__select\"\n [value]=\"rule.columnKey\"\n (valueChange)=\"_onRuleColumnKeyChange(rule, $event)\"\n [placeholder]=\"'platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder' | fdTranslate\"\n >\n @for (column of columns; track column) {\n <li fd-option [value]=\"column.key\">\n {{ column.label }}\n </li>\n }\n </fd-select>\n\n <fd-checkbox\n class=\"group-row__checkbox\"\n [ngModel]=\"rule.showAsColumn\"\n (ngModelChange)=\"_onRuleShowAsColumnChange(rule, $event)\"\n [label]=\"'platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel' | fdTranslate\"\n ></fd-checkbox>\n\n <div class=\"group-row__actions\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"'platformTable.P13GroupDialogRemoveGroupBtnTitle' | fdTranslate\"\n [title]=\"'platformTable.P13GroupDialogRemoveGroupBtnTitle' | fdTranslate\"\n (click)=\"_removeRule(rule)\"\n ></button>\n\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"'platformTable.P13GroupDialogAddNewGroupBtnTitle' | fdTranslate\"\n [title]=\"'platformTable.P13GroupDialogAddNewGroupBtnTitle' | fdTranslate\"\n (click)=\"_addNew($index)\"\n ></button>\n </div>\n </div>\n }\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13GroupDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13GroupDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Personalization Dialog Columns Settings.\n *\n */\n@Component({\n selector: 'fdp-table-p13-columns',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableP13ColumnsComponent {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CollectionFilter } from '@fundamental-ngx/platform/table-helpers';\n\n/**\n * Personalization Dialog Filter Settings.\n */\n@Component({\n selector: 'fdp-table-p13-filter',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableP13FilterComponent {\n /**\n * Function for handling validation of the filter rules in the table personalization dialog.\n */\n @Input()\n validator: ((rules: CollectionFilter[]) => boolean) | undefined;\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Personalization Dialog Group Settings.\n *\n */\n@Component({\n selector: 'fdp-table-p13-group',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableP13GroupComponent {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Personalization Dialog Sort Settings.\n *\n */\n@Component({\n selector: 'fdp-table-p13-sort',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableP13SortComponent {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Pipe,\n PipeTransform,\n ViewEncapsulation,\n forwardRef,\n signal\n} from '@angular/core';\nimport {\n CollectionSort,\n SortDirection,\n TableDialogCommonData,\n getUniqueListValuesByKey\n} from '@fundamental-ngx/platform/table-helpers';\n\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { DisabledBehaviorDirective, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { RESETTABLE_TOKEN, ResetButtonComponent, Resettable } from '../../reset-button/reset-button.component';\n\nexport interface SortDialogColumn {\n label: string;\n key: string;\n}\n\nexport interface SortDialogData extends TableDialogCommonData {\n collectionSort: CollectionSort[];\n columns: SortDialogColumn[];\n}\n\nexport interface SortDialogResultData {\n collectionSort: CollectionSort[];\n}\n\nexport interface SortRule {\n columnKey: string | null;\n direction: SortDirection;\n}\n\nconst NOT_SELECTED_OPTION_VALUE = null;\n\nclass ValidatedSortRule implements SortRule {\n get isValid(): boolean {\n return this.columnKey !== NOT_SELECTED_OPTION_VALUE && this.direction !== NOT_SELECTED_OPTION_VALUE;\n }\n\n constructor(\n /** Column key the rule belongs to */\n public columnKey: string | null = NOT_SELECTED_OPTION_VALUE,\n /** Sort direction */\n public direction: SortDirection = SortDirection.ASC\n ) {}\n}\n\n@Component({\n templateUrl: './sorting.component.html',\n styleUrl: './sorting.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: P13SortingDialogComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n SelectComponent,\n OptionComponent,\n ButtonComponent,\n DisabledBehaviorDirective,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe,\n forwardRef(() => GetAvailableSortColumnsPipe)\n ]\n})\nexport class P13SortingDialogComponent implements Resettable {\n /** Table columns available for sorting */\n readonly columns: SortDialogColumn[] = [];\n\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** @hidden */\n readonly SORT_DIRECTION = SortDirection;\n\n /** Sort rules to render */\n rules: ValidatedSortRule[] = [];\n\n /** @hidden */\n constructor(\n public dialogRef: DialogRef<SortDialogData>,\n private cdr: ChangeDetectorRef\n ) {\n const { columns, collectionSort } = this.dialogRef.data;\n\n this.columns = columns || [];\n\n this._initiateRules(collectionSort);\n }\n\n /** Reset changes to the initial state */\n reset(): void {\n this._initiateRules();\n this.isResetAvailable$.set(false);\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const collectionSort = this._getCollectionSortFromSortRules(this._getUniqueRules(this.rules));\n const result: SortDialogResultData = { collectionSort };\n this.dialogRef.close(result);\n }\n\n /** @hidden */\n _removeRule(rule: ValidatedSortRule): void {\n this.rules = this.rules.filter((_rule) => _rule !== rule);\n\n // Keep at least one item in the list\n if (this.rules.length === 0) {\n this.rules.push(new ValidatedSortRule());\n }\n\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n _addNew(index: number): void {\n this.rules.splice(index + 1, 0, new ValidatedSortRule());\n }\n\n /** @hidden */\n _onRuleColumnKeyChange(rule: ValidatedSortRule, columnKey: string): void {\n rule.columnKey = columnKey;\n this._recalculateResetAvailability();\n this.cdr.detectChanges();\n }\n\n /** @hidden */\n _onRuleDirectionChange(rule: ValidatedSortRule, direction: SortDirection): void {\n rule.direction = direction;\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n _recalculateResetAvailability(): void {\n const hasOnlyOneEmptyRule = this.rules.length === 1 && !this.rules[0].isValid;\n this.isResetAvailable$.set(!hasOnlyOneEmptyRule);\n }\n\n /** @hidden */\n _trackByColumnKey(index: number, rule: ValidatedSortRule): string | null {\n return rule.columnKey;\n }\n\n /** @hidden */\n private _initiateRules(collectionSort?: CollectionSort[]): void {\n this.rules = this._createRules(collectionSort);\n\n // Keep at least one item in the list\n if (this.rules.length === 0) {\n this.rules.push(new ValidatedSortRule());\n }\n\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n private _createRules(collectionSort: CollectionSort[] = []): ValidatedSortRule[] {\n return collectionSort.map(({ field, direction }): ValidatedSortRule => new ValidatedSortRule(field, direction));\n }\n\n /** @hidden */\n private _getCollectionSortFromSortRules(rules = this.rules): CollectionSort[] {\n return rules.filter(this._isRuleValid).map(\n ({ columnKey, direction }): CollectionSort => ({\n field: columnKey,\n direction\n })\n );\n }\n\n /** @hidden */\n private _getUniqueRules(rules: ValidatedSortRule[]): ValidatedSortRule[] {\n return getUniqueListValuesByKey(rules, 'columnKey');\n }\n\n /** @hidden */\n private _isRuleValid = (rule: ValidatedSortRule): boolean => rule?.isValid;\n}\n\n@Pipe({\n name: 'getAvailableSortColumns',\n pure: false,\n standalone: true\n})\nexport class GetAvailableSortColumnsPipe implements PipeTransform {\n /** @hidden */\n transform(columns: SortDialogColumn[], rules: SortRule[], currentKey: string | null): SortDialogColumn[] {\n const usedKeys = new Set(rules.map((r) => r.columnKey));\n return columns.filter((c) => !usedKeys.has(c.key) || currentKey === c.key);\n }\n}\n","<fd-dialog class=\"fdp-table-p13-sorting-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.P13SortDialogHeader' | fdTranslate }}\n </h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n @for (rule of rules; track _trackByColumnKey(i, rule); let i = $index) {\n <div class=\"sort-row\">\n <fd-select\n class=\"sort-row__select\"\n [value]=\"rule.columnKey\"\n (valueChange)=\"_onRuleColumnKeyChange(rule, $event)\"\n [placeholder]=\"'platformTable.P13SortDialogNoneSelectedColumn' | fdTranslate\"\n >\n @for (column of columns | getAvailableSortColumns: rules : rule.columnKey; track column) {\n <li fd-option [value]=\"column.key\">\n {{ column.label }}\n </li>\n }\n </fd-select>\n <fd-select\n class=\"sort-row__select\"\n [value]=\"rule.direction\"\n (valueChange)=\"_onRuleDirectionChange(rule, $event)\"\n [placeholder]=\"'platformTable.P13SortDialogNoneSelectedSorting' | fdTranslate\"\n >\n <li fd-option [value]=\"SORT_DIRECTION.ASC\">\n {{ 'platformTable.P13SortDialogSortOrderSelectOptionAsc' | fdTranslate }}\n </li>\n <li fd-option [value]=\"SORT_DIRECTION.DESC\">\n {{ 'platformTable.P13SortDialogSortOrderSelectOptionDesc' | fdTranslate }}\n </li>\n </fd-select>\n <div class=\"sort-row__actions\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"'platformTable.P13SortDialogRemoveSortBtnTitle' | fdTranslate\"\n [title]=\"'platformTable.P13SortDialogRemoveSortBtnTitle' | fdTranslate\"\n (click)=\"_removeRule(rule)\"\n ></button>\n <button\n fd-button\n [fdkDisabled]=\"rules.length === columns.length\"\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"'platformTable.P13SortDialogAddNewSortBtnTitle' | fdTranslate\"\n [title]=\"'platformTable.P13SortDialogAddNewSortBtnTitle' | fdTranslate\"\n (click)=\"_addNew(i)\"\n ></button>\n </div>\n </div>\n }\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13SortDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13SortDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { DialogConfig, DialogService } from '@fundamental-ngx/core/dialog';\n\nimport {\n CollectionFilter,\n CollectionGroup,\n CollectionSort,\n Table,\n TableColumn,\n TableState\n} from '@fundamental-ngx/platform/table-helpers';\n\nimport { TableP13ColumnsComponent } from './table-p13-columns.component';\nimport { TableP13FilterComponent } from './table-p13-filter.component';\nimport { TableP13GroupComponent } from './table-p13-group.component';\nimport { TableP13SortComponent } from './table-p13-sort.component';\n\nimport { ColumnsDialogData, ColumnsDialogResultData, P13ColumnsDialogComponent } from './columns/columns.component';\nimport { FilterDialogData, FilterDialogResultData, P13FilteringDialogComponent } from './filtering/filtering.component';\nimport { GroupDialogData, GroupDialogResultData, P13GroupingDialogComponent } from './grouping/grouping.component';\nimport { P13SortingDialogComponent, SortDialogData, SortDialogResultData } from './sorting/sorting.component';\n\nconst dialogConfig: DialogConfig = {\n responsivePadding: true,\n verticalPadding: true,\n minWidth: '30rem',\n /** 88px it's the header + footer height */\n bodyMinHeight: 'calc(50vh - 88px)'\n};\n\n/**\n * View settings dialog component.\n *\n * Used to link view settings filters options to the grid table.\n *\n * ```html\n * <fdp-table #myTable></fdp-table>\n * ...\n * <fdp-table-p13-dialog [table]=\"myTable\">\n * <!-- Sort Panel -->\n * <fdp-table-p13-sort></fdp-table-p13-sort>\n *\n * <!-- Filter Panel -->\n * <fdp-table-p13-filter></fdp-table-p13-filter>\n *\n * <!-- Group Panel -->\n * <fdp-table-p13-group></fdp-table-p13-group>\n *\n * <!-- Columns Panel -->\n * <fdp-table-p13-columns></fdp-table-p13-columns>\n * </fdp-table-p13-dialog>\n * ```\n * */\n@Component({\n selector: 'fdp-table-p13-dialog',\n template: '',\n styles: [\n `\n :host {\n z-index: 999;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class TableP13DialogComponent implements OnDestroy {\n /** Reference to table component. */\n @Input()\n set table(table: Table) {\n this._setTable(table);\n }\n get table(): Table {\n return this._table;\n }\n\n /** @hidden */\n @ContentChild(TableP13SortComponent)\n sort: TableP13SortComponent;\n\n /** @hidden */\n @ContentChild(TableP13FilterComponent)\n filter: TableP13FilterComponent;\n\n /** @hidden */\n @ContentChild(TableP13GroupComponent)\n group: TableP13GroupComponent;\n\n /** @hidden */\n @ContentChild(TableP13ColumnsComponent)\n columns: TableP13ColumnsComponent;\n\n /** @hidden */\n _table: Table;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _tableSubscriptions = new Subscription();\n\n /** @hidden */\n constructor(private readonly _dialogService: DialogService) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._unsubscribeFromTable();\n }\n\n /** Open Sort Settings Dialog */\n showSortingSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns().filter(({ sortable }) => sortable);\n const sortBy = state.sortBy;\n const dialogData: SortDialogData = {\n columns: columns.map(({ label, key }) => ({ label, key })),\n collectionSort: sortBy\n };\n\n const dialogRef = this._dialogService.open(\n P13SortingDialogComponent,\n {\n ...dialogConfig,\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ collectionSort }: SortDialogResultData) => {\n this._applySorting(collectionSort);\n })\n );\n }\n\n /** Open Filtering Settings Dialog */\n showFilteringSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns();\n const filterBy = state?.filterBy;\n const dialogData: FilterDialogData = {\n columns: columns.map(({ label, key, dataType, filterable }) => ({ label, key, dataType, filterable })),\n collectionFilter: filterBy,\n validator: this.filter.validator\n };\n\n const dialogRef = this._dialogService.open(\n P13FilteringDialogComponent,\n {\n ...dialogConfig,\n disablePaddings: true,\n width: '50rem',\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ collectionFilter }: FilterDialogResultData) => {\n this._applyFiltering(collectionFilter);\n })\n );\n }\n\n /** Open Grouping Settings Dialog */\n showGroupingSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns();\n const visibleColumns = state.columns;\n const groupBy = state.groupBy;\n const dialogData: GroupDialogData = {\n columns: columns\n // We can group by visible columns only\n .filter(({ name }) => visibleColumns.includes(name))\n .filter(({ groupable }) => groupable)\n .map(({ label, key }) => ({ label, key })),\n collectionGroup: groupBy\n };\n\n const dialogRef = this._dialogService.open(\n P13GroupingDialogComponent,\n {\n ...dialogConfig,\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ collectionGroup }: GroupDialogResultData) => {\n this._applyGrouping(collectionGroup);\n })\n );\n }\n\n /** Open Columns Settings Dialog */\n showColumnsSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns();\n const visibleColumns = state.columns;\n const dialogData: ColumnsDialogData = {\n availableColumns: columns.map(({ label, name }) => ({ label, key: name })),\n visibleColumns\n };\n\n const dialogRef = this._dialogService.open(\n P13ColumnsDialogComponent,\n {\n ...dialogConfig,\n disablePaddings: true,\n minWidth: '35rem',\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ visibleColumns: result }: ColumnsDialogResultData) => {\n this._applyColumns(result);\n })\n );\n }\n\n /** @hidden */\n private _setTable(table: Table): void {\n this._table = table;\n\n this._unsubscribeFromTable();\n\n if (this._table) {\n this._subscribeToTable();\n }\n }\n\n /** @hidden */\n private _subscribeToTable(): void {\n this._listenToTableTriggersToOpenDialogs();\n this._listenToTableColumns();\n }\n\n /** @hidden */\n private _listenToTableTriggersToOpenDialogs(): void {\n this._tableSubscriptions.add(this._table.openTableSortSettings.subscribe(() => this.showSortingSettings()));\n this._tableSubscriptions.add(this._table.openTableFilterSettings.subscribe(() => this.showFilteringSettings()));\n this._tableSubscriptions.add(this._table.openTableGroupSettings.subscribe(() => this.showGroupingSettings()));\n this._tableSubscriptions.add(this._table.openTableColumnSettings.subscribe(() => this.showColumnsSettings()));\n }\n\n /** @hidden */\n private _listenToTableColumns(): void {\n this._tableSubscriptions.add(\n this._table.tableColumnsStream.subscribe((columns: TableColumn[]) => {\n this._table?.showSortSettingsInToolbar(columns.some(({ sortable }) => sortable));\n\n this._table?.showGroupSettingsInToolbar(columns.some(({ groupable }) => groupable));\n\n this._table?.showColumnSettingsInToolbar(columns.length > 0);\n\n this._table?.showFilterSettingsInToolbar(columns.some(({ filterable }) => filterable));\n\n this._table?.setHeaderColumnFilteringDisabled(columns.some(({ filterable }) => filterable));\n })\n );\n }\n\n /** @hidden */\n private _getTableState(): TableState {\n return this._table?.getTableState();\n }\n\n /** @hidden */\n private _getTableColumns(): TableColumn[] {\n return this._table?.getTableColumns() || [];\n }\n\n /** @hidden */\n private _applySorting(collectionSort: CollectionSort[]): void {\n this._table?.sort(collectionSort);\n }\n\n /** @hidden */\n private _applyFiltering(filters: CollectionFilter[]): void {\n this._table?.filter(filters);\n }\n\n /** @hidden */\n private _applyGrouping(collectionGroup: CollectionGroup[]): void {\n this._table?.group(collectionGroup);\n }\n\n /** @hidden */\n private _applyColumns(columns: string[]): void {\n this._table?.setColumns(columns);\n }\n\n /** @hidden */\n private _unsubscribeFromTable(): void {\n this._tableSubscriptions.unsubscribe();\n this._tableSubscriptions = new Subscription();\n }\n}\n","import { InjectionToken, TemplateRef } from '@angular/core';\n\nexport interface TableToolbarInterface {\n tableToolbarTitleId: string;\n contentTemplateRef: TemplateRef<any>;\n}\n\n/** @deprecated Use TableToolbarInterface instead */\nexport type TableToolbarWithTemplate = TableToolbarInterface;\n\n/**\n * Used to provide a table-toolbar to the table component without causing a circular dependency.\n */\nexport const TABLE_TOOLBAR = new InjectionToken<any>('PLATFORM_TABLE_TOOLBAR');\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\n\n/**\n * The component that represents a table toolbar actions.\n * ```html\n * <fdp-table-toolbar-actions>\n * <fdp-button label=\"Action One\"></fdp-button>\n * <fdp-button label=\"Action Two\"></fdp-button>\n * </fdp-table-toolbar-actions>\n * ```\n * */\n@Component({\n selector: 'fdp-table-toolbar-actions',\n template: `\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableToolbarActionsComponent {\n /** @hidden */\n @ViewChild(TemplateRef)\n contentTemplateRef: TemplateRef<any>;\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fdp-table-toolbar-left-actions',\n template: `\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableToolbarLeftActionsComponent {\n /** @hidden */\n @ViewChild(TemplateRef)\n _contentTemplateRef: TemplateRef<any>;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n DestroyRef,\n Directive,\n Input,\n Signal,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n ToolbarComponent,\n ToolbarItemDirective,\n ToolbarSeparatorComponent,\n ToolbarSpacerDirective\n} from '@fundamental-ngx/core/toolbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchFieldComponent, SearchInput, SuggestionItem } from '@fundamental-ngx/platform/search-field';\nimport { Table, TableService } from '@fundamental-ngx/platform/table-helpers';\nimport { TABLE_TOOLBAR, TableToolbarInterface } from './table-toolbar';\nimport { TableToolbarActionsComponent } from './table-toolbar-actions.component';\nimport { TableToolbarLeftActionsComponent } from './table-toolbar-left-actions.component';\n\nexport interface ToolbarContext {\n counter: Signal<number>;\n sortable: Signal<boolean>;\n filterable: Signal<boolean>;\n groupable: Signal<boolean>;\n columns: Signal<boolean>;\n hasAnyActions: Signal<boolean>;\n}\n\nexport type EditMode = 'none' | 'inline';\n\nlet tableToolbarTitleUniqueId = 0;\n\n@Directive({\n selector: '[fdpTableToolbarTemplate]',\n standalone: true\n})\nexport class TableToolbarTemplateDirective {\n /** @hidden */\n readonly templateRef = inject<TemplateRef<ToolbarContext>>(TemplateRef);\n\n /** @hidden */\n static ngTemplateContextGuard(\n _directive: TableToolbarTemplateDirective,\n context: unknown\n ): context is ToolbarContext {\n return true;\n }\n}\n\n/**\n * The component that represents a table toolbar.\n *\n * ```html\n * <fdp-table-toolbar\n * title=\"Order Line Items\"\n * [hideItemCount]=\"false\">\n * </fdp-table-toolbar>\n * ```\n * */\n\n@Component({\n selector: 'fdp-table-toolbar',\n templateUrl: './table-toolbar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: TABLE_TOOLBAR, useExisting: TableToolbarComponent }],\n standalone: true,\n imports: [\n ToolbarComponent,\n ToolbarItemDirective,\n ToolbarSeparatorComponent,\n NgTemplateOutlet,\n ToolbarSpacerDirective,\n SearchFieldComponent,\n ButtonComponent,\n AsyncPipe,\n FdTranslatePipe,\n TableToolbarTemplateDirective\n ]\n})\nexport class TableToolbarComponent implements TableToolbarInterface {\n /**\n * Whether the toolbar should hide elements in popover when they overflow.\n * */\n @Input()\n shouldOverflow = false;\n\n /** Table title. */\n @Input()\n title: string;\n\n /** Aria label for the search field. */\n @Input()\n searchFieldAriaLabel: Nullable<string>;\n\n /** Toggle to show table item count. */\n @Input()\n hideItemCount = false;\n\n /** Toggle to show search input. */\n @Input()\n hideSearchInput = false;\n\n /** Toggle to expand and collapse all feature */\n @Input()\n showExpandCollapseButtons = false;\n /** Suggestions for search field. */\n @Input()\n searchSuggestions: SuggestionItem[] = [];\n\n /** Table rows edit/add mode. */\n @Input()\n editMode: EditMode = 'none';\n\n /** @hidden */\n @ContentChild(TableToolbarActionsComponent)\n tableToolbarActionsComponent: TableToolbarActionsComponent;\n\n /** @hidden */\n @ContentChild(TableToolbarLeftActionsComponent)\n _tableToolbarLeftActionsComponent: TableToolbarLeftActionsComponent;\n\n /** @hidden */\n @ViewChild(TemplateRef)\n contentTemplateRef: TemplateRef<any>;\n\n /** @hidden */\n tableToolbarTitleId: string = 'fd-table-toolbar-title-' + tableToolbarTitleUniqueId++;\n\n /** @hidden */\n _showSaveButton = false;\n\n /** @hidden */\n _searchInputText = '';\n\n /** @hidden */\n readonly tableLoading$: Observable<boolean> = inject(TableService).tableLoading$;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(private readonly _table: Table) {\n this._listenToTableEvents();\n }\n\n /** @hidden */\n submitSearch(search: SearchInput): void {\n this._table.search(search);\n }\n\n /** @hidden */\n openSorting(): void {\n this._table.openTableSortSettings.emit();\n }\n\n /** @hidden */\n openFiltering(): void {\n this._table.openTableFilterSettings.emit();\n }\n\n /** @hidden */\n openGrouping(): void {\n this._table.openTableGroupSettings.emit();\n }\n\n /** @hidden */\n openColumns(): void {\n this._table.openTableColumnSettings.emit();\n }\n\n /** @hidden */\n _addRow(): void {\n this._table.addRow();\n }\n\n /** @hidden */\n _saveRows(): void {\n this._table.saveRows();\n }\n\n /** @hidden */\n _cancelEditing(): void {\n this._table.cancelEditing();\n }\n\n /** @hidden */\n _expandAll(): void {\n this._table.expandAll();\n }\n\n /** @hidden */\n _collapseAll(): void {\n this._table.collapseAll();\n }\n\n /** @hidden */\n private _listenToTableEvents(): void {\n this._table.emptyRowAdded.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._showSaveButton = true;\n });\n\n this._table.save.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._showSaveButton = false;\n });\n\n this._table.cancel.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._showSaveButton = false;\n });\n\n this._table.presetChanged.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((state) => {\n this._searchInputText = state.searchInput?.text ?? '';\n });\n }\n}\n","<ng-template\n fdpTableToolbarTemplate\n let-counter=\"counter\"\n let-sortable=\"sortable\"\n let-filterable=\"filterable\"\n let-groupable=\"groupable\"\n let-columns=\"columns\"\n let-hasAnyActions=\"hasAnyActions\"\n>\n <fd-toolbar\n fdType=\"transparent\"\n [clearBorder]=\"true\"\n [titleId]=\"tableToolbarTitleId\"\n [title]=\"title && !hideItemCount ? title + ' (' + counter() + ')' : title\"\n [shouldOverflow]=\"shouldOverflow\"\n >\n @if (_tableToolbarLeftActionsComponent) {\n <span fd-toolbar-item fdOverflowPriority=\"never\">\n @if (!!title || !hideItemCount) {\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n <ng-template [ngTemplateOutlet]=\"_tableToolbarLeftActionsComponent._contentTemplateRef\"></ng-template>\n </span>\n }\n <fd-toolbar-spacer></fd-toolbar-spacer>\n @if (!hideSearchInput) {\n <fdp-search-field\n fd-toolbar-item\n [style.min-width.rem]=\"15.5\"\n [placeholder]=\"'platformTable.toolbarSearchPlaceholder' | fdTranslate\"\n [inputText]=\"_searchInputText\"\n [disabled]=\"!!(tableLoading$ | async)\"\n [suggestions]=\"searchSuggestions\"\n [ariaLabel]=\"searchFieldAriaLabel || null\"\n [ariaLabelledBy]=\"searchFieldAriaLabel ? null : tableToolbarTitleId\"\n (searchSubmit)=\"submitSearch($event)\"\n (cancelSearch)=\"submitSearch($event)\"\n [disableSuggestionsFoundAnnouncer]=\"true\"\n ></fdp-search-field>\n }\n @if (editMode !== 'none') {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n [label]=\"'platformTable.toolbarActionCreateButtonLabel' | fdTranslate\"\n (click)=\"_addRow()\"\n ></button>\n @if (_showSaveButton) {\n @if (_showSaveButton) {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n [label]=\"'platformTable.toolbarActionSaveButtonLabel' | fdTranslate\"\n (click)=\"_saveRows()\"\n ></button>\n }\n <fd-toolbar-separator></fd-toolbar-separator>\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n [label]=\"'platformTable.toolbarActionCancelButtonLabel' | fdTranslate\"\n (click)=\"_cancelEditing()\"\n fdType=\"transparent\"\n ></button>\n }\n @if (tableToolbarActionsComponent || hasAnyActions()) {\n <fd-toolbar-separator fd-toolbar-item fdOverflowPriority=\"never\"></fd-toolbar-separator>\n }\n }\n @if (tableToolbarActionsComponent) {\n <span fd-toolbar-item class=\"fdp-table-toolbar-actions\">\n <ng-template [ngTemplateOutlet]=\"tableToolbarActionsComponent.contentTemplateRef\"></ng-template>\n </span>\n }\n @if (showExpandCollapseButtons || hasAnyActions()) {\n @if (tableToolbarActionsComponent) {\n <fd-toolbar-separator fd-toolbar-item fdOverflowPriority=\"never\"></fd-toolbar-separator>\n }\n @if (showExpandCollapseButtons) {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n glyph=\"expand-all\"\n (click)=\"_expandAll()\"\n [title]=\"'platformTable.toolbarActionExpandAllButtonTitle' | fdTranslate\"\n [ariaLabel]=\"'platformTable.toolbarActionExpandAllButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n ></button>\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n glyph=\"collapse-all\"\n (click)=\"_collapseAll()\"\n [title]=\"'platformTable.toolbarActionCollapseAllButtonTitle' | fdTranslate\"\n [ariaLabel]=\"'platformTable.toolbarActionCollapseAllButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n ></button>\n }\n @if (sortable()) {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n glyph=\"sort\"\n [title]=\"'platformTable.toolbarActionSortButtonTitle' | fdTranslate\"\n [ariaLabel]=\"'platformTable.toolbarActionSortButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n aria-haspopup=\"modal\"\n (click)=\"openSorting()\"\n ></button>\n }\n @if (filterable()) {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n glyph=\"filter\"\n [title]=\"'platformTable.toolbarActionFilterButtonTitle' | fdTranslate\"\n [ariaLabel]=\"'platformTable.toolbarActionFilterButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n aria-haspopup=\"modal\"\n (click)=\"openFiltering()\"\n ></button>\n }\n @if (groupable()) {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n glyph=\"group-2\"\n [title]=\"'platformTable.toolbarActionGroupButtonTitle' | fdTranslate\"\n [ariaLabel]=\"'platformTable.toolbarActionGroupButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n aria-haspopup=\"modal\"\n (click)=\"openGrouping()\"\n ></button>\n }\n @if (columns()) {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n glyph=\"action-settings\"\n [title]=\"'platformTable.toolbarActionColumnsButtonTitle' | fdTranslate\"\n [ariaLabel]=\"'platformTable.toolbarActionColumnsButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n aria-haspopup=\"modal\"\n (click)=\"openColumns()\"\n ></button>\n }\n }\n </fd-toolbar>\n</ng-template>\n","export const NOT_FILTERED_OPTION_VALUE = `table-filters-not-filtered-option-value-${Math.random()\n .toString()\n .slice(2, 5)}`;\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport {\n FdpViewSettingsFilterCustomDef,\n FilterType,\n TableFilterSelectOption\n} from '@fundamental-ngx/platform/table-helpers';\n\n/**\n * View settings dialog filter component.\n *\n * ```html\n * <!-- With custom form -->\n * <fdp-table-view-settings-filter\n * column=\"name\"\n * label=\"Name\"\n * type=\"custom\">\n * <ng-container *fdpViewSettingsFilterCustomDef=\"let model\">\n * <label>Enter name:</label>\n * <fdp-input type=\"text\" name=\"name\" [(ngModel)]=\"model.name\"></fdp-input>\n * </ng-container>\n * </fdp-table-view-settings-filter>\n *\n * <!-- Single select -->\n * <fdp-table-view-settings-filter\n * column=\"status\"\n * label=\"Status\"\n * type=\"single-select\"\n * values=\"[{value: 'OUT_OF_STOCK', label: 'Out of stock'}, { value: 'AVAILABLE', label: 'Available'}]\">\n * </fdp-table-view-settings-filter>\n * ```\n *\n * */\n@Component({\n selector: 'fdp-table-view-settings-filter',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableViewSettingsFilterComponent {\n /** Table column name on which to filter. */\n @Input()\n column: string;\n\n /** Label for the column. */\n @Input()\n label: string;\n\n /**\n * Type of filter interface.\n * @type {'single-select' | 'multi-select' | 'custom' 'category'}\n */\n @Input()\n type: FilterType;\n\n /** Selection values for 'single-select' or 'multi-select' filter types. */\n @Input()\n values: TableFilterSelectOption[];\n\n /** Custom filter template directive reference */\n customFilterTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ContentChild(FdpViewSettingsFilterCustomDef)\n set _filterCustomDef(filterCustomDef: FdpViewSettingsFilterCustomDef) {\n this.customFilterTemplate = filterCustomDef?.templateRef;\n }\n}\n","import { ChangeDetectionStrategy, Component, DoCheck, EventEmitter, Input, Output } from '@angular/core';\nimport { CollectionFilter } from '@fundamental-ngx/platform/table-helpers';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ContentDensityMode,\n ContentDensityObserver,\n contentDensityObserverProviders\n} from '@fundamental-ngx/core/content-density';\nimport { TableViewSettingsFilterComponent } from '../table-view-settings-filter.component';\n\n/**\n * Custom Select filter type.\n *\n * Used to render user's custom filter template\n *\n */\n\n@Component({\n selector: 'fdp-filter-custom',\n templateUrl: './filter-custom.component.html',\n // Keep it \"Default\" intentionally to run ngDoCheck when child template emits changes\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [contentDensityObserverProviders()],\n standalone: true,\n imports: [NgTemplateOutlet]\n})\nexport class FilterCustomComponent implements DoCheck {\n /** ViewSettingsFilter options the filter is created from */\n @Input()\n filter: TableViewSettingsFilterComponent;\n\n /** The filter model */\n @Input()\n set filterBy(filterBy: CollectionFilter | undefined) {\n if (!filterBy?.value || Object.prototype.toString.call(filterBy?.value) !== '[object Object]') {\n // force value to be an object\n this._value = {};\n } else {\n this._value = { ...filterBy.value };\n }\n\n this._valueLastEmitted = { ...this._value };\n }\n\n /** Filter model change event */\n @Output()\n valueChange: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n /** Content Density, comes from table injector */\n get contentDensity(): ContentDensityMode {\n return this.contentDensityObserver.value;\n }\n /**\n * @hidden\n * Currently selected value\n */\n _value: Record<string, any>;\n\n /**\n * @hidden\n * Last emitted value\n */\n _valueLastEmitted: Record<string, any>;\n\n /** @hidden */\n constructor(private contentDensityObserver: ContentDensityObserver) {}\n\n /** @hidden */\n ngDoCheck(): void {\n try {\n // Didn't find a better way to catch changes in the custom template\n if (JSON.stringify(this._value) === JSON.stringify(this._valueLastEmitted)) {\n return;\n }\n\n this._valueLastEmitted = { ...this._value };\n\n this.valueChange.emit(this._value);\n } catch (e) {}\n }\n}\n","<ng-template\n [ngTemplateOutlet]=\"filter.customFilterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: _value, valueChangeEmitter: valueChange, contentDensity: contentDensity }\"\n>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { ListComponent, ListItemComponent, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { CollectionFilter, TableFilterSelectOption } from '@fundamental-ngx/platform/table-helpers';\n\n/**\n * Multi Select filter type.\n *\n */\n\ntype SelectableOption = TableFilterSelectOption & { selected: boolean };\n\n@Component({\n selector: 'fdp-filter-multi-select',\n templateUrl: './filter-multi-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [ListComponent, ListItemComponent, CheckboxComponent, FormsModule, ListTitleDirective]\n})\nexport class FilterMultiSelectComponent {\n /** Selectable filter options */\n @Input()\n options: TableFilterSelectOption[] = [];\n\n /** The filter model */\n @Input()\n set filterBy(filterBy: CollectionFilter | undefined) {\n const filterByValue = filterBy?.value || [];\n this._selectableOptions = this.options.map(\n (option): SelectableOption => ({\n ...option,\n selected: filterByValue.includes(option.value)\n })\n );\n this._updateValueBasedOnOptions();\n }\n\n /** Filter model change event */\n @Output()\n valueChange: EventEmitter<any[]> = new EventEmitter();\n\n /**\n * @hidden\n * Currently selected values\n */\n _value: any[];\n\n /** @hidden */\n _selectableOptions: SelectableOption[];\n\n /** @hidden */\n _onSelectChange(option: SelectableOption, selected: boolean): void {\n option.selected = selected;\n this._updateValueBasedOnOptions();\n this.valueChange.emit(this._value);\n }\n\n /** @hidden */\n _updateValueBasedOnOptions(): void {\n this._value = this._selectableOptions.filter(({ selected }) => selected).map(({ value }) => value);\n }\n}\n","<ul fd-list [selection]=\"true\">\n @for (option of _selectableOptions; track option) {\n <li fd-list-item [selected]=\"option.selected\">\n <fd-checkbox [ngModel]=\"option.selected\" (ngModelChange)=\"_onSelectChange(option, $event)\"></fd-checkbox>\n <span fd-list-title>{{ option.label }}</span>\n </li>\n }\n</ul>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CollectionFilter, TableFilterSelectOption } from '@fundamental-ngx/platform/table-helpers';\n\nimport { FormsModule } from '@angular/forms';\nimport { ListComponent, ListItemComponent, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { NOT_FILTERED_OPTION_VALUE } from './constants';\n\n/**\n * Single Select filter type.\n *\n */\n\n@Component({\n selector: 'fdp-filter-single-select',\n templateUrl: './filter-single-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [ListComponent, ListItemComponent, RadioButtonComponent, FormsModule, ListTitleDirective, FdTranslatePipe]\n})\nexport class FilterSingleSelectComponent {\n /** Selectable filter options */\n @Input()\n options: TableFilterSelectOption[] = [];\n\n /** The filter model */\n @Input()\n set filterBy(filterBy: CollectionFilter | undefined) {\n const value = filterBy?.value?.[0];\n this._value = value === undefined ? NOT_FILTERED_OPTION_VALUE : value;\n }\n\n /** Filter model change event */\n @Output()\n valueChange: EventEmitter<any[]> = new EventEmitter();\n\n /** @hidden */\n readonly NOT_FILTERED_OPTION_VALUE = NOT_FILTERED_OPTION_VALUE;\n\n /**\n * @hidden\n * Currently selected value\n */\n _value: any;\n\n /** @hidden */\n _onValueChange(value: unknown): void {\n if (value === this._value) {\n return;\n }\n\n this._value = value;\n\n if (value === NOT_FILTERED_OPTION_VALUE) {\n this.valueChange.emit([]);\n } else {\n this.valueChange.emit([value]);\n }\n }\n}\n","<ul fd-list [selection]=\"true\">\n <li fd-list-item [selected]=\"_value === NOT_FILTERED_OPTION_VALUE\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"NOT_FILTERED_OPTION_VALUE\"\n state=\"default\"\n [ngModel]=\"_value\"\n (ngModelChange)=\"_onValueChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.filterDialogNotFilteredLabel' | fdTranslate }}</span>\n </li>\n @for (option of options; track option) {\n <li fd-list-item [selected]=\"option.value === _value\">\n <fd-radio-button\n [ngModel]=\"_value\"\n (ngModelChange)=\"_onValueChange($event)\"\n [value]=\"option.value\"\n name=\"filtering-settings-single-select\"\n ></fd-radio-button>\n <span fd-list-title>{{ option.label }}</span>\n </li>\n }\n</ul>\n","import { InjectionToken, TemplateRef } from '@angular/core';\n\nexport interface FiltersViewStep {\n titleTemplateRef: TemplateRef<any>;\n bodyTemplateRef: TemplateRef<any>;\n}\n\nexport const FILTERS_VIEW_STEP_TOKEN = new InjectionToken<FiltersViewStep>('FiltersViewStep');\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\nimport { CollectionFilter, FILTER_STRATEGY, FilterType } from '@fundamental-ngx/platform/table-helpers';\n\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { TableViewSettingsFilterComponent } from '../table-view-settings-filter.component';\nimport { FilterCustomComponent } from './filter-custom.component';\nimport { FilterMultiSelectComponent } from './filter-multi-select.component';\nimport { FilterSingleSelectComponent } from './filter-single-select.component';\nimport { FILTERS_VIEW_STEP_TOKEN, FiltersViewStep } from './filters-active-step';\n\n/**\n * Filter dialog step.\n *\n * Used to render selected filter options.\n *\n */\n\n@Component({\n selector: 'fdp-filter-step',\n templateUrl: './filter-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n /** Each filters dialog step must provide FILTERS_VIEW_STEP_TOKEN to be accessible */\n providers: [{ provide: FILTERS_VIEW_STEP_TOKEN, useExisting: forwardRef(() => FilterStepComponent) }],\n standalone: true,\n imports: [\n ButtonComponent,\n TitleComponent,\n FilterSingleSelectComponent,\n FilterMultiSelectComponent,\n FilterCustomComponent,\n FdTranslatePipe\n ]\n})\nexport class FilterStepComponent implements FiltersViewStep {\n /** ViewSettingsFilter options the filter is created from */\n @Input()\n filter: TableViewSettingsFilterComponent;\n\n /** Column key to apply this filter to */\n @Input()\n columnKey: string;\n\n /** Table's content density to be used */\n @Input()\n contentDensity: ContentDensity;\n\n /** The current filter model */\n @Input()\n set filterBy(filterByList: CollectionFilter[]) {\n this._filterBy = filterByList.find(({ field }) => field === this.columnKey);\n }\n\n /** Go back event */\n @Output()\n back: EventEmitter<void> = new EventEmitter<void>();\n\n /** Filter model change event */\n @Output()\n valueChange: EventEmitter<CollectionFilter> = new EventEmitter<CollectionFilter>();\n\n /** Template ref to the filter title */\n @ViewChild('titleTemplate')\n titleTemplateRef: TemplateRef<any>;\n\n /** Template ref to the filter body */\n @ViewChild('bodyTemplate')\n bodyTemplateRef: TemplateRef<any>;\n\n /** @hidden */\n readonly FILTER_TYPE = FilterType;\n\n /** @hidden */\n _filterBy?: CollectionFilter;\n\n /** @hidden */\n _onFilterValueChange(filterValue: any): void {\n const filterBy: CollectionFilter = this._filterBy || {\n field: this.columnKey,\n value: null,\n strategy: FILTER_STRATEGY.EQ,\n exclude: false\n };\n\n const newFilterBy = { ...filterBy, value: filterValue };\n\n this.valueChange.emit(newFilterBy);\n }\n}\n","<ng-template #titleTemplate>\n <button fd-button fdType=\"transparent\" glyph=\"navigation-left-arrow\" (click)=\"back.emit()\"></button>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.filterDialogFilterByLabel' | fdTranslate: { filterLabel: filter.label } }}\n </h4>\n</ng-template>\n\n<ng-template #bodyTemplate>\n @switch (filter.type) {\n @case (FILTER_TYPE.SINGLE) {\n <fdp-filter-single-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-single-select>\n }\n @case (FILTER_TYPE.MULTI) {\n <fdp-filter-multi-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-multi-select>\n }\n @case (FILTER_TYPE.CUSTOM) {\n <fdp-filter-custom\n [filter]=\"filter\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-custom>\n }\n @case (FILTER_TYPE.CATEGORY) {\n Categories list is not implemented\n }\n }\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {\n ListComponent,\n ListGroupHeaderDirective,\n ListItemComponent,\n ListLinkDirective,\n ListTitleDirective\n} from '@fundamental-ngx/core/list';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { FILTERS_VIEW_STEP_TOKEN, FiltersViewStep } from './filters-active-step';\n\n/**\n * Filters list dialog step.\n *\n * Used to render available filters to drill down.\n *\n */\n\nexport interface SelectableFilter {\n label: string;\n}\n@Component({\n selector: 'fdp-filters-list-step',\n templateUrl: './filters-list-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n /** Each filters dialog step must provide FILTERS_VIEW_STEP_TOKEN to be accessible */\n providers: [{ provide: FILTERS_VIEW_STEP_TOKEN, useExisting: forwardRef(() => FiltersListStepComponent) }],\n standalone: true,\n imports: [\n TitleComponent,\n ListComponent,\n ListGroupHeaderDirective,\n ListItemComponent,\n ListLinkDirective,\n ListTitleDirective,\n FdTranslatePipe\n ]\n})\nexport class FiltersListStepComponent implements FiltersViewStep {\n /** Selectable filters list */\n @Input()\n filters: SelectableFilter[] = [];\n\n /** Select event is fired once some filter is selected */\n @Output()\n selectFilter: EventEmitter<SelectableFilter> = new EventEmitter<SelectableFilter>();\n\n /** Template ref to the filter title */\n @ViewChild('titleTemplate')\n titleTemplateRef: TemplateRef<any>;\n\n /** Template ref to the filter body */\n @ViewChild('bodyTemplate')\n bodyTemplateRef: TemplateRef<any>;\n}\n","<ng-template #titleTemplate>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.filterDialogFilterTitle' | fdTranslate }}</h4>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <ul fd-list [navigationIndicator]=\"true\">\n <li fd-list-group-header>{{ 'platformTable.filterDialogFilterBy' | fdTranslate }}</li>\n\n @for (filter of filters; track filter) {\n <li fd-list-item>\n <a fd-list-link (click)=\"selectFilter.emit(filter)\">\n <span fd-list-title>{{ filter.label }}</span>\n </a>\n </li>\n }\n </ul>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n signal,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport equal from 'fast-deep-equal/es6';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport {\n CollectionFilter,\n FilterType,\n Table,\n TableColumn,\n TableDialogCommonData\n} from '@fundamental-ngx/platform/table-helpers';\nimport { ResetButtonComponent, Resettable, RESETTABLE_TOKEN } from '../../reset-button/reset-button.component';\nimport { TableViewSettingsFilterComponent } from '../table-view-settings-filter.component';\nimport { FilterStepComponent } from './filter-step.component';\nimport { FILTERS_VIEW_STEP_TOKEN, FiltersViewStep } from './filters-active-step';\nimport { FiltersListStepComponent, SelectableFilter } from './filters-list-step.component';\n\nexport interface FiltersDialogData extends TableDialogCommonData {\n filterBy: CollectionFilter[];\n columns: TableColumn[];\n viewSettingsFilters: TableViewSettingsFilterComponent[];\n}\n\nexport interface FiltersDialogResultData {\n filterBy: CollectionFilter[];\n}\n\nexport enum ACTIVE_STEP {\n SELECT_FILTER = 'SELECT_FILTER',\n FILTER = 'FILTER'\n}\n\n@Component({\n templateUrl: './filters.component.html',\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: forwardRef(() => FiltersComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n NgTemplateOutlet,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n FiltersListStepComponent,\n FilterStepComponent,\n FdTranslatePipe\n ]\n})\nexport class FiltersComponent implements Resettable, AfterViewInit {\n /**\n * Current FiltersViewStep component to render.\n * The fd-dialog component relies on named projected content.\n * It means we must define all projected dialog options in the same view withing fd-dialog.\n * In order to keep filters steps as separate components\n * and do not break dialog content we are using this ViewChild hook\n * keeping reference to the conditionally rendered active step.\n * Each \"FilterStepView\" has template refs for dialog.title and dialog.body template\n * */\n @ViewChild(FILTERS_VIEW_STEP_TOKEN)\n set setActiveFilterStepView(view: FiltersViewStep) {\n this.activeFilterStepView = view;\n this._cd.detectChanges();\n }\n\n /** Reference to the available steps */\n readonly ACTIVE_STEP = ACTIVE_STEP;\n\n /** Currently applied filters rules */\n filterBy: CollectionFilter[];\n\n /** Table columns. Used to retrieve a column key */\n columns: TableColumn[];\n\n /** Declared filters options */\n viewSettingsFilters: TableViewSettingsFilterComponent[];\n\n /** Currently selected step */\n activeStep: ACTIVE_STEP = ACTIVE_STEP.SELECT_FILTER;\n\n /** Currently selected filter to drill down */\n activeFilter: TableViewSettingsFilterComponent | null = null;\n\n /** Table column key associated with the currently selected filter */\n activeFilterColumnKey: Nullable<string> = null;\n\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** Current step component to render */\n activeFilterStepView: FiltersViewStep;\n\n /** @hidden */\n private _initialFilters: CollectionFilter[] = [];\n\n /** @hidden */\n constructor(\n public readonly dialogRef: DialogRef<FiltersDialogData>,\n private readonly _cd: ChangeDetectorRef,\n private readonly _table: Table\n ) {\n const dialogData = this.dialogRef.data;\n this.filterBy = [...dialogData.filterBy];\n this.viewSettingsFilters = dialogData.viewSettingsFilters;\n this.columns = dialogData.columns;\n\n this._setInitialFilters();\n this._compareSelectedFilters();\n }\n\n /** Need it to keep activeFilterStepView rendering up to date */\n ngAfterViewInit(): void {\n this._cd.detectChanges();\n }\n\n /** Select filter to drill down */\n selectFilter(filter: SelectableFilter): void {\n this.activeStep = ACTIVE_STEP.FILTER;\n this.activeFilter = filter as TableViewSettingsFilterComponent;\n this.activeFilterColumnKey = this.columns.find(\n ({ name }) => name === (<TableViewSettingsFilterComponent>filter).column\n )?.key;\n this._cd.detectChanges();\n }\n\n /** Go back to the top filters list */\n goToFilters(): void {\n this.activeStep = ACTIVE_STEP.SELECT_FILTER;\n this.activeFilter = null;\n }\n\n /** Apply filter rule changes and emit the event */\n applyFilter(filter: CollectionFilter, { type }: TableViewSettingsFilterComponent): void {\n if (!filter) {\n return;\n }\n // exclude this filter from filters list\n this.filterBy = this.filterBy.filter(({ field }) => field !== filter.field);\n\n const filterIsNotEmpty =\n type === FilterType.CUSTOM ||\n (type === FilterType.MULTI && filter.value?.length) ||\n (type === FilterType.SINGLE && filter.value?.length);\n\n // if filter is not empty add it to the list\n if (filterIsNotEmpty) {\n this.filterBy.push(filter);\n }\n\n this._compareSelectedFilters();\n\n // To fix \"Expression has changed after it was checked\"\n this._cd.detectChanges();\n }\n\n /** Reset changes to the initial state */\n reset(): void {\n this.filterBy = this._initialFilters;\n this.isResetAvailable$.set(false);\n this._cd.detectChanges();\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const result: FiltersDialogResultData = { filterBy: this.filterBy };\n this.dialogRef.close(result);\n }\n\n /** @hidden */\n private _setInitialFilters(): void {\n this._initialFilters = this._table.initialState?.initialFilterBy ?? [];\n }\n\n /** @hidden */\n private _compareSelectedFilters(): void {\n if (equal(this._initialFilters, this.filterBy)) {\n return;\n }\n\n this.isResetAvailable$.set(true);\n }\n}\n","<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n @if (activeFilterStepView?.titleTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"activeFilterStepView.titleTemplateRef\"></ng-container>\n }\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n @if (activeFilterStepView?.bodyTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"activeFilterStepView.bodyTemplateRef\"></ng-container>\n }\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.filterDialogConfirmBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'platformTable.filterDialogCancelBtnLabel' | fdTranslate\"\n fdkInitialFocus\n (click)=\"cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n<!-- Keep active step component -->\n@if (activeStep === ACTIVE_STEP.SELECT_FILTER) {\n <fdp-filters-list-step\n [filters]=\"viewSettingsFilters\"\n (selectFilter)=\"selectFilter($event)\"\n ></fdp-filters-list-step>\n} @else if (activeStep === ACTIVE_STEP.FILTER) {\n <fdp-filter-step\n [columnKey]=\"activeFilterColumnKey!\"\n [filter]=\"activeFilter!\"\n [filterBy]=\"filterBy\"\n (back)=\"goToFilters()\"\n (valueChange)=\"applyFilter($event, activeFilter!)\"\n ></fdp-filter-step>\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, signal, ViewEncapsulation } from '@angular/core';\nimport equal from 'fast-deep-equal/es6';\n\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { FormsModule } from '@angular/forms';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport {\n ListComponent,\n ListGroupHeaderDirective,\n ListItemComponent,\n ListTitleDirective\n} from '@fundamental-ngx/core/list';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SortDirection, Table, TableDialogCommonData } from '@fundamental-ngx/platform/table-helpers';\nimport { ResetButtonComponent, Resettable, RESETTABLE_TOKEN } from '../../reset-button/reset-button.component';\n\nexport interface SettingsGroupDialogColumn {\n label: string;\n key: string;\n}\n\nexport interface SettingsGroupDialogData extends TableDialogCommonData {\n direction: SortDirection;\n field: string | null;\n columns: SettingsGroupDialogColumn[];\n}\n\nexport interface SettingsGroupDialogResultData {\n field: string | null;\n direction: SortDirection;\n}\n\nconst NOT_GROUPED_OPTION_VALUE = null;\nconst INITIAL_DIRECTION = SortDirection.ASC;\n\n@Component({\n templateUrl: './grouping.component.html',\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: forwardRef(() => GroupingComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n ListComponent,\n ListGroupHeaderDirective,\n ListTitleDirective,\n ListItemComponent,\n RadioButtonComponent,\n FormsModule,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe\n ]\n})\nexport class GroupingComponent implements Resettable {\n /** Current selected direction */\n direction: SortDirection;\n\n /** Current selected field */\n field: string | null = null;\n\n /** Table columns */\n readonly columns: SettingsGroupDialogColumn[] = [];\n\n /** Indicates if reset command is active */\n readonly isResetAvailable$ = signal(false);\n\n /** @hidden */\n readonly SORT_DIRECTION = SortDirection;\n\n /** Not Grouped Option model value */\n readonly NOT_GROUPED_OPTION_VALUE = NOT_GROUPED_OPTION_VALUE;\n\n /** @hidden */\n private _initialGrouping: SettingsGroupDialogResultData;\n\n /** @hidden */\n constructor(\n public dialogRef: DialogRef<SettingsGroupDialogData>,\n private readonly _table: Table\n ) {\n const data = this.dialogRef.data;\n\n this.columns = data.columns || [];\n\n this.direction = data.direction ?? INITIAL_DIRECTION;\n this.field = data.field ?? NOT_GROUPED_OPTION_VALUE;\n\n this._setInitialGrouping();\n\n this._compareInitialGrouping();\n }\n\n /** Reset changes to the initial state */\n reset(): void {\n this.direction = this._initialGrouping.direction;\n this.field = this._initialGrouping.field;\n this.isResetAvailable$.set(false);\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const result: SettingsGroupDialogResultData = { field: this.field, direction: this.direction };\n this.dialogRef.close(result);\n }\n\n /** @hidden */\n _groupOrderChange(direction: SortDirection): void {\n this.direction = direction;\n this._onModelChange();\n }\n\n /** @hidden */\n _groupFieldChange(field: string): void {\n this.field = field;\n this._onModelChange();\n }\n\n /** @hidden */\n _onModelChange(): void {\n // Use this coercion cause fd-radio-button triggers extra ngModelChange events on initial phase\n const isInitialDiffers =\n this.direction !== this._initialGrouping.direction || this.field !== this._initialGrouping.field;\n this.isResetAvailable$.set(isInitialDiffers);\n }\n\n /** @hidden */\n private _setInitialGrouping(): void {\n const initialGrouping = (this._table.initialState?.initialGroupBy || [])[0];\n this._initialGrouping = {\n field: initialGrouping?.field ?? NOT_GROUPED_OPTION_VALUE,\n direction: initialGrouping?.direction ?? INITIAL_DIRECTION\n };\n }\n\n /** @hidden */\n private _compareInitialGrouping(): void {\n const appliedGrouping: SettingsGroupDialogResultData = {\n field: this.field,\n direction: this.direction\n };\n\n if (equal(this._initialGrouping, appliedGrouping)) {\n return;\n }\n\n this.isResetAvailable$.set(true);\n }\n}\n","<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.groupDialogHeader' | fdTranslate }}</h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupOrderHeader' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.ASC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"asc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_groupOrderChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupOrderAsc' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.DESC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"desc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_groupOrderChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupOrderDesc' | fdTranslate }}</span>\n </li>\n </ul>\n\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupByHeader' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"NOT_GROUPED_OPTION_VALUE === field\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"NOT_GROUPED_OPTION_VALUE\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_groupFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.groupDialogNotGroupedLabel' | fdTranslate }}</span>\n </li>\n @for (column of columns; track column) {\n <li fd-list-item [selected]=\"column.key === field\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"column.key\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_groupFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ column.label }}</span>\n </li>\n }\n </ul>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.groupDialogConfirmBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'platformTable.groupDialogCancelBtnLabel' | fdTranslate\"\n fdkInitialFocus\n (click)=\"cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import { ChangeDetectionStrategy, Component, forwardRef, signal, ViewEncapsulation } from '@angular/core';\nimport equal from 'fast-deep-equal/es6';\n\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { FormsModule } from '@angular/forms';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport {\n ListComponent,\n ListGroupHeaderDirective,\n ListItemComponent,\n ListTitleDirective\n} from '@fundamental-ngx/core/list';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { CollectionSort, SortDirection, Table, TableDialogCommonData } from '@fundamental-ngx/platform/table-helpers';\nimport { ResetButtonComponent, Resettable, RESETTABLE_TOKEN } from '../../reset-button/reset-button.component';\n\nexport interface SettingsSortDialogColumn {\n label: string;\n key: string;\n}\n\nexport interface SettingsSortDialogData extends TableDialogCommonData {\n direction: SortDirection;\n field: string | null;\n columns: SettingsSortDialogColumn[];\n allowDisablingSorting: boolean;\n}\n\nexport interface SettingsSortDialogResultData {\n field: string | null;\n direction: SortDirection;\n}\n\nconst NOT_SORTED_OPTION_VALUE = null;\nconst INITIAL_DIRECTION = SortDirection.ASC;\n\n@Component({\n templateUrl: './sorting.component.html',\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: forwardRef(() => SortingComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n ListComponent,\n ListGroupHeaderDirective,\n ListTitleDirective,\n ListItemComponent,\n RadioButtonComponent,\n FormsModule,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe\n ]\n})\nexport class SortingComponent implements Resettable {\n /** Current selected direction */\n direction: SortDirection;\n\n /** Current selected field */\n field: string | null;\n\n /** Whether to allow selecting '(Not sorted)' option in sorting dialog. */\n allowDisablingSorting: boolean;\n\n /** Table columns */\n readonly columns: SettingsSortDialogColumn[] = [];\n\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** @hidden */\n readonly SORT_DIRECTION = SortDirection;\n\n /** @hidden */\n readonly NOT_SORTED_OPTION_VALUE = NOT_SORTED_OPTION_VALUE;\n\n /** @hidden */\n private _initialSorting: CollectionSort;\n\n /** @hidden */\n constructor(\n public dialogRef: DialogRef<SettingsSortDialogData>,\n private _table: Table\n ) {\n const data = this.dialogRef.data;\n\n this.columns = data.columns || [];\n\n this.direction = data.direction ?? INITIAL_DIRECTION;\n this.field = data.field ?? NOT_SORTED_OPTION_VALUE;\n this.allowDisablingSorting = data.allowDisablingSorting;\n\n this._setInitialSorting();\n\n this._compareInitialSorting();\n }\n\n /** Reset changes to the initial state */\n reset(): void {\n this.direction = this._initialSorting.direction;\n this.field = this._initialSorting.field;\n this.isResetAvailable$.set(false);\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const result: SettingsSortDialogResultData = { direction: this.direction, field: this.field };\n this.dialogRef.close(result);\n }\n\n /** @hidden */\n _sortDirectionChange(direction: SortDirection): void {\n this.direction = direction;\n this._onModelChange();\n }\n\n /** @hidden */\n _sortFieldChange(field: string): void {\n this.field = field;\n this._onModelChange();\n }\n\n /** @hidden */\n _onModelChange(): void {\n // Use this coercion cause fd-radio-button triggers extra ngModelChange events on initial phase\n const isInitialDiffers =\n this.direction !== this._initialSorting.direction || this.field !== this._initialSorting.field;\n this.isResetAvailable$.set(isInitialDiffers);\n }\n\n /**\n * @hidden\n * Since view settings dialog supports only one sorting, get the first one if available.\n */\n private _setInitialSorting(): void {\n const initialSorting = (this._table.initialState?.initialSortBy || [])[0];\n\n this._initialSorting = {\n field: initialSorting?.field ?? NOT_SORTED_OPTION_VALUE,\n direction: initialSorting?.direction ?? INITIAL_DIRECTION\n };\n }\n\n /**\n * @hidden\n * Compare initial sorting with selected one and set reset button if needed.\n */\n private _compareInitialSorting(): void {\n const appliedSorting: CollectionSort = {\n field: this.field,\n direction: this.direction\n };\n\n if (equal(this._initialSorting, appliedSorting)) {\n return;\n }\n\n this.isResetAvailable$.set(true);\n }\n}\n","<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.sortDialogHeader' | fdTranslate }}</h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.sortDialogSortOrderHeader' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.ASC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"asc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_sortDirectionChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.sortDialogSortOrderAsc' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.DESC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"desc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_sortDirectionChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.sortDialogSortOrderDesc' | fdTranslate }}</span>\n </li>\n </ul>\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.sortDialogSortByHeader' | fdTranslate }}</span>\n </li>\n @if (allowDisablingSorting) {\n <li fd-list-item [selected]=\"field === NOT_SORTED_OPTION_VALUE\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"NOT_SORTED_OPTION_VALUE\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_sortFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.sortDialogNotSortedLabel' | fdTranslate }}</span>\n </li>\n }\n @for (column of columns; track column) {\n <li fd-list-item [selected]=\"column.key === field\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"column.key\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_sortFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ column.label }}</span>\n </li>\n }\n </ul>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.sortDialogConfirmBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'platformTable.sortDialogCancelBtnLabel' | fdTranslate\"\n fdkInitialFocus\n (click)=\"cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n forwardRef,\n Input,\n OnDestroy,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter, startWith } from 'rxjs/operators';\n\nimport { DialogConfig, DialogService } from '@fundamental-ngx/core/dialog';\nimport {\n CollectionFilter,\n SortDirection,\n Table,\n TableColumn,\n TableState\n} from '@fundamental-ngx/platform/table-helpers';\nimport { FiltersComponent, FiltersDialogData, FiltersDialogResultData } from './filtering/filters.component';\nimport {\n GroupingComponent,\n SettingsGroupDialogData,\n SettingsGroupDialogResultData\n} from './grouping/grouping.component';\nimport { SettingsSortDialogData, SettingsSortDialogResultData, SortingComponent } from './sorting/sorting.component';\nimport { TableViewSettingsFilterComponent } from './table-view-settings-filter.component';\n\nexport const dialogConfig: DialogConfig = {\n responsivePadding: false,\n verticalPadding: false,\n minWidth: '30%',\n /** 88px it's the header + footer height */\n bodyMinHeight: 'calc(50vh - 88px)'\n};\n\n/**\n * View settings dialog component.\n *\n * Used to link view settings filters options to the grid table.\n *\n * ```html\n * <fdp-table #myTable></fdp-table>\n * ...\n * <fdp-table-view-settings-dialog [table]=\"myTable\">\n * <fdp-table-view-settings-filter\n * column=\"status\"\n * label=\"Status\"\n * type=\"single-select\"\n * values=\"[{value: 'filterValue', label: 'Filter label'}]\">\n * </fdp-table-view-settings-filter>\n * </fdp-table-view-settings-dialog>\n * ```\n * */\n@Component({\n selector: 'fdp-table-view-settings-dialog',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableViewSettingsDialogComponent implements AfterViewInit, OnDestroy {\n /** Reference to table component. */\n @Input()\n set table(table: Table) {\n this._setTable(table);\n }\n\n get table(): Table {\n return this._table;\n }\n\n /** Whether to allow selecting '(Not sorted)' option in sorting dialog. */\n @Input()\n allowDisablingSorting = true;\n\n /** @hidden */\n @ContentChildren(forwardRef(() => TableViewSettingsFilterComponent))\n filters: QueryList<TableViewSettingsFilterComponent>;\n\n /** @hidden */\n _table: Table;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _tableSubscriptions = new Subscription();\n\n /** @hidden */\n constructor(private readonly _dialogService: DialogService) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenToFilters();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._unsubscribeFromTable();\n }\n\n /** Open Sort Settings Dialog */\n showSortingSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns();\n const sortBy = state.sortBy?.[0];\n const dialogData: SettingsSortDialogData = {\n columns: columns.filter(({ sortable }) => sortable),\n direction: sortBy?.direction,\n field: sortBy?.field,\n allowDisablingSorting: this.allowDisablingSorting\n };\n\n const dialogRef = this._dialogService.open(\n SortingComponent,\n {\n ...dialogConfig,\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ field, direction }: SettingsSortDialogResultData) => {\n this._applySorting(field, direction);\n })\n );\n }\n\n /** Open Filtering Settings Dialog */\n showFilteringSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns();\n const dialogData: FiltersDialogData = {\n columns,\n viewSettingsFilters: this.filters.toArray(),\n filterBy: state?.filterBy\n };\n\n const dialogRef = this._dialogService.open(\n FiltersComponent,\n {\n ...dialogConfig,\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ filterBy }: FiltersDialogResultData) => this._applyFiltering(filterBy))\n );\n }\n\n /** Open Grouping Settings Dialog */\n showGroupingSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns();\n const dialogData: SettingsGroupDialogData = {\n columns: columns.filter(({ groupable }) => groupable),\n direction: state.groupBy?.[0]?.direction,\n field: state.groupBy?.[0]?.field\n };\n\n const dialogRef = this._dialogService.open(\n GroupingComponent,\n {\n ...dialogConfig,\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ field, direction }: SettingsGroupDialogResultData) => {\n this._applyGrouping(field, direction);\n })\n );\n }\n\n /** @hidden */\n private _listenToFilters(): void {\n this.filters.changes.pipe(startWith(null)).subscribe(() => {\n this._table?.showFilterSettingsInToolbar(this.filters.toArray().length > 0);\n });\n }\n\n /** @hidden */\n private _setTable(table: Table): void {\n this._table = table;\n this._unsubscribeFromTable();\n this._subscribeToTable();\n }\n\n /** @hidden */\n private _subscribeToTable(): void {\n if (!this._table) {\n return;\n }\n\n this._listenToTableTriggersToOpenDialogs();\n\n this._listenToTableColumns();\n }\n\n /** @hidden */\n private _listenToTableTriggersToOpenDialogs(): void {\n this._tableSubscriptions.add(this._table.openTableSortSettings.subscribe(() => this.showSortingSettings()));\n this._tableSubscriptions.add(this._table.openTableFilterSettings.subscribe(() => this.showFilteringSettings()));\n this._tableSubscriptions.add(this._table.openTableGroupSettings.subscribe(() => this.showGroupingSettings()));\n }\n\n /** @hidden */\n private _listenToTableColumns(): void {\n this._tableSubscriptions.add(\n this._table.tableColumnsStream.subscribe((columns: TableColumn[]) => {\n this._table?.showSortSettingsInToolbar(columns.some(({ sortable }) => sortable));\n this._table?.showGroupSettingsInToolbar(columns.some(({ groupable }) => groupable));\n })\n );\n }\n\n /** @hidden */\n private _getTableState(): TableState {\n return this._table?.getTableState();\n }\n\n /** @hidden */\n private _getTableColumns(): TableColumn[] {\n return this._table?.getTableColumns() || [];\n }\n\n /** @hidden */\n private _applySorting(field: string | null, direction: SortDirection): void {\n this._table?.sort(field ? [{ field, direction }] : []);\n }\n\n /** @hidden */\n private _applyFiltering(filters: CollectionFilter[]): void {\n this._table?.filter(filters);\n }\n\n /** @hidden */\n private _applyGrouping(field: string | null, direction: SortDirection): void {\n this._table?.group(field ? [{ field, direction, showAsColumn: true }] : []);\n }\n\n /** @hidden */\n private _unsubscribeFromTable(): void {\n this._tableSubscriptions.unsubscribe();\n this._tableSubscriptions = new Subscription();\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { ListComponent, ListItemComponent, ListLinkDirective, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Table, TableDataSourceDirective, TableService } from '@fundamental-ngx/platform/table-helpers';\n\n@Component({\n selector: 'fdp-table-growing-button',\n standalone: true,\n imports: [ListComponent, ListItemComponent, ListTitleDirective, ListLinkDirective, AsyncPipe, FdTranslatePipe],\n templateUrl: './table-growing-button.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableGrowingButtonComponent {\n /** Whether to show items count. */\n @Input()\n showItemsCount = false;\n\n /** @hidden */\n readonly _tableService = inject(TableService);\n\n /** @hidden */\n readonly _dataSourceDirective = inject(TableDataSourceDirective);\n\n /** @hidden */\n readonly _table = inject(Table);\n\n /** @hidden */\n _loadMore(): void {\n (this._table as any)._onSpyIntersect(true);\n }\n}\n","<div fd-list role=\"none\">\n <div\n fd-list-item\n ariaRole=\"none\"\n class=\"fdp-table__growing-button\"\n [growing]=\"true\"\n [style.height]=\"'auto'\"\n [action]=\"true\"\n >\n <a fd-list-link (click)=\"_loadMore()\">\n <div fd-list-title>\n <div\n class=\"fdp-table__growing-button-content\"\n [class.fdp-table__growing-button-content--byline]=\"showItemsCount\"\n >\n @if (!showItemsCount) {\n {{ 'platformTable.loadMore' | fdTranslate }}\n } @else {\n <div class=\"fdp-table__growing-button__title\">\n {{ 'platformTable.loadMore' | fdTranslate }}\n </div>\n <div class=\"fdp-table__growing-button__subtitle\">\n [ {{ _table.loadedRows$() }} / {{ _dataSourceDirective.totalItems$() }} ]\n </div>\n }\n </div>\n </div>\n </a>\n </div>\n</div>\n","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChildren,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport {\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FDK_FOCUSABLE_LIST_DIRECTIVE,\n FocusableItemDirective,\n Nullable\n} from '@fundamental-ngx/cdk/utils';\nimport { TableCellDirective, TableRowDirective } from '@fundamental-ngx/core/table';\nimport { TableColumn, TableRow, TableService } from '@fundamental-ngx/platform/table-helpers';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-table-group-row]',\n templateUrl: './table-group-row.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: TableGroupRowComponent\n }\n ],\n host: {\n role: 'row',\n '[attr.aria-expanded]': 'row.expanded'\n },\n standalone: true,\n imports: [TableCellDirective, NgTemplateOutlet, AsyncPipe]\n})\nexport class TableGroupRowComponent<T> extends TableRowDirective implements OnChanges {\n /** Table ID. */\n @Input()\n rowId: string;\n /** Row index. */\n @HostBinding('attr.aria-rowindex')\n @Input()\n index: number;\n\n /** Row height. */\n @HostBinding('style.height.px')\n @Input()\n height: number;\n\n /** Whether the row is draggable. */\n @HostBinding('class.fd-table__row--draggable')\n @Input()\n draggable = false;\n\n /** Table Row. */\n @Input()\n row: TableRow<T>;\n\n /** Key to column mapping. */\n @Input()\n keyToColumnMap: Map<string, TableColumn>;\n\n /** Table columns length. */\n @Input()\n tableColumnsLength: number;\n\n /** Event emitted when group row expansion state needs to be toggled. */\n @Output()\n toggleGroupRow = new EventEmitter<TableRow<T>>();\n\n /** @hidden */\n _column: Nullable<TableColumn>;\n\n /** @hidden */\n @ViewChildren(FDK_FOCUSABLE_ITEM_DIRECTIVE)\n private set _focusableViewCellItems(items: QueryList<FocusableItemDirective>) {\n this.setItems(items);\n }\n\n /** @hidden */\n readonly _fdpTableService = inject(TableService);\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n\n if ('row' in changes || 'keyToColumnMap' in changes) {\n this._column = this.keyToColumnMap.get(this.row.value?.['field']);\n }\n }\n}\n","<td\n fd-table-cell\n class=\"fd-table__cell--group fd-table__cell--expand\"\n tabindex=\"0\"\n role=\"gridcell\"\n [focusable]=\"true\"\n [attr.colspan]=\"tableColumnsLength\"\n [attr.aria-expanded]=\"row.expanded\"\n [attr.data-nesting-level]=\"row.level + 1\"\n (keydown.enter)=\"toggleGroupRow.emit(row)\"\n (keydown.space)=\"toggleGroupRow.emit(row)\"\n (click)=\"toggleGroupRow.emit(row)\"\n>\n <ng-template [ngTemplateOutlet]=\"tableCellExpandTemplate\"></ng-template>\n</td>\n<!-- Table Cell Expand Template -->\n<ng-template #tableCellExpandTemplate>\n <div class=\"fd-table__expand-wrapper\">\n <span class=\"fd-table__expand\" [class.fd-table__expand--open]=\"row.expanded\" aria-hidden=\"true\"></span>\n @if (_fdpTableService.groupRules$(); as groupRules) {\n <!-- Group row template when no nested groups -->\n @if (groupRules.size === 1) {\n <div class=\"fd-table__text fd-table__text--no-wrap\">\n {{ row.value?.['value'] }} - {{ row.value?.['count'] }}\n </div>\n }\n <!-- Group row template when there are nested groups -->\n @if (groupRules.size !== 1) {\n <div class=\"fd-table__text fd-table__text--no-wrap\">\n <ng-template [ngTemplateOutlet]=\"tableHeaderCellContentTemplate\"></ng-template>:\n {{ row.value?.['value'] }}\n </div>\n }\n }\n </div>\n</ng-template>\n<!-- Column Header Cell Content Template -->\n<ng-template #tableHeaderCellContentTemplate>\n @if (_column) {\n @if (_column.headerCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"_column.headerCellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: _column }\"\n ></ng-template>\n } @else {\n <span\n [id]=\"rowId + '-header-cell-' + _column.name\"\n [attr.title]=\"_column.label\"\n class=\"fd-table__cell--truncate-txt\"\n >{{ _column.label }}</span\n >\n }\n }\n</ng-template>\n","import { NgClass, NgStyle } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n Pipe,\n PipeTransform,\n QueryList,\n ViewChildren,\n ViewEncapsulation,\n computed,\n forwardRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport {\n DisabledBehaviorDirective,\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FDK_FOCUSABLE_LIST_DIRECTIVE,\n FocusableItemDirective,\n RtlService\n} from '@fundamental-ngx/cdk/utils';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { ContentDensityObserver } from '@fundamental-ngx/core/content-density';\nimport { PopoverTriggerDirective } from '@fundamental-ngx/core/popover';\nimport { TableCellDirective, TableRowDirective, TableStatusIndicatorDirective } from '@fundamental-ngx/core/table';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport {\n ColumnResizableSidePipe,\n PlatformTableCellResizableDirective,\n SelectionCellStylesPipe,\n SelectionMode,\n SelectionModeValue,\n SortDirection,\n TableCellStylesPipe,\n TableColumn,\n TableColumnResizeService,\n TableColumnSortingDirectionPipe,\n TableRowService,\n TableService\n} from '@fundamental-ngx/platform/table-helpers';\nimport { TableCellHeaderPopoverComponent } from '../table-cell-header-popover/table-cell-header-popover.component';\nimport { TableHeaderCellContentComponent } from '../table-header-cell-content/table-header-cell-content.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-table-header-row]',\n templateUrl: './table-header-row.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: TableHeaderRowComponent\n }\n ],\n host: {\n role: 'row'\n },\n standalone: true,\n imports: [\n TableCellDirective,\n TableStatusIndicatorDirective,\n DisabledBehaviorDirective,\n CheckboxComponent,\n FormsModule,\n PlatformTableCellResizableDirective,\n NgClass,\n NgStyle,\n PopoverTriggerDirective,\n TableHeaderCellContentComponent,\n TableCellHeaderPopoverComponent,\n FdTranslatePipe,\n SelectionCellStylesPipe,\n TableCellStylesPipe,\n ColumnResizableSidePipe,\n TableColumnSortingDirectionPipe,\n forwardRef(() => IsColumnHasHeaderMenuPipe)\n ]\n})\nexport class TableHeaderRowComponent extends TableRowDirective implements OnInit {\n /** Table ID. */\n @Input()\n rowId: string;\n\n /**\n * Whether to fix the table header and footer. Default is true.\n * Note that if the table contains freezable columns, the header and\n * footer will be fixed automatically, regardless of this input value.\n * */\n @Input()\n fixed: boolean;\n\n /**\n * Whether to show selection column.\n */\n @Input()\n isShownSelectionColumn: boolean;\n\n /**\n * Row checked state.\n */\n @Input()\n checkedState: boolean | null;\n\n /**\n * Selection mode.\n */\n @Input()\n selectionMode: SelectionModeValue;\n\n /**\n * Selection column width.\n */\n @Input()\n selectionColumnWidth: number;\n\n /** The column `name` to freeze columns up to and including. */\n @Input()\n freezeColumnsTo: string;\n\n /** The column `name` to freeze columns after and including. */\n @Input()\n freezeEndColumnsTo: string;\n\n /** @hidden */\n @Input()\n disableSelectionCheckbox = false;\n\n /** @hidden */\n @ViewChildren(FDK_FOCUSABLE_ITEM_DIRECTIVE)\n private set _focusableCellItems(items: QueryList<FocusableItemDirective>) {\n this.setItems(items);\n }\n\n /** @hidden */\n readonly _rtl$ = computed(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n readonly SELECTION_MODE = SelectionMode;\n\n /** @hidden */\n readonly SORT_DIRECTION = SortDirection;\n\n /** @hidden */\n readonly _tableColumnResizeService = inject(TableColumnResizeService);\n\n /** @hidden */\n readonly _fdpTableService = inject(TableService);\n\n /** @hidden */\n readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n /** @hidden */\n readonly _tableRowService = inject(TableRowService);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n this._tableColumnResizeService.markForCheck.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._cdr.detectChanges();\n });\n }\n\n /** @hidden */\n _columnTrackBy(index: number, column: TableColumn): string {\n return column.name;\n }\n}\n\n/** @hidden */\n@Pipe({\n name: 'isColumnHasHeaderMenu',\n standalone: true\n})\nexport class IsColumnHasHeaderMenuPipe implements PipeTransform {\n /** @hidden */\n private readonly _fdpTableService = inject(TableService);\n\n /** @hidden */\n transform(column: TableColumn): boolean {\n return (\n column.sortable ||\n column.groupable ||\n column.freezable ||\n column.endFreezable ||\n (column.filterable && !this._fdpTableService._isFilteringFromHeaderDisabled$())\n );\n }\n}\n","@if (_fdpTableService._semanticHighlighting$()) {\n <th\n [class.fd-table__cell--fixed]=\"fixed\"\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [style.min-width]=\"_fdpTableService._semanticHighlightingColumnWidth$()\"\n [style.max-width]=\"_fdpTableService._semanticHighlightingColumnWidth$()\"\n ></th>\n}\n\n@if (isShownSelectionColumn) {\n <th\n fd-table-cell\n [focusable]=\"true\"\n [class.fd-table__cell--fixed]=\"fixed\"\n class=\"fd-table__cell--checkbox\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n (keydown.enter)=\"\n selectionMode === SELECTION_MODE.MULTIPLE && _tableRowService.toggleAllSelectableRows(!checkedState)\n \"\n (keydown.space)=\"\n selectionMode === SELECTION_MODE.MULTIPLE && _tableRowService.toggleAllSelectableRows(!checkedState)\n \"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n [attr.aria-description]=\"\n !checkedState\n ? ('platformTable.selectAllCheckboxLabel' | fdTranslate)\n : ('platformTable.deselectAllCheckboxLabel' | fdTranslate)\n \"\n >\n @if (selectionMode === SELECTION_MODE.MULTIPLE) {\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [fdkDisabled]=\"_fdpTableService.visibleColumnsLength() === 0 || disableSelectionCheckbox\"\n [tristate]=\"true\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"checkedState\"\n (ngModelChange)=\"_tableRowService.toggleAllSelectableRows($event)\"\n ></fd-checkbox>\n }\n </th>\n}\n\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <th\n [focusable]=\"true\"\n role=\"columnheader\"\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [id]=\"rowId + '__' + column.name\"\n [attr.aria-colindex]=\"$index\"\n [attr.aria-sort]=\"_fdpTableService.sortRules$().get(column.key) | fdpTableColumnSortingDirection\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : '',\n (column | isColumnHasHeaderMenu) ? 'fd-table__item--clickable' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl$()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [fdPopoverTrigger]=\"(column | isColumnHasHeaderMenu) ? tablePopover.popover : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n >\n <fdp-table-header-cell-content [id]=\"rowId\" [column]=\"column\" [attr.title]=\"column.label\">\n <!-- Header menu -->\n <fdp-table-cell-header-popover\n #tablePopover\n [disabled]=\"!(column | isColumnHasHeaderMenu)\"\n [columnFrozen]=\"column._freezed || column._endFreezed\"\n [column]=\"column\"\n [columnIndex]=\"$index\"\n [popoverTemplate]=\"(column | isColumnHasHeaderMenu) ? column.headerCellPopoverTemplate : null\"\n [filteringFromHeaderDisabled]=\"_fdpTableService._isFilteringFromHeaderDisabled$()\"\n ></fdp-table-cell-header-popover>\n </fdp-table-header-cell-content>\n </th>\n}\n\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <th fd-table-cell class=\"fdp-table__cell--navigation is-last-child\" role=\"columnheader\"></th>\n}\n\n<th\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n></th>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { DisabledBehaviorDirective, FDK_FOCUSABLE_LIST_DIRECTIVE, ValueByPathPipe } from '@fundamental-ngx/cdk/utils';\nimport { FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { TableCellDirective, TableRowDirective, TableTextDirective } from '@fundamental-ngx/core/table';\nimport {\n SelectionMode,\n SelectionModeValue,\n TableRow,\n TableService,\n isTreeRow,\n isTreeRowFirstCell\n} from '@fundamental-ngx/platform/table-helpers';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-table-popping-row]',\n templateUrl: './table-popping-row.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: TablePoppingRowComponent\n }\n ],\n host: {\n role: 'row',\n '[attr.aria-expanded]': '_isTreeRow(row) ? row.expanded : null'\n },\n standalone: true,\n imports: [\n TableCellDirective,\n DisabledBehaviorDirective,\n TableTextDirective,\n FormLabelComponent,\n NgTemplateOutlet,\n ValueByPathPipe\n ]\n})\nexport class TablePoppingRowComponent<T> extends TableRowDirective {\n /** Table Row. */\n @Input()\n row: TableRow<T>;\n\n /** Whether the row is selected. */\n @HostBinding('attr.aria-selected')\n @Input()\n checked: boolean | null;\n\n /** Current selection mode. */\n @Input()\n selectionMode: SelectionModeValue;\n\n /** Event emitted when group row expansion state needs to be toggled. */\n @Output()\n toggleGroupRow = new EventEmitter<TableRow<T>>();\n\n /** Event emitted when cell being clicked on. */\n @Output()\n cellClicked = new EventEmitter<{ index: number; row: TableRow<T> }>();\n\n /** @hidden */\n readonly SELECTION_MODE = SelectionMode;\n\n /** @hidden */\n readonly _isTreeRow = isTreeRow;\n\n /** @hidden */\n readonly _isTreeRowFirstCell = isTreeRowFirstCell;\n\n /** @hidden */\n readonly _fdpTableService = inject(TableService);\n}\n","@if (selectionMode !== SELECTION_MODE.NONE) {\n <td fd-table-cell fdkDisabled [addDisabledClass]=\"false\"></td>\n}\n\n<td\n fd-table-cell\n colspan=\"100%\"\n [attr.data-nesting-level]=\"row.level + 1\"\n [attr.aria-expanded]=\"_isTreeRow(row) ? row.expanded : null\"\n (click)=\"cellClicked.emit({ index: 0, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell(0, row, $event) && toggleGroupRow.emit(row)\"\n>\n @for (poppingColumn of _fdpTableService.poppingColumns$(); track poppingColumn.name) {\n <div fd-table-text>\n <label fd-form-label>{{ poppingColumn.label }}:</label>\n\n @if (poppingColumn?.columnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"poppingColumn.columnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: true, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n {{ row.value | valueByPath: poppingColumn.key }}\n }\n </div>\n }\n</td>\n","import { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, NgForm } from '@angular/forms';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { InputComponent, PlatformDatePickerComponent, SwitchComponent } from '@fundamental-ngx/platform/form';\nimport { EditableTableCell, TableColumn, TableRow } from '@fundamental-ngx/platform/table-helpers';\nimport { set } from 'lodash-es';\n\nlet controlUniqId = 0;\n\n@Component({\n selector: 'fdp-table-editable-cell',\n templateUrl: './table-editable-cell.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: EditableTableCell, useExisting: TableEditableCellComponent }],\n standalone: true,\n imports: [FormsModule, InputComponent, PlatformDatePickerComponent, SwitchComponent, FdTranslatePipe]\n})\nexport class TableEditableCellComponent implements EditableTableCell {\n /** Table row definition. */\n @Input()\n row: TableRow;\n\n /** Table cell definition. */\n @Input()\n column: TableColumn;\n\n /** Column value. */\n @Input()\n set columnValue(value: any) {\n this._columnValue = value;\n set(this.row.value, this.column.key, value);\n }\n\n get columnValue(): any {\n return this._columnValue;\n }\n\n /** Editable cell form. */\n @ViewChild(NgForm)\n form: NgForm;\n\n /** @hidden */\n _controlUniqName = `input-${controlUniqId++}`;\n\n /** @hidden */\n private _columnValue: any;\n}\n","<form #ngForm>\n @switch (column.dataType) {\n @case ('number') {\n <fdp-input\n [placeholder]=\"'platformTable.editableCellNumberPlaceholder' | fdTranslate\"\n [(ngModel)]=\"columnValue\"\n [name]=\"_controlUniqName\"\n type=\"number\"\n ></fdp-input>\n }\n @case ('date') {\n <fdp-date-picker\n type=\"single\"\n [placeholder]=\"'platformTable.editableCellDatePlaceholder' | fdTranslate\"\n [name]=\"_controlUniqName\"\n [allowNull]=\"false\"\n [(ngModel)]=\"columnValue\"\n ></fdp-date-picker>\n }\n @case ('boolean') {\n <fdp-switch [(ngModel)]=\"columnValue\" [name]=\"_controlUniqName\"></fdp-switch>\n }\n @default {\n <fdp-input\n [placeholder]=\"'platformTable.editableCellStringPlaceholder' | fdTranslate\"\n [(ngModel)]=\"columnValue\"\n [name]=\"_controlUniqName\"\n type=\"text\"\n ></fdp-input>\n }\n }\n</form>\n","import { DOWN_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { AsyncPipe, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChildren,\n ViewEncapsulation,\n computed,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport {\n DisabledBehaviorDirective,\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FDK_FOCUSABLE_LIST_DIRECTIVE,\n FocusableItemDirective,\n FocusableItemPosition,\n KeyUtil,\n RtlService,\n ValueByPathPipe,\n destroyObservable,\n uuidv4\n} from '@fundamental-ngx/cdk/utils';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { ContentDensityObserver } from '@fundamental-ngx/core/content-density';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport {\n TableCellDirective,\n TableIconDirective,\n TableRowDirective,\n TableStatusIndicatorDirective\n} from '@fundamental-ngx/core/table';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport {\n ColumnResizableSidePipe,\n EditableTableCell,\n PlatformTableCellResizableDirective,\n SelectionCellStylesPipe,\n SelectionMode,\n SelectionModeValue,\n TableCellStylesPipe,\n TableColumn,\n TableColumnResizeService,\n TableDraggableDirective,\n TableRow,\n TableRowKeyboardDrag,\n TableRowService,\n TableService,\n isTreeRow,\n isTreeRowFirstCell\n} from '@fundamental-ngx/platform/table-helpers';\nimport { Subject, fromEvent, merge } from 'rxjs';\nimport { filter, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { TableEditableCellComponent } from '../table-editable-cell/table-editable-cell.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-table-row]',\n templateUrl: './table-row.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: TableRowComponent\n }\n ],\n host: {\n role: 'row',\n '[attr.aria-expanded]': '_isTreeRow(row) ? row.expanded : null'\n },\n standalone: true,\n imports: [\n TableCellDirective,\n TableStatusIndicatorDirective,\n DisabledBehaviorDirective,\n NgStyle,\n NgTemplateOutlet,\n CheckboxComponent,\n FormsModule,\n PlatformTableCellResizableDirective,\n NgClass,\n TableEditableCellComponent,\n TableIconDirective,\n AsyncPipe,\n ValueByPathPipe,\n FdTranslatePipe,\n SelectionCellStylesPipe,\n TableCellStylesPipe,\n ColumnResizableSidePipe,\n IconComponent\n ]\n})\nexport class TableRowComponent<T> extends TableRowDirective implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n /** Row ID. */\n @Input()\n rowId: string;\n\n /** Table Row. */\n @Input()\n row: TableRow<T>;\n\n /** Row index. */\n @HostBinding('attr.aria-rowindex')\n @Input()\n index: number;\n\n /** Selection mode. */\n @Input()\n selectionMode: SelectionModeValue;\n\n /** Selectable flag key. */\n @Input()\n selectableKey: string;\n\n /** Whether to enable checkbox tristate mode. */\n @Input()\n enableTristateMode: boolean;\n\n /**\n * Whether to fix the table header and footer. Default is true.\n * Note that if the table contains freezable columns, the header and\n * footer will be fixed automatically, regardless of this input value.\n * */\n @Input()\n fixed: boolean;\n\n /** Selection column width. */\n @Input()\n selectionColumnWidth: number;\n\n /** The column `name` to freeze columns up to and including. */\n @Input()\n freezeColumnsTo: string;\n\n /** The column `name` to freeze columns after and including. */\n @Input()\n freezeEndColumnsTo: string;\n\n /**\n * Event emitted when keyboard drag performed.\n */\n @Output()\n keyboardDrag = new EventEmitter<TableRowKeyboardDrag>();\n\n /** @hidden */\n @ViewChildren(FDK_FOCUSABLE_ITEM_DIRECTIVE)\n private set _focusableViewCellItems(items: QueryList<FocusableItemDirective>) {\n this.setItems(items);\n }\n\n /** @hidden */\n @ViewChildren(EditableTableCell)\n private readonly _editableCells: QueryList<EditableTableCell>;\n\n /** @hidden */\n @HostBinding('attr.aria-selected')\n private get _ariaSelected(): boolean {\n return !!this.row.checked;\n }\n\n /** @hidden */\n _hasRowHeaderColumn$ = computed(() => this._fdpTableService.visibleColumns$().some((c) => c.role === 'rowheader'));\n\n /** @hidden */\n readonly _rtl$ = computed(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n _rowSelectionHelperTextId = `rowSelectionHelper-${uuidv4()}`;\n\n /** @hidden */\n readonly _isTreeRowFirstCell = isTreeRowFirstCell;\n\n /** @hidden */\n readonly SELECTION_MODE = SelectionMode;\n\n /** @hidden */\n readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n /** @hidden */\n readonly _tableColumnResizeService = inject(TableColumnResizeService);\n\n /** @hidden */\n readonly _fdpTableService = inject(TableService);\n\n /** @hidden */\n readonly _tableRowService = inject(TableRowService);\n\n /** @hidden */\n readonly _isTreeRow = isTreeRow;\n\n /** @hidden */\n private readonly _refreshChildRows$ = new Subject<void>();\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private readonly _zone = inject(NgZone);\n\n /** @hidden */\n private readonly _elmRef = inject(ElementRef);\n\n /** @hidden */\n private readonly _dndTableDirective = inject(TableDraggableDirective, {\n optional: true\n });\n\n /** @hidden */\n constructor() {\n super();\n this._tableColumnResizeService.resizeInProgress$\n .pipe(\n switchMap(() => this._tableColumnResizeService.markForCheck),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n this._cdr.markForCheck();\n });\n\n this._zone.runOutsideAngular(() => {\n fromEvent<KeyboardEvent>(this._elmRef.nativeElement, 'keydown')\n .pipe(\n filter(() => !!this._dndTableDirective),\n takeUntilDestroyed()\n )\n .subscribe((event) => {\n this._onKeyDown(event);\n });\n });\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n this._editableCells.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n const cells = this._editableCells.toArray();\n if (cells.length > 0) {\n this._tableRowService.updateEditableCells(this.row, cells);\n } else {\n this._tableRowService.removeEditableCells(this.row);\n }\n });\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n if ('row' in changes) {\n this._listenToRowExpansion();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this._refreshChildRows$.next();\n this._refreshChildRows$.complete();\n this._tableRowService.removeEditableCells(this.row);\n }\n\n /** @hidden */\n _toggleGroupRow(): void {\n this._tableRowService.toggleRow({ type: 'toggleRow', row: this.row });\n }\n\n /** @hidden */\n _toggleSingleSelectableRow(event?: Event): void {\n event?.preventDefault();\n this._tableRowService.toggleRow({ type: 'toggleSingleSelectableRow', row: this.row });\n }\n\n /** @hidden */\n _toggleMultiSelectRow(row: TableRow<T>, event?: Event): void {\n event?.preventDefault();\n this._tableRowService.toggleRow({ ...{ row, event }, ...{ type: 'toggleMultiSelectRow' } });\n }\n\n /** @hidden */\n _columnTrackBy(index: number, column: TableColumn): string {\n return column.name;\n }\n\n /** @hidden */\n _itemFocusedEventAnnouncer = (position: FocusableItemPosition): string => {\n let retVal = `Column ${position.colIndex + 1} of ${position.totalCols}, `;\n let column;\n if (this._fdpTableService?.visibleColumns$) {\n let colIndex = position.colIndex;\n if (this.selectionMode === 'single' || this.selectionMode === 'multiple') {\n colIndex--;\n }\n column = this._fdpTableService.visibleColumns$()[colIndex];\n }\n if (column && (column._freezed || column._endFreezed)) {\n retVal = retVal + 'fixed, ';\n }\n retVal = retVal + `row: ${position.rowIndex + 1} of ${position.totalRows}`;\n return retVal;\n };\n\n /** @hidden */\n protected _handleCellSpaceKey(colIdx: number, tableCellElement: HTMLTableCellElement, $event: Event): void {\n if ($event.target === tableCellElement && isTreeRowFirstCell(colIdx, this.row, $event)) {\n $event.preventDefault();\n this._toggleGroupRow();\n }\n }\n\n /** @hidden */\n private _listenToRowExpansion(): void {\n this._refreshChildRows$.next();\n const refresh = merge(this._refreshChildRows$, destroyObservable(this._destroyRef));\n // Load items only once. Further loading will be covered by the lazy loading functionality.\n this.row?.expanded$\n ?.pipe(\n filter((expanded) => expanded && this.row.children.length === 0),\n takeUntil(refresh)\n )\n .subscribe(() => {\n this._tableRowService.loadChildRows(this.row);\n });\n }\n\n /** @hidden */\n private _onKeyDown(event: KeyboardEvent): void {\n const isArrowDown = KeyUtil.isKeyCode(event, DOWN_ARROW);\n const isArrowUp = KeyUtil.isKeyCode(event, UP_ARROW);\n\n if (!event.altKey) {\n return;\n }\n\n if (!isArrowDown && !isArrowUp) {\n return;\n }\n\n this._dndTableDirective?.dragRowFromKeyboard(\n isArrowDown ? 'down' : 'up',\n event,\n this.index,\n event.shiftKey ? 'group' : 'shift'\n );\n }\n}\n","@if (_fdpTableService._semanticHighlighting$(); as semanticHighlighting) {\n <td\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [addDisabledClass]=\"false\"\n [status]=\"row.value[semanticHighlighting]\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n}\n<!-- hidden text for screenreader -->\n<ng-template #selectionScreenReaderText>\n <span\n aria-hidden=\"true\"\n [attr.id]=\"_rowSelectionHelperTextId\"\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ (row.checked ? 'platformTable.deselectSingleRow' : 'platformTable.selectSingleRow') | fdTranslate }}\n </span>\n</ng-template>\n<!-- Row Selection Cell -->\n@if (selectionMode === SELECTION_MODE.SINGLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [attr.role]=\"_hasRowHeaderColumn$() ? 'rowheader' : 'gridcell'\"\n fd-table-cell\n [focusable]=\"true\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n [attr.aria-selected]=\"row.checked\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n (click)=\"_toggleSingleSelectableRow()\"\n (keydown.enter)=\"_toggleSingleSelectableRow($event)\"\n (keydown.space)=\"_toggleSingleSelectableRow($event)\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n} @else if (selectionMode === SELECTION_MODE.MULTIPLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n role=\"cell\"\n fd-table-cell\n [focusable]=\"true\"\n (keydown.enter)=\"_toggleMultiSelectRow(row, $event)\"\n (keydown.space)=\"_toggleMultiSelectRow(row, $event)\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n [attr.aria-selected]=\"row.checked\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [tristate]=\"enableTristateMode\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"row.checked$ | async\"\n (ngModelChange)=\"_toggleMultiSelectRow(row)\"\n ></fd-checkbox>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n}\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <td\n #tableCellElement\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [focusable]=\"true\"\n [attr.role]=\"column.role\"\n [headers]=\"rowId + '__' + column.name\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n row.isTree && $index === 0 ? 'fd-table__cell--expand' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl$()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [attr.aria-expanded]=\"_isTreeRowFirstCell($index, row) ? row.expanded : null\"\n [attr.data-nesting-level]=\"$index === 0 ? row.level + 1 : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n (click)=\"_tableRowService.cellClicked({ index: $index, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell($index, row, $event) && _toggleGroupRow()\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.space)=\"_handleCellSpaceKey($index, tableCellElement, $event)\"\n >\n <div\n [class.fd-table__text]=\"column.applyText\"\n [class.fd-table__text--no-wrap]=\"column.noWrap\"\n #tableTextContainer\n >\n @if (_isTreeRowFirstCell($index, row)) {\n <span\n class=\"fd-table__expand\"\n [class.fd-table__expand--open]=\"row.expanded$ | async\"\n aria-hidden=\"true\"\n ></span>\n }\n @if (row.state === 'readonly') {\n @if (tableTextContainer.innerText?.trim() === '') {\n <span\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ 'platformTable.emptyCell' | fdTranslate }}\n </span>\n }\n @if (column?.columnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.columnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n {{ row.value | valueByPath: column.key }}\n }\n } @else {\n @if (column?.editableColumnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.editableColumnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n <fdp-table-editable-cell\n [row]=\"row\"\n [column]=\"column\"\n [columnValue]=\"row.value | valueByPath: column.key\"\n ></fdp-table-editable-cell>\n }\n }\n </div>\n </td>\n}\n<ng-content></ng-content>\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <td fd-table-cell class=\"fdp-table__cell--navigation is-last-child\" fdkDisabled [addDisabledClass]=\"false\">\n @if (row.navigatable) {\n <fd-icon\n fd-table-icon\n [navigation]=\"true\"\n [glyph]=\"_rtl$() ? 'slim-arrow-left' : 'slim-arrow-right'\"\n class=\"fdp-table__navigation-indicator\"\n ></fd-icon>\n }\n </td>\n}\n<td\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n></td>\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewChecked,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n inject,\n Injector,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n signal,\n SimpleChanges,\n TrackByFunction,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n DndListDirective,\n DragAndDropModule,\n FDK_FOCUSABLE_GRID_DIRECTIVE,\n FocusableCellPosition,\n FocusableGridDirective,\n IntersectionSpyDirective,\n KeyUtil,\n Nullable,\n RangeSelector,\n RepeatDirective,\n resizeObservable,\n RtlService,\n TabbableElementService\n} from '@fundamental-ngx/cdk/utils';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport {\n ContentDensityMode,\n ContentDensityObserver,\n contentDensityObserverProviders\n} from '@fundamental-ngx/core/content-density';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport {\n TableComponent as CoreTableComponent,\n TableService as CoreTableService,\n TableComponent as FdTableComponent,\n TableBodyDirective,\n TableCellDirective,\n TableHeaderDirective,\n TableRowDirective\n} from '@fundamental-ngx/core/table';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchInput } from '@fundamental-ngx/platform/search-field';\nimport { FDP_PRESET_MANAGED_COMPONENT, isJsObject } from '@fundamental-ngx/platform/shared';\nimport {\n applySelectionToChildren,\n buildNewRowSkeleton,\n CollectionFilter,\n CollectionGroup,\n CollectionSort,\n convertObjectsToTableRows,\n convertTreeObjectsToTableRows,\n convertTreeTableRowToFlatList,\n DEFAULT_HIGHLIGHTING_KEY,\n EDITABLE_ROW_SEMANTIC_STATE,\n EditableTableCell,\n FDP_TABLE_DRAGGABLE_DIRECTIVE,\n FDP_TABLE_STATE_DIRECTIVE,\n FDP_TABLE_VIRTUAL_SCROLL_DIRECTIVE,\n findRowChildren,\n getFreezableColumns,\n getFreezableEndColumns,\n getRowParents,\n getSelectableRows,\n isRowNavigatable,\n isTableRow,\n isTreeRowFirstCell,\n PlatformTableManagedPreset,\n ROW_HEIGHT,\n RowClassesPipe,\n RowComparator,\n SaveRowsEvent,\n SELECTION_COLUMN_WIDTH,\n SelectionMode,\n SelectionModeValue,\n SEMANTIC_HIGHLIGHTING_COLUMN_WIDTH,\n Table,\n TableColumn,\n TableColumnFreezeEvent,\n TableColumnResizeService,\n TableColumnsChangeEvent,\n TableDataSource,\n TableDataSourceDirective,\n TableDraggable,\n TableFilterChangeEvent,\n TableGroupChangeEvent,\n TableHeaderResizerDirective,\n TableInitialState,\n TablePageChangeEvent,\n TableResponsiveService,\n TableRow,\n TableRowActivateEvent,\n TableRowClass,\n TableRowSelectionChangeEvent,\n TableRowService,\n TableRowToggleOpenStateEvent,\n TableRowType,\n TableScrollable,\n TableScrollableDirective,\n TableScrollDispatcherService,\n TableService,\n TableSortChangeEvent,\n TableState,\n TableVirtualScroll\n} from '@fundamental-ngx/platform/table-helpers';\nimport equal from 'fast-deep-equal';\nimport { uniq } from 'lodash-es';\nimport { fromEvent, Observable, of, Subject, Subscription } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap\n} from 'rxjs/operators';\nimport { NoDataWrapperComponent, TABLE_TOOLBAR, TableToolbarInterface, ToolbarContext } from './components';\nimport { TableGrowingButtonComponent } from './components/growing-button/table-growing-button.component';\nimport { PlatformTableColumnResizerComponent } from './components/table-column-resizer/table-column-resizer.component';\nimport { TableGroupRowComponent } from './components/table-group-row/table-group-row.component';\nimport { TableHeaderRowComponent } from './components/table-header-row/table-header-row.component';\nimport { TablePoppingRowComponent } from './components/table-popping-row/table-popping-row.component';\nimport { TableRowComponent } from './components/table-row/table-row.component';\n\nlet tableUniqueId = 0;\n\n/**\n * The component that represents a table.\n * A table is a set of tabular data. Line items can support data, images and actions.\n * ```html\n * <fdp-table\n * [dataSource]=\"source\"\n * fdCompact\n * selectionMode=\"multiple\"\n * emptyTableMessage=\"No data found\">\n *\n * <fdp-table-toolbar\n * title=\"Order Line Items\"\n * [hideItemCount]=\"false\">\n * </fdp-table-toolbar>\n *\n * <fdp-column\n * name=\"name\"\n * key=\"name\"\n * label=\"Name\"\n * align=\"start\">\n * </fdp-column>\n *\n * <fdp-column\n * name=\"description\"\n * key=\"description\"\n * label=\"Description\">\n * </fdp-column>\n * </fdp-table>\n * ```\n */\n@Component({\n selector: 'fdp-table',\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: Table, useExisting: forwardRef(() => TableComponent) },\n TableRowService,\n TableService,\n CoreTableService,\n TableScrollDispatcherService,\n TableColumnResizeService,\n TableResponsiveService,\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY, ContentDensityMode.CONDENSED]\n }),\n {\n provide: FDP_PRESET_MANAGED_COMPONENT,\n useExisting: TableComponent\n }\n ],\n hostDirectives: [\n {\n directive: TableDataSourceDirective,\n inputs: ['dataSource', 'childDataSource'],\n // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n outputs: [\n 'childDataSourceChanged',\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n 'onDataRequested',\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n 'onDataReceived',\n 'dataSourceChanged',\n 'dataChanged',\n 'isLoading'\n ]\n },\n TableHeaderResizerDirective\n ],\n host: {\n class: 'fdp-table',\n '[class.fdp-table--outer-scroll]': 'outerScroll',\n '[class.fd-table--no-horizontal-borders]': 'noHorizontalBorders || noBorders',\n '[class.fd-table--no-vertical-borders]': 'noVerticalBorders || noBorders',\n '[class.fd-table--group]': '_isGroupTable$()'\n },\n standalone: true,\n imports: [\n NgTemplateOutlet,\n BusyIndicatorComponent,\n PlatformTableColumnResizerComponent,\n TableScrollableDirective,\n FocusableGridDirective,\n CoreTableComponent,\n TableHeaderDirective,\n TableHeaderRowComponent,\n TableBodyDirective,\n DragAndDropModule,\n TableGroupRowComponent,\n TableRowComponent,\n TablePoppingRowComponent,\n RepeatDirective,\n TableRowDirective,\n TableCellDirective,\n SkeletonComponent,\n IntersectionSpyDirective,\n AsyncPipe,\n FdTranslatePipe,\n RowClassesPipe,\n TableGrowingButtonComponent\n ]\n})\nexport class TableComponent<T = any>\n extends Table<T>\n implements AfterViewInit, OnDestroy, OnChanges, OnInit, AfterViewChecked\n{\n /** Component name used in a Preset-managed component. */\n @Input()\n name = 'platformTable';\n\n /** ID for the Table. */\n @Input()\n @HostBinding('attr.id')\n id = `fdp-table-${tableUniqueId++}`;\n\n /** Whether to allow resizing columns by dragging the column edge with mouse. */\n @Input()\n enableDragResize = true;\n\n /**\n * Whether to fix the table header and footer. Default is true.\n * Note that if the table contains freezable columns, the header and\n * footer will be fixed automatically, regardless of this input value.\n * */\n @Input()\n fixed = true;\n\n /** The column `name` to freeze columns up to and including. */\n @Input()\n freezeColumnsTo: string;\n\n /** The column `name` to freeze columns after and including. */\n @Input()\n freezeEndColumnsTo: string;\n /** Toggle for page scrolling feature. */\n @Input()\n pageScrolling = false;\n /** Whether the table should render growing button at the bottom. */\n @Input()\n showGrowingButton = false;\n /**\n * Whether to show total items amount in growing button text content.\n */\n @Input()\n showItemsCount = false;\n /** Number of items per page. */\n @Input()\n pageSize: Nullable<number>;\n /** Page scrolling threshold in px. */\n @Input()\n pageScrollingThreshold = 80;\n /** Table body height. */\n @Input()\n bodyHeight: string;\n /** Text displayed when table has no items. */\n @Input()\n emptyTableMessage: string;\n /** Text displayed when table has no visible columns. */\n @Input()\n noVisibleColumnsMessage: string;\n /** Table without horizontal borders. */\n @Input()\n noHorizontalBorders = false;\n /** If the table scrolling should happen outside and stick the toolbar and thead */\n @Input({ transform: booleanAttribute })\n outerScroll = false;\n /** Table without vertical borders. */\n @Input()\n noVerticalBorders = false;\n /** Table without borders. */\n @Input()\n noBorders = false;\n /** Table body without any borders, but header with borders. */\n @Input()\n noBodyBorders = false;\n /** Table without outer borders */\n @HostBinding('class.fdp-table--no-outer-border')\n @Input()\n noOuterBorders = false;\n /** Table body without horizontal borders. */\n @Input()\n noBorderX = false;\n /** Table body without vertical borders. */\n @Input()\n noBorderY = false;\n /** Accessor to a children nodes of tree. */\n @Input()\n relationKey: string;\n /** Table row expanded state key. Used to set the initial state of tree row. */\n @Input()\n expandedStateKey: string;\n /** Property key indicating that the row has children accessible via [childDataSource]. */\n @Input()\n hasChildrenKey: string;\n /**\n * Whether row is navigatable.\n * Pass boolean value to set state for the all rows.\n * Pass string value with the key of the row item's field to compute state for every single row.\n */\n @Input()\n rowNavigatable: string | boolean = false;\n /**\n * Whether to highlight navigated row.\n */\n @Input()\n highlightNavigatedRow = false;\n /** Whether table row can be clicked */\n @Input()\n rowsActivable = false;\n /** Value with the key of the row item's field to enable selecting. */\n @Input()\n selectedKey: string;\n /** Value with the key of the row item's field to enable selecting. */\n @Input()\n selectableKey: string;\n /**\n * Tracking function that will be used to check the differences in data changes.\n * Used similarly to `ngFor` `trackBy` function.\n * Accepts a function that takes two parameters, index and item.\n */\n @Input()\n trackBy: TrackByFunction<T>;\n /**\n * An optional function that identifies uniqueness of a particular row.\n * Table component uses it to be able to preserve selection when a data list is changed.\n */\n @Input()\n rowComparator: RowComparator<T>;\n /** String or function to calculate additional rows' CSS classes. */\n @Input()\n rowsClass: TableRowClass<T>;\n /** Used to construct empty row object for editing. */\n @Input()\n editableRowSkeleton: T;\n /** Whether all rows should be collapsed by default after the table is loaded. */\n @Input()\n expandOnInit = false;\n /**\n * Height of the row, required for the virtualScroll,\n * default is 44px in cozy, 32px in compact and 24px in condensed (set automatically)\n */\n @Input()\n rowHeight = ROW_HEIGHT.get(ContentDensityMode.COZY)!;\n /** Event emitted when the current preset configuration has been changed. */\n /**\n * Whether to load previous pages.\n * This option works only when `pageScrolling` is true, and the initial page > 1\n */\n @Input()\n loadPagesBefore = false;\n\n /** @hidden */\n _selectionMode: SelectionModeValue = SelectionMode.NONE;\n\n /** Sets selection mode for the table. 'single' | 'multiple' | 'none' */\n @Input()\n set selectionMode(value: SelectionModeValue) {\n this._selectionMode = value;\n this._isSelectionColumnShown = this.selectionMode !== SelectionMode.NONE;\n this._setSelectionColumnWidth();\n }\n\n get selectionMode(): SelectionModeValue {\n return this._selectionMode;\n }\n\n /** @hidden */\n private _enableTristateMode = false;\n\n /**\n * When True, the checked state of each tree item depends on the checked\n * state of its parent or direct child.\n */\n @Input()\n set enableTristateMode(value: boolean) {\n this._enableTristateMode = value;\n }\n\n get enableTristateMode(): boolean {\n return this.isTreeTable && this._enableTristateMode;\n }\n\n /** Value with the key of the row item's field to compute semantic state of the row. */\n @Input()\n set semanticHighlighting(value: string) {\n this._semanticHighlightingKey = value;\n this._setSemanticHighlighting();\n }\n get semanticHighlighting(): string {\n if (!this._semanticHighlightingKey && this._forceSemanticHighlighting) {\n return DEFAULT_HIGHLIGHTING_KEY;\n }\n\n return this._semanticHighlightingKey;\n }\n\n /**\n * Whether to force rows to follow 'checked all' state of the table.\n * If true, all new rows that are coming from the dataSource will follow 'checked all' state.\n * If false, row will respect `checkedKey` property to define checked state of itself.\n * Default is false.\n */\n @Input()\n forceCheckedAllState = false;\n\n /**\n * aria-labelledby attribute value for the table.\n */\n @Input()\n ariaLabelledBy: string;\n\n /**\n * Specifies minimal width of the non-frozen columns.\n * Useful when table has large amount of freezable columns and table still should have some free space available.\n */\n @Input()\n set nonFrozenColumnsMinWidth(value: number) {\n this._listenToFixedColumnsWidth();\n this._nonFrozenColumnsMinWidth = value;\n }\n\n get nonFrozenColumnsMinWidth(): number {\n return this._nonFrozenColumnsMinWidth;\n }\n\n /** @hidden */\n private _nonFrozenColumnsMinWidth = 0;\n\n /** @hidden */\n private _shouldCheckNewRows = false;\n\n /** @hidden */\n private _calculateFrozenColumnRefresh$ = new Subject<void>();\n\n /** Event emitted when current preset configuration has been changed. */\n @Output()\n presetChanged = new EventEmitter<PlatformTableManagedPreset>();\n /** Event fired when table selection has changed. */\n @Output()\n readonly rowSelectionChange: EventEmitter<TableRowSelectionChangeEvent<T>> = new EventEmitter<\n TableRowSelectionChangeEvent<T>\n >();\n /** Event fired when table sort order has changed. */\n @Output()\n readonly sortChange: EventEmitter<TableSortChangeEvent> = new EventEmitter<TableSortChangeEvent>();\n /** Event fired when the table filter has changed. */\n @Output()\n readonly filterChange: EventEmitter<TableFilterChangeEvent> = new EventEmitter<TableFilterChangeEvent>();\n /** Event fired when table grouping has changed. */\n @Output()\n readonly groupChange: EventEmitter<TableGroupChangeEvent> = new EventEmitter<TableGroupChangeEvent>();\n /** Event fired when visible columns list has been changed. */\n @Output()\n readonly columnsChange: EventEmitter<TableColumnsChangeEvent> = new EventEmitter<TableColumnsChangeEvent>();\n /** Event emitted when pagination state has been changed. */\n @Output()\n readonly pageChange = new EventEmitter<TablePageChangeEvent>();\n /** Event fired when there is a change in the frozen column. */\n @Output()\n readonly columnFreeze: EventEmitter<TableColumnFreezeEvent> = new EventEmitter<TableColumnFreezeEvent>();\n /** Event fired when group/tree row collapsed/expanded. */\n @Output()\n readonly rowToggleOpenState = new EventEmitter<TableRowToggleOpenStateEvent<T>>();\n /** Event fired when row clicked. */\n @Output()\n readonly rowActivate = new EventEmitter<TableRowActivateEvent<T>>();\n /** Event fired when row navigated. */\n @Output()\n readonly rowNavigate = new EventEmitter<TableRowActivateEvent<T>>();\n /** Event fired when empty row added. */\n @Output()\n readonly emptyRowAdded = new EventEmitter<void>();\n /** Event fired when save button pressed. */\n @Output()\n readonly save = new EventEmitter<SaveRowsEvent<T>>();\n /** Event fired when cancel button pressed. */\n @Output()\n readonly cancel = new EventEmitter<void>();\n /** Event emitted when table body being scrolled. */\n @Output()\n readonly tableScrolled = new EventEmitter<number>();\n /** Event emitted when new rows has been set and rendered. */\n @Output()\n readonly tableRowsSet = new EventEmitter<void>();\n /** Event emitted when all rows being expanded. */\n @Output()\n allRowsExpanded = new EventEmitter<void>();\n /** Event emitted when all rows being collapsed. */\n @Output()\n allRowsCollapsed = new EventEmitter<void>();\n /** Event emitted when a cell is focused. */\n @Output()\n readonly cellFocused = new EventEmitter<any>();\n /** @hidden */\n @ViewChild('tableScrollable')\n readonly tableScrollable: TableScrollable;\n /** @hidden */\n @ViewChild('tableContainer')\n readonly tableContainer: ElementRef<HTMLDivElement>;\n /** @hidden */\n @ViewChild(FdTableComponent, { read: ElementRef })\n readonly table: ElementRef<HTMLDivElement>;\n /** @hidden */\n @ViewChild(FDK_FOCUSABLE_GRID_DIRECTIVE)\n readonly _focusableGrid: FocusableGridDirective;\n /** @hidden */\n @ViewChild('tableBody', { read: ElementRef })\n private readonly _tableBody: ElementRef<HTMLElement>;\n /** @hidden */\n @ViewChild(DndListDirective)\n private readonly _dndDirective: Nullable<DndListDirective<TableRow>>;\n /** @hidden */\n @ContentChildren(TableColumn)\n readonly columns: QueryList<TableColumn>;\n /** @hidden */\n @ContentChildren(EditableTableCell, { descendants: true })\n readonly customEditableCells: QueryList<EditableTableCell>;\n /** @hidden */\n @ContentChild(TABLE_TOOLBAR)\n readonly tableToolbar: TableToolbarInterface;\n /** @hidden */\n @ContentChild(NoDataWrapperComponent)\n readonly _noDataWrapper: Nullable<NoDataWrapperComponent>;\n\n /** Total loaded items. */\n loadedRows$ = signal(0);\n\n /** @hidden */\n get initialSortBy(): CollectionSort[] {\n return this.initialState?.initialSortBy ?? [];\n }\n\n /**\n * @hidden\n * Columns to be rendered in the template\n */\n get _visibleColumns(): TableColumn[] {\n return this._tableService.visibleColumns$();\n }\n\n /** @hidden */\n get isTreeTable(): boolean {\n return !!this._dndTableDirective?.isTreeTable;\n }\n\n /** @hidden */\n get enableRowReordering(): boolean {\n return !!this._dndTableDirective?.enableRowReordering;\n }\n\n /** Whether the table rows are draggable. */\n get isDraggable(): boolean {\n return !!this._dndTableDirective?.isTreeTable && !!this._dndTableDirective?.enableRowReordering;\n }\n\n /** @hidden */\n get _semanticHighlightingColumnWidth(): number {\n return this.semanticHighlighting ? SEMANTIC_HIGHLIGHTING_COLUMN_WIDTH : 0;\n }\n\n /** @hidden Sum of widths of fixed columns (semantic highlighting, selection) */\n get _fixedColumnsPadding(): number {\n return this._semanticHighlightingColumnWidth + this._selectionColumnWidth;\n }\n\n /** @hidden */\n get _tableWidthPx(): number {\n return this.tableContainer.nativeElement.getBoundingClientRect().width;\n }\n\n /** @hidden */\n get loadingState(): boolean {\n return (\n this.loading ??\n (this._dataSourceDirective._internalLoadingState ||\n this._dataSourceDirective._internalChildrenLoadingState ||\n this._dndLoadingState)\n );\n }\n\n /**\n * Whether the selection column should be shown,\n * If there are no visible rows or visible columns\n * or selection mode is none, then selection column should not be shown.\n **/\n get isSelectionColumnShown(): boolean {\n return (\n this._isSelectionColumnShown &&\n !!this._tableRowsVisible.length &&\n this._tableService.visibleColumnsLength() > 0\n );\n }\n\n /** @hidden */\n get _ariaLabelledBy(): string | null {\n if (this.ariaLabelledBy) {\n return this.ariaLabelledBy;\n }\n return this.tableToolbar?.tableToolbarTitleId || null;\n }\n\n /**\n * @hidden\n * Representation of combined table rows.\n * Contains all rows including group rows.\n */\n _tableRows: TableRow<T>[] = [];\n /**\n * @hidden\n * Representation of table rows that came from dataSource.\n * Contains all rows including group rows.\n */\n _dataSourceTableRows: TableRow<T>[] = [];\n /**\n * @hidden\n * Representation of added table rows.\n */\n _newTableRows: TableRow<T>[] = [];\n /**\n * @hidden\n * Visible table rows.\n * Rows list that is used to be rendered in the ui.\n * Based on _tableRows and excludes hidden rows.\n */\n _tableRowsVisible: TableRow<T>[] = [];\n /**\n * @hidden\n * Table Column Map. Where key is column key and value is column\n */\n _keyToColumnMap: Map<string, TableColumn> = new Map();\n /**\n * @hidden\n * Freezable column names and their respective indexes\n */\n _freezableColumns: Map<string, number> = new Map();\n /**\n * @hidden\n * Freezable column names and their respective indexes for columns that will be frozen to the end of the table\n */\n _freezableEndColumns: Map<string, number> = new Map();\n /** @hidden */\n _tableColumnsLength = 0;\n /** @hidden */\n _checkedState: boolean | null = false;\n /** @hidden */\n @HostBinding('class.fd-table--group')\n _isGroupTable$ = computed(() => {\n const groupRules = this._tableService.groupRules$();\n\n return groupRules ? groupRules.size > 0 : (this.initialState?.initialGroupBy?.length ?? 0) > 0;\n });\n /**\n * @hidden\n * Used to create a row component placeholder and set data in it rather than re-create the row component when data changes.\n * Optimizes performance due to skipping initial setup of the component.\n */\n _tableRowsInViewPortPlaceholder: number[] = [];\n /** @hidden */\n _dndTableRowsPlaceholder: TableRow[] = [];\n /** @hidden */\n _isSelectionColumnShown = false;\n /** @hidden */\n readonly _toolbarContext: ToolbarContext;\n /** @hidden */\n _navigatedRowIndex: number;\n /** @hidden */\n _selectionColumnWidth = 0;\n /** @hidden */\n readonly tableColumnsStream: Observable<TableColumn[]>;\n /** @hidden */\n _loadPreviousPages = false;\n /** @hidden */\n _rtl = false;\n /** @hidden */\n readonly _dataSourceDirective = inject<TableDataSourceDirective<T>>(TableDataSourceDirective);\n /** @hidden */\n readonly _tableRowService = inject(TableRowService);\n /** @hidden */\n readonly initialState = inject<TableInitialState>(FDP_TABLE_STATE_DIRECTIVE, {\n optional: true\n });\n /** @hidden */\n readonly _virtualScrollDirective = inject<TableVirtualScroll>(FDP_TABLE_VIRTUAL_SCROLL_DIRECTIVE, {\n optional: true\n });\n /** @hidden */\n readonly _dndTableDirective = inject<TableDraggable>(FDP_TABLE_DRAGGABLE_DIRECTIVE, {\n optional: true\n });\n // keeping \"loading\" field private to make sure \"loadingState\" is used instead\n /** Loading state */\n @Input()\n private loading: boolean | undefined;\n /** @hidden */\n private _semanticHighlightingKey: string;\n /** @hidden */\n private _forceSemanticHighlighting = false;\n /** @hidden */\n private readonly _isShownSortSettingsInToolbar$ = signal(false);\n /** @hidden */\n private readonly _isShownFilterSettingsInToolbar$ = signal(false);\n /** @hidden */\n private readonly _isShownGroupSettingsInToolbar$ = signal(false);\n /** @hidden */\n private readonly _isShownColumnSettingsInToolbar$ = signal(false);\n /**\n * @hidden\n * Indicates when all items are checked\n */\n private _checkedAll = false;\n /**\n * @hidden\n * Indicates whether at least 1 item is checked\n */\n private _checkedAny = false;\n /** @hidden */\n private _subscriptions = new Subscription();\n /** @hidden */\n private _viewInitiated = false;\n /** @hidden */\n private _addedItems: T[] = [];\n /** @hidden */\n private _columnsWidthSet = false;\n /** @hidden */\n private _dndLoadingState = false;\n /** @hidden */\n private readonly _rangeSelector = new RangeSelector();\n /** @hidden */\n private _currentPreset: PlatformTableManagedPreset = {};\n /** @hidden */\n private _initialStateSet = false;\n /** @hidden */\n private _rowHeightManuallySet = false;\n /** @hidden */\n private _shouldEmitRowsChange = false;\n /** @hidden */\n private _lastFreezableColumnCalculation = false;\n /** @hidden */\n private readonly _tableHeaderResizer = inject(TableHeaderResizerDirective);\n\n /**\n * @hidden\n * Mapping function for the trackBy, provided by the user.\n * Is needed, because we are wrapping user supplied data into a `TableRow` class.\n */\n _rowTrackBy: TrackByFunction<number>;\n\n /** @hidden */\n private readonly _defaultTrackBy: TrackByFunction<number> = (index: number) => index;\n\n /** @hidden */\n constructor(\n private readonly _ngZone: NgZone,\n private readonly _cdr: ChangeDetectorRef,\n readonly _tableService: TableService,\n private readonly _tableScrollDispatcher: TableScrollDispatcherService,\n public readonly _tableColumnResizeService: TableColumnResizeService,\n @Optional() private readonly _rtlService: RtlService,\n readonly contentDensityObserver: ContentDensityObserver,\n readonly injector: Injector,\n private readonly _tabbableService: TabbableElementService\n ) {\n super();\n this.initialState?.setTable(this);\n this._dndTableDirective?.setTable(this);\n this._virtualScrollDirective?.setTable(this);\n this._dataSourceDirective.setTable(this);\n\n this._rowTrackBy = this._defaultTrackBy;\n this._toolbarContext = {\n counter: this._dataSourceDirective.totalItems$,\n sortable: this._isShownSortSettingsInToolbar$,\n filterable: this._isShownFilterSettingsInToolbar$,\n groupable: this._isShownGroupSettingsInToolbar$,\n columns: this._isShownColumnSettingsInToolbar$,\n hasAnyActions: computed(\n () =>\n this._isShownSortSettingsInToolbar$() ||\n this._isShownFilterSettingsInToolbar$() ||\n this._isShownGroupSettingsInToolbar$() ||\n this._isShownColumnSettingsInToolbar$()\n )\n };\n\n this.tableColumnsStream = this._tableService.tableColumns$.asObservable();\n\n this._subscriptions.add(\n this._tableRowService.cellFocused$.subscribe((event) => {\n this.cellFocused.emit(event);\n })\n );\n }\n\n /** Returns array of rows that are currently in viewport. */\n getRowsInViewport(): number[] {\n return this._tableRowsInViewPortPlaceholder;\n }\n\n /**\n * Sets an array of rows that are currently in viewport.\n * @param startIndex Start index of all rows.\n * @param length Length of viewport rows.\n */\n setRowsInViewport(startIndex = 0, length: number): void {\n this._tableRowsInViewPortPlaceholder = new Array(length).fill(null).map((_, i) => i + startIndex);\n this._dndTableRowsPlaceholder = this._tableRows.slice(startIndex, length);\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if ('loading' in changes) {\n this._tableService.setTableLoading(this.loadingState);\n }\n\n if ('trackBy' in changes) {\n this._rowTrackBy =\n typeof this.trackBy === 'function'\n ? (index) => this.trackBy(index, this._tableRowsVisible[index].value)\n : this._defaultTrackBy;\n }\n\n // changes below should be checked only after view is initialized\n if (!this._viewInitiated) {\n return;\n }\n\n if ('selectionMode' in changes) {\n this._rangeSelector.reset();\n }\n\n if (\n 'selectionMode' in changes ||\n 'freezeColumnsTo' in changes ||\n 'freezeEndColumnsTo' in changes ||\n 'semanticHighlighting' in changes\n ) {\n this.recalculateTableColumnWidth();\n }\n\n if ('rowNavigatable' in changes) {\n this._tableRows.forEach((row) => (row.navigatable = isRowNavigatable(row.value, this.rowNavigatable)));\n\n this._calculateIsShownNavigationColumn();\n }\n\n if ('rowHeight' in changes) {\n this._rowHeightManuallySet = true;\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._tableColumnResizeService.setTableRef(this);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewInitiated = true;\n\n this.initialState?.setInitialState();\n\n this._dataSourceDirective.initializeDataSource();\n\n this._listenToTableStateChanges();\n\n this._listenToColumns();\n\n this._calculateVisibleColumns();\n\n this._tableService.constructTableMetadata();\n\n this._listenToTableRowsPipe();\n\n this._listenToPageScrolling();\n\n this._virtualScrollDirective?.listenOnVirtualScroll();\n\n this._listenToRowHeightChange();\n\n this._listenToColumnPropertiesChange();\n\n this._listenToTableWidthChanges();\n\n this._listenToTableContainerMouseLeave();\n\n this._listenToLoadingAndRefocusCell();\n\n this._initScrollPosition();\n\n this._listenToFixedColumnsWidth();\n\n if (this.expandOnInit) {\n this.expandAll();\n }\n\n this._subscriptions.add(\n this._virtualScrollDirective?.virtualScrollTransform$\n .pipe(filter(() => !!this._virtualScrollDirective?.virtualScroll && !!this._tableBody))\n .subscribe((transform) => {\n this._tableBody.nativeElement.style.transform = `translateY(${transform}px)`;\n })\n );\n\n if (this._focusableGrid) {\n this._focusableGrid.shortRowFocus = 'first';\n }\n }\n\n /** @hidden */\n ngAfterViewChecked(): void {\n // When table rows are set, emit an event to manipulate the view (e.g., scroll to some row).\n if (!this._shouldEmitRowsChange) {\n return;\n }\n this._shouldEmitRowsChange = false;\n const emitter = this.tableRowsSet;\n this._onZoneFree(() => {\n emitter.emit();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._calculateFrozenColumnRefresh$.next();\n this._calculateFrozenColumnRefresh$.complete();\n }\n\n /** Get current state/settings of the Table. */\n getTableState(): TableState {\n return this._tableService.getTableState();\n }\n\n /** Set current state/settings of the Table. */\n setTableState(state: TableState): void {\n this._tableService.setTableState(state);\n this._cdr.markForCheck();\n }\n\n /** Get table columns definition list. */\n getTableColumns(): TableColumn[] {\n return this.columns?.toArray() || [];\n }\n\n /** Get a list of visible table columns. */\n getVisibleTableColumns(): TableColumn[] {\n return this._visibleColumns || [];\n }\n\n /** Set Sorting rules */\n sort(sortRules: CollectionSort[]): void {\n this._tableService.setSort(sortRules);\n this._cdr.markForCheck();\n }\n\n /** Add Sorting rules to the existing ones */\n addSort(sortRules: CollectionSort[]): void {\n this._tableService.addSort(sortRules);\n this._cdr.markForCheck();\n }\n\n /** Set Filter rules */\n filter(filterRules: CollectionFilter[]): void {\n this._tableService.setFilters(filterRules);\n this._cdr.markForCheck();\n }\n\n /** Add Filter rule */\n addFilter(filterRules: CollectionFilter[]): void {\n this._tableService.addFilters(filterRules);\n this._cdr.markForCheck();\n }\n\n /** Removes filters for the provided fields */\n removeFilter(fields: string[]): void {\n this._tableService.removeFilters(fields);\n this._cdr.markForCheck();\n }\n\n /** Set Groups */\n group(groups: CollectionGroup[]): void {\n this._tableService.setGroups(groups);\n this._cdr.markForCheck();\n }\n\n /** Add Groups */\n addGroup(groups: CollectionGroup[]): void {\n this._tableService.addGroups(groups);\n this._cdr.markForCheck();\n }\n\n /**\n * Set visible table columns\n * The order is matter\n * @param columns table columns names\n */\n setColumns(columns: string[]): void {\n const tableColumns = this.getTableColumns();\n const columnsObject: Record<string, string[]> = {\n columns: [],\n keys: []\n };\n tableColumns\n .filter((column) => columns.includes(column.name))\n // We need to have same order of columns as user defined.\n .sort((a, b) => columns.indexOf(a.name) - columns.indexOf(b.name))\n .reduce((acc, column) => {\n acc.columns.push(column.name);\n acc.keys.push(column.key);\n return acc;\n }, columnsObject);\n this._tableService.setColumns(columnsObject.columns, columnsObject.keys);\n this._cdr.markForCheck();\n }\n\n /** Freeze table to column */\n freezeToColumn(columnName: string, end?: boolean): void {\n end ? (this.freezeEndColumnsTo = columnName) : (this.freezeColumnsTo = columnName);\n\n this._tableService.freezeTo(columnName, end);\n this.recalculateTableColumnWidth();\n this._calculateLastFreezableColumn();\n }\n\n /** Unfreeze column */\n unfreeze(columnName: string, end?: boolean): void {\n const columns = end ? this._freezableEndColumns : this._freezableColumns;\n const freezeToColumnIndex = columns.get(columnName) ?? -1;\n const freezeToPreviousColumnName = columns[freezeToColumnIndex - 1];\n\n end\n ? (this.freezeEndColumnsTo = freezeToPreviousColumnName)\n : (this.freezeColumnsTo = freezeToPreviousColumnName);\n\n this._tableService.freezeTo(freezeToPreviousColumnName, end);\n this.recalculateTableColumnWidth();\n }\n\n /** expand all rows */\n expandAll(): void {\n const expandableRows = this._tableRows.filter((row) => row.type === TableRowType.TREE);\n if (this._dataSourceDirective.childDataSource) {\n this._tableRowService.loadChildRows(expandableRows);\n }\n this._markAsExpanded(expandableRows);\n this.allRowsExpanded.emit();\n }\n\n /** @hidden */\n private _markAsExpanded(rows: TableRow<T>[]): void {\n rows.forEach((e) => {\n e.expanded = true;\n e.hidden = false;\n });\n this.onTableRowsChanged();\n }\n\n /** collapse all rows */\n collapseAll(): void {\n this._tableRows.forEach((e) => {\n e.expanded = false;\n if (e.parent) {\n e.hidden = true;\n }\n });\n this.onTableRowsChanged();\n this.allRowsCollapsed.emit();\n }\n\n /** Search in table */\n search(searchInput: SearchInput): void {\n this._tableService.search(searchInput);\n this._cdr.markForCheck();\n }\n\n /** Set current page number in table */\n setCurrentPage(currentPage: number): void {\n this._tableService.setCurrentPage(currentPage);\n this._cdr.markForCheck();\n }\n\n /** Set items per page number in table */\n setPageSize(pageSize: number, resetPageNumber = true): void {\n this._tableService.setItemsPerPage(pageSize, resetPageNumber);\n }\n\n /** Toolbar Sort Settings button visibility */\n showSortSettingsInToolbar(showSortSettings: boolean): void {\n this._isShownSortSettingsInToolbar$.set(showSortSettings);\n }\n\n /** Toolbar Filter Settings button visibility */\n showFilterSettingsInToolbar(showFilterSettings: boolean): void {\n this._isShownFilterSettingsInToolbar$.set(showFilterSettings);\n }\n\n /** Toolbar Group Settings button visibility */\n showGroupSettingsInToolbar(showGroupSettings: boolean): void {\n this._isShownGroupSettingsInToolbar$.set(showGroupSettings);\n }\n\n /** Toolbar Columns Settings button visibility */\n showColumnSettingsInToolbar(showColumnSettings: boolean): void {\n this._isShownColumnSettingsInToolbar$.set(showColumnSettings);\n }\n\n /** Disable filter from column heder menu */\n setHeaderColumnFilteringDisabled(disabled: boolean): void {\n this._tableService._isFilteringFromHeaderDisabled$.set(disabled);\n }\n\n /** Set the row navigation */\n setRowNavigation(rowIndex: number, rowNavigatable: string | boolean): void {\n const row = this._tableRows[rowIndex];\n\n if (!row) {\n return;\n }\n\n row.navigatable = isRowNavigatable(row.value, rowNavigatable);\n\n this._calculateIsShownNavigationColumn();\n\n this._cdr.markForCheck();\n }\n\n /**\n * Toggle row checked state.\n * @param rowIndex Index of the row.\n */\n toggleSelectableRow(rowIndex: number): void {\n const row = this._tableRows[rowIndex];\n\n if (!row || row.value[this.selectableKey] === false) {\n return;\n }\n\n if (this.selectionMode === SelectionMode.SINGLE) {\n this._toggleSingleSelectableRow(row);\n } else if (this.selectionMode === SelectionMode.MULTIPLE) {\n this._toggleMultiSelectRow(row);\n }\n }\n\n /**\n * Sets the checked state of the row.\n * @param rowIndex Index of the row.\n * @param value Value of the checked state.\n */\n setRowCheckedState(rowIndex: number, value: boolean): void {\n const row = this._tableRows[rowIndex];\n\n if (!row) {\n return;\n }\n\n if (row.checked !== value) {\n this.toggleSelectableRow(rowIndex);\n }\n }\n\n /** Remove the row navigation */\n removeRowNavigation(rowIndex: number): void {\n const row = this._tableRows[rowIndex];\n\n if (!row) {\n return;\n }\n\n row.navigatable = false;\n\n this._calculateIsShownNavigationColumn();\n\n this._cdr.markForCheck();\n }\n\n /** Manually triggers column's width recalculation */\n recalculateTableColumnWidth(): void {\n this._tableColumnResizeService.setColumnNames(this._visibleColumns.map((column) => column.name));\n this._setFreezableInfo();\n }\n\n /** Gets the max allowed width for all freezable columns */\n getMaxAllowedFreezableColumnsWidth(): number {\n if (!this._freezableColumns.size) {\n return 0;\n }\n\n /** Themeable scrollbar has 0.75rem in dimension */\n const scrollbarSizeInPx = 12;\n\n return this._tableWidthPx - this._fixedColumnsPadding - scrollbarSizeInPx - 1;\n }\n\n /** Get table data source */\n getDataSource(): TableDataSource<T> {\n return this._dataSourceDirective._tableDataSource;\n }\n\n /**\n * Adds empty row for editing at the beginning of the rows array.\n */\n addRow(): void {\n this._forceSemanticHighlighting = true;\n this._setSemanticHighlighting();\n\n const newRow = buildNewRowSkeleton(this.editableRowSkeleton, this.columns.toArray());\n newRow[this.semanticHighlighting] = EDITABLE_ROW_SEMANTIC_STATE;\n\n this._addedItems.unshift(newRow);\n\n const newRows = this._createTableRowsByDataSourceItems([newRow]);\n this._newTableRows = [...newRows, ...this._newTableRows];\n\n this._setTableRows();\n this.emptyRowAdded.emit();\n }\n\n /** Cancels editing and discards newly added rows */\n cancelEditing(): void {\n this._resetEditState();\n this.cancel.emit();\n }\n\n /**\n * Emits save event and resets editable rows array.\n */\n saveRows(): void {\n const event = new SaveRowsEvent<T>(() => {\n this._dataSourceDirective._tableDataSource.fetch(this.getTableState());\n }, [...this._addedItems]);\n const editableCells: EditableTableCell[] = ([] as EditableTableCell[]).concat.apply(\n [],\n Array.from(this._tableRowService.editableCells.values())\n );\n\n const forms = [...this.customEditableCells.toArray(), ...editableCells].map((t) => t.form);\n\n // Trigger form revalidation\n forms.forEach((form) => form.onSubmit(null as any));\n if (forms.some((form) => form.invalid)) {\n return;\n }\n\n this._resetEditState();\n this.save.emit(event);\n }\n\n /** Sets current preset for the Table. */\n setPreset(data: PlatformTableManagedPreset): void {\n this._currentPreset = data;\n const newState: TableState = Object.assign({}, this._tableService.getDefaultState(), data);\n this._tableService.setSort(newState.sortBy);\n this._tableService.setFilters(newState.filterBy);\n this._tableService.setGroups(newState.groupBy);\n this.setColumns(newState.columns);\n this._tableService.search(newState.searchInput);\n this._tableService.freezeTo(newState.freezeToColumn);\n this.pageSize = newState.page.pageSize;\n this._tableService.setCurrentPage(newState.page.currentPage);\n this._tableService.setTableState(newState);\n }\n\n /** Returns current preset configuration. */\n getCurrentPreset(): PlatformTableManagedPreset {\n if (!this._currentPreset) {\n return this.getTableState();\n }\n // We need to return object as similar as the original preset.\n const currentPreset = { ...this._currentPreset };\n const presetKeys = Object.keys(currentPreset);\n const currentState = this.getTableState();\n\n Object.keys(currentState).forEach((stateKey) => {\n // Skip state entry if it's not present in preset and doesn't have any value.\n if (\n stateKey === 'columnKeys' ||\n ((!currentState[stateKey] ||\n (Array.isArray(currentState[stateKey]) && currentState[stateKey]?.length === 0)) &&\n !presetKeys.includes(stateKey))\n ) {\n return;\n }\n\n currentPreset[stateKey] = currentState[stateKey];\n });\n\n return currentPreset;\n }\n\n /**\n * Manually triggers list item event listeners for drag&drop list directive.\n */\n refreshDndList(): void {\n if (this._virtualScrollDirective?.virtualScroll !== true) {\n return;\n }\n this._dndDirective?.refreshQueryList();\n }\n\n /**\n * Programmatically toggles `expand` state of the row with defined index.\n * @param rowIndexes row indexes including nested rows.\n *\n * Usage example:\n * * To toggle first level row, pass one argument:\n * ```\n * table.toggleGroupRows(0) // Will result in toggling first row if it's type is `TableRowType.TREE` or `TableRowType.GROUP`.\n * ```\n * * To toggle nested rows, pass additional arguments of indexes:\n * ```\n * table.toggleGroupRows(0, 1) // Will result in toggling first root row, then it's second child.\n * ```\n */\n toggleGroupRows(...rowIndexes: number[]): void {\n let tableRow: TableRow | null = null;\n for (const rowIndex of rowIndexes) {\n tableRow = tableRow ? tableRow.children[rowIndex] : this._tableRows[rowIndex];\n\n if (tableRow.type === TableRowType.ITEM) {\n break;\n }\n\n this._toggleGroupRow(tableRow);\n }\n }\n\n /**\n * Function used to focus a cell in the table utilizing a FocusableCellPosition interface.\n */\n focusCell(position: FocusableCellPosition): void {\n const tableEl = this.table.nativeElement as HTMLTableElement;\n tableEl.rows[position.rowIndex].cells[position.colIndex].focus();\n }\n\n /**\n * Clears the array of table rows. Triggered when new data source is applied.\n */\n clearTableRows(): void {\n this._tableRows = [];\n this.loadedRows$.set(0);\n this._tableRowsVisible = [];\n this._tableRowsInViewPortPlaceholder = [];\n this._newTableRows = [];\n this._dataSourceTableRows = [];\n this._setTableRows([]);\n this._tableService.setCurrentPage(1);\n }\n\n // Private API\n\n /** @hidden */\n _scrollToOverlappedCell(): void {\n this.tableScrollable.scrollToOverlappedCell(\n !!this._rtlService?.rtlSignal(),\n this._freezableColumns.size,\n this._freezableEndColumns.size\n );\n }\n\n /** @hidden */\n _calculatingLoading(isLoading: boolean): void {\n if (this._dndLoadingState === isLoading) {\n return;\n }\n\n this._dndLoadingState = isLoading;\n this._tableService.setTableLoading(this.loadingState);\n }\n\n /**\n * @hidden\n * Toggle selectable row in SelectionMode.MULTIPLE\n */\n _toggleMultiSelectRow(rowToToggle: TableRow, event?: Event): void {\n if (this.selectionMode !== SelectionMode.MULTIPLE) {\n throw new Error('Unexpected selection mode');\n }\n const checked = (rowToToggle.checked = !rowToToggle.checked);\n const rows = this._tableRows;\n const selectedIndex = this._tableRows.findIndex((row) => row === rowToToggle);\n\n const removed: TableRow<T>[] = [];\n const added: TableRow<T>[] = [];\n this._rangeSelector.onRangeElementToggled(selectedIndex, event as PointerEvent | KeyboardEvent);\n\n this._rangeSelector.applyValueToEachInRange((idx) => {\n const row = rows[idx];\n if (row.type === TableRowType.ITEM || row.isTree) {\n row.checked = checked;\n checked ? added.push(row) : removed.push(row);\n\n this._applyTristateSelection(row, added, removed);\n }\n });\n\n this._emitRowSelectionChangeEvent(added, removed);\n\n this._calculateCheckedAll();\n }\n\n /**\n * @hidden\n * Toggle selectable row in SelectionMode.SINGLE\n */\n _toggleSingleSelectableRow(rowToToggle: TableRow): void {\n if (this.selectionMode !== SelectionMode.SINGLE) {\n throw new Error('Unexpected selection mode');\n }\n\n const checked = (rowToToggle.checked = !rowToToggle.checked);\n const removed: TableRow<T>[] = [];\n const added: TableRow<T>[] = [];\n\n // uncheck previously checked\n getSelectableRows(this._tableRows, this.selectableKey).forEach((row) => {\n if (row === rowToToggle) {\n return;\n }\n\n if (row.checked) {\n row.checked = false;\n removed.push(row);\n }\n });\n checked ? added.push(rowToToggle) : removed.push(rowToToggle);\n\n this._emitRowSelectionChangeEvent(added, removed);\n\n this._calculateCheckedAll();\n }\n\n /**\n * @hidden\n * Select / Unselect all selectable rows\n */\n _toggleAllSelectableRows(selectAll: boolean): void {\n const removed: TableRow<T>[] = [];\n const added: TableRow<T>[] = [];\n\n getSelectableRows(this._tableRows, this.selectableKey).forEach((row) => {\n if (row.checked === selectAll) {\n return;\n }\n row.checked = selectAll;\n selectAll ? added.push(row) : removed.push(row);\n });\n\n this._rangeSelector.reset();\n\n this._shouldCheckNewRows = selectAll;\n\n this._emitRowSelectionChangeEvent(added, removed, true);\n\n this._calculateCheckedAll();\n }\n\n /**\n * @hidden\n * Create table row selection event\n */\n _emitRowSelectionChangeEvent(added: TableRow[], removed: TableRow[], all: boolean = false): void {\n const selected = getSelectableRows(this._tableRows, this.selectableKey)\n .filter(({ checked }) => checked)\n .map(({ value }) => value);\n\n this.rowSelectionChange.emit({\n source: this,\n selection: selected,\n added: added.map(({ value }) => value),\n removed: removed.map(({ value }) => value),\n index: added.concat(removed).map(({ index }) => index),\n all\n });\n }\n\n /** @hidden */\n _onCellClick(colIdx: number, row: TableRow<T>): void {\n if (row.state === 'readonly' && isTreeRowFirstCell(colIdx, row)) {\n this._toggleGroupRow(row);\n }\n }\n\n /** @hidden */\n _onRowClick(row: TableRow<T> | null, event: Event): void {\n if (row && row.state !== 'readonly') {\n return;\n }\n\n if (event && event instanceof KeyboardEvent && KeyUtil.isKeyCode(event, SPACE)) {\n const eventTarget = event.target as HTMLElement;\n const tabbableElement = this._tabbableService.getTabbableElement(eventTarget, false, true);\n if (tabbableElement) {\n event.preventDefault();\n tabbableElement.focus();\n tabbableElement.dispatchEvent(new MouseEvent('click'));\n }\n }\n\n if (row) {\n this._emitRowNavigate(row);\n this._emitRowActivate(row);\n }\n }\n\n /** @hidden */\n _emitRowActivate(row: TableRow<T>): void {\n if (!this.rowsActivable) {\n return;\n }\n\n const rowIndex = this._tableRows.indexOf(row);\n this.rowActivate.emit(new TableRowActivateEvent<T>(rowIndex, row.value));\n }\n\n /**\n * @hidden\n * Expand/Collapse group row\n */\n _toggleGroupRow(groupRow: TableRow<T>): void {\n if (this._dndTableDirective?.dragDropInProgress) {\n return;\n }\n\n this.toggleExpandableTableRow(groupRow);\n\n const groupRowIndex = this._tableRows.indexOf(groupRow);\n this.rowToggleOpenState.emit(\n new TableRowToggleOpenStateEvent(groupRowIndex, groupRow.value, groupRow.expanded)\n );\n }\n\n /** @hidden */\n _emitRowNavigate(row: TableRow<T>): void {\n if (!row.navigatable) {\n return;\n }\n const rowIndex = this._tableRows.indexOf(row);\n\n if (this.highlightNavigatedRow) {\n this._navigatedRowIndex = rowIndex;\n }\n\n this.rowNavigate.emit(new TableRowActivateEvent<T>(rowIndex, row.value));\n }\n\n /** Fetch data source data. */\n fetch(): void {\n this._dataSourceDirective._tableDataSource.fetch(this.getTableState());\n }\n\n /** @hidden */\n onTableRowsChanged(): void {\n this._calculateVisibleTableRows();\n this._calculateCheckedAll();\n }\n\n /** @hidden */\n toggleExpandableTableRow(rowToToggle: TableRow, forceFetch = false): void {\n rowToToggle.forceFetch = forceFetch;\n const expanded = (rowToToggle.expanded = !rowToToggle.expanded);\n\n findRowChildren(rowToToggle, this._tableRows).forEach((row) => {\n // if parent is collapsed we want to hide all nested items\n if (!expanded) {\n row.hidden = true;\n row.expanded = false;\n }\n\n // if parent is expanded, we want to show only items which direct parents are expanded as well\n if (expanded) {\n row.hidden = !getRowParents(row, rowToToggle).every((parent) => parent.expanded);\n }\n });\n\n this.onTableRowsChanged();\n }\n\n /** @hidden */\n _onSpyIntersect(intersected: boolean): void {\n if (!intersected) {\n return;\n }\n const {\n page: { currentPage, pageSize }\n } = this.getTableState();\n const totalItems = this._dataSourceDirective.totalItems$();\n const lastPage = Math.ceil(totalItems / (pageSize || totalItems));\n if (currentPage >= lastPage) {\n return;\n }\n this._ngZone.run(() => {\n this.setCurrentPage(currentPage + 1);\n });\n }\n\n /** Manually update index after we add new items to the main array */\n private _reIndexTableRows(): void {\n this._tableRows.map((row, index) => (row.index = index));\n }\n\n /** @hidden */\n private _listenToTableRowsPipe(): void {\n this._subscriptions.add(\n this._dataSourceDirective.items$\n .pipe(\n // map source items to table rows\n map((source: T[]) => this._createTableRowsByDataSourceItems(source)),\n // Insert items to show groups\n switchMap((rows: TableRow[]) =>\n this.isTreeTable\n ? of(rows)\n : this._tableService.groupRulesSubject.pipe(\n map((groupRules) =>\n this._tableRowService.groupTableRows(rows, groupRules.values(), groupRules)\n )\n )\n )\n )\n .subscribe((rows) => {\n rows =\n (this.pageScrolling || this.showGrowingButton) && this.getTableState().page.currentPage > 1\n ? [...this._tableRows, ...rows]\n : rows;\n this._setTableRows(rows);\n })\n );\n\n this._dataSourceDirective.childItems$\n .pipe(\n map((items) => {\n const rowMap = new Map<TableRow<T>, TableRow<T>[]>();\n items.forEach((rowItems, parentRow) => {\n rowMap.set(\n parentRow,\n this._createTableRowsByDataSourceItems(rowItems).map((row) => {\n row.parent = parentRow;\n row.level = parentRow.level + 1;\n row.hidden = !parentRow.expanded;\n return row;\n })\n );\n });\n\n return rowMap;\n })\n )\n .subscribe((items) => {\n items.forEach((rows, parentRow) => {\n this._tableRows.splice(parentRow.index + parentRow.children.length + 1, 0, ...rows);\n\n parentRow.children.push(...rows);\n\n parentRow.lastChild = parentRow.children[parentRow.children.length - 1];\n this._setTableRows(this._tableRows);\n });\n });\n }\n\n /** @hidden */\n private _listenToTableStateChanges(): void {\n this._subscriptions.add(\n this._tableService.tableStateChanges$.subscribe(() => {\n this.presetChanged.emit(this.getCurrentPreset());\n })\n );\n this._subscriptions.add(\n this._tableService.needFetch$\n .pipe(\n map(() => this._tableService.getTableState()),\n filter((state) => !!state && !!this._dataSourceDirective._tableDataSource),\n distinctUntilChanged()\n )\n .subscribe((state) => {\n this._dataSourceDirective._tableDataSource.fetch(state);\n })\n );\n\n this._subscriptions.add(\n this._tableService.stateChange$.subscribe(({ type, state }) => {\n switch (type) {\n case 'columns':\n this._calculateVisibleColumns();\n this.recalculateTableColumnWidth();\n\n this.columnsChange.emit(new TableColumnsChangeEvent(this, state.current, state.previous));\n break;\n case 'filter':\n this.filterChange.emit(new TableFilterChangeEvent(this, state.current, state.previous));\n break;\n case 'freeze':\n if (!this._lastFreezableColumnCalculation) {\n this.columnFreeze.emit(new TableColumnFreezeEvent(this, state.current, state.previous));\n }\n this.fixed = !!this.fixed || !!this._freezableColumns.size || !!this._freezableEndColumns.size;\n break;\n case 'search':\n break;\n case 'group':\n this._calculateVisibleColumns();\n this.recalculateTableColumnWidth();\n\n this.groupChange.emit(new TableGroupChangeEvent(this, state.current, state.previous));\n break;\n case 'page':\n this.pageChange.emit(new TablePageChangeEvent(this, state.current, state.previous));\n break;\n case 'sort':\n this.sortChange.emit(new TableSortChangeEvent(this, state.current, state.previous));\n break;\n }\n })\n );\n\n this._listenToTableRowStateChange();\n }\n\n /** @hidden */\n private _listenToTableRowStateChange(): void {\n this._subscriptions.add(\n this._tableRowService.scrollToOverlappedCell$.subscribe(() => {\n this._scrollToOverlappedCell();\n })\n );\n\n this._subscriptions.add(\n this._tableRowService.loadChildRows$.subscribe((rows) => {\n const state = this.getTableState();\n rows.forEach((row) => {\n this._dataSourceDirective.childDataSource?.dataProvider\n .rowChildrenCount(row, state)\n .pipe(\n filter((count) => row.forceFetch || count > row.children.length),\n tap(() => (row.forceFetch = false)),\n take(1)\n )\n .subscribe(() => {\n const rowState = {\n ...state,\n ...{\n page: {\n currentPage: Math.floor(row.children.length / state.page.pageSize) + 1,\n pageSize: state.page.pageSize\n }\n }\n };\n this._dataSourceDirective.childDataSource?.fetch(rowState, [row]);\n });\n });\n })\n );\n\n this._subscriptions.add(\n this._tableRowService.cellClicked$.subscribe((evt) => {\n this._onCellClick(evt.index, evt.row);\n })\n );\n\n this._subscriptions.add(\n this._tableRowService.toggleAllSelectableRows$.subscribe((evt) => {\n this._toggleAllSelectableRows(evt);\n })\n );\n\n this._subscriptions.add(\n this._tableRowService.toggleRow$.subscribe((evt) => {\n switch (evt.type) {\n case 'toggleRow':\n this._toggleGroupRow(evt.row);\n break;\n case 'toggleMultiSelectRow':\n this._toggleMultiSelectRow(evt.row, evt.event);\n break;\n case 'toggleSingleSelectableRow':\n this._toggleSingleSelectableRow(evt.row);\n break;\n }\n })\n );\n }\n\n /** @hidden */\n private _createTableRowsByDataSourceItems(source: T[]): TableRow<T>[] {\n let rows: TableRow<T>[];\n if (this.isTreeTable) {\n rows = this._createTreeTableRowsByDataSourceItems(source);\n } else {\n rows = convertObjectsToTableRows(\n source,\n this._addedItems,\n this.selectedKey,\n this.rowNavigatable,\n this.selectionMode,\n this._tableRows,\n this.rowComparator\n );\n }\n\n if (this._shouldCheckNewRows && this.forceCheckedAllState) {\n rows.forEach((row) => {\n row.checked = row.checked || true;\n });\n }\n\n return rows;\n }\n\n /** @hidden */\n private _createTreeTableRowsByDataSourceItems(source: T[]): TableRow<T>[] {\n const item = source[0] as any;\n\n if (isTableRow(item)) {\n return convertTreeTableRowToFlatList(source as TableRow[], this.rowNavigatable);\n }\n\n if (isJsObject(item)) {\n return convertTreeObjectsToTableRows(\n source,\n this.selectionMode,\n this._tableRows,\n this.rowComparator,\n this.relationKey,\n this.hasChildrenKey,\n this.selectedKey,\n this.expandedStateKey,\n this.rowNavigatable,\n this.enableTristateMode\n );\n }\n return [];\n }\n\n /** @hidden */\n private _setTableRows(rows = this._dataSourceTableRows): void {\n this._dataSourceTableRows = rows;\n this._tableRows = [...this._newTableRows, ...this._dataSourceTableRows];\n this.loadedRows$.set(this._tableRows.length);\n this._reIndexTableRows();\n this.onTableRowsChanged();\n this._calculateIsShownNavigationColumn();\n this._rangeSelector.reset();\n\n this._shouldEmitRowsChange = true;\n\n if (rows.length && !this._columnsWidthSet) {\n this.recalculateTableColumnWidth();\n this._columnsWidthSet = true;\n }\n\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n private _calculateVisibleTableRows(): void {\n this._tableRowsVisible = this._tableRows.filter((row) => !row.hidden);\n if (this._virtualScrollDirective?.virtualScroll) {\n this._virtualScrollDirective.calculateVirtualScrollRows();\n } else {\n this.setRowsInViewport(0, this._tableRowsVisible.length);\n }\n }\n\n /** @hidden */\n private _listenToRowHeightChange(): void {\n this._subscriptions.add(\n this.contentDensityObserver\n .pipe(\n tap(() => {\n this._setSelectionColumnWidth();\n }),\n filter(() => Array.from(ROW_HEIGHT.values()).includes(this.rowHeight)),\n filter(() => !this._rowHeightManuallySet)\n )\n .subscribe((contentDensity) => {\n this.rowHeight = ROW_HEIGHT.get(contentDensity) ?? ROW_HEIGHT.get(ContentDensityMode.COZY)!;\n if (this._virtualScrollDirective?.virtualScroll) {\n this._virtualScrollDirective.rowHeight = this.rowHeight;\n this._virtualScrollDirective.calculateVirtualScrollRows();\n }\n })\n );\n }\n\n /** @hidden */\n private _listenToColumns(): void {\n this.columns.changes.pipe(startWith(null)).subscribe(() => {\n const columns = this.getTableColumns();\n const prevColumns = this._tableService.tableColumns$.value.map((column) => column.name);\n const currentColumns = columns.map((column) => column.name);\n\n const newColumns = columns\n .filter((column) => column.visible && !prevColumns.includes(column.name))\n .map((c) => c.name);\n const stateColumns = this.getTableState().columns;\n\n this._buildColumnsMap(columns);\n this._tableService.tableColumns$.next(columns);\n\n if (this._initialStateSet) {\n this.setColumns([...stateColumns, ...newColumns]);\n }\n\n this._initialStateSet = true;\n\n const updatedColumns = this._tableService.tableColumns$.value.map((column) => column.name);\n\n if (!equal(updatedColumns, currentColumns)) {\n this._tableService.stateChange$.next({\n type: 'columns',\n state: { previous: currentColumns, current: updatedColumns }\n });\n this._tableService.columnsChange$.next({ previous: currentColumns, current: updatedColumns });\n }\n this._tableService.detectChanges();\n });\n }\n\n /**\n * Construct visible columns for rendering purpose.\n */\n private _calculateVisibleColumns(): void {\n const columnsDefinition = this.getTableColumns();\n const { columns, groupBy } = this.getTableState();\n const groupedColumnsToHide = groupBy.filter(({ showAsColumn }) => !showAsColumn).map(({ field }) => field);\n\n const allColumns = columns // need to start mapping from state.columns list to keep right order\n .map((name) => columnsDefinition.find((column) => column.name === name))\n .filter((column): column is TableColumn => !!column)\n .filter(({ key }) => !groupedColumnsToHide.includes(key));\n\n const [visibleColumns, poppingColumns] = allColumns.reduce(\n (acc, column) => {\n if (column.responsiveState === 'hidden') {\n return acc;\n }\n acc[column.responsiveState === 'visible' ? 0 : 1].push(column);\n return acc;\n },\n [[], []] as TableColumn[][]\n );\n\n this._tableService.setVisibleColumns(visibleColumns);\n this._tableService.setPoppingColumns(poppingColumns);\n\n this._cdr.detectChanges();\n\n this._calculateTableColumnsLength();\n }\n\n /** @hidden */\n private _calculateTableColumnsLength(): void {\n this._tableColumnsLength = this._visibleColumns.length + (this._isSelectionColumnShown ? 1 : 0);\n }\n\n /** @hidden */\n private _calculateIsShownNavigationColumn(): void {\n this._tableService._isShownNavigationColumn$.set(this._tableRows.some((tableRow) => tableRow.navigatable));\n }\n\n /** @hidden */\n private _setFreezableInfo(): void {\n this._freezableColumns = getFreezableColumns(this._visibleColumns, this.freezeColumnsTo);\n this._freezableEndColumns = getFreezableEndColumns(this._visibleColumns, this.freezeEndColumnsTo);\n this.fixed = !!this.fixed || !!this._freezableColumns.size || !!this._freezableEndColumns.size;\n this.columns.forEach((column) => {\n column._freezed = this._freezableColumns.has(column.name);\n column._endFreezed = this._freezableEndColumns.has(column.name);\n });\n }\n\n /** @hidden */\n private _buildColumnsMap(columns = this._tableService.tableColumns$.value): void {\n this._keyToColumnMap = new Map(columns.map((column) => [column.key, column]));\n }\n\n /** @hidden */\n private _calculateCheckedAll(): void {\n const selectableRows = getSelectableRows(this._tableRows, this.selectableKey);\n const totalSelected = selectableRows.filter((r) => r.checked);\n this._checkedAll = totalSelected.length === selectableRows.length && selectableRows.length !== 0;\n this._checkedAny = totalSelected.length > 0;\n this._checkedState = this._checkedAll ? true : this._checkedAny ? null : false;\n }\n\n /**\n * Propagates tristate selection mode to the tree. It starts with updating a state for all the parents and then\n * to children\n *\n * @hidden\n */\n private _applyTristateSelection(row: TableRow, addedRows: TableRow<T>[], removedRows: TableRow<T>[]): void {\n if (!this.enableTristateMode) {\n return;\n }\n this._applySelectionToParents(row, addedRows, removedRows);\n this._applySelectionToChildren(row, addedRows, removedRows);\n }\n\n /** @hidden */\n private _applySelectionToParents(row: TableRow, addedRows: TableRow<T>[], removedRows: TableRow<T>[]): void {\n let currentRow = row.parent;\n\n while (currentRow) {\n const children = findRowChildren(currentRow, this._tableRows).filter((r) => r.parent === currentRow);\n const totalChecked: TableRow<T>[] = [];\n const totalIndeterminate: TableRow<T>[] = [];\n children.forEach((r) => {\n if (r.checked === true) {\n totalChecked.push(r);\n } else if (r.checked === null) {\n totalIndeterminate.push(r);\n }\n });\n const checkedAll = totalChecked.length === children.length;\n const checkedAny = totalChecked.length > 0;\n\n currentRow.checked = checkedAll ? true : checkedAny || totalIndeterminate.length > 0 ? null : false;\n currentRow.checked || currentRow.checked === null\n ? addedRows.push(currentRow)\n : removedRows.push(currentRow);\n\n currentRow = currentRow.parent;\n }\n }\n\n /** @hidden */\n private _applySelectionToChildren(row: TableRow, addedRows: TableRow<T>[], removedRows: TableRow<T>[]): void {\n applySelectionToChildren(this._tableRows, row, addedRows, removedRows);\n }\n\n /** @hidden */\n private _listenToPageScrolling(): void {\n this._subscriptions.add(\n this._tableScrollDispatcher\n .scrolled()\n .pipe(filter(() => this.pageScrolling))\n .subscribe((scrollable) => {\n const scrollTop = scrollable.getScrollTop();\n\n this.tableScrolled.emit(scrollTop);\n\n // Instead of having two places to record this possition, we could just subscribe once.\n this.getTableState().scrollTopPosition = scrollTop;\n })\n );\n }\n\n /** @hidden */\n private _listenToColumnPropertiesChange(): void {\n this._subscriptions.add(\n this._tableService.markForCheck$.pipe(debounceTime(5)).subscribe(() => this._cdr.markForCheck())\n );\n this._subscriptions.add(\n this._tableService.detectChanges$.pipe(debounceTime(5)).subscribe(() => this._cdr.detectChanges())\n );\n }\n\n /** @hidden */\n private _listenToTableWidthChanges(): void {\n this._subscriptions.add(\n resizeObservable(this.tableContainer.nativeElement)\n .pipe(\n tap(() => {\n // this._tableContainerScrollWidth = this.tableContainer.nativeElement.scrollWidth;\n this._checkCellMock();\n }),\n debounceTime(100)\n )\n .subscribe(() => {\n this.recalculateTableColumnWidth();\n if (this._freezableColumns.size || this._freezableEndColumns.size) {\n this._tableColumnResizeService.updateFrozenColumnsWidth();\n this._cdr.detectChanges();\n }\n })\n );\n\n this._subscriptions.add(\n resizeObservable(this.table.nativeElement).subscribe(() => {\n // this._tableScrollWidth = this.table.nativeElement.scrollWidth;\n this._checkCellMock();\n })\n );\n }\n\n /** @hidden */\n private _listenToTableContainerMouseLeave(): void {\n this._ngZone.runOutsideAngular(() => {\n this._subscriptions.add(\n fromEvent(this.tableContainer.nativeElement, 'mouseleave').subscribe(() =>\n this._tableColumnResizeService.hideResizer()\n )\n );\n });\n }\n\n /** @hidden */\n private _initScrollPosition(): void {\n const state = this.getTableState();\n\n if (!state.scrollTopPosition || this._tableRows.length === 0) {\n return;\n }\n this.tableScrollable.initializeScrollTop(state.scrollTopPosition);\n }\n\n /**\n * @hidden\n * Resets editable rows discarding the editable rows array.\n */\n private _resetEditState(): void {\n this._newTableRows = [];\n this._addedItems = [];\n this._forceSemanticHighlighting = false;\n this._setSemanticHighlighting();\n this._setTableRows();\n }\n\n /** @hidden */\n private _listenToLoadingAndRefocusCell(): void {\n this._subscriptions.add(\n this._tableService.tableLoading$.pipe(filter((loadingState) => !loadingState)).subscribe(() => {\n setTimeout(() => {\n if (this._tableHeaderResizer.focusedCellPosition && this._focusableGrid) {\n this._focusableGrid.focusCell(this._tableHeaderResizer.focusedCellPosition);\n }\n });\n })\n );\n }\n\n /** @hidden */\n private _onZoneFree(callback: () => void): void {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n callback();\n });\n }\n\n /** @hidden */\n private _setSemanticHighlighting(): void {\n this._tableService._semanticHighlighting$.set(this.semanticHighlighting);\n this._tableService._semanticHighlightingColumnWidth$.set(this._semanticHighlightingColumnWidth);\n }\n\n /** @hidden */\n private _setSelectionColumnWidth(): void {\n this._selectionColumnWidth = this.isSelectionColumnShown\n ? SELECTION_COLUMN_WIDTH.get(this.contentDensityObserver.value) ?? 0\n : 0;\n }\n\n /** @hidden */\n private _checkCellMock(): void {\n this._tableColumnResizeService.cellMockVisible$.set(\n this._tableColumnResizeService.fixedWidth &&\n (this.tableContainer?.nativeElement?.scrollWidth ?? 0) > (this.table?.nativeElement?.scrollWidth ?? 0)\n );\n }\n\n /**\n * @hidden\n * Listens to fixed column width subject and calculates last applicable frozen column based on `nonFrozenColumnsMinWidth` vaue.\n */\n private _listenToFixedColumnsWidth(): void {\n this._calculateFrozenColumnRefresh$.next();\n this._calculateFrozenColumnRefresh$.complete();\n\n this._calculateFrozenColumnRefresh$ = new Subject();\n\n this._tableColumnResizeService.fixedColumsWidthChange\n .pipe(takeUntil(this._calculateFrozenColumnRefresh$))\n .subscribe(() => this._calculateLastFreezableColumn());\n }\n\n private _calculateLastFreezableColumn(): void {\n if (!this.tableScrollable || this._lastFreezableColumnCalculation) {\n return;\n }\n this._lastFreezableColumnCalculation = true;\n const allColumns = this._tableColumnResizeService.fixedColumsWidthChange.value;\n const allFrozenColumns = uniq([\n ...this._freezableColumns.keys(),\n this.freezeColumnsTo,\n ...this._freezableEndColumns.keys()\n ]);\n const columnSize = {\n frozen: new Map<string, number>(),\n unFrozen: new Map<string, number>()\n };\n allColumns.forEach((size, column) => {\n columnSize[allFrozenColumns.includes(column) ? 'frozen' : 'unFrozen'].set(column, parseInt(size, 10));\n });\n\n const frozenColumnSizes = [...columnSize.frozen.values()];\n\n if (frozenColumnSizes.length === 0) {\n this._lastFreezableColumnCalculation = false;\n return;\n }\n\n const totalFrozenSize = [...columnSize.frozen.values()].reduce((sum, size) => sum + size);\n\n let diff = this.tableScrollable.elementRef.nativeElement.getBoundingClientRect().width - totalFrozenSize;\n const freezedColumns = [...this._freezableColumns.keys()];\n\n if (diff >= this.nonFrozenColumnsMinWidth) {\n this._lastFreezableColumnCalculation = false;\n return;\n }\n\n let lastColumn: string;\n\n while (diff < this.nonFrozenColumnsMinWidth) {\n if (freezedColumns.length === 0) {\n break;\n }\n\n lastColumn = freezedColumns.pop()!;\n diff += columnSize.frozen.get(lastColumn)!;\n }\n\n this._lastFreezableColumnCalculation = false;\n\n this.freezeToColumn(freezedColumns[freezedColumns.length - 1]);\n }\n}\n","@if (tableToolbar) {\n <!-- Toolbar -->\n <ng-template\n [ngTemplateOutlet]=\"tableToolbar.contentTemplateRef\"\n [ngTemplateOutletContext]=\"_toolbarContext\"\n ></ng-template>\n}\n<fd-busy-indicator\n [loading]=\"(_tableService.tableLoading$ | async) === true && _dataSourceDirective._firstLoadingDone\"\n [block]=\"true\"\n>\n <!-- Table Container -->\n <div class=\"fdp-table__container\" #tableContainer>\n <ng-template [ngTemplateOutlet]=\"tableTemplate\"></ng-template>\n @if (enableDragResize) {\n <!-- Table column resizer for visually representing the resizing process -->\n <fdp-table-column-resizer class=\"fdp-table__column-resizer\"></fdp-table-column-resizer>\n }\n </div>\n @if (showGrowingButton) {\n <fdp-table-growing-button [showItemsCount]=\"showItemsCount\" [showItemsCount]=\"true\"></fdp-table-growing-button>\n }\n</fd-busy-indicator>\n<!-- Table Template -->\n<ng-template #tableTemplate>\n <div\n class=\"fdp-table__body fd-scrollbar\"\n [class.fdp-table__body--virtual-scroll]=\"!!_virtualScrollDirective?.virtualScroll\"\n fdpTableScrollable\n #tableScrollable=\"tableScrollable\"\n [style.height]=\"bodyHeight\"\n [class.fixed-height]=\"!!bodyHeight\"\n [attr.role]=\"pageScrolling ? 'feed' : null\"\n [class.fd-table--fixed]=\"_freezableColumns.size || fixed\"\n >\n <table\n fd-table\n [attr.role]=\"isTreeTable ? 'treegrid' : 'grid'\"\n class=\"fdp-table__body-table\"\n [allCellsFocusable]=\"true\"\n [popIn]=\"_tableService.poppingColumns$().length > 0\"\n [class.fd-table--no-outer-border]=\"noOuterBorders\"\n [attr.aria-labelledby]=\"_ariaLabelledBy\"\n >\n <thead fd-table-header class=\"fdp-table__header\">\n <tr\n fdp-table-header-row\n [rowId]=\"id\"\n [fixed]=\"fixed\"\n [isShownSelectionColumn]=\"isSelectionColumnShown\"\n [checkedState]=\"_checkedState\"\n [selectionMode]=\"_selectionMode\"\n [selectionColumnWidth]=\"_selectionColumnWidth\"\n [freezeColumnsTo]=\"freezeColumnsTo\"\n [freezeEndColumnsTo]=\"freezeEndColumnsTo\"\n (keydown.enter)=\"_onRowClick(null, $event)\"\n (keydown.space)=\"_onRowClick(null, $event)\"\n (click)=\"_onRowClick(null, $event)\"\n [disableSelectionCheckbox]=\"_dataSourceTableRows.length === 0\"\n ></tr>\n </thead>\n @if (!!_tableRowsVisible.length && _tableService.visibleColumnsLength() > 0) {\n <tbody\n fd-table-body\n fdkDndList\n #tableBody\n [dragoverPredicate]=\"_dndTableDirective?.dragoverPredicate\"\n [dropPredicate]=\"_dndTableDirective?.dropPredicate\"\n [noBorderX]=\"noBorderX || noBorders\"\n [noBorderY]=\"noBorderY || noBorders\"\n [tabIndex]=\"pageScrolling ? 0 : -1\"\n [items]=\"_dndTableRowsPlaceholder\"\n [draggable]=\"isDraggable\"\n [dropMode]=\"_dndTableDirective?.dropMode ?? 'group'\"\n (itemDropped)=\"_dndTableDirective?.dragDropItemDrop($event)\"\n (dropPredicateCalculating)=\"_calculatingLoading($event)\"\n (dropCancelled)=\"_dndTableDirective?.dropCancelled()\"\n >\n @for (rowIndex of _tableRowsInViewPortPlaceholder; track _rowTrackBy($index, rowIndex)) {\n @if (_tableRowsVisible[rowIndex]; as row) {\n @switch (row.type) {\n @case ('group') {\n <tr\n fdp-table-group-row\n [index]=\"rowIndex\"\n [height]=\"rowHeight\"\n [draggable]=\"isDraggable\"\n [row]=\"row\"\n [rowId]=\"id\"\n [keyToColumnMap]=\"_keyToColumnMap\"\n [tableColumnsLength]=\"_tableColumnsLength\"\n (toggleGroupRow)=\"_toggleGroupRow($event)\"\n (click)=\"_emitRowActivate(row)\"\n ></tr>\n }\n @default {\n <tr\n [fdkDndItem]=\"row\"\n [applyDragItemClass]=\"isDraggable\"\n [class]=\"row | rowClasses: rowsClass\"\n [tabindex]=\"rowsActivable || !!row.navigatable ? 0 : -1\"\n [focusable]=\"rowsActivable || !!row.navigatable\"\n [hoverable]=\"rowsActivable || isSelectionColumnShown || !!row.navigatable\"\n [activable]=\"rowsActivable || !!row.navigatable\"\n [active]=\"rowIndex === _navigatedRowIndex\"\n [highlightActive]=\"highlightNavigatedRow\"\n [style.height.px]=\"rowHeight\"\n [attr.aria-level]=\"isTreeTable ? row.level + 1 : null\"\n (keydown.enter)=\"_onRowClick(row, $event)\"\n (keydown.space)=\"_onRowClick(row, $event)\"\n (click)=\"_onRowClick(row, $event)\"\n (started)=\"_dndTableDirective?.dragDropStart()\"\n [main]=\"true\"\n [class.fd-table__row--draggable]=\"isDraggable\"\n fdp-table-row\n [rowId]=\"id\"\n [index]=\"rowIndex\"\n [row]=\"row\"\n [selectionMode]=\"_selectionMode\"\n [selectableKey]=\"selectableKey\"\n [enableTristateMode]=\"enableTristateMode\"\n [fixed]=\"fixed\"\n [selectionColumnWidth]=\"_selectionColumnWidth\"\n [freezeColumnsTo]=\"freezeColumnsTo\"\n [freezeEndColumnsTo]=\"freezeEndColumnsTo\"\n ></tr>\n }\n }\n @if (row.type === 'item' && _tableService.poppingColumns$().length > 0) {\n <tr\n fdp-table-popping-row\n [secondary]=\"true\"\n [selectionMode]=\"selectionMode\"\n [row]=\"row\"\n [checked]=\"row.checked\"\n [class]=\"row | rowClasses: rowsClass\"\n (toggleGroupRow)=\"_toggleGroupRow($event)\"\n (cellClicked)=\"_onCellClick($event.index, $event.row)\"\n ></tr>\n }\n @if (row.children.length === 0 && (row.childItemsLoading$ | async)) {\n <tr fd-table-row *fdkRepeat=\"3\">\n <td fd-table-cell *fdkRepeat=\"_tableColumnsLength\">\n <fd-skeleton\n [style.margin]=\"'auto 0'\"\n type=\"text\"\n textLines=\"1\"\n width=\"60%\"\n ></fd-skeleton>\n </td>\n </tr>\n }\n <!-- Last rendered child row. -->\n @if (row.parent?.lastChild?.index === row.index) {\n <tr\n aria-hidden=\"true\"\n class=\"fd-table__intersection-spy\"\n [fdkIntersectionSpy]=\"pageScrollingThreshold\"\n (intersected)=\"$event && _tableRowService.loadChildRows(row.parent!)\"\n [style.top.px]=\"pageScrollingThreshold * -1\"\n ></tr>\n }\n }\n }\n @if (pageScrolling) {\n <tr\n aria-hidden=\"true\"\n class=\"fd-table__intersection-spy\"\n [fdkIntersectionSpy]=\"pageScrollingThreshold\"\n (intersected)=\"$event && _onSpyIntersect($event)\"\n [style.top.px]=\"pageScrollingThreshold * -1\"\n ></tr>\n }\n </tbody>\n } @else {\n @if (!_dataSourceDirective._firstLoadingDone) {\n <tbody fd-table-body>\n <tr fd-table-row *fdkRepeat=\"3\">\n <td fd-table-cell *fdkRepeat=\"_tableColumnsLength\">\n <fd-skeleton\n [style.margin]=\"'auto 0'\"\n type=\"text\"\n textLines=\"1\"\n width=\"60%\"\n ></fd-skeleton>\n </td>\n </tr>\n </tbody>\n } @else {\n <tbody fd-table-body class=\"fdp-table__empty\">\n <tr fd-table-row>\n <td fd-table-cell class=\"fd-table__cell--no-data\" [attr.colspan]=\"_tableColumnsLength\">\n <div class=\"fdp-table__empty-table-message\">\n <div>\n <ng-content select=\"fdp-table-no-data-wrapper\"></ng-content>\n </div>\n @if (!_noDataWrapper && _tableService.visibleColumnsLength() > 0) {\n <div>\n {{\n emptyTableMessage || ('platformTable.defaultEmptyMessage' | fdTranslate)\n }}\n </div>\n } @else if (_tableService.visibleColumnsLength() === 0) {\n <div>\n {{\n noVisibleColumnsMessage ||\n ('platformTable.noVisibleColumnsMessage' | fdTranslate)\n }}\n </div>\n }\n </div>\n </td>\n </tr>\n </tbody>\n }\n }\n @if (pageScrolling) {\n <tbody class=\"fd-table__body__focus-mock\"></tbody>\n }\n @if (_virtualScrollDirective?.virtualScroll) {\n <!-- the tbody element below is so the scrollbar renders correctly -->\n <tbody>\n <tr>\n <td colspan=\"100%\" [style.height.px]=\"_virtualScrollDirective!.virtualScrollTotalHeight\"></td>\n </tr>\n </tbody>\n }\n </table>\n </div>\n</ng-template>\n<!-- Empty Table Message -->\n","import { NgModule } from '@angular/core';\n\nimport { TableHelpersModule } from '@fundamental-ngx/platform/table-helpers';\n\nimport {\n FilterCustomComponent,\n FilterMultiSelectComponent,\n FilterRuleComponent,\n FilterSingleSelectComponent,\n FilterStepComponent,\n FiltersComponent,\n FiltersListStepComponent,\n GroupingComponent,\n P13ColumnsDialogComponent,\n P13FilteringDialogComponent,\n P13GroupingDialogComponent,\n ResetButtonComponent,\n SortingComponent,\n TableColumnComponent,\n TableP13ColumnsComponent,\n TableP13DialogComponent,\n TableP13FilterComponent,\n TableP13GroupComponent,\n TableP13SortComponent,\n TableToolbarActionsComponent,\n TableToolbarComponent,\n TableViewSettingsDialogComponent,\n TableViewSettingsFilterComponent\n} from './components';\nimport {\n GetAvailableSortColumnsPipe,\n P13SortingDialogComponent\n} from './components/table-p13-dialog/sorting/sorting.component';\nimport { TableComponent } from './table.component';\n\nimport { NoDataWrapperComponent, PlatformTableColumnResizerComponent } from './components';\nimport { TableEditableCellComponent } from './components/table-editable-cell/table-editable-cell.component';\nimport { TableToolbarLeftActionsComponent } from './components/table-toolbar/table-toolbar-left-actions.component';\n\nimport { TableCellHeaderPopoverComponent, TableHeaderCellContentComponent } from './components';\nimport { TableGrowingButtonComponent } from './components/growing-button/table-growing-button.component';\nimport { TableGroupRowComponent } from './components/table-group-row/table-group-row.component';\nimport {\n IsColumnHasHeaderMenuPipe,\n TableHeaderRowComponent\n} from './components/table-header-row/table-header-row.component';\nimport { TablePoppingRowComponent } from './components/table-popping-row/table-popping-row.component';\nimport { TableRowComponent } from './components/table-row/table-row.component';\n\nconst EXPORTABLE_DECLARATIONS = [\n TableComponent,\n TableColumnComponent,\n TableToolbarComponent,\n TableToolbarActionsComponent,\n TableViewSettingsDialogComponent,\n TableViewSettingsFilterComponent,\n SortingComponent,\n GroupingComponent,\n FiltersComponent,\n FiltersListStepComponent,\n FilterStepComponent,\n FilterSingleSelectComponent,\n FilterMultiSelectComponent,\n FilterCustomComponent,\n ResetButtonComponent,\n TableP13DialogComponent,\n TableP13SortComponent,\n TableP13FilterComponent,\n TableP13GroupComponent,\n TableP13ColumnsComponent,\n P13SortingDialogComponent,\n P13GroupingDialogComponent,\n P13FilteringDialogComponent,\n FilterRuleComponent,\n P13ColumnsDialogComponent,\n PlatformTableColumnResizerComponent,\n NoDataWrapperComponent,\n GetAvailableSortColumnsPipe,\n TableEditableCellComponent,\n TableToolbarLeftActionsComponent,\n TableHeaderCellContentComponent,\n TableCellHeaderPopoverComponent,\n TableRowComponent,\n TableGroupRowComponent,\n TablePoppingRowComponent,\n TableHeaderRowComponent,\n IsColumnHasHeaderMenuPipe,\n TableGrowingButtonComponent\n];\n\n@NgModule({\n imports: [...EXPORTABLE_DECLARATIONS, TableHelpersModule],\n exports: [...EXPORTABLE_DECLARATIONS, TableHelpersModule]\n})\nexport class PlatformTableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","ListComponent","i2","NOT_SELECTED_OPTION_VALUE","dialogConfig","INITIAL_DIRECTION","i3","equal","CoreTableService","FdTableComponent","CoreTableComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-platform-table.mjs","sources":["../../../../libs/platform/table/components/no-data-wrapper/no-data-wrapper.component.ts","../../../../libs/platform/table/components/reset-button/reset-button.component.ts","../../../../libs/platform/table/components/table-cell-header-popover/table-cell-header-popover.component.ts","../../../../libs/platform/table/components/table-cell-header-popover/table-cell-header-popover.component.html","../../../../libs/platform/table/components/table-column-resizer/table-column-resizer.component.ts","../../../../libs/platform/table/components/table-column/table-column.component.ts","../../../../libs/platform/table/components/table-header-cell-content/table-header-cell-content.component.ts","../../../../libs/platform/table/components/table-header-cell-content/table-header-cell-content.component.html","../../../../libs/platform/table/components/table-p13-dialog/columns/columns.component.ts","../../../../libs/platform/table/components/table-p13-dialog/columns/columns.component.html","../../../../libs/platform/table/components/table-p13-dialog/filtering/filtering.model.ts","../../../../libs/platform/table/components/table-p13-dialog/filtering/filter-rule.component.ts","../../../../libs/platform/table/components/table-p13-dialog/filtering/filter-rule.component.html","../../../../libs/platform/table/components/table-p13-dialog/filtering/filtering.component.ts","../../../../libs/platform/table/components/table-p13-dialog/filtering/filtering.component.html","../../../../libs/platform/table/components/table-p13-dialog/grouping/grouping.component.ts","../../../../libs/platform/table/components/table-p13-dialog/grouping/grouping.component.html","../../../../libs/platform/table/components/table-p13-dialog/table-p13-columns.component.ts","../../../../libs/platform/table/components/table-p13-dialog/table-p13-filter.component.ts","../../../../libs/platform/table/components/table-p13-dialog/table-p13-group.component.ts","../../../../libs/platform/table/components/table-p13-dialog/table-p13-sort.component.ts","../../../../libs/platform/table/components/table-p13-dialog/sorting/sorting.component.ts","../../../../libs/platform/table/components/table-p13-dialog/sorting/sorting.component.html","../../../../libs/platform/table/components/table-p13-dialog/table-p13-dialog.component.ts","../../../../libs/platform/table/components/table-toolbar/table-toolbar.ts","../../../../libs/platform/table/components/table-toolbar/table-toolbar-actions.component.ts","../../../../libs/platform/table/components/table-toolbar/table-toolbar-left-actions.component.ts","../../../../libs/platform/table/components/table-toolbar/table-toolbar.component.ts","../../../../libs/platform/table/components/table-toolbar/table-toolbar.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/constants.ts","../../../../libs/platform/table/components/table-view-settings-dialog/table-view-settings-filter.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-custom.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-custom.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-single-select.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-single-select.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filters-active-step.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-step.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filter-step.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filters-list-step.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filters-list-step.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filters.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/filtering/filters.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/grouping/grouping.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/grouping/grouping.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/sorting/sorting.component.ts","../../../../libs/platform/table/components/table-view-settings-dialog/sorting/sorting.component.html","../../../../libs/platform/table/components/table-view-settings-dialog/table-view-settings-dialog.component.ts","../../../../libs/platform/table/components/growing-button/table-growing-button.component.ts","../../../../libs/platform/table/components/growing-button/table-growing-button.component.html","../../../../libs/platform/table/components/table-group-row/table-group-row.component.ts","../../../../libs/platform/table/components/table-group-row/table-group-row.component.html","../../../../libs/platform/table/components/table-header-row/table-header-row.component.ts","../../../../libs/platform/table/components/table-header-row/table-header-row.component.html","../../../../libs/platform/table/components/table-popping-row/table-popping-row.component.ts","../../../../libs/platform/table/components/table-popping-row/table-popping-row.component.html","../../../../libs/platform/table/components/table-editable-cell/table-editable-cell.component.ts","../../../../libs/platform/table/components/table-editable-cell/table-editable-cell.component.html","../../../../libs/platform/table/components/table-row/table-row.component.ts","../../../../libs/platform/table/components/table-row/table-row.component.html","../../../../libs/platform/table/table.component.ts","../../../../libs/platform/table/table.component.html","../../../../libs/platform/table/table.module.ts","../../../../libs/platform/table/fundamental-ngx-platform-table.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fdp-table-no-data-wrapper',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class NoDataWrapperComponent {}\n","import { ChangeDetectionStrategy, Component, Inject, InjectionToken, Signal, ViewEncapsulation } from '@angular/core';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\n\n/**\n * Reset button.\n *\n * Used to reset resettable state by click.\n *\n */\n\nexport interface Resettable {\n reset: () => void;\n isResetAvailable$: Signal<boolean>;\n}\n\nexport const RESETTABLE_TOKEN = new InjectionToken<Resettable>('Resettable');\n\n@Component({\n selector: `fdp-table-reset-button`,\n template: `<button\n fd-button\n fdType=\"transparent\"\n [label]=\"'platformTable.resetChangesButtonLabel' | fdTranslate\"\n (click)=\"resettable.reset()\"\n [disabled]=\"!resettable.isResetAvailable$()\"\n ></button>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [ButtonComponent, FdTranslatePipe]\n})\nexport class ResetButtonComponent {\n /** @hidden */\n constructor(@Inject(RESETTABLE_TOKEN) public resettable: Resettable) {}\n}\n","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Input,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { FormControlComponent, FormItemComponent, FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { ListIconDirective, ListLinkDirective, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { PopoverComponent, TriggerConfig } from '@fundamental-ngx/core/popover';\nimport { TablePopoverDirective } from '@fundamental-ngx/core/table';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { FreeContentListItemComponent, ListComponent } from '@fundamental-ngx/platform/list';\nimport {\n CollectionStringFilter,\n FILTER_STRING_STRATEGY,\n FilterableColumnDataType,\n SortDirection,\n Table,\n TableColumn,\n TableService\n} from '@fundamental-ngx/platform/table-helpers';\nimport { startWith } from 'rxjs/operators';\n\n@Component({\n selector: 'fdp-table-cell-header-popover',\n templateUrl: './table-cell-header-popover.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n PopoverComponent,\n TablePopoverDirective,\n ListComponent,\n FreeContentListItemComponent,\n NgTemplateOutlet,\n TemplateDirective,\n ListLinkDirective,\n ListIconDirective,\n ListTitleDirective,\n FormItemComponent,\n FormLabelComponent,\n FormControlComponent,\n AsyncPipe,\n FdTranslatePipe\n ]\n})\nexport class TableCellHeaderPopoverComponent implements AfterViewInit {\n /** Column definition. */\n @Input()\n column: TableColumn;\n\n /** Custom popover template. */\n @Input()\n popoverTemplate: Nullable<TemplateRef<any>>;\n\n /** Whether the popover is disabled. */\n @Input()\n disabled = false;\n\n /** Whether the column is frozen. */\n @Input()\n columnFrozen = false;\n\n /** Whether the filtering from header is disabled. */\n @Input()\n filteringFromHeaderDisabled: Nullable<boolean> = false;\n\n /** Column index */\n @Input()\n columnIndex: number;\n\n /** @hidden */\n @ViewChild(PopoverComponent, { static: false })\n popover: Nullable<PopoverComponent>;\n\n /** @hidden */\n @ViewChildren(TemplateDirective)\n _popoverItems: QueryList<TemplateDirective>;\n\n /** @hidden */\n _popoverItems$ = signal<TemplateRef<any>[]>([]);\n\n /** @hidden */\n _headerPopoverTriggers: TriggerConfig[] = [\n {\n trigger: 'click',\n openAction: true,\n closeAction: true,\n stopPropagation: true\n },\n {\n trigger: 'keydown.enter',\n openAction: true,\n closeAction: true,\n stopPropagation: true\n },\n {\n trigger: 'keydown.space',\n openAction: true,\n closeAction: true,\n stopPropagation: true\n }\n ];\n\n /** @hidden */\n protected readonly SORT_DIRECTION = SortDirection;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _tableService = inject(TableService);\n\n /** @hidden */\n private readonly _table = inject(Table);\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._popoverItems.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._popoverItems$.set(this._popoverItems.map((t) => t.templateRef));\n });\n }\n\n /** @hidden */\n _setColumnHeaderSortBy(field: TableColumn['key'], direction: SortDirection): void {\n this._tableService.setSort([{ field, direction }]);\n this.popover?.close();\n }\n\n /** @hidden */\n _setColumnHeaderGroupBy(field: TableColumn['key']): void {\n const state = this._tableService.getTableState();\n if (state.groupBy?.length === 1 && state.groupBy[0].field === field) {\n // reset grouping, if already grouped by this field\n this._tableService.setGroups([]);\n } else {\n this._tableService.setGroups([{ field, direction: SortDirection.NONE, showAsColumn: true }]);\n }\n }\n\n /** @hidden */\n _setColumnHeaderFilterBy(field: TableColumn['key'], value: any): void {\n if (!value) {\n this._tableService.removeFilters([field]);\n return;\n }\n const collectionFilter: CollectionStringFilter = {\n field,\n value,\n type: FilterableColumnDataType.STRING,\n strategy: FILTER_STRING_STRATEGY.CONTAINS,\n exclude: false\n };\n\n this._tableService.addFilters([collectionFilter]);\n this.popover?.close();\n }\n\n /** @hidden */\n _freeze(): void {\n this._table.freezeToColumn(this.column.name, this.column.endFreezable);\n this.popover?.close();\n }\n\n /** @hidden */\n _unFreeze(): void {\n this._table.unfreeze(this.column.name, this.column.endFreezable);\n this.popover?.close();\n }\n}\n","@if (!popoverTemplate) {\n <fd-popover\n [disabled]=\"disabled\"\n [noArrow]=\"true\"\n fd-table-popover\n [focusAutoCapture]=\"true\"\n [focusTrapped]=\"true\"\n [triggers]=\"_headerPopoverTriggers\"\n >\n <fdp-list [noBorder]=\"true\" [navigated]=\"true\">\n @for (item of _popoverItems$(); track item) {\n <fdp-free-content-list-item>\n <ng-template\n [ngTemplateOutlet]=\"item\"\n [ngTemplateOutletContext]=\"{ popover: popover }\"\n ></ng-template>\n </fdp-free-content-list-item>\n }\n </fdp-list>\n </fd-popover>\n} @else {\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: _popoverItems$.asReadonly() }\"\n ></ng-template>\n}\n@if (column?.sortable) {\n <ng-template fdkTemplate=\"sortingAscPopoverItem\" let-popover=\"popover\">\n <a\n fd-list-link\n [focusable]=\"true\"\n (click)=\"_setColumnHeaderSortBy(column.key, SORT_DIRECTION.ASC)\"\n (keydown.enter)=\"_setColumnHeaderSortBy(column.key, SORT_DIRECTION.ASC)\"\n >\n <span fd-list-icon glyph=\"sort-ascending\"></span>\n <span fd-list-title>{{ 'platformTable.headerMenuSortAsc' | fdTranslate }}</span>\n </a>\n </ng-template>\n <ng-template fdkTemplate=\"sortingDescPopoverItem\" let-popover=\"popover\">\n <a\n fd-list-link\n [focusable]=\"true\"\n (click)=\"_setColumnHeaderSortBy(column.key, SORT_DIRECTION.DESC)\"\n (keydown.enter)=\"_setColumnHeaderSortBy(column.key, SORT_DIRECTION.DESC)\"\n >\n <span fd-list-icon glyph=\"sort-descending\"></span>\n <span fd-list-title>{{ 'platformTable.headerMenuSortDesc' | fdTranslate }}</span>\n </a>\n </ng-template>\n}\n@if (column?.groupable) {\n <ng-template fdkTemplate=\"groupPopoverItem\" let-popover=\"popover\">\n <a\n fd-list-link\n [focusable]=\"true\"\n (click)=\"_setColumnHeaderGroupBy(column.key)\"\n (keydown.enter)=\"_setColumnHeaderGroupBy(column.key)\"\n >\n <span fd-list-title>{{ 'platformTable.headerMenuGroup' | fdTranslate }}</span>\n </a>\n </ng-template>\n}\n@if (column?.freezable || column?.endFreezable) {\n <ng-template fdkTemplate=\"freezePopoverItem\" let-popover=\"popover\">\n @if (!columnFrozen) {\n <a fd-list-link [focusable]=\"true\" (click)=\"_freeze()\" (keyup.enter)=\"_freeze()\">\n <span fd-list-title>{{\n (!column.endFreezable\n ? columnIndex > 0\n ? 'platformTable.headerMenuFreezePlural'\n : 'platformTable.headerMenuFreeze'\n : 'platformTable.headerMenuEndFreeze'\n ) | fdTranslate\n }}</span>\n </a>\n } @else {\n <a fd-list-link [focusable]=\"true\" (click)=\"_unFreeze()\" (keyup.enter)=\"_unFreeze()\">\n <span fd-list-title>{{\n (columnIndex > 0 ? 'platformTable.headerMenuUnfreezePlural' : 'platformTable.headerMenuUnfreeze')\n | fdTranslate\n }}</span>\n </a>\n }\n </ng-template>\n}\n@if (column?.filterable && !filteringFromHeaderDisabled) {\n <ng-template fdkTemplate=\"filteringPopoverItem\" let-popover=\"popover\">\n <div fd-list-link [style.cursor]=\"'auto'\">\n <i fd-list-icon glyph=\"filter\"></i>\n <div fd-form-item [horizontal]=\"true\" (click)=\"$event.stopPropagation()\">\n <label fd-form-label [for]=\"'fdp-table-column-filtering-' + column.name\">{{\n 'platformTable.headerMenuFilter' | fdTranslate\n }}</label>\n <input\n fd-form-control\n [id]=\"'fdp-table-column-filtering-' + column.name\"\n (keydown.enter)=\"_setColumnHeaderFilterBy(column.key, $any($event.target)?.value)\"\n />\n </div>\n </div>\n </ng-template>\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n Inject,\n NgZone,\n OnInit,\n Optional,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\nimport { TableColumnResizeService } from '@fundamental-ngx/platform/table-helpers';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\n\n/** @dynamic */\n@Component({\n selector: `fdp-table-column-resizer`,\n template: ` <div class=\"fdp-table__resizer-inner\"></div>`,\n styleUrl: './table-column-resizer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'fdp-table-column-resizer'\n },\n standalone: true\n})\nexport class PlatformTableColumnResizerComponent implements OnInit {\n /** @hidden */\n private _pointerMoveListener: Subscription;\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _rtl$ = computed(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n constructor(\n private readonly _ngZone: NgZone,\n private readonly _tableColumnResizeService: TableColumnResizeService,\n private readonly _renderer: Renderer2,\n private readonly _elmRef: ElementRef,\n @Inject(DOCUMENT) private readonly _document: Document | null,\n @Optional() private readonly _rtlService: RtlService\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._ngZone.runOutsideAngular(() => {\n fromEvent<MouseEvent>(this._elmRef.nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((evt) => {\n this._tableColumnResizeService.startResize(evt);\n\n this._listenForMouseUp();\n });\n\n this._tableColumnResizeService.resizerPosition$\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((position) => {\n this._renderer.setStyle(this._elmRef.nativeElement, 'display', position > 0 ? 'block' : 'none');\n if (!position) {\n return;\n }\n this._renderer.setStyle(\n this._elmRef.nativeElement,\n 'left',\n this._rtl$() ? 'auto' : `${position}px`\n );\n this._renderer.setStyle(\n this._elmRef.nativeElement,\n 'right',\n !this._rtl$() ? 'auto' : `${position}px`\n );\n });\n\n this._tableColumnResizeService.resizeInProgress$\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((resizeInProgress) => {\n if (resizeInProgress) {\n this._renderer.addClass(this._elmRef.nativeElement, 'fdp-table-column-resizer--active');\n } else {\n this._renderer.removeClass(this._elmRef.nativeElement, 'fdp-table-column-resizer--active');\n }\n });\n });\n }\n\n /** @hidden */\n private _listenForMouseUp(): void {\n this._ngZone.runOutsideAngular(() => {\n this._pointerMoveListener?.unsubscribe();\n\n if (!this._document) {\n return;\n }\n this._pointerMoveListener = fromEvent<MouseEvent>(this._document, 'mouseup')\n .pipe(take(1), takeUntilDestroyed(this._destroyRef))\n .subscribe((event) => {\n this._tableColumnResizeService.finishResize(event);\n // this._cd.markForCheck();\n });\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Host,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n ColumnAlignValue,\n FdpCellDef,\n FdpColumnResponsiveState,\n FdpEditableCellDef,\n FdpHeaderCellDef,\n FilterableColumnDataType,\n TableCellHeaderPopoverDirective,\n TableColumn,\n TableColumnResizeService,\n TableService\n} from '@fundamental-ngx/platform/table-helpers';\n\n/**\n * The component that represents a table column.\n * ```html\n * <fdp-column\n * name=\"name\"\n * key=\"name\"\n * label=\"Name\"\n * align=\"start\">\n * </fdp-column>\n *\n * <fdp-column\n * name=\"price\"\n * key=\"price.value\">\n * <fdp-table-header *fdpHeaderCellDef>Price</fdp-table-header>\n * <fdp-table-cell *fdpCellDef=\"let item\">\n * {{item.price.value}} {{item.price.currency}}\n * </fdp-table-cell>\n * </fdp-column>\n * ```\n * */\n@Component({\n selector: 'fdp-column',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: TableColumn, useExisting: TableColumnComponent }],\n standalone: true\n})\nexport class TableColumnComponent extends TableColumn implements OnInit, OnChanges {\n /** Column unique identifier. */\n @Input()\n name: string;\n\n /** Column data accessor. */\n @Input()\n key: string;\n\n /** Column header label. */\n @Input()\n label: string;\n\n /** Cell text alignment. */\n @Input() align: ColumnAlignValue = 'start';\n\n /** Toggles sort feature for the column. */\n @Input()\n sortable = false;\n\n /** Toggles filter feature for the column. */\n @Input()\n filterable = false;\n\n /** Initial visibility state of the column. Default `true`. */\n @Input()\n visible = true;\n\n /**\n * Data type the column represents. Default is 'string'\n * @type { 'string' | 'number' | 'date' | 'boolean' }\n */\n @Input()\n dataType: FilterableColumnDataType = FilterableColumnDataType.STRING;\n\n /** Toggles grouping feature for the column. */\n @Input()\n groupable = false;\n\n /** Toggles freeze feature for the column. */\n @Input()\n freezable = false;\n\n /** Toggles freeze feature for the column. */\n @Input()\n endFreezable = false;\n\n /** Width of the column cells. */\n @Input()\n set width(value: string) {\n this._width = value;\n this._tableColumnResizeService.setCustomWidth(this.name, value);\n }\n get width(): string {\n return this._width;\n }\n\n /** Whether the text should wrap, when text is too long for 1 line */\n @Input()\n noWrap = false;\n\n /** Whether to apply fd-table-text (text-shadow) to the cell content, if disabled noWrap has no effect. */\n @Input()\n applyText = true;\n\n /** Column role attribute. */\n @Input()\n role: 'cell' | 'rowheader' | 'gridcell' = 'gridcell';\n\n /** Column cell template */\n columnCellTemplate: Nullable<TemplateRef<any>>;\n\n /** Editable column cell template. */\n editableColumnCellTemplate: Nullable<TemplateRef<any>>;\n\n /** Column header template */\n headerCellTemplate: Nullable<TemplateRef<any>>;\n\n /** Column header popover template. */\n headerCellPopoverTemplate: Nullable<TemplateRef<any>>;\n\n /** Stores information for the header cell if the ellipsis are visible after the column resize */\n headerOverflows = false;\n\n /** @hidden */\n _freezed = false;\n\n /** @hidden */\n _endFreezed = false;\n\n /** @hidden */\n @ContentChild(FdpCellDef)\n set fdpCellDef(fdpCellDef: Nullable<FdpCellDef>) {\n this.columnCellTemplate = fdpCellDef?.templateRef;\n }\n\n /** Editable column cell template definition. */\n @ContentChild(FdpEditableCellDef)\n set fdpEditableCellDef(fdpEditableCellDef: Nullable<FdpEditableCellDef>) {\n this.editableColumnCellTemplate = fdpEditableCellDef?.templateRef;\n }\n\n /** @hidden */\n @ContentChild(FdpHeaderCellDef)\n set fdpHeaderCellDef(fdpHeaderCellDef: Nullable<FdpHeaderCellDef>) {\n this.headerCellTemplate = fdpHeaderCellDef?.templateRef;\n }\n\n /** @hidden */\n @ContentChild(TableCellHeaderPopoverDirective)\n set fdpHeaderCellPopover(popover: Nullable<TableCellHeaderPopoverDirective>) {\n this.headerCellPopoverTemplate = popover?.templateRef;\n }\n\n /** Responsive state of the column. */\n responsiveState: FdpColumnResponsiveState = 'visible';\n\n /** @hidden */\n private _width: string;\n\n /** @hidden */\n constructor(\n private readonly _tableColumnResizeService: TableColumnResizeService,\n @Optional() @Host() private readonly _tableService?: TableService\n ) {\n super();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._validateNameOption();\n }\n\n /** Table won't know about column properties update so notify about it manually\n * @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (this._tableService && (changes.sortable || changes.filterable || changes.groupable || changes.freezable)) {\n this._tableService.markForCheck();\n }\n }\n\n /** @hidden */\n private _validateNameOption(): void {\n if (typeof this.name !== 'string') {\n throw Error('fdp-column: \"name\" option is required.');\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, computed, inject, signal } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { TableIconDirective } from '@fundamental-ngx/core/table';\nimport { SortDirection, TableColumn, TableService } from '@fundamental-ngx/platform/table-helpers';\n\n@Component({\n selector: 'fdp-table-header-cell-content',\n templateUrl: './table-header-cell-content.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\n `\n fdp-table-header-cell-content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-grow: 0;\n }\n fdp-table-header-cell-content .fd-table__text--no-wrap {\n width: 100%;\n }\n `\n ],\n standalone: true,\n imports: [NgTemplateOutlet, IconComponent, TableIconDirective]\n})\nexport class TableHeaderCellContentComponent {\n /** Table Id */\n @Input()\n id: string;\n\n /** Column reference. */\n @Input()\n set column(value: Nullable<TableColumn>) {\n this._column$.set(value);\n }\n\n get column(): Nullable<TableColumn> {\n return this._column$();\n }\n\n /** Whether column has applied sorting. */\n readonly hasSorting$ = computed(() => {\n const column = this._column$();\n return column && this._fdpTableService.sortRules$().has(column.key);\n });\n\n /** Whether column has applied filtering. */\n readonly hasFilter$ = computed(() => {\n const column = this._column$();\n return column && this._fdpTableService.filterRules$().has(column.key);\n });\n\n /** Applied sorting. */\n readonly sorting$ = computed(() => {\n const column = this._column$();\n return column && this._fdpTableService.sortRules$().get(column.key);\n });\n\n /** @hidden */\n readonly SORT_DIRECTION = SortDirection;\n\n /** @hidden */\n private readonly _column$ = signal<Nullable<TableColumn>>(null);\n\n /** @hidden */\n private readonly _fdpTableService = inject(TableService);\n}\n","<div class=\"fd-table__text--no-wrap\" [class.fd-table__inner]=\"hasSorting$() || hasFilter$()\">\n <ng-template\n [ngTemplateOutlet]=\"tableHeaderCellContentTemplate\"\n [ngTemplateOutletContext]=\"{ column: column }\"\n ></ng-template>\n @if (hasSorting$() || hasFilter$()) {\n <div class=\"fd-table__column-header-icons\">\n @if (hasFilter$()) {\n <fd-icon fd-table-icon glyph=\"filter\"></fd-icon>\n }\n @if (hasSorting$()) {\n <fd-icon\n fd-table-icon\n [ariaHidden]=\"true\"\n [glyph]=\"sorting$()?.direction === SORT_DIRECTION.ASC ? 'sort-ascending' : 'sort-descending'\"\n ></fd-icon>\n }\n </div>\n }\n</div>\n<ng-content></ng-content>\n<ng-template #tableHeaderCellContentTemplate let-column=\"column\">\n @if (column?.headerCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.headerCellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: column }\"\n ></ng-template>\n } @else {\n <span [id]=\"id + '-header-cell-' + column?.name\" class=\"fd-table__cell--truncate-txt\">\n {{ column?.label }}\n </span>\n }\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n signal\n} from '@angular/core';\nimport { TableDialogCommonData } from '@fundamental-ngx/platform/table-helpers';\nimport { BehaviorSubject, Subscription, combineLatest } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\nimport { SearchInput } from '@fundamental-ngx/platform/search-field';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { InitialFocusDirective, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { ListComponent, ListItemComponent, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { ToolbarComponent, ToolbarItemDirective, ToolbarSpacerDirective } from '@fundamental-ngx/core/toolbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchFieldComponent } from '@fundamental-ngx/platform/search-field';\nimport { RESETTABLE_TOKEN, ResetButtonComponent, Resettable } from '../../reset-button/reset-button.component';\n\nexport interface DialogTableColumn {\n label: string;\n key: string;\n}\n\ntype VisibleColumnType = string; // ColumnKey\n\nexport interface ColumnsDialogData extends TableDialogCommonData {\n availableColumns: DialogTableColumn[];\n visibleColumns: VisibleColumnType[];\n}\n\nexport interface ColumnsDialogResultData {\n visibleColumns: VisibleColumnType[];\n}\n\nclass SelectableColumn {\n constructor(\n /** Selected */\n public selected: boolean,\n /** Active */\n public active: boolean,\n /** Table Column it belongs to */\n public column: DialogTableColumn\n ) {}\n}\n\nconst INITIAL_SEARCH_TEXT = '';\nconst INITIAL_SHOW_ALL_ITEMS = true;\n\n@Component({\n templateUrl: './columns.component.html',\n styleUrl: './columns.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: P13ColumnsDialogComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n ToolbarComponent,\n SearchFieldComponent,\n ToolbarSpacerDirective,\n ButtonComponent,\n ToolbarItemDirective,\n ListComponent,\n ListItemComponent,\n CheckboxComponent,\n FormsModule,\n ListTitleDirective,\n DialogFooterComponent,\n ButtonBarComponent,\n AsyncPipe,\n FdTranslatePipe,\n InitialFocusDirective\n ]\n})\nexport class P13ColumnsDialogComponent implements Resettable, OnInit, OnDestroy {\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** Table columns available for grouping */\n readonly availableColumns: DialogTableColumn[] = [];\n\n /** All available columns for interacting */\n _selectableColumns: SelectableColumn[] = [];\n\n /** filtered columns that are rendered in the list */\n _filteredColumns: SelectableColumn[] = [];\n\n /** Search Query subject */\n _searchQuerySubject = new BehaviorSubject<string>(INITIAL_SEARCH_TEXT);\n /** Show All flag subject */\n _showAllItemsSubject = new BehaviorSubject<boolean>(INITIAL_SHOW_ALL_ITEMS);\n\n /** Selected columns count */\n _selectedColumnsCount = 0;\n\n /** Flag to track disabled state for move-down move-up buttons */\n _moveUpDisabled = true;\n /** Flag to track disabled state for move-down move-up buttons */\n _moveDownDisabled = true;\n\n /** @hidden */\n get _isShownAllItems(): boolean {\n return this._showAllItemsSubject.getValue();\n }\n\n /** @hidden */\n get _selectAllDisabled(): boolean {\n return !this._isShownAllItems || this._filteredColumns.length === 0;\n }\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(\n public dialogRef: DialogRef<ColumnsDialogData>,\n private cdr: ChangeDetectorRef\n ) {\n const { availableColumns, visibleColumns } = this.dialogRef.data;\n\n this.availableColumns = availableColumns?.map(({ label, key }) => ({ label, key })) || [];\n\n this._initiateColumns(visibleColumns);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenToFilterOptions();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** Reset to the initial state */\n reset(): void {\n this._initiateColumns(this.availableColumns.map((c) => c.key));\n this.isResetAvailable$.set(false);\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const visibleColumns = this._getVisibleColumnsFromSelectedColumns(this._selectableColumns);\n const result: ColumnsDialogResultData = { visibleColumns };\n this.dialogRef.close(result);\n }\n\n /** @hidden */\n _toggleSelectAll(selectAll: boolean): void {\n this._selectableColumns.forEach((column) => (column.selected = selectAll));\n this._onToggleColumn();\n }\n\n /** @hidden */\n _onToggleColumn(): void {\n this._countSelectedColumns();\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n _recalculateResetAvailability(): void {\n let resettable = false;\n if (this._selectedColumnsCount !== this.availableColumns.length) {\n // Initially all columns are selected. If not, reset should be active\n resettable = true;\n } else {\n // if all are selected, check for columns order to match the initial one\n for (let index = 0; index < this.availableColumns.length; index++) {\n if (this._selectableColumns[index].column.key !== this.availableColumns[index].key) {\n resettable = true;\n break;\n }\n }\n }\n this.isResetAvailable$.set(resettable);\n }\n\n /** @hidden */\n _searchInputChange({ text }: SearchInput): void {\n this._searchQuerySubject.next(text || '');\n }\n\n /** @hidden */\n _toggleShowAll(): void {\n const showAllItems = this._showAllItemsSubject.getValue();\n this._showAllItemsSubject.next(!showAllItems);\n }\n\n /** @hidden */\n _setActiveColumn(column: SelectableColumn | null): void {\n this._selectableColumns.map((_column) => {\n _column.active = _column === column;\n });\n\n this._calculateMovementButtonsState();\n }\n\n /** @hidden */\n _moveActiveToTop(): void {\n this._moveColumnInFilteredListByIndex(this._getActiveColumnIndexInFilteredList(), 0);\n }\n\n /** @hidden */\n _moveActiveToBottom(): void {\n this._moveColumnInFilteredListByIndex(\n this._getActiveColumnIndexInFilteredList(),\n this._filteredColumns.length - 1\n );\n }\n\n /** @hidden */\n _moveActiveUp(): void {\n const activeColumnIndex = this._getActiveColumnIndexInFilteredList();\n this._moveColumnInFilteredListByIndex(activeColumnIndex, activeColumnIndex - 1);\n }\n\n /** @hidden */\n _moveActiveDown(): void {\n const activeColumnIndex = this._getActiveColumnIndexInFilteredList();\n this._moveColumnInFilteredListByIndex(activeColumnIndex, activeColumnIndex + 1);\n }\n\n /** @hidden */\n _filterByColumnKy(index: number, item: SelectableColumn): string {\n return item?.column.key;\n }\n\n /**\n * @hidden\n * @param visibleColumnKeys keys of columns that should be displayed as selected.\n * Also, their order matters: it will be used\n */\n private _initiateColumns(visibleColumnKeys: string[]): void {\n const visibleColumnIndexMap = new Map(visibleColumnKeys.map((key, index) => [key, index]));\n this._selectableColumns = this.availableColumns\n .slice()\n // sorting columns in accordance with the order of visible columns\n .sort((a, b) => {\n const aIndex = visibleColumnIndexMap.get(a.key);\n const bIndex = visibleColumnIndexMap.get(b.key);\n if (aIndex === undefined || bIndex === undefined) {\n // preserving initial order of not selected column\n return 0;\n }\n return aIndex - bIndex;\n })\n .map(\n (column, index: number): SelectableColumn => ({\n column,\n selected: visibleColumnKeys.includes(column.key),\n active: index === 0\n })\n );\n\n // keep count of selected\n this._countSelectedColumns();\n\n this._recalculateResetAvailability();\n\n // reset filter settings settings\n this._searchQuerySubject.next(INITIAL_SEARCH_TEXT);\n this._showAllItemsSubject.next(INITIAL_SHOW_ALL_ITEMS);\n }\n\n /** @hidden */\n private _listenToFilterOptions(): void {\n this._subscriptions.add(\n combineLatest([this._showAllItemsSubject, this._searchQuerySubject])\n .pipe(debounceTime(20))\n .subscribe(([showAll, searchQuery]) => {\n this._filteredColumns = this._selectableColumns\n .filter((item) =>\n item.column.label.toLocaleLowerCase().includes(searchQuery.toLocaleLowerCase())\n )\n .filter((item) => showAll || item.selected);\n\n this._onChangeFilteredColumnsList();\n\n this.cdr.markForCheck();\n })\n );\n }\n\n /** @hidden */\n private _onChangeFilteredColumnsList(): void {\n this._calculateMovementButtonsState();\n }\n\n /** @hidden */\n private _getVisibleColumnsFromSelectedColumns(columns = this._selectableColumns): VisibleColumnType[] {\n return columns.filter(({ selected }) => selected).map(({ column }): VisibleColumnType => column.key);\n }\n\n /** @hidden */\n private _getActiveColumnIndexInFilteredList(): number {\n return this._filteredColumns.findIndex(({ active }) => active);\n }\n\n /** @hidden */\n private _moveColumnInFilteredListByIndex(from: number, to: number): void {\n const { movedItem, replacedItem } = this._moveElementInTheListByIndex(this._filteredColumns, from, to);\n /**\n * need to reflect analogical movement in the original list\n * with respect to the original list order\n */\n this._moveColumnInSelectableList(movedItem, replacedItem);\n\n this._calculateMovementButtonsState();\n\n this._recalculateResetAvailability();\n }\n\n /**\n * @hidden\n * Move column in selectable list.\n */\n private _moveColumnInSelectableList(itemToMove: SelectableColumn, targetItem: SelectableColumn): void {\n const list = this._selectableColumns;\n this._moveElementInTheListByIndex(list, list.indexOf(itemToMove), list.indexOf(targetItem));\n }\n\n /**\n * @hidden\n * Move element in the list\n * @return moved item and replaced item.\n */\n private _moveElementInTheListByIndex<T>(\n list: T[],\n fromIndex: number,\n toIndex: number\n ): { movedItem: T; replacedItem: T } {\n const listLength = list.length;\n\n fromIndex = Math.min(Math.max(fromIndex, 0), listLength - 1);\n toIndex = Math.min(Math.max(toIndex, 0), listLength - 1);\n\n const replacedItem = list[toIndex];\n const movedItem = list.splice(fromIndex, 1)[0];\n\n list.splice(toIndex, 0, movedItem);\n\n return { movedItem, replacedItem };\n }\n\n /** @hidden */\n private _countSelectedColumns(): void {\n this._selectedColumnsCount = this._selectableColumns.filter(({ selected }) => selected).length;\n }\n\n /** @hidden */\n private _calculateMovementButtonsState(): void {\n const activeIndex = this._getActiveColumnIndexInFilteredList();\n this._moveUpDisabled = activeIndex < 1;\n this._moveDownDisabled = activeIndex < 0 || activeIndex >= this._filteredColumns.length - 1;\n }\n}\n","<fd-dialog class=\"fdp-table-p13-columns-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.P13ColumnsDialogHeader' | fdTranslate }}\n </h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <fd-toolbar>\n <fdp-search-field\n [placeholder]=\"'platformTable.P13ColumnsDialogSearchPlaceholder' | fdTranslate\"\n [inputText]=\"(_searchQuerySubject | async) || ''\"\n [suggestions]=\"[]\"\n (inputChange)=\"_searchInputChange($event)\"\n fdkInitialFocus\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <!-- Show Selected/All -->\n <button fd-toolbar-item fd-button fdType=\"transparent\" (click)=\"_toggleShowAll()\">\n @if ((_showAllItemsSubject | async) === true) {\n {{ 'platformTable.P13ColumnsDialogsShowSelected' | fdTranslate }}\n } @else {\n {{ 'platformTable.P13ColumnsDialogShowAll' | fdTranslate }}\n }\n </button>\n <!-- Active Button Movement -->\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"collapse-group\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n (click)=\"_moveActiveToTop()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-up\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n (click)=\"_moveActiveUp()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-down\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n (click)=\"_moveActiveDown()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"expand-group\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n (click)=\"_moveActiveToBottom()\"\n ></button>\n </fd-toolbar>\n <ul fd-list [selection]=\"true\" aria-multiselectable=\"true\">\n <li\n fd-list-item\n (focus)=\"_setActiveColumn(null)\"\n [selected]=\"_selectedColumnsCount === _selectableColumns.length\"\n >\n <fd-checkbox\n [ngModel]=\"_selectedColumnsCount === _selectableColumns.length\"\n (ngModelChange)=\"_toggleSelectAll($event)\"\n [disabled]=\"_selectAllDisabled\"\n ></fd-checkbox>\n <span fd-list-title>\n {{\n 'platformTable.P13ColumnsDialogSelectAll'\n | fdTranslate\n : {\n selectedColumnsCount: _selectedColumnsCount,\n selectableColumnsCount: _selectableColumns.length\n }\n }}\n </span>\n </li>\n @for (item of _filteredColumns; track _filterByColumnKy($index, item)) {\n <li\n fd-list-item\n [class.fd-select-item--selected]=\"item.selected\"\n [selected]=\"item.selected\"\n [class.fd-select-item--active]=\"item.active\"\n (focus)=\"_setActiveColumn(item)\"\n >\n <fd-checkbox [(ngModel)]=\"item.selected\" (ngModelChange)=\"_onToggleColumn()\"></fd-checkbox>\n <span fd-list-title>\n {{ item.column.label }}\n </span>\n </li>\n }\n </ul>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13ColumnsDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13ColumnsDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import {\n CollectionFilter,\n FilterableColumnDataType,\n FilterStrategy,\n getFilterStrategiesBasedOnDataType,\n TableDialogCommonData\n} from '@fundamental-ngx/platform/table-helpers';\n\nexport interface FilterableColumn {\n label: string;\n key: string;\n dataType: FilterableColumnDataType;\n filterable?: boolean;\n}\n\nexport interface FilterDialogData extends TableDialogCommonData {\n collectionFilter: CollectionFilter[];\n columns: FilterableColumn[];\n validator?: ((rules: CollectionFilter[]) => boolean) | undefined;\n}\n\nexport interface FilterDialogResultData {\n collectionFilter: CollectionFilter[];\n}\n\n/**\n * Filter Rule\n *\n * represents one rule per row\n */\n\nexport class FilterRule<T = any> {\n /** Validation flg */\n isValid = false;\n\n /** Available strategies options */\n strategies: ReadonlyArray<FilterStrategy> = [];\n\n /** Data type */\n dataType?: FilterableColumnDataType;\n\n /** returns whether filter rule has value */\n get hasValue(): boolean {\n return this.valueExists(this.value) || this.valueExists(this.value2);\n }\n\n /** @hidden */\n constructor(\n readonly columns: ReadonlyArray<FilterableColumn>,\n /** Column key the rule belongs to */\n public columnKey?: string,\n /** Data type */\n public strategy?: FilterStrategy,\n /** Main filter value */\n public value?: T | null,\n /** Additional filter value */\n public value2?: T | null\n ) {\n if (!this.columnKey) {\n this.setColumnKey(columns[0]?.key);\n }\n if (!this.dataType) {\n this.setDataTypeByColumnKey(this.columnKey);\n }\n if (this.strategies.length === 0) {\n this.setStrategiesByColumnKey(this.columnKey);\n }\n }\n\n /** @hidden */\n setValid(isValid: boolean): void {\n this.isValid = isValid;\n }\n\n /** @hidden */\n setValue(value: T | null): void {\n this.value = value;\n }\n\n /** @hidden */\n setValue2(value: T | null): void {\n this.value2 = value;\n }\n\n /** @hidden */\n setStrategy(strategy: FilterStrategy): void {\n this.strategy = strategy;\n }\n\n /** @hidden */\n setStrategiesByColumnKey(columnKey?: string): void {\n const dataType = this.columns.find((column) => column.key === columnKey)?.dataType;\n if (!dataType) {\n return;\n }\n\n const strategies = getFilterStrategiesBasedOnDataType(dataType);\n\n if (this.strategies === strategies) {\n return;\n }\n\n this.strategies = strategies;\n\n if (!this.strategies.includes(this.strategy!)) {\n this.setStrategy(strategies[0]);\n }\n }\n\n /** @hidden */\n setColumnKey(columnKey: string): void {\n if (columnKey === this.columnKey) {\n return;\n }\n this.columnKey = columnKey;\n\n // reset values\n this.setValue(null);\n this.setValue2(null);\n\n // update data type\n this.setDataTypeByColumnKey(columnKey);\n\n // update available strategies list\n this.setStrategiesByColumnKey(columnKey);\n }\n\n /** @hidden */\n setDataTypeByColumnKey(columnKey?: string): void {\n const dataType = this.columns.find((column) => column.key === columnKey)?.dataType;\n\n if (dataType === this.dataType) {\n return;\n }\n\n this.dataType = dataType;\n }\n\n /** @hidden */\n private valueExists(value: any): boolean {\n return !!value || value === 0 || typeof value === 'boolean';\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormsModule, NgForm } from '@angular/forms';\nimport {\n FILTER_STRATEGY,\n FILTER_STRATEGY_LABEL,\n FilterableColumnDataType\n} from '@fundamental-ngx/platform/table-helpers';\nimport { Subscription } from 'rxjs';\nimport { skip } from 'rxjs/operators';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DatePickerComponent } from '@fundamental-ngx/core/date-picker';\nimport { FormControlComponent } from '@fundamental-ngx/core/form';\nimport { LayoutGridColDirective, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { FilterRule } from './filtering.model';\n\n@Component({\n selector: 'fdp-table-filter-rule',\n templateUrl: './filter-rule.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n LayoutGridRowDirective,\n LayoutGridColDirective,\n SelectComponent,\n FormsModule,\n OptionComponent,\n NgTemplateOutlet,\n DatePickerComponent,\n FormControlComponent,\n FdTranslatePipe\n ]\n})\nexport class FilterRuleComponent implements OnDestroy {\n /** Rule to be displayed **/\n @Input() rule: FilterRule;\n\n /** Emits when rule is changed */\n @Output() ruleChange: EventEmitter<void> = new EventEmitter();\n\n /** Emits when rule state is changed */\n @Output() ruleStateChange: EventEmitter<boolean> = new EventEmitter();\n\n /** @hidden */\n readonly FILTER_STRATEGY = FILTER_STRATEGY;\n\n /** @hidden */\n readonly DATA_TYPE = FilterableColumnDataType;\n\n /** @hidden */\n readonly strategyLabels = FILTER_STRATEGY_LABEL;\n\n /** @hidden */\n @ViewChild(NgForm)\n set ngForm(ngForm: NgForm) {\n if (!ngForm) {\n return;\n }\n this._subscriptions.add(\n ngForm.statusChanges\n ?.pipe(\n // Skip first that triggers on initial phase\n skip(1)\n )\n .subscribe(() => {\n const isValid = !!ngForm.valid;\n this.rule.setValid(isValid);\n this.ruleStateChange.emit(isValid);\n })\n );\n }\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n _onModelChange(): void {\n this.ruleChange.emit();\n }\n}\n","<div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow>\n <!-- Column -->\n <fd-select\n class=\"filter-row__select\"\n [ngModel]=\"rule.columnKey\"\n (ngModelChange)=\"rule.setColumnKey($event); _onModelChange()\"\n >\n @for (column of rule.columns; track column) {\n <li fd-option [value]=\"column.key\">{{ column.label }}</li>\n }\n </fd-select>\n </div>\n <div fdLayoutGridCol colGrow>\n <!-- Strategy -->\n <fd-select\n class=\"filter-row__select\"\n [ngModel]=\"rule.strategy\"\n (ngModelChange)=\"rule.setStrategy($event); _onModelChange()\"\n >\n @for (strategy of rule.strategies; track strategy) {\n <li fd-option [value]=\"strategy\">\n {{\n strategyLabels[strategy] || 'platformTable.P13FilterStrategyLabelNotDefined'\n | fdTranslate\n }}\n </li>\n }\n </fd-select>\n </div>\n </div>\n </div>\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow ngForm>\n @if (rule.strategy === FILTER_STRATEGY.BETWEEN) {\n <div fdLayoutGridCol colGrow>\n <ng-template\n [ngTemplateOutlet]=\"ruleInputTemplate\"\n [ngTemplateOutletContext]=\"{ valueKey: 'value' }\"\n ></ng-template>\n </div>\n <div fdLayoutGridCol colGrow>\n <ng-template\n [ngTemplateOutlet]=\"ruleInputTemplate\"\n [ngTemplateOutletContext]=\"{ valueKey: 'value2' }\"\n ></ng-template>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <ng-template\n [ngTemplateOutlet]=\"ruleInputTemplate\"\n [ngTemplateOutletContext]=\"{ valueKey: 'value' }\"\n ></ng-template>\n </div>\n }\n\n <!-- Rule Control Based on Data Type -->\n <ng-template #ruleInputTemplate let-valueKey=\"valueKey\">\n @if (rule.dataType === DATA_TYPE.DATE) {\n <fd-date-picker\n class=\"filter-row__input\"\n type=\"single\"\n [required]=\"true\"\n [name]=\"valueKey\"\n [(ngModel)]=\"rule[valueKey]\"\n (ngModelChange)=\"_onModelChange()\"\n ></fd-date-picker>\n } @else if (rule.dataType === DATA_TYPE.BOOLEAN) {\n <fd-select\n class=\"filter-row__select\"\n [name]=\"valueKey\"\n [(ngModel)]=\"rule[valueKey]\"\n (ngModelChange)=\"_onModelChange()\"\n [required]=\"true\"\n >\n <li fd-option [value]=\"undefined\">\n {{ 'platformTable.P13FilterBooleanOptionNotDefined' | fdTranslate }}\n </li>\n <li fd-option [value]=\"true\">\n {{ 'platformTable.P13FilterBooleanOptionTrue' | fdTranslate }}\n </li>\n <li fd-option [value]=\"false\">\n {{ 'platformTable.P13FilterBooleanOptionFalse' | fdTranslate }}\n </li>\n </fd-select>\n } @else {\n <input\n type=\"text\"\n class=\"filter-row__input\"\n fd-form-control\n required\n [name]=\"valueKey\"\n [(ngModel)]=\"rule[valueKey]\"\n (ngModelChange)=\"_onModelChange()\"\n />\n }\n </ng-template>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, signal } from '@angular/core';\nimport { CollectionFilter } from '@fundamental-ngx/platform/table-helpers';\n\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\n\nimport { RESETTABLE_TOKEN, ResetButtonComponent, Resettable } from '../../reset-button/reset-button.component';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';\nimport { PanelComponent, PanelContentDirective, PanelTitleDirective } from '@fundamental-ngx/core/panel';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { FilterRuleComponent } from './filter-rule.component';\nimport { FilterDialogData, FilterDialogResultData, FilterRule, FilterableColumn } from './filtering.model';\n\nexport { FilterDialogData, FilterDialogResultData };\n\n@Component({\n templateUrl: './filtering.component.html',\n styleUrl: './filtering.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: P13FilteringDialogComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n PanelComponent,\n PanelTitleDirective,\n PanelContentDirective,\n LayoutGridComponent,\n LayoutGridRowDirective,\n FilterRuleComponent,\n LayoutGridColDirective,\n ButtonComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe\n ]\n})\nexport class P13FilteringDialogComponent implements Resettable {\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** Table columns available for filtering */\n readonly columns: FilterableColumn[] = [];\n\n /**\n * @hidden\n * Include Rules\n */\n _includeRules: FilterRule[] = [];\n\n /**\n * @hidden\n * Exclude Rules\n */\n _excludeRules: FilterRule[] = [];\n\n /**\n * @hidden\n * Count of valid included rules\n */\n _validIncludeRulesCount = 0;\n\n /**\n * @hidden\n * Count of valid excluded rules\n */\n _validExcludeRulesCount = 0;\n\n /**\n * @hidden\n * Panel opened/closed flag\n */\n _includePanelExpanded = true;\n\n /**\n * @hidden\n * Panel opened/closed flag\n */\n _excludePanelExpanded = false;\n\n /** @hidden */\n constructor(public dialogRef: DialogRef<FilterDialogData>) {\n const { columns, collectionFilter } = this.dialogRef.data;\n\n this.columns = columns.filter((column) => column.filterable) || [];\n\n this._initiateRules(collectionFilter);\n\n this._calculateValidRulesCount();\n\n this._excludePanelExpanded = this._validExcludeRulesCount > 0;\n\n this._recalculateResetAvailability();\n }\n\n /** Reset changes to the initial state */\n reset(): void {\n this._initiateRules();\n this.isResetAvailable$.set(false);\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const includeFilters = this._getCollectionFiltersFromIncludeRules();\n const excludeFilters = this._getCollectionFiltersFromExcludeRules();\n const validator = this.dialogRef.data.validator;\n const combinedFilters = [...includeFilters, ...excludeFilters];\n\n if (!validator || validator(combinedFilters)) {\n const result: FilterDialogResultData = { collectionFilter: combinedFilters };\n\n this.dialogRef.close(result);\n }\n }\n\n /** @hidden */\n _removeRule(rule: FilterRule, rules: FilterRule[]): void {\n const index = rules.indexOf(rule);\n\n if (index === -1) {\n return;\n }\n\n rules.splice(index, 1);\n\n // Keep at least one item in the list\n if (rules.length === 0) {\n rules.push(new FilterRule(this.columns));\n }\n\n this._recalculateResetAvailability();\n\n this._calculateValidRulesCount();\n }\n\n /** @hidden */\n _addNewRule(rules: FilterRule[]): void {\n const lastRule = rules.slice(-1)[0];\n rules.push(new FilterRule(this.columns, lastRule?.columnKey, lastRule?.strategy));\n }\n\n /** @hidden */\n _recalculateResetAvailability(): void {\n const hasOnlyOneEmptyIncludeRule = this._includeRules.length === 1 && !this._includeRules[0].hasValue;\n const hasOnlyOneEmptyExcludeRule = this._excludeRules.length === 1 && !this._excludeRules[0].hasValue;\n this.isResetAvailable$.set(!hasOnlyOneEmptyIncludeRule || !hasOnlyOneEmptyExcludeRule);\n }\n\n /** @hidden */\n _onRuleStateChange(): void {\n this._calculateValidRulesCount();\n }\n\n /** @hidden */\n private _initiateRules(initialRules?: CollectionFilter[]): void {\n this._includeRules = this._createRules(initialRules?.filter(({ exclude }) => !exclude));\n this._excludeRules = this._createRules(initialRules?.filter(({ exclude }) => exclude));\n\n [this._includeRules, this._excludeRules].forEach((rules) => {\n // Rules on initial phase are considered as valid\n rules.forEach((rule) => rule.setValid(true));\n // Keep at least one item in the list\n if (rules.length === 0) {\n rules.push(new FilterRule(this.columns));\n }\n });\n }\n\n /** @hidden */\n private _createRules(collectionFilter: CollectionFilter[] = []): FilterRule[] {\n return collectionFilter.map(\n ({ field, value, value2, strategy }): FilterRule =>\n new FilterRule(this.columns, field, strategy, value, value2)\n );\n }\n\n /** @hidden */\n private _getCollectionFiltersFromRules(rules: FilterRule[]): CollectionFilter[] {\n return rules.filter(this._isRuleValid).map(\n ({ columnKey, strategy, value, value2 }): CollectionFilter => ({\n field: columnKey!,\n value,\n value2,\n strategy: strategy!\n })\n );\n }\n\n /** @hidden */\n private _getCollectionFiltersFromIncludeRules(): CollectionFilter[] {\n return this._getCollectionFiltersFromRules(this._includeRules).map(\n (collectionFilter): CollectionFilter => ({\n ...collectionFilter,\n exclude: false\n })\n );\n }\n\n /** @hidden */\n private _getCollectionFiltersFromExcludeRules(): CollectionFilter[] {\n return this._getCollectionFiltersFromRules(this._excludeRules).map(\n (collectionFilter): CollectionFilter => ({\n ...collectionFilter,\n exclude: true\n })\n );\n }\n\n /** @hidden */\n private _calculateValidRulesCount = (): void => {\n this._validIncludeRulesCount = this._includeRules.filter(this._isRuleValid).length;\n this._validExcludeRulesCount = this._excludeRules.filter(this._isRuleValid).length;\n };\n\n /** @hidden */\n private _isRuleValid = (rule: FilterRule): boolean => rule?.isValid;\n}\n","<fd-dialog class=\"fdp-table-p13-filtering-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.P13FilterDialogHeader' | fdTranslate }}</h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <!-- Include Rules -->\n <fd-panel [expanded]=\"_includePanelExpanded\">\n <div fd-panel-title>\n {{\n (_validIncludeRulesCount > 0\n ? 'platformTable.P13FilterDialogIncludePanelTitleWithCount'\n : 'platformTable.P13FilterDialogIncludePanelTitleWithoutCount'\n ) | fdTranslate: { count: _validIncludeRulesCount }\n }}\n </div>\n <div fd-panel-content>\n @for (rule of _includeRules; track rule) {\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <fdp-table-filter-rule\n [fdLayoutGridCol]=\"10\"\n [rule]=\"rule\"\n (ruleChange)=\"_recalculateResetAvailability()\"\n (ruleStateChange)=\"_onRuleStateChange()\"\n ></fdp-table-filter-rule>\n <!-- Actions buttons -->\n <div [fdLayoutGridCol]=\"2\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"\n 'platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate\n \"\n [title]=\"'platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate\"\n (click)=\"_removeRule(rule, _includeRules)\"\n ></button>\n @if (_includeRules.length - 1 === $index) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"\n 'platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate\n \"\n [title]=\"'platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate\"\n (click)=\"_addNewRule(_includeRules)\"\n ></button>\n }\n </div>\n </div>\n </fd-layout-grid>\n }\n </div>\n </fd-panel>\n <!-- Exclude Rules -->\n <fd-panel [expanded]=\"_excludePanelExpanded\">\n <div fd-panel-title>\n {{\n (_validExcludeRulesCount > 0\n ? 'platformTable.P13FilterDialogExcludePanelTitleWithCount'\n : 'platformTable.P13FilterDialogExcludePanelTitleWithoutCount'\n ) | fdTranslate: { count: _validExcludeRulesCount }\n }}\n </div>\n <div fd-panel-content>\n @for (rule of _excludeRules; track rule) {\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <fdp-table-filter-rule\n [fdLayoutGridCol]=\"10\"\n [rule]=\"rule\"\n (ruleChange)=\"_recalculateResetAvailability()\"\n (ruleStateChange)=\"_onRuleStateChange()\"\n ></fdp-table-filter-rule>\n <!-- Actions buttons -->\n <div [fdLayoutGridCol]=\"2\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"\n 'platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate\n \"\n [title]=\"'platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate\"\n (click)=\"_removeRule(rule, _excludeRules)\"\n ></button>\n @if (_excludeRules.length - 1 === $index) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"\n 'platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate\n \"\n [title]=\"'platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate\"\n (click)=\"_addNewRule(_excludeRules)\"\n ></button>\n }\n </div>\n </div>\n </fd-layout-grid>\n }\n </div>\n </fd-panel>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13FilterDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13FilterDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, signal } from '@angular/core';\nimport {\n CollectionGroup,\n SortDirection,\n TableDialogCommonData,\n getUniqueListValuesByKey\n} from '@fundamental-ngx/platform/table-helpers';\n\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { FormsModule } from '@angular/forms';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { RESETTABLE_TOKEN, ResetButtonComponent, Resettable } from '../../reset-button/reset-button.component';\n\nexport interface GroupDialogColumn {\n label: string;\n key: string;\n}\n\nexport interface GroupDialogData extends TableDialogCommonData {\n collectionGroup: CollectionGroup[];\n columns: GroupDialogColumn[];\n}\n\nexport interface GroupDialogResultData {\n collectionGroup: CollectionGroup[];\n}\n\nconst NOT_SELECTED_OPTION_VALUE = null;\n\nclass GroupRule {\n get isValid(): boolean {\n return this.columnKey !== NOT_SELECTED_OPTION_VALUE;\n }\n\n constructor(\n /** Column key the rule belongs to */\n public columnKey: string | null = NOT_SELECTED_OPTION_VALUE,\n /** Show Field as Column */\n public showAsColumn = true\n ) {}\n}\n\n@Component({\n templateUrl: './grouping.component.html',\n styleUrl: './grouping.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: P13GroupingDialogComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n SelectComponent,\n OptionComponent,\n CheckboxComponent,\n FormsModule,\n ButtonComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe\n ]\n})\nexport class P13GroupingDialogComponent implements Resettable {\n /** Table columns available for grouping */\n readonly columns: GroupDialogColumn[] = [];\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** Group rules to render */\n rules: GroupRule[] = [];\n\n /** @hidden */\n constructor(public dialogRef: DialogRef<GroupDialogData>) {\n const { columns, collectionGroup } = this.dialogRef.data;\n\n this.columns = columns || [];\n\n this._initiateRules(collectionGroup);\n }\n\n /** Reset changes to the initial state */\n reset(): void {\n this._initiateRules();\n this.isResetAvailable$.set(false);\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const collectionGroup = this._getCollectionGroupFromGroupRules(this._getUniqueRules(this.rules));\n const result: GroupDialogResultData = { collectionGroup };\n this.dialogRef.close(result);\n }\n\n /** @hidden */\n _recalculateResetAvailability(): void {\n const hasOnlyOneEmptyRule = this.rules.length === 1 && !this.rules[0].isValid;\n this.isResetAvailable$.set(!hasOnlyOneEmptyRule);\n }\n\n /** @hidden */\n _removeRule(rule: GroupRule): void {\n this.rules = this.rules.filter((_rule) => _rule !== rule);\n\n // Keep at least one item in the list\n if (this.rules.length === 0) {\n this.rules.push(new GroupRule());\n }\n\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n _addNew(index: number): void {\n this.rules.splice(index + 1, 0, new GroupRule());\n }\n\n /** @hidden */\n _onRuleColumnKeyChange(rule: GroupRule, columnKey: string): void {\n rule.columnKey = columnKey;\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n _onRuleShowAsColumnChange(rule: GroupRule, value: boolean): void {\n rule.showAsColumn = value;\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n private _initiateRules(collectionGroup?: CollectionGroup[]): void {\n this.rules = this._createGroupRules(collectionGroup);\n\n // Keep at least one item in the list\n if (this.rules.length === 0) {\n this.rules.push(new GroupRule());\n }\n\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n private _createGroupRules(collectionGroup: CollectionGroup[] = []): GroupRule[] {\n return collectionGroup.map(({ field, showAsColumn }): GroupRule => new GroupRule(field, showAsColumn));\n }\n\n /** @hidden */\n private _getCollectionGroupFromGroupRules(rules = this.rules): CollectionGroup[] {\n return rules.filter(this._isRuleValid).map(\n ({ columnKey, showAsColumn }): CollectionGroup => ({\n field: columnKey!,\n showAsColumn,\n direction: SortDirection.NONE\n })\n );\n }\n\n /** @hidden */\n private _getUniqueRules(rules: GroupRule[]): GroupRule[] {\n return getUniqueListValuesByKey(rules, 'columnKey');\n }\n\n /** @hidden */\n private _isRuleValid = (rule: GroupRule): boolean => rule?.isValid;\n}\n","<fd-dialog class=\"fdp-table-p13-grouping-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.P13GroupDialogHeader' | fdTranslate }}</h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n @for (rule of rules; track rule) {\n <div class=\"group-row\">\n <fd-select\n class=\"group-row__select\"\n [value]=\"rule.columnKey\"\n (valueChange)=\"_onRuleColumnKeyChange(rule, $event)\"\n [placeholder]=\"'platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder' | fdTranslate\"\n >\n @for (column of columns; track column) {\n <li fd-option [value]=\"column.key\">\n {{ column.label }}\n </li>\n }\n </fd-select>\n\n <fd-checkbox\n class=\"group-row__checkbox\"\n [ngModel]=\"rule.showAsColumn\"\n (ngModelChange)=\"_onRuleShowAsColumnChange(rule, $event)\"\n [label]=\"'platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel' | fdTranslate\"\n ></fd-checkbox>\n\n <div class=\"group-row__actions\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"'platformTable.P13GroupDialogRemoveGroupBtnTitle' | fdTranslate\"\n [title]=\"'platformTable.P13GroupDialogRemoveGroupBtnTitle' | fdTranslate\"\n (click)=\"_removeRule(rule)\"\n ></button>\n\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"'platformTable.P13GroupDialogAddNewGroupBtnTitle' | fdTranslate\"\n [title]=\"'platformTable.P13GroupDialogAddNewGroupBtnTitle' | fdTranslate\"\n (click)=\"_addNew($index)\"\n ></button>\n </div>\n </div>\n }\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13GroupDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13GroupDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Personalization Dialog Columns Settings.\n *\n */\n@Component({\n selector: 'fdp-table-p13-columns',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableP13ColumnsComponent {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CollectionFilter } from '@fundamental-ngx/platform/table-helpers';\n\n/**\n * Personalization Dialog Filter Settings.\n */\n@Component({\n selector: 'fdp-table-p13-filter',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableP13FilterComponent {\n /**\n * Function for handling validation of the filter rules in the table personalization dialog.\n */\n @Input()\n validator: ((rules: CollectionFilter[]) => boolean) | undefined;\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Personalization Dialog Group Settings.\n *\n */\n@Component({\n selector: 'fdp-table-p13-group',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableP13GroupComponent {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Personalization Dialog Sort Settings.\n *\n */\n@Component({\n selector: 'fdp-table-p13-sort',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableP13SortComponent {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Pipe,\n PipeTransform,\n ViewEncapsulation,\n forwardRef,\n signal\n} from '@angular/core';\nimport {\n CollectionSort,\n SortDirection,\n TableDialogCommonData,\n getUniqueListValuesByKey\n} from '@fundamental-ngx/platform/table-helpers';\n\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { DisabledBehaviorDirective, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { RESETTABLE_TOKEN, ResetButtonComponent, Resettable } from '../../reset-button/reset-button.component';\n\nexport interface SortDialogColumn {\n label: string;\n key: string;\n}\n\nexport interface SortDialogData extends TableDialogCommonData {\n collectionSort: CollectionSort[];\n columns: SortDialogColumn[];\n}\n\nexport interface SortDialogResultData {\n collectionSort: CollectionSort[];\n}\n\nexport interface SortRule {\n columnKey: string | null;\n direction: SortDirection;\n}\n\nconst NOT_SELECTED_OPTION_VALUE = null;\n\nclass ValidatedSortRule implements SortRule {\n get isValid(): boolean {\n return this.columnKey !== NOT_SELECTED_OPTION_VALUE && this.direction !== NOT_SELECTED_OPTION_VALUE;\n }\n\n constructor(\n /** Column key the rule belongs to */\n public columnKey: string | null = NOT_SELECTED_OPTION_VALUE,\n /** Sort direction */\n public direction: SortDirection = SortDirection.ASC\n ) {}\n}\n\n@Component({\n templateUrl: './sorting.component.html',\n styleUrl: './sorting.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: P13SortingDialogComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n SelectComponent,\n OptionComponent,\n ButtonComponent,\n DisabledBehaviorDirective,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe,\n forwardRef(() => GetAvailableSortColumnsPipe)\n ]\n})\nexport class P13SortingDialogComponent implements Resettable {\n /** Table columns available for sorting */\n readonly columns: SortDialogColumn[] = [];\n\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** @hidden */\n readonly SORT_DIRECTION = SortDirection;\n\n /** Sort rules to render */\n rules: ValidatedSortRule[] = [];\n\n /** @hidden */\n constructor(\n public dialogRef: DialogRef<SortDialogData>,\n private cdr: ChangeDetectorRef\n ) {\n const { columns, collectionSort } = this.dialogRef.data;\n\n this.columns = columns || [];\n\n this._initiateRules(collectionSort);\n }\n\n /** Reset changes to the initial state */\n reset(): void {\n this._initiateRules();\n this.isResetAvailable$.set(false);\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const collectionSort = this._getCollectionSortFromSortRules(this._getUniqueRules(this.rules));\n const result: SortDialogResultData = { collectionSort };\n this.dialogRef.close(result);\n }\n\n /** @hidden */\n _removeRule(rule: ValidatedSortRule): void {\n this.rules = this.rules.filter((_rule) => _rule !== rule);\n\n // Keep at least one item in the list\n if (this.rules.length === 0) {\n this.rules.push(new ValidatedSortRule());\n }\n\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n _addNew(index: number): void {\n this.rules.splice(index + 1, 0, new ValidatedSortRule());\n }\n\n /** @hidden */\n _onRuleColumnKeyChange(rule: ValidatedSortRule, columnKey: string): void {\n rule.columnKey = columnKey;\n this._recalculateResetAvailability();\n this.cdr.detectChanges();\n }\n\n /** @hidden */\n _onRuleDirectionChange(rule: ValidatedSortRule, direction: SortDirection): void {\n rule.direction = direction;\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n _recalculateResetAvailability(): void {\n const hasOnlyOneEmptyRule = this.rules.length === 1 && !this.rules[0].isValid;\n this.isResetAvailable$.set(!hasOnlyOneEmptyRule);\n }\n\n /** @hidden */\n _trackByColumnKey(index: number, rule: ValidatedSortRule): string | null {\n return rule.columnKey;\n }\n\n /** @hidden */\n private _initiateRules(collectionSort?: CollectionSort[]): void {\n this.rules = this._createRules(collectionSort);\n\n // Keep at least one item in the list\n if (this.rules.length === 0) {\n this.rules.push(new ValidatedSortRule());\n }\n\n this._recalculateResetAvailability();\n }\n\n /** @hidden */\n private _createRules(collectionSort: CollectionSort[] = []): ValidatedSortRule[] {\n return collectionSort.map(({ field, direction }): ValidatedSortRule => new ValidatedSortRule(field, direction));\n }\n\n /** @hidden */\n private _getCollectionSortFromSortRules(rules = this.rules): CollectionSort[] {\n return rules.filter(this._isRuleValid).map(\n ({ columnKey, direction }): CollectionSort => ({\n field: columnKey,\n direction\n })\n );\n }\n\n /** @hidden */\n private _getUniqueRules(rules: ValidatedSortRule[]): ValidatedSortRule[] {\n return getUniqueListValuesByKey(rules, 'columnKey');\n }\n\n /** @hidden */\n private _isRuleValid = (rule: ValidatedSortRule): boolean => rule?.isValid;\n}\n\n@Pipe({\n name: 'getAvailableSortColumns',\n pure: false,\n standalone: true\n})\nexport class GetAvailableSortColumnsPipe implements PipeTransform {\n /** @hidden */\n transform(columns: SortDialogColumn[], rules: SortRule[], currentKey: string | null): SortDialogColumn[] {\n const usedKeys = new Set(rules.map((r) => r.columnKey));\n return columns.filter((c) => !usedKeys.has(c.key) || currentKey === c.key);\n }\n}\n","<fd-dialog class=\"fdp-table-p13-sorting-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.P13SortDialogHeader' | fdTranslate }}\n </h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n @for (rule of rules; track _trackByColumnKey(i, rule); let i = $index) {\n <div class=\"sort-row\">\n <fd-select\n class=\"sort-row__select\"\n [value]=\"rule.columnKey\"\n (valueChange)=\"_onRuleColumnKeyChange(rule, $event)\"\n [placeholder]=\"'platformTable.P13SortDialogNoneSelectedColumn' | fdTranslate\"\n >\n @for (column of columns | getAvailableSortColumns: rules : rule.columnKey; track column) {\n <li fd-option [value]=\"column.key\">\n {{ column.label }}\n </li>\n }\n </fd-select>\n <fd-select\n class=\"sort-row__select\"\n [value]=\"rule.direction\"\n (valueChange)=\"_onRuleDirectionChange(rule, $event)\"\n [placeholder]=\"'platformTable.P13SortDialogNoneSelectedSorting' | fdTranslate\"\n >\n <li fd-option [value]=\"SORT_DIRECTION.ASC\">\n {{ 'platformTable.P13SortDialogSortOrderSelectOptionAsc' | fdTranslate }}\n </li>\n <li fd-option [value]=\"SORT_DIRECTION.DESC\">\n {{ 'platformTable.P13SortDialogSortOrderSelectOptionDesc' | fdTranslate }}\n </li>\n </fd-select>\n <div class=\"sort-row__actions\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"'platformTable.P13SortDialogRemoveSortBtnTitle' | fdTranslate\"\n [title]=\"'platformTable.P13SortDialogRemoveSortBtnTitle' | fdTranslate\"\n (click)=\"_removeRule(rule)\"\n ></button>\n <button\n fd-button\n [fdkDisabled]=\"rules.length === columns.length\"\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"'platformTable.P13SortDialogAddNewSortBtnTitle' | fdTranslate\"\n [title]=\"'platformTable.P13SortDialogAddNewSortBtnTitle' | fdTranslate\"\n (click)=\"_addNew(i)\"\n ></button>\n </div>\n </div>\n }\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13SortDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13SortDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { DialogConfig, DialogService } from '@fundamental-ngx/core/dialog';\n\nimport {\n CollectionFilter,\n CollectionGroup,\n CollectionSort,\n Table,\n TableColumn,\n TableState\n} from '@fundamental-ngx/platform/table-helpers';\n\nimport { TableP13ColumnsComponent } from './table-p13-columns.component';\nimport { TableP13FilterComponent } from './table-p13-filter.component';\nimport { TableP13GroupComponent } from './table-p13-group.component';\nimport { TableP13SortComponent } from './table-p13-sort.component';\n\nimport { ColumnsDialogData, ColumnsDialogResultData, P13ColumnsDialogComponent } from './columns/columns.component';\nimport { FilterDialogData, FilterDialogResultData, P13FilteringDialogComponent } from './filtering/filtering.component';\nimport { GroupDialogData, GroupDialogResultData, P13GroupingDialogComponent } from './grouping/grouping.component';\nimport { P13SortingDialogComponent, SortDialogData, SortDialogResultData } from './sorting/sorting.component';\n\nconst dialogConfig: DialogConfig = {\n responsivePadding: true,\n verticalPadding: true,\n minWidth: '30rem',\n /** 88px it's the header + footer height */\n bodyMinHeight: 'calc(50vh - 88px)'\n};\n\n/**\n * View settings dialog component.\n *\n * Used to link view settings filters options to the grid table.\n *\n * ```html\n * <fdp-table #myTable></fdp-table>\n * ...\n * <fdp-table-p13-dialog [table]=\"myTable\">\n * <!-- Sort Panel -->\n * <fdp-table-p13-sort></fdp-table-p13-sort>\n *\n * <!-- Filter Panel -->\n * <fdp-table-p13-filter></fdp-table-p13-filter>\n *\n * <!-- Group Panel -->\n * <fdp-table-p13-group></fdp-table-p13-group>\n *\n * <!-- Columns Panel -->\n * <fdp-table-p13-columns></fdp-table-p13-columns>\n * </fdp-table-p13-dialog>\n * ```\n * */\n@Component({\n selector: 'fdp-table-p13-dialog',\n template: '',\n styles: [\n `\n :host {\n z-index: 999;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class TableP13DialogComponent implements OnDestroy {\n /** Reference to table component. */\n @Input()\n set table(table: Table) {\n this._setTable(table);\n }\n get table(): Table {\n return this._table;\n }\n\n /** @hidden */\n @ContentChild(TableP13SortComponent)\n sort: TableP13SortComponent;\n\n /** @hidden */\n @ContentChild(TableP13FilterComponent)\n filter: TableP13FilterComponent;\n\n /** @hidden */\n @ContentChild(TableP13GroupComponent)\n group: TableP13GroupComponent;\n\n /** @hidden */\n @ContentChild(TableP13ColumnsComponent)\n columns: TableP13ColumnsComponent;\n\n /** @hidden */\n _table: Table;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _tableSubscriptions = new Subscription();\n\n /** @hidden */\n constructor(private readonly _dialogService: DialogService) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._unsubscribeFromTable();\n }\n\n /** Open Sort Settings Dialog */\n showSortingSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns().filter(({ sortable }) => sortable);\n const sortBy = state.sortBy;\n const dialogData: SortDialogData = {\n columns: columns.map(({ label, key }) => ({ label, key })),\n collectionSort: sortBy\n };\n\n const dialogRef = this._dialogService.open(\n P13SortingDialogComponent,\n {\n ...dialogConfig,\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ collectionSort }: SortDialogResultData) => {\n this._applySorting(collectionSort);\n })\n );\n }\n\n /** Open Filtering Settings Dialog */\n showFilteringSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns();\n const filterBy = state?.filterBy;\n const dialogData: FilterDialogData = {\n columns: columns.map(({ label, key, dataType, filterable }) => ({ label, key, dataType, filterable })),\n collectionFilter: filterBy,\n validator: this.filter.validator\n };\n\n const dialogRef = this._dialogService.open(\n P13FilteringDialogComponent,\n {\n ...dialogConfig,\n disablePaddings: true,\n width: '50rem',\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ collectionFilter }: FilterDialogResultData) => {\n this._applyFiltering(collectionFilter);\n })\n );\n }\n\n /** Open Grouping Settings Dialog */\n showGroupingSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns();\n const visibleColumns = state.columns;\n const groupBy = state.groupBy;\n const dialogData: GroupDialogData = {\n columns: columns\n // We can group by visible columns only\n .filter(({ name }) => visibleColumns.includes(name))\n .filter(({ groupable }) => groupable)\n .map(({ label, key }) => ({ label, key })),\n collectionGroup: groupBy\n };\n\n const dialogRef = this._dialogService.open(\n P13GroupingDialogComponent,\n {\n ...dialogConfig,\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ collectionGroup }: GroupDialogResultData) => {\n this._applyGrouping(collectionGroup);\n })\n );\n }\n\n /** Open Columns Settings Dialog */\n showColumnsSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns();\n const visibleColumns = state.columns;\n const dialogData: ColumnsDialogData = {\n availableColumns: columns.map(({ label, name }) => ({ label, key: name })),\n visibleColumns\n };\n\n const dialogRef = this._dialogService.open(\n P13ColumnsDialogComponent,\n {\n ...dialogConfig,\n disablePaddings: true,\n minWidth: '35rem',\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ visibleColumns: result }: ColumnsDialogResultData) => {\n this._applyColumns(result);\n })\n );\n }\n\n /** @hidden */\n private _setTable(table: Table): void {\n this._table = table;\n\n this._unsubscribeFromTable();\n\n if (this._table) {\n this._subscribeToTable();\n }\n }\n\n /** @hidden */\n private _subscribeToTable(): void {\n this._listenToTableTriggersToOpenDialogs();\n this._listenToTableColumns();\n }\n\n /** @hidden */\n private _listenToTableTriggersToOpenDialogs(): void {\n this._tableSubscriptions.add(this._table.openTableSortSettings.subscribe(() => this.showSortingSettings()));\n this._tableSubscriptions.add(this._table.openTableFilterSettings.subscribe(() => this.showFilteringSettings()));\n this._tableSubscriptions.add(this._table.openTableGroupSettings.subscribe(() => this.showGroupingSettings()));\n this._tableSubscriptions.add(this._table.openTableColumnSettings.subscribe(() => this.showColumnsSettings()));\n }\n\n /** @hidden */\n private _listenToTableColumns(): void {\n this._tableSubscriptions.add(\n this._table.tableColumnsStream.subscribe((columns: TableColumn[]) => {\n this._table?.showSortSettingsInToolbar(columns.some(({ sortable }) => sortable));\n\n this._table?.showGroupSettingsInToolbar(columns.some(({ groupable }) => groupable));\n\n this._table?.showColumnSettingsInToolbar(columns.length > 0);\n\n this._table?.showFilterSettingsInToolbar(columns.some(({ filterable }) => filterable));\n\n this._table?.setHeaderColumnFilteringDisabled(columns.some(({ filterable }) => filterable));\n })\n );\n }\n\n /** @hidden */\n private _getTableState(): TableState {\n return this._table?.getTableState();\n }\n\n /** @hidden */\n private _getTableColumns(): TableColumn[] {\n return this._table?.getTableColumns() || [];\n }\n\n /** @hidden */\n private _applySorting(collectionSort: CollectionSort[]): void {\n this._table?.sort(collectionSort);\n }\n\n /** @hidden */\n private _applyFiltering(filters: CollectionFilter[]): void {\n this._table?.filter(filters);\n }\n\n /** @hidden */\n private _applyGrouping(collectionGroup: CollectionGroup[]): void {\n this._table?.group(collectionGroup);\n }\n\n /** @hidden */\n private _applyColumns(columns: string[]): void {\n this._table?.setColumns(columns);\n }\n\n /** @hidden */\n private _unsubscribeFromTable(): void {\n this._tableSubscriptions.unsubscribe();\n this._tableSubscriptions = new Subscription();\n }\n}\n","import { InjectionToken, TemplateRef } from '@angular/core';\n\nexport interface TableToolbarInterface {\n tableToolbarTitleId: string;\n contentTemplateRef: TemplateRef<any>;\n}\n\n/** @deprecated Use TableToolbarInterface instead */\nexport type TableToolbarWithTemplate = TableToolbarInterface;\n\n/**\n * Used to provide a table-toolbar to the table component without causing a circular dependency.\n */\nexport const TABLE_TOOLBAR = new InjectionToken<any>('PLATFORM_TABLE_TOOLBAR');\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\n\n/**\n * The component that represents a table toolbar actions.\n * ```html\n * <fdp-table-toolbar-actions>\n * <fdp-button label=\"Action One\"></fdp-button>\n * <fdp-button label=\"Action Two\"></fdp-button>\n * </fdp-table-toolbar-actions>\n * ```\n * */\n@Component({\n selector: 'fdp-table-toolbar-actions',\n template: `\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableToolbarActionsComponent {\n /** @hidden */\n @ViewChild(TemplateRef)\n contentTemplateRef: TemplateRef<any>;\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fdp-table-toolbar-left-actions',\n template: `\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableToolbarLeftActionsComponent {\n /** @hidden */\n @ViewChild(TemplateRef)\n _contentTemplateRef: TemplateRef<any>;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n DestroyRef,\n Directive,\n Input,\n Signal,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n ToolbarComponent,\n ToolbarItemDirective,\n ToolbarSeparatorComponent,\n ToolbarSpacerDirective\n} from '@fundamental-ngx/core/toolbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchFieldComponent, SearchInput, SuggestionItem } from '@fundamental-ngx/platform/search-field';\nimport { Table, TableService } from '@fundamental-ngx/platform/table-helpers';\nimport { TABLE_TOOLBAR, TableToolbarInterface } from './table-toolbar';\nimport { TableToolbarActionsComponent } from './table-toolbar-actions.component';\nimport { TableToolbarLeftActionsComponent } from './table-toolbar-left-actions.component';\n\nexport interface ToolbarContext {\n counter: Signal<number>;\n sortable: Signal<boolean>;\n filterable: Signal<boolean>;\n groupable: Signal<boolean>;\n columns: Signal<boolean>;\n hasAnyActions: Signal<boolean>;\n}\n\nexport type EditMode = 'none' | 'inline';\n\nlet tableToolbarTitleUniqueId = 0;\n\n@Directive({\n selector: '[fdpTableToolbarTemplate]',\n standalone: true\n})\nexport class TableToolbarTemplateDirective {\n /** @hidden */\n readonly templateRef = inject<TemplateRef<ToolbarContext>>(TemplateRef);\n\n /** @hidden */\n static ngTemplateContextGuard(\n _directive: TableToolbarTemplateDirective,\n context: unknown\n ): context is ToolbarContext {\n return true;\n }\n}\n\n/**\n * The component that represents a table toolbar.\n *\n * ```html\n * <fdp-table-toolbar\n * title=\"Order Line Items\"\n * [hideItemCount]=\"false\">\n * </fdp-table-toolbar>\n * ```\n * */\n\n@Component({\n selector: 'fdp-table-toolbar',\n templateUrl: './table-toolbar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: TABLE_TOOLBAR, useExisting: TableToolbarComponent }],\n standalone: true,\n imports: [\n ToolbarComponent,\n ToolbarItemDirective,\n ToolbarSeparatorComponent,\n NgTemplateOutlet,\n ToolbarSpacerDirective,\n SearchFieldComponent,\n ButtonComponent,\n AsyncPipe,\n FdTranslatePipe,\n TableToolbarTemplateDirective\n ]\n})\nexport class TableToolbarComponent implements TableToolbarInterface {\n /**\n * Whether the toolbar should hide elements in popover when they overflow.\n * */\n @Input()\n shouldOverflow = false;\n\n /** Table title. */\n @Input()\n title: string;\n\n /** Aria label for the search field. */\n @Input()\n searchFieldAriaLabel: Nullable<string>;\n\n /** Toggle to show table item count. */\n @Input()\n hideItemCount = false;\n\n /** Toggle to show search input. */\n @Input()\n hideSearchInput = false;\n\n /** Toggle to expand and collapse all feature */\n @Input()\n showExpandCollapseButtons = false;\n /** Suggestions for search field. */\n @Input()\n searchSuggestions: SuggestionItem[] = [];\n\n /** Table rows edit/add mode. */\n @Input()\n editMode: EditMode = 'none';\n\n /** @hidden */\n @ContentChild(TableToolbarActionsComponent)\n tableToolbarActionsComponent: TableToolbarActionsComponent;\n\n /** @hidden */\n @ContentChild(TableToolbarLeftActionsComponent)\n _tableToolbarLeftActionsComponent: TableToolbarLeftActionsComponent;\n\n /** @hidden */\n @ViewChild(TemplateRef)\n contentTemplateRef: TemplateRef<any>;\n\n /** @hidden */\n tableToolbarTitleId: string = 'fd-table-toolbar-title-' + tableToolbarTitleUniqueId++;\n\n /** @hidden */\n _showSaveButton = false;\n\n /** @hidden */\n _searchInputText = '';\n\n /** @hidden */\n readonly tableLoading$: Observable<boolean> = inject(TableService).tableLoading$;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(private readonly _table: Table) {\n this._listenToTableEvents();\n }\n\n /** @hidden */\n submitSearch(search: SearchInput): void {\n this._table.search(search);\n }\n\n /** @hidden */\n openSorting(): void {\n this._table.openTableSortSettings.emit();\n }\n\n /** @hidden */\n openFiltering(): void {\n this._table.openTableFilterSettings.emit();\n }\n\n /** @hidden */\n openGrouping(): void {\n this._table.openTableGroupSettings.emit();\n }\n\n /** @hidden */\n openColumns(): void {\n this._table.openTableColumnSettings.emit();\n }\n\n /** @hidden */\n _addRow(): void {\n this._table.addRow();\n }\n\n /** @hidden */\n _saveRows(): void {\n this._table.saveRows();\n }\n\n /** @hidden */\n _cancelEditing(): void {\n this._table.cancelEditing();\n }\n\n /** @hidden */\n _expandAll(): void {\n this._table.expandAll();\n }\n\n /** @hidden */\n _collapseAll(): void {\n this._table.collapseAll();\n }\n\n /** @hidden */\n private _listenToTableEvents(): void {\n this._table.emptyRowAdded.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._showSaveButton = true;\n });\n\n this._table.save.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._showSaveButton = false;\n });\n\n this._table.cancel.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._showSaveButton = false;\n });\n\n this._table.presetChanged.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((state) => {\n this._searchInputText = state.searchInput?.text ?? '';\n });\n }\n}\n","<ng-template\n fdpTableToolbarTemplate\n let-counter=\"counter\"\n let-sortable=\"sortable\"\n let-filterable=\"filterable\"\n let-groupable=\"groupable\"\n let-columns=\"columns\"\n let-hasAnyActions=\"hasAnyActions\"\n>\n <fd-toolbar\n fdType=\"transparent\"\n [clearBorder]=\"true\"\n [titleId]=\"tableToolbarTitleId\"\n [title]=\"title && !hideItemCount ? title + ' (' + counter() + ')' : title\"\n [shouldOverflow]=\"shouldOverflow\"\n >\n @if (_tableToolbarLeftActionsComponent) {\n <span fd-toolbar-item fdOverflowPriority=\"never\">\n @if (!!title || !hideItemCount) {\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n <ng-template [ngTemplateOutlet]=\"_tableToolbarLeftActionsComponent._contentTemplateRef\"></ng-template>\n </span>\n }\n <fd-toolbar-spacer></fd-toolbar-spacer>\n @if (!hideSearchInput) {\n <fdp-search-field\n fd-toolbar-item\n [style.min-width.rem]=\"15.5\"\n [placeholder]=\"'platformTable.toolbarSearchPlaceholder' | fdTranslate\"\n [inputText]=\"_searchInputText\"\n [disabled]=\"!!(tableLoading$ | async)\"\n [suggestions]=\"searchSuggestions\"\n [ariaLabel]=\"searchFieldAriaLabel || null\"\n [ariaLabelledBy]=\"searchFieldAriaLabel ? null : tableToolbarTitleId\"\n (searchSubmit)=\"submitSearch($event)\"\n (cancelSearch)=\"submitSearch($event)\"\n [disableSuggestionsFoundAnnouncer]=\"true\"\n ></fdp-search-field>\n }\n @if (editMode !== 'none') {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n [label]=\"'platformTable.toolbarActionCreateButtonLabel' | fdTranslate\"\n (click)=\"_addRow()\"\n ></button>\n @if (_showSaveButton) {\n @if (_showSaveButton) {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n [label]=\"'platformTable.toolbarActionSaveButtonLabel' | fdTranslate\"\n (click)=\"_saveRows()\"\n ></button>\n }\n <fd-toolbar-separator></fd-toolbar-separator>\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n [label]=\"'platformTable.toolbarActionCancelButtonLabel' | fdTranslate\"\n (click)=\"_cancelEditing()\"\n fdType=\"transparent\"\n ></button>\n }\n @if (tableToolbarActionsComponent || hasAnyActions()) {\n <fd-toolbar-separator fd-toolbar-item fdOverflowPriority=\"never\"></fd-toolbar-separator>\n }\n }\n @if (tableToolbarActionsComponent) {\n <span fd-toolbar-item class=\"fdp-table-toolbar-actions\">\n <ng-template [ngTemplateOutlet]=\"tableToolbarActionsComponent.contentTemplateRef\"></ng-template>\n </span>\n }\n @if (showExpandCollapseButtons || hasAnyActions()) {\n @if (tableToolbarActionsComponent) {\n <fd-toolbar-separator fd-toolbar-item fdOverflowPriority=\"never\"></fd-toolbar-separator>\n }\n @if (showExpandCollapseButtons) {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n glyph=\"expand-all\"\n (click)=\"_expandAll()\"\n [title]=\"'platformTable.toolbarActionExpandAllButtonTitle' | fdTranslate\"\n [ariaLabel]=\"'platformTable.toolbarActionExpandAllButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n ></button>\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n glyph=\"collapse-all\"\n (click)=\"_collapseAll()\"\n [title]=\"'platformTable.toolbarActionCollapseAllButtonTitle' | fdTranslate\"\n [ariaLabel]=\"'platformTable.toolbarActionCollapseAllButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n ></button>\n }\n @if (sortable()) {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n glyph=\"sort\"\n [title]=\"'platformTable.toolbarActionSortButtonTitle' | fdTranslate\"\n [ariaLabel]=\"'platformTable.toolbarActionSortButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n aria-haspopup=\"modal\"\n (click)=\"openSorting()\"\n ></button>\n }\n @if (filterable()) {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n glyph=\"filter\"\n [title]=\"'platformTable.toolbarActionFilterButtonTitle' | fdTranslate\"\n [ariaLabel]=\"'platformTable.toolbarActionFilterButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n aria-haspopup=\"modal\"\n (click)=\"openFiltering()\"\n ></button>\n }\n @if (groupable()) {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n glyph=\"group-2\"\n [title]=\"'platformTable.toolbarActionGroupButtonTitle' | fdTranslate\"\n [ariaLabel]=\"'platformTable.toolbarActionGroupButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n aria-haspopup=\"modal\"\n (click)=\"openGrouping()\"\n ></button>\n }\n @if (columns()) {\n <button\n fd-button\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n glyph=\"action-settings\"\n [title]=\"'platformTable.toolbarActionColumnsButtonTitle' | fdTranslate\"\n [ariaLabel]=\"'platformTable.toolbarActionColumnsButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n aria-haspopup=\"modal\"\n (click)=\"openColumns()\"\n ></button>\n }\n }\n </fd-toolbar>\n</ng-template>\n","export const NOT_FILTERED_OPTION_VALUE = `table-filters-not-filtered-option-value-${Math.random()\n .toString()\n .slice(2, 5)}`;\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport {\n FdpViewSettingsFilterCustomDef,\n FilterType,\n TableFilterSelectOption\n} from '@fundamental-ngx/platform/table-helpers';\n\n/**\n * View settings dialog filter component.\n *\n * ```html\n * <!-- With custom form -->\n * <fdp-table-view-settings-filter\n * column=\"name\"\n * label=\"Name\"\n * type=\"custom\">\n * <ng-container *fdpViewSettingsFilterCustomDef=\"let model\">\n * <label>Enter name:</label>\n * <fdp-input type=\"text\" name=\"name\" [(ngModel)]=\"model.name\"></fdp-input>\n * </ng-container>\n * </fdp-table-view-settings-filter>\n *\n * <!-- Single select -->\n * <fdp-table-view-settings-filter\n * column=\"status\"\n * label=\"Status\"\n * type=\"single-select\"\n * values=\"[{value: 'OUT_OF_STOCK', label: 'Out of stock'}, { value: 'AVAILABLE', label: 'Available'}]\">\n * </fdp-table-view-settings-filter>\n * ```\n *\n * */\n@Component({\n selector: 'fdp-table-view-settings-filter',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableViewSettingsFilterComponent {\n /** Table column name on which to filter. */\n @Input()\n column: string;\n\n /** Label for the column. */\n @Input()\n label: string;\n\n /**\n * Type of filter interface.\n * @type {'single-select' | 'multi-select' | 'custom' 'category'}\n */\n @Input()\n type: FilterType;\n\n /** Selection values for 'single-select' or 'multi-select' filter types. */\n @Input()\n values: TableFilterSelectOption[];\n\n /** Custom filter template directive reference */\n customFilterTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ContentChild(FdpViewSettingsFilterCustomDef)\n set _filterCustomDef(filterCustomDef: FdpViewSettingsFilterCustomDef) {\n this.customFilterTemplate = filterCustomDef?.templateRef;\n }\n}\n","import { ChangeDetectionStrategy, Component, DoCheck, EventEmitter, Input, Output } from '@angular/core';\nimport { CollectionFilter } from '@fundamental-ngx/platform/table-helpers';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ContentDensityMode,\n ContentDensityObserver,\n contentDensityObserverProviders\n} from '@fundamental-ngx/core/content-density';\nimport { TableViewSettingsFilterComponent } from '../table-view-settings-filter.component';\n\n/**\n * Custom Select filter type.\n *\n * Used to render user's custom filter template\n *\n */\n\n@Component({\n selector: 'fdp-filter-custom',\n templateUrl: './filter-custom.component.html',\n // Keep it \"Default\" intentionally to run ngDoCheck when child template emits changes\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [contentDensityObserverProviders()],\n standalone: true,\n imports: [NgTemplateOutlet]\n})\nexport class FilterCustomComponent implements DoCheck {\n /** ViewSettingsFilter options the filter is created from */\n @Input()\n filter: TableViewSettingsFilterComponent;\n\n /** The filter model */\n @Input()\n set filterBy(filterBy: CollectionFilter | undefined) {\n if (!filterBy?.value || Object.prototype.toString.call(filterBy?.value) !== '[object Object]') {\n // force value to be an object\n this._value = {};\n } else {\n this._value = { ...filterBy.value };\n }\n\n this._valueLastEmitted = { ...this._value };\n }\n\n /** Filter model change event */\n @Output()\n valueChange: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n /** Content Density, comes from table injector */\n get contentDensity(): ContentDensityMode {\n return this.contentDensityObserver.value;\n }\n /**\n * @hidden\n * Currently selected value\n */\n _value: Record<string, any>;\n\n /**\n * @hidden\n * Last emitted value\n */\n _valueLastEmitted: Record<string, any>;\n\n /** @hidden */\n constructor(private contentDensityObserver: ContentDensityObserver) {}\n\n /** @hidden */\n ngDoCheck(): void {\n try {\n // Didn't find a better way to catch changes in the custom template\n if (JSON.stringify(this._value) === JSON.stringify(this._valueLastEmitted)) {\n return;\n }\n\n this._valueLastEmitted = { ...this._value };\n\n this.valueChange.emit(this._value);\n } catch (e) {}\n }\n}\n","<ng-template\n [ngTemplateOutlet]=\"filter.customFilterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: _value, valueChangeEmitter: valueChange, contentDensity: contentDensity }\"\n>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { ListComponent, ListItemComponent, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { CollectionFilter, TableFilterSelectOption } from '@fundamental-ngx/platform/table-helpers';\n\n/**\n * Multi Select filter type.\n *\n */\n\ntype SelectableOption = TableFilterSelectOption & { selected: boolean };\n\n@Component({\n selector: 'fdp-filter-multi-select',\n templateUrl: './filter-multi-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [ListComponent, ListItemComponent, CheckboxComponent, FormsModule, ListTitleDirective]\n})\nexport class FilterMultiSelectComponent {\n /** Selectable filter options */\n @Input()\n options: TableFilterSelectOption[] = [];\n\n /** The filter model */\n @Input()\n set filterBy(filterBy: CollectionFilter | undefined) {\n const filterByValue = filterBy?.value || [];\n this._selectableOptions = this.options.map(\n (option): SelectableOption => ({\n ...option,\n selected: filterByValue.includes(option.value)\n })\n );\n this._updateValueBasedOnOptions();\n }\n\n /** Filter model change event */\n @Output()\n valueChange: EventEmitter<any[]> = new EventEmitter();\n\n /**\n * @hidden\n * Currently selected values\n */\n _value: any[];\n\n /** @hidden */\n _selectableOptions: SelectableOption[];\n\n /** @hidden */\n _onSelectChange(option: SelectableOption, selected: boolean): void {\n option.selected = selected;\n this._updateValueBasedOnOptions();\n this.valueChange.emit(this._value);\n }\n\n /** @hidden */\n _updateValueBasedOnOptions(): void {\n this._value = this._selectableOptions.filter(({ selected }) => selected).map(({ value }) => value);\n }\n}\n","<ul fd-list [selection]=\"true\">\n @for (option of _selectableOptions; track option) {\n <li fd-list-item [selected]=\"option.selected\">\n <fd-checkbox [ngModel]=\"option.selected\" (ngModelChange)=\"_onSelectChange(option, $event)\"></fd-checkbox>\n <span fd-list-title>{{ option.label }}</span>\n </li>\n }\n</ul>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CollectionFilter, TableFilterSelectOption } from '@fundamental-ngx/platform/table-helpers';\n\nimport { FormsModule } from '@angular/forms';\nimport { ListComponent, ListItemComponent, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { NOT_FILTERED_OPTION_VALUE } from './constants';\n\n/**\n * Single Select filter type.\n *\n */\n\n@Component({\n selector: 'fdp-filter-single-select',\n templateUrl: './filter-single-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [ListComponent, ListItemComponent, RadioButtonComponent, FormsModule, ListTitleDirective, FdTranslatePipe]\n})\nexport class FilterSingleSelectComponent {\n /** Selectable filter options */\n @Input()\n options: TableFilterSelectOption[] = [];\n\n /** The filter model */\n @Input()\n set filterBy(filterBy: CollectionFilter | undefined) {\n const value = filterBy?.value?.[0];\n this._value = value === undefined ? NOT_FILTERED_OPTION_VALUE : value;\n }\n\n /** Filter model change event */\n @Output()\n valueChange: EventEmitter<any[]> = new EventEmitter();\n\n /** @hidden */\n readonly NOT_FILTERED_OPTION_VALUE = NOT_FILTERED_OPTION_VALUE;\n\n /**\n * @hidden\n * Currently selected value\n */\n _value: any;\n\n /** @hidden */\n _onValueChange(value: unknown): void {\n if (value === this._value) {\n return;\n }\n\n this._value = value;\n\n if (value === NOT_FILTERED_OPTION_VALUE) {\n this.valueChange.emit([]);\n } else {\n this.valueChange.emit([value]);\n }\n }\n}\n","<ul fd-list [selection]=\"true\">\n <li fd-list-item [selected]=\"_value === NOT_FILTERED_OPTION_VALUE\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"NOT_FILTERED_OPTION_VALUE\"\n state=\"default\"\n [ngModel]=\"_value\"\n (ngModelChange)=\"_onValueChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.filterDialogNotFilteredLabel' | fdTranslate }}</span>\n </li>\n @for (option of options; track option) {\n <li fd-list-item [selected]=\"option.value === _value\">\n <fd-radio-button\n [ngModel]=\"_value\"\n (ngModelChange)=\"_onValueChange($event)\"\n [value]=\"option.value\"\n name=\"filtering-settings-single-select\"\n ></fd-radio-button>\n <span fd-list-title>{{ option.label }}</span>\n </li>\n }\n</ul>\n","import { InjectionToken, TemplateRef } from '@angular/core';\n\nexport interface FiltersViewStep {\n titleTemplateRef: TemplateRef<any>;\n bodyTemplateRef: TemplateRef<any>;\n}\n\nexport const FILTERS_VIEW_STEP_TOKEN = new InjectionToken<FiltersViewStep>('FiltersViewStep');\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\nimport { CollectionFilter, FILTER_STRATEGY, FilterType } from '@fundamental-ngx/platform/table-helpers';\n\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { TableViewSettingsFilterComponent } from '../table-view-settings-filter.component';\nimport { FilterCustomComponent } from './filter-custom.component';\nimport { FilterMultiSelectComponent } from './filter-multi-select.component';\nimport { FilterSingleSelectComponent } from './filter-single-select.component';\nimport { FILTERS_VIEW_STEP_TOKEN, FiltersViewStep } from './filters-active-step';\n\n/**\n * Filter dialog step.\n *\n * Used to render selected filter options.\n *\n */\n\n@Component({\n selector: 'fdp-filter-step',\n templateUrl: './filter-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n /** Each filters dialog step must provide FILTERS_VIEW_STEP_TOKEN to be accessible */\n providers: [{ provide: FILTERS_VIEW_STEP_TOKEN, useExisting: forwardRef(() => FilterStepComponent) }],\n standalone: true,\n imports: [\n ButtonComponent,\n TitleComponent,\n FilterSingleSelectComponent,\n FilterMultiSelectComponent,\n FilterCustomComponent,\n FdTranslatePipe\n ]\n})\nexport class FilterStepComponent implements FiltersViewStep {\n /** ViewSettingsFilter options the filter is created from */\n @Input()\n filter: TableViewSettingsFilterComponent;\n\n /** Column key to apply this filter to */\n @Input()\n columnKey: string;\n\n /** Table's content density to be used */\n @Input()\n contentDensity: ContentDensity;\n\n /** The current filter model */\n @Input()\n set filterBy(filterByList: CollectionFilter[]) {\n this._filterBy = filterByList.find(({ field }) => field === this.columnKey);\n }\n\n /** Go back event */\n @Output()\n back: EventEmitter<void> = new EventEmitter<void>();\n\n /** Filter model change event */\n @Output()\n valueChange: EventEmitter<CollectionFilter> = new EventEmitter<CollectionFilter>();\n\n /** Template ref to the filter title */\n @ViewChild('titleTemplate')\n titleTemplateRef: TemplateRef<any>;\n\n /** Template ref to the filter body */\n @ViewChild('bodyTemplate')\n bodyTemplateRef: TemplateRef<any>;\n\n /** @hidden */\n readonly FILTER_TYPE = FilterType;\n\n /** @hidden */\n _filterBy?: CollectionFilter;\n\n /** @hidden */\n _onFilterValueChange(filterValue: any): void {\n const filterBy: CollectionFilter = this._filterBy || {\n field: this.columnKey,\n value: null,\n strategy: FILTER_STRATEGY.EQ,\n exclude: false\n };\n\n const newFilterBy = { ...filterBy, value: filterValue };\n\n this.valueChange.emit(newFilterBy);\n }\n}\n","<ng-template #titleTemplate>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [title]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n [attr.aria-label]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n (click)=\"back.emit()\"\n ></button>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.filterDialogFilterByLabel' | fdTranslate: { filterLabel: filter.label } }}\n </h4>\n</ng-template>\n\n<ng-template #bodyTemplate>\n @switch (filter.type) {\n @case (FILTER_TYPE.SINGLE) {\n <fdp-filter-single-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-single-select>\n }\n @case (FILTER_TYPE.MULTI) {\n <fdp-filter-multi-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-multi-select>\n }\n @case (FILTER_TYPE.CUSTOM) {\n <fdp-filter-custom\n [filter]=\"filter\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-custom>\n }\n @case (FILTER_TYPE.CATEGORY) {\n Categories list is not implemented\n }\n }\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {\n ListComponent,\n ListGroupHeaderDirective,\n ListItemComponent,\n ListLinkDirective,\n ListTitleDirective\n} from '@fundamental-ngx/core/list';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { FILTERS_VIEW_STEP_TOKEN, FiltersViewStep } from './filters-active-step';\n\n/**\n * Filters list dialog step.\n *\n * Used to render available filters to drill down.\n *\n */\n\nexport interface SelectableFilter {\n label: string;\n}\n@Component({\n selector: 'fdp-filters-list-step',\n templateUrl: './filters-list-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n /** Each filters dialog step must provide FILTERS_VIEW_STEP_TOKEN to be accessible */\n providers: [{ provide: FILTERS_VIEW_STEP_TOKEN, useExisting: forwardRef(() => FiltersListStepComponent) }],\n standalone: true,\n imports: [\n TitleComponent,\n ListComponent,\n ListGroupHeaderDirective,\n ListItemComponent,\n ListLinkDirective,\n ListTitleDirective,\n FdTranslatePipe\n ]\n})\nexport class FiltersListStepComponent implements FiltersViewStep {\n /** Selectable filters list */\n @Input()\n filters: SelectableFilter[] = [];\n\n /** Select event is fired once some filter is selected */\n @Output()\n selectFilter: EventEmitter<SelectableFilter> = new EventEmitter<SelectableFilter>();\n\n /** Template ref to the filter title */\n @ViewChild('titleTemplate')\n titleTemplateRef: TemplateRef<any>;\n\n /** Template ref to the filter body */\n @ViewChild('bodyTemplate')\n bodyTemplateRef: TemplateRef<any>;\n}\n","<ng-template #titleTemplate>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.filterDialogFilterTitle' | fdTranslate }}</h4>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <ul fd-list [navigationIndicator]=\"true\">\n <li fd-list-group-header>{{ 'platformTable.filterDialogFilterBy' | fdTranslate }}</li>\n\n @for (filter of filters; track filter) {\n <li fd-list-item>\n <a fd-list-link (click)=\"selectFilter.emit(filter)\">\n <span fd-list-title>{{ filter.label }}</span>\n </a>\n </li>\n }\n </ul>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n signal,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport equal from 'fast-deep-equal/es6';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport {\n CollectionFilter,\n FilterType,\n Table,\n TableColumn,\n TableDialogCommonData\n} from '@fundamental-ngx/platform/table-helpers';\nimport { ResetButtonComponent, Resettable, RESETTABLE_TOKEN } from '../../reset-button/reset-button.component';\nimport { TableViewSettingsFilterComponent } from '../table-view-settings-filter.component';\nimport { FilterStepComponent } from './filter-step.component';\nimport { FILTERS_VIEW_STEP_TOKEN, FiltersViewStep } from './filters-active-step';\nimport { FiltersListStepComponent, SelectableFilter } from './filters-list-step.component';\n\nexport interface FiltersDialogData extends TableDialogCommonData {\n filterBy: CollectionFilter[];\n columns: TableColumn[];\n viewSettingsFilters: TableViewSettingsFilterComponent[];\n}\n\nexport interface FiltersDialogResultData {\n filterBy: CollectionFilter[];\n}\n\nexport enum ACTIVE_STEP {\n SELECT_FILTER = 'SELECT_FILTER',\n FILTER = 'FILTER'\n}\n\n@Component({\n templateUrl: './filters.component.html',\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: forwardRef(() => FiltersComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n NgTemplateOutlet,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n FiltersListStepComponent,\n FilterStepComponent,\n FdTranslatePipe\n ]\n})\nexport class FiltersComponent implements Resettable, AfterViewInit {\n /**\n * Current FiltersViewStep component to render.\n * The fd-dialog component relies on named projected content.\n * It means we must define all projected dialog options in the same view withing fd-dialog.\n * In order to keep filters steps as separate components\n * and do not break dialog content we are using this ViewChild hook\n * keeping reference to the conditionally rendered active step.\n * Each \"FilterStepView\" has template refs for dialog.title and dialog.body template\n * */\n @ViewChild(FILTERS_VIEW_STEP_TOKEN)\n set setActiveFilterStepView(view: FiltersViewStep) {\n this.activeFilterStepView = view;\n this._cd.detectChanges();\n }\n\n /** Reference to the available steps */\n readonly ACTIVE_STEP = ACTIVE_STEP;\n\n /** Currently applied filters rules */\n filterBy: CollectionFilter[];\n\n /** Table columns. Used to retrieve a column key */\n columns: TableColumn[];\n\n /** Declared filters options */\n viewSettingsFilters: TableViewSettingsFilterComponent[];\n\n /** Currently selected step */\n activeStep: ACTIVE_STEP = ACTIVE_STEP.SELECT_FILTER;\n\n /** Currently selected filter to drill down */\n activeFilter: TableViewSettingsFilterComponent | null = null;\n\n /** Table column key associated with the currently selected filter */\n activeFilterColumnKey: Nullable<string> = null;\n\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** Current step component to render */\n activeFilterStepView: FiltersViewStep;\n\n /** @hidden */\n private _initialFilters: CollectionFilter[] = [];\n\n /** @hidden */\n constructor(\n public readonly dialogRef: DialogRef<FiltersDialogData>,\n private readonly _cd: ChangeDetectorRef,\n private readonly _table: Table\n ) {\n const dialogData = this.dialogRef.data;\n this.filterBy = [...dialogData.filterBy];\n this.viewSettingsFilters = dialogData.viewSettingsFilters;\n this.columns = dialogData.columns;\n\n this._setInitialFilters();\n this._compareSelectedFilters();\n }\n\n /** Need it to keep activeFilterStepView rendering up to date */\n ngAfterViewInit(): void {\n this._cd.detectChanges();\n }\n\n /** Select filter to drill down */\n selectFilter(filter: SelectableFilter): void {\n this.activeStep = ACTIVE_STEP.FILTER;\n this.activeFilter = filter as TableViewSettingsFilterComponent;\n this.activeFilterColumnKey = this.columns.find(\n ({ name }) => name === (<TableViewSettingsFilterComponent>filter).column\n )?.key;\n this._cd.detectChanges();\n }\n\n /** Go back to the top filters list */\n goToFilters(): void {\n this.activeStep = ACTIVE_STEP.SELECT_FILTER;\n this.activeFilter = null;\n }\n\n /** Apply filter rule changes and emit the event */\n applyFilter(filter: CollectionFilter, { type }: TableViewSettingsFilterComponent): void {\n if (!filter) {\n return;\n }\n // exclude this filter from filters list\n this.filterBy = this.filterBy.filter(({ field }) => field !== filter.field);\n\n const filterIsNotEmpty =\n type === FilterType.CUSTOM ||\n (type === FilterType.MULTI && filter.value?.length) ||\n (type === FilterType.SINGLE && filter.value?.length);\n\n // if filter is not empty add it to the list\n if (filterIsNotEmpty) {\n this.filterBy.push(filter);\n }\n\n this._compareSelectedFilters();\n\n // To fix \"Expression has changed after it was checked\"\n this._cd.detectChanges();\n }\n\n /** Reset changes to the initial state */\n reset(): void {\n this.filterBy = this._initialFilters;\n this.isResetAvailable$.set(false);\n this._cd.detectChanges();\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const result: FiltersDialogResultData = { filterBy: this.filterBy };\n this.dialogRef.close(result);\n }\n\n /** @hidden */\n private _setInitialFilters(): void {\n this._initialFilters = this._table.initialState?.initialFilterBy ?? [];\n }\n\n /** @hidden */\n private _compareSelectedFilters(): void {\n if (equal(this._initialFilters, this.filterBy)) {\n return;\n }\n\n this.isResetAvailable$.set(true);\n }\n}\n","<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n @if (activeFilterStepView?.titleTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"activeFilterStepView.titleTemplateRef\"></ng-container>\n }\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n @if (activeFilterStepView?.bodyTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"activeFilterStepView.bodyTemplateRef\"></ng-container>\n }\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.filterDialogConfirmBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'platformTable.filterDialogCancelBtnLabel' | fdTranslate\"\n fdkInitialFocus\n (click)=\"cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n<!-- Keep active step component -->\n@if (activeStep === ACTIVE_STEP.SELECT_FILTER) {\n <fdp-filters-list-step\n [filters]=\"viewSettingsFilters\"\n (selectFilter)=\"selectFilter($event)\"\n ></fdp-filters-list-step>\n} @else if (activeStep === ACTIVE_STEP.FILTER) {\n <fdp-filter-step\n [columnKey]=\"activeFilterColumnKey!\"\n [filter]=\"activeFilter!\"\n [filterBy]=\"filterBy\"\n (back)=\"goToFilters()\"\n (valueChange)=\"applyFilter($event, activeFilter!)\"\n ></fdp-filter-step>\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, signal, ViewEncapsulation } from '@angular/core';\nimport equal from 'fast-deep-equal/es6';\n\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { FormsModule } from '@angular/forms';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport {\n ListComponent,\n ListGroupHeaderDirective,\n ListItemComponent,\n ListTitleDirective\n} from '@fundamental-ngx/core/list';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SortDirection, Table, TableDialogCommonData } from '@fundamental-ngx/platform/table-helpers';\nimport { ResetButtonComponent, Resettable, RESETTABLE_TOKEN } from '../../reset-button/reset-button.component';\n\nexport interface SettingsGroupDialogColumn {\n label: string;\n key: string;\n}\n\nexport interface SettingsGroupDialogData extends TableDialogCommonData {\n direction: SortDirection;\n field: string | null;\n columns: SettingsGroupDialogColumn[];\n}\n\nexport interface SettingsGroupDialogResultData {\n field: string | null;\n direction: SortDirection;\n}\n\nconst NOT_GROUPED_OPTION_VALUE = null;\nconst INITIAL_DIRECTION = SortDirection.ASC;\n\n@Component({\n templateUrl: './grouping.component.html',\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: forwardRef(() => GroupingComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n ListComponent,\n ListGroupHeaderDirective,\n ListTitleDirective,\n ListItemComponent,\n RadioButtonComponent,\n FormsModule,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe\n ]\n})\nexport class GroupingComponent implements Resettable {\n /** Current selected direction */\n direction: SortDirection;\n\n /** Current selected field */\n field: string | null = null;\n\n /** Table columns */\n readonly columns: SettingsGroupDialogColumn[] = [];\n\n /** Indicates if reset command is active */\n readonly isResetAvailable$ = signal(false);\n\n /** @hidden */\n readonly SORT_DIRECTION = SortDirection;\n\n /** Not Grouped Option model value */\n readonly NOT_GROUPED_OPTION_VALUE = NOT_GROUPED_OPTION_VALUE;\n\n /** @hidden */\n private _initialGrouping: SettingsGroupDialogResultData;\n\n /** @hidden */\n constructor(\n public dialogRef: DialogRef<SettingsGroupDialogData>,\n private readonly _table: Table\n ) {\n const data = this.dialogRef.data;\n\n this.columns = data.columns || [];\n\n this.direction = data.direction ?? INITIAL_DIRECTION;\n this.field = data.field ?? NOT_GROUPED_OPTION_VALUE;\n\n this._setInitialGrouping();\n\n this._compareInitialGrouping();\n }\n\n /** Reset changes to the initial state */\n reset(): void {\n this.direction = this._initialGrouping.direction;\n this.field = this._initialGrouping.field;\n this.isResetAvailable$.set(false);\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const result: SettingsGroupDialogResultData = { field: this.field, direction: this.direction };\n this.dialogRef.close(result);\n }\n\n /** @hidden */\n _groupOrderChange(direction: SortDirection): void {\n this.direction = direction;\n this._onModelChange();\n }\n\n /** @hidden */\n _groupFieldChange(field: string): void {\n this.field = field;\n this._onModelChange();\n }\n\n /** @hidden */\n _onModelChange(): void {\n // Use this coercion cause fd-radio-button triggers extra ngModelChange events on initial phase\n const isInitialDiffers =\n this.direction !== this._initialGrouping.direction || this.field !== this._initialGrouping.field;\n this.isResetAvailable$.set(isInitialDiffers);\n }\n\n /** @hidden */\n private _setInitialGrouping(): void {\n const initialGrouping = (this._table.initialState?.initialGroupBy || [])[0];\n this._initialGrouping = {\n field: initialGrouping?.field ?? NOT_GROUPED_OPTION_VALUE,\n direction: initialGrouping?.direction ?? INITIAL_DIRECTION\n };\n }\n\n /** @hidden */\n private _compareInitialGrouping(): void {\n const appliedGrouping: SettingsGroupDialogResultData = {\n field: this.field,\n direction: this.direction\n };\n\n if (equal(this._initialGrouping, appliedGrouping)) {\n return;\n }\n\n this.isResetAvailable$.set(true);\n }\n}\n","<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.groupDialogHeader' | fdTranslate }}</h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupOrderHeader' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.ASC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"asc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_groupOrderChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupOrderAsc' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.DESC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"desc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_groupOrderChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupOrderDesc' | fdTranslate }}</span>\n </li>\n </ul>\n\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupByHeader' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"NOT_GROUPED_OPTION_VALUE === field\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"NOT_GROUPED_OPTION_VALUE\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_groupFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.groupDialogNotGroupedLabel' | fdTranslate }}</span>\n </li>\n @for (column of columns; track column) {\n <li fd-list-item [selected]=\"column.key === field\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"column.key\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_groupFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ column.label }}</span>\n </li>\n }\n </ul>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.groupDialogConfirmBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'platformTable.groupDialogCancelBtnLabel' | fdTranslate\"\n fdkInitialFocus\n (click)=\"cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import { ChangeDetectionStrategy, Component, forwardRef, signal, ViewEncapsulation } from '@angular/core';\nimport equal from 'fast-deep-equal/es6';\n\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { FormsModule } from '@angular/forms';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport {\n ListComponent,\n ListGroupHeaderDirective,\n ListItemComponent,\n ListTitleDirective\n} from '@fundamental-ngx/core/list';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { CollectionSort, SortDirection, Table, TableDialogCommonData } from '@fundamental-ngx/platform/table-helpers';\nimport { ResetButtonComponent, Resettable, RESETTABLE_TOKEN } from '../../reset-button/reset-button.component';\n\nexport interface SettingsSortDialogColumn {\n label: string;\n key: string;\n}\n\nexport interface SettingsSortDialogData extends TableDialogCommonData {\n direction: SortDirection;\n field: string | null;\n columns: SettingsSortDialogColumn[];\n allowDisablingSorting: boolean;\n}\n\nexport interface SettingsSortDialogResultData {\n field: string | null;\n direction: SortDirection;\n}\n\nconst NOT_SORTED_OPTION_VALUE = null;\nconst INITIAL_DIRECTION = SortDirection.ASC;\n\n@Component({\n templateUrl: './sorting.component.html',\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: forwardRef(() => SortingComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n ListComponent,\n ListGroupHeaderDirective,\n ListTitleDirective,\n ListItemComponent,\n RadioButtonComponent,\n FormsModule,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe\n ]\n})\nexport class SortingComponent implements Resettable {\n /** Current selected direction */\n direction: SortDirection;\n\n /** Current selected field */\n field: string | null;\n\n /** Whether to allow selecting '(Not sorted)' option in sorting dialog. */\n allowDisablingSorting: boolean;\n\n /** Table columns */\n readonly columns: SettingsSortDialogColumn[] = [];\n\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** @hidden */\n readonly SORT_DIRECTION = SortDirection;\n\n /** @hidden */\n readonly NOT_SORTED_OPTION_VALUE = NOT_SORTED_OPTION_VALUE;\n\n /** @hidden */\n private _initialSorting: CollectionSort;\n\n /** @hidden */\n constructor(\n public dialogRef: DialogRef<SettingsSortDialogData>,\n private _table: Table\n ) {\n const data = this.dialogRef.data;\n\n this.columns = data.columns || [];\n\n this.direction = data.direction ?? INITIAL_DIRECTION;\n this.field = data.field ?? NOT_SORTED_OPTION_VALUE;\n this.allowDisablingSorting = data.allowDisablingSorting;\n\n this._setInitialSorting();\n\n this._compareInitialSorting();\n }\n\n /** Reset changes to the initial state */\n reset(): void {\n this.direction = this._initialSorting.direction;\n this.field = this._initialSorting.field;\n this.isResetAvailable$.set(false);\n }\n\n /** Close dialog */\n cancel(): void {\n this.dialogRef.close(null);\n }\n\n /** Confirm changes and close dialog */\n confirm(): void {\n const result: SettingsSortDialogResultData = { direction: this.direction, field: this.field };\n this.dialogRef.close(result);\n }\n\n /** @hidden */\n _sortDirectionChange(direction: SortDirection): void {\n this.direction = direction;\n this._onModelChange();\n }\n\n /** @hidden */\n _sortFieldChange(field: string): void {\n this.field = field;\n this._onModelChange();\n }\n\n /** @hidden */\n _onModelChange(): void {\n // Use this coercion cause fd-radio-button triggers extra ngModelChange events on initial phase\n const isInitialDiffers =\n this.direction !== this._initialSorting.direction || this.field !== this._initialSorting.field;\n this.isResetAvailable$.set(isInitialDiffers);\n }\n\n /**\n * @hidden\n * Since view settings dialog supports only one sorting, get the first one if available.\n */\n private _setInitialSorting(): void {\n const initialSorting = (this._table.initialState?.initialSortBy || [])[0];\n\n this._initialSorting = {\n field: initialSorting?.field ?? NOT_SORTED_OPTION_VALUE,\n direction: initialSorting?.direction ?? INITIAL_DIRECTION\n };\n }\n\n /**\n * @hidden\n * Compare initial sorting with selected one and set reset button if needed.\n */\n private _compareInitialSorting(): void {\n const appliedSorting: CollectionSort = {\n field: this.field,\n direction: this.direction\n };\n\n if (equal(this._initialSorting, appliedSorting)) {\n return;\n }\n\n this.isResetAvailable$.set(true);\n }\n}\n","<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.sortDialogHeader' | fdTranslate }}</h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.sortDialogSortOrderHeader' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.ASC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"asc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_sortDirectionChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.sortDialogSortOrderAsc' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.DESC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"desc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_sortDirectionChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.sortDialogSortOrderDesc' | fdTranslate }}</span>\n </li>\n </ul>\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.sortDialogSortByHeader' | fdTranslate }}</span>\n </li>\n @if (allowDisablingSorting) {\n <li fd-list-item [selected]=\"field === NOT_SORTED_OPTION_VALUE\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"NOT_SORTED_OPTION_VALUE\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_sortFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.sortDialogNotSortedLabel' | fdTranslate }}</span>\n </li>\n }\n @for (column of columns; track column) {\n <li fd-list-item [selected]=\"column.key === field\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"column.key\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_sortFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ column.label }}</span>\n </li>\n }\n </ul>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.sortDialogConfirmBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'platformTable.sortDialogCancelBtnLabel' | fdTranslate\"\n fdkInitialFocus\n (click)=\"cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n forwardRef,\n Input,\n OnDestroy,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter, startWith } from 'rxjs/operators';\n\nimport { DialogConfig, DialogService } from '@fundamental-ngx/core/dialog';\nimport {\n CollectionFilter,\n SortDirection,\n Table,\n TableColumn,\n TableState\n} from '@fundamental-ngx/platform/table-helpers';\nimport { FiltersComponent, FiltersDialogData, FiltersDialogResultData } from './filtering/filters.component';\nimport {\n GroupingComponent,\n SettingsGroupDialogData,\n SettingsGroupDialogResultData\n} from './grouping/grouping.component';\nimport { SettingsSortDialogData, SettingsSortDialogResultData, SortingComponent } from './sorting/sorting.component';\nimport { TableViewSettingsFilterComponent } from './table-view-settings-filter.component';\n\nexport const dialogConfig: DialogConfig = {\n responsivePadding: false,\n verticalPadding: false,\n minWidth: '30%',\n /** 88px it's the header + footer height */\n bodyMinHeight: 'calc(50vh - 88px)'\n};\n\n/**\n * View settings dialog component.\n *\n * Used to link view settings filters options to the grid table.\n *\n * ```html\n * <fdp-table #myTable></fdp-table>\n * ...\n * <fdp-table-view-settings-dialog [table]=\"myTable\">\n * <fdp-table-view-settings-filter\n * column=\"status\"\n * label=\"Status\"\n * type=\"single-select\"\n * values=\"[{value: 'filterValue', label: 'Filter label'}]\">\n * </fdp-table-view-settings-filter>\n * </fdp-table-view-settings-dialog>\n * ```\n * */\n@Component({\n selector: 'fdp-table-view-settings-dialog',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class TableViewSettingsDialogComponent implements AfterViewInit, OnDestroy {\n /** Reference to table component. */\n @Input()\n set table(table: Table) {\n this._setTable(table);\n }\n\n get table(): Table {\n return this._table;\n }\n\n /** Whether to allow selecting '(Not sorted)' option in sorting dialog. */\n @Input()\n allowDisablingSorting = true;\n\n /** @hidden */\n @ContentChildren(forwardRef(() => TableViewSettingsFilterComponent))\n filters: QueryList<TableViewSettingsFilterComponent>;\n\n /** @hidden */\n _table: Table;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _tableSubscriptions = new Subscription();\n\n /** @hidden */\n constructor(private readonly _dialogService: DialogService) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenToFilters();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._unsubscribeFromTable();\n }\n\n /** Open Sort Settings Dialog */\n showSortingSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns();\n const sortBy = state.sortBy?.[0];\n const dialogData: SettingsSortDialogData = {\n columns: columns.filter(({ sortable }) => sortable),\n direction: sortBy?.direction,\n field: sortBy?.field,\n allowDisablingSorting: this.allowDisablingSorting\n };\n\n const dialogRef = this._dialogService.open(\n SortingComponent,\n {\n ...dialogConfig,\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ field, direction }: SettingsSortDialogResultData) => {\n this._applySorting(field, direction);\n })\n );\n }\n\n /** Open Filtering Settings Dialog */\n showFilteringSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns();\n const dialogData: FiltersDialogData = {\n columns,\n viewSettingsFilters: this.filters.toArray(),\n filterBy: state?.filterBy\n };\n\n const dialogRef = this._dialogService.open(\n FiltersComponent,\n {\n ...dialogConfig,\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ filterBy }: FiltersDialogResultData) => this._applyFiltering(filterBy))\n );\n }\n\n /** Open Grouping Settings Dialog */\n showGroupingSettings(): void {\n const state = this._getTableState();\n const columns = this._getTableColumns();\n const dialogData: SettingsGroupDialogData = {\n columns: columns.filter(({ groupable }) => groupable),\n direction: state.groupBy?.[0]?.direction,\n field: state.groupBy?.[0]?.field\n };\n\n const dialogRef = this._dialogService.open(\n GroupingComponent,\n {\n ...dialogConfig,\n data: dialogData\n },\n this.table.injector\n );\n\n this._subscriptions.add(\n dialogRef.afterClosed\n .pipe(filter((result) => !!result))\n .subscribe(({ field, direction }: SettingsGroupDialogResultData) => {\n this._applyGrouping(field, direction);\n })\n );\n }\n\n /** @hidden */\n private _listenToFilters(): void {\n this.filters.changes.pipe(startWith(null)).subscribe(() => {\n this._table?.showFilterSettingsInToolbar(this.filters.toArray().length > 0);\n });\n }\n\n /** @hidden */\n private _setTable(table: Table): void {\n this._table = table;\n this._unsubscribeFromTable();\n this._subscribeToTable();\n }\n\n /** @hidden */\n private _subscribeToTable(): void {\n if (!this._table) {\n return;\n }\n\n this._listenToTableTriggersToOpenDialogs();\n\n this._listenToTableColumns();\n }\n\n /** @hidden */\n private _listenToTableTriggersToOpenDialogs(): void {\n this._tableSubscriptions.add(this._table.openTableSortSettings.subscribe(() => this.showSortingSettings()));\n this._tableSubscriptions.add(this._table.openTableFilterSettings.subscribe(() => this.showFilteringSettings()));\n this._tableSubscriptions.add(this._table.openTableGroupSettings.subscribe(() => this.showGroupingSettings()));\n }\n\n /** @hidden */\n private _listenToTableColumns(): void {\n this._tableSubscriptions.add(\n this._table.tableColumnsStream.subscribe((columns: TableColumn[]) => {\n this._table?.showSortSettingsInToolbar(columns.some(({ sortable }) => sortable));\n this._table?.showGroupSettingsInToolbar(columns.some(({ groupable }) => groupable));\n })\n );\n }\n\n /** @hidden */\n private _getTableState(): TableState {\n return this._table?.getTableState();\n }\n\n /** @hidden */\n private _getTableColumns(): TableColumn[] {\n return this._table?.getTableColumns() || [];\n }\n\n /** @hidden */\n private _applySorting(field: string | null, direction: SortDirection): void {\n this._table?.sort(field ? [{ field, direction }] : []);\n }\n\n /** @hidden */\n private _applyFiltering(filters: CollectionFilter[]): void {\n this._table?.filter(filters);\n }\n\n /** @hidden */\n private _applyGrouping(field: string | null, direction: SortDirection): void {\n this._table?.group(field ? [{ field, direction, showAsColumn: true }] : []);\n }\n\n /** @hidden */\n private _unsubscribeFromTable(): void {\n this._tableSubscriptions.unsubscribe();\n this._tableSubscriptions = new Subscription();\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { ListComponent, ListItemComponent, ListLinkDirective, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Table, TableDataSourceDirective, TableService } from '@fundamental-ngx/platform/table-helpers';\n\n@Component({\n selector: 'fdp-table-growing-button',\n standalone: true,\n imports: [ListComponent, ListItemComponent, ListTitleDirective, ListLinkDirective, AsyncPipe, FdTranslatePipe],\n templateUrl: './table-growing-button.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableGrowingButtonComponent {\n /** Whether to show items count. */\n @Input()\n showItemsCount = false;\n\n /** @hidden */\n readonly _tableService = inject(TableService);\n\n /** @hidden */\n readonly _dataSourceDirective = inject(TableDataSourceDirective);\n\n /** @hidden */\n readonly _table = inject(Table);\n\n /** @hidden */\n _loadMore(): void {\n (this._table as any)._onSpyIntersect(true);\n }\n}\n","<div fd-list role=\"none\">\n <div\n fd-list-item\n ariaRole=\"none\"\n class=\"fdp-table__growing-button\"\n [growing]=\"true\"\n [style.height]=\"'auto'\"\n [action]=\"true\"\n >\n <a fd-list-link (click)=\"_loadMore()\">\n <div fd-list-title>\n <div\n class=\"fdp-table__growing-button-content\"\n [class.fdp-table__growing-button-content--byline]=\"showItemsCount\"\n >\n @if (!showItemsCount) {\n {{ 'platformTable.loadMore' | fdTranslate }}\n } @else {\n <div class=\"fdp-table__growing-button__title\">\n {{ 'platformTable.loadMore' | fdTranslate }}\n </div>\n <div class=\"fdp-table__growing-button__subtitle\">\n [ {{ _table.loadedRows$() }} / {{ _dataSourceDirective.totalItems$() }} ]\n </div>\n }\n </div>\n </div>\n </a>\n </div>\n</div>\n","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChildren,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport {\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FDK_FOCUSABLE_LIST_DIRECTIVE,\n FocusableItemDirective,\n Nullable\n} from '@fundamental-ngx/cdk/utils';\nimport { TableCellDirective, TableRowDirective } from '@fundamental-ngx/core/table';\nimport { TableColumn, TableRow, TableService } from '@fundamental-ngx/platform/table-helpers';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-table-group-row]',\n templateUrl: './table-group-row.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: TableGroupRowComponent\n }\n ],\n host: {\n role: 'row',\n '[attr.aria-expanded]': 'row.expanded'\n },\n standalone: true,\n imports: [TableCellDirective, NgTemplateOutlet, AsyncPipe]\n})\nexport class TableGroupRowComponent<T> extends TableRowDirective implements OnChanges {\n /** Table ID. */\n @Input()\n rowId: string;\n /** Row index. */\n @HostBinding('attr.aria-rowindex')\n @Input()\n index: number;\n\n /** Row height. */\n @HostBinding('style.height.px')\n @Input()\n height: number;\n\n /** Whether the row is draggable. */\n @HostBinding('class.fd-table__row--draggable')\n @Input()\n draggable = false;\n\n /** Table Row. */\n @Input()\n row: TableRow<T>;\n\n /** Key to column mapping. */\n @Input()\n keyToColumnMap: Map<string, TableColumn>;\n\n /** Table columns length. */\n @Input()\n tableColumnsLength: number;\n\n /** Event emitted when group row expansion state needs to be toggled. */\n @Output()\n toggleGroupRow = new EventEmitter<TableRow<T>>();\n\n /** @hidden */\n _column: Nullable<TableColumn>;\n\n /** @hidden */\n @ViewChildren(FDK_FOCUSABLE_ITEM_DIRECTIVE)\n private set _focusableViewCellItems(items: QueryList<FocusableItemDirective>) {\n this.setItems(items);\n }\n\n /** @hidden */\n readonly _fdpTableService = inject(TableService);\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n\n if ('row' in changes || 'keyToColumnMap' in changes) {\n this._column = this.keyToColumnMap.get(this.row.value?.['field']);\n }\n }\n}\n","<td\n fd-table-cell\n class=\"fd-table__cell--group fd-table__cell--expand\"\n tabindex=\"0\"\n role=\"gridcell\"\n [focusable]=\"true\"\n [attr.colspan]=\"tableColumnsLength\"\n [attr.aria-expanded]=\"row.expanded\"\n [attr.data-nesting-level]=\"row.level + 1\"\n (keydown.enter)=\"toggleGroupRow.emit(row)\"\n (keydown.space)=\"toggleGroupRow.emit(row)\"\n (click)=\"toggleGroupRow.emit(row)\"\n>\n <ng-template [ngTemplateOutlet]=\"tableCellExpandTemplate\"></ng-template>\n</td>\n<!-- Table Cell Expand Template -->\n<ng-template #tableCellExpandTemplate>\n <div class=\"fd-table__expand-wrapper\">\n <span class=\"fd-table__expand\" [class.fd-table__expand--open]=\"row.expanded\" aria-hidden=\"true\"></span>\n @if (_fdpTableService.groupRules$(); as groupRules) {\n <!-- Group row template when no nested groups -->\n @if (groupRules.size === 1) {\n <div class=\"fd-table__text fd-table__text--no-wrap\">\n {{ row.value?.['value'] }} - {{ row.value?.['count'] }}\n </div>\n }\n <!-- Group row template when there are nested groups -->\n @if (groupRules.size !== 1) {\n <div class=\"fd-table__text fd-table__text--no-wrap\">\n <ng-template [ngTemplateOutlet]=\"tableHeaderCellContentTemplate\"></ng-template>:\n {{ row.value?.['value'] }}\n </div>\n }\n }\n </div>\n</ng-template>\n<!-- Column Header Cell Content Template -->\n<ng-template #tableHeaderCellContentTemplate>\n @if (_column) {\n @if (_column.headerCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"_column.headerCellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: _column }\"\n ></ng-template>\n } @else {\n <span\n [id]=\"rowId + '-header-cell-' + _column.name\"\n [attr.title]=\"_column.label\"\n class=\"fd-table__cell--truncate-txt\"\n >{{ _column.label }}</span\n >\n }\n }\n</ng-template>\n","import { NgClass, NgStyle } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n Pipe,\n PipeTransform,\n QueryList,\n ViewChildren,\n ViewEncapsulation,\n computed,\n forwardRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport {\n DisabledBehaviorDirective,\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FDK_FOCUSABLE_LIST_DIRECTIVE,\n FocusableItemDirective,\n RtlService\n} from '@fundamental-ngx/cdk/utils';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { ContentDensityObserver } from '@fundamental-ngx/core/content-density';\nimport { PopoverTriggerDirective } from '@fundamental-ngx/core/popover';\nimport { TableCellDirective, TableRowDirective, TableStatusIndicatorDirective } from '@fundamental-ngx/core/table';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport {\n ColumnResizableSidePipe,\n PlatformTableCellResizableDirective,\n SelectionCellStylesPipe,\n SelectionMode,\n SelectionModeValue,\n SortDirection,\n TableCellStylesPipe,\n TableColumn,\n TableColumnResizeService,\n TableColumnSortingDirectionPipe,\n TableRowService,\n TableService\n} from '@fundamental-ngx/platform/table-helpers';\nimport { TableCellHeaderPopoverComponent } from '../table-cell-header-popover/table-cell-header-popover.component';\nimport { TableHeaderCellContentComponent } from '../table-header-cell-content/table-header-cell-content.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-table-header-row]',\n templateUrl: './table-header-row.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: TableHeaderRowComponent\n }\n ],\n host: {\n role: 'row'\n },\n standalone: true,\n imports: [\n TableCellDirective,\n TableStatusIndicatorDirective,\n DisabledBehaviorDirective,\n CheckboxComponent,\n FormsModule,\n PlatformTableCellResizableDirective,\n NgClass,\n NgStyle,\n PopoverTriggerDirective,\n TableHeaderCellContentComponent,\n TableCellHeaderPopoverComponent,\n FdTranslatePipe,\n SelectionCellStylesPipe,\n TableCellStylesPipe,\n ColumnResizableSidePipe,\n TableColumnSortingDirectionPipe,\n forwardRef(() => IsColumnHasHeaderMenuPipe)\n ]\n})\nexport class TableHeaderRowComponent extends TableRowDirective implements OnInit {\n /** Table ID. */\n @Input()\n rowId: string;\n\n /**\n * Whether to fix the table header and footer. Default is true.\n * Note that if the table contains freezable columns, the header and\n * footer will be fixed automatically, regardless of this input value.\n * */\n @Input()\n fixed: boolean;\n\n /**\n * Whether to show selection column.\n */\n @Input()\n isShownSelectionColumn: boolean;\n\n /**\n * Row checked state.\n */\n @Input()\n checkedState: boolean | null;\n\n /**\n * Selection mode.\n */\n @Input()\n selectionMode: SelectionModeValue;\n\n /**\n * Selection column width.\n */\n @Input()\n selectionColumnWidth: number;\n\n /** The column `name` to freeze columns up to and including. */\n @Input()\n freezeColumnsTo: string;\n\n /** The column `name` to freeze columns after and including. */\n @Input()\n freezeEndColumnsTo: string;\n\n /** @hidden */\n @Input()\n disableSelectionCheckbox = false;\n\n /** @hidden */\n @ViewChildren(FDK_FOCUSABLE_ITEM_DIRECTIVE)\n private set _focusableCellItems(items: QueryList<FocusableItemDirective>) {\n this.setItems(items);\n }\n\n /** @hidden */\n readonly _rtl$ = computed(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n readonly SELECTION_MODE = SelectionMode;\n\n /** @hidden */\n readonly SORT_DIRECTION = SortDirection;\n\n /** @hidden */\n readonly _tableColumnResizeService = inject(TableColumnResizeService);\n\n /** @hidden */\n readonly _fdpTableService = inject(TableService);\n\n /** @hidden */\n readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n /** @hidden */\n readonly _tableRowService = inject(TableRowService);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n this._tableColumnResizeService.markForCheck.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._cdr.detectChanges();\n });\n }\n\n /** @hidden */\n _columnTrackBy(index: number, column: TableColumn): string {\n return column.name;\n }\n}\n\n/** @hidden */\n@Pipe({\n name: 'isColumnHasHeaderMenu',\n standalone: true\n})\nexport class IsColumnHasHeaderMenuPipe implements PipeTransform {\n /** @hidden */\n private readonly _fdpTableService = inject(TableService);\n\n /** @hidden */\n transform(column: TableColumn): boolean {\n return (\n column.sortable ||\n column.groupable ||\n column.freezable ||\n column.endFreezable ||\n (column.filterable && !this._fdpTableService._isFilteringFromHeaderDisabled$())\n );\n }\n}\n","@if (_fdpTableService._semanticHighlighting$()) {\n <th\n [class.fd-table__cell--fixed]=\"fixed\"\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [style.min-width]=\"_fdpTableService._semanticHighlightingColumnWidth$()\"\n [style.max-width]=\"_fdpTableService._semanticHighlightingColumnWidth$()\"\n ></th>\n}\n\n@if (isShownSelectionColumn) {\n <th\n fd-table-cell\n [focusable]=\"true\"\n [class.fd-table__cell--fixed]=\"fixed\"\n class=\"fd-table__cell--checkbox\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n (keydown.enter)=\"\n selectionMode === SELECTION_MODE.MULTIPLE && _tableRowService.toggleAllSelectableRows(!checkedState)\n \"\n (keydown.space)=\"\n selectionMode === SELECTION_MODE.MULTIPLE && _tableRowService.toggleAllSelectableRows(!checkedState)\n \"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n [attr.aria-description]=\"\n !checkedState\n ? ('platformTable.selectAllCheckboxLabel' | fdTranslate)\n : ('platformTable.deselectAllCheckboxLabel' | fdTranslate)\n \"\n >\n @if (selectionMode === SELECTION_MODE.MULTIPLE) {\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [fdkDisabled]=\"_fdpTableService.visibleColumnsLength() === 0 || disableSelectionCheckbox\"\n [tristate]=\"true\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"checkedState\"\n (ngModelChange)=\"_tableRowService.toggleAllSelectableRows($event)\"\n ></fd-checkbox>\n }\n </th>\n}\n\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <th\n [focusable]=\"true\"\n role=\"columnheader\"\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [id]=\"rowId + '__' + column.name\"\n [attr.aria-colindex]=\"$index\"\n [attr.aria-sort]=\"_fdpTableService.sortRules$().get(column.key) | fdpTableColumnSortingDirection\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : '',\n (column | isColumnHasHeaderMenu) ? 'fd-table__item--clickable' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl$()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [fdPopoverTrigger]=\"(column | isColumnHasHeaderMenu) ? tablePopover.popover : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n >\n <fdp-table-header-cell-content [id]=\"rowId\" [column]=\"column\" [attr.title]=\"column.label\">\n <!-- Header menu -->\n <fdp-table-cell-header-popover\n #tablePopover\n [disabled]=\"!(column | isColumnHasHeaderMenu)\"\n [columnFrozen]=\"column._freezed || column._endFreezed\"\n [column]=\"column\"\n [columnIndex]=\"$index\"\n [popoverTemplate]=\"(column | isColumnHasHeaderMenu) ? column.headerCellPopoverTemplate : null\"\n [filteringFromHeaderDisabled]=\"_fdpTableService._isFilteringFromHeaderDisabled$()\"\n ></fdp-table-cell-header-popover>\n </fdp-table-header-cell-content>\n </th>\n}\n\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <th fd-table-cell class=\"fdp-table__cell--navigation is-last-child\" role=\"columnheader\"></th>\n}\n\n<th\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n></th>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { DisabledBehaviorDirective, FDK_FOCUSABLE_LIST_DIRECTIVE, ValueByPathPipe } from '@fundamental-ngx/cdk/utils';\nimport { FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { TableCellDirective, TableRowDirective, TableTextDirective } from '@fundamental-ngx/core/table';\nimport {\n SelectionMode,\n SelectionModeValue,\n TableRow,\n TableService,\n isTreeRow,\n isTreeRowFirstCell\n} from '@fundamental-ngx/platform/table-helpers';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-table-popping-row]',\n templateUrl: './table-popping-row.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: TablePoppingRowComponent\n }\n ],\n host: {\n role: 'row',\n '[attr.aria-expanded]': '_isTreeRow(row) ? row.expanded : null'\n },\n standalone: true,\n imports: [\n TableCellDirective,\n DisabledBehaviorDirective,\n TableTextDirective,\n FormLabelComponent,\n NgTemplateOutlet,\n ValueByPathPipe\n ]\n})\nexport class TablePoppingRowComponent<T> extends TableRowDirective {\n /** Table Row. */\n @Input()\n row: TableRow<T>;\n\n /** Whether the row is selected. */\n @HostBinding('attr.aria-selected')\n @Input()\n checked: boolean | null;\n\n /** Current selection mode. */\n @Input()\n selectionMode: SelectionModeValue;\n\n /** Event emitted when group row expansion state needs to be toggled. */\n @Output()\n toggleGroupRow = new EventEmitter<TableRow<T>>();\n\n /** Event emitted when cell being clicked on. */\n @Output()\n cellClicked = new EventEmitter<{ index: number; row: TableRow<T> }>();\n\n /** @hidden */\n readonly SELECTION_MODE = SelectionMode;\n\n /** @hidden */\n readonly _isTreeRow = isTreeRow;\n\n /** @hidden */\n readonly _isTreeRowFirstCell = isTreeRowFirstCell;\n\n /** @hidden */\n readonly _fdpTableService = inject(TableService);\n}\n","@if (selectionMode !== SELECTION_MODE.NONE) {\n <td fd-table-cell fdkDisabled [addDisabledClass]=\"false\"></td>\n}\n\n<td\n fd-table-cell\n colspan=\"100%\"\n [attr.data-nesting-level]=\"row.level + 1\"\n [attr.aria-expanded]=\"_isTreeRow(row) ? row.expanded : null\"\n (click)=\"cellClicked.emit({ index: 0, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell(0, row, $event) && toggleGroupRow.emit(row)\"\n>\n @for (poppingColumn of _fdpTableService.poppingColumns$(); track poppingColumn.name) {\n <div fd-table-text>\n <label fd-form-label>{{ poppingColumn.label }}:</label>\n\n @if (poppingColumn?.columnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"poppingColumn.columnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: true, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n {{ row.value | valueByPath: poppingColumn.key }}\n }\n </div>\n }\n</td>\n","import { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, NgForm } from '@angular/forms';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { InputComponent, PlatformDatePickerComponent, SwitchComponent } from '@fundamental-ngx/platform/form';\nimport { EditableTableCell, TableColumn, TableRow } from '@fundamental-ngx/platform/table-helpers';\nimport { set } from 'lodash-es';\n\nlet controlUniqId = 0;\n\n@Component({\n selector: 'fdp-table-editable-cell',\n templateUrl: './table-editable-cell.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: EditableTableCell, useExisting: TableEditableCellComponent }],\n standalone: true,\n imports: [FormsModule, InputComponent, PlatformDatePickerComponent, SwitchComponent, FdTranslatePipe]\n})\nexport class TableEditableCellComponent implements EditableTableCell {\n /** Table row definition. */\n @Input()\n row: TableRow;\n\n /** Table cell definition. */\n @Input()\n column: TableColumn;\n\n /** Column value. */\n @Input()\n set columnValue(value: any) {\n this._columnValue = value;\n set(this.row.value, this.column.key, value);\n }\n\n get columnValue(): any {\n return this._columnValue;\n }\n\n /** Editable cell form. */\n @ViewChild(NgForm)\n form: NgForm;\n\n /** @hidden */\n _controlUniqName = `input-${controlUniqId++}`;\n\n /** @hidden */\n private _columnValue: any;\n}\n","<form #ngForm>\n @switch (column.dataType) {\n @case ('number') {\n <fdp-input\n [placeholder]=\"'platformTable.editableCellNumberPlaceholder' | fdTranslate\"\n [(ngModel)]=\"columnValue\"\n [name]=\"_controlUniqName\"\n type=\"number\"\n ></fdp-input>\n }\n @case ('date') {\n <fdp-date-picker\n type=\"single\"\n [placeholder]=\"'platformTable.editableCellDatePlaceholder' | fdTranslate\"\n [name]=\"_controlUniqName\"\n [allowNull]=\"false\"\n [(ngModel)]=\"columnValue\"\n ></fdp-date-picker>\n }\n @case ('boolean') {\n <fdp-switch [(ngModel)]=\"columnValue\" [name]=\"_controlUniqName\"></fdp-switch>\n }\n @default {\n <fdp-input\n [placeholder]=\"'platformTable.editableCellStringPlaceholder' | fdTranslate\"\n [(ngModel)]=\"columnValue\"\n [name]=\"_controlUniqName\"\n type=\"text\"\n ></fdp-input>\n }\n }\n</form>\n","import { DOWN_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { AsyncPipe, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChildren,\n ViewEncapsulation,\n computed,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport {\n DisabledBehaviorDirective,\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FDK_FOCUSABLE_LIST_DIRECTIVE,\n FocusableItemDirective,\n FocusableItemPosition,\n KeyUtil,\n RtlService,\n ValueByPathPipe,\n destroyObservable,\n uuidv4\n} from '@fundamental-ngx/cdk/utils';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { ContentDensityObserver } from '@fundamental-ngx/core/content-density';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport {\n TableCellDirective,\n TableIconDirective,\n TableRowDirective,\n TableStatusIndicatorDirective\n} from '@fundamental-ngx/core/table';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport {\n ColumnResizableSidePipe,\n EditableTableCell,\n PlatformTableCellResizableDirective,\n SelectionCellStylesPipe,\n SelectionMode,\n SelectionModeValue,\n TableCellStylesPipe,\n TableColumn,\n TableColumnResizeService,\n TableDraggableDirective,\n TableRow,\n TableRowKeyboardDrag,\n TableRowService,\n TableService,\n isTreeRow,\n isTreeRowFirstCell\n} from '@fundamental-ngx/platform/table-helpers';\nimport { Subject, fromEvent, merge } from 'rxjs';\nimport { filter, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { TableEditableCellComponent } from '../table-editable-cell/table-editable-cell.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-table-row]',\n templateUrl: './table-row.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: TableRowComponent\n }\n ],\n host: {\n role: 'row',\n '[attr.aria-expanded]': '_isTreeRow(row) ? row.expanded : null'\n },\n standalone: true,\n imports: [\n TableCellDirective,\n TableStatusIndicatorDirective,\n DisabledBehaviorDirective,\n NgStyle,\n NgTemplateOutlet,\n CheckboxComponent,\n FormsModule,\n PlatformTableCellResizableDirective,\n NgClass,\n TableEditableCellComponent,\n TableIconDirective,\n AsyncPipe,\n ValueByPathPipe,\n FdTranslatePipe,\n SelectionCellStylesPipe,\n TableCellStylesPipe,\n ColumnResizableSidePipe,\n IconComponent\n ]\n})\nexport class TableRowComponent<T> extends TableRowDirective implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n /** Row ID. */\n @Input()\n rowId: string;\n\n /** Table Row. */\n @Input()\n row: TableRow<T>;\n\n /** Row index. */\n @HostBinding('attr.aria-rowindex')\n @Input()\n index: number;\n\n /** Selection mode. */\n @Input()\n selectionMode: SelectionModeValue;\n\n /** Selectable flag key. */\n @Input()\n selectableKey: string;\n\n /** Whether to enable checkbox tristate mode. */\n @Input()\n enableTristateMode: boolean;\n\n /**\n * Whether to fix the table header and footer. Default is true.\n * Note that if the table contains freezable columns, the header and\n * footer will be fixed automatically, regardless of this input value.\n * */\n @Input()\n fixed: boolean;\n\n /** Selection column width. */\n @Input()\n selectionColumnWidth: number;\n\n /** The column `name` to freeze columns up to and including. */\n @Input()\n freezeColumnsTo: string;\n\n /** The column `name` to freeze columns after and including. */\n @Input()\n freezeEndColumnsTo: string;\n\n /**\n * Event emitted when keyboard drag performed.\n */\n @Output()\n keyboardDrag = new EventEmitter<TableRowKeyboardDrag>();\n\n /** @hidden */\n @ViewChildren(FDK_FOCUSABLE_ITEM_DIRECTIVE)\n private set _focusableViewCellItems(items: QueryList<FocusableItemDirective>) {\n this.setItems(items);\n }\n\n /** @hidden */\n @ViewChildren(EditableTableCell)\n private readonly _editableCells: QueryList<EditableTableCell>;\n\n /** @hidden */\n @HostBinding('attr.aria-selected')\n private get _ariaSelected(): boolean {\n return !!this.row.checked;\n }\n\n /** @hidden */\n _hasRowHeaderColumn$ = computed(() => this._fdpTableService.visibleColumns$().some((c) => c.role === 'rowheader'));\n\n /** @hidden */\n readonly _rtl$ = computed(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n _rowSelectionHelperTextId = `rowSelectionHelper-${uuidv4()}`;\n\n /** @hidden */\n readonly _isTreeRowFirstCell = isTreeRowFirstCell;\n\n /** @hidden */\n readonly SELECTION_MODE = SelectionMode;\n\n /** @hidden */\n readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n /** @hidden */\n readonly _tableColumnResizeService = inject(TableColumnResizeService);\n\n /** @hidden */\n readonly _fdpTableService = inject(TableService);\n\n /** @hidden */\n readonly _tableRowService = inject(TableRowService);\n\n /** @hidden */\n readonly _isTreeRow = isTreeRow;\n\n /** @hidden */\n private readonly _refreshChildRows$ = new Subject<void>();\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private readonly _zone = inject(NgZone);\n\n /** @hidden */\n private readonly _elmRef = inject(ElementRef);\n\n /** @hidden */\n private readonly _dndTableDirective = inject(TableDraggableDirective, {\n optional: true\n });\n\n /** @hidden */\n constructor() {\n super();\n this._tableColumnResizeService.resizeInProgress$\n .pipe(\n switchMap(() => this._tableColumnResizeService.markForCheck),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n this._cdr.markForCheck();\n });\n\n this._zone.runOutsideAngular(() => {\n fromEvent<KeyboardEvent>(this._elmRef.nativeElement, 'keydown')\n .pipe(\n filter(() => !!this._dndTableDirective),\n takeUntilDestroyed()\n )\n .subscribe((event) => {\n this._onKeyDown(event);\n });\n });\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n this._editableCells.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n const cells = this._editableCells.toArray();\n if (cells.length > 0) {\n this._tableRowService.updateEditableCells(this.row, cells);\n } else {\n this._tableRowService.removeEditableCells(this.row);\n }\n });\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n if ('row' in changes) {\n this._listenToRowExpansion();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this._refreshChildRows$.next();\n this._refreshChildRows$.complete();\n this._tableRowService.removeEditableCells(this.row);\n }\n\n /** @hidden */\n _toggleGroupRow(): void {\n this._tableRowService.toggleRow({ type: 'toggleRow', row: this.row });\n }\n\n /** @hidden */\n _toggleSingleSelectableRow(event?: Event): void {\n event?.preventDefault();\n this._tableRowService.toggleRow({ type: 'toggleSingleSelectableRow', row: this.row });\n }\n\n /** @hidden */\n _toggleMultiSelectRow(row: TableRow<T>, event?: Event): void {\n event?.preventDefault();\n this._tableRowService.toggleRow({ ...{ row, event }, ...{ type: 'toggleMultiSelectRow' } });\n }\n\n /** @hidden */\n _columnTrackBy(index: number, column: TableColumn): string {\n return column.name;\n }\n\n /** @hidden */\n _itemFocusedEventAnnouncer = (position: FocusableItemPosition): string => {\n let retVal = `Column ${position.colIndex + 1} of ${position.totalCols}, `;\n let column;\n if (this._fdpTableService?.visibleColumns$) {\n let colIndex = position.colIndex;\n if (this.selectionMode === 'single' || this.selectionMode === 'multiple') {\n colIndex--;\n }\n column = this._fdpTableService.visibleColumns$()[colIndex];\n }\n if (column && (column._freezed || column._endFreezed)) {\n retVal = retVal + 'fixed, ';\n }\n retVal = retVal + `row: ${position.rowIndex + 1} of ${position.totalRows}`;\n return retVal;\n };\n\n /** @hidden */\n protected _handleCellSpaceKey(colIdx: number, tableCellElement: HTMLTableCellElement, $event: Event): void {\n if ($event.target === tableCellElement && isTreeRowFirstCell(colIdx, this.row, $event)) {\n $event.preventDefault();\n this._toggleGroupRow();\n }\n }\n\n /** @hidden */\n private _listenToRowExpansion(): void {\n this._refreshChildRows$.next();\n const refresh = merge(this._refreshChildRows$, destroyObservable(this._destroyRef));\n // Load items only once. Further loading will be covered by the lazy loading functionality.\n this.row?.expanded$\n ?.pipe(\n filter((expanded) => expanded && this.row.children.length === 0),\n takeUntil(refresh)\n )\n .subscribe(() => {\n this._tableRowService.loadChildRows(this.row);\n });\n }\n\n /** @hidden */\n private _onKeyDown(event: KeyboardEvent): void {\n const isArrowDown = KeyUtil.isKeyCode(event, DOWN_ARROW);\n const isArrowUp = KeyUtil.isKeyCode(event, UP_ARROW);\n\n if (!event.altKey) {\n return;\n }\n\n if (!isArrowDown && !isArrowUp) {\n return;\n }\n\n this._dndTableDirective?.dragRowFromKeyboard(\n isArrowDown ? 'down' : 'up',\n event,\n this.index,\n event.shiftKey ? 'group' : 'shift'\n );\n }\n}\n","@if (_fdpTableService._semanticHighlighting$(); as semanticHighlighting) {\n <td\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [addDisabledClass]=\"false\"\n [status]=\"row.value[semanticHighlighting]\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n}\n<!-- hidden text for screenreader -->\n<ng-template #selectionScreenReaderText>\n <span\n aria-hidden=\"true\"\n [attr.id]=\"_rowSelectionHelperTextId\"\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ (row.checked ? 'platformTable.deselectSingleRow' : 'platformTable.selectSingleRow') | fdTranslate }}\n </span>\n</ng-template>\n<!-- Row Selection Cell -->\n@if (selectionMode === SELECTION_MODE.SINGLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [attr.role]=\"_hasRowHeaderColumn$() ? 'rowheader' : 'gridcell'\"\n fd-table-cell\n [focusable]=\"true\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n [attr.aria-selected]=\"row.checked\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n (click)=\"_toggleSingleSelectableRow()\"\n (keydown.enter)=\"_toggleSingleSelectableRow($event)\"\n (keydown.space)=\"_toggleSingleSelectableRow($event)\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n} @else if (selectionMode === SELECTION_MODE.MULTIPLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n role=\"cell\"\n fd-table-cell\n [focusable]=\"true\"\n (keydown.enter)=\"_toggleMultiSelectRow(row, $event)\"\n (keydown.space)=\"_toggleMultiSelectRow(row, $event)\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n [attr.aria-selected]=\"row.checked\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [tristate]=\"enableTristateMode\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"row.checked$ | async\"\n (ngModelChange)=\"_toggleMultiSelectRow(row)\"\n ></fd-checkbox>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n}\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <td\n #tableCellElement\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [focusable]=\"true\"\n [attr.role]=\"column.role\"\n [headers]=\"rowId + '__' + column.name\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n row.isTree && $index === 0 ? 'fd-table__cell--expand' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl$()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [attr.aria-expanded]=\"_isTreeRowFirstCell($index, row) ? row.expanded : null\"\n [attr.data-nesting-level]=\"$index === 0 ? row.level + 1 : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n (click)=\"_tableRowService.cellClicked({ index: $index, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell($index, row, $event) && _toggleGroupRow()\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.space)=\"_handleCellSpaceKey($index, tableCellElement, $event)\"\n >\n <div\n [class.fd-table__text]=\"column.applyText\"\n [class.fd-table__text--no-wrap]=\"column.noWrap\"\n #tableTextContainer\n >\n @if (_isTreeRowFirstCell($index, row)) {\n <span\n class=\"fd-table__expand\"\n [class.fd-table__expand--open]=\"row.expanded$ | async\"\n aria-hidden=\"true\"\n ></span>\n }\n @if (row.state === 'readonly') {\n @if (tableTextContainer.innerText?.trim() === '') {\n <span\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ 'platformTable.emptyCell' | fdTranslate }}\n </span>\n }\n @if (column?.columnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.columnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n {{ row.value | valueByPath: column.key }}\n }\n } @else {\n @if (column?.editableColumnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.editableColumnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n <fdp-table-editable-cell\n [row]=\"row\"\n [column]=\"column\"\n [columnValue]=\"row.value | valueByPath: column.key\"\n ></fdp-table-editable-cell>\n }\n }\n </div>\n </td>\n}\n<ng-content></ng-content>\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <td fd-table-cell class=\"fdp-table__cell--navigation is-last-child\" fdkDisabled [addDisabledClass]=\"false\">\n @if (row.navigatable) {\n <fd-icon\n fd-table-icon\n [navigation]=\"true\"\n [glyph]=\"_rtl$() ? 'slim-arrow-left' : 'slim-arrow-right'\"\n class=\"fdp-table__navigation-indicator\"\n ></fd-icon>\n }\n </td>\n}\n<td\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n></td>\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewChecked,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n inject,\n Injector,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n signal,\n SimpleChanges,\n TrackByFunction,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n DndListDirective,\n DragAndDropModule,\n FDK_FOCUSABLE_GRID_DIRECTIVE,\n FocusableCellPosition,\n FocusableGridDirective,\n IntersectionSpyDirective,\n KeyUtil,\n Nullable,\n RangeSelector,\n RepeatDirective,\n resizeObservable,\n RtlService,\n TabbableElementService\n} from '@fundamental-ngx/cdk/utils';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport {\n ContentDensityMode,\n ContentDensityObserver,\n contentDensityObserverProviders\n} from '@fundamental-ngx/core/content-density';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport {\n TableComponent as CoreTableComponent,\n TableService as CoreTableService,\n TableComponent as FdTableComponent,\n TableBodyDirective,\n TableCellDirective,\n TableHeaderDirective,\n TableRowDirective\n} from '@fundamental-ngx/core/table';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchInput } from '@fundamental-ngx/platform/search-field';\nimport { FDP_PRESET_MANAGED_COMPONENT, isJsObject } from '@fundamental-ngx/platform/shared';\nimport {\n applySelectionToChildren,\n buildNewRowSkeleton,\n CollectionFilter,\n CollectionGroup,\n CollectionSort,\n convertObjectsToTableRows,\n convertTreeObjectsToTableRows,\n convertTreeTableRowToFlatList,\n DEFAULT_HIGHLIGHTING_KEY,\n EDITABLE_ROW_SEMANTIC_STATE,\n EditableTableCell,\n FDP_TABLE_DRAGGABLE_DIRECTIVE,\n FDP_TABLE_STATE_DIRECTIVE,\n FDP_TABLE_VIRTUAL_SCROLL_DIRECTIVE,\n findRowChildren,\n getFreezableColumns,\n getFreezableEndColumns,\n getRowParents,\n getSelectableRows,\n isRowNavigatable,\n isTableRow,\n isTreeRowFirstCell,\n PlatformTableManagedPreset,\n ROW_HEIGHT,\n RowClassesPipe,\n RowComparator,\n SaveRowsEvent,\n SELECTION_COLUMN_WIDTH,\n SelectionMode,\n SelectionModeValue,\n SEMANTIC_HIGHLIGHTING_COLUMN_WIDTH,\n Table,\n TableColumn,\n TableColumnFreezeEvent,\n TableColumnResizeService,\n TableColumnsChangeEvent,\n TableDataSource,\n TableDataSourceDirective,\n TableDraggable,\n TableFilterChangeEvent,\n TableGroupChangeEvent,\n TableHeaderResizerDirective,\n TableInitialState,\n TablePageChangeEvent,\n TableResponsiveService,\n TableRow,\n TableRowActivateEvent,\n TableRowClass,\n TableRowSelectionChangeEvent,\n TableRowService,\n TableRowToggleOpenStateEvent,\n TableRowType,\n TableScrollable,\n TableScrollableDirective,\n TableScrollDispatcherService,\n TableService,\n TableSortChangeEvent,\n TableState,\n TableVirtualScroll\n} from '@fundamental-ngx/platform/table-helpers';\nimport equal from 'fast-deep-equal';\nimport { uniq } from 'lodash-es';\nimport { fromEvent, Observable, of, Subject, Subscription } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap\n} from 'rxjs/operators';\nimport { NoDataWrapperComponent, TABLE_TOOLBAR, TableToolbarInterface, ToolbarContext } from './components';\nimport { TableGrowingButtonComponent } from './components/growing-button/table-growing-button.component';\nimport { PlatformTableColumnResizerComponent } from './components/table-column-resizer/table-column-resizer.component';\nimport { TableGroupRowComponent } from './components/table-group-row/table-group-row.component';\nimport { TableHeaderRowComponent } from './components/table-header-row/table-header-row.component';\nimport { TablePoppingRowComponent } from './components/table-popping-row/table-popping-row.component';\nimport { TableRowComponent } from './components/table-row/table-row.component';\n\nlet tableUniqueId = 0;\n\n/**\n * The component that represents a table.\n * A table is a set of tabular data. Line items can support data, images and actions.\n * ```html\n * <fdp-table\n * [dataSource]=\"source\"\n * fdCompact\n * selectionMode=\"multiple\"\n * emptyTableMessage=\"No data found\">\n *\n * <fdp-table-toolbar\n * title=\"Order Line Items\"\n * [hideItemCount]=\"false\">\n * </fdp-table-toolbar>\n *\n * <fdp-column\n * name=\"name\"\n * key=\"name\"\n * label=\"Name\"\n * align=\"start\">\n * </fdp-column>\n *\n * <fdp-column\n * name=\"description\"\n * key=\"description\"\n * label=\"Description\">\n * </fdp-column>\n * </fdp-table>\n * ```\n */\n@Component({\n selector: 'fdp-table',\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: Table, useExisting: forwardRef(() => TableComponent) },\n TableRowService,\n TableService,\n CoreTableService,\n TableScrollDispatcherService,\n TableColumnResizeService,\n TableResponsiveService,\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY, ContentDensityMode.CONDENSED]\n }),\n {\n provide: FDP_PRESET_MANAGED_COMPONENT,\n useExisting: TableComponent\n }\n ],\n hostDirectives: [\n {\n directive: TableDataSourceDirective,\n inputs: ['dataSource', 'childDataSource'],\n // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n outputs: [\n 'childDataSourceChanged',\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n 'onDataRequested',\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n 'onDataReceived',\n 'dataSourceChanged',\n 'dataChanged',\n 'isLoading'\n ]\n },\n TableHeaderResizerDirective\n ],\n host: {\n class: 'fdp-table',\n '[class.fdp-table--outer-scroll]': 'outerScroll',\n '[class.fd-table--no-horizontal-borders]': 'noHorizontalBorders || noBorders',\n '[class.fd-table--no-vertical-borders]': 'noVerticalBorders || noBorders',\n '[class.fd-table--group]': '_isGroupTable$()'\n },\n standalone: true,\n imports: [\n NgTemplateOutlet,\n BusyIndicatorComponent,\n PlatformTableColumnResizerComponent,\n TableScrollableDirective,\n FocusableGridDirective,\n CoreTableComponent,\n TableHeaderDirective,\n TableHeaderRowComponent,\n TableBodyDirective,\n DragAndDropModule,\n TableGroupRowComponent,\n TableRowComponent,\n TablePoppingRowComponent,\n RepeatDirective,\n TableRowDirective,\n TableCellDirective,\n SkeletonComponent,\n IntersectionSpyDirective,\n AsyncPipe,\n FdTranslatePipe,\n RowClassesPipe,\n TableGrowingButtonComponent\n ]\n})\nexport class TableComponent<T = any>\n extends Table<T>\n implements AfterViewInit, OnDestroy, OnChanges, OnInit, AfterViewChecked\n{\n /** Component name used in a Preset-managed component. */\n @Input()\n name = 'platformTable';\n\n /** ID for the Table. */\n @Input()\n @HostBinding('attr.id')\n id = `fdp-table-${tableUniqueId++}`;\n\n /** Whether to allow resizing columns by dragging the column edge with mouse. */\n @Input()\n enableDragResize = true;\n\n /**\n * Whether to fix the table header and footer. Default is true.\n * Note that if the table contains freezable columns, the header and\n * footer will be fixed automatically, regardless of this input value.\n * */\n @Input()\n fixed = true;\n\n /** The column `name` to freeze columns up to and including. */\n @Input()\n freezeColumnsTo: string;\n\n /** The column `name` to freeze columns after and including. */\n @Input()\n freezeEndColumnsTo: string;\n /** Toggle for page scrolling feature. */\n @Input()\n pageScrolling = false;\n /** Whether the table should render growing button at the bottom. */\n @Input()\n showGrowingButton = false;\n /**\n * Whether to show total items amount in growing button text content.\n */\n @Input()\n showItemsCount = false;\n /** Number of items per page. */\n @Input()\n pageSize: Nullable<number>;\n /** Page scrolling threshold in px. */\n @Input()\n pageScrollingThreshold = 80;\n /** Table body height. */\n @Input()\n bodyHeight: string;\n /** Text displayed when table has no items. */\n @Input()\n emptyTableMessage: string;\n /** Text displayed when table has no visible columns. */\n @Input()\n noVisibleColumnsMessage: string;\n /** Table without horizontal borders. */\n @Input()\n noHorizontalBorders = false;\n /** If the table scrolling should happen outside and stick the toolbar and thead */\n @Input({ transform: booleanAttribute })\n outerScroll = false;\n /** Table without vertical borders. */\n @Input()\n noVerticalBorders = false;\n /** Table without borders. */\n @Input()\n noBorders = false;\n /** Table body without any borders, but header with borders. */\n @Input()\n noBodyBorders = false;\n /** Table without outer borders */\n @HostBinding('class.fdp-table--no-outer-border')\n @Input()\n noOuterBorders = false;\n /** Table body without horizontal borders. */\n @Input()\n noBorderX = false;\n /** Table body without vertical borders. */\n @Input()\n noBorderY = false;\n /** Accessor to a children nodes of tree. */\n @Input()\n relationKey: string;\n /** Table row expanded state key. Used to set the initial state of tree row. */\n @Input()\n expandedStateKey: string;\n /** Property key indicating that the row has children accessible via [childDataSource]. */\n @Input()\n hasChildrenKey: string;\n /**\n * Whether row is navigatable.\n * Pass boolean value to set state for the all rows.\n * Pass string value with the key of the row item's field to compute state for every single row.\n */\n @Input()\n rowNavigatable: string | boolean = false;\n /**\n * Whether to highlight navigated row.\n */\n @Input()\n highlightNavigatedRow = false;\n /** Whether table row can be clicked */\n @Input()\n rowsActivable = false;\n /** Value with the key of the row item's field to enable selecting. */\n @Input()\n selectedKey: string;\n /** Value with the key of the row item's field to enable selecting. */\n @Input()\n selectableKey: string;\n /**\n * Tracking function that will be used to check the differences in data changes.\n * Used similarly to `ngFor` `trackBy` function.\n * Accepts a function that takes two parameters, index and item.\n */\n @Input()\n trackBy: TrackByFunction<T>;\n /**\n * An optional function that identifies uniqueness of a particular row.\n * Table component uses it to be able to preserve selection when a data list is changed.\n */\n @Input()\n rowComparator: RowComparator<T>;\n /** String or function to calculate additional rows' CSS classes. */\n @Input()\n rowsClass: TableRowClass<T>;\n /** Used to construct empty row object for editing. */\n @Input()\n editableRowSkeleton: T;\n /** Whether all rows should be collapsed by default after the table is loaded. */\n @Input()\n expandOnInit = false;\n /**\n * Height of the row, required for the virtualScroll,\n * default is 44px in cozy, 32px in compact and 24px in condensed (set automatically)\n */\n @Input()\n rowHeight = ROW_HEIGHT.get(ContentDensityMode.COZY)!;\n /** Event emitted when the current preset configuration has been changed. */\n /**\n * Whether to load previous pages.\n * This option works only when `pageScrolling` is true, and the initial page > 1\n */\n @Input()\n loadPagesBefore = false;\n\n /** @hidden */\n _selectionMode: SelectionModeValue = SelectionMode.NONE;\n\n /** Sets selection mode for the table. 'single' | 'multiple' | 'none' */\n @Input()\n set selectionMode(value: SelectionModeValue) {\n this._selectionMode = value;\n this._isSelectionColumnShown = this.selectionMode !== SelectionMode.NONE;\n this._setSelectionColumnWidth();\n }\n\n get selectionMode(): SelectionModeValue {\n return this._selectionMode;\n }\n\n /** @hidden */\n private _enableTristateMode = false;\n\n /**\n * When True, the checked state of each tree item depends on the checked\n * state of its parent or direct child.\n */\n @Input()\n set enableTristateMode(value: boolean) {\n this._enableTristateMode = value;\n }\n\n get enableTristateMode(): boolean {\n return this.isTreeTable && this._enableTristateMode;\n }\n\n /** Value with the key of the row item's field to compute semantic state of the row. */\n @Input()\n set semanticHighlighting(value: string) {\n this._semanticHighlightingKey = value;\n this._setSemanticHighlighting();\n }\n get semanticHighlighting(): string {\n if (!this._semanticHighlightingKey && this._forceSemanticHighlighting) {\n return DEFAULT_HIGHLIGHTING_KEY;\n }\n\n return this._semanticHighlightingKey;\n }\n\n /**\n * Whether to force rows to follow 'checked all' state of the table.\n * If true, all new rows that are coming from the dataSource will follow 'checked all' state.\n * If false, row will respect `checkedKey` property to define checked state of itself.\n * Default is false.\n */\n @Input()\n forceCheckedAllState = false;\n\n /**\n * aria-labelledby attribute value for the table.\n */\n @Input()\n ariaLabelledBy: string;\n\n /**\n * Specifies minimal width of the non-frozen columns.\n * Useful when table has large amount of freezable columns and table still should have some free space available.\n */\n @Input()\n set nonFrozenColumnsMinWidth(value: number) {\n this._listenToFixedColumnsWidth();\n this._nonFrozenColumnsMinWidth = value;\n }\n\n get nonFrozenColumnsMinWidth(): number {\n return this._nonFrozenColumnsMinWidth;\n }\n\n /** @hidden */\n private _nonFrozenColumnsMinWidth = 0;\n\n /** @hidden */\n private _shouldCheckNewRows = false;\n\n /** @hidden */\n private _calculateFrozenColumnRefresh$ = new Subject<void>();\n\n /** Event emitted when current preset configuration has been changed. */\n @Output()\n presetChanged = new EventEmitter<PlatformTableManagedPreset>();\n /** Event fired when table selection has changed. */\n @Output()\n readonly rowSelectionChange: EventEmitter<TableRowSelectionChangeEvent<T>> = new EventEmitter<\n TableRowSelectionChangeEvent<T>\n >();\n /** Event fired when table sort order has changed. */\n @Output()\n readonly sortChange: EventEmitter<TableSortChangeEvent> = new EventEmitter<TableSortChangeEvent>();\n /** Event fired when the table filter has changed. */\n @Output()\n readonly filterChange: EventEmitter<TableFilterChangeEvent> = new EventEmitter<TableFilterChangeEvent>();\n /** Event fired when table grouping has changed. */\n @Output()\n readonly groupChange: EventEmitter<TableGroupChangeEvent> = new EventEmitter<TableGroupChangeEvent>();\n /** Event fired when visible columns list has been changed. */\n @Output()\n readonly columnsChange: EventEmitter<TableColumnsChangeEvent> = new EventEmitter<TableColumnsChangeEvent>();\n /** Event emitted when pagination state has been changed. */\n @Output()\n readonly pageChange = new EventEmitter<TablePageChangeEvent>();\n /** Event fired when there is a change in the frozen column. */\n @Output()\n readonly columnFreeze: EventEmitter<TableColumnFreezeEvent> = new EventEmitter<TableColumnFreezeEvent>();\n /** Event fired when group/tree row collapsed/expanded. */\n @Output()\n readonly rowToggleOpenState = new EventEmitter<TableRowToggleOpenStateEvent<T>>();\n /** Event fired when row clicked. */\n @Output()\n readonly rowActivate = new EventEmitter<TableRowActivateEvent<T>>();\n /** Event fired when row navigated. */\n @Output()\n readonly rowNavigate = new EventEmitter<TableRowActivateEvent<T>>();\n /** Event fired when empty row added. */\n @Output()\n readonly emptyRowAdded = new EventEmitter<void>();\n /** Event fired when save button pressed. */\n @Output()\n readonly save = new EventEmitter<SaveRowsEvent<T>>();\n /** Event fired when cancel button pressed. */\n @Output()\n readonly cancel = new EventEmitter<void>();\n /** Event emitted when table body being scrolled. */\n @Output()\n readonly tableScrolled = new EventEmitter<number>();\n /** Event emitted when new rows has been set and rendered. */\n @Output()\n readonly tableRowsSet = new EventEmitter<void>();\n /** Event emitted when all rows being expanded. */\n @Output()\n allRowsExpanded = new EventEmitter<void>();\n /** Event emitted when all rows being collapsed. */\n @Output()\n allRowsCollapsed = new EventEmitter<void>();\n /** Event emitted when a cell is focused. */\n @Output()\n readonly cellFocused = new EventEmitter<any>();\n /** @hidden */\n @ViewChild('tableScrollable')\n readonly tableScrollable: TableScrollable;\n /** @hidden */\n @ViewChild('tableContainer')\n readonly tableContainer: ElementRef<HTMLDivElement>;\n /** @hidden */\n @ViewChild(FdTableComponent, { read: ElementRef })\n readonly table: ElementRef<HTMLDivElement>;\n /** @hidden */\n @ViewChild(FDK_FOCUSABLE_GRID_DIRECTIVE)\n readonly _focusableGrid: FocusableGridDirective;\n /** @hidden */\n @ViewChild('tableBody', { read: ElementRef })\n private readonly _tableBody: ElementRef<HTMLElement>;\n /** @hidden */\n @ViewChild(DndListDirective)\n private readonly _dndDirective: Nullable<DndListDirective<TableRow>>;\n /** @hidden */\n @ContentChildren(TableColumn)\n readonly columns: QueryList<TableColumn>;\n /** @hidden */\n @ContentChildren(EditableTableCell, { descendants: true })\n readonly customEditableCells: QueryList<EditableTableCell>;\n /** @hidden */\n @ContentChild(TABLE_TOOLBAR)\n readonly tableToolbar: TableToolbarInterface;\n /** @hidden */\n @ContentChild(NoDataWrapperComponent)\n readonly _noDataWrapper: Nullable<NoDataWrapperComponent>;\n\n /** Total loaded items. */\n loadedRows$ = signal(0);\n\n /** @hidden */\n get initialSortBy(): CollectionSort[] {\n return this.initialState?.initialSortBy ?? [];\n }\n\n /**\n * @hidden\n * Columns to be rendered in the template\n */\n get _visibleColumns(): TableColumn[] {\n return this._tableService.visibleColumns$();\n }\n\n /** @hidden */\n get isTreeTable(): boolean {\n return !!this._dndTableDirective?.isTreeTable;\n }\n\n /** @hidden */\n get enableRowReordering(): boolean {\n return !!this._dndTableDirective?.enableRowReordering;\n }\n\n /** Whether the table rows are draggable. */\n get isDraggable(): boolean {\n return !!this._dndTableDirective?.isTreeTable && !!this._dndTableDirective?.enableRowReordering;\n }\n\n /** @hidden */\n get _semanticHighlightingColumnWidth(): number {\n return this.semanticHighlighting ? SEMANTIC_HIGHLIGHTING_COLUMN_WIDTH : 0;\n }\n\n /** @hidden Sum of widths of fixed columns (semantic highlighting, selection) */\n get _fixedColumnsPadding(): number {\n return this._semanticHighlightingColumnWidth + this._selectionColumnWidth;\n }\n\n /** @hidden */\n get _tableWidthPx(): number {\n return this.tableContainer.nativeElement.getBoundingClientRect().width;\n }\n\n /** @hidden */\n get loadingState(): boolean {\n return (\n this.loading ??\n (this._dataSourceDirective._internalLoadingState ||\n this._dataSourceDirective._internalChildrenLoadingState ||\n this._dndLoadingState)\n );\n }\n\n /**\n * Whether the selection column should be shown,\n * If there are no visible rows or visible columns\n * or selection mode is none, then selection column should not be shown.\n **/\n get isSelectionColumnShown(): boolean {\n return (\n this._isSelectionColumnShown &&\n !!this._tableRowsVisible.length &&\n this._tableService.visibleColumnsLength() > 0\n );\n }\n\n /** @hidden */\n get _ariaLabelledBy(): string | null {\n if (this.ariaLabelledBy) {\n return this.ariaLabelledBy;\n }\n return this.tableToolbar?.tableToolbarTitleId || null;\n }\n\n /**\n * @hidden\n * Representation of combined table rows.\n * Contains all rows including group rows.\n */\n _tableRows: TableRow<T>[] = [];\n /**\n * @hidden\n * Representation of table rows that came from dataSource.\n * Contains all rows including group rows.\n */\n _dataSourceTableRows: TableRow<T>[] = [];\n /**\n * @hidden\n * Representation of added table rows.\n */\n _newTableRows: TableRow<T>[] = [];\n /**\n * @hidden\n * Visible table rows.\n * Rows list that is used to be rendered in the ui.\n * Based on _tableRows and excludes hidden rows.\n */\n _tableRowsVisible: TableRow<T>[] = [];\n /**\n * @hidden\n * Table Column Map. Where key is column key and value is column\n */\n _keyToColumnMap: Map<string, TableColumn> = new Map();\n /**\n * @hidden\n * Freezable column names and their respective indexes\n */\n _freezableColumns: Map<string, number> = new Map();\n /**\n * @hidden\n * Freezable column names and their respective indexes for columns that will be frozen to the end of the table\n */\n _freezableEndColumns: Map<string, number> = new Map();\n /** @hidden */\n _tableColumnsLength = 0;\n /** @hidden */\n _checkedState: boolean | null = false;\n /** @hidden */\n @HostBinding('class.fd-table--group')\n _isGroupTable$ = computed(() => {\n const groupRules = this._tableService.groupRules$();\n\n return groupRules ? groupRules.size > 0 : (this.initialState?.initialGroupBy?.length ?? 0) > 0;\n });\n /**\n * @hidden\n * Used to create a row component placeholder and set data in it rather than re-create the row component when data changes.\n * Optimizes performance due to skipping initial setup of the component.\n */\n _tableRowsInViewPortPlaceholder: number[] = [];\n /** @hidden */\n _dndTableRowsPlaceholder: TableRow[] = [];\n /** @hidden */\n _isSelectionColumnShown = false;\n /** @hidden */\n readonly _toolbarContext: ToolbarContext;\n /** @hidden */\n _navigatedRowIndex: number;\n /** @hidden */\n _selectionColumnWidth = 0;\n /** @hidden */\n readonly tableColumnsStream: Observable<TableColumn[]>;\n /** @hidden */\n _loadPreviousPages = false;\n /** @hidden */\n _rtl = false;\n /** @hidden */\n readonly _dataSourceDirective = inject<TableDataSourceDirective<T>>(TableDataSourceDirective);\n /** @hidden */\n readonly _tableRowService = inject(TableRowService);\n /** @hidden */\n readonly initialState = inject<TableInitialState>(FDP_TABLE_STATE_DIRECTIVE, {\n optional: true\n });\n /** @hidden */\n readonly _virtualScrollDirective = inject<TableVirtualScroll>(FDP_TABLE_VIRTUAL_SCROLL_DIRECTIVE, {\n optional: true\n });\n /** @hidden */\n readonly _dndTableDirective = inject<TableDraggable>(FDP_TABLE_DRAGGABLE_DIRECTIVE, {\n optional: true\n });\n // keeping \"loading\" field private to make sure \"loadingState\" is used instead\n /** Loading state */\n @Input()\n private loading: boolean | undefined;\n /** @hidden */\n private _semanticHighlightingKey: string;\n /** @hidden */\n private _forceSemanticHighlighting = false;\n /** @hidden */\n private readonly _isShownSortSettingsInToolbar$ = signal(false);\n /** @hidden */\n private readonly _isShownFilterSettingsInToolbar$ = signal(false);\n /** @hidden */\n private readonly _isShownGroupSettingsInToolbar$ = signal(false);\n /** @hidden */\n private readonly _isShownColumnSettingsInToolbar$ = signal(false);\n /**\n * @hidden\n * Indicates when all items are checked\n */\n private _checkedAll = false;\n /**\n * @hidden\n * Indicates whether at least 1 item is checked\n */\n private _checkedAny = false;\n /** @hidden */\n private _subscriptions = new Subscription();\n /** @hidden */\n private _viewInitiated = false;\n /** @hidden */\n private _addedItems: T[] = [];\n /** @hidden */\n private _columnsWidthSet = false;\n /** @hidden */\n private _dndLoadingState = false;\n /** @hidden */\n private readonly _rangeSelector = new RangeSelector();\n /** @hidden */\n private _currentPreset: PlatformTableManagedPreset = {};\n /** @hidden */\n private _initialStateSet = false;\n /** @hidden */\n private _rowHeightManuallySet = false;\n /** @hidden */\n private _shouldEmitRowsChange = false;\n /** @hidden */\n private _lastFreezableColumnCalculation = false;\n /** @hidden */\n private readonly _tableHeaderResizer = inject(TableHeaderResizerDirective);\n\n /**\n * @hidden\n * Mapping function for the trackBy, provided by the user.\n * Is needed, because we are wrapping user supplied data into a `TableRow` class.\n */\n _rowTrackBy: TrackByFunction<number>;\n\n /** @hidden */\n private readonly _defaultTrackBy: TrackByFunction<number> = (index: number) => index;\n\n /** @hidden */\n constructor(\n private readonly _ngZone: NgZone,\n private readonly _cdr: ChangeDetectorRef,\n readonly _tableService: TableService,\n private readonly _tableScrollDispatcher: TableScrollDispatcherService,\n public readonly _tableColumnResizeService: TableColumnResizeService,\n @Optional() private readonly _rtlService: RtlService,\n readonly contentDensityObserver: ContentDensityObserver,\n readonly injector: Injector,\n private readonly _tabbableService: TabbableElementService\n ) {\n super();\n this.initialState?.setTable(this);\n this._dndTableDirective?.setTable(this);\n this._virtualScrollDirective?.setTable(this);\n this._dataSourceDirective.setTable(this);\n\n this._rowTrackBy = this._defaultTrackBy;\n this._toolbarContext = {\n counter: this._dataSourceDirective.totalItems$,\n sortable: this._isShownSortSettingsInToolbar$,\n filterable: this._isShownFilterSettingsInToolbar$,\n groupable: this._isShownGroupSettingsInToolbar$,\n columns: this._isShownColumnSettingsInToolbar$,\n hasAnyActions: computed(\n () =>\n this._isShownSortSettingsInToolbar$() ||\n this._isShownFilterSettingsInToolbar$() ||\n this._isShownGroupSettingsInToolbar$() ||\n this._isShownColumnSettingsInToolbar$()\n )\n };\n\n this.tableColumnsStream = this._tableService.tableColumns$.asObservable();\n\n this._subscriptions.add(\n this._tableRowService.cellFocused$.subscribe((event) => {\n this.cellFocused.emit(event);\n })\n );\n }\n\n /** Returns array of rows that are currently in viewport. */\n getRowsInViewport(): number[] {\n return this._tableRowsInViewPortPlaceholder;\n }\n\n /**\n * Sets an array of rows that are currently in viewport.\n * @param startIndex Start index of all rows.\n * @param length Length of viewport rows.\n */\n setRowsInViewport(startIndex = 0, length: number): void {\n this._tableRowsInViewPortPlaceholder = new Array(length).fill(null).map((_, i) => i + startIndex);\n this._dndTableRowsPlaceholder = this._tableRows.slice(startIndex, length);\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if ('loading' in changes) {\n this._tableService.setTableLoading(this.loadingState);\n }\n\n if ('trackBy' in changes) {\n this._rowTrackBy =\n typeof this.trackBy === 'function'\n ? (index) => this.trackBy(index, this._tableRowsVisible[index].value)\n : this._defaultTrackBy;\n }\n\n // changes below should be checked only after view is initialized\n if (!this._viewInitiated) {\n return;\n }\n\n if ('selectionMode' in changes) {\n this._rangeSelector.reset();\n }\n\n if (\n 'selectionMode' in changes ||\n 'freezeColumnsTo' in changes ||\n 'freezeEndColumnsTo' in changes ||\n 'semanticHighlighting' in changes\n ) {\n this.recalculateTableColumnWidth();\n }\n\n if ('rowNavigatable' in changes) {\n this._tableRows.forEach((row) => (row.navigatable = isRowNavigatable(row.value, this.rowNavigatable)));\n\n this._calculateIsShownNavigationColumn();\n }\n\n if ('rowHeight' in changes) {\n this._rowHeightManuallySet = true;\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._tableColumnResizeService.setTableRef(this);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewInitiated = true;\n\n this.initialState?.setInitialState();\n\n this._dataSourceDirective.initializeDataSource();\n\n this._listenToTableStateChanges();\n\n this._listenToColumns();\n\n this._calculateVisibleColumns();\n\n this._tableService.constructTableMetadata();\n\n this._listenToTableRowsPipe();\n\n this._listenToPageScrolling();\n\n this._virtualScrollDirective?.listenOnVirtualScroll();\n\n this._listenToRowHeightChange();\n\n this._listenToColumnPropertiesChange();\n\n this._listenToTableWidthChanges();\n\n this._listenToTableContainerMouseLeave();\n\n this._listenToLoadingAndRefocusCell();\n\n this._initScrollPosition();\n\n this._listenToFixedColumnsWidth();\n\n if (this.expandOnInit) {\n this.expandAll();\n }\n\n this._subscriptions.add(\n this._virtualScrollDirective?.virtualScrollTransform$\n .pipe(filter(() => !!this._virtualScrollDirective?.virtualScroll && !!this._tableBody))\n .subscribe((transform) => {\n this._tableBody.nativeElement.style.transform = `translateY(${transform}px)`;\n })\n );\n\n if (this._focusableGrid) {\n this._focusableGrid.shortRowFocus = 'first';\n }\n }\n\n /** @hidden */\n ngAfterViewChecked(): void {\n // When table rows are set, emit an event to manipulate the view (e.g., scroll to some row).\n if (!this._shouldEmitRowsChange) {\n return;\n }\n this._shouldEmitRowsChange = false;\n const emitter = this.tableRowsSet;\n this._onZoneFree(() => {\n emitter.emit();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._calculateFrozenColumnRefresh$.next();\n this._calculateFrozenColumnRefresh$.complete();\n }\n\n /** Get current state/settings of the Table. */\n getTableState(): TableState {\n return this._tableService.getTableState();\n }\n\n /** Set current state/settings of the Table. */\n setTableState(state: TableState): void {\n this._tableService.setTableState(state);\n this._cdr.markForCheck();\n }\n\n /** Get table columns definition list. */\n getTableColumns(): TableColumn[] {\n return this.columns?.toArray() || [];\n }\n\n /** Get a list of visible table columns. */\n getVisibleTableColumns(): TableColumn[] {\n return this._visibleColumns || [];\n }\n\n /** Set Sorting rules */\n sort(sortRules: CollectionSort[]): void {\n this._tableService.setSort(sortRules);\n this._cdr.markForCheck();\n }\n\n /** Add Sorting rules to the existing ones */\n addSort(sortRules: CollectionSort[]): void {\n this._tableService.addSort(sortRules);\n this._cdr.markForCheck();\n }\n\n /** Set Filter rules */\n filter(filterRules: CollectionFilter[]): void {\n this._tableService.setFilters(filterRules);\n this._cdr.markForCheck();\n }\n\n /** Add Filter rule */\n addFilter(filterRules: CollectionFilter[]): void {\n this._tableService.addFilters(filterRules);\n this._cdr.markForCheck();\n }\n\n /** Removes filters for the provided fields */\n removeFilter(fields: string[]): void {\n this._tableService.removeFilters(fields);\n this._cdr.markForCheck();\n }\n\n /** Set Groups */\n group(groups: CollectionGroup[]): void {\n this._tableService.setGroups(groups);\n this._cdr.markForCheck();\n }\n\n /** Add Groups */\n addGroup(groups: CollectionGroup[]): void {\n this._tableService.addGroups(groups);\n this._cdr.markForCheck();\n }\n\n /**\n * Set visible table columns\n * The order is matter\n * @param columns table columns names\n */\n setColumns(columns: string[]): void {\n const tableColumns = this.getTableColumns();\n const columnsObject: Record<string, string[]> = {\n columns: [],\n keys: []\n };\n tableColumns\n .filter((column) => columns.includes(column.name))\n // We need to have same order of columns as user defined.\n .sort((a, b) => columns.indexOf(a.name) - columns.indexOf(b.name))\n .reduce((acc, column) => {\n acc.columns.push(column.name);\n acc.keys.push(column.key);\n return acc;\n }, columnsObject);\n this._tableService.setColumns(columnsObject.columns, columnsObject.keys);\n this._cdr.markForCheck();\n }\n\n /** Freeze table to column */\n freezeToColumn(columnName: string, end?: boolean): void {\n end ? (this.freezeEndColumnsTo = columnName) : (this.freezeColumnsTo = columnName);\n\n this._tableService.freezeTo(columnName, end);\n this.recalculateTableColumnWidth();\n this._calculateLastFreezableColumn();\n }\n\n /** Unfreeze column */\n unfreeze(columnName: string, end?: boolean): void {\n const columns = end ? this._freezableEndColumns : this._freezableColumns;\n const freezeToColumnIndex = columns.get(columnName) ?? -1;\n const freezeToPreviousColumnName = columns[freezeToColumnIndex - 1];\n\n end\n ? (this.freezeEndColumnsTo = freezeToPreviousColumnName)\n : (this.freezeColumnsTo = freezeToPreviousColumnName);\n\n this._tableService.freezeTo(freezeToPreviousColumnName, end);\n this.recalculateTableColumnWidth();\n }\n\n /** expand all rows */\n expandAll(): void {\n const expandableRows = this._tableRows.filter((row) => row.type === TableRowType.TREE);\n if (this._dataSourceDirective.childDataSource) {\n this._tableRowService.loadChildRows(expandableRows);\n }\n this._markAsExpanded(expandableRows);\n this.allRowsExpanded.emit();\n }\n\n /** @hidden */\n private _markAsExpanded(rows: TableRow<T>[]): void {\n rows.forEach((e) => {\n e.expanded = true;\n e.hidden = false;\n });\n this.onTableRowsChanged();\n }\n\n /** collapse all rows */\n collapseAll(): void {\n this._tableRows.forEach((e) => {\n e.expanded = false;\n if (e.parent) {\n e.hidden = true;\n }\n });\n this.onTableRowsChanged();\n this.allRowsCollapsed.emit();\n }\n\n /** Search in table */\n search(searchInput: SearchInput): void {\n this._tableService.search(searchInput);\n this._cdr.markForCheck();\n }\n\n /** Set current page number in table */\n setCurrentPage(currentPage: number): void {\n this._tableService.setCurrentPage(currentPage);\n this._cdr.markForCheck();\n }\n\n /** Set items per page number in table */\n setPageSize(pageSize: number, resetPageNumber = true): void {\n this._tableService.setItemsPerPage(pageSize, resetPageNumber);\n }\n\n /** Toolbar Sort Settings button visibility */\n showSortSettingsInToolbar(showSortSettings: boolean): void {\n this._isShownSortSettingsInToolbar$.set(showSortSettings);\n }\n\n /** Toolbar Filter Settings button visibility */\n showFilterSettingsInToolbar(showFilterSettings: boolean): void {\n this._isShownFilterSettingsInToolbar$.set(showFilterSettings);\n }\n\n /** Toolbar Group Settings button visibility */\n showGroupSettingsInToolbar(showGroupSettings: boolean): void {\n this._isShownGroupSettingsInToolbar$.set(showGroupSettings);\n }\n\n /** Toolbar Columns Settings button visibility */\n showColumnSettingsInToolbar(showColumnSettings: boolean): void {\n this._isShownColumnSettingsInToolbar$.set(showColumnSettings);\n }\n\n /** Disable filter from column heder menu */\n setHeaderColumnFilteringDisabled(disabled: boolean): void {\n this._tableService._isFilteringFromHeaderDisabled$.set(disabled);\n }\n\n /** Set the row navigation */\n setRowNavigation(rowIndex: number, rowNavigatable: string | boolean): void {\n const row = this._tableRows[rowIndex];\n\n if (!row) {\n return;\n }\n\n row.navigatable = isRowNavigatable(row.value, rowNavigatable);\n\n this._calculateIsShownNavigationColumn();\n\n this._cdr.markForCheck();\n }\n\n /**\n * Toggle row checked state.\n * @param rowIndex Index of the row.\n */\n toggleSelectableRow(rowIndex: number): void {\n const row = this._tableRows[rowIndex];\n\n if (!row || row.value[this.selectableKey] === false) {\n return;\n }\n\n if (this.selectionMode === SelectionMode.SINGLE) {\n this._toggleSingleSelectableRow(row);\n } else if (this.selectionMode === SelectionMode.MULTIPLE) {\n this._toggleMultiSelectRow(row);\n }\n }\n\n /**\n * Sets the checked state of the row.\n * @param rowIndex Index of the row.\n * @param value Value of the checked state.\n */\n setRowCheckedState(rowIndex: number, value: boolean): void {\n const row = this._tableRows[rowIndex];\n\n if (!row) {\n return;\n }\n\n if (row.checked !== value) {\n this.toggleSelectableRow(rowIndex);\n }\n }\n\n /** Remove the row navigation */\n removeRowNavigation(rowIndex: number): void {\n const row = this._tableRows[rowIndex];\n\n if (!row) {\n return;\n }\n\n row.navigatable = false;\n\n this._calculateIsShownNavigationColumn();\n\n this._cdr.markForCheck();\n }\n\n /** Manually triggers column's width recalculation */\n recalculateTableColumnWidth(): void {\n this._tableColumnResizeService.setColumnNames(this._visibleColumns.map((column) => column.name));\n this._setFreezableInfo();\n }\n\n /** Gets the max allowed width for all freezable columns */\n getMaxAllowedFreezableColumnsWidth(): number {\n if (!this._freezableColumns.size) {\n return 0;\n }\n\n /** Themeable scrollbar has 0.75rem in dimension */\n const scrollbarSizeInPx = 12;\n\n return this._tableWidthPx - this._fixedColumnsPadding - scrollbarSizeInPx - 1;\n }\n\n /** Get table data source */\n getDataSource(): TableDataSource<T> {\n return this._dataSourceDirective._tableDataSource;\n }\n\n /**\n * Adds empty row for editing at the beginning of the rows array.\n */\n addRow(): void {\n this._forceSemanticHighlighting = true;\n this._setSemanticHighlighting();\n\n const newRow = buildNewRowSkeleton(this.editableRowSkeleton, this.columns.toArray());\n newRow[this.semanticHighlighting] = EDITABLE_ROW_SEMANTIC_STATE;\n\n this._addedItems.unshift(newRow);\n\n const newRows = this._createTableRowsByDataSourceItems([newRow]);\n this._newTableRows = [...newRows, ...this._newTableRows];\n\n this._setTableRows();\n this.emptyRowAdded.emit();\n }\n\n /** Cancels editing and discards newly added rows */\n cancelEditing(): void {\n this._resetEditState();\n this.cancel.emit();\n }\n\n /**\n * Emits save event and resets editable rows array.\n */\n saveRows(): void {\n const event = new SaveRowsEvent<T>(() => {\n this._dataSourceDirective._tableDataSource.fetch(this.getTableState());\n }, [...this._addedItems]);\n const editableCells: EditableTableCell[] = ([] as EditableTableCell[]).concat.apply(\n [],\n Array.from(this._tableRowService.editableCells.values())\n );\n\n const forms = [...this.customEditableCells.toArray(), ...editableCells].map((t) => t.form);\n\n // Trigger form revalidation\n forms.forEach((form) => form.onSubmit(null as any));\n if (forms.some((form) => form.invalid)) {\n return;\n }\n\n this._resetEditState();\n this.save.emit(event);\n }\n\n /** Sets current preset for the Table. */\n setPreset(data: PlatformTableManagedPreset): void {\n this._currentPreset = data;\n const newState: TableState = Object.assign({}, this._tableService.getDefaultState(), data);\n this._tableService.setSort(newState.sortBy);\n this._tableService.setFilters(newState.filterBy);\n this._tableService.setGroups(newState.groupBy);\n this.setColumns(newState.columns);\n this._tableService.search(newState.searchInput);\n this._tableService.freezeTo(newState.freezeToColumn);\n this.pageSize = newState.page.pageSize;\n this._tableService.setCurrentPage(newState.page.currentPage);\n this._tableService.setTableState(newState);\n }\n\n /** Returns current preset configuration. */\n getCurrentPreset(): PlatformTableManagedPreset {\n if (!this._currentPreset) {\n return this.getTableState();\n }\n // We need to return object as similar as the original preset.\n const currentPreset = { ...this._currentPreset };\n const presetKeys = Object.keys(currentPreset);\n const currentState = this.getTableState();\n\n Object.keys(currentState).forEach((stateKey) => {\n // Skip state entry if it's not present in preset and doesn't have any value.\n if (\n stateKey === 'columnKeys' ||\n ((!currentState[stateKey] ||\n (Array.isArray(currentState[stateKey]) && currentState[stateKey]?.length === 0)) &&\n !presetKeys.includes(stateKey))\n ) {\n return;\n }\n\n currentPreset[stateKey] = currentState[stateKey];\n });\n\n return currentPreset;\n }\n\n /**\n * Manually triggers list item event listeners for drag&drop list directive.\n */\n refreshDndList(): void {\n if (this._virtualScrollDirective?.virtualScroll !== true) {\n return;\n }\n this._dndDirective?.refreshQueryList();\n }\n\n /**\n * Programmatically toggles `expand` state of the row with defined index.\n * @param rowIndexes row indexes including nested rows.\n *\n * Usage example:\n * * To toggle first level row, pass one argument:\n * ```\n * table.toggleGroupRows(0) // Will result in toggling first row if it's type is `TableRowType.TREE` or `TableRowType.GROUP`.\n * ```\n * * To toggle nested rows, pass additional arguments of indexes:\n * ```\n * table.toggleGroupRows(0, 1) // Will result in toggling first root row, then it's second child.\n * ```\n */\n toggleGroupRows(...rowIndexes: number[]): void {\n let tableRow: TableRow | null = null;\n for (const rowIndex of rowIndexes) {\n tableRow = tableRow ? tableRow.children[rowIndex] : this._tableRows[rowIndex];\n\n if (tableRow.type === TableRowType.ITEM) {\n break;\n }\n\n this._toggleGroupRow(tableRow);\n }\n }\n\n /**\n * Function used to focus a cell in the table utilizing a FocusableCellPosition interface.\n */\n focusCell(position: FocusableCellPosition): void {\n const tableEl = this.table.nativeElement as HTMLTableElement;\n tableEl.rows[position.rowIndex].cells[position.colIndex].focus();\n }\n\n /**\n * Clears the array of table rows. Triggered when new data source is applied.\n */\n clearTableRows(): void {\n this._tableRows = [];\n this.loadedRows$.set(0);\n this._tableRowsVisible = [];\n this._tableRowsInViewPortPlaceholder = [];\n this._newTableRows = [];\n this._dataSourceTableRows = [];\n this._setTableRows([]);\n this._tableService.setCurrentPage(1);\n }\n\n // Private API\n\n /** @hidden */\n _scrollToOverlappedCell(): void {\n this.tableScrollable.scrollToOverlappedCell(\n !!this._rtlService?.rtlSignal(),\n this._freezableColumns.size,\n this._freezableEndColumns.size\n );\n }\n\n /** @hidden */\n _calculatingLoading(isLoading: boolean): void {\n if (this._dndLoadingState === isLoading) {\n return;\n }\n\n this._dndLoadingState = isLoading;\n this._tableService.setTableLoading(this.loadingState);\n }\n\n /**\n * @hidden\n * Toggle selectable row in SelectionMode.MULTIPLE\n */\n _toggleMultiSelectRow(rowToToggle: TableRow, event?: Event): void {\n if (this.selectionMode !== SelectionMode.MULTIPLE) {\n throw new Error('Unexpected selection mode');\n }\n const checked = (rowToToggle.checked = !rowToToggle.checked);\n const rows = this._tableRows;\n const selectedIndex = this._tableRows.findIndex((row) => row === rowToToggle);\n\n const removed: TableRow<T>[] = [];\n const added: TableRow<T>[] = [];\n this._rangeSelector.onRangeElementToggled(selectedIndex, event as PointerEvent | KeyboardEvent);\n\n this._rangeSelector.applyValueToEachInRange((idx) => {\n const row = rows[idx];\n if (row.type === TableRowType.ITEM || row.isTree) {\n row.checked = checked;\n checked ? added.push(row) : removed.push(row);\n\n this._applyTristateSelection(row, added, removed);\n }\n });\n\n this._emitRowSelectionChangeEvent(added, removed);\n\n this._calculateCheckedAll();\n }\n\n /**\n * @hidden\n * Toggle selectable row in SelectionMode.SINGLE\n */\n _toggleSingleSelectableRow(rowToToggle: TableRow): void {\n if (this.selectionMode !== SelectionMode.SINGLE) {\n throw new Error('Unexpected selection mode');\n }\n\n const checked = (rowToToggle.checked = !rowToToggle.checked);\n const removed: TableRow<T>[] = [];\n const added: TableRow<T>[] = [];\n\n // uncheck previously checked\n getSelectableRows(this._tableRows, this.selectableKey).forEach((row) => {\n if (row === rowToToggle) {\n return;\n }\n\n if (row.checked) {\n row.checked = false;\n removed.push(row);\n }\n });\n checked ? added.push(rowToToggle) : removed.push(rowToToggle);\n\n this._emitRowSelectionChangeEvent(added, removed);\n\n this._calculateCheckedAll();\n }\n\n /**\n * @hidden\n * Select / Unselect all selectable rows\n */\n _toggleAllSelectableRows(selectAll: boolean): void {\n const removed: TableRow<T>[] = [];\n const added: TableRow<T>[] = [];\n\n getSelectableRows(this._tableRows, this.selectableKey).forEach((row) => {\n if (row.checked === selectAll) {\n return;\n }\n row.checked = selectAll;\n selectAll ? added.push(row) : removed.push(row);\n });\n\n this._rangeSelector.reset();\n\n this._shouldCheckNewRows = selectAll;\n\n this._emitRowSelectionChangeEvent(added, removed, true);\n\n this._calculateCheckedAll();\n }\n\n /**\n * @hidden\n * Create table row selection event\n */\n _emitRowSelectionChangeEvent(added: TableRow[], removed: TableRow[], all: boolean = false): void {\n const selected = getSelectableRows(this._tableRows, this.selectableKey)\n .filter(({ checked }) => checked)\n .map(({ value }) => value);\n\n this.rowSelectionChange.emit({\n source: this,\n selection: selected,\n added: added.map(({ value }) => value),\n removed: removed.map(({ value }) => value),\n index: added.concat(removed).map(({ index }) => index),\n all\n });\n }\n\n /** @hidden */\n _onCellClick(colIdx: number, row: TableRow<T>): void {\n if (row.state === 'readonly' && isTreeRowFirstCell(colIdx, row)) {\n this._toggleGroupRow(row);\n }\n }\n\n /** @hidden */\n _onRowClick(row: TableRow<T> | null, event: Event): void {\n if (row && row.state !== 'readonly') {\n return;\n }\n\n if (event && event instanceof KeyboardEvent && KeyUtil.isKeyCode(event, SPACE)) {\n const eventTarget = event.target as HTMLElement;\n const tabbableElement = this._tabbableService.getTabbableElement(eventTarget, false, true);\n if (tabbableElement) {\n event.preventDefault();\n tabbableElement.focus();\n tabbableElement.dispatchEvent(new MouseEvent('click'));\n }\n }\n\n if (row) {\n this._emitRowNavigate(row);\n this._emitRowActivate(row);\n }\n }\n\n /** @hidden */\n _emitRowActivate(row: TableRow<T>): void {\n if (!this.rowsActivable) {\n return;\n }\n\n const rowIndex = this._tableRows.indexOf(row);\n this.rowActivate.emit(new TableRowActivateEvent<T>(rowIndex, row.value));\n }\n\n /**\n * @hidden\n * Expand/Collapse group row\n */\n _toggleGroupRow(groupRow: TableRow<T>): void {\n if (this._dndTableDirective?.dragDropInProgress) {\n return;\n }\n\n this.toggleExpandableTableRow(groupRow);\n\n const groupRowIndex = this._tableRows.indexOf(groupRow);\n this.rowToggleOpenState.emit(\n new TableRowToggleOpenStateEvent(groupRowIndex, groupRow.value, groupRow.expanded)\n );\n }\n\n /** @hidden */\n _emitRowNavigate(row: TableRow<T>): void {\n if (!row.navigatable) {\n return;\n }\n const rowIndex = this._tableRows.indexOf(row);\n\n if (this.highlightNavigatedRow) {\n this._navigatedRowIndex = rowIndex;\n }\n\n this.rowNavigate.emit(new TableRowActivateEvent<T>(rowIndex, row.value));\n }\n\n /** Fetch data source data. */\n fetch(): void {\n this._dataSourceDirective._tableDataSource.fetch(this.getTableState());\n }\n\n /** @hidden */\n onTableRowsChanged(): void {\n this._calculateVisibleTableRows();\n this._calculateCheckedAll();\n }\n\n /** @hidden */\n toggleExpandableTableRow(rowToToggle: TableRow, forceFetch = false): void {\n rowToToggle.forceFetch = forceFetch;\n const expanded = (rowToToggle.expanded = !rowToToggle.expanded);\n\n findRowChildren(rowToToggle, this._tableRows).forEach((row) => {\n // if parent is collapsed we want to hide all nested items\n if (!expanded) {\n row.hidden = true;\n row.expanded = false;\n }\n\n // if parent is expanded, we want to show only items which direct parents are expanded as well\n if (expanded) {\n row.hidden = !getRowParents(row, rowToToggle).every((parent) => parent.expanded);\n }\n });\n\n this.onTableRowsChanged();\n }\n\n /** @hidden */\n _onSpyIntersect(intersected: boolean): void {\n if (!intersected) {\n return;\n }\n const {\n page: { currentPage, pageSize }\n } = this.getTableState();\n const totalItems = this._dataSourceDirective.totalItems$();\n const lastPage = Math.ceil(totalItems / (pageSize || totalItems));\n if (currentPage >= lastPage) {\n return;\n }\n this._ngZone.run(() => {\n this.setCurrentPage(currentPage + 1);\n });\n }\n\n /** Manually update index after we add new items to the main array */\n private _reIndexTableRows(): void {\n this._tableRows.map((row, index) => (row.index = index));\n }\n\n /** @hidden */\n private _listenToTableRowsPipe(): void {\n this._subscriptions.add(\n this._dataSourceDirective.items$\n .pipe(\n // map source items to table rows\n map((source: T[]) => this._createTableRowsByDataSourceItems(source)),\n // Insert items to show groups\n switchMap((rows: TableRow[]) =>\n this.isTreeTable\n ? of(rows)\n : this._tableService.groupRulesSubject.pipe(\n map((groupRules) =>\n this._tableRowService.groupTableRows(rows, groupRules.values(), groupRules)\n )\n )\n )\n )\n .subscribe((rows) => {\n rows =\n (this.pageScrolling || this.showGrowingButton) && this.getTableState().page.currentPage > 1\n ? [...this._tableRows, ...rows]\n : rows;\n this._setTableRows(rows);\n })\n );\n\n this._dataSourceDirective.childItems$\n .pipe(\n map((items) => {\n const rowMap = new Map<TableRow<T>, TableRow<T>[]>();\n items.forEach((rowItems, parentRow) => {\n rowMap.set(\n parentRow,\n this._createTableRowsByDataSourceItems(rowItems).map((row) => {\n row.parent = parentRow;\n row.level = parentRow.level + 1;\n row.hidden = !parentRow.expanded;\n return row;\n })\n );\n });\n\n return rowMap;\n })\n )\n .subscribe((items) => {\n items.forEach((rows, parentRow) => {\n this._tableRows.splice(parentRow.index + parentRow.children.length + 1, 0, ...rows);\n\n parentRow.children.push(...rows);\n\n parentRow.lastChild = parentRow.children[parentRow.children.length - 1];\n this._setTableRows(this._tableRows);\n });\n });\n }\n\n /** @hidden */\n private _listenToTableStateChanges(): void {\n this._subscriptions.add(\n this._tableService.tableStateChanges$.subscribe(() => {\n this.presetChanged.emit(this.getCurrentPreset());\n })\n );\n this._subscriptions.add(\n this._tableService.needFetch$\n .pipe(\n map(() => this._tableService.getTableState()),\n filter((state) => !!state && !!this._dataSourceDirective._tableDataSource),\n distinctUntilChanged()\n )\n .subscribe((state) => {\n this._dataSourceDirective._tableDataSource.fetch(state);\n })\n );\n\n this._subscriptions.add(\n this._tableService.stateChange$.subscribe(({ type, state }) => {\n switch (type) {\n case 'columns':\n this._calculateVisibleColumns();\n this.recalculateTableColumnWidth();\n\n this.columnsChange.emit(new TableColumnsChangeEvent(this, state.current, state.previous));\n break;\n case 'filter':\n this.filterChange.emit(new TableFilterChangeEvent(this, state.current, state.previous));\n break;\n case 'freeze':\n if (!this._lastFreezableColumnCalculation) {\n this.columnFreeze.emit(new TableColumnFreezeEvent(this, state.current, state.previous));\n }\n this.fixed = !!this.fixed || !!this._freezableColumns.size || !!this._freezableEndColumns.size;\n break;\n case 'search':\n break;\n case 'group':\n this._calculateVisibleColumns();\n this.recalculateTableColumnWidth();\n\n this.groupChange.emit(new TableGroupChangeEvent(this, state.current, state.previous));\n break;\n case 'page':\n this.pageChange.emit(new TablePageChangeEvent(this, state.current, state.previous));\n break;\n case 'sort':\n this.sortChange.emit(new TableSortChangeEvent(this, state.current, state.previous));\n break;\n }\n })\n );\n\n this._listenToTableRowStateChange();\n }\n\n /** @hidden */\n private _listenToTableRowStateChange(): void {\n this._subscriptions.add(\n this._tableRowService.scrollToOverlappedCell$.subscribe(() => {\n this._scrollToOverlappedCell();\n })\n );\n\n this._subscriptions.add(\n this._tableRowService.loadChildRows$.subscribe((rows) => {\n const state = this.getTableState();\n rows.forEach((row) => {\n this._dataSourceDirective.childDataSource?.dataProvider\n .rowChildrenCount(row, state)\n .pipe(\n filter((count) => row.forceFetch || count > row.children.length),\n tap(() => (row.forceFetch = false)),\n take(1)\n )\n .subscribe(() => {\n const rowState = {\n ...state,\n ...{\n page: {\n currentPage: Math.floor(row.children.length / state.page.pageSize) + 1,\n pageSize: state.page.pageSize\n }\n }\n };\n this._dataSourceDirective.childDataSource?.fetch(rowState, [row]);\n });\n });\n })\n );\n\n this._subscriptions.add(\n this._tableRowService.cellClicked$.subscribe((evt) => {\n this._onCellClick(evt.index, evt.row);\n })\n );\n\n this._subscriptions.add(\n this._tableRowService.toggleAllSelectableRows$.subscribe((evt) => {\n this._toggleAllSelectableRows(evt);\n })\n );\n\n this._subscriptions.add(\n this._tableRowService.toggleRow$.subscribe((evt) => {\n switch (evt.type) {\n case 'toggleRow':\n this._toggleGroupRow(evt.row);\n break;\n case 'toggleMultiSelectRow':\n this._toggleMultiSelectRow(evt.row, evt.event);\n break;\n case 'toggleSingleSelectableRow':\n this._toggleSingleSelectableRow(evt.row);\n break;\n }\n })\n );\n }\n\n /** @hidden */\n private _createTableRowsByDataSourceItems(source: T[]): TableRow<T>[] {\n let rows: TableRow<T>[];\n if (this.isTreeTable) {\n rows = this._createTreeTableRowsByDataSourceItems(source);\n } else {\n rows = convertObjectsToTableRows(\n source,\n this._addedItems,\n this.selectedKey,\n this.rowNavigatable,\n this.selectionMode,\n this._tableRows,\n this.rowComparator\n );\n }\n\n if (this._shouldCheckNewRows && this.forceCheckedAllState) {\n rows.forEach((row) => {\n row.checked = row.checked || true;\n });\n }\n\n return rows;\n }\n\n /** @hidden */\n private _createTreeTableRowsByDataSourceItems(source: T[]): TableRow<T>[] {\n const item = source[0] as any;\n\n if (isTableRow(item)) {\n return convertTreeTableRowToFlatList(source as TableRow[], this.rowNavigatable);\n }\n\n if (isJsObject(item)) {\n return convertTreeObjectsToTableRows(\n source,\n this.selectionMode,\n this._tableRows,\n this.rowComparator,\n this.relationKey,\n this.hasChildrenKey,\n this.selectedKey,\n this.expandedStateKey,\n this.rowNavigatable,\n this.enableTristateMode\n );\n }\n return [];\n }\n\n /** @hidden */\n private _setTableRows(rows = this._dataSourceTableRows): void {\n this._dataSourceTableRows = rows;\n this._tableRows = [...this._newTableRows, ...this._dataSourceTableRows];\n this.loadedRows$.set(this._tableRows.length);\n this._reIndexTableRows();\n this.onTableRowsChanged();\n this._calculateIsShownNavigationColumn();\n this._rangeSelector.reset();\n\n this._shouldEmitRowsChange = true;\n\n if (rows.length && !this._columnsWidthSet) {\n this.recalculateTableColumnWidth();\n this._columnsWidthSet = true;\n }\n\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n private _calculateVisibleTableRows(): void {\n this._tableRowsVisible = this._tableRows.filter((row) => !row.hidden);\n if (this._virtualScrollDirective?.virtualScroll) {\n this._virtualScrollDirective.calculateVirtualScrollRows();\n } else {\n this.setRowsInViewport(0, this._tableRowsVisible.length);\n }\n }\n\n /** @hidden */\n private _listenToRowHeightChange(): void {\n this._subscriptions.add(\n this.contentDensityObserver\n .pipe(\n tap(() => {\n this._setSelectionColumnWidth();\n }),\n filter(() => Array.from(ROW_HEIGHT.values()).includes(this.rowHeight)),\n filter(() => !this._rowHeightManuallySet)\n )\n .subscribe((contentDensity) => {\n this.rowHeight = ROW_HEIGHT.get(contentDensity) ?? ROW_HEIGHT.get(ContentDensityMode.COZY)!;\n if (this._virtualScrollDirective?.virtualScroll) {\n this._virtualScrollDirective.rowHeight = this.rowHeight;\n this._virtualScrollDirective.calculateVirtualScrollRows();\n }\n })\n );\n }\n\n /** @hidden */\n private _listenToColumns(): void {\n this.columns.changes.pipe(startWith(null)).subscribe(() => {\n const columns = this.getTableColumns();\n const prevColumns = this._tableService.tableColumns$.value.map((column) => column.name);\n const currentColumns = columns.map((column) => column.name);\n\n const newColumns = columns\n .filter((column) => column.visible && !prevColumns.includes(column.name))\n .map((c) => c.name);\n const stateColumns = this.getTableState().columns;\n\n this._buildColumnsMap(columns);\n this._tableService.tableColumns$.next(columns);\n\n if (this._initialStateSet) {\n this.setColumns([...stateColumns, ...newColumns]);\n }\n\n this._initialStateSet = true;\n\n const updatedColumns = this._tableService.tableColumns$.value.map((column) => column.name);\n\n if (!equal(updatedColumns, currentColumns)) {\n this._tableService.stateChange$.next({\n type: 'columns',\n state: { previous: currentColumns, current: updatedColumns }\n });\n this._tableService.columnsChange$.next({ previous: currentColumns, current: updatedColumns });\n }\n this._tableService.detectChanges();\n });\n }\n\n /**\n * Construct visible columns for rendering purpose.\n */\n private _calculateVisibleColumns(): void {\n const columnsDefinition = this.getTableColumns();\n const { columns, groupBy } = this.getTableState();\n const groupedColumnsToHide = groupBy.filter(({ showAsColumn }) => !showAsColumn).map(({ field }) => field);\n\n const allColumns = columns // need to start mapping from state.columns list to keep right order\n .map((name) => columnsDefinition.find((column) => column.name === name))\n .filter((column): column is TableColumn => !!column)\n .filter(({ key }) => !groupedColumnsToHide.includes(key));\n\n const [visibleColumns, poppingColumns] = allColumns.reduce(\n (acc, column) => {\n if (column.responsiveState === 'hidden') {\n return acc;\n }\n acc[column.responsiveState === 'visible' ? 0 : 1].push(column);\n return acc;\n },\n [[], []] as TableColumn[][]\n );\n\n this._tableService.setVisibleColumns(visibleColumns);\n this._tableService.setPoppingColumns(poppingColumns);\n\n this._cdr.detectChanges();\n\n this._calculateTableColumnsLength();\n }\n\n /** @hidden */\n private _calculateTableColumnsLength(): void {\n this._tableColumnsLength = this._visibleColumns.length + (this._isSelectionColumnShown ? 1 : 0);\n }\n\n /** @hidden */\n private _calculateIsShownNavigationColumn(): void {\n this._tableService._isShownNavigationColumn$.set(this._tableRows.some((tableRow) => tableRow.navigatable));\n }\n\n /** @hidden */\n private _setFreezableInfo(): void {\n this._freezableColumns = getFreezableColumns(this._visibleColumns, this.freezeColumnsTo);\n this._freezableEndColumns = getFreezableEndColumns(this._visibleColumns, this.freezeEndColumnsTo);\n this.fixed = !!this.fixed || !!this._freezableColumns.size || !!this._freezableEndColumns.size;\n this.columns.forEach((column) => {\n column._freezed = this._freezableColumns.has(column.name);\n column._endFreezed = this._freezableEndColumns.has(column.name);\n });\n }\n\n /** @hidden */\n private _buildColumnsMap(columns = this._tableService.tableColumns$.value): void {\n this._keyToColumnMap = new Map(columns.map((column) => [column.key, column]));\n }\n\n /** @hidden */\n private _calculateCheckedAll(): void {\n const selectableRows = getSelectableRows(this._tableRows, this.selectableKey);\n const totalSelected = selectableRows.filter((r) => r.checked);\n this._checkedAll = totalSelected.length === selectableRows.length && selectableRows.length !== 0;\n this._checkedAny = totalSelected.length > 0;\n this._checkedState = this._checkedAll ? true : this._checkedAny ? null : false;\n }\n\n /**\n * Propagates tristate selection mode to the tree. It starts with updating a state for all the parents and then\n * to children\n *\n * @hidden\n */\n private _applyTristateSelection(row: TableRow, addedRows: TableRow<T>[], removedRows: TableRow<T>[]): void {\n if (!this.enableTristateMode) {\n return;\n }\n this._applySelectionToParents(row, addedRows, removedRows);\n this._applySelectionToChildren(row, addedRows, removedRows);\n }\n\n /** @hidden */\n private _applySelectionToParents(row: TableRow, addedRows: TableRow<T>[], removedRows: TableRow<T>[]): void {\n let currentRow = row.parent;\n\n while (currentRow) {\n const children = findRowChildren(currentRow, this._tableRows).filter((r) => r.parent === currentRow);\n const totalChecked: TableRow<T>[] = [];\n const totalIndeterminate: TableRow<T>[] = [];\n children.forEach((r) => {\n if (r.checked === true) {\n totalChecked.push(r);\n } else if (r.checked === null) {\n totalIndeterminate.push(r);\n }\n });\n const checkedAll = totalChecked.length === children.length;\n const checkedAny = totalChecked.length > 0;\n\n currentRow.checked = checkedAll ? true : checkedAny || totalIndeterminate.length > 0 ? null : false;\n currentRow.checked || currentRow.checked === null\n ? addedRows.push(currentRow)\n : removedRows.push(currentRow);\n\n currentRow = currentRow.parent;\n }\n }\n\n /** @hidden */\n private _applySelectionToChildren(row: TableRow, addedRows: TableRow<T>[], removedRows: TableRow<T>[]): void {\n applySelectionToChildren(this._tableRows, row, addedRows, removedRows);\n }\n\n /** @hidden */\n private _listenToPageScrolling(): void {\n this._subscriptions.add(\n this._tableScrollDispatcher\n .scrolled()\n .pipe(filter(() => this.pageScrolling))\n .subscribe((scrollable) => {\n const scrollTop = scrollable.getScrollTop();\n\n this.tableScrolled.emit(scrollTop);\n\n // Instead of having two places to record this possition, we could just subscribe once.\n this.getTableState().scrollTopPosition = scrollTop;\n })\n );\n }\n\n /** @hidden */\n private _listenToColumnPropertiesChange(): void {\n this._subscriptions.add(\n this._tableService.markForCheck$.pipe(debounceTime(5)).subscribe(() => this._cdr.markForCheck())\n );\n this._subscriptions.add(\n this._tableService.detectChanges$.pipe(debounceTime(5)).subscribe(() => this._cdr.detectChanges())\n );\n }\n\n /** @hidden */\n private _listenToTableWidthChanges(): void {\n this._subscriptions.add(\n resizeObservable(this.tableContainer.nativeElement)\n .pipe(\n tap(() => {\n // this._tableContainerScrollWidth = this.tableContainer.nativeElement.scrollWidth;\n this._checkCellMock();\n }),\n debounceTime(100)\n )\n .subscribe(() => {\n this.recalculateTableColumnWidth();\n if (this._freezableColumns.size || this._freezableEndColumns.size) {\n this._tableColumnResizeService.updateFrozenColumnsWidth();\n this._cdr.detectChanges();\n }\n })\n );\n\n this._subscriptions.add(\n resizeObservable(this.table.nativeElement).subscribe(() => {\n // this._tableScrollWidth = this.table.nativeElement.scrollWidth;\n this._checkCellMock();\n })\n );\n }\n\n /** @hidden */\n private _listenToTableContainerMouseLeave(): void {\n this._ngZone.runOutsideAngular(() => {\n this._subscriptions.add(\n fromEvent(this.tableContainer.nativeElement, 'mouseleave').subscribe(() =>\n this._tableColumnResizeService.hideResizer()\n )\n );\n });\n }\n\n /** @hidden */\n private _initScrollPosition(): void {\n const state = this.getTableState();\n\n if (!state.scrollTopPosition || this._tableRows.length === 0) {\n return;\n }\n this.tableScrollable.initializeScrollTop(state.scrollTopPosition);\n }\n\n /**\n * @hidden\n * Resets editable rows discarding the editable rows array.\n */\n private _resetEditState(): void {\n this._newTableRows = [];\n this._addedItems = [];\n this._forceSemanticHighlighting = false;\n this._setSemanticHighlighting();\n this._setTableRows();\n }\n\n /** @hidden */\n private _listenToLoadingAndRefocusCell(): void {\n this._subscriptions.add(\n this._tableService.tableLoading$.pipe(filter((loadingState) => !loadingState)).subscribe(() => {\n setTimeout(() => {\n if (this._tableHeaderResizer.focusedCellPosition && this._focusableGrid) {\n this._focusableGrid.focusCell(this._tableHeaderResizer.focusedCellPosition);\n }\n });\n })\n );\n }\n\n /** @hidden */\n private _onZoneFree(callback: () => void): void {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n callback();\n });\n }\n\n /** @hidden */\n private _setSemanticHighlighting(): void {\n this._tableService._semanticHighlighting$.set(this.semanticHighlighting);\n this._tableService._semanticHighlightingColumnWidth$.set(this._semanticHighlightingColumnWidth);\n }\n\n /** @hidden */\n private _setSelectionColumnWidth(): void {\n this._selectionColumnWidth = this.isSelectionColumnShown\n ? SELECTION_COLUMN_WIDTH.get(this.contentDensityObserver.value) ?? 0\n : 0;\n }\n\n /** @hidden */\n private _checkCellMock(): void {\n this._tableColumnResizeService.cellMockVisible$.set(\n this._tableColumnResizeService.fixedWidth &&\n (this.tableContainer?.nativeElement?.scrollWidth ?? 0) > (this.table?.nativeElement?.scrollWidth ?? 0)\n );\n }\n\n /**\n * @hidden\n * Listens to fixed column width subject and calculates last applicable frozen column based on `nonFrozenColumnsMinWidth` vaue.\n */\n private _listenToFixedColumnsWidth(): void {\n this._calculateFrozenColumnRefresh$.next();\n this._calculateFrozenColumnRefresh$.complete();\n\n this._calculateFrozenColumnRefresh$ = new Subject();\n\n this._tableColumnResizeService.fixedColumsWidthChange\n .pipe(takeUntil(this._calculateFrozenColumnRefresh$))\n .subscribe(() => this._calculateLastFreezableColumn());\n }\n\n private _calculateLastFreezableColumn(): void {\n if (!this.tableScrollable || this._lastFreezableColumnCalculation) {\n return;\n }\n this._lastFreezableColumnCalculation = true;\n const allColumns = this._tableColumnResizeService.fixedColumsWidthChange.value;\n const allFrozenColumns = uniq([\n ...this._freezableColumns.keys(),\n this.freezeColumnsTo,\n ...this._freezableEndColumns.keys()\n ]);\n const columnSize = {\n frozen: new Map<string, number>(),\n unFrozen: new Map<string, number>()\n };\n allColumns.forEach((size, column) => {\n columnSize[allFrozenColumns.includes(column) ? 'frozen' : 'unFrozen'].set(column, parseInt(size, 10));\n });\n\n const frozenColumnSizes = [...columnSize.frozen.values()];\n\n if (frozenColumnSizes.length === 0) {\n this._lastFreezableColumnCalculation = false;\n return;\n }\n\n const totalFrozenSize = [...columnSize.frozen.values()].reduce((sum, size) => sum + size);\n\n let diff = this.tableScrollable.elementRef.nativeElement.getBoundingClientRect().width - totalFrozenSize;\n const freezedColumns = [...this._freezableColumns.keys()];\n\n if (diff >= this.nonFrozenColumnsMinWidth) {\n this._lastFreezableColumnCalculation = false;\n return;\n }\n\n let lastColumn: string;\n\n while (diff < this.nonFrozenColumnsMinWidth) {\n if (freezedColumns.length === 0) {\n break;\n }\n\n lastColumn = freezedColumns.pop()!;\n diff += columnSize.frozen.get(lastColumn)!;\n }\n\n this._lastFreezableColumnCalculation = false;\n\n this.freezeToColumn(freezedColumns[freezedColumns.length - 1]);\n }\n}\n","@if (tableToolbar) {\n <!-- Toolbar -->\n <ng-template\n [ngTemplateOutlet]=\"tableToolbar.contentTemplateRef\"\n [ngTemplateOutletContext]=\"_toolbarContext\"\n ></ng-template>\n}\n<fd-busy-indicator\n [loading]=\"(_tableService.tableLoading$ | async) === true && _dataSourceDirective._firstLoadingDone\"\n [block]=\"true\"\n>\n <!-- Table Container -->\n <div class=\"fdp-table__container\" #tableContainer>\n <ng-template [ngTemplateOutlet]=\"tableTemplate\"></ng-template>\n @if (enableDragResize) {\n <!-- Table column resizer for visually representing the resizing process -->\n <fdp-table-column-resizer class=\"fdp-table__column-resizer\"></fdp-table-column-resizer>\n }\n </div>\n @if (showGrowingButton) {\n <fdp-table-growing-button [showItemsCount]=\"showItemsCount\" [showItemsCount]=\"true\"></fdp-table-growing-button>\n }\n</fd-busy-indicator>\n<!-- Table Template -->\n<ng-template #tableTemplate>\n <div\n class=\"fdp-table__body fd-scrollbar\"\n [class.fdp-table__body--virtual-scroll]=\"!!_virtualScrollDirective?.virtualScroll\"\n fdpTableScrollable\n #tableScrollable=\"tableScrollable\"\n [style.height]=\"bodyHeight\"\n [class.fixed-height]=\"!!bodyHeight\"\n [attr.role]=\"pageScrolling ? 'feed' : null\"\n [class.fd-table--fixed]=\"_freezableColumns.size || fixed\"\n >\n <table\n fd-table\n [attr.role]=\"isTreeTable ? 'treegrid' : 'grid'\"\n class=\"fdp-table__body-table\"\n [allCellsFocusable]=\"true\"\n [popIn]=\"_tableService.poppingColumns$().length > 0\"\n [class.fd-table--no-outer-border]=\"noOuterBorders\"\n [attr.aria-labelledby]=\"_ariaLabelledBy\"\n >\n <thead fd-table-header class=\"fdp-table__header\">\n <tr\n fdp-table-header-row\n [rowId]=\"id\"\n [fixed]=\"fixed\"\n [isShownSelectionColumn]=\"isSelectionColumnShown\"\n [checkedState]=\"_checkedState\"\n [selectionMode]=\"_selectionMode\"\n [selectionColumnWidth]=\"_selectionColumnWidth\"\n [freezeColumnsTo]=\"freezeColumnsTo\"\n [freezeEndColumnsTo]=\"freezeEndColumnsTo\"\n (keydown.enter)=\"_onRowClick(null, $event)\"\n (keydown.space)=\"_onRowClick(null, $event)\"\n (click)=\"_onRowClick(null, $event)\"\n [disableSelectionCheckbox]=\"_dataSourceTableRows.length === 0\"\n ></tr>\n </thead>\n @if (!!_tableRowsVisible.length && _tableService.visibleColumnsLength() > 0) {\n <tbody\n fd-table-body\n fdkDndList\n #tableBody\n [dragoverPredicate]=\"_dndTableDirective?.dragoverPredicate\"\n [dropPredicate]=\"_dndTableDirective?.dropPredicate\"\n [noBorderX]=\"noBorderX || noBorders\"\n [noBorderY]=\"noBorderY || noBorders\"\n [tabIndex]=\"pageScrolling ? 0 : -1\"\n [items]=\"_dndTableRowsPlaceholder\"\n [draggable]=\"isDraggable\"\n [dropMode]=\"_dndTableDirective?.dropMode ?? 'group'\"\n (itemDropped)=\"_dndTableDirective?.dragDropItemDrop($event)\"\n (dropPredicateCalculating)=\"_calculatingLoading($event)\"\n (dropCancelled)=\"_dndTableDirective?.dropCancelled()\"\n >\n @for (rowIndex of _tableRowsInViewPortPlaceholder; track _rowTrackBy($index, rowIndex)) {\n @if (_tableRowsVisible[rowIndex]; as row) {\n @switch (row.type) {\n @case ('group') {\n <tr\n fdp-table-group-row\n [index]=\"rowIndex\"\n [height]=\"rowHeight\"\n [draggable]=\"isDraggable\"\n [row]=\"row\"\n [rowId]=\"id\"\n [keyToColumnMap]=\"_keyToColumnMap\"\n [tableColumnsLength]=\"_tableColumnsLength\"\n (toggleGroupRow)=\"_toggleGroupRow($event)\"\n (click)=\"_emitRowActivate(row)\"\n ></tr>\n }\n @default {\n <tr\n [fdkDndItem]=\"row\"\n [applyDragItemClass]=\"isDraggable\"\n [class]=\"row | rowClasses: rowsClass\"\n [tabindex]=\"rowsActivable || !!row.navigatable ? 0 : -1\"\n [focusable]=\"rowsActivable || !!row.navigatable\"\n [hoverable]=\"rowsActivable || isSelectionColumnShown || !!row.navigatable\"\n [activable]=\"rowsActivable || !!row.navigatable\"\n [active]=\"rowIndex === _navigatedRowIndex\"\n [highlightActive]=\"highlightNavigatedRow\"\n [style.height.px]=\"rowHeight\"\n [attr.aria-level]=\"isTreeTable ? row.level + 1 : null\"\n (keydown.enter)=\"_onRowClick(row, $event)\"\n (keydown.space)=\"_onRowClick(row, $event)\"\n (click)=\"_onRowClick(row, $event)\"\n (started)=\"_dndTableDirective?.dragDropStart()\"\n [main]=\"true\"\n [class.fd-table__row--draggable]=\"isDraggable\"\n fdp-table-row\n [rowId]=\"id\"\n [index]=\"rowIndex\"\n [row]=\"row\"\n [selectionMode]=\"_selectionMode\"\n [selectableKey]=\"selectableKey\"\n [enableTristateMode]=\"enableTristateMode\"\n [fixed]=\"fixed\"\n [selectionColumnWidth]=\"_selectionColumnWidth\"\n [freezeColumnsTo]=\"freezeColumnsTo\"\n [freezeEndColumnsTo]=\"freezeEndColumnsTo\"\n ></tr>\n }\n }\n @if (row.type === 'item' && _tableService.poppingColumns$().length > 0) {\n <tr\n fdp-table-popping-row\n [secondary]=\"true\"\n [selectionMode]=\"selectionMode\"\n [row]=\"row\"\n [checked]=\"row.checked\"\n [class]=\"row | rowClasses: rowsClass\"\n (toggleGroupRow)=\"_toggleGroupRow($event)\"\n (cellClicked)=\"_onCellClick($event.index, $event.row)\"\n ></tr>\n }\n @if (row.children.length === 0 && (row.childItemsLoading$ | async)) {\n <tr fd-table-row *fdkRepeat=\"3\">\n <td fd-table-cell *fdkRepeat=\"_tableColumnsLength\">\n <fd-skeleton\n [style.margin]=\"'auto 0'\"\n type=\"text\"\n textLines=\"1\"\n width=\"60%\"\n ></fd-skeleton>\n </td>\n </tr>\n }\n <!-- Last rendered child row. -->\n @if (row.parent?.lastChild?.index === row.index) {\n <tr\n aria-hidden=\"true\"\n class=\"fd-table__intersection-spy\"\n [fdkIntersectionSpy]=\"pageScrollingThreshold\"\n (intersected)=\"$event && _tableRowService.loadChildRows(row.parent!)\"\n [style.top.px]=\"pageScrollingThreshold * -1\"\n ></tr>\n }\n }\n }\n @if (pageScrolling) {\n <tr\n aria-hidden=\"true\"\n class=\"fd-table__intersection-spy\"\n [fdkIntersectionSpy]=\"pageScrollingThreshold\"\n (intersected)=\"$event && _onSpyIntersect($event)\"\n [style.top.px]=\"pageScrollingThreshold * -1\"\n ></tr>\n }\n </tbody>\n } @else {\n @if (!_dataSourceDirective._firstLoadingDone) {\n <tbody fd-table-body>\n <tr fd-table-row *fdkRepeat=\"3\">\n <td fd-table-cell *fdkRepeat=\"_tableColumnsLength\">\n <fd-skeleton\n [style.margin]=\"'auto 0'\"\n type=\"text\"\n textLines=\"1\"\n width=\"60%\"\n ></fd-skeleton>\n </td>\n </tr>\n </tbody>\n } @else {\n <tbody fd-table-body class=\"fdp-table__empty\">\n <tr fd-table-row>\n <td fd-table-cell class=\"fd-table__cell--no-data\" [attr.colspan]=\"_tableColumnsLength\">\n <div class=\"fdp-table__empty-table-message\">\n <div>\n <ng-content select=\"fdp-table-no-data-wrapper\"></ng-content>\n </div>\n @if (!_noDataWrapper && _tableService.visibleColumnsLength() > 0) {\n <div>\n {{\n emptyTableMessage || ('platformTable.defaultEmptyMessage' | fdTranslate)\n }}\n </div>\n } @else if (_tableService.visibleColumnsLength() === 0) {\n <div>\n {{\n noVisibleColumnsMessage ||\n ('platformTable.noVisibleColumnsMessage' | fdTranslate)\n }}\n </div>\n }\n </div>\n </td>\n </tr>\n </tbody>\n }\n }\n @if (pageScrolling) {\n <tbody class=\"fd-table__body__focus-mock\"></tbody>\n }\n @if (_virtualScrollDirective?.virtualScroll) {\n <!-- the tbody element below is so the scrollbar renders correctly -->\n <tbody>\n <tr>\n <td colspan=\"100%\" [style.height.px]=\"_virtualScrollDirective!.virtualScrollTotalHeight\"></td>\n </tr>\n </tbody>\n }\n </table>\n </div>\n</ng-template>\n<!-- Empty Table Message -->\n","import { NgModule } from '@angular/core';\n\nimport { TableHelpersModule } from '@fundamental-ngx/platform/table-helpers';\n\nimport {\n FilterCustomComponent,\n FilterMultiSelectComponent,\n FilterRuleComponent,\n FilterSingleSelectComponent,\n FilterStepComponent,\n FiltersComponent,\n FiltersListStepComponent,\n GroupingComponent,\n P13ColumnsDialogComponent,\n P13FilteringDialogComponent,\n P13GroupingDialogComponent,\n ResetButtonComponent,\n SortingComponent,\n TableColumnComponent,\n TableP13ColumnsComponent,\n TableP13DialogComponent,\n TableP13FilterComponent,\n TableP13GroupComponent,\n TableP13SortComponent,\n TableToolbarActionsComponent,\n TableToolbarComponent,\n TableViewSettingsDialogComponent,\n TableViewSettingsFilterComponent\n} from './components';\nimport {\n GetAvailableSortColumnsPipe,\n P13SortingDialogComponent\n} from './components/table-p13-dialog/sorting/sorting.component';\nimport { TableComponent } from './table.component';\n\nimport { NoDataWrapperComponent, PlatformTableColumnResizerComponent } from './components';\nimport { TableEditableCellComponent } from './components/table-editable-cell/table-editable-cell.component';\nimport { TableToolbarLeftActionsComponent } from './components/table-toolbar/table-toolbar-left-actions.component';\n\nimport { TableCellHeaderPopoverComponent, TableHeaderCellContentComponent } from './components';\nimport { TableGrowingButtonComponent } from './components/growing-button/table-growing-button.component';\nimport { TableGroupRowComponent } from './components/table-group-row/table-group-row.component';\nimport {\n IsColumnHasHeaderMenuPipe,\n TableHeaderRowComponent\n} from './components/table-header-row/table-header-row.component';\nimport { TablePoppingRowComponent } from './components/table-popping-row/table-popping-row.component';\nimport { TableRowComponent } from './components/table-row/table-row.component';\n\nconst EXPORTABLE_DECLARATIONS = [\n TableComponent,\n TableColumnComponent,\n TableToolbarComponent,\n TableToolbarActionsComponent,\n TableViewSettingsDialogComponent,\n TableViewSettingsFilterComponent,\n SortingComponent,\n GroupingComponent,\n FiltersComponent,\n FiltersListStepComponent,\n FilterStepComponent,\n FilterSingleSelectComponent,\n FilterMultiSelectComponent,\n FilterCustomComponent,\n ResetButtonComponent,\n TableP13DialogComponent,\n TableP13SortComponent,\n TableP13FilterComponent,\n TableP13GroupComponent,\n TableP13ColumnsComponent,\n P13SortingDialogComponent,\n P13GroupingDialogComponent,\n P13FilteringDialogComponent,\n FilterRuleComponent,\n P13ColumnsDialogComponent,\n PlatformTableColumnResizerComponent,\n NoDataWrapperComponent,\n GetAvailableSortColumnsPipe,\n TableEditableCellComponent,\n TableToolbarLeftActionsComponent,\n TableHeaderCellContentComponent,\n TableCellHeaderPopoverComponent,\n TableRowComponent,\n TableGroupRowComponent,\n TablePoppingRowComponent,\n TableHeaderRowComponent,\n IsColumnHasHeaderMenuPipe,\n TableGrowingButtonComponent\n];\n\n@NgModule({\n imports: [...EXPORTABLE_DECLARATIONS, TableHelpersModule],\n exports: [...EXPORTABLE_DECLARATIONS, TableHelpersModule]\n})\nexport class PlatformTableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","ListComponent","i2","NOT_SELECTED_OPTION_VALUE","dialogConfig","INITIAL_DIRECTION","i3","equal","CoreTableService","FdTableComponent","CoreTableComponent"],"mappings":"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"}
|