@3kles/kles-material-table-v2 21.4.1 → 21.5.0
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":"3kles-kles-material-table-v2.mjs","sources":["../../../projects/kles-material-table/src/lib/pipes/header-field.pipe.ts","../../../projects/kles-material-table/src/lib/pipes/cell-field.pipe.ts","../../../projects/kles-material-table/src/lib/token.ts","../../../projects/kles-material-table/src/lib/pipes/ng-style.pipe.ts","../../../projects/kles-material-table/src/lib/services/features/events/events.service.ts","../../../projects/kles-material-table/src/lib/directives/resizable-column.directive.ts","../../../projects/kles-material-table/src/lib/pipes/footer-field.pipe.ts","../../../projects/kles-material-table/src/lib/pipes/ui-field.pipe.ts","../../../projects/kles-material-table/src/lib/enums/span.enum.ts","../../../projects/kles-material-table/src/lib/pipes/span.pipe.ts","../../../projects/kles-material-table/src/lib/services/store/expanded-row-store.service.ts","../../../projects/kles-material-table/src/lib/services/features/loader/loader-childrens.service.ts","../../../projects/kles-material-table/src/lib/services/features/loading/loading.service.ts","../../../projects/kles-material-table/src/lib/services/features/columns/columns.service.ts","../../../projects/kles-material-table/src/lib/services/features/table/row-factory.service.ts","../../../projects/kles-material-table/src/lib/services/store/row-context-store.service.ts","../../../projects/kles-material-table/src/lib/services/features/table/form.ts","../../../projects/kles-material-table/src/lib/services/features/tree/tree.service.ts","../../../projects/kles-material-table/src/lib/components/cell/cell.component.ts","../../../projects/kles-material-table/src/lib/components/cell/cell.component.html","../../../projects/kles-material-table/src/lib/components/header/header.component.ts","../../../projects/kles-material-table/src/lib/pipes/header.pipe.ts","../../../projects/kles-material-table/src/lib/components/table/table-intl.ts","../../../projects/kles-material-table/src/lib/components/empty-state/empty-state.component.ts","../../../projects/kles-material-table/src/lib/components/empty-state/empty-state.component.html","../../../projects/kles-material-table/src/lib/pipes/row-context.pipe.ts","../../../projects/kles-material-table/src/lib/kles-table-connector.service.ts","../../../projects/kles-material-table/src/lib/services/store/paginator-store.service.ts","../../../projects/kles-material-table/src/lib/services/features/paginator/paginator.service.ts","../../../projects/kles-material-table/src/lib/services/features/scrollbar/scrollbar.service.ts","../../../projects/kles-material-table/src/lib/services/features/footer/footer.service.ts","../../../projects/kles-material-table/src/lib/services/features/extra-row/extra-row.service.ts","../../../projects/kles-material-table/src/lib/services/features/render/render.service.ts","../../../projects/kles-material-table/src/lib/services/features/table/datasource.ts","../../../projects/kles-material-table/src/lib/services/features/cell/cell-valuechange.service.ts","../../../projects/kles-material-table/src/lib/services/features/validation/validation.service.ts","../../../projects/kles-material-table/src/lib/services/features/datasource/datasource.service.ts","../../../projects/kles-material-table/src/lib/services/features/filter/filter.service.ts","../../../projects/kles-material-table/src/lib/services/features/row/row.service.ts","../../../projects/kles-material-table/src/lib/services/features/cell/cell.service.ts","../../../projects/kles-material-table/src/lib/services/features/empty-state/empty-state.service.ts","../../../projects/kles-material-table/src/lib/services/features/dragdrop/dragdrop.service.ts","../../../projects/kles-material-table/src/lib/components/table/table.component.ts","../../../projects/kles-material-table/src/lib/components/table/table.component.html","../../../projects/kles-material-table/src/lib/utils/destroyable.guard.ts","../../../projects/kles-material-table/src/lib/components/paginate-table/paginate-table.component.ts","../../../projects/kles-material-table/src/lib/components/paginate-table/paginate-table.component.html","../../../projects/kles-material-table/src/lib/services/store/sort-store.service.ts","../../../projects/kles-material-table/src/lib/services/features/sort/sort.service.ts","../../../projects/kles-material-table/src/lib/services/store/filter-store.service.ts","../../../projects/kles-material-table/src/lib/components/infinite-scroll-table/infinite-scroll-table.component.ts","../../../projects/kles-material-table/src/lib/components/infinite-scroll-table/infinite-scroll-table.component.html","../../../projects/kles-material-table/src/lib/services/features/selection/selection-loader.service.ts","../../../projects/kles-material-table/src/lib/services/features/header/header.service.ts","../../../projects/kles-material-table/src/lib/core/selection/selection-model-error.ts","../../../projects/kles-material-table/src/lib/core/selection/selection-state.enum.ts","../../../projects/kles-material-table/src/lib/core/selection/selection-model.ts","../../../projects/kles-material-table/src/lib/services/features/selection/selection.service.ts","../../../projects/kles-material-table/src/lib/services/features/loader/loader.service.ts","../../../projects/kles-material-table/src/lib/services/features/lines/lines.service.ts","../../../projects/kles-material-table/src/lib/services/features/loading/loading-orchestrator.service.ts","../../../projects/kles-material-table/src/lib/services/features/table/table.service.ts","../../../projects/kles-material-table/src/lib/services/features/scrollbar/scrollbar-orchestrator.service.ts","../../../projects/kles-material-table/src/lib/directives/dynamic-table-loader.directive.ts","../../../projects/kles-material-table/src/lib/kles-table.component.ts","../../../projects/kles-material-table/src/lib/kles-table.component.html","../../../projects/kles-material-table/src/lib/kles-material-table.module.ts","../../../projects/kles-material-table/src/lib/core/table/loader.interface.ts","../../../projects/kles-material-table/src/lib/core/table/selection-config.interface.ts","../../../projects/kles-material-table/src/lib/enums/align.enum.ts","../../../projects/kles-material-table/src/public-api.ts","../../../projects/kles-material-table/src/3kles-kles-material-table-v2.ts"],"sourcesContent":["import { IKlesFieldConfig } from '@3kles/kles-material-dynamicforms';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { KlesColumnConfig } from '../core/table/column.interface';\nimport { SortHeaderArrowPosition } from '@angular/material/sort';\n\n@Pipe({\n name: 'headerField',\n standalone: true,\n})\nexport class HeaderFieldPipe implements PipeTransform {\n transform(\n col: KlesColumnConfig | null | undefined,\n ): (IKlesFieldConfig) | null {\n if (!col) return null;\n return {\n name: col.columnDef,\n ...col.headerCell?.field,\n };\n }\n}\n","import { IKlesFieldConfig } from '@3kles/kles-material-dynamicforms';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { KlesColumnConfig } from '../core/table/column.interface';\nimport { KlesExtraCellFieldConfig } from '../core/table/cell.interface';\n\n@Pipe({\n name: 'cellField',\n standalone: true,\n})\nexport class CellFieldPipe implements PipeTransform {\n transform(col: KlesColumnConfig | null | undefined): (IKlesFieldConfig & { canExpand?: boolean }) | null {\n if (!col) return null;\n return { name: col.columnDef, canExpand: col.canExpand, ...col.cell?.field };\n }\n}\n\n@Pipe({\n name: 'extraCellField',\n standalone: true,\n})\nexport class ExtraCellFieldPipe implements PipeTransform {\n transform(col: KlesExtraCellFieldConfig | null | undefined): IKlesFieldConfig | null {\n if (!col) return null;\n return { name: col.columnDef, ...col.field };\n }\n}\n","import { InjectionToken, WritableSignal } from '@angular/core';\nimport { KlesColumnConfig } from './core/table/column.interface';\nimport { EmptyStateConfig, ExtraRowConfig, LoaderConfig, PaginatorConfig } from './core/table/config.interface';\nimport { DragDropService } from './services/features/dragdrop/dragdrop.service';\nimport { Sort } from '@angular/material/sort';\n\nimport { SelectionConfig } from './core/table/selection-config.interface';\nimport { IDatasourceService } from './services/features/datasource/datasource.service';\nimport { ISelectionService } from './services/features/selection/selection.service';\nimport { ISortService } from './services/features/sort/sort.service';\nimport { ILinesService } from './services/features/lines/lines.service';\nimport { ITableService } from './services/features/table/table.service';\nimport { IHeaderService } from './services/features/header/header.service';\n\nimport { IScrollbarOrchestratorService } from './services/features/scrollbar/scrollbar-orchestrator.service';\nimport { ILoader } from './services/features/loader/loader.interface';\n\nexport const SELECTION_CONFIG = new InjectionToken<SelectionConfig<any>>('SELECTION_CONFIG');\n\nexport const LOADER_CONFIG = new InjectionToken<LoaderConfig<any, any>>('LOADER_CONFIG');\nexport const COLUMNS = new InjectionToken<WritableSignal<KlesColumnConfig[]>>('COLUMNS');\nexport const FOOTER = new InjectionToken<WritableSignal<boolean>>('FOOTER');\n\nexport const EXTRA_ROWS = new InjectionToken<WritableSignal<ExtraRowConfig[]>>('EXTRA_ROWS');\n\nexport const ROW_DRAG_DROP = new InjectionToken<DragDropService>('ROW_DRAG_DROP');\nexport const DRAG_DROP_CONFIG = new InjectionToken<DragDropService>('DRAG_DROP_CONFIG');\n\n// export const KLES_TABLE_SERVICE = new InjectionToken<KlesTableService>('KLES_TABLE_SERVICE');\n\nexport const PAGINATOR_CONFIG = new InjectionToken<PaginatorConfig>('PAGINATOR_CONFIG');\nexport const SORT_CONFIG = new InjectionToken<Sort>('SORT_CONFIG');\n\nexport const HEADER_SERVICE = new InjectionToken<IHeaderService>('HEADER_SERVICE');\nexport const LOADER_SERVICE = new InjectionToken<ILoader<any>>('LOADER_SERVICE');\nexport const LINES_SERVICE = new InjectionToken<ILinesService>('LINES_SERVICE');\nexport const DATASOURCE_SERVICE = new InjectionToken<IDatasourceService>('DATASOURCE_SERVICE');\nexport const SELECTION_SERVICE = new InjectionToken<ISelectionService>('SELECTION_SERVICE');\nexport const SORT_SERVICE = new InjectionToken<ISortService>('SORT_SERVICE');\nexport const SCROLLBAR_ORCHESTRATOR_SERVICE = new InjectionToken<IScrollbarOrchestratorService>('SCROLLBAR_ORCHESTRATOR_SERVICE');\n\nexport const TABLE_SERVICE = new InjectionToken<ITableService>('TABLE_SERVICE');\n\nexport const EMPTY_STATE_CONFIG = new InjectionToken<boolean | EmptyStateConfig | undefined>('EMPTY_STATE_CONFIG');\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { NgStyleInput } from '../core/table/cell.interface';\nimport { AbstractControl, FormControl, FormControlStatus } from '@angular/forms';\n\n@Pipe({\n name: 'resolveNgStyle',\n standalone: true,\n})\nexport class ResolveNgStylePipe implements PipeTransform {\n transform(style?: NgStyleInput, value?: any, status?: FormControlStatus, row?: any, rowStatus?: FormControlStatus): Record<string, any> {\n if (!style) return {};\n return typeof style === 'function' ? style(value, status, row, rowStatus) : style;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { TableEvent, TableEventPayload, TableEventType } from './events.model';\nimport { TableEventMap } from './event-map.model';\n\n@Injectable()\nexport class EventsService<TValue = unknown> {\n private readonly eventsSubject = new Subject<TableEvent<TValue>>();\n\n public readonly events$: Observable<TableEvent<TValue>> = this.eventsSubject.asObservable();\n\n /**\n * Émet un event typé.\n *\n * Si l'event a un payload, TypeScript t'oblige à le fournir.\n * Si l'event est void, TypeScript t'empêche de fournir un payload.\n */\n public emit<K extends TableEventType<TValue>>(type: K, ...args: TableEventMap<TValue>[K] extends void ? [] : [payload: TableEventPayload<TValue, K>]): void {\n const payload = args[0];\n\n const event = payload === undefined ? ({ type } as TableEvent<TValue>) : ({ type, payload } as TableEvent<TValue>);\n\n this.eventsSubject.next(event);\n }\n\n /**\n * Émet directement un event complet.\n * Pratique si tu construis déjà l'objet ailleurs.\n */\n public emitEvent(event: TableEvent<TValue>): void {\n this.eventsSubject.next(event);\n }\n\n public complete(): void {\n this.eventsSubject.complete();\n }\n}\n","import { computed, Directive, effect, ElementRef, HostBinding, input, NgZone, OnChanges, OnInit, Renderer2, SimpleChanges } from '@angular/core';\nimport { KlesColumnConfig } from '../core/table/column.interface';\nimport { EventsService } from '../services/features/events/events.service';\n\n@Directive({\n selector: 'th[appResizableColumn]',\n standalone: true,\n})\nexport class ResizableColumnDirective implements OnInit, OnChanges {\n column = input.required<KlesColumnConfig>({ alias: 'appResizableColumn' });\n\n private minWidth = computed(() => {\n return 60; //TODO trouver une solution pour ne plus avoir une valeur en dur\n });\n private maxWidth = computed(() => {\n return 800; //TODO trouver une solution pour ne plus avoir une valeur en dur\n });\n\n private startX = 0;\n private startWidth = 0;\n private cleanupMove?: () => void;\n private cleanupUp?: () => void;\n\n private currentWidth: number = 0;\n private child: any;\n\n @HostBinding('attr.appResizableColumn')\n get appResizableColumnAttr() {\n return this.column().columnDef;\n }\n\n constructor(\n private readonly el: ElementRef<HTMLElement>,\n private readonly renderer: Renderer2,\n private readonly zone: NgZone,\n private readonly eventsService: EventsService,\n ) {}\n\n ngOnInit() {\n if (this.column().resizable) {\n this.apply();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.column.isFirstChange()) {\n if (changes.column.previousValue.resizable !== changes.column.currentValue.resizable) {\n if (changes.column.currentValue.resizable) {\n this.apply();\n } else {\n this.remove();\n }\n }\n }\n }\n\n private onDown(e: MouseEvent) {\n e.preventDefault();\n this.startResize(e.clientX);\n }\n\n private onTouchDown(e: TouchEvent) {\n if (!e.touches?.length) return;\n e.preventDefault();\n this.startResize(e.touches[0].clientX);\n }\n\n private startResize(clientX: number) {\n const th = this.el.nativeElement;\n this.startX = clientX;\n this.startWidth = th.getBoundingClientRect().width;\n this.currentWidth = this.startWidth;\n\n this.zone.run(() => {\n this.eventsService.emit('columnResizeStart', {\n columnDef: this.column().columnDef,\n width: this.startWidth,\n previousWidth: this.startWidth,\n });\n });\n\n this.zone.runOutsideAngular(() => {\n const doc = th.ownerDocument;\n\n const onMove = (ev: MouseEvent | TouchEvent) => {\n const x = ev instanceof MouseEvent ? ev.clientX : (ev.touches?.[0]?.clientX ?? this.startX);\n\n const delta = x - this.startX;\n const next = Math.min(this.maxWidth(), Math.max(this.minWidth(), this.startWidth + delta));\n\n if (next === this.currentWidth) {\n return;\n }\n\n const previousWidth = this.currentWidth;\n this.currentWidth = next;\n this.applyWidth(next);\n\n this.eventsService.emit('columnResize', {\n columnDef: this.column().columnDef,\n width: next,\n previousWidth,\n });\n };\n\n const onUp = () => this.stopResize();\n\n this.cleanupMove = this.renderer.listen(doc, 'mousemove', onMove);\n this.renderer.listen(doc, 'touchmove', onMove);\n this.cleanupUp = this.renderer.listen(doc, 'mouseup', onUp);\n this.renderer.listen(doc, 'touchend', onUp);\n });\n }\n\n private stopResize() {\n this.cleanupMove?.();\n this.cleanupUp?.();\n this.cleanupMove = undefined;\n this.cleanupUp = undefined;\n\n if (this.currentWidth > 0) {\n this.zone.run(() => {\n this.eventsService.emit('columnResizeEnd', {\n columnDef: this.column().columnDef,\n width: this.currentWidth,\n previousWidth: this.startWidth,\n });\n });\n }\n }\n\n private applyWidth(px: number) {\n const root = this.el.nativeElement.closest('table, mat-table, cdk-table') as HTMLElement | null;\n if (!root) return;\n\n const selectors = [`.mat-column-${this.column().columnDef}`, `.cdk-column-${this.column().columnDef}`];\n\n const cells = root.querySelectorAll<HTMLElement>(selectors.join(','));\n\n for (const cell of Array.from(cells)) {\n // table natif\n cell.style.width = `${px}px`;\n cell.style.minWidth = `${px}px`;\n cell.style.maxWidth = `${px}px`;\n\n // mode flex\n cell.style.flex = `0 0 ${px}px`;\n }\n }\n\n private apply() {\n this.remove();\n\n this.child = this.renderer.createElement('span');\n this.renderer.addClass(this.child, 'resize-handle');\n this.renderer.appendChild(this.el.nativeElement, this.child);\n this.renderer.listen(this.child, 'mousedown', (e: MouseEvent) => this.onDown(e));\n this.renderer.listen(this.child, 'touchstart', (e: TouchEvent) => this.onTouchDown(e));\n }\n\n private remove() {\n if (this.child) {\n this.renderer.removeChild(this.el.nativeElement, this.child);\n this.child = undefined;\n }\n }\n\n ngOnDestroy() {\n this.stopResize();\n }\n}\n","import { IKlesFieldConfig } from '@3kles/kles-material-dynamicforms';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { KlesColumnConfig } from '../core/table/column.interface';\n\n@Pipe({\n name: 'footerField',\n standalone: true,\n})\nexport class FooterFieldPipe implements PipeTransform {\n transform(col: KlesColumnConfig | null | undefined): IKlesFieldConfig | null {\n if (!col) return null;\n return { name: col.columnDef, ...col.footerCell.field };\n }\n}\n","import { AbstractUiState, IKlesFieldConfig } from '@3kles/kles-material-dynamicforms';\nimport { inject, Pipe, PipeTransform } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { TABLE_SERVICE } from '../token';\nimport { ITableService } from '../services/features/table/table.service';\n\n@Pipe({\n name: 'uiField',\n standalone: true,\n})\nexport class UiFieldPipe implements PipeTransform {\n private tableService = inject<ITableService>(TABLE_SERVICE);\n\n transform(control: AbstractControl | null | undefined): AbstractUiState | undefined {\n if (!control) return undefined;\n return this.tableService?.klesForm.uiStore.get(control);\n }\n}\n","export enum Span {\n MAX = 'max'\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Span } from '../enums/span.enum';\n\n@Pipe({\n name: 'spanPipe',\n standalone: true,\n})\nexport class SpanPipe implements PipeTransform {\n transform(span: number | Span, maxSize: number): number {\n if (span === Span.MAX) {\n return maxSize;\n }\n return span;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ITableStore } from './store';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class ExpandedRowStore implements ITableStore {\n private readonly _expandedIds$ = new BehaviorSubject<Set<string>>(new Set());\n\n public readonly expandedIds$ = this._expandedIds$.asObservable();\n\n public reset(): void {\n this._expandedIds$.next(new Set());\n }\n\n public isExpanded(id: string): boolean {\n return this._expandedIds$.value.has(id);\n }\n\n public get expandedIds(): ReadonlySet<string> {\n return this._expandedIds$.value;\n }\n\n expand(id: string): void {\n const next = new Set(this._expandedIds$.value);\n next.add(id);\n this._expandedIds$.next(next);\n }\n\n collapse(id: string): void {\n const next = new Set(this._expandedIds$.value);\n next.delete(id);\n this._expandedIds$.next(next);\n }\n\n toggle(id: string): void {\n const next = new Set(this._expandedIds$.value);\n next.has(id) ? next.delete(id) : next.add(id);\n this._expandedIds$.next(next);\n }\n}\n","import { Injectable, Inject } from '@angular/core';\n\nimport { Subject, Observable, combineLatest, startWith, of, auditTime, switchMap, concat, catchError, map, shareReplay } from 'rxjs';\nimport { LOADER_CONFIG } from '../../../token';\nimport { IChildrensLoader } from './loader.interface';\nimport { LoaderConfig } from '../../../core/table/config.interface';\nimport { LinesLoader } from '../../../core/table/loader.interface';\nimport { FormGroup } from '@angular/forms';\n\n@Injectable()\nexport class LoaderChildrensService<T, R> implements IChildrensLoader<R> {\n private _refresh$ = new Subject<void>();\n\n constructor(@Inject(LOADER_CONFIG) private readonly loaderConfig: LoaderConfig<T, R>) {}\n\n public load(parent: FormGroup<any>, depth: number): Observable<{ total: number; items: R[]; loading: boolean; error?: any }> {\n const linesLoader = this.loaderConfig.lines as LinesLoader<T, R>;\n return combineLatest([this._refresh$.pipe(startWith(void 0)), linesLoader.params?.() || of({} as T)]).pipe(\n auditTime(0),\n switchMap(([_, params]) => {\n return concat(\n of({ loading: true, total: 0, items: [] }),\n (linesLoader.childrens?.(params, parent, depth) ?? of({ items: [] })).pipe(\n catchError((err) => {\n return of({ error: err, items: [] });\n }),\n map((response) => {\n return { ...response, loading: false, total: response?.items.length || 0 };\n }),\n ),\n );\n }),\n );\n }\n\n public refresh() {\n this._refresh$.next();\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class LoadingService {\n private _loading = signal(false);\n\n get loading() {\n return this._loading.asReadonly();\n }\n\n start() {\n this._loading.set(true);\n }\n stop() {\n this._loading.set(false);\n }\n}\n","import { computed, Inject, Injectable, Signal, WritableSignal } from '@angular/core';\nimport { COLUMNS } from '../../../token';\nimport { KlesColumnConfig } from '../../../core/table/column.interface';\nimport { EventsService } from '../events/events.service';\n\n@Injectable()\nexport class ColumnsService {\n public displayedColumns: Signal<string[]> | undefined;\n\n constructor(\n @Inject(COLUMNS) private _columns: WritableSignal<KlesColumnConfig[]>,\n private readonly eventsService: EventsService,\n ) {}\n\n public register() {\n this.setDisplayedColumns();\n }\n\n get columns(): Signal<KlesColumnConfig[]> {\n return this._columns.asReadonly();\n }\n\n public readonly stickyStartBoundary = computed<string | undefined>(() => {\n return this.getVisibleColumns()\n .filter((column) => column.sticky === true)\n .at(-1)?.columnDef;\n });\n\n public readonly stickyEndBoundary = computed<string | undefined>(() => {\n return this.getVisibleColumns()\n .filter((column) => column.stickyEnd === true)\n .at(0)?.columnDef;\n });\n\n public getVisible(): string[] {\n return this.getVisibleColumns().map((column) => column.columnDef);\n }\n\n public setVisible(columnDef: string, visible: boolean): void {\n this.updateColumn(columnDef, { visible });\n\n this.eventsService.emit('columnVisibilityChange', {\n columnDef,\n columns: this.getVisible(),\n visible,\n });\n }\n\n public toggleVisible(columnDef: string): void {\n const visible = this._columns().find((col) => col.columnDef === columnDef)?.visible;\n this.setVisible(columnDef, visible === undefined ? false : !visible);\n }\n\n public changeWidth(columnDef: string, options: { width?: string; maxWidth?: string; minWidth?: string }) {\n this.updateColumn(columnDef, {\n ...(options.width && { width: options.width }),\n ...(options.maxWidth && { maxWidth: options.maxWidth }),\n ...(options.minWidth && { minWidth: options.minWidth }),\n });\n }\n\n public setResizable(columnDef: string, resizable: boolean) {\n this.updateColumn(columnDef, { resizable });\n }\n\n public toggleResizable(columnDef: string): void {\n const resizable = this._columns().find((col) => col.columnDef === columnDef)?.resizable;\n this.setResizable(columnDef, resizable === undefined ? true : !resizable);\n }\n\n public setSticky(columnDef: string, options: { sticky?: boolean; stickyEnd?: boolean }) {\n this.updateColumn(columnDef, {\n ...(options.sticky && { sticky: options.sticky }),\n ...(options.stickyEnd && { stickyEnd: options.stickyEnd }),\n });\n }\n\n public setColumnPosition(columnDef: string, position: number) {\n const previousIndex = this._columns().findIndex((c) => c.columnDef === columnDef);\n\n this._columns.update((columns) => {\n if (previousIndex >= 0 && position >= 0 && previousIndex != position) {\n const currentElement = columns.at(position);\n const [val] = columns.splice(previousIndex, 1);\n const newCurrentElementPosition = columns.findIndex((c) => c.columnDef === currentElement?.columnDef);\n columns.splice(newCurrentElementPosition, 0, val);\n\n return [...columns];\n } else {\n return columns;\n }\n });\n\n this.eventsService.emit('columnOrderChange', {\n previousIndex: previousIndex,\n columns: this.getVisible(),\n currentIndex: position,\n });\n }\n\n private updateColumn(columnDef: string, config: Partial<KlesColumnConfig>): void {\n this._columns.update((columns) =>\n columns.map((col) =>\n col.columnDef === columnDef\n ? {\n ...col,\n ...config,\n cell: config.cell ? { ...col.cell, ...config.cell } : col.cell,\n headerCell: config.headerCell ? { ...col.headerCell, ...config.headerCell } : col.headerCell,\n footerCell: config.footerCell ? { ...col.footerCell, ...config.footerCell } : col.footerCell,\n }\n : col,\n ),\n );\n }\n\n private setDisplayedColumns(): void {\n this.displayedColumns = computed(() => {\n return this.getVisibleColumns().map((column) => column.columnDef);\n });\n }\n\n private getVisibleColumns(): KlesColumnConfig[] {\n return this._columns().filter((column) => {\n if (column.visibleWhen !== undefined) {\n return column.visibleWhen();\n }\n\n return column.visible !== false;\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup } from '@angular/forms';\nimport {\n AbstractUiState,\n componentMapper,\n GroupUiState,\n IKlesFieldConfig,\n klesFieldControlFactory,\n klesFieldUiFactory,\n} from '@3kles/kles-material-dynamicforms';\nimport { KlesRowContext } from '../../../core/table/row-context.interface';\n\nexport interface KlesCreatedRow<TSource = unknown> {\n formGroup: FormGroup;\n groupUi: GroupUiState;\n context: KlesRowContext<TSource>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RowFormFactory {\n createControl(field: IKlesFieldConfig, value?: any): { control: AbstractControl; ui: AbstractUiState } {\n let control: AbstractControl;\n let ui: AbstractUiState;\n\n if (field.type) {\n control =\n componentMapper.find((c) => c.type === field.type)?.factory({ ...field, value }) || klesFieldControlFactory({ ...field, value });\n ui = componentMapper.find((c) => c.type === field.type)?.ui?.({ ...field, value }) || klesFieldUiFactory({ ...field, value });\n } else {\n control =\n componentMapper.find((c) => c.component === field.component)?.factory({ ...field, value }) ||\n klesFieldControlFactory({ ...field, value });\n ui = componentMapper.find((c) => c.component === field.component)?.ui?.({ ...field, value }) || klesFieldUiFactory({ ...field, value });\n }\n return { control, ui };\n }\n\n createRow<TSource extends Record<string, any>>(\n fields: IKlesFieldConfig[],\n record: TSource,\n meta: { depth: number; parentId: string | null } = { depth: 0, parentId: null },\n ): KlesCreatedRow<TSource> {\n const data = { _id: crypto.randomUUID(), ...record };\n\n const controls: Record<string, any> = {\n _id: new FormControl(data._id, { nonNullable: true }),\n _depth: new FormControl(meta.depth),\n _parentId: new FormControl(meta.parentId),\n };\n\n const uis: Record<string, any> = {};\n\n for (const field of fields) {\n const { control, ui } = this.createControl(field, data?.[field.name] ?? undefined);\n controls[field.name] = control;\n uis[field.name] = ui;\n }\n return {\n formGroup: new FormGroup<any>(controls),\n groupUi: new GroupUiState(uis),\n context: {\n source: record,\n _id: data._id,\n meta,\n },\n };\n }\n\n createRows<TSource extends Record<string, any>>(\n fields: IKlesFieldConfig[],\n records: TSource[],\n meta: { depth: number; parentId: string | null } = { depth: 0, parentId: null },\n ): KlesCreatedRow<TSource>[] {\n return records.map((r) => this.createRow(fields, r, meta));\n }\n}\n","import { Injectable, Signal, signal, WritableSignal } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { KlesRowContext } from '../../core/table/row-context.interface';\n\n@Injectable()\nexport class RowContextStore {\n private readonly contexts = new WeakMap<AbstractControl, WritableSignal<KlesRowContext<unknown> | null>>();\n\n set<TSource>(row: AbstractControl, context: KlesRowContext<TSource>): void {\n const current = this.contexts.get(row);\n\n if (current) {\n current.set(context as KlesRowContext<unknown>);\n } else {\n this.contexts.set(row, signal<KlesRowContext<unknown> | null>(context));\n }\n }\n\n get<TSource = unknown>(row: AbstractControl): Signal<KlesRowContext<TSource> | null> | null {\n return (this.contexts.get(row) as Signal<KlesRowContext<TSource> | null> | undefined) ?? null;\n }\n\n updateSource<TSource>(row: AbstractControl, source: TSource): void {\n this.contexts.get(row)?.update((context) =>\n context\n ? {\n ...context,\n source,\n }\n : null,\n );\n }\n\n delete(row: AbstractControl): void {\n this.contexts.delete(row);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { ColumnsService } from '../columns/columns.service';\nimport { KlesCreatedRow, RowFormFactory } from './row-factory.service';\nimport * as _ from 'lodash';\nimport { AbstractUiState, ArrayUiState, GroupUiState } from '@3kles/kles-material-dynamicforms';\nimport { Subject } from 'rxjs';\nimport { RowContextStore } from '../../store/row-context-store.service';\n\n@Injectable()\nexport class KlesForm {\n readonly form = new FormGroup({\n header: new FormGroup({}),\n rows: new FormArray<FormGroup>([]),\n footer: new FormGroup({}),\n });\n\n readonly ui = new GroupUiState({\n header: new GroupUiState({}),\n rows: new ArrayUiState<any>([]),\n footer: new GroupUiState({}),\n });\n\n readonly uiStore = new WeakMap<AbstractControl, AbstractUiState>();\n\n private readonly rowsStructureChangedSubject = new Subject<void>();\n\n public readonly rowsStructureChanged$ = this.rowsStructureChangedSubject.asObservable();\n\n constructor(\n private columnsService: ColumnsService,\n private rowFactory: RowFormFactory,\n private rowContextStore: RowContextStore,\n ) {}\n\n public getRows(): FormArray<FormGroup> {\n return this.form.get('rows') as FormArray<FormGroup>;\n }\n\n public getUiRows(): ArrayUiState {\n return this.ui.get('rows') as ArrayUiState;\n }\n\n public getUiHeader(): GroupUiState {\n return this.ui.get('header') as GroupUiState;\n }\n\n public getUiFooter(): GroupUiState {\n return this.ui.get('footer') as GroupUiState;\n }\n\n public getHeader(): FormGroup {\n return this.form.get('header') as FormGroup;\n }\n\n public getFooter(): FormGroup {\n return this.form.get('footer') as FormGroup;\n }\n\n public setRows(rows: KlesCreatedRow[]) {\n this.getRows().controls.forEach((row) => {\n this.rowContextStore.delete(row);\n });\n\n this.getRows().clear({ emitEvent: false });\n this.getUiRows().clear();\n rows.forEach((r) => {\n this.uiStore.set(r.formGroup, r.groupUi);\n this.rowContextStore.set(r.formGroup, r.context);\n this.getRows().push(r.formGroup, { emitEvent: false });\n this.getUiRows().push(r.groupUi);\n });\n this.notifyRowsStructureChanged();\n }\n\n private insertRowAndNotify(\n row: KlesCreatedRow,\n index?: number,\n options?: { emitEvent?: boolean },\n notify?: boolean,\n ): { formGroup: FormGroup; groupUi: GroupUiState } {\n this.uiStore.set(row.formGroup, row.groupUi);\n this.rowContextStore.set(row.formGroup, row.context);\n if (index !== undefined) {\n this.getRows().insert(index, row.formGroup, options);\n this.getUiRows().insert(index, row.groupUi);\n } else {\n this.getRows().push(row.formGroup, options);\n this.getUiRows().push(row.groupUi);\n }\n\n if (notify) {\n this.notifyRowsStructureChanged();\n }\n\n return row;\n }\n\n public insertRow(row: KlesCreatedRow, index?: number, options?: { emitEvent?: boolean }): { formGroup: FormGroup; groupUi: GroupUiState } {\n return this.insertRowAndNotify(row, index, options, true);\n }\n\n public insertRows(rows: KlesCreatedRow[], index?: number) {\n rows.forEach((r) => {\n this.insertRowAndNotify(r, index);\n });\n this.notifyRowsStructureChanged();\n }\n\n public updateRow(_id: number | string, value: any, options?: { emitEvent?: boolean; onlySelf?: boolean }) {\n const row = this.getRows().controls.find((c) => c.getRawValue()._id === _id);\n\n if (row) {\n const oldValue = row.getRawValue();\n row.patchValue({ ...(value ?? {}), _id: oldValue._id }, options);\n return row;\n }\n\n return undefined;\n }\n\n public resetRow(_id: number | string, value?: any, options?: { onlySelf?: boolean; emitEvent?: boolean; overwriteDefaultValue?: boolean }) {\n const row = this.getRows().controls.find((c) => c.getRawValue()._id === _id);\n\n if (row) {\n const oldValue = row.getRawValue();\n row.reset({ ...(value ?? {}), _id: oldValue._id }, options);\n }\n }\n\n public deleteRowById(id: number | string, option?: { emitEvent?: boolean }) {\n const index = this.getRows().controls.findIndex((c) => c.getRawValue()._id === id);\n if (index !== -1) {\n const row = this.getRows().at(index);\n\n this.getRows().removeAt(index, option);\n this.rowContextStore.delete(row);\n this.getUiRows().removeAt(index);\n this.notifyRowsStructureChanged();\n }\n }\n\n public setHeaderControl(name: string, header: AbstractControl, options?: { emitEvent?: false }): void {\n this.getHeader().setControl(name, header, options);\n }\n\n public setFooterControl(name: string, footer: AbstractControl, options?: { emitEvent?: false }): void {\n this.getFooter().setControl(name, footer, options);\n }\n\n public setHeaderUi(name: string, header: AbstractUiState): void {\n this.getUiHeader().addUiState(name, header);\n }\n\n public setFooterUi(name: string, footer: AbstractUiState): void {\n this.getUiFooter().addUiState(name, footer);\n }\n\n public get rows(): FormGroup[] {\n return this.getRows().controls as FormGroup[];\n }\n\n public init() {\n this.columnsService.columns().forEach((column) => {\n let colCellHeader: any = {};\n if (column.headerCell?.field) {\n const { pipeTransform, ...tmpCell } = column.headerCell.field;\n colCellHeader = _.cloneDeep(tmpCell);\n colCellHeader = { pipeTransform, ...colCellHeader };\n }\n\n colCellHeader.name = column.columnDef;\n\n const { control, ui } = this.rowFactory.createControl(colCellHeader, colCellHeader.value);\n this.setHeaderControl(colCellHeader.name, control, { emitEvent: false });\n this.setHeaderUi(colCellHeader.name, ui);\n this.uiStore.set(control, ui);\n });\n\n this.columnsService\n .columns()\n .filter((column) => column.footerCell)\n .forEach((column) => {\n let colCellFooter: any = {};\n if (column.footerCell?.field) {\n const { pipeTransform, ...tmpCell } = column.footerCell.field;\n colCellFooter = _.cloneDeep(tmpCell);\n }\n colCellFooter.name = column.columnDef;\n const { control, ui } = this.rowFactory.createControl(colCellFooter, colCellFooter.value);\n this.setFooterControl(colCellFooter.name, control, { emitEvent: false });\n this.setFooterUi(colCellFooter.name, ui);\n this.uiStore.set(control, ui);\n });\n }\n\n private notifyRowsStructureChanged(): void {\n this.rowsStructureChangedSubject.next();\n }\n}\n","import { computed, inject, Injectable, OnInit, Signal, signal } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { LOADER_CONFIG } from '../../../token';\nimport { LoaderConfig } from '../../../core/table/config.interface';\nimport { LoaderChildrensService } from '../loader/loader-childrens.service';\nimport { BehaviorSubject, catchError, delay } from 'rxjs';\nimport { LoadingService } from '../loading/loading.service';\nimport { KlesForm } from '../table/form';\nimport { ColumnsService } from '../columns/columns.service';\nimport { RowFormFactory } from '../table/row-factory.service';\n\nexport interface RowMeta {\n id: string;\n parentId: string | null;\n level: number;\n expandable: boolean;\n}\n\n@Injectable()\nexport class TreeService<T, R> {\n private readonly loaderConfig = inject<LoaderConfig<T, R>>(LOADER_CONFIG);\n private readonly loaderChildrensService = inject(LoaderChildrensService);\n private readonly loadingService = inject(LoadingService);\n\n private readonly fm = inject(KlesForm);\n private readonly columnsService = inject(ColumnsService);\n private readonly rowFactory = inject(RowFormFactory);\n\n\n private loading = new Set<string>();\n\n private readonly _expandedIds$ = new BehaviorSubject<Set<string>>(new Set());\n public readonly expandedIds$ = this._expandedIds$.asObservable();\n\n \n private findParentIndex(id: string): number {\n return this.fm.getRows().controls.findIndex((c) => c.getRawValue()._id === id);\n }\n\n toggle(id: string, group: FormGroup, depth: number): void {\n const expanded = new Set(this._expandedIds$.value);\n\n if (expanded.has(id)) {\n this.fm\n .getRows()\n .controls.filter((control) => control.getRawValue()._parentId === id)\n .map((control) => control.getRawValue()._id)\n .forEach((_id) => this.fm.deleteRowById(_id));\n\n expanded.delete(id);\n this._expandedIds$.next(expanded);\n } else {\n const index = this.findParentIndex(id);\n\n this.loaderChildrensService.load(group, depth).subscribe((response) => {\n if (response.loading) {\n this.loading.add(id);\n // this.loadingService.start();\n } else {\n this.loading.delete(id);\n // this.loadingService.stop();\n // console.log( (group.getRawValue()._depth ?? 0) + 1)\n this.fm.insertRows(\n this.rowFactory.createRows(\n this.columnsService.columns().map((col) => ({ ...col.cell?.field, name: col.columnDef })),\n response.items,\n { depth: (group.getRawValue()._depth ?? 0) + 1, parentId: id },\n ),\n index + 1,\n );\n expanded.add(id);\n this._expandedIds$.next(expanded);\n }\n });\n }\n }\n\n public hasChildren(group: FormGroup, depth: number): boolean {\n return this.loaderConfig.lines.hasChildren?.(group, depth) ?? true;\n }\n}\n","import { GroupUiState } from '@3kles/kles-material-dynamicforms';\nimport { Component, computed, DestroyRef, inject, input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormGroup } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ExpandedRowStore } from '../../services/store/expanded-row-store.service';\nimport { filter, map, switchMap } from 'rxjs';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { KlesColumnConfig } from '../../core/table/column.interface';\nimport { TreeService } from '../../services/features/tree/tree.service';\n\n@Component({\n selector: 'kles-cell',\n templateUrl: './cell.component.html',\n styleUrl: './cell.component.scss',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule],\n})\nexport class KlesCellComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly expandedRowStore = inject(ExpandedRowStore);\n private readonly treeService = inject(TreeService);\n\n ui = input.required<GroupUiState<any>>();\n group = input.required<FormGroup<any>>();\n column = input.required<KlesColumnConfig>();\n\n expandedRow = computed(() => {\n return (this.column().canExpand ?? false) && (this.ui().get(this.column().columnDef)?.value().expandedRow ?? false);\n });\n\n expandedNode = computed(() => {\n return (this.column().canExpandNode ?? false) && (this.ui().get(this.column().columnDef)?.value().expandedNode ?? false);\n });\n\n hasChildren = computed(() => {\n return this.treeService.hasChildren(this.group(), this.group().getRawValue()._depth);\n });\n\n private column$ = toObservable(this.column);\n\n ngOnInit(): void {\n this.listen();\n }\n\n stopPropagation(event: any) {\n event.stopPropagation();\n }\n\n expandRow() {\n this.expandedRowStore.toggle(this.group().getRawValue()._id);\n }\n\n expandNode() {\n this.treeService.toggle(this.group().getRawValue()._id, this.group(), 0); //TODO depth\n }\n\n private listen() {\n this.column$\n .pipe(\n filter((column) => column.canExpand ?? false),\n switchMap(() => {\n return this.expandedRowStore.expandedIds$.pipe(\n takeUntilDestroyed(this.destroyRef),\n map((ids) => {\n return ids.has(this.group().value._id);\n }),\n );\n }),\n )\n .subscribe((expandedRow) => {\n this.ui().get(this.column().columnDef)?.patchValue({ expandedRow });\n });\n\n this.column$\n .pipe(\n filter((column) => column.canExpandNode ?? false),\n switchMap(() => {\n return this.treeService.expandedIds$.pipe(\n takeUntilDestroyed(this.destroyRef),\n map((ids) => {\n return ids.has(this.group().getRawValue()._id);\n }),\n );\n }),\n )\n .subscribe((expandedNode) => {\n this.ui().get(this.column().columnDef)?.patchValue({ expandedNode });\n });\n }\n}\n","@if (column().canExpand) {\n <button matIconButton class=\"expand-button\" (click)=\"expandRow(); stopPropagation($event)\">\n @if (this.expandedRow()) {\n <mat-icon>keyboard_arrow_down</mat-icon>\n } @else {\n <mat-icon>chevron_right</mat-icon>\n }\n </button>\n}\n@if (hasChildren() && column().canExpandNode) {\n <button matIconButton class=\"expand-button\" (click)=\"expandNode(); stopPropagation($event)\">\n @if (this.expandedNode()) {\n <mat-icon>keyboard_arrow_down</mat-icon>\n } @else {\n <mat-icon>chevron_right</mat-icon>\n }\n </button>\n}\n<div class=\"cell-field\"><ng-content></ng-content></div>\n","import { Component, input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatSortModule, SortHeaderArrowPosition } from '@angular/material/sort';\nimport { IKlesHeaderFieldConfig } from '../../core/table/cell.interface';\n\n@Component({\n selector: 'kles-header',\n template: `\n <div\n class=\"header\"\n mat-sort-header\n [disabled]=\"!header().sortable\"\n [arrowPosition]=\"header().sortArrowPosition\"\n [matTooltip]=\"header().tooltip\"\n matTooltipPosition=\"above\"\n >\n {{ header().label }}\n </div>\n\n <div class=\"filterHeader\">\n <div class=\"field\">\n <ng-content></ng-content>\n </div>\n\n @if (header().filterClearable && group().get(header().columnDef).value) {\n <div class=\"icon-button\">\n <button\n mat-icon-button\n aria-label=\"Clear\"\n type=\"button\"\n class=\"icon-button-small\"\n (click)=\"group().controls[header().columnDef].reset()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n padding-bottom: 10px;\n display: flex;\n flex-direction: column;\n justify-content: inherit;\n }\n\n .header {\n flex-grow: 1;\n align-items: center;\n display: flex;\n justify-content: inherit;\n }\n\n .filterHeader {\n display: flex;\n flex-grow: 1;\n align-items: center;\n gap: 2px;\n }\n\n .field {\n flex-grow: 1;\n text-align: center;\n }\n\n .icon-button button[mat-icon-button] {\n &.icon-button-small {\n width: 24px;\n height: 24px;\n line-height: 24px;\n padding: 0;\n\n .mat-icon {\n font-size: 18px;\n width: 18px;\n height: 18px;\n line-height: 18px;\n }\n\n .mat-mdc-button-ripple {\n font-size: inherit;\n width: inherit;\n height: inherit;\n line-height: inherit;\n }\n }\n }\n `,\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatIconModule, MatButtonModule, MatTooltipModule, MatSortModule],\n})\nexport class KlesHeaderComponent implements OnInit {\n header = input.required<IKlesHeaderFieldConfig & { columnDef: string; sortable?: boolean; sortArrowPosition?: SortHeaderArrowPosition }>();\n group = input.required<FormGroup<any>>();\n\n ngOnInit(): void {}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { KlesColumnConfig } from '../core/table/column.interface';\nimport { SortHeaderArrowPosition } from '@angular/material/sort';\nimport { IKlesHeaderFieldConfig } from '../core/table/cell.interface';\n\n@Pipe({\n name: 'header',\n standalone: true,\n})\nexport class HeaderPipe implements PipeTransform {\n transform(\n col: KlesColumnConfig | null | undefined,\n ):\n | (IKlesHeaderFieldConfig & { columnDef: string; filterable?: boolean; sortable?: boolean; sortArrowPosition?: SortHeaderArrowPosition })\n | null {\n if (!col) return null;\n return {\n columnDef: col.columnDef,\n filterable: col.filterable,\n sortable: col.sortable,\n sortArrowPosition: col.sortArrowPosition,\n ...col.headerCell,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class KlesTableIntl {\n readonly changes = new Subject<void>();\n\n emptyStateTitle = 'No data';\n emptyStateDescription = 'There are no rows to display.';\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport { KlesTableIntl } from '../table/table-intl';\n\n@Component({\n selector: 'kles-table-empty-state',\n standalone: true,\n imports: [MatIconModule],\n templateUrl: './empty-state.component.html',\n styleUrl: './empty-state.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KlesTableEmptyStateComponent {\n readonly intl = inject(KlesTableIntl);\n\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n this.intl.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","<section class=\"empty-state\" role=\"status\" aria-live=\"polite\">\n <div class=\"empty-state__panel\">\n <div class=\"empty-state__visual\" aria-hidden=\"true\">\n <div class=\"empty-state__table-icon\">\n <span class=\"empty-state__table-header\"></span>\n <span></span>\n <span></span>\n <span></span>\n </div>\n\n <div class=\"empty-state__badge\">\n <mat-icon>remove</mat-icon>\n </div>\n </div>\n\n <div class=\"empty-state__content\">\n <h2 class=\"empty-state__title\">\n {{ intl.emptyStateTitle }}\n </h2>\n\n <p class=\"empty-state__description\">\n {{ intl.emptyStateDescription }}\n </p>\n </div>\n </div>\n</section>\n","import { inject, Pipe, PipeTransform, Signal } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { KlesRowContext } from '../core/table/row-context.interface';\nimport { RowContextStore } from '../services/store/row-context-store.service';\n\n@Pipe({\n name: 'rowContext',\n standalone: true,\n pure: true,\n})\nexport class RowContextPipe implements PipeTransform {\n private readonly store = inject(RowContextStore);\n\n transform(row: AbstractControl | null | undefined): Signal<KlesRowContext | null> | null {\n return row ? this.store.get(row) : null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ITable } from './core/table/table.interface';\nimport { ScrollbarApi } from './core/api/scrollbar';\nimport { ColumnApi } from './core/api/column';\nimport { PaginationApi } from './core/api/pagination';\nimport { SortApi } from './core/api/sort';\nimport { LoadingApi } from './core/api/loading';\nimport { SelectionApi } from './core/api/selection';\nimport { FooterApi } from './core/api/footer';\nimport { ArrayUiState, GroupUiState } from '@3kles/kles-material-dynamicforms';\nimport { EventsApi } from './core/api/events';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class KlesTableConnectorService {\n private _connected$ = new BehaviorSubject<boolean>(false);\n private _table?: ITable;\n\n public readonly connected$: Observable<boolean> = this._connected$.asObservable();\n\n constructor() {}\n\n public connect(table: ITable) {\n this._table = table;\n this._connected$.next(true);\n return () => {\n if (this._table === table) {\n this._table = undefined;\n this._connected$.next(false);\n }\n };\n }\n\n public get table(): ITable {\n if (!this._table) {\n throw new Error('KlesTableConnectorService: table is not connected');\n }\n\n return this._table;\n }\n\n get scrollbar(): ScrollbarApi {\n return this.table.scrollbar;\n }\n\n get column(): ColumnApi {\n return this.table?.column;\n }\n\n get pagination(): PaginationApi | undefined {\n return this.table.pagination;\n }\n\n get sort(): SortApi {\n return this.table.sort;\n }\n\n get loading(): LoadingApi {\n return this.table.loading;\n }\n\n get selection(): SelectionApi {\n return this.table.selection;\n }\n\n get footer(): FooterApi {\n return this.table.footer;\n }\n\n get form() {\n return this.table.form;\n }\n\n get ui(): GroupUiState<{\n header: GroupUiState;\n rows: ArrayUiState;\n footer: GroupUiState;\n }> {\n return this.table.ui;\n }\n\n get events(): EventsApi {\n return this.table.events;\n }\n\n public refresh() {\n this.table?.refresh();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { Pagination } from '../../core/query/query.interface';\nimport { ITableStore } from './store';\nimport { PAGINATOR_CONFIG } from '../../token';\nimport { PaginatorConfig } from '../../core/table/config.interface';\n\n@Injectable()\nexport class PaginatorStore implements ITableStore {\n private s: BehaviorSubject<Pagination>;\n public page$: Observable<Pagination>;\n\n constructor(@Optional() @Inject(PAGINATOR_CONFIG) protected config: PaginatorConfig) {\n this.s = new BehaviorSubject<Pagination>({ page: 0, perPage: config?.pageSize ?? 10 });\n this.page$ = this.s.asObservable();\n }\n\n setPage(v: Pagination) {\n this.s.next(v);\n }\n\n snapshot() {\n return this.s.value;\n }\n\n reset(): void {\n this.s.next({ page: 0, perPage: this.config?.pageSize ?? 10 });\n }\n}\n","import { DestroyRef, EventEmitter, Inject, inject, Injectable, Optional, Signal, signal } from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { PaginatorStore } from '../../store/paginator-store.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DATASOURCE_SERVICE, PAGINATOR_CONFIG } from '../../../token';\nimport { IDatasourceService } from '../datasource/datasource.service';\nimport { PaginatorConfig } from '../../../core/table/config.interface';\nimport { EventsService } from '../events/events.service';\n\n@Injectable()\nexport class PaginatorService {\n private _paginator: MatPaginator | undefined;\n private _disabled = signal(false);\n private _pageChanged = new EventEmitter<PageEvent>();\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n @Optional() @Inject(PAGINATOR_CONFIG) private config: PaginatorConfig,\n @Optional() protected paginatorStore: PaginatorStore | null,\n @Inject(DATASOURCE_SERVICE) private datasourceService: IDatasourceService,\n private readonly eventsService: EventsService,\n ) {}\n\n public register(paginator: MatPaginator) {\n this._paginator = paginator;\n this.datasourceService.datasource.paginator = this._paginator;\n\n if (this._paginator) {\n this._paginator.pageIndex = this.paginatorStore?.snapshot().page ?? this._paginator.pageIndex;\n this._paginator.pageSize = this.paginatorStore?.snapshot().perPage ?? this._paginator.pageSize;\n this._paginator.pageSizeOptions = this.config?.pageSizeOptions ?? [5, 10, 20, 25, 50];\n this._paginator.selectConfig = this.config?.selectConfig ?? {};\n this._paginator.showFirstLastButtons = this.config?.showFirstLastButtons ?? true;\n\n this._paginator.page.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.paginatorStore?.setPage({ page: event.pageIndex, perPage: event.pageSize });\n this._pageChanged.next(event);\n\n this.eventsService.emit('pageChange', {\n pageIndex: event.pageIndex,\n previousPageIndex: event.previousPageIndex,\n pageSize: event.pageSize,\n totalItems: event.length,\n sourceEvent: event,\n });\n });\n }\n }\n\n public get paginator(): MatPaginator | undefined {\n return this._paginator;\n }\n\n public pageChanged(): EventEmitter<PageEvent> {\n return this._pageChanged;\n }\n\n public setPageIndex(index: number): void {\n if (!this._paginator) {\n return;\n }\n\n this.setSizeIndex(this._paginator.pageSize, index);\n }\n\n public setPageSize(size: number): void {\n if (!this._paginator) {\n return;\n }\n this.setSizeIndex(size, 0);\n }\n\n public setPageSizeOptions(option: number[]): void {\n if (this._paginator) {\n this._paginator.pageSizeOptions = option;\n }\n }\n\n public setlength(length: number) {\n if (this._paginator) {\n this._paginator.length = length;\n }\n }\n\n public firstPage(): void {\n this._paginator?.firstPage();\n }\n\n public lastPage(): void {\n this._paginator?.lastPage();\n }\n\n public disabled(): Signal<boolean> {\n return this._disabled.asReadonly();\n }\n\n public disable(): void {\n this._disabled.set(true);\n }\n\n public enable(): void {\n this._disabled.set(false);\n }\n\n private setSizeIndex(size: number, index: number): void {\n if (this._paginator) {\n const prev = this._paginator.pageIndex;\n this._paginator.pageSize = size;\n this._paginator.pageIndex = index;\n this._paginator.page.emit({\n pageIndex: this._paginator.pageIndex,\n pageSize: this._paginator.pageSize,\n length: this._paginator.length,\n previousPageIndex: prev,\n });\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ScrollbarService {\n private element: HTMLElement | undefined;\n private default: ScrollBehavior = 'smooth';\n private readonly hiddenClass = 'scrollbar-hidden';\n\n register(el: HTMLElement) {\n this.element = el;\n }\n\n unregister() {\n this.element = undefined;\n }\n\n setScrollbarVisible(visible: boolean) {\n this.element?.classList.toggle(this.hiddenClass, !visible);\n }\n\n hideScrollbar() {\n this.setScrollbarVisible(false);\n }\n\n showScrollbar() {\n this.setScrollbarVisible(true);\n }\n\n toTop(sb?: ScrollBehavior) {\n this.element?.scrollTo({ top: 0, behavior: sb ?? this.default });\n }\n\n toBottom(sb?: ScrollBehavior) {\n const top = this.element?.scrollHeight;\n this.element?.scrollTo({ top, behavior: sb ?? this.default });\n }\n\n toLeft(sb?: ScrollBehavior) {\n this.element?.scrollTo({ left: 0, behavior: sb ?? this.default });\n }\n\n toRight(sb?: ScrollBehavior) {\n const left = this.element?.scrollWidth;\n this.element?.scrollTo({ left, behavior: sb ?? this.default });\n }\n\n to(top: number, left: number, sb?: ScrollBehavior) {\n this.element?.scrollTo({ top, left, behavior: sb ?? this.default });\n }\n\n getTop() {\n return this.element?.scrollTop;\n }\n}\n","import { Inject, Injectable, Signal, WritableSignal } from '@angular/core';\nimport { FOOTER } from '../../../token';\n\n@Injectable()\nexport class FooterService {\n constructor(@Inject(FOOTER) private _footer: WritableSignal<boolean>) {}\n\n public get footer(): Signal<boolean> {\n return this._footer.asReadonly();\n }\n\n public show() {\n this._footer.set(true);\n }\n\n public hide() {\n this._footer.set(false);\n }\n}\n","import { computed, Inject, Injectable, Signal, WritableSignal } from '@angular/core';\nimport { EXTRA_ROWS } from '../../../token';\nimport { ExtraRowConfig } from '../../../core/table/config.interface';\nimport { KlesExtraCellFieldConfig } from '../../../core/table/cell.interface';\nimport { FormGroup } from '@angular/forms';\nimport { ExpandedRowStore } from '../../store/expanded-row-store.service';\n\n@Injectable()\nexport class ExtraRowService {\n // public displayedExtraColumns: Signal<string[]>;\n public multiTemplateDataRows: Signal<boolean>;\n public rows: Signal<(ExtraRowConfig & { displayedColumns: string[] })[]>;\n\n constructor(\n @Inject(EXTRA_ROWS) private _extraRowsConfig: WritableSignal<ExtraRowConfig[]>,\n private expandedRowStore: ExpandedRowStore,\n ) {\n this.multiTemplateDataRows = computed(() => this._extraRowsConfig().length > 0);\n this.rows = computed(() =>\n this._extraRowsConfig().map((config) => ({\n ...config,\n when: this.createWhen(config),\n displayedColumns: config.cells.map((cel) => cel.columnDef),\n })),\n );\n }\n\n public extraColumns(): KlesExtraCellFieldConfig[] {\n return this._extraRowsConfig()\n .flatMap((config) => config.cells)\n .filter(Boolean);\n }\n\n private createWhen(config: ExtraRowConfig): ((index: number, row: FormGroup<any>) => boolean) | undefined {\n if (config.mode === 'expand') {\n return (_, row) => {\n return this.expandedRowStore.isExpanded(row.value._id);\n };\n } else {\n return config?.when;\n }\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\n\n@Injectable()\nexport class RenderService {\n private _render = new EventEmitter<void>();\n\n public render(): EventEmitter<void> {\n return this._render;\n }\n\n public forceRenderRows() {\n this._render.emit();\n }\n}\n","import { MatTableDataSource } from '@angular/material/table';\nimport { IKlesDataSource } from '../../../core/datasource/datasource.interface';\nimport { FormGroup } from '@angular/forms';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort } from '@angular/material/sort';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport class KlesDataSource extends MatTableDataSource<FormGroup, MatPaginator> implements IKlesDataSource {\n constructor() {\n super([]);\n }\n}\n\nexport class KlesLazyDataSource implements IKlesDataSource {\n private _paginator: MatPaginator | undefined;\n private _sort: MatSort | undefined;\n private _rows$ = new BehaviorSubject<FormGroup[]>([]);\n private _filter: string | undefined = undefined;\n\n get sort(): MatSort | undefined {\n return this._sort;\n }\n\n set sort(sort: MatSort) {\n this._sort = sort;\n }\n\n get paginator(): MatPaginator | undefined {\n return this._paginator;\n }\n\n set paginator(paginator: MatPaginator) {\n this._paginator = paginator;\n }\n\n set data(data: any[]) {\n this._rows$.next(data);\n }\n\n get filter(): string | undefined{\n return this._filter;\n }\n set filter(f: string) {\n this._filter = f;\n }\n\n connect(): Observable<FormGroup[]> {\n return this._rows$;\n }\n\n disconnect(): void {\n this._rows$.complete();\n }\n}\n","import { DestroyRef, inject, Injectable } from '@angular/core';\nimport { EventsService } from '../events/events.service';\nimport { Subscription } from 'rxjs';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Injectable()\nexport class CellValueChangeService {\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly subscriptions = new Map<string, Subscription>();\n\n constructor(private readonly eventsService: EventsService) {}\n\n public listen(visibleRows: FormGroup[], visibleColumns: string[]): void {\n const expectedKeys = new Set<string>();\n visibleRows.forEach((row, rowIndex) => {\n visibleColumns.forEach((column) => {\n const columnKey = column;\n const control = row.get(columnKey);\n\n if (!control) {\n return;\n }\n\n const key = this.getCellKey(row, columnKey);\n expectedKeys.add(key);\n\n if (this.subscriptions.has(key)) {\n return;\n }\n\n const subscription = this.subscribeToCell(row, rowIndex, columnKey, control);\n\n this.subscriptions.set(key, subscription);\n });\n });\n\n this.unsubscribeInvisibleCells(expectedKeys);\n }\n\n private getCellKey(row: FormGroup, columnDef: string): string {\n return `${row.get('_id')?.value}:${columnDef}`;\n }\n\n private subscribeToCell(row: FormGroup, rowIndex: number, columnDef: string, control: AbstractControl): Subscription {\n let previousValue = control.value;\n\n return control.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((currentValue) => {\n this.eventsService.emit('cellValueChange', {\n row,\n rowIndex,\n columnDef,\n control,\n previousValue,\n currentValue,\n value: row.value,\n rawValue: row.getRawValue(),\n });\n\n previousValue = currentValue;\n });\n }\n\n private unsubscribeInvisibleCells(expectedKeys: Set<string>): void {\n for (const [key, subscription] of this.subscriptions.entries()) {\n if (!expectedKeys.has(key)) {\n subscription.unsubscribe();\n this.subscriptions.delete(key);\n }\n }\n }\n}\n","import { DestroyRef, inject, Injectable } from '@angular/core';\nimport { filter, Subscription } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EventsService } from '../events/events.service';\nimport { AbstractControl, FormGroup } from '@angular/forms';\n\n@Injectable()\nexport class ValidationService {\n private readonly destroyRef = inject(DestroyRef);\n private readonly columnSubscriptions = new Map<string, Subscription>();\n private readonly rowSubscriptions = new Map<string, Subscription>();\n\n constructor(private readonly eventsService: EventsService) {}\n\n public listen(visibleRows: FormGroup[], visibleColumns: string[]): void {\n const expectedColumnKeys = new Set<string>();\n const expectedRowKeys = new Set<string>();\n visibleRows.forEach((row, rowIndex) => {\n const rowSubscription = this.subscribeToRow(row, rowIndex);\n const key = this.getRowKey(row);\n expectedRowKeys.add(key);\n this.rowSubscriptions.set(key, rowSubscription);\n\n visibleColumns.forEach((column) => {\n const columnKey = column;\n const control = row.get(columnKey);\n\n if (!control) {\n return;\n }\n\n const key = this.getCellKey(row, columnKey);\n expectedColumnKeys.add(key);\n\n if (this.columnSubscriptions.has(key)) {\n return;\n }\n\n const subscription = this.subscribeToCell(row, rowIndex, columnKey, control);\n\n this.columnSubscriptions.set(key, subscription);\n });\n });\n\n this.unsubscribe(expectedRowKeys, expectedColumnKeys);\n }\n\n private getCellKey(row: FormGroup, columnDef: string): string {\n return `${this.getRowKey(row)}:${columnDef}`;\n }\n\n private getRowKey(row: FormGroup): string {\n return `${row.get('_id')?.value}`;\n }\n\n private subscribeToCell(row: FormGroup, rowIndex: number, columnDef: string, control: AbstractControl): Subscription {\n return control.statusChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((status) => status === 'INVALID'),\n )\n .subscribe(() => {\n this.eventsService.emit('cellValidationError', {\n row,\n rowIndex,\n rawValue: row.getRawValue(),\n value: row.value,\n errors: control.errors,\n controlsErrors: { columnDef: control.errors },\n });\n });\n }\n\n private subscribeToRow(row: FormGroup, rowIndex: number): Subscription {\n return row.statusChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((status) => status === 'INVALID'),\n )\n .subscribe(() => {\n this.eventsService.emit('rowValidationError', {\n row,\n rowIndex,\n rawValue: row.getRawValue(),\n value: row.value,\n errors: row.errors,\n controlsErrors: Object.keys(row.controls)\n .filter((key) => row.get(key)?.errors)\n .map((key) => ({ [key]: row.get(key)?.errors }))\n .reduce((a, b) => ({ ...a, ...b })),\n });\n });\n }\n\n private unsubscribe(expectedRowKeys: Set<string>, expectedColumnKeys: Set<string>): void {\n for (const [key, subscription] of this.columnSubscriptions.entries()) {\n if (!expectedColumnKeys.has(key)) {\n subscription.unsubscribe();\n this.columnSubscriptions.delete(key);\n }\n }\n\n for (const [key, subscription] of this.rowSubscriptions.entries()) {\n if (!expectedRowKeys.has(key)) {\n subscription.unsubscribe();\n this.rowSubscriptions.delete(key);\n }\n }\n }\n}\n","import { DestroyRef, inject, Injectable, signal, Signal } from '@angular/core';\nimport { KlesDataSource, KlesLazyDataSource } from '../table/datasource';\nimport { IKlesDataSource } from '../../../core/datasource/datasource.interface';\nimport { KlesForm } from '../table/form';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { startWith } from 'rxjs';\nimport { ColumnsService } from '../columns/columns.service';\nimport { CellValueChangeService } from '../cell/cell-valuechange.service';\nimport { ValidationService } from '../validation/validation.service';\n\nexport interface IDatasourceService {\n get datasource(): IKlesDataSource;\n readonly isEmpty: Signal<boolean>;\n register(): void;\n}\n\n//TODO Abstract Datasource service\n\n@Injectable()\nexport class DatasourceService implements IDatasourceService {\n private _datasource!: KlesDataSource;\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly _isEmpty = signal(true);\n readonly isEmpty = this._isEmpty.asReadonly();\n\n constructor(\n private fm: KlesForm,\n private columnsService: ColumnsService,\n private cellValueChangeService: CellValueChangeService,\n private validationService: ValidationService,\n ) {}\n\n public register() {\n this.createDataSource();\n this.listen();\n }\n\n get datasource(): KlesDataSource {\n return this._datasource;\n }\n\n private createDataSource() {\n this._datasource = new KlesDataSource();\n }\n\n private listen() {\n this.fm.rowsStructureChanged$.pipe(takeUntilDestroyed(this.destroyRef), startWith(void 0)).subscribe(() => {\n this._datasource.data = this.fm.rows;\n });\n\n this.datasource\n .connect()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((rows) => {\n this._isEmpty.set(rows.length === 0);\n this.cellValueChangeService.listen(rows, this.columnsService.getVisible());\n this.validationService.listen(rows, this.columnsService.getVisible());\n });\n }\n}\n\n@Injectable()\nexport class DatasourceLazyService implements IDatasourceService {\n private _datasource!: KlesLazyDataSource;\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly _isEmpty = signal(true);\n readonly isEmpty = this._isEmpty.asReadonly();\n\n constructor(\n private fm: KlesForm,\n private columnsService: ColumnsService,\n private cellValueChangeService: CellValueChangeService,\n private validationService: ValidationService,\n ) {}\n\n public register() {\n this.createDataSource();\n this.listen();\n }\n\n get datasource(): KlesLazyDataSource {\n return this._datasource;\n }\n private createDataSource() {\n this._datasource = new KlesLazyDataSource();\n }\n\n private listen() {\n this.fm.rowsStructureChanged$.pipe(takeUntilDestroyed(this.destroyRef), startWith(void 0)).subscribe(() => {\n this._datasource.data = this.fm.rows;\n });\n\n this.datasource\n .connect()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((rows) => {\n this._isEmpty.set(rows.length === 0);\n this.cellValueChangeService.listen(rows, this.columnsService.getVisible());\n this.validationService.listen(rows, this.columnsService.getVisible());\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { KlesColumnConfig } from '../../../core/table/column.interface';\nimport * as _ from 'lodash';\nimport { ColumnsService } from '../columns/columns.service';\nimport { DatasourceService } from '../datasource/datasource.service';\nimport { DATASOURCE_SERVICE } from '../../../token';\n\n@Injectable()\nexport class FilterService {\n constructor(\n private columnsService: ColumnsService,\n @Inject(DATASOURCE_SERVICE) private datasourceService: DatasourceService,\n ) {}\n\n public register() {\n this.datasourceService.datasource.filterPredicate = this.createFilterPredicate();\n }\n\n public formatData(data: { [key: string]: any }): any {\n return data;\n }\n\n private createFilterPredicate() {\n return (data: FormGroup, filter: string): boolean => {\n let searchString = JSON.parse(filter);\n const filterableColumn = this.columnsService\n .columns()\n .filter((f) => f.filterable)\n .map((m) => m.columnDef);\n\n searchString = _.pick(searchString, filterableColumn);\n return Object.keys(searchString)\n .filter((f) => searchString[f] && filterableColumn.includes(f))\n .every((key) => {\n let keyValue = data?.controls[key]?.value;\n const column: KlesColumnConfig | undefined = this.columnsService.columns().find((col) => col.columnDef === key);\n\n if (column) {\n if (column.headerCell?.filterPredicate) {\n return column.headerCell.filterPredicate(keyValue, searchString[key]) || false;\n }\n\n if (keyValue != null && typeof keyValue === 'object' && column.cell?.field?.property) {\n keyValue = keyValue[column.cell.field.property];\n }\n if (searchString?.[key] && typeof searchString[key] === 'object') {\n if (Array.isArray(searchString[key])) {\n if (!searchString[key].length) {\n return true;\n }\n\n const list = (searchString[key] as Array<any>)\n .map((m) => {\n const subkey = column.headerCell?.field?.property ?? column.cell?.field?.property;\n if (subkey) {\n return m?.[subkey] ?? m;\n }\n return m;\n })\n .map((value) => {\n return typeof value === 'string' ? value?.trim().toLowerCase() : value;\n });\n\n return keyValue != undefined && list.includes(keyValue.toString().trim().toLowerCase());\n } else {\n const subKey = column.headerCell?.field?.property ?? column.cell?.field?.property;\n if (subKey) {\n searchString[key] = searchString[key][subKey];\n }\n }\n }\n }\n if (keyValue === null && searchString?.[key].length === 0) {\n return true;\n } else if (keyValue === null) {\n return false;\n } else if (searchString?.[key] === null) {\n return true;\n }\n return keyValue !== null && keyValue.toString().trim().toLowerCase().indexOf(searchString?.[key].toString().toLowerCase()) !== -1;\n });\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EventsService } from '../events/events.service';\nimport { FormGroup } from '@angular/forms';\n\n@Injectable()\nexport class RowService {\n constructor(private readonly eventsService: EventsService) {}\n\n onClick(event: MouseEvent, row: FormGroup, rowIndex: number): void {\n this.eventsService.emit('rowClick', {\n row,\n rowIndex,\n value: row.value,\n rawValue: row.getRawValue(),\n event,\n });\n }\n\n onDoubleClick(event: MouseEvent, row: FormGroup, rowIndex: number): void {\n this.eventsService.emit('rowDoubleClick', {\n row,\n rowIndex,\n value: row.value,\n rawValue: row.getRawValue(),\n event,\n });\n }\n\n onContextMenu(event: MouseEvent, row: FormGroup, rowIndex: number): void {\n event.preventDefault();\n event.stopPropagation();\n this.eventsService.emit('rowContextMenu', {\n row,\n rowIndex,\n value: row.value,\n rawValue: row.getRawValue(),\n event,\n });\n }\n\n onMouseEnter(event: MouseEvent, row: FormGroup, rowIndex: number): void {\n this.eventsService.emit('rowMouseEnter', {\n row,\n rowIndex,\n value: row.value,\n rawValue: row.getRawValue(),\n event,\n });\n }\n\n onMouseLeave(event: MouseEvent, row: FormGroup, rowIndex: number): void {\n this.eventsService.emit('rowMouseLeave', {\n row,\n rowIndex,\n value: row.value,\n rawValue: row.getRawValue(),\n event,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EventsService } from '../events/events.service';\nimport { AbstractControl, FormGroup } from '@angular/forms';\n\n@Injectable()\nexport class CellService {\n constructor(private readonly eventsService: EventsService) {}\n\n onClick(event: MouseEvent, row: FormGroup, rowIndex: number, columnDef: string): void {\n const control: AbstractControl | null = row.get(columnDef);\n\n this.eventsService.emit('cellClick', {\n row,\n rowIndex,\n value: control?.value,\n rawValue: row.getRawValue(),\n event,\n columnDef,\n control,\n });\n }\n\n onDoubleClick(event: MouseEvent, row: FormGroup, rowIndex: number, columnDef: string): void {\n const control: AbstractControl | null = row.get(columnDef);\n\n this.eventsService.emit('cellDoubleClick', {\n row,\n rowIndex,\n value: control?.value,\n rawValue: row.getRawValue(),\n event,\n columnDef,\n control,\n });\n }\n\n onContextMenu(event: MouseEvent, row: FormGroup, rowIndex: number, columnDef: string): void {\n event.preventDefault();\n event.stopPropagation();\n const control: AbstractControl | null = row.get(columnDef);\n\n this.eventsService.emit('cellContextMenu', {\n row,\n rowIndex,\n value: control?.value,\n rawValue: row.getRawValue(),\n event,\n columnDef,\n control,\n });\n }\n}\n","import { Inject, Injectable, signal, Type } from '@angular/core';\nimport { KlesTableEmptyStateComponent } from '../../../components/empty-state/empty-state.component';\nimport { EmptyStateConfig } from '../../../core/table/config.interface';\nimport { EMPTY_STATE_CONFIG } from '../../../token';\n\n@Injectable()\nexport class EmptyStateService {\n private readonly _enabled = signal(true);\n\n readonly enabled = this._enabled.asReadonly();\n readonly component: Type<unknown>;\n\n constructor(\n @Inject(EMPTY_STATE_CONFIG)\n config: boolean | EmptyStateConfig | undefined,\n ) {\n if (typeof config === 'boolean') {\n this._enabled.set(config);\n this.component = KlesTableEmptyStateComponent;\n return;\n }\n\n this._enabled.set(config?.enabled ?? true);\n\n this.component = config?.component ?? KlesTableEmptyStateComponent;\n }\n\n enable(): void {\n this._enabled.set(true);\n }\n\n disable(): void {\n this._enabled.set(false);\n }\n\n toggle(): void {\n this._enabled.update((enabled) => !enabled);\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { CdkDrag, CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { DragDropConfig } from '../../../core/table/config.interface';\nimport { PaginatorStore } from '../../store/paginator-store.service';\nimport { DRAG_DROP_CONFIG } from '../../../token';\nimport { FormArray, FormGroup } from '@angular/forms';\n\nexport abstract class DragDropBase {\n constructor(protected config?: DragDropConfig) {}\n\n get enable() {\n return this.config?.enable || false;\n }\n\n get autoScrollStep() {\n return this.config?.options?.autoScrollStep ?? true;\n }\n\n get connectedTo() {\n return this.config?.options?.connectedTo;\n }\n\n get sortPredicate(): (index: number, item: CdkDrag<number>) => boolean {\n return (index: number, item: CdkDrag<number>) => {\n return true;\n };\n }\n\n get previewComponent() {\n return this.config?.options?.dragPreview?.component;\n }\n\n get previewMatchSize() {\n return this.config?.options?.dragPreview?.matchSize || true;\n }\n\n abstract listDropped(event: CdkDragDrop<FormArray<FormGroup>>): void;\n}\n\n@Injectable()\nexport class DragDropService extends DragDropBase {\n constructor(\n @Optional() @Inject(DRAG_DROP_CONFIG) protected config?: DragDropConfig,\n @Optional() private paginatorStore?: PaginatorStore | null,\n ) {\n super(config);\n }\n\n listDropped(event: CdkDragDrop<FormArray<FormGroup>>) {\n if (event.previousContainer === event.container) {\n const faRows = event.container.data;\n\n const currentIndex = event.currentIndex + (this.paginatorStore?.snapshot().page ?? 0) * (this.paginatorStore?.snapshot().perPage ?? 0);\n const previousIndex = event.previousIndex + (this.paginatorStore?.snapshot().page ?? 0) * (this.paginatorStore?.snapshot().perPage ?? 0);\n\n if (previousIndex >= 0) {\n const ctrl = faRows.at(previousIndex);\n faRows.removeAt(previousIndex, { emitEvent: false });\n faRows.insert(currentIndex, ctrl, { emitEvent: false });\n faRows.updateValueAndValidity({ emitEvent: true });\n }\n } else {\n //TODO\n }\n }\n}\n\n@Injectable()\nexport class DragDropLazyService extends DragDropBase {\n constructor(@Optional() @Inject(DRAG_DROP_CONFIG) protected config?: DragDropConfig) {\n super(config);\n }\n\n listDropped(event: CdkDragDrop<FormArray<FormGroup>>) {\n \n // TODO appeler un observable + refresh tableau\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n DestroyRef,\n ElementRef,\n HostBinding,\n inject,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n Signal,\n ViewChild,\n} from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTable, MatTableModule } from '@angular/material/table';\n\nimport { ITable } from '../../core/table/table.interface';\n\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { ArrayUiState, GroupUiState, KlesMaterialDynamicformsModule } from '@3kles/kles-material-dynamicforms';\nimport { HeaderFieldPipe } from '../../pipes/header-field.pipe';\nimport { CellFieldPipe, ExtraCellFieldPipe } from '../../pipes/cell-field.pipe';\nimport { MatSort, MatSortModule } from '@angular/material/sort';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { DragDropService } from '../../services/features/dragdrop/dragdrop.service';\nimport { DATASOURCE_SERVICE, LOADER_SERVICE, ROW_DRAG_DROP, SELECTION_SERVICE, SORT_SERVICE, TABLE_SERVICE } from '../../token';\nimport { ResolveNgStylePipe } from '../../pipes/ng-style.pipe';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ResizableColumnDirective } from '../../directives/resizable-column.directive';\nimport { ScrollbarService } from '../../services/features/scrollbar/scrollbar.service';\n\nimport { ScrollbarApi } from '../../core/api/scrollbar';\nimport { KlesTableConnectorService } from '../../kles-table-connector.service';\nimport { ColumnApi } from '../../core/api/column';\nimport { ColumnsService } from '../../services/features/columns/columns.service';\nimport { PaginationApi } from '../../core/api/pagination';\nimport { SelectionApi } from '../../core/api/selection';\nimport { LoadingService } from '../../services/features/loading/loading.service';\nimport { PaginatorService } from '../../services/features/paginator/paginator.service';\nimport { SortApi } from '../../core/api/sort';\nimport { ISortService } from '../../services/features/sort/sort.service';\nimport { FilterService } from '../../services/features/filter/filter.service';\nimport { IDatasourceService } from '../../services/features/datasource/datasource.service';\nimport { IKlesDataSource } from '../../core/datasource/datasource.interface';\nimport { LoadingApi } from '../../core/api/loading';\nimport { ITableService } from '../../services/features/table/table.service';\nimport { ISelectionService } from '../../services/features/selection/selection.service';\nimport { FooterFieldPipe } from '../../pipes/footer-field.pipe';\nimport { ColumnSeparatorConfig, KlesColumnConfig } from '../../core/table/column.interface';\nimport { ILoader } from '../../services/features/loader/loader.interface';\nimport { FooterService } from '../../services/features/footer/footer.service';\nimport { FooterApi } from '../../core/api/footer';\nimport { UiFieldPipe } from '../../pipes/ui-field.pipe';\nimport { SpanPipe } from '../../pipes/span.pipe';\nimport { ExtraRowService } from '../../services/features/extra-row/extra-row.service';\nimport { ExtraRowConfig } from '../../core/table/config.interface';\n\nimport { RenderService } from '../../services/features/render/render.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ExpandedRowStore } from '../../services/store/expanded-row-store.service';\nimport { KlesCellComponent } from '../cell/cell.component';\nimport { KlesHeaderComponent } from '../header/header.component';\nimport { HeaderPipe } from '../../pipes/header.pipe';\nimport { FormApi } from '../../core/api/form';\nimport { RowFormFactory } from '../../services/features/table/row-factory.service';\nimport { EventsApi } from '../../core/api/events';\nimport { EventsService } from '../../services/features/events/events.service';\nimport { RowService } from '../../services/features/row/row.service';\nimport { CellService } from '../../services/features/cell/cell.service';\nimport { KlesTableEmptyStateComponent } from '../empty-state/empty-state.component';\nimport { EmptyStateService } from '../../services/features/empty-state/empty-state.service';\nimport { RowContextPipe } from '../../pipes/row-context.pipe';\n\ntype TableSection = 'header' | 'body' | 'footer';\n\n@Component({\n selector: 'kles-table',\n styleUrl: './table.component.scss',\n templateUrl: './table.component.html',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatSortModule,\n MatTableModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n CdkTableModule,\n KlesMaterialDynamicformsModule,\n HeaderFieldPipe,\n CellFieldPipe,\n UiFieldPipe,\n FooterFieldPipe,\n SpanPipe,\n ExtraCellFieldPipe,\n DragDropModule,\n ResolveNgStylePipe,\n MatProgressSpinnerModule,\n ResizableColumnDirective,\n MatIconModule,\n KlesCellComponent,\n KlesHeaderComponent,\n HeaderPipe,\n RowContextPipe\n ],\n})\nexport class TableComponent implements ITable, OnInit, AfterViewInit, OnDestroy {\n @ViewChild(MatTable) table!: MatTable<FormGroup>;\n @ViewChild(MatSort, { static: true }) matSort!: MatSort;\n @ViewChild('form', { static: true }) formElemRef!: ElementRef<HTMLElement>;\n\n headerHeightPx = 56;\n scrollHeightPx = 0;\n footerHeightPx = 0;\n\n dataSource: IKlesDataSource;\n columns: Signal<KlesColumnConfig[]>;\n displayedColumns: Signal<string[]> | undefined;\n showFooter: Signal<boolean>;\n\n multiTemplateDataRows: Signal<boolean>;\n extraRows: Signal<(ExtraRowConfig & { displayedColumns: string[] })[]>;\n\n readonly isEmpty: Signal<boolean>;\n\n private ro?: ResizeObserver;\n private readonly destroyRef = inject(DestroyRef);\n private rafId?: number;\n private _cleanup?: () => void;\n\n emptyStateComponent = KlesTableEmptyStateComponent;\n\n constructor(\n private readonly host: ElementRef<HTMLElement>,\n private readonly connectorService: KlesTableConnectorService,\n @Inject(LOADER_SERVICE) private readonly loader: ILoader<any>,\n @Inject(DATASOURCE_SERVICE) private readonly datasourceService: IDatasourceService,\n @Inject(TABLE_SERVICE) public readonly tableService: ITableService,\n @Inject(ROW_DRAG_DROP) public readonly dragDropRowService: DragDropService,\n @Inject(SELECTION_SERVICE) private readonly selectionService: ISelectionService,\n public readonly columnsService: ColumnsService,\n public readonly loadingService: LoadingService,\n private readonly paginatorService: PaginatorService,\n private readonly scrollbarService: ScrollbarService,\n private readonly footerService: FooterService,\n private readonly extraRowService: ExtraRowService,\n private readonly renderService: RenderService,\n @Inject(SORT_SERVICE) private readonly sortService: ISortService,\n @Optional() private readonly filterService: FilterService,\n private readonly expandedRowStore: ExpandedRowStore,\n private readonly rowFactory: RowFormFactory,\n private readonly eventsService: EventsService,\n public readonly rowService: RowService,\n public readonly cellService: CellService,\n public readonly emptyStateService: EmptyStateService,\n ) {\n this.columns = this.columnsService.columns;\n this.displayedColumns = this.columnsService.displayedColumns;\n this.showFooter = this.footerService.footer;\n this.dataSource = this.datasourceService.datasource;\n this.isEmpty = this.datasourceService.isEmpty;\n this.multiTemplateDataRows = this.extraRowService.multiTemplateDataRows;\n this.extraRows = this.extraRowService.rows;\n\n this.connectorService.connect(this);\n this.filterService?.register();\n }\n\n @HostBinding('class.loading')\n get isLoadingClass() {\n return this.loadingService.loading();\n }\n\n @HostBinding('class.empty')\n get isEmptyClass() {\n return this.isEmpty() && this.emptyStateService.enabled();\n }\n\n get events(): EventsApi {\n return {\n listen: () => this.eventsService.events$,\n };\n }\n\n get form(): FormApi {\n return {\n header: {\n clear: (value, options) => this.tableService.klesForm.getHeader().reset(value, options),\n get: () => this.tableService.klesForm.getHeader(),\n setValue: (value, options) => this.tableService.klesForm.getHeader().setValue(value, options),\n patchValue: (value, options) => this.tableService.klesForm.getHeader().patchValue(value, options),\n },\n footer: {\n clear: (value, options) => this.tableService.klesForm.getFooter().reset(value, options),\n get: () => this.tableService.klesForm.getFooter(),\n setValue: (value, options) => this.tableService.klesForm.getFooter().setValue(value, options),\n patchValue: (value, options) => this.tableService.klesForm.getFooter().patchValue(value, options),\n },\n rows: {\n list: () => this.tableService.klesForm.getRows(),\n get: (_id) => this.tableService.klesForm.getRows().controls.find((row) => row.value._id === _id),\n create: (value, index, options) => {\n return this.tableService.klesForm.insertRow(\n this.rowFactory.createRow(\n this.columnsService\n .columns()\n .map((col) => ({ ...col.cell?.field, name: col.columnDef }))\n .concat(this.extraRowService.extraColumns().map((col) => ({ ...col, name: col.columnDef }))),\n value,\n ),\n index,\n options,\n ).formGroup;\n },\n patch: (_id, value, options) => {\n return this.tableService.klesForm.updateRow(_id, value, options);\n },\n remove: (_id, options) => {\n this.tableService.klesForm.deleteRowById(_id, options);\n },\n reset: (_id, value, options) => {\n this.tableService.klesForm.resetRow(_id, value, options);\n },\n },\n };\n }\n\n get scrollbar(): ScrollbarApi {\n return {\n getTop: () => this.scrollbarService.getTop(),\n to: (top, left, sb) => this.scrollbarService.to(top, left, sb),\n toTop: (sb) => this.scrollbarService.toTop(sb),\n toLeft: (sb) => this.scrollbarService.toLeft(sb),\n toBottom: (sb) => this.scrollbarService.toBottom(sb),\n toRight: (sb) => this.scrollbarService.toRight(sb),\n };\n }\n\n get column(): ColumnApi {\n return {\n setVisible: (columnDef, visible) => this.columnsService.setVisible(columnDef, visible),\n toggleVisible: (columnDef) => this.columnsService.toggleVisible(columnDef),\n changeWidth: (columnDef, options) => this.columnsService.changeWidth(columnDef, options),\n setResizable: (columnDef, resizable) => this.columnsService.setResizable(columnDef, resizable),\n toggleResizable: (columnDef) => this.columnsService.toggleResizable(columnDef),\n setSticky: (columnDef, options) => this.columnsService.setSticky(columnDef, options),\n columns: () => this.columnsService.columns(),\n setColumnPosition: (columnDef, position) => this.columnsService.setColumnPosition(columnDef, position),\n };\n }\n\n get pagination(): PaginationApi {\n return {\n setPageIndex: (index) => this.paginatorService.setPageIndex(index),\n setPageSize: (size) => this.paginatorService.setPageSize(size),\n firstPage: () => this.paginatorService.firstPage(),\n lastPage: () => this.paginatorService.lastPage(),\n enable: () => this.paginatorService.enable(),\n disable: () => this.paginatorService.disable(),\n setPageSizeOptions: (option) => this.paginatorService.setPageSizeOptions(option),\n page: this.paginatorService.pageChanged(),\n };\n }\n\n get selection(): SelectionApi {\n return {\n disable: () => this.selectionService.disable(),\n enable: () => this.selectionService.enable(),\n count: this.selectionService.count(),\n selectionModel: this.selectionService.selectionModel,\n // changed: () => {},\n // isEmpty: () => {},\n // isMultipleSelection: () => {},\n // selected: () => {},\n };\n }\n\n get sort(): SortApi {\n return {\n setActive: (active) => this.sortService.setActive(active),\n setDirection: (direction) => this.sortService.setDirection(direction),\n sortChange: () => this.sortService.sortChange(),\n };\n }\n\n get loading(): LoadingApi {\n return {\n start: () => this.loadingService.start(),\n stop: () => this.loadingService.stop(),\n };\n }\n\n get footer(): FooterApi {\n return {\n hide: () => this.footerService.hide(),\n show: () => this.footerService.show(),\n };\n }\n\n get ui(): GroupUiState<{\n header: GroupUiState;\n rows: ArrayUiState;\n footer: GroupUiState;\n }> {\n return this.tableService.ui;\n }\n\n refresh() {\n this.loader.refresh();\n }\n\n ngOnInit(): void {\n this.sortService.register(this.matSort);\n const el = this.formElemRef.nativeElement;\n this.scrollbarService.register(el);\n\n this.renderService\n .render()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.table?.renderRows();\n });\n\n this.expandedRowStore.expandedIds$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.table?.renderRows();\n });\n }\n\n ngAfterViewInit(): void {\n this.calculHeaderHeight();\n }\n\n ngOnDestroy(): void {\n this._cleanup?.();\n this.scrollbarService.unregister();\n }\n\n submit() {\n // TODO\n }\n\n getColumnSeparator(column: KlesColumnConfig, section: TableSection): string | null {\n const separatorConfig = column.separator;\n\n if (separatorConfig === false || separatorConfig === undefined) {\n return null;\n }\n\n const config: ColumnSeparatorConfig = separatorConfig === true ? {} : separatorConfig;\n\n if (config[section] === false) {\n return null;\n }\n\n const displayedColumns = this.displayedColumns?.() ?? [];\n\n const currentIndex = displayedColumns.indexOf(column.columnDef);\n\n const nextColumnDef = displayedColumns[currentIndex + 1];\n\n const nextColumn = this.columns().find((current) => current.columnDef === nextColumnDef);\n\n const isLastColumn = currentIndex === displayedColumns.length - 1;\n\n if (column.stickyEnd === true && !(isLastColumn && config.showAfterLastColumn === true)) {\n return null;\n }\n\n if (nextColumn?.stickyEnd === true) {\n return null;\n }\n\n if (isLastColumn && config.showAfterLastColumn !== true) {\n return null;\n }\n\n return this.getSeparatorStyle(column, section);\n }\n\n getStickyStartSeparator(column: KlesColumnConfig, section: TableSection): string | null {\n const isBoundary = this.columnsService.stickyStartBoundary() === column.columnDef;\n\n if (!isBoundary) {\n return null;\n }\n return this.getColumnSeparator(column, section);\n }\n\n // getStickyEndSeparator(column: KlesColumnConfig, section: TableSection): string | null {\n // const isBoundary = this.columnsService.stickyEndBoundary() === column.columnDef;\n\n // if (!isBoundary) {\n // return null;\n // }\n\n // return this.getSeparatorStyle(column, section);\n // }\n\n getStickyEndSeparator(column: KlesColumnConfig, section: TableSection): string | null {\n if (column.stickyEnd !== true) {\n return null;\n }\n\n return this.getSeparatorStyle(column, section);\n }\n\n private getSeparatorStyle(column: KlesColumnConfig, section: TableSection): string | null {\n const separatorConfig = column.separator;\n\n if (separatorConfig === false || separatorConfig === undefined) {\n return null;\n }\n\n const config: ColumnSeparatorConfig = separatorConfig === true ? {} : separatorConfig;\n\n if (config[section] === false) {\n return null;\n }\n\n const width = config.width ?? '1px';\n const style = config.style ?? 'solid';\n const color = config.color ?? 'var(--kles-table-divider-color)';\n\n return `${width} ${style} ${color}`;\n }\n\n private calculHeaderHeight() {\n const formNativeElem = this.formElemRef?.nativeElement as HTMLElement | null;\n const header = this.host.nativeElement.querySelector('.mat-mdc-header-row') as HTMLElement | null;\n const footer = this.host.nativeElement.querySelector('.mat-mdc-footer-row') as HTMLElement | null;\n\n const compute = () => {\n this.scrollHeightPx = Math.max(0, (formNativeElem?.offsetHeight ?? 0) - (formNativeElem?.clientHeight ?? 0));\n this.headerHeightPx = Math.ceil(header?.getBoundingClientRect().height ?? 0);\n this.footerHeightPx = Math.max(0, footer?.getBoundingClientRect().height ?? 0);\n };\n\n const scheduleCompute = () => {\n if (this.rafId) {\n cancelAnimationFrame(this.rafId);\n }\n this.rafId = requestAnimationFrame(() => {\n compute();\n this.rafId = requestAnimationFrame(compute);\n });\n };\n\n scheduleCompute();\n\n this.ro = new ResizeObserver(scheduleCompute);\n if (formNativeElem) {\n this.ro.observe(formNativeElem);\n }\n\n if (header) {\n this.ro.observe(header);\n }\n\n if (footer) {\n this.ro.observe(footer);\n }\n\n if (formNativeElem) {\n formNativeElem.addEventListener('scroll', scheduleCompute, { passive: true });\n window.addEventListener('resize', scheduleCompute, { passive: true });\n\n this._cleanup = () => {\n formNativeElem.removeEventListener('scroll', scheduleCompute);\n window.removeEventListener('resize', scheduleCompute);\n this.ro?.disconnect();\n if (this.rafId) {\n cancelAnimationFrame(this.rafId);\n }\n };\n }\n }\n}\n","<form #form [formGroup]=\"tableService.form\" (ngSubmit)=\"submit()\">\n <!-- [fixedLayout]=\"true\" -->\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n [trackBy]=\"multiTemplateDataRows() ? null : tableService.trackBy\"\n formArrayName=\"rows\"\n cdkDropList\n [cdkDropListData]=\"tableService.form.controls.rows\"\n (cdkDropListDropped)=\"dragDropRowService.listDropped($event)\"\n [cdkDropListDisabled]=\"!dragDropRowService.enable\"\n [cdkDropListAutoScrollStep]=\"dragDropRowService.autoScrollStep\"\n [cdkDropListSortPredicate]=\"dragDropRowService.sortPredicate\"\n [cdkDropListConnectedTo]=\"dragDropRowService.connectedTo\"\n [multiTemplateDataRows]=\"multiTemplateDataRows()\"\n >\n <colgroup>\n @for (column of columns(); track column.columnDef) {\n <col [style.width]=\"column.width ?? null\" [style.minWidth]=\"column.minWidth ?? null\" [style.maxWidth]=\"column.maxWidth ?? null\" />\n }\n </colgroup>\n\n @for (column of columns(); track column.columnDef) {\n <ng-container [cdkColumnDef]=\"column.columnDef\" [sticky]=\"column.sticky ?? false\" [stickyEnd]=\"column.stickyEnd ?? false\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [appResizableColumn]=\"column\"\n [style.border-inline-end]=\"getColumnSeparator(column, 'header') ?? getStickyStartSeparator(column, 'header')\"\n [style.border-inline-start]=\"getStickyEndSeparator(column, 'header')\"\n [ngStyle]=\"\n column.headerCell?.style?.ngStyle\n | resolveNgStyle\n : tableService.form.get(['header', column.columnDef])?.value\n : tableService.form.get(['header', column.columnDef])?.status\n : tableService.form.controls.header.value\n : tableService.form.controls.header.status\n \"\n >\n <div class=\"cell\">\n <kles-header [header]=\"column | header\" [group]=\"tableService.form.controls.header\">\n <ng-container\n klesDynamicField\n [field]=\"column | headerField\"\n [group]=\"tableService.form.controls.header\"\n [ui]=\"tableService.ui.states.header\"\n ></ng-container>\n </kles-header>\n </div>\n </th>\n\n <td\n mat-cell\n *cdkCellDef=\"let row; let index = index; let dataIndex = dataIndex\"\n [style.border-inline-end]=\"getColumnSeparator(column, 'body') ?? getStickyStartSeparator(column, 'body')\"\n [style.border-inline-start]=\"getStickyEndSeparator(column, 'body')\"\n [ngStyle]=\"\n column.cell?.style?.ngStyle\n | resolveNgStyle: row.controls[column.columnDef].value : row.controls[column.columnDef].status : row.value : row.status\n \"\n (click)=\"cellService.onClick($event, row, dataIndex ?? index, column.columnDef)\"\n (dblclick)=\"cellService.onDoubleClick($event, row, dataIndex ?? index, column.columnDef)\"\n (contextmenu)=\"cellService.onContextMenu($event, row, dataIndex ?? index, column.columnDef)\"\n >\n <div class=\"cell\" [style.--align]=\"column.align\">\n <kles-cell [group]=\"row\" [ui]=\"row | uiField\" [column]=\"column\">\n <ng-container klesDynamicField [field]=\"column | cellField\" [group]=\"row\" [ui]=\"row | uiField\" [context]=\"row | rowContext\"></ng-container>\n </kles-cell>\n </div>\n </td>\n\n <td\n mat-footer-cell\n *matFooterCellDef\n [style.border-inline-end]=\"getColumnSeparator(column, 'footer') ?? getStickyStartSeparator(column, 'footer')\"\n [style.border-inline-start]=\"getStickyEndSeparator(column, 'footer')\"\n [ngStyle]=\"\n column.footerCell?.style?.ngStyle\n | resolveNgStyle\n : tableService.form.get(['footer', column.columnDef])?.value\n : tableService.form.get(['footer', column.columnDef])?.status\n : tableService.form.controls.footer.value\n : tableService.form.controls.footer.status\n \"\n >\n @if (column.footerCell) {\n <ng-container\n klesDynamicField\n [field]=\"column | footerField\"\n [group]=\"tableService.form.controls.footer\"\n [ui]=\"tableService.ui.states.footer\"\n >\n </ng-container>\n }\n </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns(); sticky: true\"></tr>\n\n <tr\n mat-row\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns()\"\n cdkDrag\n [cdkDragData]=\"row\"\n (click)=\"rowService.onClick($event, row, dataIndex ?? index)\"\n (dblclick)=\"rowService.onDoubleClick($event, row, dataIndex ?? index)\"\n (contextmenu)=\"rowService.onContextMenu($event, row, dataIndex ?? index)\"\n (mouseenter)=\"rowService.onMouseEnter($event, row, dataIndex ?? index)\"\n (mouseleave)=\"rowService.onMouseLeave($event, row, dataIndex ?? index)\"\n ></tr>\n\n @if (multiTemplateDataRows()) {\n @for (extraRow of extraRows(); track extraRow) {\n @for (extraColumn of extraRow.cells; track extraColumn.columnDef) {\n <ng-container [cdkColumnDef]=\"extraColumn.columnDef\">\n <td\n mat-cell\n *cdkCellDef=\"let row\"\n [attr.colspan]=\"extraColumn.colspan | spanPipe: displayedColumns().length\"\n [attr.rowspan]=\"extraColumn.rowspan\"\n [ngStyle]=\"\n extraColumn?.style?.ngStyle\n | resolveNgStyle\n : row.controls[extraColumn.columnDef].value\n : row.controls[extraColumn.columnDef].status\n : row.value\n : row.status\n \"\n >\n <ng-container klesDynamicField [field]=\"extraColumn | extraCellField\" [group]=\"row\" [ui]=\"row | uiField\" [context]=\"row | rowContext\"></ng-container>\n </td>\n </ng-container>\n }\n <tr\n mat-row\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: extraRow.displayedColumns; when: extraRow.when\"\n (click)=\"rowService.onClick($event, row, dataIndex ?? index)\"\n (dblclick)=\"rowService.onDoubleClick($event, row, dataIndex ?? index)\"\n (contextmenu)=\"rowService.onContextMenu($event, row, dataIndex ?? index)\"\n (mouseenter)=\"rowService.onMouseEnter($event, row, dataIndex ?? index)\"\n (mouseleave)=\"rowService.onMouseLeave($event, row, dataIndex ?? index)\"\n ></tr>\n }\n }\n\n <tr mat-footer-row *matFooterRowDef=\"displayedColumns(); sticky: true\" [style.display]=\"showFooter() ? '' : 'none'\"></tr>\n </table>\n</form>\n\n@if (loadingService.loading()) {\n <div class=\"table-overlay\" [style.--header-h.px]=\"headerHeightPx\" [style.--scroll-h.px]=\"scrollHeightPx\" [style.--footer-h.px]=\"footerHeightPx\">\n <mat-spinner></mat-spinner>\n </div>\n}\n\n@if (emptyStateService.enabled() && !loadingService.loading() && isEmpty()) {\n <div\n class=\"table-empty-state-overlay\"\n [style.--header-h.px]=\"headerHeightPx\"\n [style.--scroll-h.px]=\"scrollHeightPx\"\n [style.--footer-h.px]=\"footerHeightPx\"\n >\n <div class=\"table-empty-state-content\">\n <ng-container *ngComponentOutlet=\"emptyStateService.component\"></ng-container>\n </div>\n </div>\n}\n","export interface Destroyable {\n destroy();\n}\n\nexport function isDestroyable(value: unknown): value is Destroyable {\n return value !== null && typeof value === 'object' &&\n typeof (value as Destroyable).destroy === 'function';\n}","import { CommonModule } from '@angular/common';\nimport { Component, OnInit, Signal, ViewChild } from '@angular/core';\nimport { TableComponent } from '../table/table.component';\nimport { MatPaginator, MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { PaginatorService } from '../../services/features/paginator/paginator.service';\n\n@Component({\n selector: 'kles-paginate-table',\n templateUrl: './paginate-table.component.html',\n styleUrl: './paginate-table.component.scss',\n standalone: true,\n imports: [CommonModule, TableComponent, MatPaginatorModule],\n})\nexport class PaginateTableComponent implements OnInit {\n @ViewChild(MatPaginator, { static: true }) private paginator: MatPaginator;\n @ViewChild(TableComponent, { static: true }) table: TableComponent;\n\n disabled: Signal<boolean>;\n\n constructor(private paginatorService: PaginatorService) {\n this.disabled = paginatorService.disabled();\n }\n\n ngOnInit(): void {\n this.paginatorService.register(this.paginator);\n }\n}\n","<kles-table></kles-table>\n<mat-paginator [disabled]=\"disabled()\" class=\"paginator\"></mat-paginator>\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Sort } from '@angular/material/sort';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ITableStore } from './store';\nimport { SORT_CONFIG } from '../../token';\n\n@Injectable()\nexport class SortStore implements ITableStore {\n private s: BehaviorSubject<Sort | undefined>;\n sort$: Observable<Sort>;\n\n constructor(@Optional() @Inject(SORT_CONFIG) protected config: Sort) {\n this.s = new BehaviorSubject<Sort | undefined>(config || undefined);\n this.sort$ = this.s.asObservable();\n }\n\n setSort(v?: Sort) {\n this.s.next(v);\n }\n\n snapshot() {\n return this.s.value;\n }\n\n reset(): void {\n this.s.next(this.config || undefined);\n }\n}\n","import { DestroyRef, EventEmitter, Inject, inject, Injectable, Optional } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { MatSort, Sort, SortDirection } from '@angular/material/sort';\nimport { SortStore } from '../../store/sort-store.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DatasourceLazyService, DatasourceService } from '../datasource/datasource.service';\nimport { DATASOURCE_SERVICE } from '../../../token';\nimport { ColumnsService } from '../columns/columns.service';\nimport { KlesColumnConfig } from '../../../core/table/column.interface';\nimport { EventsService } from '../events/events.service';\n\nexport interface ISortService {\n sort: MatSort;\n register(s: MatSort): void;\n setDirection(direction: SortDirection): void;\n setActive(active: string): void;\n sortChange(): EventEmitter<Sort>;\n}\n\n@Injectable()\nexport abstract class AbstractSortService implements ISortService {\n protected _sort!: MatSort;\n protected _sortChange = new EventEmitter<Sort>();\n protected readonly destroyRef = inject(DestroyRef);\n\n constructor(protected readonly eventsService: EventsService) {}\n\n public get sort(): MatSort {\n return this._sort;\n }\n\n public register(s: MatSort) {\n this._sort = s;\n this._sort.sortChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this._sortChange.emit(event);\n\n this.eventsService.emit('sortChange', {\n active: event.active,\n direction: event.direction,\n });\n });\n }\n\n public setDirection(direction: SortDirection) {\n if (this._sort) {\n this._sort.direction = direction;\n this.sort.sortChange.emit({ active: this._sort.active, direction: this._sort.direction });\n }\n }\n\n public setActive(active: string) {\n if (this._sort) {\n this._sort.active = active;\n this.sort.sortChange.emit({ active: this._sort.active, direction: this._sort.direction });\n }\n }\n\n public sortChange(): EventEmitter<Sort> {\n return this._sortChange;\n }\n}\n\n@Injectable()\nexport class SortService extends AbstractSortService {\n constructor(\n @Optional() private sortStore: SortStore | null,\n private columnsService: ColumnsService,\n @Inject(DATASOURCE_SERVICE) private datasourceService: DatasourceService,\n readonly eventsService: EventsService,\n ) {\n super(eventsService);\n }\n\n public register(s: MatSort) {\n super.register(s);\n this.datasourceService.datasource.sort = this._sort;\n if (!this._sort) return;\n\n this.datasourceService.datasource.sortingDataAccessor = this.sortingDataAccessor;\n this.datasourceService.datasource.sortData = this.sortDataPredicate(this.columnsService.columns());\n\n s.active = this.sortStore?.snapshot()?.active ?? s.active;\n s.direction = this.sortStore?.snapshot()?.direction ?? s.direction;\n\n s.sortChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.sortStore?.setSort(event);\n });\n }\n\n private sortingDataAccessor = (item: AbstractControl, property: string) => {\n if (!item.value) {\n return undefined;\n }\n let value: any = item.value?.[property];\n\n if (value) {\n if (typeof value === 'string') {\n value = value.toLowerCase();\n }\n }\n\n return value;\n };\n\n private sortDataPredicate(columns: KlesColumnConfig[]) {\n return (data: FormGroup[], sort: MatSort): FormGroup[] => {\n const active = sort.active;\n const direction = sort.direction;\n\n if (!active || direction == '') {\n return data;\n }\n\n const column = columns.find((col) => col.columnDef === active);\n\n return data.sort((a, b) => {\n let valueA: any;\n let valueB: any;\n if (column?.headerCell?.sortPredicate) {\n valueA = column?.headerCell.sortPredicate(a);\n valueB = column?.headerCell.sortPredicate(b);\n } else {\n valueA = this.sortingDataAccessor(a, active);\n valueB = this.sortingDataAccessor(b, active);\n\n if (column) {\n const key = column.cell?.field?.property;\n if (key) {\n valueA = valueA?.[key];\n valueB = valueB?.[key];\n }\n }\n }\n\n const valueAType = typeof valueA;\n const valueBType = typeof valueB;\n\n if (valueAType !== valueBType) {\n if (valueAType === 'number') {\n valueA += '';\n }\n if (valueBType === 'number') {\n valueB += '';\n }\n }\n\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n if (valueA > valueB) {\n comparatorResult = 1;\n } else if (valueA < valueB) {\n comparatorResult = -1;\n }\n } else if (valueA != null) {\n comparatorResult = 1;\n } else if (valueB != null) {\n comparatorResult = -1;\n }\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n };\n }\n}\n\n@Injectable()\nexport class SortLazyService extends AbstractSortService {\n constructor(\n @Optional() private sortStore: SortStore | null,\n @Inject(DATASOURCE_SERVICE) private datasourceService: DatasourceLazyService,\n readonly eventsService: EventsService,\n ) {\n super(eventsService);\n }\n\n public register(s: MatSort) {\n super.register(s);\n this.datasourceService.datasource.sort = this._sort;\n if (!this._sort) return;\n\n s.active = this.sortStore?.snapshot()?.active ?? s.active;\n s.direction = this.sortStore?.snapshot()?.direction ?? s.direction;\n\n s.sortChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.sortStore?.setSort(event);\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ITableStore } from './store';\n\n@Injectable()\nexport class FilterStore implements ITableStore {\n private s = new BehaviorSubject<Record<string, unknown>>({});\n filters$ = this.s.asObservable();\n\n setFilters(v: Record<string, unknown>) {\n this.s.next(v);\n }\n\n reset(): void {\n this.s.next({});\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n@Component({\n selector: 'kles-infinite-scroll-table',\n templateUrl: './infinite-scroll-table.component.html',\n // styleUrl: './paginate-table.component.scss',\n standalone: true,\n imports: [CommonModule, ScrollingModule],\n})\nexport class InfiniteScrollTableComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<!-- <cdk-virtual-scroll-viewport itemSize=\"48\">\n <kles-table></kles-table>\n</cdk-virtual-scroll-viewport> -->\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { auditTime, catchError, concat, map, Observable, of, switchMap, take } from 'rxjs';\nimport { SELECTION_CONFIG } from '../../../token';\nimport { SelectionAllResponse, SelectionConfig, SelectionResponse, SelectionState } from '../../../core/table/selection-config.interface';\n\n@Injectable()\nexport class SelectionLoaderService<T> {\n constructor(@Optional() @Inject(SELECTION_CONFIG) private readonly selectionConfig: SelectionConfig<T> | undefined) {}\n\n public get key() {\n return this.selectionConfig?.key || '#select';\n }\n\n public select(row: FormGroup, selected: boolean, filters?: { [key: string]: any }): Observable<SelectionState> {\n return (this.selectionConfig?.params?.() || of({} as T)).pipe(\n auditTime(0),\n take(1),\n switchMap((params) => {\n const selection$: Observable<SelectionResponse> = this.selectionConfig?.select\n ? this.selectionConfig.select(params, row, selected, filters)\n : of({\n selected,\n count: undefined,\n });\n\n const result$: Observable<SelectionState> = selection$.pipe(\n map(\n (response): SelectionState => ({\n ...response,\n loading: false,\n success: true,\n }),\n ),\n catchError(\n (error): Observable<SelectionState> =>\n of({\n error,\n loading: false,\n success: false,\n }),\n ),\n );\n\n return concat(\n of<SelectionState>({\n loading: true,\n success: false,\n }),\n result$,\n );\n }),\n );\n }\n\n public selectAll(selected: boolean, filters?: { [key: string]: any }): Observable<SelectionState> {\n return (this.selectionConfig?.params?.() || of({} as T)).pipe(\n auditTime(0),\n take(1),\n switchMap((params) => {\n const selection$: Observable<SelectionAllResponse> = this.selectionConfig?.selectAll\n ? this.selectionConfig.selectAll(params, selected, filters)\n : of({\n selected,\n count: undefined,\n footer: undefined,\n });\n\n const result$: Observable<SelectionState> = selection$.pipe(\n map(\n (response): SelectionState => ({\n ...response,\n loading: false,\n success: true,\n }),\n ),\n catchError(\n (error): Observable<SelectionState> =>\n of({\n error,\n loading: false,\n success: false,\n }),\n ),\n );\n\n return concat(\n of<SelectionState>({\n loading: true,\n success: false,\n }),\n result$,\n );\n }),\n );\n }\n}\n","import { DestroyRef, Inject, inject, Injectable, Optional } from '@angular/core';\nimport { KlesForm } from '../table/form';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { combineLatest, debounceTime, distinctUntilChanged, filter, map, merge, pairwise, scan, startWith, switchMap } from 'rxjs';\nimport { FilterService } from '../filter/filter.service';\nimport { FilterStore } from '../../store/filter-store.service';\nimport { DATASOURCE_SERVICE, LOADER_SERVICE } from '../../../token';\nimport { IDatasourceService } from '../datasource/datasource.service';\nimport { ColumnsService } from '../columns/columns.service';\nimport { ILoader } from '../loader/loader.interface';\nimport { EventsService } from '../events/events.service';\nimport _ from 'lodash';\n\nexport interface IHeaderService {\n register(): void;\n}\n\n@Injectable()\nexport class HeaderService implements IHeaderService {\n private readonly destroyRef = inject(DestroyRef);\n private filterableColumns: string[];\n\n constructor(\n private fm: KlesForm,\n @Optional() private filterService: FilterService | null,\n @Optional() private filterStore: FilterStore | null,\n @Inject(DATASOURCE_SERVICE) private datasourceService: IDatasourceService,\n @Inject(LOADER_SERVICE) private loader: ILoader<any>,\n private columnsService: ColumnsService,\n private readonly eventsService: EventsService,\n ) {\n this.filterableColumns = this.columnsService\n .columns()\n .filter((c) => c.filterable === true)\n .map((c) => c.columnDef);\n }\n\n public register() {\n this.load();\n\n const header = this.fm.getHeader();\n\n const filterControlChanges$ = merge(\n ...this.filterableColumns.map((columnDef) => {\n const control = header.get(columnDef);\n\n if (!control) {\n throw new Error(`Missing header filter control: ${columnDef}`);\n }\n\n return control.valueChanges.pipe(\n debounceTime(300),\n distinctUntilChanged((a, b) => _.isEqual(a, b)),\n map((currentValue) => ({\n columnDef,\n currentValue,\n })),\n );\n }),\n );\n\n filterControlChanges$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n scan(\n (state, changed) => {\n const previousValue = state.filters[changed.columnDef];\n\n const changedFilter = {\n columnDef: changed.columnDef,\n previousValue,\n currentValue: changed.currentValue,\n };\n\n const filters = {\n ...state.filters,\n [changed.columnDef]: changed.currentValue,\n };\n\n return {\n filters,\n changedFilter,\n };\n },\n {\n filters: Object.fromEntries(this.filterableColumns.map((columnDef) => [columnDef, header.get(columnDef)?.value])) as Record<\n string,\n unknown\n >,\n changedFilter: undefined as\n | {\n columnDef: string;\n previousValue: unknown;\n currentValue: unknown;\n }\n | undefined,\n },\n ),\n )\n .subscribe(({ filters, changedFilter }) => {\n if (this.filterService) {\n const prepared = this.filterService.formatData(filters);\n this.datasourceService.datasource.filter = JSON.stringify(prepared);\n this.filterStore?.setFilters(prepared);\n } else {\n this.filterStore?.setFilters(filters);\n this.datasourceService.datasource.filter = JSON.stringify(filters);\n }\n\n this.eventsService.emit('filterChange', {\n filters,\n changedFilter,\n });\n });\n }\n\n private load() {\n this.loader\n .load()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((response) => !response.loading),\n map((response) => response.header),\n filter((header) => header != undefined),\n distinctUntilChanged((p, c) => {\n return this.filterableColumns.every((col) => p?.[col] === c?.[col]);\n }),\n )\n .subscribe((header) => {\n this.fm.getHeader().patchValue(header, { emitEvent: false });\n });\n }\n}\n\n@Injectable()\nexport class HeaderLazyService implements IHeaderService {\n private readonly destroyRef = inject(DestroyRef);\n private filterableColumns: string[];\n\n constructor(\n private fm: KlesForm,\n @Optional() private filterStore: FilterStore | null,\n @Inject(LOADER_SERVICE) private loader: ILoader<any>,\n private columnsService: ColumnsService,\n private readonly eventsService: EventsService,\n ) {\n this.filterableColumns = this.columnsService\n .columns()\n .filter((c) => c.filterable === true)\n .map((c) => c.columnDef);\n }\n\n public register() {\n this.load();\n\n const header = this.fm.getHeader();\n\n const filterControlChanges$ = merge(\n ...this.filterableColumns.map((columnDef) => {\n const control = header.get(columnDef);\n\n if (!control) {\n throw new Error(`Missing header filter control: ${columnDef}`);\n }\n\n return control.valueChanges.pipe(\n debounceTime(300),\n distinctUntilChanged((a, b) => _.isEqual(a, b)),\n map((currentValue) => ({\n columnDef,\n currentValue,\n })),\n );\n }),\n );\n\n filterControlChanges$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n scan(\n (state, changed) => {\n const previousValue = state.filters[changed.columnDef];\n\n const changedFilter = {\n columnDef: changed.columnDef,\n previousValue,\n currentValue: changed.currentValue,\n };\n\n const filters = {\n ...state.filters,\n [changed.columnDef]: changed.currentValue,\n };\n\n return {\n filters,\n changedFilter,\n };\n },\n {\n filters: Object.fromEntries(this.filterableColumns.map((columnDef) => [columnDef, header.get(columnDef)?.value])) as Record<\n string,\n unknown\n >,\n changedFilter: undefined as\n | {\n columnDef: string;\n previousValue: unknown;\n currentValue: unknown;\n }\n | undefined,\n },\n ),\n )\n .subscribe(({ filters, changedFilter }) => {\n this.filterStore?.setFilters(filters);\n\n this.eventsService.emit('filterChange', {\n filters,\n changedFilter,\n });\n });\n }\n\n private load() {\n this.loader\n .load()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((response) => !response.loading),\n map((response) => response.header),\n filter((header) => header != undefined),\n distinctUntilChanged((p, c) => {\n return this.filterableColumns.every((col) => p?.[col] === c?.[col]);\n }),\n )\n .subscribe((header) => {\n this.fm.getHeader().patchValue(header, { emitEvent: false });\n });\n }\n}\n","export function getMultipleValuesInSingleSelectionError() {\n return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\n}\n","export enum KlesSelectionModelState {\n ENABLED = 'enabled',\n DISABLED = 'disabled',\n}\n","import { Subject } from 'rxjs';\nimport { IKlesSelectionModel } from './selection-model.interface';\nimport { getMultipleValuesInSingleSelectionError } from './selection-model-error';\nimport { KlesSelectionModelState } from './selection-state.enum';\nimport { Signal, signal } from '@angular/core';\n\nexport class KlesSelectionModel<T> implements IKlesSelectionModel<T> {\n private _selection = new Set<T>();\n private _changed = new Subject<{ added?: T[]; removed?: T[]; count: number; state: KlesSelectionModelState }>();\n private _stateChanged = new Subject<KlesSelectionModelState>();\n private _state: KlesSelectionModelState = KlesSelectionModelState.ENABLED;\n\n private _count = signal<number>(0);\n\n constructor(\n private multiple: boolean = false,\n initialValues?: T[],\n ) {\n initialValues?.forEach((v) => {\n this._selection.add(v);\n });\n }\n\n get selected(): { items: T[]; count: number; state: KlesSelectionModelState } {\n return {\n items: Array.from(this._selection),\n count: this._selection.size,\n state: this._state,\n };\n }\n\n get count(): Signal<number> {\n return this._count.asReadonly();\n }\n\n get changed() {\n return this._changed.asObservable();\n }\n\n get state() {\n return this._state;\n }\n\n get stateChanged() {\n return this._stateChanged.asObservable();\n }\n\n public select(value: T | T[], options?: { emitEvent?: boolean }): void {\n const added = [];\n const removed = [];\n if (this._state === KlesSelectionModelState.ENABLED) {\n if (Array.isArray(value)) {\n if (value.length > 1 && !this.multiple) {\n throw getMultipleValuesInSingleSelectionError();\n }\n\n value.forEach((v) => {\n if (!this.isSelected(v)) {\n this._selection.add(v);\n added.push(v);\n }\n });\n } else {\n if (!this.isSelected(value)) {\n if (!this.multiple) {\n removed.push(...Array.from(this._selection));\n this._selection.clear();\n }\n this._selection.add(value);\n added.push(value);\n }\n }\n }\n\n this._count.set(this._selection.size);\n if (options?.emitEvent ?? true) {\n this._changed.next({ added, removed, count: this._selection.size, state: this._state });\n }\n }\n\n public deselect(value: T | T[], options?: { emitEvent?: boolean }): void {\n const removed = [];\n const added = [];\n if (this._state === KlesSelectionModelState.ENABLED) {\n if (Array.isArray(value)) {\n value.forEach((v) => {\n if (this.isSelected(v)) {\n this._selection.delete(v);\n removed.push(v);\n }\n });\n } else {\n if (this.isSelected(value)) {\n this._selection.delete(value);\n removed.push(value);\n }\n }\n }\n\n this._count.set(this._selection.size);\n if (options?.emitEvent ?? true) {\n this._changed.next({ added, removed, count: this._selection.size, state: this._state });\n }\n }\n\n public toggle(value: T, options?: { emitEvent?: boolean }): void {\n if (this.isSelected(value)) {\n this.deselect(value, options);\n } else {\n this.select(value, options);\n }\n }\n\n public isEmpty(): boolean {\n return this._selection.size === 0;\n }\n\n public hasValue(): boolean {\n return this._selection.size > 0;\n }\n\n public disable(): void {\n this._state = KlesSelectionModelState.DISABLED;\n this._stateChanged.next(this._state);\n }\n public enable(): void {\n this._state = KlesSelectionModelState.ENABLED;\n this._stateChanged.next(this._state);\n }\n\n public isSelected(value: T): boolean {\n return this._selection.has(this.getValue(value));\n }\n\n public isMultipleSelection(): boolean {\n return this.multiple || false;\n }\n\n private getValue(value: T) {\n // si jamais je rajoute une méthode de comparaison avec _selection\n return value;\n }\n}\n","import { DestroyRef, inject, Inject, Injectable, Optional, Signal, signal } from '@angular/core';\nimport { DATASOURCE_SERVICE, LINES_SERVICE, SELECTION_CONFIG } from '../../../token';\nimport { SelectionConfig } from '../../../core/table/selection-config.interface';\nimport { KlesSelectionModel } from '../../../core/selection/selection-model';\nimport { FormGroup } from '@angular/forms';\nimport { KlesForm } from '../table/form';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { auditTime, concatMap, map, merge, of, switchMap, withLatestFrom } from 'rxjs';\nimport { SelectionLoaderService } from './selection-loader.service';\nimport { ScrollbarService } from '../scrollbar/scrollbar.service';\nimport { LoadingService } from '../loading/loading.service';\nimport { DatasourceService } from '../datasource/datasource.service';\nimport { IKlesSelectionModel } from '../../../core/selection/selection-model.interface';\nimport { KlesSelectionModelState } from '../../../core/selection/selection-state.enum';\nimport { ILinesService } from '../lines/lines.service';\nimport { FilterStore } from '../../store/filter-store.service';\n\nexport interface ISelectionService {\n key: string;\n selectionMode: boolean;\n register(): void;\n selectionModel?: IKlesSelectionModel<FormGroup>;\n count(): Signal<number>;\n disable(): void;\n enable(): void;\n}\n\n@Injectable()\nexport abstract class AbstractSelectionService<T> implements ISelectionService {\n constructor(@Optional() @Inject(SELECTION_CONFIG) protected readonly selectionConfig: SelectionConfig<T> | undefined) {}\n\n public get key() {\n return this.selectionConfig?.key || '#select';\n }\n\n public get selectionMode(): boolean {\n return this.selectionConfig?.selectionMode || false;\n }\n\n public selectionModel!: IKlesSelectionModel<FormGroup>;\n\n abstract register(): void;\n abstract count(): Signal<number>;\n abstract disable(): void;\n abstract enable(): void;\n}\n\n@Injectable()\nexport class SelectionService<T> extends AbstractSelectionService<T> {\n public selectionModel: KlesSelectionModel<FormGroup>;\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n @Optional() @Inject(SELECTION_CONFIG) selectionConfig: SelectionConfig<T> | undefined,\n private fm: KlesForm,\n private selectionLoaderService: SelectionLoaderService<T>,\n private scrollbarService: ScrollbarService,\n private loadingService: LoadingService,\n @Inject(DATASOURCE_SERVICE) private datasourceService: DatasourceService,\n @Inject(LINES_SERVICE) private linesService: ILinesService,\n ) {\n super(selectionConfig);\n this.selectionModel = new KlesSelectionModel<FormGroup>(selectionConfig?.selectionMode);\n }\n\n public register(): void {\n this.listenSelection();\n this.setSelection();\n this.listenDatasource();\n this.listenRowSelection();\n this.listenHeaderSelection();\n }\n\n public count(): Signal<number> {\n return this.selectionModel.count;\n }\n\n public disable(): void {\n this.selectionModel.disable();\n }\n\n public enable(): void {\n this.selectionModel.enable();\n }\n\n private setSelection() {\n this.linesService\n .loaded()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.fm.getRows().controls.forEach((group) => {\n if (group.controls[this.selectionLoaderService.key]?.value === true) {\n this.selectionModel.select(group, { emitEvent: false }); // event false to avoid multiple send event\n } else if (this.selectionConfig?.isSelected != undefined && this.selectionConfig.isSelected(group)) {\n this.selectionModel.select(group, { emitEvent: false }); // event false to avoid multiple send event\n group.controls[this.selectionLoaderService.key]?.patchValue(true, { emitEvent: false });\n } else {\n this.selectionModel.deselect(group, { emitEvent: false }); // event false to avoid multiple send event\n }\n if (this.selectionConfig?.isDisabled && this.selectionConfig.isDisabled(group)) {\n group.controls[this.selectionLoaderService.key]?.disable({ emitEvent: false });\n }\n });\n this.updateHeader();\n });\n }\n\n private listenHeaderSelection(): void {\n this.fm\n .getHeader()\n .controls[this.key]?.valueChanges.pipe(\n takeUntilDestroyed(this.destroyRef),\n switchMap((value) => {\n return this.selectionLoaderService.selectAll(!!value, this.fm.getHeader().getRawValue());\n }),\n )\n .subscribe((response) => {\n if (response.loading) {\n this.scrollbarService.toTop('instant');\n this.loadingService.start();\n return;\n } else {\n this.loadingService.stop();\n if (response.selected) {\n if (this.selectionModel.isMultipleSelection()) {\n this.selectionModel.select(\n this.datasourceService.datasource.filteredData?.filter((g) => g.controls[this.selectionLoaderService.key]?.enabled) ??\n [],\n );\n } else {\n this.selectionModel.select(\n this.datasourceService.datasource.filteredData?.filter(\n (g) => g.controls[this.selectionLoaderService.key]?.enabled,\n )[0] ?? [],\n );\n }\n } else {\n this.selectionModel.deselect(\n this.datasourceService.datasource.filteredData?.filter((g) => g.controls[this.selectionLoaderService.key]?.enabled),\n );\n }\n }\n });\n }\n\n private listenRowSelection(): void {\n this.datasourceService.datasource\n .connect()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n auditTime(0),\n switchMap((rows) => {\n return merge(\n ...rows\n .map((row) => {\n return row.controls[this.selectionLoaderService.key]?.valueChanges.pipe(\n map((value) => {\n return { row, selected: !!value };\n }),\n );\n })\n .filter(Boolean),\n );\n }),\n concatMap(({ row, selected }) => {\n return this.selectionLoaderService.select(row, selected).pipe(\n map((response) => {\n return {\n row,\n response,\n };\n }),\n );\n }),\n )\n\n .subscribe(({ row, response }) => {\n if (response.loading) {\n //mettre la ligne avec un spinner\n } else {\n if (response.selected) {\n this.selectionModel.select(row);\n } else {\n this.selectionModel.deselect(row);\n }\n //enlever la ligne en spinner\n }\n });\n }\n\n private listenSelection(): void {\n this.selectionModel.changed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((changed) => {\n changed.removed?.forEach((group: FormGroup) => {\n group.controls[this.selectionLoaderService.key].patchValue(false, { emitEvent: false });\n });\n\n changed.added?.forEach((group: FormGroup) => {\n group.controls[this.selectionLoaderService.key].patchValue(true, { emitEvent: false });\n });\n this.fm.getRows().updateValueAndValidity({ emitEvent: false });\n this.updateHeader();\n });\n\n this.selectionModel.stateChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((state) => {\n if (state === KlesSelectionModelState.ENABLED) {\n this.fm.getHeader().controls[this.key].enable({ emitEvent: false });\n this.fm.getRows().controls.forEach((group) => {\n group.controls[this.key].enable({ emitEvent: false });\n });\n } else {\n this.fm.getHeader().controls[this.key].disable({ emitEvent: false });\n this.fm.getRows().controls.forEach((group) => {\n group.controls[this.key].disable({ emitEvent: false });\n });\n }\n });\n }\n\n private listenDatasource(): void {\n this.datasourceService.datasource\n .connect()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.updateHeader();\n });\n }\n\n private updateHeader() {\n if (this.selectionModel.hasValue()) {\n if (\n this.datasourceService.datasource.filteredData\n .filter((group) => group.controls[this.selectionLoaderService.key]?.enabled)\n .every((group) => this.selectionModel.isSelected(group))\n ) {\n this.fm.getUiHeader().get(this.selectionLoaderService.key)?.patchValue({ indeterminate: false });\n this.fm.getHeader().controls[this.selectionLoaderService.key]?.patchValue(true, { emitEvent: false });\n } else {\n this.fm.getUiHeader().get(this.selectionLoaderService.key)?.patchValue({ indeterminate: true });\n this.fm.getHeader().controls[this.selectionLoaderService.key]?.patchValue(false, { emitEvent: false });\n }\n } else {\n this.fm.getUiHeader().get(this.selectionLoaderService.key)?.patchValue({ indeterminate: false });\n this.fm.getHeader().controls[this.selectionLoaderService.key]?.patchValue(false, { emitEvent: false });\n }\n }\n}\n\n@Injectable()\nexport class SelectionLazyService<T> extends AbstractSelectionService<T> {\n private readonly destroyRef = inject(DestroyRef);\n private _count = signal(0);\n\n constructor(\n @Optional() @Inject(SELECTION_CONFIG) selectionConfig: SelectionConfig<T> | undefined,\n private fm: KlesForm,\n private selectionLoaderService: SelectionLoaderService<T>,\n private scrollbarService: ScrollbarService,\n private loadingService: LoadingService,\n @Inject(DATASOURCE_SERVICE) private datasourceService: DatasourceService,\n @Inject(LINES_SERVICE) private linesService: ILinesService,\n @Optional() private filterStore: FilterStore | null,\n ) {\n super(selectionConfig);\n }\n\n public register(): void {\n this.setSelection();\n this.listenHeaderSelection();\n this.listenRowSelection();\n }\n\n public count(): Signal<number> {\n return this._count.asReadonly();\n }\n\n public disable(): void {\n this.fm.getHeader().controls[this.key].disable({ emitEvent: false });\n }\n\n public enable(): void {\n this.fm.getHeader().controls[this.key].enable({ emitEvent: false });\n }\n\n private listenHeaderSelection(): void {\n this.fm\n .getHeader()\n .controls[this.key]?.valueChanges.pipe(\n takeUntilDestroyed(this.destroyRef),\n switchMap((value) => {\n return this.selectionLoaderService.selectAll(!!value, this.fm.getHeader().getRawValue());\n }),\n )\n .subscribe((response) => {\n if (response.loading) {\n this.scrollbarService.toTop('instant');\n this.loadingService.start();\n return;\n } else {\n this.loadingService.stop();\n this._count.set(response.count ?? 0);\n this.fm\n .getRows()\n .controls.filter((group) => group.controls[this.key]?.enabled)\n .forEach((group) => {\n group.controls[this.selectionLoaderService.key].patchValue(response.selected, { emitEvent: false });\n });\n this.fm.getRows().updateValueAndValidity({ emitEvent: false });\n\n // if (response.footer) {\n // this.fm.getFooter().patchValue(response.footer, { emitEvent: false });\n // }\n }\n });\n }\n\n private listenRowSelection(): void {\n this.datasourceService.datasource\n .connect()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n auditTime(0),\n\n switchMap((rows) => {\n return merge(\n ...rows\n .map((row) => {\n return row.controls[this.selectionLoaderService.key]?.valueChanges.pipe(\n map((value) => {\n return {\n row,\n selected: !!value,\n };\n }),\n );\n })\n .filter(Boolean),\n );\n }),\n\n withLatestFrom(this.filterStore?.filters$ ?? of({})),\n\n concatMap(([{ row, selected }, filters]) => {\n return this.selectionLoaderService.select(row, selected, filters).pipe(\n map((response) => {\n return {\n row,\n response,\n };\n }),\n );\n }),\n )\n .subscribe(({ row, response }) => {\n if (response.loading) {\n //mettre la ligne avec un spinner\n } else {\n this.fm\n .getUiHeader()\n .get(this.selectionLoaderService.key)\n ?.patchValue({\n indeterminate: response.count != undefined ? response.count > 0 && this.linesService.total() > response.count : false,\n });\n\n // if (footer) {\n // this.fm.getFooter().patchValue(footer, { emitEvent: false });\n // }\n }\n });\n }\n\n private setSelection() {\n this.linesService\n .loaded()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.fm.getRows().controls.forEach((group) => {\n if (this.selectionConfig?.isSelected != undefined && this.selectionConfig.isSelected(group)) {\n group.controls[this.selectionLoaderService.key]?.patchValue(true, { emitEvent: false });\n }\n if (this.selectionConfig?.isDisabled && this.selectionConfig.isDisabled(group)) {\n group.controls[this.selectionLoaderService.key]?.disable({ emitEvent: false });\n }\n });\n // this.updateHeader();\n });\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { auditTime, catchError, combineLatest, concat, map, Observable, of, ReplaySubject, shareReplay, startWith, Subject, switchMap } from 'rxjs';\nimport { LOADER_CONFIG } from '../../../token';\nimport { PaginatorStore } from '../../store/paginator-store.service';\nimport { LoaderConfig } from '../../../core/table/config.interface';\nimport { SortStore } from '../../store/sort-store.service';\nimport { FilterStore } from '../../store/filter-store.service';\nimport { LinesLazyLoader, LinesLoader } from '../../../core/table/loader.interface';\nimport { ILoader } from './loader.interface';\nimport { EventsService } from '../events/events.service';\n\n@Injectable()\nexport class LoaderService<T, R> implements ILoader<R> {\n private _refresh$ = new Subject<void>();\n\n private _loader$!: Observable<{ total: number; items: R[]; loading: boolean; error?: any; header?: any }>;\n\n constructor(\n @Inject(LOADER_CONFIG) private readonly loaderConfig: LoaderConfig<T, R>,\n private readonly eventsService: EventsService,\n ) {\n this.init();\n }\n\n private init() {\n const linesLoader = this.loaderConfig.lines as LinesLoader<T, R>;\n this._loader$ = combineLatest([this._refresh$.pipe(startWith(void 0)), this.loaderConfig.lines.params?.() || of({} as T)]).pipe(\n auditTime(0),\n switchMap(([_, params]) => {\n return concat(\n of({ loading: true, total: 0, items: [] }),\n linesLoader.loader(params).pipe(\n catchError((err) => {\n return of({ error: err, items: [] });\n }),\n map((response) => {\n return { ...response, loading: false, total: response?.items.length || 0 };\n }),\n ),\n );\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n public load(): Observable<{ total: number; items: R[]; loading: boolean; error?: any }> {\n return this._loader$;\n }\n\n public refresh() {\n this._refresh$.next();\n this.eventsService.emit('refresh');\n }\n}\n\n@Injectable()\nexport class LoaderLazyService<T, R> implements ILoader<R> {\n private _refresh$ = new Subject<void>();\n\n private _loader$!: Observable<{ total: number; items: R[]; loading: boolean; error?: any; header?: any }>;\n\n constructor(\n @Inject(LOADER_CONFIG) private readonly loaderConfig: LoaderConfig<T, R>,\n @Optional() private paginatorStore: PaginatorStore | null,\n @Optional() private sortStore: SortStore | null,\n @Optional() private filterStore: FilterStore | null,\n private readonly eventsService: EventsService,\n ) {\n this.init();\n }\n\n public load(): Observable<{ total: number; items: R[]; loading: boolean; error?: any }> {\n return this._loader$;\n }\n\n private init() {\n const linesLoader = this.loaderConfig.lines as LinesLazyLoader<T, R>;\n this._loader$ = combineLatest([\n this._refresh$.pipe(startWith(void 0)),\n this.loaderConfig.lines.params?.() || of({} as T),\n this.paginatorStore?.page$ || of(undefined),\n this.sortStore?.sort$ || of(undefined),\n this.filterStore?.filters$ || of({}),\n ]).pipe(\n auditTime(0),\n switchMap(([_, params, pagination, sort, filters]) => {\n return concat(\n of({ loading: true, total: 0, items: [] }),\n linesLoader.loader(params, { filters, pagination, sort }).pipe(\n catchError((err) => {\n return of({ error: err, items: [] as R[], total: 0 });\n }),\n map((response) => {\n return { ...response, loading: false };\n }),\n ),\n );\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n public refresh() {\n this._refresh$.next();\n this.eventsService.emit('refresh');\n }\n}\n","import { DestroyRef, EventEmitter, inject, Inject, Injectable } from '@angular/core';\nimport { LOADER_SERVICE } from '../../../token';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KlesForm } from '../table/form';\nimport { RowFormFactory } from '../table/row-factory.service';\nimport { ColumnsService } from '../columns/columns.service';\nimport { PaginatorService } from '../paginator/paginator.service';\nimport { Subject } from 'rxjs';\nimport { LoaderLazyService, LoaderService } from '../loader/loader.service';\nimport { ExtraRowService } from '../extra-row/extra-row.service';\nimport { EventsService } from '../events/events.service';\n\nexport interface ILinesService {\n register(): void;\n total(): number;\n loaded(): EventEmitter<void>;\n loading(): EventEmitter<void>;\n}\n\n@Injectable()\nexport class LinesService implements ILinesService {\n private readonly destroyRef = inject(DestroyRef);\n private _loaded = new EventEmitter<void>();\n private _loading = new EventEmitter<void>();\n\n private _total: number | undefined;\n\n constructor(\n @Inject(LOADER_SERVICE) private loader: LoaderService<any, any>,\n private fm: KlesForm,\n private columnsService: ColumnsService,\n private rowFactory: RowFormFactory,\n private extraRowService: ExtraRowService,\n private readonly eventsService: EventsService,\n ) {}\n\n public register() {\n this.load();\n }\n\n public total() {\n return this._total ?? 0;\n }\n\n public loaded(): EventEmitter<void> {\n return this._loaded;\n }\n\n public loading(): EventEmitter<void> {\n return this._loading;\n }\n\n private load() {\n this.loader\n .load()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((response) => {\n if (response.loading) {\n this.eventsService.emit('loadStart');\n this._loading.next();\n } else {\n if (response.error) {\n this.eventsService.emit('loadError', {\n error: response.error,\n message: response.error?.message,\n });\n } else {\n this.fm.setRows(\n this.rowFactory.createRows(\n this.columnsService\n .columns()\n .map((col) => ({ ...col.cell?.field, name: col.columnDef }))\n .concat(this.extraRowService.extraColumns().map((col) => ({ ...col, name: col.columnDef }))),\n response.items ?? [],\n ),\n );\n this._total = response.items?.length ?? 0;\n this._loaded.next();\n\n this.eventsService.emit('loadSuccess', {\n total: this._total,\n values: response.items,\n rawValues: this.fm.getRows().getRawValue(),\n rows: this.fm.getRows().controls,\n });\n }\n }\n });\n }\n}\n\n@Injectable()\nexport class LinesLazyService implements ILinesService {\n private readonly destroyRef = inject(DestroyRef);\n private _refresh$ = new Subject<void>();\n private _total?: number;\n private _loaded = new EventEmitter<void>();\n private _loading = new EventEmitter<void>();\n\n constructor(\n @Inject(LOADER_SERVICE) private loader: LoaderLazyService<any, any>,\n private fm: KlesForm,\n private columnsService: ColumnsService,\n private rowFactory: RowFormFactory,\n private extraRowService: ExtraRowService,\n private paginatorService: PaginatorService,\n private readonly eventsService: EventsService,\n ) {}\n\n public register() {\n this.load();\n }\n\n public total() {\n return this._total ?? 0;\n }\n\n public loaded(): EventEmitter<void> {\n return this._loaded;\n }\n\n public loading(): EventEmitter<void> {\n return this._loading;\n }\n\n public refresh() {\n this._refresh$.next();\n }\n\n private load() {\n this.loader\n .load()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((response) => {\n if (response.loading) {\n this._loading.next();\n this.eventsService.emit('loadStart');\n } else {\n if (response.error) {\n this.eventsService.emit('loadError', {\n error: response.error,\n message: response.error?.message,\n });\n } else {\n this.fm.setRows(\n this.rowFactory.createRows(\n this.columnsService\n .columns()\n .map((col) => ({ ...col.cell?.field, name: col.columnDef }))\n .concat(this.extraRowService.extraColumns().map((col) => ({ ...col, name: col.columnDef }))),\n response.items,\n ),\n );\n this.paginatorService.setlength(response.total ?? 0);\n this._total = response.total ?? 0;\n this._loaded.next();\n\n this.eventsService.emit('loadSuccess', {\n total: this._total ?? 0,\n values: response.items,\n rawValues: this.fm.getRows().getRawValue(),\n rows: this.fm.getRows().controls,\n });\n }\n }\n });\n }\n}\n","import { DestroyRef, inject, Inject, Injectable } from '@angular/core';\n\nimport { LOADER_SERVICE } from '../../../token';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { LoadingService } from './loading.service';\nimport { ILoader } from '../loader/loader.interface';\n\n@Injectable()\nexport class LoadingOrchestratorService {\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n @Inject(LOADER_SERVICE) private loader: ILoader<any>,\n private loadingService: LoadingService,\n ) {}\n\n public register() {\n this.listen();\n }\n\n private listen() {\n this.loader\n .load()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n map((response) => response.loading ?? false),\n )\n .subscribe((loading) => {\n if (loading) {\n this.loadingService.start();\n } else {\n this.loadingService.stop();\n }\n });\n }\n}\n","import { EventEmitter, Inject, Injectable } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { ColumnsService } from '../columns/columns.service';\nimport { DATASOURCE_SERVICE, HEADER_SERVICE, LINES_SERVICE, SCROLLBAR_ORCHESTRATOR_SERVICE, SELECTION_SERVICE } from '../../../token';\nimport { KlesForm } from './form';\nimport { IDatasourceService } from '../datasource/datasource.service';\nimport { IHeaderService } from '../header/header.service';\nimport { ILinesService } from '../lines/lines.service';\nimport { ISelectionService } from '../selection/selection.service';\nimport { LoadingOrchestratorService } from '../loading/loading-orchestrator.service';\nimport { IScrollbarOrchestratorService } from '../scrollbar/scrollbar-orchestrator.service';\nimport { AbstractUiState, ArrayUiState, GroupUiState } from '@3kles/kles-material-dynamicforms';\n\nexport interface ITableService {\n readonly form: FormGroup<{\n header: FormGroup<{}>;\n rows: FormArray<FormGroup<any>>;\n footer: FormGroup<{}>;\n }>;\n readonly ui: GroupUiState<{\n header: GroupUiState;\n rows: ArrayUiState<any, any, any>;\n footer: GroupUiState;\n }>;\n\n klesForm: KlesForm;\n\n trackBy: (_: number, row: FormGroup) => any;\n}\n\n@Injectable()\nexport class TableService implements ITableService {\n trackBy = (_: number, row: FormGroup) => row.get('_id')?.value ?? row;\n\n constructor(\n public readonly klesForm: KlesForm,\n private readonly columnsService: ColumnsService,\n @Inject(DATASOURCE_SERVICE) private readonly datasourceService: IDatasourceService,\n @Inject(LINES_SERVICE) private readonly linesService: ILinesService,\n @Inject(HEADER_SERVICE) private readonly headerService: IHeaderService,\n @Inject(SELECTION_SERVICE) private readonly selectionService: ISelectionService,\n private readonly loadingOrchestratorService: LoadingOrchestratorService,\n @Inject(SCROLLBAR_ORCHESTRATOR_SERVICE) private readonly scrollbarOrchestratorService: IScrollbarOrchestratorService,\n ) {\n this.orchestrators();\n this.features();\n }\n\n public get ui() {\n return this.klesForm.ui;\n }\n\n public get form() {\n return this.klesForm.form;\n }\n\n private orchestrators() {\n this.scrollbarOrchestratorService.register();\n this.loadingOrchestratorService.register();\n }\n\n private features() {\n this.columnsService.register();\n this.klesForm.init();\n this.datasourceService.register();\n this.headerService.register();\n this.linesService.register();\n this.selectionService.register();\n }\n}\n","import { DestroyRef, inject, Inject, Injectable, Optional } from '@angular/core';\nimport { LINES_SERVICE, SORT_SERVICE } from '../../../token';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ILinesService } from '../lines/lines.service';\nimport { ScrollbarService } from './scrollbar.service';\nimport { PaginatorService } from '../paginator/paginator.service';\nimport { ISortService } from '../sort/sort.service';\n\nexport interface IScrollbarOrchestratorService {\n register(): void;\n}\n\n@Injectable()\nexport class ScrollbarOrchestratorService implements IScrollbarOrchestratorService {\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n @Inject(LINES_SERVICE) private linesService: ILinesService,\n private scrollbarService: ScrollbarService,\n @Optional() private paginatorService: PaginatorService,\n @Optional() @Inject(SORT_SERVICE) private sortService: ISortService,\n ) {}\n\n public register() {\n this.listen();\n }\n\n private listen() {\n this.linesService\n .loaded()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.scrollbarService.toTop('instant');\n this.scrollbarService.showScrollbar();\n });\n\n this.linesService\n .loading()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.scrollbarService.hideScrollbar();\n });\n\n this.paginatorService\n ?.pageChanged()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.scrollbarService.toTop('instant');\n });\n\n this.sortService\n ?.sortChange()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.scrollbarService.toTop('instant');\n });\n }\n}\n\n@Injectable()\nexport class ScrollbarLazyOrchestratorService implements IScrollbarOrchestratorService {\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n @Inject(LINES_SERVICE) private linesService: ILinesService,\n private scrollbarService: ScrollbarService,\n ) {}\n\n public register() {\n this.listen();\n }\n\n private listen() {\n this.linesService\n .loaded()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.scrollbarService.toTop('instant');\n this.scrollbarService.showScrollbar();\n });\n\n this.linesService\n .loading()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.scrollbarService.hideScrollbar();\n });\n }\n}\n","import {\n ComponentRef,\n DestroyableInjector,\n Directive,\n effect,\n Injector,\n input,\n OnDestroy,\n OnInit,\n Provider,\n signal,\n StaticProvider,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport { TableComponent } from '../components/table/table.component';\nimport { isDestroyable } from '../utils';\nimport { ExtraRowConfig, KlesTableConfig } from '../core/table/config.interface';\nimport { PaginateTableComponent } from '../components/paginate-table/paginate-table.component';\nimport { PaginatorStore } from '../services/store/paginator-store.service';\nimport { SortLazyService, SortService } from '../services/features/sort/sort.service';\nimport { SortStore } from '../services/store/sort-store.service';\nimport { FilterService } from '../services/features/filter/filter.service';\nimport { FilterStore } from '../services/store/filter-store.service';\nimport { DragDropLazyService, DragDropService } from '../services/features/dragdrop/dragdrop.service';\nimport {\n COLUMNS,\n DATASOURCE_SERVICE,\n FOOTER,\n HEADER_SERVICE,\n LINES_SERVICE,\n LOADER_SERVICE,\n LOADER_CONFIG,\n PAGINATOR_CONFIG,\n ROW_DRAG_DROP,\n SELECTION_CONFIG,\n SELECTION_SERVICE,\n SORT_CONFIG,\n SORT_SERVICE,\n TABLE_SERVICE,\n SCROLLBAR_ORCHESTRATOR_SERVICE,\n EXTRA_ROWS,\n EMPTY_STATE_CONFIG,\n // SCROLLBAR_ORCHESTRATOR_SERVICE,\n} from '../token';\nimport { KlesColumnConfig } from '../core/table/column.interface';\nimport { ColumnsService } from '../services/features/columns/columns.service';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { ScrollbarService } from '../services/features/scrollbar/scrollbar.service';\nimport { InfiniteScrollTableComponent } from '../components/infinite-scroll-table/infinite-scroll-table.component';\n\nimport { KlesForm } from '../services/features/table/form';\nimport { SelectionLoaderService } from '../services/features/selection/selection-loader.service';\nimport { LoadingService } from '../services/features/loading/loading.service';\nimport { HeaderLazyService, HeaderService } from '../services/features/header/header.service';\nimport { DatasourceLazyService, DatasourceService } from '../services/features/datasource/datasource.service';\nimport { PaginatorService } from '../services/features/paginator/paginator.service';\nimport { SelectionLazyService, SelectionService } from '../services/features/selection/selection.service';\nimport { LinesLazyService, LinesService } from '../services/features/lines/lines.service';\nimport { TableService } from '../services/features/table/table.service';\nimport { LoaderLazyService, LoaderService } from '../services/features/loader/loader.service';\nimport { LoadingOrchestratorService } from '../services/features/loading/loading-orchestrator.service';\nimport { ScrollbarLazyOrchestratorService, ScrollbarOrchestratorService } from '../services/features/scrollbar/scrollbar-orchestrator.service';\nimport { FooterService } from '../services/features/footer/footer.service';\nimport { KlesExtraCellFieldConfig } from '../core/table/cell.interface';\nimport { ExtraRowService } from '../services/features/extra-row/extra-row.service';\nimport { RenderService } from '../services/features/render/render.service';\nimport { ExpandedRowStore } from '../services/store/expanded-row-store.service';\nimport { TreeService } from '../services/features/tree/tree.service';\nimport { LoaderChildrensService } from '../services/features/loader/loader-childrens.service';\nimport { EventsService } from '../services/features/events/events.service';\nimport { RowService } from '../services/features/row/row.service';\nimport { CellService } from '../services/features/cell/cell.service';\nimport { CellValueChangeService } from '../services/features/cell/cell-valuechange.service';\nimport { ValidationService } from '../services/features/validation/validation.service';\nimport { KlesTableIntl } from '../components/table/table-intl';\nimport { KlesTableEmptyStateComponent } from '../components/empty-state/empty-state.component';\nimport { EmptyStateService } from '../services/features/empty-state/empty-state.service';\nimport { RowContextStore } from '../services/store/row-context-store.service';\n\n// import { ScrollbarLazyOrchestratorService, ScrollbarOrchestratorService } from '../services/features/scrollbar/scrollbar-orchestrator.service';\n\n@Directive({\n selector: '[appDynamicTableLoader]',\n})\nexport class DynamicTableLoaderDirective implements OnInit, OnDestroy {\n tableConfig = input.required<KlesTableConfig, KlesTableConfig>({\n transform: (v) => {\n v.columns = v.columns.map((col) => {\n if (col.headerCell?.field) {\n col.headerCell.field.subscriptSizing = col.headerCell.field.subscriptSizing ?? 'dynamic';\n }\n return { ...col, separator: col.separator ?? v.columnSeparator ?? false };\n });\n return v;\n },\n });\n private componentRef: ComponentRef<any> | null = null;\n\n constructor(private viewContainerRef: ViewContainerRef) {\n effect(() => {\n if (this.tableConfig()) {\n this.loadComponent();\n } else {\n this.clearComponent();\n }\n });\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this.clearComponent();\n }\n\n private loadComponent() {\n if (this.componentRef) {\n this.clearComponent();\n }\n\n this.viewContainerRef.clear();\n\n let component: Type<any> = TableComponent;\n\n if (this.tableConfig().paginator) {\n component = PaginateTableComponent;\n } else if (this.tableConfig().infinite) {\n component = InfiniteScrollTableComponent;\n }\n\n const injector = this.initInjector();\n\n this.componentRef = this.viewContainerRef.createComponent(component, {\n injector,\n });\n\n this.componentRef.onDestroy(() => {\n if (isDestroyable(injector)) {\n injector.destroy();\n }\n });\n }\n\n private clearComponent() {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n private initInjector(): DestroyableInjector {\n const storeProviders = [RowContextStore, SortStore, FilterStore, ...(this.tableConfig().paginator ? [PaginatorStore] : []), ExpandedRowStore];\n\n const emptyState = this.tableConfig().emptyState;\n\n const emptyStateIntl = typeof emptyState === 'object' && emptyState !== null ? emptyState.intl : undefined;\n\n const configProviders = [\n {\n provide: COLUMNS,\n useValue: signal<KlesColumnConfig[]>(this.tableConfig().columns || []),\n },\n {\n provide: EXTRA_ROWS,\n useValue: signal<ExtraRowConfig[]>(this.tableConfig().extraRows ?? []),\n },\n {\n provide: FOOTER,\n useValue: signal<boolean>(this.tableConfig().footer ?? false),\n },\n {\n provide: LOADER_CONFIG,\n useValue: {\n lazy: this.tableConfig().lazy,\n lines: this.tableConfig().lines,\n },\n },\n {\n provide: SORT_CONFIG,\n useValue: this.tableConfig().sortConfig,\n },\n {\n provide: SELECTION_CONFIG,\n useValue: this.tableConfig().selection,\n },\n\n {\n provide: PAGINATOR_CONFIG,\n useValue: {\n paginator: this.tableConfig().paginator || false,\n customMatPaginatorIntl: this.tableConfig().customMatPaginatorIntl,\n pageSize: this.tableConfig().pageSize,\n pageSizeOptions: this.tableConfig().pageSizeOptions,\n },\n },\n ...(this.tableConfig().customMatPaginatorIntl\n ? [\n {\n provide: MatPaginatorIntl,\n useClass: this.tableConfig().customMatPaginatorIntl,\n },\n ]\n : []),\n {\n provide: EMPTY_STATE_CONFIG,\n useValue: emptyState,\n },\n ...(emptyStateIntl\n ? [\n {\n provide: KlesTableIntl,\n useClass: emptyStateIntl,\n },\n ]\n : []),\n ];\n\n const orchestratorProviders = [\n LoadingOrchestratorService,\n ...(this.tableConfig().lazy\n ? [\n {\n provide: SCROLLBAR_ORCHESTRATOR_SERVICE,\n useClass: ScrollbarLazyOrchestratorService,\n },\n ]\n : [\n {\n provide: SCROLLBAR_ORCHESTRATOR_SERVICE,\n useClass: ScrollbarOrchestratorService,\n },\n ]),\n ];\n\n const datasourceProvider = this.tableConfig().lazy\n ? [\n {\n provide: DATASOURCE_SERVICE,\n useClass: DatasourceLazyService,\n },\n ]\n : [\n {\n provide: DATASOURCE_SERVICE,\n useClass: DatasourceService,\n },\n ];\n\n const featureProviders = [\n TreeService,\n RenderService,\n ExtraRowService,\n EmptyStateService,\n LoadingService,\n KlesForm,\n ColumnsService,\n FooterService,\n ScrollbarService,\n EventsService,\n RowService,\n CellService,\n CellValueChangeService,\n ValidationService,\n SelectionLoaderService,\n PaginatorService,\n LoaderChildrensService, //TODO\n {\n provide: TABLE_SERVICE,\n useClass: TableService,\n },\n\n ...(this.tableConfig().lazy\n ? [\n {\n provide: HEADER_SERVICE,\n useClass: HeaderLazyService,\n },\n {\n provide: LOADER_SERVICE,\n useClass: LoaderLazyService,\n },\n {\n provide: LINES_SERVICE,\n useClass: LinesLazyService,\n },\n {\n provide: SELECTION_SERVICE,\n useClass: SelectionLazyService,\n },\n\n {\n provide: ROW_DRAG_DROP,\n useFactory: () => new DragDropLazyService(this.tableConfig().dragDropRows),\n },\n {\n provide: SORT_SERVICE,\n useClass: SortLazyService,\n },\n ]\n : [\n {\n provide: LOADER_SERVICE,\n useClass: LoaderService,\n },\n {\n provide: HEADER_SERVICE,\n useClass: HeaderService,\n },\n {\n provide: LINES_SERVICE,\n useClass: LinesService,\n },\n {\n provide: SELECTION_SERVICE,\n useClass: SelectionService,\n },\n\n FilterService,\n {\n provide: ROW_DRAG_DROP,\n useFactory: (paginatorstore: PaginatorStore | null) => new DragDropService(this.tableConfig().dragDropRows, paginatorstore),\n deps: [...(this.tableConfig().paginator ? [PaginatorStore] : [])],\n },\n {\n provide: SORT_SERVICE,\n useClass: SortService,\n },\n ]),\n ];\n\n const providers: Array<Provider | StaticProvider> = [\n storeProviders,\n configProviders,\n datasourceProvider,\n featureProviders,\n orchestratorProviders,\n ];\n\n return Injector.create({\n parent: this.viewContainerRef.injector,\n providers,\n });\n }\n}\n","import { Component, computed, DestroyRef, EventEmitter, HostBinding, inject, input, OnInit, Output } from '@angular/core';\nimport { DynamicTableLoaderDirective } from './directives/dynamic-table-loader.directive';\nimport { KlesTableConfig } from './core/table/config.interface';\nimport { KlesTableConnectorService } from './kles-table-connector.service';\nimport { KlesTableApi } from './core/api/table';\nimport { ScrollbarApi } from './core/api/scrollbar';\nimport { ColumnApi } from './core/api/column';\nimport { PaginationApi } from './core/api/pagination';\nimport { SortApi } from './core/api/sort';\nimport { LoadingApi } from './core/api/loading';\nimport { SelectionApi } from './core/api/selection';\nimport { FormApi } from './core/api/form';\nimport { FooterApi } from './core/api/footer';\nimport { ArrayUiState, GroupUiState } from '@3kles/kles-material-dynamicforms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter, switchMap } from 'rxjs';\nimport { TableEvent } from './services/features/events/events.model';\nimport { CellMousePayload, CellValueChangePayload, RowMousePayload } from './services/features/events/event-payloads.model';\n\n@Component({\n selector: 'kles-dynamic-table',\n templateUrl: './kles-table.component.html',\n standalone: true,\n imports: [DynamicTableLoaderDirective],\n providers: [KlesTableConnectorService],\n styleUrl: './kles-table.component.scss',\n})\nexport class KlesTableComponent<TValue = unknown> implements OnInit, KlesTableApi {\n tableConfig = input.required<KlesTableConfig>();\n private readonly destroyRef = inject(DestroyRef);\n\n @Output() tableEvent = new EventEmitter<TableEvent<TValue>>();\n\n @Output() rowClick = new EventEmitter<RowMousePayload<TValue>>();\n @Output() rowDoubleClick = new EventEmitter<RowMousePayload<TValue>>();\n @Output() rowContextMenu = new EventEmitter<RowMousePayload<TValue>>();\n\n @Output() cellClick = new EventEmitter<CellMousePayload<TValue>>();\n @Output() cellValueChange = new EventEmitter<CellValueChangePayload<TValue>>();\n\n readonly elevationShadow = computed(() => {\n const level = this.tableConfig().elevation ?? 2;\n\n return level === 0 ? 'none' : `var(--mat-sys-level${level})`;\n });\n\n // @Output() selectionChange = new EventEmitter<KlesTableSelectionChangePayload<TValue>>();\n\n // @Output() pageChange = new EventEmitter<KlesTablePageChangePayload>();\n // @Output() sortChange = new EventEmitter<KlesTableSortPayload>();\n // @Output() filterChange = new EventEmitter<KlesTableFilterChangePayload>();\n\n // @Output() lazyQueryChange = new EventEmitter<KlesTableLazyQueryChangePayload>();\n // @Output() loadError = new EventEmitter<KlesTableLoadErrorPayload>();\n\n constructor(private connectorService: KlesTableConnectorService) {}\n\n ngOnInit(): void {\n this.connectorService.connected$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((connected) => connected),\n switchMap(() => {\n return this.connectorService.events.listen();\n }),\n )\n .subscribe((event) => {\n this.dispatchEvent(event);\n });\n }\n\n @HostBinding('attr.id')\n get hostId() {\n return this.tableConfig()?.id ?? undefined;\n }\n\n refresh(): void {\n this.connectorService.refresh();\n }\n\n get scrollbar(): ScrollbarApi {\n return this.connectorService.scrollbar;\n }\n\n get column(): ColumnApi {\n return this.connectorService.column;\n }\n\n get pagination(): PaginationApi | undefined {\n return this.connectorService.pagination;\n }\n\n get sort(): SortApi {\n return this.connectorService.sort;\n }\n\n get loading(): LoadingApi {\n return this.connectorService.loading;\n }\n\n get selection(): SelectionApi {\n return this.connectorService.selection;\n }\n\n get form(): FormApi {\n return this.connectorService.form;\n }\n\n get footer(): FooterApi {\n return this.connectorService.footer;\n }\n\n get ui(): GroupUiState<{\n header: GroupUiState;\n rows: ArrayUiState;\n footer: GroupUiState;\n }> {\n return this.connectorService.ui;\n }\n\n private dispatchEvent(event: TableEvent<TValue>): void {\n this.tableEvent.emit(event);\n\n switch (event.type) {\n case 'rowClick':\n this.rowClick.emit(event.payload);\n break;\n\n case 'rowDoubleClick':\n this.rowDoubleClick.emit(event.payload);\n break;\n\n case 'rowContextMenu':\n this.rowContextMenu.emit(event.payload);\n break;\n\n case 'cellClick':\n this.cellClick.emit(event.payload);\n break;\n\n case 'cellValueChange':\n this.cellValueChange.emit(event.payload);\n break;\n\n // case 'selectionChange':\n // this.selectionChange.emit(event.payload);\n // break;\n\n // case 'pageChange':\n // this.pageChange.emit(event.payload);\n // break;\n\n // case 'sortChange':\n // this.sortChange.emit(event.payload);\n // break;\n\n // case 'filterChange':\n // this.filterChange.emit(event.payload);\n // break;\n\n // case 'lazyQueryChange':\n // this.lazyQueryChange.emit(event.payload);\n // break;\n\n // case 'loadError':\n // this.loadError.emit(event.payload);\n // break;\n }\n }\n}\n","<div class=\"table-frame\" [style.box-shadow]=\"elevationShadow()\">\n <ng-template appDynamicTableLoader [tableConfig]=\"tableConfig()\"></ng-template>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TableComponent } from './components/table/table.component';\nimport { KlesTableComponent } from './kles-table.component';\nimport { KlesMaterialDynamicformsModule } from '@3kles/kles-material-dynamicforms';\n\nconst components = [TableComponent];\nconst directives = [];\nconst pipes = [];\n\n@NgModule({\n imports: [CommonModule, components, KlesTableComponent, KlesMaterialDynamicformsModule],\n providers: [pipes],\n exports: [pipes, directives, KlesTableComponent],\n})\nexport class KlesMaterialTableModule {\n static declarations = [components, directives, pipes];\n}\n","import { Observable } from 'rxjs';\nimport { Query } from '../query/query.interface';\nimport { FormGroup } from '@angular/forms';\n\nexport type LoaderLazyResult<R> = Observable<{ total: number; items: R[]; header?: { [key: string]: unknown } }>;\nexport type LoaderResult<R> = Observable<{ items: R[] }>;\n\ntype LinesLoaderDef<T, R> = {\n params?: () => Observable<T>;\n loader: (params: T) => LoaderResult<R>;\n hasChildren?: (parent: FormGroup, depth: number) => boolean;\n childrens?: (params: T, parent: FormGroup, depth: number) => LoaderResult<R>;\n};\n\ntype LinesLazyLoaderDef<T, R> = {\n params?: () => Observable<T>;\n loader: (params: T, query?: Query) => LoaderLazyResult<R>;\n hasChildren?: (parent: FormGroup, depth: number) => boolean;\n childrens?: (params: T, parent: FormGroup, depth: number, query?: Query) => LoaderLazyResult<R>;\n};\n\ntype Brand<K extends string> = { readonly __brand: K };\n\nexport type LinesLoader<T, R> = LinesLoaderDef<T, R> & Brand<'LinesLoader'>;\nexport type LinesLazyLoader<T, R> = LinesLazyLoaderDef<T, R> & Brand<'LinesLazyLoader'>;\n\nexport const linesLoader = <T, R>(l: LinesLoaderDef<T, R>) => l as LinesLoader<T, R>;\nexport const linesLazyLoader = <T, R>(l: LinesLazyLoaderDef<T, R>) => l as LinesLazyLoader<T, R>;\n","import { FormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nexport type RowId = string | number;\n\nexport interface SelectionResponse {\n selected: boolean;\n count?: number;\n}\n\nexport interface SelectionAllResponse extends SelectionResponse {\n footer?: any;\n}\n\nexport interface SelectionState {\n loading: boolean;\n success: boolean;\n selected?: boolean;\n footer?: any;\n count?: number;\n error?: unknown;\n}\n\ntype SelectionConfigDef<T> = {\n selectionMode?: boolean;\n key?: string;\n params?: () => Observable<T>;\n select?: (params: T, row: FormGroup, selected: boolean, filters?: { [key: string]: any }) => Observable<SelectionResponse>;\n selectAll?: (params: T, selected: boolean, filters?: { [key: string]: any }) => Observable<SelectionAllResponse>;\n\n /** optionnel */\n /** pour indiquer le critère des lignes déja sélectionné */\n isSelected?: (row: FormGroup) => boolean;\n isDisabled?: (row: FormGroup) => boolean;\n};\n\ntype Brand<K extends string> = { readonly __brand: K };\n\nexport type SelectionConfig<T> = SelectionConfigDef<T> & Brand<'SelectionConfig'>;\nexport const selectionConfig = <T>(l: SelectionConfigDef<T>) => l as SelectionConfig<T>;\n","export enum AlignCell {\n LEFT = 'left',\n CENTER = 'center',\n RIGHT = 'right',\n}\n","/*\n * Public API Surface of kles-material-table\n */\n\nexport * from './lib/kles-material-table.module';\n\nexport * from './lib/core/table/config.interface';\nexport * from './lib/core/table/table.interface';\nexport * from './lib/core/table/loader.interface';\nexport * from './lib/core/table/selection-config.interface';\nexport * from './lib/core/table/cell.interface';\nexport * from './lib/core/table/column.interface';\n\nexport * from './lib/components/table/table.component';\nexport * from './lib/components/table/table-intl';\nexport * from './lib/components/empty-state/empty-state.component';\n\nexport * from './lib/kles-table.component';\nexport * from './lib/token';\n\nexport * from './lib/enums/align.enum';\nexport * from './lib/enums/span.enum';\n\nexport * from './lib/core/api/table';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.EventsService","i1.ColumnsService","i2.RowFormFactory","i3.RowContextStore","i1.PaginatorStore","i2.EventsService","i1.ExpandedRowStore","i1.KlesForm","i2.ColumnsService","i3.CellValueChangeService","i4.ValidationService","i1.KlesTableConnectorService","i3.LoadingService","i4.PaginatorService","i5.ScrollbarService","i6.FooterService","i7.ExtraRowService","i8.RenderService","i9.FilterService","i10.ExpandedRowStore","i11.RowFormFactory","i12.EventsService","i13.RowService","i14.CellService","i15.EmptyStateService","i1.PaginatorService","i2","_","i2.FilterService","i3.FilterStore","i4.ColumnsService","i5.EventsService","i2.SelectionLoaderService","i3.ScrollbarService","i4.LoadingService","i6.FilterStore","i2.PaginatorStore","i3.SortStore","i4.FilterStore","i3.RowFormFactory","i4.ExtraRowService","i7.PaginatorService","i1.LoadingService","i3.LoadingOrchestratorService","i1.ScrollbarService","i2.PaginatorService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"3kles-kles-material-table-v2.mjs","sources":["../../../projects/kles-material-table/src/lib/pipes/header-field.pipe.ts","../../../projects/kles-material-table/src/lib/pipes/cell-field.pipe.ts","../../../projects/kles-material-table/src/lib/token.ts","../../../projects/kles-material-table/src/lib/pipes/ng-style.pipe.ts","../../../projects/kles-material-table/src/lib/services/features/events/events.service.ts","../../../projects/kles-material-table/src/lib/services/features/columns/columns.service.ts","../../../projects/kles-material-table/src/lib/directives/resizable-column.directive.ts","../../../projects/kles-material-table/src/lib/pipes/footer-field.pipe.ts","../../../projects/kles-material-table/src/lib/pipes/ui-field.pipe.ts","../../../projects/kles-material-table/src/lib/enums/span.enum.ts","../../../projects/kles-material-table/src/lib/pipes/span.pipe.ts","../../../projects/kles-material-table/src/lib/services/store/expanded-row-store.service.ts","../../../projects/kles-material-table/src/lib/services/features/loader/loader-childrens.service.ts","../../../projects/kles-material-table/src/lib/services/features/table/row-factory.service.ts","../../../projects/kles-material-table/src/lib/services/store/row-context-store.service.ts","../../../projects/kles-material-table/src/lib/services/features/table/form.ts","../../../projects/kles-material-table/src/lib/services/features/tree/tree.service.ts","../../../projects/kles-material-table/src/lib/components/cell/cell.component.ts","../../../projects/kles-material-table/src/lib/components/cell/cell.component.html","../../../projects/kles-material-table/src/lib/components/header/header.component.ts","../../../projects/kles-material-table/src/lib/pipes/header.pipe.ts","../../../projects/kles-material-table/src/lib/components/table/table-intl.ts","../../../projects/kles-material-table/src/lib/components/empty-state/empty-state.component.ts","../../../projects/kles-material-table/src/lib/components/empty-state/empty-state.component.html","../../../projects/kles-material-table/src/lib/pipes/row-context.pipe.ts","../../../projects/kles-material-table/src/lib/kles-table-connector.service.ts","../../../projects/kles-material-table/src/lib/services/features/loading/loading.service.ts","../../../projects/kles-material-table/src/lib/services/store/paginator-store.service.ts","../../../projects/kles-material-table/src/lib/services/features/paginator/paginator.service.ts","../../../projects/kles-material-table/src/lib/services/features/scrollbar/scrollbar.service.ts","../../../projects/kles-material-table/src/lib/services/features/footer/footer.service.ts","../../../projects/kles-material-table/src/lib/services/features/extra-row/extra-row.service.ts","../../../projects/kles-material-table/src/lib/services/features/render/render.service.ts","../../../projects/kles-material-table/src/lib/services/features/table/datasource.ts","../../../projects/kles-material-table/src/lib/services/features/cell/cell-valuechange.service.ts","../../../projects/kles-material-table/src/lib/services/features/validation/validation.service.ts","../../../projects/kles-material-table/src/lib/services/features/datasource/datasource.service.ts","../../../projects/kles-material-table/src/lib/services/features/filter/filter.service.ts","../../../projects/kles-material-table/src/lib/services/features/row/row.service.ts","../../../projects/kles-material-table/src/lib/services/features/cell/cell.service.ts","../../../projects/kles-material-table/src/lib/services/features/empty-state/empty-state.service.ts","../../../projects/kles-material-table/src/lib/services/features/dragdrop/dragdrop.service.ts","../../../projects/kles-material-table/src/lib/components/table/table.component.ts","../../../projects/kles-material-table/src/lib/components/table/table.component.html","../../../projects/kles-material-table/src/lib/utils/destroyable.guard.ts","../../../projects/kles-material-table/src/lib/components/paginate-table/paginate-table.component.ts","../../../projects/kles-material-table/src/lib/components/paginate-table/paginate-table.component.html","../../../projects/kles-material-table/src/lib/services/store/sort-store.service.ts","../../../projects/kles-material-table/src/lib/services/features/sort/sort.service.ts","../../../projects/kles-material-table/src/lib/services/store/filter-store.service.ts","../../../projects/kles-material-table/src/lib/components/infinite-scroll-table/infinite-scroll-table.component.ts","../../../projects/kles-material-table/src/lib/components/infinite-scroll-table/infinite-scroll-table.component.html","../../../projects/kles-material-table/src/lib/services/features/selection/selection-loader.service.ts","../../../projects/kles-material-table/src/lib/services/features/header/header.service.ts","../../../projects/kles-material-table/src/lib/core/selection/selection-model-error.ts","../../../projects/kles-material-table/src/lib/core/selection/selection-state.enum.ts","../../../projects/kles-material-table/src/lib/core/selection/selection-model.ts","../../../projects/kles-material-table/src/lib/services/features/selection/selection.service.ts","../../../projects/kles-material-table/src/lib/services/features/loader/loader.service.ts","../../../projects/kles-material-table/src/lib/services/features/lines/lines.service.ts","../../../projects/kles-material-table/src/lib/services/features/loading/loading-orchestrator.service.ts","../../../projects/kles-material-table/src/lib/services/features/table/table.service.ts","../../../projects/kles-material-table/src/lib/services/features/scrollbar/scrollbar-orchestrator.service.ts","../../../projects/kles-material-table/src/lib/directives/dynamic-table-loader.directive.ts","../../../projects/kles-material-table/src/lib/kles-table.component.ts","../../../projects/kles-material-table/src/lib/kles-table.component.html","../../../projects/kles-material-table/src/lib/kles-material-table.module.ts","../../../projects/kles-material-table/src/lib/core/table/loader.interface.ts","../../../projects/kles-material-table/src/lib/core/table/selection-config.interface.ts","../../../projects/kles-material-table/src/lib/enums/align.enum.ts","../../../projects/kles-material-table/src/public-api.ts","../../../projects/kles-material-table/src/3kles-kles-material-table-v2.ts"],"sourcesContent":["import { IKlesFieldConfig } from '@3kles/kles-material-dynamicforms';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { KlesColumnConfig } from '../core/table/column.interface';\nimport { SortHeaderArrowPosition } from '@angular/material/sort';\n\n@Pipe({\n name: 'headerField',\n standalone: true,\n})\nexport class HeaderFieldPipe implements PipeTransform {\n transform(\n col: KlesColumnConfig | null | undefined,\n ): (IKlesFieldConfig) | null {\n if (!col) return null;\n return {\n name: col.columnDef,\n ...col.headerCell?.field,\n };\n }\n}\n","import { IKlesFieldConfig } from '@3kles/kles-material-dynamicforms';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { KlesColumnConfig } from '../core/table/column.interface';\nimport { KlesExtraCellFieldConfig } from '../core/table/cell.interface';\n\n@Pipe({\n name: 'cellField',\n standalone: true,\n})\nexport class CellFieldPipe implements PipeTransform {\n transform(col: KlesColumnConfig | null | undefined): (IKlesFieldConfig & { canExpand?: boolean }) | null {\n if (!col) return null;\n return { name: col.columnDef, canExpand: col.canExpand, ...col.cell?.field };\n }\n}\n\n@Pipe({\n name: 'extraCellField',\n standalone: true,\n})\nexport class ExtraCellFieldPipe implements PipeTransform {\n transform(col: KlesExtraCellFieldConfig | null | undefined): IKlesFieldConfig | null {\n if (!col) return null;\n return { name: col.columnDef, ...col.field };\n }\n}\n","import { InjectionToken, WritableSignal } from '@angular/core';\nimport { KlesColumnConfig } from './core/table/column.interface';\nimport { DragDropConfig, DragDropRowContext, EmptyStateConfig, ExtraRowConfig, LoaderConfig, PaginatorConfig } from './core/table/config.interface';\nimport { DragDropService } from './services/features/dragdrop/dragdrop.service';\nimport { Sort } from '@angular/material/sort';\n\nimport { SelectionConfig } from './core/table/selection-config.interface';\nimport { IDatasourceService } from './services/features/datasource/datasource.service';\nimport { ISelectionService } from './services/features/selection/selection.service';\nimport { ISortService } from './services/features/sort/sort.service';\nimport { ILinesService } from './services/features/lines/lines.service';\nimport { ITableService } from './services/features/table/table.service';\nimport { IHeaderService } from './services/features/header/header.service';\n\nimport { IScrollbarOrchestratorService } from './services/features/scrollbar/scrollbar-orchestrator.service';\nimport { ILoader } from './services/features/loader/loader.interface';\n\nexport const SELECTION_CONFIG = new InjectionToken<SelectionConfig<unknown>>('SELECTION_CONFIG');\n\nexport const LOADER_CONFIG = new InjectionToken<LoaderConfig<unknown, unknown>>('LOADER_CONFIG');\nexport const COLUMNS = new InjectionToken<WritableSignal<KlesColumnConfig[]>>('COLUMNS');\nexport const FOOTER = new InjectionToken<WritableSignal<boolean>>('FOOTER');\n\nexport const EXTRA_ROWS = new InjectionToken<WritableSignal<ExtraRowConfig[]>>('EXTRA_ROWS');\n\nexport const ROW_DRAG_DROP = new InjectionToken<DragDropService>('ROW_DRAG_DROP');\nexport const DRAG_DROP_CONFIG = new InjectionToken<DragDropConfig | undefined>('DRAG_DROP_CONFIG');\nexport const KLES_DRAG_DROP_ROW_CONTEXT = new InjectionToken<DragDropRowContext>('KLES_DRAG_DROP_ROW_CONTEXT');\n\nexport const PAGINATOR_CONFIG = new InjectionToken<PaginatorConfig>('PAGINATOR_CONFIG');\nexport const SORT_CONFIG = new InjectionToken<Sort>('SORT_CONFIG');\n\nexport const HEADER_SERVICE = new InjectionToken<IHeaderService>('HEADER_SERVICE');\nexport const LOADER_SERVICE = new InjectionToken<ILoader<unknown>>('LOADER_SERVICE');\nexport const LINES_SERVICE = new InjectionToken<ILinesService>('LINES_SERVICE');\nexport const DATASOURCE_SERVICE = new InjectionToken<IDatasourceService>('DATASOURCE_SERVICE');\nexport const SELECTION_SERVICE = new InjectionToken<ISelectionService>('SELECTION_SERVICE');\nexport const SORT_SERVICE = new InjectionToken<ISortService>('SORT_SERVICE');\nexport const SCROLLBAR_ORCHESTRATOR_SERVICE = new InjectionToken<IScrollbarOrchestratorService>('SCROLLBAR_ORCHESTRATOR_SERVICE');\n\nexport const TABLE_SERVICE = new InjectionToken<ITableService>('TABLE_SERVICE');\n\nexport const EMPTY_STATE_CONFIG = new InjectionToken<boolean | EmptyStateConfig | undefined>('EMPTY_STATE_CONFIG');\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { NgStyleInput } from '../core/table/cell.interface';\nimport { AbstractControl, FormControl, FormControlStatus } from '@angular/forms';\n\n@Pipe({\n name: 'resolveNgStyle',\n standalone: true,\n})\nexport class ResolveNgStylePipe implements PipeTransform {\n transform(style?: NgStyleInput, value?: any, status?: FormControlStatus, row?: any, rowStatus?: FormControlStatus): Record<string, any> {\n if (!style) return {};\n return typeof style === 'function' ? style(value, status, row, rowStatus) : style;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { TableEvent, TableEventPayload, TableEventType } from './events.model';\nimport { TableEventMap } from './event-map.model';\n\n@Injectable()\nexport class EventsService<TValue = unknown> {\n private readonly eventsSubject = new Subject<TableEvent<TValue>>();\n\n public readonly events$: Observable<TableEvent<TValue>> = this.eventsSubject.asObservable();\n\n /**\n * Émet un event typé.\n *\n * Si l'event a un payload, TypeScript t'oblige à le fournir.\n * Si l'event est void, TypeScript t'empêche de fournir un payload.\n */\n public emit<K extends TableEventType<TValue>>(type: K, ...args: TableEventMap<TValue>[K] extends void ? [] : [payload: TableEventPayload<TValue, K>]): void {\n const payload = args[0];\n\n const event = payload === undefined ? ({ type } as TableEvent<TValue>) : ({ type, payload } as TableEvent<TValue>);\n\n this.eventsSubject.next(event);\n }\n\n /**\n * Émet directement un event complet.\n * Pratique si tu construis déjà l'objet ailleurs.\n */\n public emitEvent(event: TableEvent<TValue>): void {\n this.eventsSubject.next(event);\n }\n\n public complete(): void {\n this.eventsSubject.complete();\n }\n}\n","import { computed, Inject, Injectable, Signal, WritableSignal } from '@angular/core';\nimport { COLUMNS } from '../../../token';\nimport { KlesColumnConfig } from '../../../core/table/column.interface';\nimport { EventsService } from '../events/events.service';\n\n@Injectable()\nexport class ColumnsService {\n public displayedColumns: Signal<string[]> | undefined;\n\n constructor(\n @Inject(COLUMNS) private _columns: WritableSignal<KlesColumnConfig[]>,\n private readonly eventsService: EventsService,\n ) {}\n\n public register() {\n this.setDisplayedColumns();\n }\n\n get columns(): Signal<KlesColumnConfig[]> {\n return this._columns.asReadonly();\n }\n\n public readonly stickyStartBoundary = computed<string | undefined>(() => {\n return this.getVisibleColumns()\n .filter((column) => column.sticky === true)\n .at(-1)?.columnDef;\n });\n\n public readonly stickyEndBoundary = computed<string | undefined>(() => {\n return this.getVisibleColumns()\n .filter((column) => column.stickyEnd === true)\n .at(0)?.columnDef;\n });\n\n public getVisible(): string[] {\n return this.getVisibleColumns().map((column) => column.columnDef);\n }\n\n public setVisible(columnDef: string, visible: boolean): void {\n this.updateColumn(columnDef, { visible });\n\n this.eventsService.emit('columnVisibilityChange', {\n columnDef,\n columns: this.getVisible(),\n visible,\n });\n }\n\n public toggleVisible(columnDef: string): void {\n const visible = this._columns().find((col) => col.columnDef === columnDef)?.visible;\n this.setVisible(columnDef, visible === undefined ? false : !visible);\n }\n\n public changeWidth(columnDef: string, options: { width?: string; maxWidth?: string; minWidth?: string }) {\n this.updateColumn(columnDef, {\n ...(options.width && { width: options.width }),\n ...(options.maxWidth && { maxWidth: options.maxWidth }),\n ...(options.minWidth && { minWidth: options.minWidth }),\n });\n }\n\n public setResizable(columnDef: string, resizable: boolean) {\n this.updateColumn(columnDef, { resizable });\n }\n\n public toggleResizable(columnDef: string): void {\n const resizable = this._columns().find((col) => col.columnDef === columnDef)?.resizable;\n this.setResizable(columnDef, resizable === undefined ? true : !resizable);\n }\n\n public setSticky(columnDef: string, options: { sticky?: boolean; stickyEnd?: boolean }) {\n this.updateColumn(columnDef, {\n ...(options.sticky !== undefined && { sticky: options.sticky }),\n ...(options.stickyEnd !== undefined && { stickyEnd: options.stickyEnd }),\n });\n }\n\n public setColumnPosition(columnDef: string, position: number): void {\n const columns = this._columns();\n const previousIndex = columns.findIndex((column) => column.columnDef === columnDef);\n\n if (previousIndex < 0 || columns.length < 2 || !Number.isFinite(position)) return;\n\n const currentIndex = Math.min(columns.length - 1, Math.max(0, Math.trunc(position)));\n if (previousIndex === currentIndex) return;\n\n const reorderedColumns = [...columns];\n const [column] = reorderedColumns.splice(previousIndex, 1);\n reorderedColumns.splice(currentIndex, 0, column);\n this._columns.set(reorderedColumns);\n\n this.eventsService.emit('columnOrderChange', {\n previousIndex,\n currentIndex,\n columns: this.getVisible(),\n });\n }\n\n private updateColumn(columnDef: string, config: Partial<KlesColumnConfig>): void {\n this._columns.update((columns) =>\n columns.map((col) =>\n col.columnDef === columnDef\n ? {\n ...col,\n ...config,\n cell: config.cell ? { ...col.cell, ...config.cell } : col.cell,\n headerCell: config.headerCell ? { ...col.headerCell, ...config.headerCell } : col.headerCell,\n footerCell: config.footerCell ? { ...col.footerCell, ...config.footerCell } : col.footerCell,\n }\n : col,\n ),\n );\n }\n\n private setDisplayedColumns(): void {\n this.displayedColumns = computed(() => {\n return this.getVisibleColumns().map((column) => column.columnDef);\n });\n }\n\n private getVisibleColumns(): KlesColumnConfig[] {\n return this._columns().filter((column) => {\n if (column.visibleWhen !== undefined) {\n return column.visibleWhen();\n }\n\n return column.visible !== false;\n });\n }\n}\n","import { Directive, ElementRef, HostBinding, input, NgZone, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';\nimport { KlesColumnConfig } from '../core/table/column.interface';\nimport { EventsService } from '../services/features/events/events.service';\nimport { ColumnsService } from '../services/features/columns/columns.service';\n\n@Directive({ selector: 'th[appResizableColumn]', standalone: true })\nexport class ResizableColumnDirective implements OnInit, OnChanges, OnDestroy {\n column = input.required<KlesColumnConfig>({ alias: 'appResizableColumn' });\n\n private readonly defaultMinWidth = 60;\n private readonly defaultMaxWidth = 1200;\n private readonly keyboardStep = 4;\n private startX = 0;\n private startWidth = 0;\n private currentWidth = 0;\n private resizing = false;\n private handle?: HTMLElement;\n private widthLabel?: HTMLElement;\n private activeCells: HTMLElement[] = [];\n private resizeCells: HTMLElement[] = [];\n private resizeCol?: HTMLTableColElement;\n private resizeRoot?: HTMLElement;\n private resizeMinWidth = this.defaultMinWidth;\n private resizeMaxWidth = this.defaultMaxWidth;\n private pendingWidth?: number;\n private animationFrameId?: number;\n private contentMinWidth = this.defaultMinWidth;\n private contentMeasurementFrameId?: number;\n private handleCleanups: Array<() => void> = [];\n private documentCleanups: Array<() => void> = [];\n\n @HostBinding('attr.appResizableColumn')\n get appResizableColumnAttr(): string {\n return this.column().columnDef;\n }\n\n constructor(\n private readonly el: ElementRef<HTMLElement>,\n private readonly renderer: Renderer2,\n private readonly zone: NgZone,\n private readonly eventsService: EventsService,\n private readonly columnsService: ColumnsService,\n ) {}\n\n ngOnInit(): void {\n if (this.column().resizable) this.apply();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const change = changes.column;\n if (change && !change.isFirstChange() && change.previousValue.resizable !== change.currentValue.resizable) {\n change.currentValue.resizable ? this.apply() : this.remove();\n }\n }\n\n ngOnDestroy(): void {\n this.stopResize(false);\n this.remove();\n }\n\n private startResize(event: PointerEvent): void {\n if (event.button !== 0 || this.resizing) return;\n event.preventDefault();\n event.stopPropagation();\n this.cancelContentMeasurement();\n\n const th = this.el.nativeElement;\n this.startX = event.clientX;\n this.startWidth = th.getBoundingClientRect().width;\n this.currentWidth = this.startWidth;\n this.cacheResizeTargets();\n this.resizing = true;\n this.setActiveState(true);\n this.updateWidthLabel(this.currentWidth);\n this.emitResizeStart(this.startWidth);\n\n this.zone.runOutsideAngular(() => {\n const doc = th.ownerDocument;\n this.documentCleanups.push(\n this.renderer.listen(doc, 'pointermove', (moveEvent: PointerEvent) => this.onPointerMove(moveEvent)),\n this.renderer.listen(doc, 'pointerup', () => this.stopResize()),\n this.renderer.listen(doc, 'pointercancel', () => this.stopResize()),\n );\n });\n }\n\n private onPointerMove(event: PointerEvent): void {\n if (!this.resizing) return;\n event.preventDefault();\n this.pendingWidth = this.startWidth + event.clientX - this.startX;\n this.scheduleResizeFrame();\n }\n\n private stopResize(emit = true): void {\n this.clearDocumentListeners();\n if (!this.resizing) return;\n\n this.flushResizeFrame();\n this.resizing = false;\n this.applyWidth(this.currentWidth, this.resizeCells);\n this.setActiveState(false);\n this.clearResizeCache();\n this.scheduleContentMeasurement();\n if (this.currentWidth <= 0) return;\n\n this.columnsService.changeWidth(this.column().columnDef, { width: `${this.currentWidth}px` });\n if (emit) {\n this.zone.run(() =>\n this.eventsService.emit('columnResizeEnd', {\n columnDef: this.column().columnDef,\n width: this.currentWidth,\n previousWidth: this.startWidth,\n }),\n );\n }\n }\n\n private onKeyDown(event: KeyboardEvent): void {\n if (!['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) return;\n event.preventDefault();\n event.stopPropagation();\n\n const previousWidth = this.el.nativeElement.getBoundingClientRect().width;\n const step = event.shiftKey ? this.keyboardStep * 4 : this.keyboardStep;\n let next = previousWidth;\n if (event.key === 'ArrowLeft') next -= step;\n if (event.key === 'ArrowRight') next += step;\n if (event.key === 'Home') next = this.getMinWidth();\n if (event.key === 'End') next = this.getMaxWidth();\n this.commitAccessibleResize(previousWidth, this.clampWidth(next));\n }\n\n private autoFit(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n const previousWidth = this.el.nativeElement.getBoundingClientRect().width;\n this.commitAccessibleResize(previousWidth, this.measureContentWidth());\n }\n\n private commitAccessibleResize(previousWidth: number, nextWidth: number): void {\n if (Math.round(previousWidth) === Math.round(nextWidth)) return;\n this.startWidth = previousWidth;\n this.currentWidth = previousWidth;\n this.emitResizeStart(previousWidth);\n this.resizeTo(nextWidth, true, false);\n this.columnsService.changeWidth(this.column().columnDef, { width: `${nextWidth}px` });\n this.eventsService.emit('columnResizeEnd', {\n columnDef: this.column().columnDef,\n width: nextWidth,\n previousWidth,\n });\n }\n\n private resizeTo(width: number, emit: boolean, previewOnly = this.resizing): void {\n const next = this.resizing\n ? Math.min(this.resizeMaxWidth, Math.max(this.resizeMinWidth, width))\n : this.clampWidth(width);\n if (Math.round(next) === Math.round(this.currentWidth)) return;\n\n const previousWidth = this.currentWidth;\n this.currentWidth = next;\n previewOnly ? this.applyPreviewWidth(next) : this.applyWidth(next);\n this.updateWidthLabel(next);\n if (emit) {\n this.zone.run(() =>\n this.eventsService.emit('columnResize', {\n columnDef: this.column().columnDef,\n width: next,\n previousWidth,\n }),\n );\n }\n }\n\n private emitResizeStart(width: number): void {\n this.zone.run(() =>\n this.eventsService.emit('columnResizeStart', {\n columnDef: this.column().columnDef,\n width,\n previousWidth: width,\n }),\n );\n }\n\n private applyWidth(px: number, cells = this.getColumnCells()): void {\n if (this.resizeCol) this.resizeCol.style.width = `${px}px`;\n for (const cell of cells) {\n cell.style.width = `${px}px`;\n cell.style.minWidth = `${px}px`;\n cell.style.maxWidth = `${px}px`;\n cell.style.flex = `0 0 ${px}px`;\n }\n this.handle?.setAttribute('aria-valuenow', `${Math.round(px)}`);\n }\n\n private applyPreviewWidth(px: number): void {\n this.resizeRoot?.style.setProperty('--kles-column-resize-width', `${px}px`);\n if (this.resizeCol) {\n this.resizeCol.style.width = `${px}px`;\n } else {\n // Fallback for consumers rendering without the table colgroup.\n for (const cell of this.resizeCells) cell.style.width = `${px}px`;\n }\n this.handle?.setAttribute('aria-valuenow', `${Math.round(px)}`);\n }\n\n private scheduleResizeFrame(): void {\n if (this.animationFrameId !== undefined) return;\n const view = this.el.nativeElement.ownerDocument.defaultView;\n if (!view) {\n this.flushPendingWidth();\n return;\n }\n this.animationFrameId = view.requestAnimationFrame(() => {\n this.animationFrameId = undefined;\n this.flushPendingWidth();\n });\n }\n\n private flushResizeFrame(): void {\n const view = this.el.nativeElement.ownerDocument.defaultView;\n if (this.animationFrameId !== undefined && view) view.cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = undefined;\n this.flushPendingWidth();\n }\n\n private flushPendingWidth(): void {\n if (this.pendingWidth === undefined) return;\n const width = this.pendingWidth;\n this.pendingWidth = undefined;\n this.resizeTo(width, true, true);\n }\n\n private cacheResizeTargets(): void {\n const root = this.el.nativeElement.closest('table, mat-table, cdk-table');\n this.resizeRoot = root ? (root as HTMLElement) : undefined;\n this.resizeCells = this.getColumnCells();\n this.resizeCol = root\n ? Array.from(root.querySelectorAll<HTMLTableColElement>('col[data-column-def]')).find(\n (col) => col.dataset['columnDef'] === this.column().columnDef,\n )\n : undefined;\n this.resizeMinWidth = Math.max(this.getMinWidth(), this.contentMinWidth);\n this.resizeMaxWidth = Math.max(this.resizeMinWidth, this.getMaxWidth());\n this.handle?.setAttribute('aria-valuemin', `${Math.round(this.resizeMinWidth)}`);\n }\n\n private clearResizeCache(): void {\n this.resizeRoot?.style.removeProperty('--kles-column-resize-width');\n this.pendingWidth = undefined;\n this.resizeCells = [];\n this.resizeCol = undefined;\n this.resizeRoot = undefined;\n this.resizeMinWidth = this.defaultMinWidth;\n this.resizeMaxWidth = this.defaultMaxWidth;\n }\n\n private scheduleContentMeasurement(): void {\n if (this.resizing || this.contentMeasurementFrameId !== undefined) return;\n const view = this.el.nativeElement.ownerDocument.defaultView;\n if (!view) return;\n this.contentMeasurementFrameId = view.requestAnimationFrame(() => {\n this.contentMeasurementFrameId = undefined;\n if (this.resizing || !this.handle) return;\n this.contentMinWidth = this.measureContentWidth();\n this.handle.setAttribute('aria-valuemin', `${Math.round(Math.max(this.getMinWidth(), this.contentMinWidth))}`);\n });\n }\n\n private cancelContentMeasurement(): void {\n const view = this.el.nativeElement.ownerDocument.defaultView;\n if (this.contentMeasurementFrameId !== undefined && view) view.cancelAnimationFrame(this.contentMeasurementFrameId);\n this.contentMeasurementFrameId = undefined;\n }\n\n private measureContentWidth(cells = this.getColumnCells()): number {\n const doc = this.el.nativeElement.ownerDocument;\n const measurementRoot = this.renderer.createElement('div') as HTMLElement;\n const clones: HTMLElement[] = [];\n Object.assign(measurementRoot.style, {\n position: 'fixed',\n left: '-10000px',\n top: '0',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n visibility: 'hidden',\n pointerEvents: 'none',\n });\n\n let measured = this.getMinWidth();\n for (const cell of cells) {\n const clone = cell.cloneNode(true) as HTMLElement;\n clone.querySelector('.resize-handle')?.remove();\n Object.assign(clone.style, {\n position: 'static',\n width: 'max-content',\n minWidth: '0',\n maxWidth: 'none',\n whiteSpace: 'nowrap',\n flex: 'none',\n });\n clones.push(clone);\n measurementRoot.appendChild(clone);\n }\n\n doc.body.appendChild(measurementRoot);\n for (const clone of clones) {\n measured = Math.max(measured, clone.getBoundingClientRect().width);\n }\n measurementRoot.remove();\n return this.clampWidth(Math.ceil(measured));\n }\n\n private setActiveState(active: boolean): void {\n const th = this.el.nativeElement;\n const method = active ? 'addClass' : 'removeClass';\n this.renderer[method](th, 'column-resizing');\n this.renderer[method](th.ownerDocument.body, 'kles-column-resizing');\n if (active) {\n this.renderer.setStyle(th.ownerDocument.body, 'cursor', 'col-resize');\n this.renderer.setStyle(th.ownerDocument.body, 'user-select', 'none');\n } else {\n this.renderer.removeStyle(th.ownerDocument.body, 'cursor');\n this.renderer.removeStyle(th.ownerDocument.body, 'user-select');\n }\n\n this.activeCells = active ? this.resizeCells : this.activeCells;\n for (const cell of this.activeCells) this.renderer[method](cell, 'column-resizing-cell');\n if (!active) this.activeCells = [];\n }\n\n private updateWidthLabel(width: number): void {\n if (this.widthLabel) this.widthLabel.textContent = `${Math.round(width)} px`;\n }\n\n private getColumnCells(): HTMLElement[] {\n const root = this.el.nativeElement.closest('table, mat-table, cdk-table');\n if (!root) return [];\n const columnDef = this.column().columnDef.replace(/[^a-z0-9_-]/gi, '-');\n return Array.from(root.querySelectorAll<HTMLElement>(`.mat-column-${columnDef}, .cdk-column-${columnDef}`));\n }\n\n private clampWidth(width: number): number {\n return Math.min(this.getMaxWidth(), Math.max(this.getMinWidth(), width));\n }\n\n private getMinWidth(): number {\n return this.resolveCssWidth(this.column().minWidth, this.defaultMinWidth);\n }\n\n private getMaxWidth(): number {\n return Math.max(this.getMinWidth(), this.resolveCssWidth(this.column().maxWidth, this.defaultMaxWidth));\n }\n\n private resolveCssWidth(value: string | undefined, fallback: number): number {\n if (!value) return fallback;\n const numeric = Number.parseFloat(value);\n if (value.trim().endsWith('px') && Number.isFinite(numeric)) return numeric;\n\n const probe = this.renderer.createElement('span') as HTMLElement;\n Object.assign(probe.style, { position: 'absolute', visibility: 'hidden', pointerEvents: 'none', width: value });\n this.renderer.appendChild(this.el.nativeElement, probe);\n const width = probe.getBoundingClientRect().width;\n this.renderer.removeChild(this.el.nativeElement, probe);\n return width > 0 ? width : fallback;\n }\n\n private apply(): void {\n this.remove();\n const th = this.el.nativeElement;\n this.handle = this.renderer.createElement('span');\n this.widthLabel = this.renderer.createElement('span');\n this.renderer.addClass(th, 'resizable-column');\n this.renderer.addClass(this.handle, 'resize-handle');\n this.renderer.addClass(this.widthLabel, 'resize-width-label');\n this.renderer.appendChild(this.handle, this.widthLabel);\n this.renderer.appendChild(th, this.handle);\n\n this.renderer.setAttribute(this.handle, 'role', 'separator');\n this.renderer.setAttribute(this.handle, 'aria-orientation', 'vertical');\n this.renderer.setAttribute(this.handle, 'aria-label', `Redimensionner la colonne ${this.column().columnDef}`);\n this.renderer.setAttribute(this.handle, 'aria-valuemin', `${Math.round(this.getMinWidth())}`);\n this.renderer.setAttribute(this.handle, 'aria-valuemax', `${Math.round(this.getMaxWidth())}`);\n this.renderer.setAttribute(this.handle, 'aria-valuenow', `${Math.round(th.getBoundingClientRect().width)}`);\n this.renderer.setAttribute(this.handle, 'tabindex', '0');\n\n this.handleCleanups.push(\n this.renderer.listen(this.handle, 'pointerdown', (event: PointerEvent) => this.startResize(event)),\n this.renderer.listen(this.handle, 'pointerenter', () => this.scheduleContentMeasurement()),\n this.renderer.listen(this.handle, 'dblclick', (event: MouseEvent) => this.autoFit(event)),\n this.renderer.listen(this.handle, 'keydown', (event: KeyboardEvent) => this.onKeyDown(event)),\n this.renderer.listen(this.handle, 'click', (event: MouseEvent) => event.stopPropagation()),\n );\n this.scheduleContentMeasurement();\n }\n\n private remove(): void {\n if (this.resizing) this.stopResize(false);\n this.flushResizeFrame();\n this.cancelContentMeasurement();\n this.clearResizeCache();\n this.clearDocumentListeners();\n this.handleCleanups.splice(0).forEach((cleanup) => cleanup());\n if (this.handle) this.renderer.removeChild(this.el.nativeElement, this.handle);\n this.renderer.removeClass(this.el.nativeElement, 'resizable-column');\n this.handle = undefined;\n this.widthLabel = undefined;\n }\n\n private clearDocumentListeners(): void {\n this.documentCleanups.splice(0).forEach((cleanup) => cleanup());\n }\n}\n","import { IKlesFieldConfig } from '@3kles/kles-material-dynamicforms';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { KlesColumnConfig } from '../core/table/column.interface';\n\n@Pipe({\n name: 'footerField',\n standalone: true,\n})\nexport class FooterFieldPipe implements PipeTransform {\n transform(col: KlesColumnConfig | null | undefined): IKlesFieldConfig | null {\n if (!col) return null;\n return { name: col.columnDef, ...col.footerCell.field };\n }\n}\n","import { AbstractUiState, IKlesFieldConfig } from '@3kles/kles-material-dynamicforms';\nimport { inject, Pipe, PipeTransform } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { TABLE_SERVICE } from '../token';\nimport { ITableService } from '../services/features/table/table.service';\n\n@Pipe({\n name: 'uiField',\n standalone: true,\n})\nexport class UiFieldPipe implements PipeTransform {\n private tableService = inject<ITableService>(TABLE_SERVICE);\n\n transform(control: AbstractControl | null | undefined): AbstractUiState | undefined {\n if (!control) return undefined;\n return this.tableService?.klesForm.uiStore.get(control);\n }\n}\n","export enum Span {\n MAX = 'max'\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Span } from '../enums/span.enum';\n\n@Pipe({\n name: 'spanPipe',\n standalone: true,\n})\nexport class SpanPipe implements PipeTransform {\n transform(span: number | Span, maxSize: number): number {\n if (span === Span.MAX) {\n return maxSize;\n }\n return span;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ITableStore } from './store';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class ExpandedRowStore implements ITableStore {\n private readonly _expandedIds$ = new BehaviorSubject<Set<string>>(new Set());\n\n public readonly expandedIds$ = this._expandedIds$.asObservable();\n\n public reset(): void {\n this._expandedIds$.next(new Set());\n }\n\n public isExpanded(id: string): boolean {\n return this._expandedIds$.value.has(id);\n }\n\n public get expandedIds(): ReadonlySet<string> {\n return this._expandedIds$.value;\n }\n\n expand(id: string): void {\n const next = new Set(this._expandedIds$.value);\n next.add(id);\n this._expandedIds$.next(next);\n }\n\n collapse(id: string): void {\n const next = new Set(this._expandedIds$.value);\n next.delete(id);\n this._expandedIds$.next(next);\n }\n\n toggle(id: string): void {\n const next = new Set(this._expandedIds$.value);\n next.has(id) ? next.delete(id) : next.add(id);\n this._expandedIds$.next(next);\n }\n}\n","import { Injectable, Inject } from '@angular/core';\n\nimport { Subject, Observable, combineLatest, startWith, of, auditTime, switchMap, concat, catchError, map } from 'rxjs';\nimport { LOADER_CONFIG } from '../../../token';\nimport { IChildrensLoader } from './loader.interface';\nimport { LoaderConfig } from '../../../core/table/config.interface';\nimport { LinesLoader } from '../../../core/table/loader.interface';\nimport { FormGroup } from '@angular/forms';\n\n@Injectable()\nexport class LoaderChildrensService<T, R> implements IChildrensLoader<R> {\n private _refresh$ = new Subject<void>();\n\n constructor(@Inject(LOADER_CONFIG) private readonly loaderConfig: LoaderConfig<T, R>) {}\n\n public load(parent: FormGroup, depth: number): Observable<{ total: number; items: R[]; loading: boolean; error?: unknown }> {\n const linesLoader = this.loaderConfig.lines as LinesLoader<T, R>;\n return combineLatest([this._refresh$.pipe(startWith(void 0)), linesLoader.params?.() || of({} as T)]).pipe(\n auditTime(0),\n switchMap(([_, params]) => {\n return concat(\n of({ loading: true, total: 0, items: [] }),\n (linesLoader.childrens?.(params, parent, depth) ?? of({ items: [] })).pipe(\n catchError((err) => {\n return of({ error: err, items: [] });\n }),\n map((response) => {\n return { ...response, loading: false, total: response?.items.length || 0 };\n }),\n ),\n );\n }),\n );\n }\n\n public refresh() {\n this._refresh$.next();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup } from '@angular/forms';\nimport {\n AbstractUiState,\n componentMapper,\n GroupUiState,\n IKlesFieldConfig,\n klesFieldControlFactory,\n klesFieldUiFactory,\n} from '@3kles/kles-material-dynamicforms';\nimport { KlesRowContext } from '../../../core/table/row-context.interface';\n\nexport interface KlesCreatedRow<TSource = unknown> {\n formGroup: FormGroup;\n groupUi: GroupUiState;\n context: KlesRowContext<TSource>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RowFormFactory {\n createControl(field: IKlesFieldConfig, value?: any): { control: AbstractControl; ui: AbstractUiState } {\n let control: AbstractControl;\n let ui: AbstractUiState;\n\n if (field.type) {\n control =\n componentMapper.find((c) => c.type === field.type)?.factory({ ...field, value }) || klesFieldControlFactory({ ...field, value });\n ui = componentMapper.find((c) => c.type === field.type)?.ui?.({ ...field, value }) || klesFieldUiFactory({ ...field, value });\n } else {\n control =\n componentMapper.find((c) => c.component === field.component)?.factory({ ...field, value }) ||\n klesFieldControlFactory({ ...field, value });\n ui = componentMapper.find((c) => c.component === field.component)?.ui?.({ ...field, value }) || klesFieldUiFactory({ ...field, value });\n }\n return { control, ui };\n }\n\n createRow<TSource extends Record<string, any>>(\n fields: IKlesFieldConfig[],\n record: TSource,\n meta: { depth: number; parentId: string | number | null } = { depth: 0, parentId: null },\n ): KlesCreatedRow<TSource> {\n const data = { _id: crypto.randomUUID(), ...record };\n\n const controls: Record<string, any> = {\n _id: new FormControl(data._id, { nonNullable: true }),\n _depth: new FormControl(meta.depth),\n _parentId: new FormControl(meta.parentId),\n };\n\n const uis: Record<string, any> = {};\n\n for (const field of fields) {\n const { control, ui } = this.createControl(field, data?.[field.name] ?? undefined);\n controls[field.name] = control;\n uis[field.name] = ui;\n }\n return {\n formGroup: new FormGroup<any>(controls),\n groupUi: new GroupUiState(uis),\n context: {\n source: record,\n _id: data._id,\n meta,\n },\n };\n }\n\n createRows<TSource extends Record<string, any>>(\n fields: IKlesFieldConfig[],\n records: TSource[],\n meta: { depth: number; parentId: string | number | null } = { depth: 0, parentId: null },\n ): KlesCreatedRow<TSource>[] {\n return records.map((r) => this.createRow(fields, r, meta));\n }\n}\n","import { Injectable, Signal, signal, WritableSignal } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { KlesRowContext } from '../../core/table/row-context.interface';\n\n@Injectable()\nexport class RowContextStore {\n private readonly contexts = new WeakMap<AbstractControl, WritableSignal<KlesRowContext<unknown> | null>>();\n\n set<TSource>(row: AbstractControl, context: KlesRowContext<TSource>): void {\n const current = this.contexts.get(row);\n\n if (current) {\n current.set(context as KlesRowContext<unknown>);\n } else {\n this.contexts.set(row, signal<KlesRowContext<unknown> | null>(context));\n }\n }\n\n get<TSource = unknown>(row: AbstractControl): Signal<KlesRowContext<TSource> | null> | null {\n return (this.contexts.get(row) as Signal<KlesRowContext<TSource> | null> | undefined) ?? null;\n }\n\n updateSource<TSource>(row: AbstractControl, source: TSource): void {\n this.contexts.get(row)?.update((context) =>\n context\n ? {\n ...context,\n source,\n }\n : null,\n );\n }\n\n delete(row: AbstractControl): void {\n this.contexts.delete(row);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { ColumnsService } from '../columns/columns.service';\nimport { KlesCreatedRow, RowFormFactory } from './row-factory.service';\nimport * as _ from 'lodash';\nimport { AbstractUiState, ArrayUiState, GroupUiState } from '@3kles/kles-material-dynamicforms';\nimport { Subject } from 'rxjs';\nimport { RowContextStore } from '../../store/row-context-store.service';\n\nexport interface KlesRowMoveResult {\n previousIndex: number;\n currentIndex: number;\n previousSiblingIndex: number;\n currentSiblingIndex: number;\n movedRows: FormGroup[];\n}\n\n@Injectable()\nexport class KlesForm {\n readonly form = new FormGroup({\n header: new FormGroup({}),\n rows: new FormArray<FormGroup>([]),\n footer: new FormGroup({}),\n });\n\n readonly ui = new GroupUiState({\n header: new GroupUiState({}),\n rows: new ArrayUiState<any>([]),\n footer: new GroupUiState({}),\n });\n\n readonly uiStore = new WeakMap<AbstractControl, AbstractUiState>();\n\n private readonly rowsStructureChangedSubject = new Subject<void>();\n private readonly rowsReplacedSubject = new Subject<void>();\n\n public readonly rowsStructureChanged$ = this.rowsStructureChangedSubject.asObservable();\n public readonly rowsReplaced$ = this.rowsReplacedSubject.asObservable();\n\n constructor(\n private columnsService: ColumnsService,\n private rowFactory: RowFormFactory,\n private rowContextStore: RowContextStore,\n ) {}\n\n public getRows(): FormArray<FormGroup> {\n return this.form.get('rows') as FormArray<FormGroup>;\n }\n\n public getUiRows(): ArrayUiState {\n return this.ui.get('rows') as ArrayUiState;\n }\n\n public getUiHeader(): GroupUiState {\n return this.ui.get('header') as GroupUiState;\n }\n\n public getUiFooter(): GroupUiState {\n return this.ui.get('footer') as GroupUiState;\n }\n\n public getHeader(): FormGroup {\n return this.form.get('header') as FormGroup;\n }\n\n public getFooter(): FormGroup {\n return this.form.get('footer') as FormGroup;\n }\n\n public setRows(rows: KlesCreatedRow[]) {\n this.getRows().controls.forEach((row) => {\n this.rowContextStore.delete(row);\n });\n\n this.getRows().clear({ emitEvent: false });\n this.getUiRows().clear();\n rows.forEach((r) => {\n this.uiStore.set(r.formGroup, r.groupUi);\n this.rowContextStore.set(r.formGroup, r.context);\n this.getRows().push(r.formGroup, { emitEvent: false });\n this.getUiRows().push(r.groupUi);\n });\n this.rowsReplacedSubject.next();\n this.notifyRowsStructureChanged();\n }\n\n private insertRowAndNotify(\n row: KlesCreatedRow,\n index?: number,\n options?: { emitEvent?: boolean },\n notify?: boolean,\n ): { formGroup: FormGroup; groupUi: GroupUiState } {\n this.uiStore.set(row.formGroup, row.groupUi);\n this.rowContextStore.set(row.formGroup, row.context);\n if (index !== undefined) {\n this.getRows().insert(index, row.formGroup, options);\n this.getUiRows().insert(index, row.groupUi);\n } else {\n this.getRows().push(row.formGroup, options);\n this.getUiRows().push(row.groupUi);\n }\n\n if (notify) {\n this.notifyRowsStructureChanged();\n }\n\n return row;\n }\n\n public insertRow(row: KlesCreatedRow, index?: number, options?: { emitEvent?: boolean }): { formGroup: FormGroup; groupUi: GroupUiState } {\n return this.insertRowAndNotify(row, index, options, true);\n }\n\n public insertRows(rows: KlesCreatedRow[], index?: number) {\n rows.forEach((r, offset) => {\n this.insertRowAndNotify(r, index === undefined ? undefined : index + offset, { emitEvent: false }, false);\n });\n this.getRows().updateValueAndValidity({ emitEvent: true });\n this.notifyRowsStructureChanged();\n }\n\n public moveRow(row: FormGroup, targetRow: FormGroup): { previousIndex: number; currentIndex: number } | undefined {\n const rows = this.getRows();\n const previousIndex = rows.controls.indexOf(row);\n const targetIndex = rows.controls.indexOf(targetRow);\n\n if (previousIndex < 0 || targetIndex < 0 || previousIndex === targetIndex) {\n return undefined;\n }\n\n const rowUi = this.uiStore.get(row) ?? this.getUiRows().at(previousIndex);\n\n rows.removeAt(previousIndex, { emitEvent: false });\n this.getUiRows().removeAt(previousIndex);\n\n // En descendant, la suppression décale la cible d'une position : utiliser\n // son index initial insère donc naturellement la ligne après celle-ci.\n rows.insert(targetIndex, row, { emitEvent: false });\n this.getUiRows().insert(targetIndex, rowUi);\n\n rows.updateValueAndValidity({ emitEvent: true });\n this.notifyRowsStructureChanged();\n\n return {\n previousIndex,\n currentIndex: rows.controls.indexOf(row),\n };\n }\n\n public canMoveSubtree(row: FormGroup, targetRow: FormGroup): boolean {\n if (row === targetRow) return true;\n const rowValue = row.getRawValue();\n const targetValue = targetRow.getRawValue();\n if (rowValue._parentId !== targetValue._parentId || (rowValue._depth ?? 0) !== (targetValue._depth ?? 0)) return false;\n return !this.getSubtreeRows(row).includes(targetRow);\n }\n\n public moveSubtree(row: FormGroup, targetRow: FormGroup): KlesRowMoveResult | undefined {\n const rows = this.getRows();\n const previousIndex = rows.controls.indexOf(row);\n const targetIndex = rows.controls.indexOf(targetRow);\n if (previousIndex < 0 || targetIndex < 0 || previousIndex === targetIndex || !this.canMoveSubtree(row, targetRow)) return undefined;\n\n const movedRows = this.getSubtreeRows(row);\n const movedSet = new Set(movedRows);\n const movedUis = movedRows.map((movedRow) => this.uiStore.get(movedRow) ?? this.getUiRows().at(rows.controls.indexOf(movedRow)));\n const parentId = row.getRawValue()._parentId;\n const previousSiblingIndex = this.getSiblingIndex(row);\n\n let targetSubtreeEnd = targetIndex + this.getSubtreeRows(targetRow).length;\n let insertionIndex = previousIndex < targetIndex ? targetSubtreeEnd : targetIndex;\n\n for (let index = rows.length - 1; index >= 0; index--) {\n if (!movedSet.has(rows.at(index))) continue;\n rows.removeAt(index, { emitEvent: false });\n this.getUiRows().removeAt(index);\n if (index < insertionIndex) insertionIndex--;\n }\n\n movedRows.forEach((movedRow, offset) => {\n rows.insert(insertionIndex + offset, movedRow, { emitEvent: false });\n this.getUiRows().insert(insertionIndex + offset, movedUis[offset]);\n });\n\n rows.updateValueAndValidity({ emitEvent: true });\n this.notifyRowsStructureChanged();\n\n return {\n previousIndex,\n currentIndex: rows.controls.indexOf(row),\n previousSiblingIndex,\n currentSiblingIndex: this.getSiblingIndex(row, parentId),\n movedRows,\n };\n }\n\n public getSubtreeRows(row: FormGroup): FormGroup[] {\n const rows = this.getRows().controls;\n const index = rows.indexOf(row);\n if (index < 0) return [];\n\n const depth = row.getRawValue()._depth ?? 0;\n const subtree = [row];\n for (let current = index + 1; current < rows.length; current++) {\n if ((rows[current].getRawValue()._depth ?? 0) <= depth) break;\n subtree.push(rows[current]);\n }\n return subtree;\n }\n\n private getSiblingIndex(row: FormGroup, parentId = row.getRawValue()._parentId): number {\n return this.getRows()\n .controls.filter((candidate) => candidate.getRawValue()._parentId === parentId)\n .indexOf(row);\n }\n\n public transferRowTo(target: KlesForm, row: FormGroup, targetRow?: FormGroup): { previousIndex: number; currentIndex: number } | undefined {\n if (target === this) {\n return targetRow ? this.moveRow(row, targetRow) : undefined;\n }\n\n const previousIndex = this.getRows().controls.indexOf(row);\n if (previousIndex < 0) {\n return undefined;\n }\n\n const rowUi = this.uiStore.get(row) ?? this.getUiRows().at(previousIndex);\n const rowContext = this.rowContextStore.get(row)?.();\n const targetIndex = targetRow ? target.getRows().controls.indexOf(targetRow) : target.getRows().length;\n const currentIndex = targetIndex < 0 ? target.getRows().length : targetIndex;\n\n this.getRows().removeAt(previousIndex, { emitEvent: false });\n this.getUiRows().removeAt(previousIndex);\n this.rowContextStore.delete(row);\n\n target.getRows().insert(currentIndex, row, { emitEvent: false });\n target.getUiRows().insert(currentIndex, rowUi);\n target.uiStore.set(row, rowUi);\n if (rowContext) {\n target.rowContextStore.set(row, rowContext);\n }\n\n this.getRows().updateValueAndValidity({ emitEvent: true });\n target.getRows().updateValueAndValidity({ emitEvent: true });\n this.notifyRowsStructureChanged();\n target.notifyRowsStructureChanged();\n\n return { previousIndex, currentIndex };\n }\n\n public transferSubtreeTo(target: KlesForm, row: FormGroup, targetRow?: FormGroup): KlesRowMoveResult | undefined {\n if (target === this) return targetRow ? this.moveSubtree(row, targetRow) : undefined;\n\n const previousIndex = this.getRows().controls.indexOf(row);\n if (previousIndex < 0 || (row.getRawValue()._depth ?? 0) !== 0) return undefined;\n if (targetRow && ((targetRow.getRawValue()._depth ?? 0) !== 0 || targetRow.getRawValue()._parentId != null)) return undefined;\n\n const movedRows = this.getSubtreeRows(row);\n const previousSiblingIndex = this.getSiblingIndex(row);\n const movedData = movedRows.map((movedRow) => ({\n row: movedRow,\n ui: this.uiStore.get(movedRow) ?? this.getUiRows().at(this.getRows().controls.indexOf(movedRow)),\n context: this.rowContextStore.get(movedRow)?.(),\n }));\n\n for (let index = this.getRows().length - 1; index >= 0; index--) {\n if (!movedRows.includes(this.getRows().at(index))) continue;\n const movedRow = this.getRows().at(index);\n this.getRows().removeAt(index, { emitEvent: false });\n this.getUiRows().removeAt(index);\n this.rowContextStore.delete(movedRow);\n }\n\n const insertionIndex = targetRow ? target.getRows().controls.indexOf(targetRow) : target.getRows().length;\n movedData.forEach(({ row: movedRow, ui, context }, offset) => {\n target.getRows().insert(insertionIndex + offset, movedRow, { emitEvent: false });\n target.getUiRows().insert(insertionIndex + offset, ui);\n target.uiStore.set(movedRow, ui);\n if (context) target.rowContextStore.set(movedRow, context);\n });\n\n this.getRows().updateValueAndValidity({ emitEvent: true });\n target.getRows().updateValueAndValidity({ emitEvent: true });\n this.notifyRowsStructureChanged();\n target.notifyRowsStructureChanged();\n\n return {\n previousIndex,\n currentIndex: target.getRows().controls.indexOf(row),\n previousSiblingIndex,\n currentSiblingIndex: target.getSiblingIndex(row, null),\n movedRows,\n };\n }\n\n public updateRow(_id: number | string, value: any, options?: { emitEvent?: boolean; onlySelf?: boolean }) {\n const row = this.getRows().controls.find((c) => c.getRawValue()._id === _id);\n\n if (row) {\n const oldValue = row.getRawValue();\n row.patchValue({ ...(value ?? {}), _id: oldValue._id }, options);\n return row;\n }\n\n return undefined;\n }\n\n public resetRow(_id: number | string, value?: any, options?: { onlySelf?: boolean; emitEvent?: boolean; overwriteDefaultValue?: boolean }) {\n const row = this.getRows().controls.find((c) => c.getRawValue()._id === _id);\n\n if (row) {\n const oldValue = row.getRawValue();\n row.reset({ ...(value ?? {}), _id: oldValue._id }, options);\n }\n }\n\n public deleteRowById(id: number | string, option?: { emitEvent?: boolean }) {\n this.deleteRowsByIds([id], option);\n }\n\n public deleteRowsByIds(ids: ReadonlyArray<number | string>, option?: { emitEvent?: boolean }): void {\n const idSet = new Set(ids);\n const indexes = this.getRows()\n .controls.map((row, index) => ({ row, index }))\n .filter(({ row }) => idSet.has(row.getRawValue()._id))\n .map(({ index }) => index)\n .sort((a, b) => b - a);\n\n if (indexes.length === 0) return;\n\n for (const index of indexes) {\n const row = this.getRows().at(index);\n this.getRows().removeAt(index, { emitEvent: false });\n this.rowContextStore.delete(row);\n this.getUiRows().removeAt(index);\n }\n\n this.getRows().updateValueAndValidity(option);\n this.notifyRowsStructureChanged();\n }\n\n public setHeaderControl(name: string, header: AbstractControl, options?: { emitEvent?: false }): void {\n this.getHeader().setControl(name, header, options);\n }\n\n public setFooterControl(name: string, footer: AbstractControl, options?: { emitEvent?: false }): void {\n this.getFooter().setControl(name, footer, options);\n }\n\n public setHeaderUi(name: string, header: AbstractUiState): void {\n this.getUiHeader().addUiState(name, header);\n }\n\n public setFooterUi(name: string, footer: AbstractUiState): void {\n this.getUiFooter().addUiState(name, footer);\n }\n\n public get rows(): FormGroup[] {\n return this.getRows().controls as FormGroup[];\n }\n\n public init() {\n this.columnsService.columns().forEach((column) => {\n let colCellHeader: any = {};\n if (column.headerCell?.field) {\n const { pipeTransform, ...tmpCell } = column.headerCell.field;\n colCellHeader = _.cloneDeep(tmpCell);\n colCellHeader = { pipeTransform, ...colCellHeader };\n }\n\n colCellHeader.name = column.columnDef;\n\n const { control, ui } = this.rowFactory.createControl(colCellHeader, colCellHeader.value);\n this.setHeaderControl(colCellHeader.name, control, { emitEvent: false });\n this.setHeaderUi(colCellHeader.name, ui);\n this.uiStore.set(control, ui);\n });\n\n this.columnsService\n .columns()\n .filter((column) => column.footerCell)\n .forEach((column) => {\n let colCellFooter: any = {};\n if (column.footerCell?.field) {\n const { pipeTransform, ...tmpCell } = column.footerCell.field;\n colCellFooter = _.cloneDeep(tmpCell);\n }\n colCellFooter.name = column.columnDef;\n const { control, ui } = this.rowFactory.createControl(colCellFooter, colCellFooter.value);\n this.setFooterControl(colCellFooter.name, control, { emitEvent: false });\n this.setFooterUi(colCellFooter.name, ui);\n this.uiStore.set(control, ui);\n });\n }\n\n private notifyRowsStructureChanged(): void {\n this.rowsStructureChangedSubject.next();\n }\n}\n","import { DestroyRef, inject, Injectable, signal } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, filter, take } from 'rxjs';\nimport { TreeNodeId } from '../../../core/api/tree';\nimport { LoaderConfig } from '../../../core/table/config.interface';\nimport { LOADER_CONFIG } from '../../../token';\nimport { ColumnsService } from '../columns/columns.service';\nimport { EventsService } from '../events/events.service';\nimport { LoaderChildrensService } from '../loader/loader-childrens.service';\nimport { KlesForm } from '../table/form';\nimport { RowFormFactory } from '../table/row-factory.service';\n\n@Injectable()\nexport class TreeService<T, R> {\n private readonly loaderConfig = inject<LoaderConfig<T, R>>(LOADER_CONFIG);\n private readonly loaderChildrensService = inject(LoaderChildrensService);\n private readonly fm = inject(KlesForm);\n private readonly columnsService = inject(ColumnsService);\n private readonly rowFactory = inject(RowFormFactory);\n private readonly eventsService = inject(EventsService);\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly expandedSubject = new BehaviorSubject<Set<TreeNodeId>>(new Set());\n readonly expandedIds$ = this.expandedSubject.asObservable();\n readonly expandedIds = signal<ReadonlySet<TreeNodeId>>(new Set());\n readonly loadingIds = signal<ReadonlySet<TreeNodeId>>(new Set());\n\n constructor() {\n this.fm.rowsReplaced$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.reset());\n }\n\n toggle(id: TreeNodeId, group?: FormGroup, depth?: number): void {\n if (this.isLoading(id)) return;\n this.isExpanded(id) ? this.collapse(id, group, depth) : this.expand(id, group, depth);\n }\n\n expand(id: TreeNodeId, group?: FormGroup, depth?: number): void {\n if (this.isExpanded(id) || this.isLoading(id)) return;\n\n const parent = group ?? this.findRow(id);\n if (!parent) return;\n\n const level = depth ?? parent.getRawValue()._depth ?? 0;\n if (!this.hasChildren(parent, level)) return;\n\n const payload = this.rowPayload(parent, level);\n this.setLoading(id, true);\n this.eventsService.emit('nodeLoadChildren', payload);\n\n this.loaderChildrensService\n .load(parent, level)\n .pipe(\n filter((response) => !response.loading),\n take(1),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((response) => {\n this.setLoading(id, false);\n\n if (response.error) {\n this.eventsService.emit('loadError', {\n error: response.error,\n message: response.error instanceof Error ? response.error.message : undefined,\n });\n return;\n }\n\n const parentIndex = this.fm.getRows().controls.indexOf(parent);\n if (parentIndex < 0) return;\n\n const children = this.rowFactory.createRows(\n this.columnsService.columns().map((column) => ({ ...column.cell?.field, name: column.columnDef })),\n response.items,\n { depth: level + 1, parentId: id },\n );\n\n this.fm.insertRows(children, parentIndex + 1);\n this.setExpanded(id, true);\n\n const childRows = children.map((child) => child.formGroup);\n this.eventsService.emit('nodeChildrenLoaded', {\n ...payload,\n children: childRows,\n childValues: childRows.map((child) => child.getRawValue()),\n });\n this.eventsService.emit('nodeExpand', payload);\n });\n }\n\n collapse(id: TreeNodeId, group?: FormGroup, depth?: number): void {\n if (!this.isExpanded(id)) return;\n\n const parent = group ?? this.findRow(id);\n if (!parent) {\n this.setExpanded(id, false);\n return;\n }\n\n const descendants = this.getDescendants(id);\n const descendantIds = descendants.map((row) => row.getRawValue()._id as TreeNodeId);\n const expanded = new Set(this.expandedSubject.value);\n expanded.delete(id);\n descendantIds.forEach((descendantId) => expanded.delete(descendantId));\n this.publishExpanded(expanded);\n this.fm.deleteRowsByIds(descendantIds, { emitEvent: false });\n this.eventsService.emit('nodeCollapse', this.rowPayload(parent, depth ?? parent.getRawValue()._depth ?? 0));\n }\n\n collapseAll(): void {\n const childIds = this.fm\n .getRows()\n .controls.filter((row) => (row.getRawValue()._depth ?? 0) > 0)\n .map((row) => row.getRawValue()._id as TreeNodeId);\n this.publishExpanded(new Set());\n this.fm.deleteRowsByIds(childIds, { emitEvent: false });\n }\n\n reset(): void {\n this.publishExpanded(new Set());\n this.loadingIds.set(new Set());\n }\n\n isExpanded(id: TreeNodeId): boolean {\n return this.expandedSubject.value.has(id);\n }\n\n isLoading(id: TreeNodeId): boolean {\n return this.loadingIds().has(id);\n }\n\n getChildren(id: TreeNodeId): FormGroup[] {\n return this.fm.getRows().controls.filter((row) => row.getRawValue()._parentId === id);\n }\n\n getDescendants(id: TreeNodeId): FormGroup[] {\n const rows = this.fm.getRows().controls;\n const parentIndex = rows.findIndex((row) => row.getRawValue()._id === id);\n if (parentIndex < 0) return [];\n\n const parentDepth = rows[parentIndex].getRawValue()._depth ?? 0;\n const descendants: FormGroup[] = [];\n for (let index = parentIndex + 1; index < rows.length; index++) {\n const row = rows[index];\n if ((row.getRawValue()._depth ?? 0) <= parentDepth) break;\n descendants.push(row);\n }\n return descendants;\n }\n\n hasChildren(group: FormGroup, depth: number): boolean {\n const configured = this.loaderConfig.lines.hasChildren;\n return configured ? configured(group, depth) : typeof this.loaderConfig.lines.childrens === 'function';\n }\n\n private findRow(id: TreeNodeId): FormGroup | undefined {\n return this.fm.getRows().controls.find((row) => row.getRawValue()._id === id);\n }\n\n private setExpanded(id: TreeNodeId, expanded: boolean): void {\n const ids = new Set(this.expandedSubject.value);\n expanded ? ids.add(id) : ids.delete(id);\n this.publishExpanded(ids);\n }\n\n private publishExpanded(ids: Set<TreeNodeId>): void {\n this.expandedSubject.next(ids);\n this.expandedIds.set(ids);\n }\n\n private setLoading(id: TreeNodeId, loading: boolean): void {\n const ids = new Set(this.loadingIds());\n loading ? ids.add(id) : ids.delete(id);\n this.loadingIds.set(ids);\n }\n\n private rowPayload(row: FormGroup, level: number) {\n return {\n row,\n rowIndex: this.fm.getRows().controls.indexOf(row),\n value: row.value,\n rawValue: row.getRawValue(),\n level,\n };\n }\n}\n","import { GroupUiState } from '@3kles/kles-material-dynamicforms';\nimport { Component, computed, DestroyRef, inject, input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormGroup } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ExpandedRowStore } from '../../services/store/expanded-row-store.service';\nimport { filter, map, switchMap } from 'rxjs';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { KlesColumnConfig } from '../../core/table/column.interface';\nimport { TreeService } from '../../services/features/tree/tree.service';\nimport { EventsService } from '../../services/features/events/events.service';\n\n@Component({\n selector: 'kles-cell',\n templateUrl: './cell.component.html',\n styleUrl: './cell.component.scss',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule],\n})\nexport class KlesCellComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly expandedRowStore = inject(ExpandedRowStore);\n private readonly treeService = inject(TreeService);\n private readonly eventsService = inject(EventsService);\n\n ui = input.required<GroupUiState<any>>();\n group = input.required<FormGroup<any>>();\n column = input.required<KlesColumnConfig>();\n rowIndex = input.required<number>();\n\n expandedRow = computed(() => {\n return (this.column().canExpand ?? false) && (this.ui().get(this.column().columnDef)?.value().expandedRow ?? false);\n });\n\n expandedNode = computed(() => {\n return (this.column().canExpandNode ?? false) && (this.ui().get(this.column().columnDef)?.value().expandedNode ?? false);\n });\n\n hasChildren = computed(() => {\n return this.treeService.hasChildren(this.group(), this.group().getRawValue()._depth);\n });\n\n depth = computed(() => Math.max(0, this.group().getRawValue()._depth ?? 0));\n\n loadingNode = computed(() => this.treeService.isLoading(this.group().getRawValue()._id));\n\n private column$ = toObservable(this.column);\n\n ngOnInit(): void {\n this.listen();\n }\n\n stopPropagation(event: any) {\n event.stopPropagation();\n }\n\n expandRow() {\n const row = this.group();\n const expanded = this.expandedRowStore.isExpanded(row.getRawValue()._id);\n this.expandedRowStore.toggle(row.getRawValue()._id);\n\n const payload = {\n row,\n rowIndex: this.rowIndex(),\n value: row.value,\n rawValue: row.getRawValue(),\n level: row.getRawValue()._depth,\n };\n this.eventsService.emit(expanded ? 'rowCollapse' : 'rowExpand', payload);\n this.eventsService.emit('rowToggleExpand', payload);\n }\n\n expandNode() {\n this.treeService.toggle(this.group().getRawValue()._id, this.group(), this.group().getRawValue()._depth ?? 0);\n }\n\n private listen() {\n this.column$\n .pipe(\n filter((column) => column.canExpand ?? false),\n switchMap(() => {\n return this.expandedRowStore.expandedIds$.pipe(\n takeUntilDestroyed(this.destroyRef),\n map((ids) => {\n return ids.has(this.group().value._id);\n }),\n );\n }),\n )\n .subscribe((expandedRow) => {\n this.ui().get(this.column().columnDef)?.patchValue({ expandedRow });\n });\n\n this.column$\n .pipe(\n filter((column) => column.canExpandNode ?? false),\n switchMap(() => {\n return this.treeService.expandedIds$.pipe(\n takeUntilDestroyed(this.destroyRef),\n map((ids) => {\n return ids.has(this.group().getRawValue()._id);\n }),\n );\n }),\n )\n .subscribe((expandedNode) => {\n this.ui().get(this.column().columnDef)?.patchValue({ expandedNode });\n });\n }\n}\n","@if (column().canExpand) {\n <button matIconButton class=\"expand-button\" (click)=\"expandRow(); stopPropagation($event)\">\n @if (this.expandedRow()) {\n <mat-icon>keyboard_arrow_down</mat-icon>\n } @else {\n <mat-icon>chevron_right</mat-icon>\n }\n </button>\n}\n@if (column().canExpandNode) {\n <span class=\"tree-indent\" [style.width.px]=\"depth() * 24\" aria-hidden=\"true\"></span>\n @if (hasChildren()) {\n <button\n matIconButton\n class=\"expand-button\"\n [disabled]=\"loadingNode()\"\n [attr.aria-expanded]=\"expandedNode()\"\n [attr.aria-label]=\"expandedNode() ? 'Réduire la ligne' : 'Développer la ligne'\"\n (click)=\"expandNode(); stopPropagation($event)\"\n >\n @if (loadingNode()) {\n <mat-icon class=\"tree-loading-icon\">more_horiz</mat-icon>\n } @else if (expandedNode()) {\n <mat-icon>keyboard_arrow_down</mat-icon>\n } @else {\n <mat-icon>chevron_right</mat-icon>\n }\n </button>\n } @else {\n <span class=\"expand-button-spacer\" aria-hidden=\"true\"></span>\n }\n}\n<div class=\"cell-field\"><ng-content></ng-content></div>\n","import { Component, input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatSortModule, SortHeaderArrowPosition } from '@angular/material/sort';\nimport { IKlesHeaderFieldConfig } from '../../core/table/cell.interface';\n\n@Component({\n selector: 'kles-header',\n template: `\n <div\n class=\"header\"\n mat-sort-header\n [disabled]=\"!header().sortable\"\n [arrowPosition]=\"header().sortArrowPosition\"\n [matTooltip]=\"header().tooltip\"\n matTooltipPosition=\"above\"\n >\n {{ header().label }}\n </div>\n\n <div class=\"filterHeader\">\n <div class=\"field\">\n <ng-content></ng-content>\n </div>\n\n @if (header().filterClearable && group().get(header().columnDef).value) {\n <div class=\"icon-button\">\n <button\n mat-icon-button\n aria-label=\"Clear\"\n type=\"button\"\n class=\"icon-button-small\"\n (click)=\"group().controls[header().columnDef].reset()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n padding-bottom: 10px;\n display: flex;\n flex-direction: column;\n justify-content: inherit;\n }\n\n .header {\n flex-grow: 1;\n align-items: center;\n display: flex;\n justify-content: inherit;\n }\n\n .filterHeader {\n display: flex;\n flex-grow: 1;\n align-items: center;\n gap: 2px;\n }\n\n .field {\n flex-grow: 1;\n text-align: center;\n }\n\n .icon-button button[mat-icon-button] {\n &.icon-button-small {\n width: 24px;\n height: 24px;\n line-height: 24px;\n padding: 0;\n\n .mat-icon {\n font-size: 18px;\n width: 18px;\n height: 18px;\n line-height: 18px;\n }\n\n .mat-mdc-button-ripple {\n font-size: inherit;\n width: inherit;\n height: inherit;\n line-height: inherit;\n }\n }\n }\n `,\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatIconModule, MatButtonModule, MatTooltipModule, MatSortModule],\n})\nexport class KlesHeaderComponent implements OnInit {\n header = input.required<IKlesHeaderFieldConfig & { columnDef: string; sortable?: boolean; sortArrowPosition?: SortHeaderArrowPosition }>();\n group = input.required<FormGroup<any>>();\n\n ngOnInit(): void {}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { KlesColumnConfig } from '../core/table/column.interface';\nimport { SortHeaderArrowPosition } from '@angular/material/sort';\nimport { IKlesHeaderFieldConfig } from '../core/table/cell.interface';\n\n@Pipe({\n name: 'header',\n standalone: true,\n})\nexport class HeaderPipe implements PipeTransform {\n transform(\n col: KlesColumnConfig | null | undefined,\n ):\n | (IKlesHeaderFieldConfig & { columnDef: string; filterable?: boolean; sortable?: boolean; sortArrowPosition?: SortHeaderArrowPosition })\n | null {\n if (!col) return null;\n return {\n columnDef: col.columnDef,\n filterable: col.filterable,\n sortable: col.sortable,\n sortArrowPosition: col.sortArrowPosition,\n ...col.headerCell,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class KlesTableIntl {\n readonly changes = new Subject<void>();\n\n emptyStateTitle = 'No data';\n emptyStateDescription = 'There are no rows to display.';\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport { KlesTableIntl } from '../table/table-intl';\n\n@Component({\n selector: 'kles-table-empty-state',\n standalone: true,\n imports: [MatIconModule],\n templateUrl: './empty-state.component.html',\n styleUrl: './empty-state.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KlesTableEmptyStateComponent {\n readonly intl = inject(KlesTableIntl);\n\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n this.intl.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","<section class=\"empty-state\" role=\"status\" aria-live=\"polite\">\n <div class=\"empty-state__panel\">\n <div class=\"empty-state__visual\" aria-hidden=\"true\">\n <div class=\"empty-state__table-icon\">\n <span class=\"empty-state__table-header\"></span>\n <span></span>\n <span></span>\n <span></span>\n </div>\n\n <div class=\"empty-state__badge\">\n <mat-icon>remove</mat-icon>\n </div>\n </div>\n\n <div class=\"empty-state__content\">\n <h2 class=\"empty-state__title\">\n {{ intl.emptyStateTitle }}\n </h2>\n\n <p class=\"empty-state__description\">\n {{ intl.emptyStateDescription }}\n </p>\n </div>\n </div>\n</section>\n","import { inject, Pipe, PipeTransform, Signal } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { KlesRowContext } from '../core/table/row-context.interface';\nimport { RowContextStore } from '../services/store/row-context-store.service';\n\n@Pipe({\n name: 'rowContext',\n standalone: true,\n pure: true,\n})\nexport class RowContextPipe implements PipeTransform {\n private readonly store = inject(RowContextStore);\n\n transform(row: AbstractControl | null | undefined): Signal<KlesRowContext | null> | null {\n return row ? this.store.get(row) : null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ITable } from './core/table/table.interface';\nimport { ScrollbarApi } from './core/api/scrollbar';\nimport { ColumnApi } from './core/api/column';\nimport { PaginationApi } from './core/api/pagination';\nimport { SortApi } from './core/api/sort';\nimport { LoadingApi } from './core/api/loading';\nimport { SelectionApi } from './core/api/selection';\nimport { FooterApi } from './core/api/footer';\nimport { ArrayUiState, GroupUiState } from '@3kles/kles-material-dynamicforms';\nimport { EventsApi } from './core/api/events';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { EmptyStateApi } from './core/api/empty-state';\nimport { RenderApi } from './core/api/render';\nimport { TreeApi } from './core/api/tree';\n\n@Injectable()\nexport class KlesTableConnectorService {\n private _connected$ = new BehaviorSubject<boolean>(false);\n private _table?: ITable;\n\n public readonly connected$: Observable<boolean> = this._connected$.asObservable();\n\n constructor() {}\n\n public connect(table: ITable) {\n this._table = table;\n this._connected$.next(true);\n return () => {\n if (this._table === table) {\n this._table = undefined;\n this._connected$.next(false);\n }\n };\n }\n\n public get table(): ITable {\n if (!this._table) {\n throw new Error('KlesTableConnectorService: table is not connected');\n }\n\n return this._table;\n }\n\n get scrollbar(): ScrollbarApi {\n return this.table.scrollbar;\n }\n\n get column(): ColumnApi {\n return this.table?.column;\n }\n\n get pagination(): PaginationApi | undefined {\n return this.table.pagination;\n }\n\n get sort(): SortApi {\n return this.table.sort;\n }\n\n get loading(): LoadingApi {\n return this.table.loading;\n }\n\n get selection(): SelectionApi {\n return this.table.selection;\n }\n\n get footer(): FooterApi {\n return this.table.footer;\n }\n\n get form() {\n return this.table.form;\n }\n\n get ui(): GroupUiState<{\n header: GroupUiState;\n rows: ArrayUiState;\n footer: GroupUiState;\n }> {\n return this.table.ui;\n }\n\n get events(): EventsApi {\n return this.table.events;\n }\n\n get emptyState(): EmptyStateApi {\n return this.table.emptyState;\n }\n\n get render(): RenderApi {\n return this.table.render;\n }\n\n get tree(): TreeApi {\n return this.table.tree;\n }\n\n public refresh() {\n this.table?.refresh();\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport { EventsService } from '../events/events.service';\n\n@Injectable()\nexport class LoadingService {\n private _loading = signal(false);\n\n constructor(private readonly eventsService: EventsService) {}\n\n get loading() {\n return this._loading.asReadonly();\n }\n\n start() {\n if (this._loading()) {\n return;\n }\n this._loading.set(true);\n this.eventsService.emit('loadingChange', { loading: true });\n }\n stop() {\n if (!this._loading()) {\n return;\n }\n this._loading.set(false);\n this.eventsService.emit('loadingChange', { loading: false });\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { Pagination } from '../../core/query/query.interface';\nimport { ITableStore } from './store';\nimport { PAGINATOR_CONFIG } from '../../token';\nimport { PaginatorConfig } from '../../core/table/config.interface';\n\n@Injectable()\nexport class PaginatorStore implements ITableStore {\n private s: BehaviorSubject<Pagination>;\n public page$: Observable<Pagination>;\n\n constructor(@Optional() @Inject(PAGINATOR_CONFIG) protected config: PaginatorConfig) {\n this.s = new BehaviorSubject<Pagination>({ page: 0, perPage: config?.pageSize ?? 10 });\n this.page$ = this.s.asObservable();\n }\n\n setPage(v: Pagination) {\n this.s.next(v);\n }\n\n snapshot() {\n return this.s.value;\n }\n\n reset(): void {\n this.s.next({ page: 0, perPage: this.config?.pageSize ?? 10 });\n }\n}\n","import { DestroyRef, EventEmitter, Inject, inject, Injectable, Optional, Signal, signal } from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { PaginatorStore } from '../../store/paginator-store.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DATASOURCE_SERVICE, PAGINATOR_CONFIG } from '../../../token';\nimport { IDatasourceService } from '../datasource/datasource.service';\nimport { PaginatorConfig } from '../../../core/table/config.interface';\nimport { EventsService } from '../events/events.service';\n\n@Injectable()\nexport class PaginatorService {\n private _paginator: MatPaginator | undefined;\n private _disabled = signal(false);\n private _pageChanged = new EventEmitter<PageEvent>();\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n @Optional() @Inject(PAGINATOR_CONFIG) private config: PaginatorConfig,\n @Optional() protected paginatorStore: PaginatorStore | null,\n @Inject(DATASOURCE_SERVICE) private datasourceService: IDatasourceService,\n private readonly eventsService: EventsService,\n ) {}\n\n public register(paginator: MatPaginator) {\n this._paginator = paginator;\n this.datasourceService.datasource.paginator = this._paginator;\n\n if (this._paginator) {\n this._paginator.pageIndex = this.paginatorStore?.snapshot().page ?? this._paginator.pageIndex;\n this._paginator.pageSize = this.paginatorStore?.snapshot().perPage ?? this._paginator.pageSize;\n this._paginator.pageSizeOptions = this.config?.pageSizeOptions ?? [5, 10, 20, 25, 50];\n this._paginator.selectConfig = this.config?.selectConfig ?? {};\n this._paginator.showFirstLastButtons = this.config?.showFirstLastButtons ?? true;\n\n this._paginator.page.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.paginatorStore?.setPage({ page: event.pageIndex, perPage: event.pageSize });\n this._pageChanged.next(event);\n\n this.eventsService.emit('pageChange', {\n pageIndex: event.pageIndex,\n previousPageIndex: event.previousPageIndex,\n pageSize: event.pageSize,\n totalItems: event.length,\n sourceEvent: event,\n });\n });\n }\n }\n\n public get paginator(): MatPaginator | undefined {\n return this._paginator;\n }\n\n public pageChanged(): EventEmitter<PageEvent> {\n return this._pageChanged;\n }\n\n public setPageIndex(index: number): void {\n if (!this._paginator) {\n return;\n }\n\n this.setSizeIndex(this._paginator.pageSize, index);\n }\n\n public setPageSize(size: number): void {\n if (!this._paginator) {\n return;\n }\n this.setSizeIndex(size, 0);\n }\n\n public setPageSizeOptions(option: number[]): void {\n if (this._paginator) {\n this._paginator.pageSizeOptions = option;\n }\n }\n\n public setlength(length: number) {\n if (this._paginator) {\n this._paginator.length = length;\n }\n }\n\n public firstPage(): void {\n this._paginator?.firstPage();\n }\n\n public lastPage(): void {\n this._paginator?.lastPage();\n }\n\n public disabled(): Signal<boolean> {\n return this._disabled.asReadonly();\n }\n\n public disable(): void {\n this._disabled.set(true);\n }\n\n public enable(): void {\n this._disabled.set(false);\n }\n\n private setSizeIndex(size: number, index: number): void {\n if (this._paginator) {\n const prev = this._paginator.pageIndex;\n this._paginator.pageSize = size;\n this._paginator.pageIndex = index;\n this._paginator.page.emit({\n pageIndex: this._paginator.pageIndex,\n pageSize: this._paginator.pageSize,\n length: this._paginator.length,\n previousPageIndex: prev,\n });\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ScrollbarService {\n private element: HTMLElement | undefined;\n private default: ScrollBehavior = 'smooth';\n private readonly hiddenClass = 'scrollbar-hidden';\n\n register(el: HTMLElement) {\n this.element = el;\n }\n\n unregister() {\n this.element = undefined;\n }\n\n setScrollbarVisible(visible: boolean) {\n this.element?.classList.toggle(this.hiddenClass, !visible);\n }\n\n hideScrollbar() {\n this.setScrollbarVisible(false);\n }\n\n showScrollbar() {\n this.setScrollbarVisible(true);\n }\n\n toTop(sb?: ScrollBehavior) {\n this.element?.scrollTo({ top: 0, behavior: sb ?? this.default });\n }\n\n toBottom(sb?: ScrollBehavior) {\n const top = this.element?.scrollHeight;\n this.element?.scrollTo({ top, behavior: sb ?? this.default });\n }\n\n toLeft(sb?: ScrollBehavior) {\n this.element?.scrollTo({ left: 0, behavior: sb ?? this.default });\n }\n\n toRight(sb?: ScrollBehavior) {\n const left = this.element?.scrollWidth;\n this.element?.scrollTo({ left, behavior: sb ?? this.default });\n }\n\n to(top: number, left: number, sb?: ScrollBehavior) {\n this.element?.scrollTo({ top, left, behavior: sb ?? this.default });\n }\n\n getTop() {\n return this.element?.scrollTop;\n }\n}\n","import { Inject, Injectable, Signal, WritableSignal } from '@angular/core';\nimport { FOOTER } from '../../../token';\nimport { EventsService } from '../events/events.service';\n\n@Injectable()\nexport class FooterService {\n constructor(\n @Inject(FOOTER) private _footer: WritableSignal<boolean>,\n private readonly eventsService: EventsService,\n ) {}\n\n public get footer(): Signal<boolean> {\n return this._footer.asReadonly();\n }\n\n public show() {\n if (this._footer()) {\n return;\n }\n this._footer.set(true);\n this.eventsService.emit('footerVisibilityChange', { visible: true });\n }\n\n public hide() {\n if (!this._footer()) {\n return;\n }\n this._footer.set(false);\n this.eventsService.emit('footerVisibilityChange', { visible: false });\n }\n}\n","import { computed, Inject, Injectable, Signal, WritableSignal } from '@angular/core';\nimport { EXTRA_ROWS } from '../../../token';\nimport { ExtraRowConfig } from '../../../core/table/config.interface';\nimport { KlesExtraCellFieldConfig } from '../../../core/table/cell.interface';\nimport { FormGroup } from '@angular/forms';\nimport { ExpandedRowStore } from '../../store/expanded-row-store.service';\n\n@Injectable()\nexport class ExtraRowService {\n public multiTemplateDataRows: Signal<boolean>;\n public rows: Signal<(ExtraRowConfig & { displayedColumns: string[] })[]>;\n\n constructor(\n @Inject(EXTRA_ROWS) private _extraRowsConfig: WritableSignal<ExtraRowConfig[]>,\n private expandedRowStore: ExpandedRowStore,\n ) {\n this.multiTemplateDataRows = computed(() => this._extraRowsConfig().length > 0);\n this.rows = computed(() =>\n this._extraRowsConfig().map((config) => ({\n ...config,\n when: this.createWhen(config),\n displayedColumns: config.cells.map((cel) => cel.columnDef),\n })),\n );\n }\n\n public extraColumns(): KlesExtraCellFieldConfig[] {\n return this._extraRowsConfig()\n .flatMap((config) => config.cells)\n .filter(Boolean);\n }\n\n private createWhen(config: ExtraRowConfig): ((index: number, row: FormGroup<any>) => boolean) | undefined {\n if (config.mode === 'expand') {\n return (_, row) => {\n return this.expandedRowStore.isExpanded(row.value._id);\n };\n } else {\n return config?.when;\n }\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\n\n@Injectable()\nexport class RenderService {\n private _render = new EventEmitter<void>();\n\n public render(): EventEmitter<void> {\n return this._render;\n }\n\n public forceRenderRows() {\n this._render.emit();\n }\n}\n","import { MatTableDataSource } from '@angular/material/table';\nimport { IKlesDataSource } from '../../../core/datasource/datasource.interface';\nimport { FormGroup } from '@angular/forms';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort } from '@angular/material/sort';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport class KlesDataSource extends MatTableDataSource<FormGroup, MatPaginator> implements IKlesDataSource {\n constructor() {\n super([]);\n }\n}\n\nexport class KlesLazyDataSource implements IKlesDataSource {\n private _paginator: MatPaginator | undefined;\n private _sort: MatSort | undefined;\n private _rows$ = new BehaviorSubject<FormGroup[]>([]);\n private _filter: string | undefined = undefined;\n\n get sort(): MatSort | undefined {\n return this._sort;\n }\n\n set sort(sort: MatSort) {\n this._sort = sort;\n }\n\n get paginator(): MatPaginator | undefined {\n return this._paginator;\n }\n\n set paginator(paginator: MatPaginator) {\n this._paginator = paginator;\n }\n\n set data(data: any[]) {\n this._rows$.next(data);\n }\n\n get filter(): string | undefined{\n return this._filter;\n }\n set filter(f: string) {\n this._filter = f;\n }\n\n connect(): Observable<FormGroup[]> {\n return this._rows$;\n }\n\n disconnect(): void {\n this._rows$.complete();\n }\n}\n","import { DestroyRef, inject, Injectable } from '@angular/core';\nimport { EventsService } from '../events/events.service';\nimport { Subscription } from 'rxjs';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Injectable()\nexport class CellValueChangeService {\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly subscriptions = new Map<string, Subscription>();\n\n constructor(private readonly eventsService: EventsService) {}\n\n public listen(visibleRows: FormGroup[], visibleColumns: string[]): void {\n const expectedKeys = new Set<string>();\n visibleRows.forEach((row, rowIndex) => {\n visibleColumns.forEach((column) => {\n const columnKey = column;\n const control = row.get(columnKey);\n\n if (!control) {\n return;\n }\n\n const key = this.getCellKey(row, columnKey);\n expectedKeys.add(key);\n\n if (this.subscriptions.has(key)) {\n return;\n }\n\n const subscription = this.subscribeToCell(row, rowIndex, columnKey, control);\n\n this.subscriptions.set(key, subscription);\n });\n });\n\n this.unsubscribeInvisibleCells(expectedKeys);\n }\n\n private getCellKey(row: FormGroup, columnDef: string): string {\n return `${row.get('_id')?.value}:${columnDef}`;\n }\n\n private subscribeToCell(row: FormGroup, rowIndex: number, columnDef: string, control: AbstractControl): Subscription {\n let previousValue = control.value;\n\n return control.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((currentValue) => {\n this.eventsService.emit('cellValueChange', {\n row,\n rowIndex,\n columnDef,\n control,\n previousValue,\n currentValue,\n value: row.value,\n rawValue: row.getRawValue(),\n });\n\n previousValue = currentValue;\n });\n }\n\n private unsubscribeInvisibleCells(expectedKeys: Set<string>): void {\n for (const [key, subscription] of this.subscriptions.entries()) {\n if (!expectedKeys.has(key)) {\n subscription.unsubscribe();\n this.subscriptions.delete(key);\n }\n }\n }\n}\n","import { DestroyRef, inject, Injectable } from '@angular/core';\nimport { filter, Subscription } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EventsService } from '../events/events.service';\nimport { AbstractControl, FormGroup } from '@angular/forms';\n\n@Injectable()\nexport class ValidationService {\n private readonly destroyRef = inject(DestroyRef);\n private readonly columnSubscriptions = new Map<string, Subscription>();\n private readonly rowSubscriptions = new Map<string, Subscription>();\n\n constructor(private readonly eventsService: EventsService) {}\n\n public listen(visibleRows: FormGroup[], visibleColumns: string[]): void {\n const expectedColumnKeys = new Set<string>();\n const expectedRowKeys = new Set<string>();\n visibleRows.forEach((row, rowIndex) => {\n const rowSubscription = this.subscribeToRow(row, rowIndex);\n const key = this.getRowKey(row);\n expectedRowKeys.add(key);\n this.rowSubscriptions.set(key, rowSubscription);\n\n visibleColumns.forEach((column) => {\n const columnKey = column;\n const control = row.get(columnKey);\n\n if (!control) {\n return;\n }\n\n const key = this.getCellKey(row, columnKey);\n expectedColumnKeys.add(key);\n\n if (this.columnSubscriptions.has(key)) {\n return;\n }\n\n const subscription = this.subscribeToCell(row, rowIndex, columnKey, control);\n\n this.columnSubscriptions.set(key, subscription);\n });\n });\n\n this.unsubscribe(expectedRowKeys, expectedColumnKeys);\n }\n\n private getCellKey(row: FormGroup, columnDef: string): string {\n return `${this.getRowKey(row)}:${columnDef}`;\n }\n\n private getRowKey(row: FormGroup): string {\n return `${row.get('_id')?.value}`;\n }\n\n private subscribeToCell(row: FormGroup, rowIndex: number, columnDef: string, control: AbstractControl): Subscription {\n return control.statusChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((status) => status === 'INVALID'),\n )\n .subscribe(() => {\n this.eventsService.emit('cellValidationError', {\n row,\n rowIndex,\n rawValue: row.getRawValue(),\n value: row.value,\n errors: control.errors,\n controlsErrors: { columnDef: control.errors },\n });\n });\n }\n\n private subscribeToRow(row: FormGroup, rowIndex: number): Subscription {\n return row.statusChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((status) => status === 'INVALID'),\n )\n .subscribe(() => {\n this.eventsService.emit('rowValidationError', {\n row,\n rowIndex,\n rawValue: row.getRawValue(),\n value: row.value,\n errors: row.errors,\n controlsErrors: Object.keys(row.controls)\n .filter((key) => row.get(key)?.errors)\n .map((key) => ({ [key]: row.get(key)?.errors }))\n .reduce((a, b) => ({ ...a, ...b })),\n });\n });\n }\n\n private unsubscribe(expectedRowKeys: Set<string>, expectedColumnKeys: Set<string>): void {\n for (const [key, subscription] of this.columnSubscriptions.entries()) {\n if (!expectedColumnKeys.has(key)) {\n subscription.unsubscribe();\n this.columnSubscriptions.delete(key);\n }\n }\n\n for (const [key, subscription] of this.rowSubscriptions.entries()) {\n if (!expectedRowKeys.has(key)) {\n subscription.unsubscribe();\n this.rowSubscriptions.delete(key);\n }\n }\n }\n}\n","import { DestroyRef, inject, Injectable, signal, Signal } from '@angular/core';\nimport { KlesDataSource, KlesLazyDataSource } from '../table/datasource';\nimport { IKlesDataSource } from '../../../core/datasource/datasource.interface';\nimport { KlesForm } from '../table/form';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { startWith } from 'rxjs';\nimport { ColumnsService } from '../columns/columns.service';\nimport { CellValueChangeService } from '../cell/cell-valuechange.service';\nimport { ValidationService } from '../validation/validation.service';\n\nexport interface IDatasourceService {\n get datasource(): IKlesDataSource;\n readonly isEmpty: Signal<boolean>;\n register(): void;\n}\n\n@Injectable()\nexport class DatasourceService implements IDatasourceService {\n private _datasource!: KlesDataSource;\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly _isEmpty = signal(true);\n readonly isEmpty = this._isEmpty.asReadonly();\n\n constructor(\n private fm: KlesForm,\n private columnsService: ColumnsService,\n private cellValueChangeService: CellValueChangeService,\n private validationService: ValidationService,\n ) {}\n\n public register() {\n this.createDataSource();\n this.listen();\n }\n\n get datasource(): KlesDataSource {\n return this._datasource;\n }\n\n private createDataSource() {\n this._datasource = new KlesDataSource();\n }\n\n private listen() {\n this.fm.rowsStructureChanged$.pipe(takeUntilDestroyed(this.destroyRef), startWith(void 0)).subscribe(() => {\n this._datasource.data = this.fm.rows;\n });\n\n this.datasource\n .connect()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((rows) => {\n this._isEmpty.set(rows.length === 0);\n this.cellValueChangeService.listen(rows, this.columnsService.getVisible());\n this.validationService.listen(rows, this.columnsService.getVisible());\n });\n }\n}\n\n@Injectable()\nexport class DatasourceLazyService implements IDatasourceService {\n private _datasource!: KlesLazyDataSource;\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly _isEmpty = signal(true);\n readonly isEmpty = this._isEmpty.asReadonly();\n\n constructor(\n private fm: KlesForm,\n private columnsService: ColumnsService,\n private cellValueChangeService: CellValueChangeService,\n private validationService: ValidationService,\n ) {}\n\n public register() {\n this.createDataSource();\n this.listen();\n }\n\n get datasource(): KlesLazyDataSource {\n return this._datasource;\n }\n private createDataSource() {\n this._datasource = new KlesLazyDataSource();\n }\n\n private listen() {\n this.fm.rowsStructureChanged$.pipe(takeUntilDestroyed(this.destroyRef), startWith(void 0)).subscribe(() => {\n this._datasource.data = this.fm.rows;\n });\n\n this.datasource\n .connect()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((rows) => {\n this._isEmpty.set(rows.length === 0);\n this.cellValueChangeService.listen(rows, this.columnsService.getVisible());\n this.validationService.listen(rows, this.columnsService.getVisible());\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { KlesColumnConfig } from '../../../core/table/column.interface';\nimport * as _ from 'lodash';\nimport { ColumnsService } from '../columns/columns.service';\nimport { DatasourceService } from '../datasource/datasource.service';\nimport { DATASOURCE_SERVICE } from '../../../token';\n\n@Injectable()\nexport class FilterService {\n constructor(\n private columnsService: ColumnsService,\n @Inject(DATASOURCE_SERVICE) private datasourceService: DatasourceService,\n ) {}\n\n public register() {\n this.datasourceService.datasource.filterPredicate = this.createFilterPredicate();\n }\n\n public formatData(data: { [key: string]: any }): any {\n return data;\n }\n\n private createFilterPredicate() {\n return (data: FormGroup, filter: string): boolean => {\n let searchString = JSON.parse(filter);\n const filterableColumn = this.columnsService\n .columns()\n .filter((f) => f.filterable)\n .map((m) => m.columnDef);\n\n searchString = _.pick(searchString, filterableColumn);\n return Object.keys(searchString)\n .filter((f) => searchString[f] && filterableColumn.includes(f))\n .every((key) => {\n let keyValue = data?.controls[key]?.value;\n const column: KlesColumnConfig | undefined = this.columnsService.columns().find((col) => col.columnDef === key);\n\n if (column) {\n if (column.headerCell?.filterPredicate) {\n return column.headerCell.filterPredicate(keyValue, searchString[key]) || false;\n }\n\n if (keyValue != null && typeof keyValue === 'object' && column.cell?.field?.property) {\n keyValue = keyValue[column.cell.field.property];\n }\n if (searchString?.[key] && typeof searchString[key] === 'object') {\n if (Array.isArray(searchString[key])) {\n if (!searchString[key].length) {\n return true;\n }\n\n const list = (searchString[key] as Array<any>)\n .map((m) => {\n const subkey = column.headerCell?.field?.property ?? column.cell?.field?.property;\n if (subkey) {\n return m?.[subkey] ?? m;\n }\n return m;\n })\n .map((value) => {\n return typeof value === 'string' ? value?.trim().toLowerCase() : value;\n });\n\n return keyValue != undefined && list.includes(keyValue.toString().trim().toLowerCase());\n } else {\n const subKey = column.headerCell?.field?.property ?? column.cell?.field?.property;\n if (subKey) {\n searchString[key] = searchString[key][subKey];\n }\n }\n }\n }\n if (keyValue === null && searchString?.[key].length === 0) {\n return true;\n } else if (keyValue === null) {\n return false;\n } else if (searchString?.[key] === null) {\n return true;\n }\n return keyValue !== null && keyValue.toString().trim().toLowerCase().indexOf(searchString?.[key].toString().toLowerCase()) !== -1;\n });\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EventsService } from '../events/events.service';\nimport { FormGroup } from '@angular/forms';\n\n@Injectable()\nexport class RowService {\n constructor(private readonly eventsService: EventsService) {}\n\n onClick(event: MouseEvent, row: FormGroup, rowIndex: number): void {\n this.eventsService.emit('rowClick', {\n row,\n rowIndex,\n value: row.value,\n rawValue: row.getRawValue(),\n event,\n });\n }\n\n onDoubleClick(event: MouseEvent, row: FormGroup, rowIndex: number): void {\n this.eventsService.emit('rowDoubleClick', {\n row,\n rowIndex,\n value: row.value,\n rawValue: row.getRawValue(),\n event,\n });\n }\n\n onContextMenu(event: MouseEvent, row: FormGroup, rowIndex: number): void {\n event.preventDefault();\n event.stopPropagation();\n this.eventsService.emit('rowContextMenu', {\n row,\n rowIndex,\n value: row.value,\n rawValue: row.getRawValue(),\n event,\n });\n }\n\n onMouseEnter(event: MouseEvent, row: FormGroup, rowIndex: number): void {\n this.eventsService.emit('rowMouseEnter', {\n row,\n rowIndex,\n value: row.value,\n rawValue: row.getRawValue(),\n event,\n });\n }\n\n onMouseLeave(event: MouseEvent, row: FormGroup, rowIndex: number): void {\n this.eventsService.emit('rowMouseLeave', {\n row,\n rowIndex,\n value: row.value,\n rawValue: row.getRawValue(),\n event,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EventsService } from '../events/events.service';\nimport { AbstractControl, FormGroup } from '@angular/forms';\n\n@Injectable()\nexport class CellService {\n constructor(private readonly eventsService: EventsService) {}\n\n onClick(event: MouseEvent, row: FormGroup, rowIndex: number, columnDef: string): void {\n const control: AbstractControl | null = row.get(columnDef);\n\n this.eventsService.emit('cellClick', {\n row,\n rowIndex,\n value: control?.value,\n rawValue: row.getRawValue(),\n event,\n columnDef,\n control,\n });\n }\n\n onDoubleClick(event: MouseEvent, row: FormGroup, rowIndex: number, columnDef: string): void {\n const control: AbstractControl | null = row.get(columnDef);\n\n this.eventsService.emit('cellDoubleClick', {\n row,\n rowIndex,\n value: control?.value,\n rawValue: row.getRawValue(),\n event,\n columnDef,\n control,\n });\n }\n\n onContextMenu(event: MouseEvent, row: FormGroup, rowIndex: number, columnDef: string): void {\n event.preventDefault();\n event.stopPropagation();\n const control: AbstractControl | null = row.get(columnDef);\n\n this.eventsService.emit('cellContextMenu', {\n row,\n rowIndex,\n value: control?.value,\n rawValue: row.getRawValue(),\n event,\n columnDef,\n control,\n });\n }\n}\n","import { Inject, Injectable, signal, Type } from '@angular/core';\nimport { KlesTableEmptyStateComponent } from '../../../components/empty-state/empty-state.component';\nimport { EmptyStateConfig } from '../../../core/table/config.interface';\nimport { EMPTY_STATE_CONFIG } from '../../../token';\nimport { EventsService } from '../events/events.service';\n\n@Injectable()\nexport class EmptyStateService {\n private readonly _enabled = signal(true);\n\n readonly enabled = this._enabled.asReadonly();\n readonly component: Type<unknown>;\n\n constructor(\n @Inject(EMPTY_STATE_CONFIG)\n config: boolean | EmptyStateConfig | undefined,\n private readonly eventsService: EventsService,\n ) {\n if (typeof config === 'boolean') {\n this._enabled.set(config);\n this.component = KlesTableEmptyStateComponent;\n return;\n }\n\n this._enabled.set(config?.enabled ?? true);\n\n this.component = config?.component ?? KlesTableEmptyStateComponent;\n }\n\n enable(): void {\n if (this._enabled()) {\n return;\n }\n this._enabled.set(true);\n this.eventsService.emit('emptyStateChange', { enabled: true });\n }\n\n disable(): void {\n if (!this._enabled()) {\n return;\n }\n this._enabled.set(false);\n this.eventsService.emit('emptyStateChange', { enabled: false });\n }\n\n toggle(): void {\n this._enabled() ? this.disable() : this.enable();\n }\n}\n","import { Inject, Injector, Optional } from '@angular/core';\nimport { CdkDrag, CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { DragDropConfig, DragDropRowChange } from '../../../core/table/config.interface';\nimport { DRAG_DROP_CONFIG, KLES_DRAG_DROP_ROW_CONTEXT } from '../../../token';\nimport { FormGroup } from '@angular/forms';\nimport { EventsService } from '../events/events.service';\nimport { KlesForm } from '../table/form';\nimport { defaultIfEmpty, defer, take } from 'rxjs';\n\nexport abstract class DragDropBase {\n private static nextDropListId = 0;\n readonly dropListId: string;\n\n constructor(\n protected config: DragDropConfig | undefined,\n protected readonly eventsService: EventsService,\n protected readonly klesForm: KlesForm,\n protected readonly injector: Injector,\n tableId?: string,\n ) {\n this.dropListId = tableId ? this.toDropListId(tableId) : `kles-rows-drop-list-${DragDropBase.nextDropListId++}`;\n }\n\n get enable() {\n return this.config?.enable || false;\n }\n\n get autoScrollStep(): number {\n return this.config?.options?.autoScrollStep ?? 8;\n }\n\n get connectedTo() {\n return this.config?.options?.connectedTo?.map((id) => this.toDropListId(id));\n }\n\n get sortPredicate(): (index: number, item: CdkDrag<FormGroup>) => boolean {\n return (index: number, item: CdkDrag<FormGroup>) => {\n const row = item.data;\n const targetRow = item.dropContainer.getSortedItems()[index]?.data as FormGroup | undefined;\n if (!targetRow || row === targetRow) return true;\n\n const targetForm = item.dropContainer.data as KlesForm;\n if (targetForm !== this.klesForm) {\n return (row.getRawValue()._depth ?? 0) === 0 && (targetRow.getRawValue()._depth ?? 0) === 0;\n }\n\n return this.klesForm.canMoveSubtree(row, targetRow);\n };\n }\n\n get previewComponent() {\n return this.config?.options?.dragPreview?.component;\n }\n\n get previewMatchSize() {\n return this.config?.options?.dragPreview?.matchSize ?? true;\n }\n\n get placeholderComponent() {\n return this.config?.options?.dragPlaceholder?.component;\n }\n\n isDragDisabled(row: FormGroup): boolean {\n return this.config?.options?.dragDisabled?.(row) ?? false;\n }\n\n componentInjector(row: FormGroup, rowIndex: number): Injector {\n return Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: KLES_DRAG_DROP_ROW_CONTEXT,\n useValue: this.rowPayload(row, rowIndex),\n },\n ],\n });\n }\n\n abstract listDropped(event: CdkDragDrop<KlesForm>): void;\n\n rowDragStarted(row: FormGroup, rowIndex: number): void {\n this.eventsService.emit('rowDragStart', this.rowPayload(row, rowIndex));\n }\n\n rowDragMoved(row: FormGroup, rowIndex: number): void {\n this.eventsService.emit('rowDragMove', this.rowPayload(row, rowIndex));\n }\n\n rowDragEnded(row: FormGroup, rowIndex: number): void {\n this.eventsService.emit('rowDragEnd', this.rowPayload(row, rowIndex));\n }\n\n protected rowPayload(row: FormGroup, rowIndex: number) {\n return {\n row,\n rowIndex,\n value: row.value,\n rawValue: row.getRawValue(),\n };\n }\n\n protected reorder(event: CdkDragDrop<KlesForm>): void {\n const row = event.item.data as FormGroup;\n const visibleRows = event.container.getSortedItems().map((item) => item.data as FormGroup);\n const targetRow = visibleRows[event.currentIndex];\n\n if (!targetRow) {\n return;\n }\n\n const moved = this.klesForm.moveSubtree(row, targetRow);\n\n if (moved) {\n this.handleDrop({\n ...this.rowPayload(row, moved.currentIndex),\n previousIndex: moved.previousIndex,\n currentIndex: moved.currentIndex,\n parentId: row.getRawValue()._parentId,\n depth: row.getRawValue()._depth ?? 0,\n previousSiblingIndex: moved.previousSiblingIndex,\n currentSiblingIndex: moved.currentSiblingIndex,\n movedRows: moved.movedRows,\n movedRawValues: moved.movedRows.map((movedRow) => movedRow.getRawValue()),\n });\n }\n }\n\n protected transfer(event: CdkDragDrop<KlesForm>): void {\n const row = event.item.data as FormGroup;\n const targetRows = event.container.getSortedItems().map((item) => item.data as FormGroup);\n const targetRow = targetRows[event.currentIndex];\n const moved = event.previousContainer.data.transferSubtreeTo(event.container.data, row, targetRow);\n\n if (moved) {\n this.handleDrop({\n ...this.rowPayload(row, moved.currentIndex),\n previousIndex: moved.previousIndex,\n currentIndex: moved.currentIndex,\n previousContainerId: event.previousContainer.id,\n currentContainerId: event.container.id,\n parentId: row.getRawValue()._parentId,\n depth: row.getRawValue()._depth ?? 0,\n previousSiblingIndex: moved.previousSiblingIndex,\n currentSiblingIndex: moved.currentSiblingIndex,\n movedRows: moved.movedRows,\n movedRawValues: moved.movedRows.map((movedRow) => movedRow.getRawValue()),\n });\n }\n }\n\n private handleDrop(change: DragDropRowChange): void {\n this.eventsService.emit('rowDrop', change);\n\n const drop = this.config?.options?.drop;\n if (!drop) {\n return;\n }\n\n defer(() => drop(change))\n .pipe(defaultIfEmpty(undefined), take(1))\n .subscribe({\n next: () => this.eventsService.emit('rowDropSuccess', change),\n error: (error) => this.eventsService.emit('rowDropError', { change, error }),\n });\n }\n\n private toDropListId(id: string): string {\n return id.endsWith('-rows-drop-list') ? id : `${id}-rows-drop-list`;\n }\n}\n\nexport class DragDropService extends DragDropBase {\n constructor(\n @Optional() @Inject(DRAG_DROP_CONFIG) config: DragDropConfig | undefined,\n eventsService: EventsService,\n klesForm: KlesForm,\n injector: Injector,\n tableId?: string,\n ) {\n super(config, eventsService, klesForm, injector, tableId);\n }\n\n listDropped(event: CdkDragDrop<KlesForm>) {\n if (event.previousContainer === event.container) {\n this.reorder(event);\n } else {\n this.transfer(event);\n }\n }\n}\n\nexport class DragDropLazyService extends DragDropBase {\n constructor(\n @Optional() @Inject(DRAG_DROP_CONFIG) config: DragDropConfig | undefined,\n eventsService: EventsService,\n klesForm: KlesForm,\n injector: Injector,\n tableId?: string,\n ) {\n super(config, eventsService, klesForm, injector, tableId);\n }\n\n listDropped(event: CdkDragDrop<KlesForm>) {\n if (event.previousContainer === event.container) {\n this.reorder(event);\n return;\n }\n\n this.transfer(event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n DestroyRef,\n ElementRef,\n HostBinding,\n inject,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n signal,\n Signal,\n ViewChild,\n} from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTable, MatTableModule } from '@angular/material/table';\n\nimport { ITable } from '../../core/table/table.interface';\n\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { ArrayUiState, GroupUiState, KlesMaterialDynamicformsModule } from '@3kles/kles-material-dynamicforms';\nimport { HeaderFieldPipe } from '../../pipes/header-field.pipe';\nimport { CellFieldPipe, ExtraCellFieldPipe } from '../../pipes/cell-field.pipe';\nimport { MatSort, MatSortModule } from '@angular/material/sort';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { DragDropService } from '../../services/features/dragdrop/dragdrop.service';\nimport { DATASOURCE_SERVICE, LOADER_SERVICE, ROW_DRAG_DROP, SELECTION_SERVICE, SORT_SERVICE, TABLE_SERVICE } from '../../token';\nimport { ResolveNgStylePipe } from '../../pipes/ng-style.pipe';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ResizableColumnDirective } from '../../directives/resizable-column.directive';\nimport { ScrollbarService } from '../../services/features/scrollbar/scrollbar.service';\n\nimport { ScrollbarApi } from '../../core/api/scrollbar';\nimport { KlesTableConnectorService } from '../../kles-table-connector.service';\nimport { ColumnApi } from '../../core/api/column';\nimport { ColumnsService } from '../../services/features/columns/columns.service';\nimport { PaginationApi } from '../../core/api/pagination';\nimport { SelectionApi } from '../../core/api/selection';\nimport { LoadingService } from '../../services/features/loading/loading.service';\nimport { PaginatorService } from '../../services/features/paginator/paginator.service';\nimport { SortApi } from '../../core/api/sort';\nimport { ISortService } from '../../services/features/sort/sort.service';\nimport { FilterService } from '../../services/features/filter/filter.service';\nimport { IDatasourceService } from '../../services/features/datasource/datasource.service';\nimport { IKlesDataSource } from '../../core/datasource/datasource.interface';\nimport { LoadingApi } from '../../core/api/loading';\nimport { ITableService } from '../../services/features/table/table.service';\nimport { ISelectionService } from '../../services/features/selection/selection.service';\nimport { FooterFieldPipe } from '../../pipes/footer-field.pipe';\nimport { ColumnSeparatorConfig, KlesColumnConfig } from '../../core/table/column.interface';\nimport { ILoader } from '../../services/features/loader/loader.interface';\nimport { FooterService } from '../../services/features/footer/footer.service';\nimport { FooterApi } from '../../core/api/footer';\nimport { UiFieldPipe } from '../../pipes/ui-field.pipe';\nimport { SpanPipe } from '../../pipes/span.pipe';\nimport { ExtraRowService } from '../../services/features/extra-row/extra-row.service';\nimport { ExtraRowConfig } from '../../core/table/config.interface';\n\nimport { RenderService } from '../../services/features/render/render.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ExpandedRowStore } from '../../services/store/expanded-row-store.service';\nimport { KlesCellComponent } from '../cell/cell.component';\nimport { KlesHeaderComponent } from '../header/header.component';\nimport { HeaderPipe } from '../../pipes/header.pipe';\nimport { FormApi } from '../../core/api/form';\nimport { RowFormFactory } from '../../services/features/table/row-factory.service';\nimport { EventsApi } from '../../core/api/events';\nimport { EventsService } from '../../services/features/events/events.service';\nimport { RowService } from '../../services/features/row/row.service';\nimport { CellService } from '../../services/features/cell/cell.service';\nimport { KlesTableEmptyStateComponent } from '../empty-state/empty-state.component';\nimport { EmptyStateService } from '../../services/features/empty-state/empty-state.service';\nimport { RowContextPipe } from '../../pipes/row-context.pipe';\nimport { EmptyStateApi } from '../../core/api/empty-state';\nimport { RenderApi } from '../../core/api/render';\nimport { TreeApi } from '../../core/api/tree';\nimport { TreeService } from '../../services/features/tree/tree.service';\n\ntype TableSection = 'header' | 'body' | 'footer';\n\n@Component({\n selector: 'kles-table',\n styleUrl: './table.component.scss',\n templateUrl: './table.component.html',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatSortModule,\n MatTableModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n CdkTableModule,\n ScrollingModule,\n KlesMaterialDynamicformsModule,\n HeaderFieldPipe,\n CellFieldPipe,\n UiFieldPipe,\n FooterFieldPipe,\n SpanPipe,\n ExtraCellFieldPipe,\n DragDropModule,\n ResolveNgStylePipe,\n MatProgressSpinnerModule,\n ResizableColumnDirective,\n MatIconModule,\n KlesCellComponent,\n KlesHeaderComponent,\n HeaderPipe,\n RowContextPipe,\n ],\n})\nexport class TableComponent implements ITable, OnInit, AfterViewInit, OnDestroy {\n @ViewChild(MatTable) table!: MatTable<FormGroup>;\n @ViewChild(MatSort, { static: true }) matSort!: MatSort;\n @ViewChild('form', { static: true }) formElemRef!: ElementRef<HTMLElement>;\n\n headerHeightPx = signal(56);\n scrollHeightPx = signal(0);\n footerHeightPx = signal(0);\n\n dataSource: IKlesDataSource;\n columns: Signal<KlesColumnConfig[]>;\n displayedColumns: Signal<string[]> | undefined;\n showFooter: Signal<boolean>;\n\n multiTemplateDataRows: Signal<boolean>;\n extraRows: Signal<(ExtraRowConfig & { displayedColumns: string[] })[]>;\n\n readonly isEmpty: Signal<boolean>;\n\n private ro?: ResizeObserver;\n private readonly destroyRef = inject(DestroyRef);\n private rafId?: number;\n private _cleanup?: () => void;\n\n emptyStateComponent = KlesTableEmptyStateComponent;\n\n constructor(\n private readonly host: ElementRef<HTMLElement>,\n private readonly connectorService: KlesTableConnectorService,\n @Inject(LOADER_SERVICE) private readonly loader: ILoader<unknown>,\n @Inject(DATASOURCE_SERVICE) private readonly datasourceService: IDatasourceService,\n @Inject(TABLE_SERVICE) public readonly tableService: ITableService,\n @Inject(ROW_DRAG_DROP) public readonly dragDropRowService: DragDropService,\n @Inject(SELECTION_SERVICE) public readonly selectionService: ISelectionService,\n public readonly columnsService: ColumnsService,\n public readonly loadingService: LoadingService,\n private readonly paginatorService: PaginatorService,\n private readonly scrollbarService: ScrollbarService,\n private readonly footerService: FooterService,\n private readonly extraRowService: ExtraRowService,\n private readonly renderService: RenderService,\n @Inject(SORT_SERVICE) private readonly sortService: ISortService,\n @Optional() private readonly filterService: FilterService,\n private readonly expandedRowStore: ExpandedRowStore,\n private readonly rowFactory: RowFormFactory,\n private readonly eventsService: EventsService,\n public readonly rowService: RowService,\n public readonly cellService: CellService,\n public readonly emptyStateService: EmptyStateService,\n private readonly treeService: TreeService<unknown, unknown>,\n ) {\n this.columns = this.columnsService.columns;\n this.displayedColumns = this.columnsService.displayedColumns;\n this.showFooter = this.footerService.footer;\n this.dataSource = this.datasourceService.datasource;\n this.isEmpty = this.datasourceService.isEmpty;\n this.multiTemplateDataRows = this.extraRowService.multiTemplateDataRows;\n this.extraRows = this.extraRowService.rows;\n\n this.connectorService.connect(this);\n this.filterService?.register();\n }\n\n @HostBinding('class.loading')\n get isLoadingClass() {\n return this.loadingService.loading();\n }\n\n @HostBinding('class.empty')\n get isEmptyClass() {\n return this.isEmpty() && this.emptyStateService.enabled();\n }\n\n get events(): EventsApi {\n return {\n listen: () => this.eventsService.events$,\n };\n }\n\n get emptyState(): EmptyStateApi {\n return {\n enabled: this.emptyStateService.enabled,\n enable: () => this.emptyStateService.enable(),\n disable: () => this.emptyStateService.disable(),\n toggle: () => this.emptyStateService.toggle(),\n };\n }\n\n get render(): RenderApi {\n return {\n rows: () => this.renderService.forceRenderRows(),\n };\n }\n\n get tree(): TreeApi {\n return {\n expandedIds: this.treeService.expandedIds,\n loadingIds: this.treeService.loadingIds,\n isExpanded: (id) => this.treeService.isExpanded(id),\n isLoading: (id) => this.treeService.isLoading(id),\n getChildren: (id) => this.treeService.getChildren(id),\n getDescendants: (id) => this.treeService.getDescendants(id),\n expand: (id) => this.treeService.expand(id),\n collapse: (id) => this.treeService.collapse(id),\n toggle: (id) => this.treeService.toggle(id),\n collapseAll: () => this.treeService.collapseAll(),\n };\n }\n\n get form(): FormApi {\n return {\n header: {\n clear: (value, options) => this.tableService.klesForm.getHeader().reset(value, options),\n get: () => this.tableService.klesForm.getHeader(),\n setValue: (value, options) => this.tableService.klesForm.getHeader().setValue(value, options),\n patchValue: (value, options) => this.tableService.klesForm.getHeader().patchValue(value, options),\n },\n footer: {\n clear: (value, options) => this.tableService.klesForm.getFooter().reset(value, options),\n get: () => this.tableService.klesForm.getFooter(),\n setValue: (value, options) => this.tableService.klesForm.getFooter().setValue(value, options),\n patchValue: (value, options) => this.tableService.klesForm.getFooter().patchValue(value, options),\n },\n rows: {\n list: () => this.tableService.klesForm.getRows(),\n get: (_id) => this.tableService.klesForm.getRows().controls.find((row) => row.value._id === _id),\n create: (value, index, options) => {\n const row = this.tableService.klesForm.insertRow(\n this.rowFactory.createRow(\n this.columnsService\n .columns()\n .map((col) => ({ ...col.cell?.field, name: col.columnDef }))\n .concat(this.extraRowService.extraColumns().map((col) => ({ ...col, name: col.columnDef }))),\n value,\n ),\n index,\n options,\n ).formGroup;\n this.eventsService.emit('rowCreate', this.rowEventPayload(row));\n return row;\n },\n patch: (_id, value, options) => {\n const row = this.tableService.klesForm.updateRow(_id, value, options);\n if (row) {\n this.eventsService.emit('rowPatch', this.rowEventPayload(row));\n }\n return row;\n },\n remove: (_id, options) => {\n const row = this.tableService.klesForm.getRows().controls.find((current) => current.getRawValue()._id === _id);\n const payload = row ? this.rowEventPayload(row) : undefined;\n this.tableService.klesForm.deleteRowById(_id, options);\n if (payload) {\n this.eventsService.emit('rowDelete', payload);\n }\n },\n reset: (_id, value, options) => {\n this.tableService.klesForm.resetRow(_id, value, options);\n const row = this.tableService.klesForm.getRows().controls.find((current) => current.getRawValue()._id === _id);\n if (row) {\n this.eventsService.emit('rowUpdate', this.rowEventPayload(row));\n }\n },\n },\n };\n }\n\n get scrollbar(): ScrollbarApi {\n return {\n setVisible: (visible) => this.scrollbarService.setScrollbarVisible(visible),\n show: () => this.scrollbarService.showScrollbar(),\n hide: () => this.scrollbarService.hideScrollbar(),\n getTop: () => this.scrollbarService.getTop(),\n to: (top, left, sb) => this.scrollbarService.to(top, left, sb),\n toTop: (sb) => this.scrollbarService.toTop(sb),\n toLeft: (sb) => this.scrollbarService.toLeft(sb),\n toBottom: (sb) => this.scrollbarService.toBottom(sb),\n toRight: (sb) => this.scrollbarService.toRight(sb),\n };\n }\n\n get column(): ColumnApi {\n return {\n getVisible: () => this.columnsService.getVisible(),\n setVisible: (columnDef, visible) => this.columnsService.setVisible(columnDef, visible),\n toggleVisible: (columnDef) => this.columnsService.toggleVisible(columnDef),\n changeWidth: (columnDef, options) => this.columnsService.changeWidth(columnDef, options),\n setResizable: (columnDef, resizable) => this.columnsService.setResizable(columnDef, resizable),\n toggleResizable: (columnDef) => this.columnsService.toggleResizable(columnDef),\n setSticky: (columnDef, options) => this.columnsService.setSticky(columnDef, options),\n columns: () => this.columnsService.columns(),\n setColumnPosition: (columnDef, position) => this.columnsService.setColumnPosition(columnDef, position),\n };\n }\n\n get pagination(): PaginationApi {\n return {\n disabled: this.paginatorService.disabled(),\n setPageIndex: (index) => this.paginatorService.setPageIndex(index),\n setPageSize: (size) => this.paginatorService.setPageSize(size),\n firstPage: () => this.paginatorService.firstPage(),\n lastPage: () => this.paginatorService.lastPage(),\n enable: () => this.paginatorService.enable(),\n disable: () => this.paginatorService.disable(),\n setPageSizeOptions: (option) => this.paginatorService.setPageSizeOptions(option),\n page: this.paginatorService.pageChanged(),\n };\n }\n\n get selection(): SelectionApi {\n return {\n disable: () => this.selectionService.disable(),\n enable: () => this.selectionService.enable(),\n count: this.selectionService.count(),\n selectionModel: this.selectionService.selectionModel,\n };\n }\n\n get sort(): SortApi {\n return {\n setActive: (active) => this.sortService.setActive(active),\n setDirection: (direction) => this.sortService.setDirection(direction),\n sortChange: () => this.sortService.sortChange(),\n };\n }\n\n get loading(): LoadingApi {\n return {\n active: this.loadingService.loading,\n start: () => this.loadingService.start(),\n stop: () => this.loadingService.stop(),\n };\n }\n\n get footer(): FooterApi {\n return {\n visible: this.footerService.footer,\n hide: () => this.footerService.hide(),\n show: () => this.footerService.show(),\n };\n }\n\n get ui(): GroupUiState<{\n header: GroupUiState;\n rows: ArrayUiState;\n footer: GroupUiState;\n }> {\n return this.tableService.ui;\n }\n\n refresh() {\n this.treeService.collapseAll();\n this.loader.refresh();\n }\n\n private rowEventPayload(row: FormGroup) {\n return {\n row,\n rowIndex: this.tableService.klesForm.getRows().controls.indexOf(row),\n value: row.value,\n rawValue: row.getRawValue(),\n };\n }\n\n ngOnInit(): void {\n this.sortService.register(this.matSort);\n const el = this.formElemRef.nativeElement;\n this.scrollbarService.register(el);\n\n this.renderService\n .render()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.table?.renderRows();\n });\n\n this.expandedRowStore.expandedIds$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.table?.renderRows();\n });\n }\n\n ngAfterViewInit(): void {\n this.calculHeaderHeight();\n }\n\n ngOnDestroy(): void {\n this._cleanup?.();\n this.scrollbarService.unregister();\n }\n\n getColumnSeparator(column: KlesColumnConfig, section: TableSection): string | null {\n const separatorConfig = column.separator;\n\n if (separatorConfig === false || separatorConfig === undefined) {\n return null;\n }\n\n const config: ColumnSeparatorConfig = separatorConfig === true ? {} : separatorConfig;\n\n if (config[section] === false) {\n return null;\n }\n\n const displayedColumns = this.displayedColumns?.() ?? [];\n\n const currentIndex = displayedColumns.indexOf(column.columnDef);\n\n const nextColumnDef = displayedColumns[currentIndex + 1];\n\n const nextColumn = this.columns().find((current) => current.columnDef === nextColumnDef);\n\n const isLastColumn = currentIndex === displayedColumns.length - 1;\n\n if (column.stickyEnd === true && !(isLastColumn && config.showAfterLastColumn === true)) {\n return null;\n }\n\n if (nextColumn?.stickyEnd === true) {\n return null;\n }\n\n if (isLastColumn && config.showAfterLastColumn !== true) {\n return null;\n }\n\n return this.getSeparatorStyle(column, section);\n }\n\n getStickyStartSeparator(column: KlesColumnConfig, section: TableSection): string | null {\n const isBoundary = this.columnsService.stickyStartBoundary() === column.columnDef;\n\n if (!isBoundary) {\n return null;\n }\n return this.getColumnSeparator(column, section);\n }\n\n getStickyEndSeparator(column: KlesColumnConfig, section: TableSection): string | null {\n if (column.stickyEnd !== true) {\n return null;\n }\n\n return this.getSeparatorStyle(column, section);\n }\n\n private getSeparatorStyle(column: KlesColumnConfig, section: TableSection): string | null {\n const separatorConfig = column.separator;\n\n if (separatorConfig === false || separatorConfig === undefined) {\n return null;\n }\n\n const config: ColumnSeparatorConfig = separatorConfig === true ? {} : separatorConfig;\n\n if (config[section] === false) {\n return null;\n }\n\n const width = config.width ?? '1px';\n const style = config.style ?? 'solid';\n const color = config.color ?? 'var(--kles-table-divider-color)';\n\n return `${width} ${style} ${color}`;\n }\n\n private calculHeaderHeight() {\n const formNativeElem = this.formElemRef?.nativeElement as HTMLElement | null;\n const header = this.host.nativeElement.querySelector('.mat-mdc-header-row') as HTMLElement | null;\n const footer = this.host.nativeElement.querySelector('.mat-mdc-footer-row') as HTMLElement | null;\n\n const compute = () => {\n this.scrollHeightPx.set(Math.max(0, (formNativeElem?.offsetHeight ?? 0) - (formNativeElem?.clientHeight ?? 0)));\n this.headerHeightPx.set(Math.ceil(header?.getBoundingClientRect().height ?? 0));\n this.footerHeightPx.set(Math.max(0, footer?.getBoundingClientRect().height ?? 0));\n };\n\n const scheduleCompute = () => {\n if (this.rafId) {\n cancelAnimationFrame(this.rafId);\n }\n this.rafId = requestAnimationFrame(() => {\n compute();\n this.rafId = requestAnimationFrame(compute);\n });\n };\n\n scheduleCompute();\n\n this.ro = new ResizeObserver(scheduleCompute);\n if (formNativeElem) {\n this.ro.observe(formNativeElem);\n }\n\n if (header) {\n this.ro.observe(header);\n }\n\n if (footer) {\n this.ro.observe(footer);\n }\n\n if (formNativeElem) {\n formNativeElem.addEventListener('scroll', scheduleCompute, { passive: true });\n window.addEventListener('resize', scheduleCompute, { passive: true });\n\n this._cleanup = () => {\n formNativeElem.removeEventListener('scroll', scheduleCompute);\n window.removeEventListener('resize', scheduleCompute);\n this.ro?.disconnect();\n if (this.rafId) {\n cancelAnimationFrame(this.rafId);\n }\n };\n }\n }\n}\n","<form #form cdkScrollable [formGroup]=\"tableService.form\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n [trackBy]=\"multiTemplateDataRows() ? null : tableService.trackBy\"\n formArrayName=\"rows\"\n cdkDropList\n [id]=\"dragDropRowService.dropListId\"\n [cdkDropListData]=\"tableService.klesForm\"\n (cdkDropListDropped)=\"dragDropRowService.listDropped($event)\"\n [cdkDropListDisabled]=\"!dragDropRowService.enable\"\n [cdkDropListAutoScrollStep]=\"dragDropRowService.autoScrollStep\"\n [cdkDropListSortPredicate]=\"dragDropRowService.sortPredicate\"\n [cdkDropListConnectedTo]=\"dragDropRowService.connectedTo\"\n [multiTemplateDataRows]=\"multiTemplateDataRows()\"\n >\n <colgroup>\n @for (column of columns(); track column.columnDef) {\n <col\n [attr.data-column-def]=\"column.columnDef\"\n [style.width]=\"column.width ?? null\"\n [style.minWidth]=\"column.minWidth ?? null\"\n [style.maxWidth]=\"column.maxWidth ?? null\"\n />\n }\n </colgroup>\n\n @for (column of columns(); track column.columnDef) {\n <ng-container [cdkColumnDef]=\"column.columnDef\" [sticky]=\"column.sticky ?? false\" [stickyEnd]=\"column.stickyEnd ?? false\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [appResizableColumn]=\"column\"\n [style.border-inline-end]=\"getColumnSeparator(column, 'header') ?? getStickyStartSeparator(column, 'header')\"\n [style.border-inline-start]=\"getStickyEndSeparator(column, 'header')\"\n [ngStyle]=\"\n column.headerCell?.style?.ngStyle\n | resolveNgStyle\n : tableService.form.get(['header', column.columnDef])?.value\n : tableService.form.get(['header', column.columnDef])?.status\n : tableService.form.controls.header.value\n : tableService.form.controls.header.status\n \"\n >\n <div class=\"cell\">\n <kles-header [header]=\"column | header\" [group]=\"tableService.form.controls.header\">\n <ng-container\n klesDynamicField\n [field]=\"column | headerField\"\n [group]=\"tableService.form.controls.header\"\n [ui]=\"tableService.ui.states.header\"\n ></ng-container>\n </kles-header>\n </div>\n </th>\n\n <td\n mat-cell\n *cdkCellDef=\"let row; let index = index; let dataIndex = dataIndex\"\n [style.border-inline-end]=\"getColumnSeparator(column, 'body') ?? getStickyStartSeparator(column, 'body')\"\n [style.border-inline-start]=\"getStickyEndSeparator(column, 'body')\"\n [ngStyle]=\"\n column.cell?.style?.ngStyle\n | resolveNgStyle: row.controls[column.columnDef].value : row.controls[column.columnDef].status : row.value : row.status\n \"\n (click)=\"cellService.onClick($event, row, dataIndex ?? index, column.columnDef)\"\n (dblclick)=\"cellService.onDoubleClick($event, row, dataIndex ?? index, column.columnDef)\"\n (contextmenu)=\"cellService.onContextMenu($event, row, dataIndex ?? index, column.columnDef)\"\n >\n <div class=\"cell\" [style.--align]=\"column.align\">\n <kles-cell [group]=\"row\" [ui]=\"row | uiField\" [column]=\"column\" [rowIndex]=\"dataIndex ?? index\">\n @if (column.columnDef === selectionService.key && selectionService.isLoading(row)) {\n <mat-spinner class=\"selection-row-spinner\" [diameter]=\"20\"></mat-spinner>\n } @else {\n <ng-container klesDynamicField [field]=\"column | cellField\" [group]=\"row\" [ui]=\"row | uiField\" [context]=\"row | rowContext\"></ng-container>\n }\n </kles-cell>\n </div>\n </td>\n\n <td\n mat-footer-cell\n *matFooterCellDef\n [style.border-inline-end]=\"getColumnSeparator(column, 'footer') ?? getStickyStartSeparator(column, 'footer')\"\n [style.border-inline-start]=\"getStickyEndSeparator(column, 'footer')\"\n [ngStyle]=\"\n column.footerCell?.style?.ngStyle\n | resolveNgStyle\n : tableService.form.get(['footer', column.columnDef])?.value\n : tableService.form.get(['footer', column.columnDef])?.status\n : tableService.form.controls.footer.value\n : tableService.form.controls.footer.status\n \"\n >\n @if (column.footerCell) {\n <ng-container\n klesDynamicField\n [field]=\"column | footerField\"\n [group]=\"tableService.form.controls.footer\"\n [ui]=\"tableService.ui.states.footer\"\n >\n </ng-container>\n }\n </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns(); sticky: true\"></tr>\n\n <tr\n mat-row\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns()\"\n cdkDrag\n [cdkDragData]=\"row\"\n [cdkDragDisabled]=\"dragDropRowService.isDragDisabled(row)\"\n (cdkDragStarted)=\"dragDropRowService.rowDragStarted(row, dataIndex ?? index)\"\n (cdkDragMoved)=\"dragDropRowService.rowDragMoved(row, dataIndex ?? index)\"\n (cdkDragEnded)=\"dragDropRowService.rowDragEnded(row, dataIndex ?? index)\"\n (click)=\"rowService.onClick($event, row, dataIndex ?? index)\"\n (dblclick)=\"rowService.onDoubleClick($event, row, dataIndex ?? index)\"\n (contextmenu)=\"rowService.onContextMenu($event, row, dataIndex ?? index)\"\n (mouseenter)=\"rowService.onMouseEnter($event, row, dataIndex ?? index)\"\n (mouseleave)=\"rowService.onMouseLeave($event, row, dataIndex ?? index)\"\n >\n @if (dragDropRowService.previewComponent; as previewComponent) {\n <ng-template cdkDragPreview [matchSize]=\"dragDropRowService.previewMatchSize\">\n <div class=\"kles-row-drag-preview\">\n <ng-container\n *ngComponentOutlet=\"previewComponent; injector: dragDropRowService.componentInjector(row, dataIndex ?? index)\"\n ></ng-container>\n </div>\n </ng-template>\n }\n\n @if (dragDropRowService.placeholderComponent; as placeholderComponent) {\n <ng-template cdkDragPlaceholder>\n <tr class=\"kles-row-drag-placeholder\">\n <td [attr.colspan]=\"displayedColumns()?.length ?? 1\">\n <ng-container\n *ngComponentOutlet=\"placeholderComponent; injector: dragDropRowService.componentInjector(row, dataIndex ?? index)\"\n ></ng-container>\n </td>\n </tr>\n </ng-template>\n }\n </tr>\n\n @if (multiTemplateDataRows()) {\n @for (extraRow of extraRows(); track extraRow) {\n @for (extraColumn of extraRow.cells; track extraColumn.columnDef) {\n <ng-container [cdkColumnDef]=\"extraColumn.columnDef\">\n <td\n mat-cell\n *cdkCellDef=\"let row\"\n [attr.colspan]=\"extraColumn.colspan | spanPipe: displayedColumns().length\"\n [attr.rowspan]=\"extraColumn.rowspan\"\n [ngStyle]=\"\n extraColumn?.style?.ngStyle\n | resolveNgStyle\n : row.controls[extraColumn.columnDef].value\n : row.controls[extraColumn.columnDef].status\n : row.value\n : row.status\n \"\n >\n <ng-container klesDynamicField [field]=\"extraColumn | extraCellField\" [group]=\"row\" [ui]=\"row | uiField\" [context]=\"row | rowContext\"></ng-container>\n </td>\n </ng-container>\n }\n <tr\n mat-row\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: extraRow.displayedColumns; when: extraRow.when\"\n (click)=\"rowService.onClick($event, row, dataIndex ?? index)\"\n (dblclick)=\"rowService.onDoubleClick($event, row, dataIndex ?? index)\"\n (contextmenu)=\"rowService.onContextMenu($event, row, dataIndex ?? index)\"\n (mouseenter)=\"rowService.onMouseEnter($event, row, dataIndex ?? index)\"\n (mouseleave)=\"rowService.onMouseLeave($event, row, dataIndex ?? index)\"\n ></tr>\n }\n }\n\n <tr mat-footer-row *matFooterRowDef=\"displayedColumns(); sticky: true\" [style.display]=\"showFooter() ? '' : 'none'\"></tr>\n </table>\n</form>\n\n@if (loadingService.loading()) {\n <div class=\"table-overlay\" [style.--header-h.px]=\"headerHeightPx()\" [style.--scroll-h.px]=\"scrollHeightPx()\" [style.--footer-h.px]=\"footerHeightPx()\">\n <mat-spinner></mat-spinner>\n </div>\n}\n\n@if (emptyStateService.enabled() && !loadingService.loading() && isEmpty()) {\n <div\n class=\"table-empty-state-overlay\"\n [style.--header-h.px]=\"headerHeightPx()\"\n [style.--scroll-h.px]=\"scrollHeightPx()\"\n [style.--footer-h.px]=\"footerHeightPx()\"\n >\n <div class=\"table-empty-state-content\">\n <ng-container *ngComponentOutlet=\"emptyStateService.component\"></ng-container>\n </div>\n </div>\n}\n","export interface Destroyable {\n destroy();\n}\n\nexport function isDestroyable(value: unknown): value is Destroyable {\n return value !== null && typeof value === 'object' &&\n typeof (value as Destroyable).destroy === 'function';\n}","import { CommonModule } from '@angular/common';\nimport { Component, OnInit, Signal, ViewChild } from '@angular/core';\nimport { TableComponent } from '../table/table.component';\nimport { MatPaginator, MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { PaginatorService } from '../../services/features/paginator/paginator.service';\n\n@Component({\n selector: 'kles-paginate-table',\n templateUrl: './paginate-table.component.html',\n styleUrl: './paginate-table.component.scss',\n standalone: true,\n imports: [CommonModule, TableComponent, MatPaginatorModule],\n})\nexport class PaginateTableComponent implements OnInit {\n @ViewChild(MatPaginator, { static: true }) private paginator: MatPaginator;\n @ViewChild(TableComponent, { static: true }) table: TableComponent;\n\n disabled: Signal<boolean>;\n\n constructor(private paginatorService: PaginatorService) {\n this.disabled = paginatorService.disabled();\n }\n\n ngOnInit(): void {\n this.paginatorService.register(this.paginator);\n }\n}\n","<kles-table></kles-table>\n<mat-paginator [disabled]=\"disabled()\" class=\"paginator\"></mat-paginator>\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Sort } from '@angular/material/sort';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ITableStore } from './store';\nimport { SORT_CONFIG } from '../../token';\n\n@Injectable()\nexport class SortStore implements ITableStore {\n private s: BehaviorSubject<Sort | undefined>;\n sort$: Observable<Sort>;\n\n constructor(@Optional() @Inject(SORT_CONFIG) protected config: Sort) {\n this.s = new BehaviorSubject<Sort | undefined>(config || undefined);\n this.sort$ = this.s.asObservable();\n }\n\n setSort(v?: Sort) {\n this.s.next(v);\n }\n\n snapshot() {\n return this.s.value;\n }\n\n reset(): void {\n this.s.next(this.config || undefined);\n }\n}\n","import { DestroyRef, EventEmitter, Inject, inject, Injectable, Optional } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { MatSort, Sort, SortDirection } from '@angular/material/sort';\nimport { SortStore } from '../../store/sort-store.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DatasourceLazyService, DatasourceService } from '../datasource/datasource.service';\nimport { DATASOURCE_SERVICE } from '../../../token';\nimport { ColumnsService } from '../columns/columns.service';\nimport { KlesColumnConfig } from '../../../core/table/column.interface';\nimport { EventsService } from '../events/events.service';\n\nexport interface ISortService {\n sort: MatSort;\n register(s: MatSort): void;\n setDirection(direction: SortDirection): void;\n setActive(active: string): void;\n sortChange(): EventEmitter<Sort>;\n}\n\n@Injectable()\nexport abstract class AbstractSortService implements ISortService {\n protected _sort!: MatSort;\n protected _sortChange = new EventEmitter<Sort>();\n protected readonly destroyRef = inject(DestroyRef);\n\n constructor(protected readonly eventsService: EventsService) {}\n\n public get sort(): MatSort {\n return this._sort;\n }\n\n public register(s: MatSort) {\n this._sort = s;\n this._sort.sortChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this._sortChange.emit(event);\n\n this.eventsService.emit('sortChange', {\n active: event.active,\n direction: event.direction,\n });\n });\n }\n\n public setDirection(direction: SortDirection) {\n if (this._sort) {\n this._sort.direction = direction;\n this.sort.sortChange.emit({ active: this._sort.active, direction: this._sort.direction });\n }\n }\n\n public setActive(active: string) {\n if (this._sort) {\n this._sort.active = active;\n this.sort.sortChange.emit({ active: this._sort.active, direction: this._sort.direction });\n }\n }\n\n public sortChange(): EventEmitter<Sort> {\n return this._sortChange;\n }\n}\n\n@Injectable()\nexport class SortService extends AbstractSortService {\n constructor(\n @Optional() private sortStore: SortStore | null,\n private columnsService: ColumnsService,\n @Inject(DATASOURCE_SERVICE) private datasourceService: DatasourceService,\n readonly eventsService: EventsService,\n ) {\n super(eventsService);\n }\n\n public register(s: MatSort) {\n super.register(s);\n this.datasourceService.datasource.sort = this._sort;\n if (!this._sort) return;\n\n this.datasourceService.datasource.sortingDataAccessor = this.sortingDataAccessor;\n this.datasourceService.datasource.sortData = this.sortDataPredicate(this.columnsService.columns());\n\n s.active = this.sortStore?.snapshot()?.active ?? s.active;\n s.direction = this.sortStore?.snapshot()?.direction ?? s.direction;\n\n s.sortChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.sortStore?.setSort(event);\n });\n }\n\n private sortingDataAccessor = (item: AbstractControl, property: string) => {\n if (!item.value) {\n return undefined;\n }\n let value: any = item.value?.[property];\n\n if (value) {\n if (typeof value === 'string') {\n value = value.toLowerCase();\n }\n }\n\n return value;\n };\n\n private sortDataPredicate(columns: KlesColumnConfig[]) {\n return (data: FormGroup[], sort: MatSort): FormGroup[] => {\n const active = sort.active;\n const direction = sort.direction;\n\n if (!active || direction == '') {\n return data;\n }\n\n const column = columns.find((col) => col.columnDef === active);\n\n return data.sort((a, b) => {\n let valueA: any;\n let valueB: any;\n if (column?.headerCell?.sortPredicate) {\n valueA = column?.headerCell.sortPredicate(a);\n valueB = column?.headerCell.sortPredicate(b);\n } else {\n valueA = this.sortingDataAccessor(a, active);\n valueB = this.sortingDataAccessor(b, active);\n\n if (column) {\n const key = column.cell?.field?.property;\n if (key) {\n valueA = valueA?.[key];\n valueB = valueB?.[key];\n }\n }\n }\n\n const valueAType = typeof valueA;\n const valueBType = typeof valueB;\n\n if (valueAType !== valueBType) {\n if (valueAType === 'number') {\n valueA += '';\n }\n if (valueBType === 'number') {\n valueB += '';\n }\n }\n\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n if (valueA > valueB) {\n comparatorResult = 1;\n } else if (valueA < valueB) {\n comparatorResult = -1;\n }\n } else if (valueA != null) {\n comparatorResult = 1;\n } else if (valueB != null) {\n comparatorResult = -1;\n }\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n };\n }\n}\n\n@Injectable()\nexport class SortLazyService extends AbstractSortService {\n constructor(\n @Optional() private sortStore: SortStore | null,\n @Inject(DATASOURCE_SERVICE) private datasourceService: DatasourceLazyService,\n readonly eventsService: EventsService,\n ) {\n super(eventsService);\n }\n\n public register(s: MatSort) {\n super.register(s);\n this.datasourceService.datasource.sort = this._sort;\n if (!this._sort) return;\n\n s.active = this.sortStore?.snapshot()?.active ?? s.active;\n s.direction = this.sortStore?.snapshot()?.direction ?? s.direction;\n\n s.sortChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.sortStore?.setSort(event);\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ITableStore } from './store';\n\n@Injectable()\nexport class FilterStore implements ITableStore {\n private s = new BehaviorSubject<Record<string, unknown>>({});\n filters$ = this.s.asObservable();\n\n setFilters(v: Record<string, unknown>) {\n this.s.next(v);\n }\n\n reset(): void {\n this.s.next({});\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kles-infinite-scroll-table',\n templateUrl: './infinite-scroll-table.component.html',\n standalone: true,\n imports: [],\n})\nexport class InfiniteScrollTableComponent {}\n","","import { Inject, Injectable, Optional } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { auditTime, catchError, concat, defer, map, Observable, of, switchMap, take } from 'rxjs';\nimport { SELECTION_CONFIG } from '../../../token';\nimport { SelectionAllResponse, SelectionConfig, SelectionResponse, SelectionState } from '../../../core/table/selection-config.interface';\n\n@Injectable()\nexport class SelectionLoaderService<T> {\n constructor(@Optional() @Inject(SELECTION_CONFIG) private readonly selectionConfig: SelectionConfig<T> | undefined) {}\n\n public get key() {\n return this.selectionConfig?.key || '#select';\n }\n\n public select(row: FormGroup, selected: boolean, filters?: Record<string, unknown>): Observable<SelectionState> {\n return defer(() => this.selectionConfig?.params?.() || of({} as T)).pipe(\n auditTime(0),\n take(1),\n switchMap((params) => {\n const selection$: Observable<SelectionResponse> = this.selectionConfig?.select\n ? this.selectionConfig.select(params, row, selected, filters)\n : of({\n selected,\n count: undefined,\n });\n\n const result$: Observable<SelectionState> = selection$.pipe(\n map(\n (response): SelectionState => ({\n ...response,\n loading: false,\n success: true,\n }),\n ),\n catchError(\n (error): Observable<SelectionState> =>\n of({\n error,\n loading: false,\n success: false,\n }),\n ),\n );\n\n return concat(\n of<SelectionState>({\n loading: true,\n success: false,\n }),\n result$,\n );\n }),\n catchError((error) =>\n of<SelectionState>({\n error,\n loading: false,\n success: false,\n }),\n ),\n );\n }\n\n public selectAll(selected: boolean, filters?: Record<string, unknown>): Observable<SelectionState> {\n return defer(() => this.selectionConfig?.params?.() || of({} as T)).pipe(\n auditTime(0),\n take(1),\n switchMap((params) => {\n const selection$: Observable<SelectionAllResponse> = this.selectionConfig?.selectAll\n ? this.selectionConfig.selectAll(params, selected, filters)\n : of({\n selected,\n count: undefined,\n footer: undefined,\n });\n\n const result$: Observable<SelectionState> = selection$.pipe(\n map(\n (response): SelectionState => ({\n ...response,\n loading: false,\n success: true,\n }),\n ),\n catchError(\n (error): Observable<SelectionState> =>\n of({\n error,\n loading: false,\n success: false,\n }),\n ),\n );\n\n return concat(\n of<SelectionState>({\n loading: true,\n success: false,\n }),\n result$,\n );\n }),\n catchError((error) =>\n of<SelectionState>({\n error,\n loading: false,\n success: false,\n }),\n ),\n );\n }\n}\n","import { DestroyRef, Inject, inject, Injectable, Optional } from '@angular/core';\nimport { KlesForm } from '../table/form';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { combineLatest, debounceTime, distinctUntilChanged, filter, map, merge, pairwise, scan, startWith, switchMap } from 'rxjs';\nimport { FilterService } from '../filter/filter.service';\nimport { FilterStore } from '../../store/filter-store.service';\nimport { DATASOURCE_SERVICE, LOADER_SERVICE } from '../../../token';\nimport { IDatasourceService } from '../datasource/datasource.service';\nimport { ColumnsService } from '../columns/columns.service';\nimport { ILoader } from '../loader/loader.interface';\nimport { EventsService } from '../events/events.service';\nimport _ from 'lodash';\n\nexport interface IHeaderService {\n register(): void;\n}\n\n@Injectable()\nexport class HeaderService implements IHeaderService {\n private readonly destroyRef = inject(DestroyRef);\n private filterableColumns: string[];\n\n constructor(\n private fm: KlesForm,\n @Optional() private filterService: FilterService | null,\n @Optional() private filterStore: FilterStore | null,\n @Inject(DATASOURCE_SERVICE) private datasourceService: IDatasourceService,\n @Inject(LOADER_SERVICE) private loader: ILoader<any>,\n private columnsService: ColumnsService,\n private readonly eventsService: EventsService,\n ) {\n this.filterableColumns = this.columnsService\n .columns()\n .filter((c) => c.filterable === true)\n .map((c) => c.columnDef);\n }\n\n public register() {\n this.load();\n\n const header = this.fm.getHeader();\n\n const filterControlChanges$ = merge(\n ...this.filterableColumns.map((columnDef) => {\n const control = header.get(columnDef);\n\n if (!control) {\n throw new Error(`Missing header filter control: ${columnDef}`);\n }\n\n return control.valueChanges.pipe(\n debounceTime(300),\n distinctUntilChanged((a, b) => _.isEqual(a, b)),\n map((currentValue) => ({\n columnDef,\n currentValue,\n })),\n );\n }),\n );\n\n filterControlChanges$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n scan(\n (state, changed) => {\n const previousValue = state.filters[changed.columnDef];\n\n const changedFilter = {\n columnDef: changed.columnDef,\n previousValue,\n currentValue: changed.currentValue,\n };\n\n const filters = {\n ...state.filters,\n [changed.columnDef]: changed.currentValue,\n };\n\n return {\n filters,\n changedFilter,\n };\n },\n {\n filters: Object.fromEntries(this.filterableColumns.map((columnDef) => [columnDef, header.get(columnDef)?.value])) as Record<\n string,\n unknown\n >,\n changedFilter: undefined as\n | {\n columnDef: string;\n previousValue: unknown;\n currentValue: unknown;\n }\n | undefined,\n },\n ),\n )\n .subscribe(({ filters, changedFilter }) => {\n if (this.filterService) {\n const prepared = this.filterService.formatData(filters);\n this.datasourceService.datasource.filter = JSON.stringify(prepared);\n this.filterStore?.setFilters(prepared);\n } else {\n this.filterStore?.setFilters(filters);\n this.datasourceService.datasource.filter = JSON.stringify(filters);\n }\n\n this.eventsService.emit('filterChange', {\n filters,\n changedFilter,\n });\n });\n }\n\n private load() {\n this.loader\n .load()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((response) => !response.loading),\n map((response) => response.header),\n filter((header) => header != undefined),\n distinctUntilChanged((p, c) => {\n return this.filterableColumns.every((col) => p?.[col] === c?.[col]);\n }),\n )\n .subscribe((header) => {\n this.fm.getHeader().patchValue(header, { emitEvent: false });\n });\n }\n}\n\n@Injectable()\nexport class HeaderLazyService implements IHeaderService {\n private readonly destroyRef = inject(DestroyRef);\n private filterableColumns: string[];\n\n constructor(\n private fm: KlesForm,\n @Optional() private filterStore: FilterStore | null,\n @Inject(LOADER_SERVICE) private loader: ILoader<any>,\n private columnsService: ColumnsService,\n private readonly eventsService: EventsService,\n ) {\n this.filterableColumns = this.columnsService\n .columns()\n .filter((c) => c.filterable === true)\n .map((c) => c.columnDef);\n }\n\n public register() {\n this.load();\n\n const header = this.fm.getHeader();\n\n const filterControlChanges$ = merge(\n ...this.filterableColumns.map((columnDef) => {\n const control = header.get(columnDef);\n\n if (!control) {\n throw new Error(`Missing header filter control: ${columnDef}`);\n }\n\n return control.valueChanges.pipe(\n debounceTime(300),\n distinctUntilChanged((a, b) => _.isEqual(a, b)),\n map((currentValue) => ({\n columnDef,\n currentValue,\n })),\n );\n }),\n );\n\n filterControlChanges$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n scan(\n (state, changed) => {\n const previousValue = state.filters[changed.columnDef];\n\n const changedFilter = {\n columnDef: changed.columnDef,\n previousValue,\n currentValue: changed.currentValue,\n };\n\n const filters = {\n ...state.filters,\n [changed.columnDef]: changed.currentValue,\n };\n\n return {\n filters,\n changedFilter,\n };\n },\n {\n filters: Object.fromEntries(this.filterableColumns.map((columnDef) => [columnDef, header.get(columnDef)?.value])) as Record<\n string,\n unknown\n >,\n changedFilter: undefined as\n | {\n columnDef: string;\n previousValue: unknown;\n currentValue: unknown;\n }\n | undefined,\n },\n ),\n )\n .subscribe(({ filters, changedFilter }) => {\n this.filterStore?.setFilters(filters);\n\n this.eventsService.emit('filterChange', {\n filters,\n changedFilter,\n });\n });\n }\n\n private load() {\n this.loader\n .load()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((response) => !response.loading),\n map((response) => response.header),\n filter((header) => header != undefined),\n distinctUntilChanged((p, c) => {\n return this.filterableColumns.every((col) => p?.[col] === c?.[col]);\n }),\n )\n .subscribe((header) => {\n this.fm.getHeader().patchValue(header, { emitEvent: false });\n });\n }\n}\n","export function getMultipleValuesInSingleSelectionError() {\n return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\n}\n","export enum KlesSelectionModelState {\n ENABLED = 'enabled',\n DISABLED = 'disabled',\n}\n","import { Subject } from 'rxjs';\nimport { IKlesSelectionModel } from './selection-model.interface';\nimport { getMultipleValuesInSingleSelectionError } from './selection-model-error';\nimport { KlesSelectionModelState } from './selection-state.enum';\nimport { Signal, signal } from '@angular/core';\n\nexport class KlesSelectionModel<T> implements IKlesSelectionModel<T> {\n private _selection = new Set<T>();\n private _changed = new Subject<{ added?: T[]; removed?: T[]; count: number; state: KlesSelectionModelState }>();\n private _stateChanged = new Subject<KlesSelectionModelState>();\n private _state: KlesSelectionModelState = KlesSelectionModelState.ENABLED;\n\n private _count = signal<number>(0);\n\n constructor(\n private readonly multiple: boolean = false,\n initialValues?: T[],\n ) {\n const values = initialValues ?? [];\n this.assertSelectionCardinality(values);\n values.forEach((value) => this._selection.add(value));\n this._count.set(this._selection.size);\n }\n\n get selected(): { items: T[]; count: number; state: KlesSelectionModelState } {\n return {\n items: Array.from(this._selection),\n count: this._selection.size,\n state: this._state,\n };\n }\n\n get count(): Signal<number> {\n return this._count.asReadonly();\n }\n\n get changed() {\n return this._changed.asObservable();\n }\n\n get state() {\n return this._state;\n }\n\n get stateChanged() {\n return this._stateChanged.asObservable();\n }\n\n get selectionMode() {\n return this.multiple;\n }\n\n public select(value: T | T[], options?: { emitEvent?: boolean }): void {\n const added = [];\n const removed = [];\n if (this._state === KlesSelectionModelState.ENABLED) {\n if (Array.isArray(value)) {\n this.assertSelectionCardinality(value);\n if (!this.multiple && value.length === 1) {\n const singleValue = value[0];\n if (!this.isSelected(singleValue)) {\n removed.push(...Array.from(this._selection));\n this._selection.clear();\n this._selection.add(singleValue);\n added.push(singleValue);\n }\n } else {\n value.forEach((v) => {\n if (!this.isSelected(v)) {\n this._selection.add(v);\n added.push(v);\n }\n });\n }\n } else {\n if (!this.isSelected(value)) {\n if (!this.multiple) {\n removed.push(...Array.from(this._selection));\n this._selection.clear();\n }\n this._selection.add(value);\n added.push(value);\n }\n }\n }\n\n this._count.set(this._selection.size);\n if ((options?.emitEvent ?? true) && (added.length > 0 || removed.length > 0)) {\n this._changed.next({ added, removed, count: this._selection.size, state: this._state });\n }\n }\n\n public deselect(value: T | T[], options?: { emitEvent?: boolean }): void {\n const removed: T[] = [];\n const added: T[] = [];\n if (this._state === KlesSelectionModelState.ENABLED) {\n if (Array.isArray(value)) {\n value.forEach((v) => {\n if (this.isSelected(v)) {\n this._selection.delete(v);\n removed.push(v);\n }\n });\n } else {\n if (this.isSelected(value)) {\n this._selection.delete(value);\n removed.push(value);\n }\n }\n }\n\n this._count.set(this._selection.size);\n if ((options?.emitEvent ?? true) && (added.length > 0 || removed.length > 0)) {\n this._changed.next({ added, removed, count: this._selection.size, state: this._state });\n }\n }\n\n public toggle(value: T, options?: { emitEvent?: boolean }): void {\n if (this.isSelected(value)) {\n this.deselect(value, options);\n } else {\n this.select(value, options);\n }\n }\n\n public isEmpty(): boolean {\n return this._selection.size === 0;\n }\n\n public hasValue(): boolean {\n return this._selection.size > 0;\n }\n\n public disable(): void {\n this._state = KlesSelectionModelState.DISABLED;\n this._stateChanged.next(this._state);\n }\n public enable(): void {\n this._state = KlesSelectionModelState.ENABLED;\n this._stateChanged.next(this._state);\n }\n\n public isSelected(value: T): boolean {\n return this._selection.has(value);\n }\n\n public isMultipleSelection(): boolean {\n return this.multiple || false;\n }\n\n public reset(values: T[], options?: { emitEvent?: boolean }): void {\n this.assertSelectionCardinality(values);\n const previous = Array.from(this._selection);\n\n this._selection.clear();\n\n values.forEach((value) => this._selection.add(value));\n\n this._count.set(this._selection.size);\n\n if (options?.emitEvent ?? true) {\n this._changed.next({\n added: values.filter((value) => !previous.includes(value)),\n removed: previous.filter((value) => !this._selection.has(value)),\n count: this._selection.size,\n state: this._state,\n });\n }\n }\n\n private assertSelectionCardinality(values: T[]): void {\n if (!this.multiple && values.length > 1) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n}\n","import { DestroyRef, inject, Inject, Injectable, Optional, Signal, signal } from '@angular/core';\nimport { DATASOURCE_SERVICE, LINES_SERVICE, SELECTION_CONFIG } from '../../../token';\nimport { SelectionConfig } from '../../../core/table/selection-config.interface';\nimport { KlesSelectionModel } from '../../../core/selection/selection-model';\nimport { FormGroup } from '@angular/forms';\nimport { KlesForm } from '../table/form';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { auditTime, concatMap, map, merge, of, switchMap, withLatestFrom } from 'rxjs';\nimport { SelectionLoaderService } from './selection-loader.service';\nimport { ScrollbarService } from '../scrollbar/scrollbar.service';\nimport { LoadingService } from '../loading/loading.service';\nimport { DatasourceService } from '../datasource/datasource.service';\nimport { IKlesSelectionModel } from '../../../core/selection/selection-model.interface';\nimport { KlesSelectionModelState } from '../../../core/selection/selection-state.enum';\nimport { ILinesService } from '../lines/lines.service';\nimport { FilterStore } from '../../store/filter-store.service';\nimport { EventsService } from '../events/events.service';\nimport { SelectionChangePayload, SelectionErrorPayload } from '../events/event-payloads.model';\n\nexport interface ISelectionService {\n key: string;\n selectionMode: boolean;\n register(): void;\n selectionModel?: IKlesSelectionModel<FormGroup>;\n readonly loadingRows: Signal<ReadonlySet<FormGroup>>;\n isLoading(row: FormGroup): boolean;\n count(): Signal<number>;\n disable(): void;\n enable(): void;\n}\n\n@Injectable()\nexport abstract class AbstractSelectionService<T> implements ISelectionService {\n private readonly _loadingRows = signal<ReadonlySet<FormGroup>>(new Set());\n public readonly loadingRows = this._loadingRows.asReadonly();\n\n constructor(\n @Optional() @Inject(SELECTION_CONFIG) protected readonly selectionConfig: SelectionConfig<T> | undefined,\n protected readonly fm: KlesForm,\n protected readonly eventsService: EventsService,\n ) {}\n\n public get key() {\n return this.selectionConfig?.key || '#select';\n }\n\n public get selectionMode(): boolean {\n return this.selectionConfig?.selectionMode || false;\n }\n\n public selectionModel!: IKlesSelectionModel<FormGroup>;\n\n abstract register(): void;\n abstract count(): Signal<number>;\n abstract disable(): void;\n abstract enable(): void;\n\n public isLoading(row: FormGroup): boolean {\n return this._loadingRows().has(row);\n }\n\n protected emitSelectionEvents(\n changed: { added?: FormGroup[]; removed?: FormGroup[]; count: number },\n selectedCount = changed.count,\n ): void {\n const payload = this.selectionPayload(changed.added, changed.removed, selectedCount);\n this.eventsService.emit('selectionChange', payload);\n\n changed.added?.forEach((row) => this.eventsService.emit('rowSelect', this.rowPayload(row)));\n changed.removed?.forEach((row) => this.eventsService.emit('rowUnselect', this.rowPayload(row)));\n }\n\n protected emitBulkSelectionEvent(selected: boolean, selectedCount: number): void {\n this.eventsService.emit(selected ? 'selectAll' : 'unselectAll', this.selectionPayload(undefined, undefined, selectedCount));\n }\n\n protected startRowSelection(row: FormGroup): void {\n this._loadingRows.update((rows) => new Set([...rows, row]));\n row.controls[this.key]?.disable({ emitEvent: false });\n }\n\n protected stabilizeRowSelection(row: FormGroup, selected: boolean): void {\n row.controls[this.key]?.patchValue(selected, { emitEvent: false });\n this._loadingRows.update((rows) => {\n const next = new Set(rows);\n next.delete(row);\n return next;\n });\n\n if (this.selectionModel.state === KlesSelectionModelState.DISABLED || this.selectionConfig?.isDisabled?.(row)) {\n row.controls[this.key]?.disable({ emitEvent: false });\n } else {\n row.controls[this.key]?.enable({ emitEvent: false });\n }\n }\n\n protected emitSelectionError(\n error: unknown,\n requestedSelected: boolean,\n previousSelected: boolean,\n row?: FormGroup,\n ): void {\n const payload: SelectionErrorPayload<T> = {\n error,\n requestedSelected,\n previousSelected,\n ...(row ? this.rowPayload(row) : {}),\n };\n this.eventsService.emit('selectionError', payload);\n }\n\n private selectionPayload(addedRows?: FormGroup[], removedRows?: FormGroup[], selectedCount = 0): SelectionChangePayload<T> {\n const selectedRows = this.selectionModel.selected.items ?? [];\n\n return {\n selectedRows,\n selectedValues: selectedRows.map((row) => row.value),\n selectedRawValues: selectedRows.map((row) => row.getRawValue()),\n selectedCount,\n addedRows,\n removedRows,\n allSelected: selectedCount > 0 && selectedCount === this.linesTotal(),\n };\n }\n\n private rowPayload(row: FormGroup) {\n return {\n row,\n rowIndex: this.fm.getRows().controls.indexOf(row),\n value: row.value,\n rawValue: row.getRawValue(),\n };\n }\n\n protected abstract linesTotal(): number;\n}\n\n@Injectable()\nexport class SelectionService<T> extends AbstractSelectionService<T> {\n public selectionModel: KlesSelectionModel<FormGroup>;\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n @Optional() @Inject(SELECTION_CONFIG) selectionConfig: SelectionConfig<T> | undefined,\n fm: KlesForm,\n private selectionLoaderService: SelectionLoaderService<T>,\n private scrollbarService: ScrollbarService,\n private loadingService: LoadingService,\n @Inject(DATASOURCE_SERVICE) private datasourceService: DatasourceService,\n @Inject(LINES_SERVICE) private linesService: ILinesService,\n eventsService: EventsService,\n ) {\n super(selectionConfig, fm, eventsService);\n this.selectionModel = new KlesSelectionModel<FormGroup>(selectionConfig?.selectionMode);\n }\n\n public register(): void {\n this.listenSelection();\n this.setSelection();\n this.listenDatasource();\n this.listenRowSelection();\n this.listenHeaderSelection();\n }\n\n public count(): Signal<number> {\n return this.selectionModel.count;\n }\n\n public disable(): void {\n this.selectionModel.disable();\n }\n\n public enable(): void {\n this.selectionModel.enable();\n }\n\n protected linesTotal(): number {\n return this.linesService.total();\n }\n\n private setSelection() {\n this.linesService\n .loaded()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n // Build the initial model silently, then update the header once.\n this.fm.getRows().controls.forEach((group) => {\n if (group.controls[this.selectionLoaderService.key]?.value === true) {\n this.selectionModel.select(group, { emitEvent: false });\n } else if (this.selectionConfig?.isSelected != undefined && this.selectionConfig.isSelected(group)) {\n this.selectionModel.select(group, { emitEvent: false });\n group.controls[this.selectionLoaderService.key]?.patchValue(true, { emitEvent: false });\n } else {\n this.selectionModel.deselect(group, { emitEvent: false });\n }\n if (this.selectionConfig?.isDisabled && this.selectionConfig.isDisabled(group)) {\n group.controls[this.selectionLoaderService.key]?.disable({ emitEvent: false });\n }\n });\n this.updateHeader();\n });\n }\n\n private listenHeaderSelection(): void {\n this.fm\n .getHeader()\n .controls[this.key]?.valueChanges.pipe(\n takeUntilDestroyed(this.destroyRef),\n switchMap((value) => {\n const requestedSelected = !!value;\n const previousSelected = this.areAllFilteredRowsSelected();\n return this.selectionLoaderService\n .selectAll(requestedSelected, this.fm.getHeader().getRawValue())\n .pipe(map((response) => ({ response, requestedSelected, previousSelected })));\n }),\n )\n .subscribe(({ response, requestedSelected, previousSelected }) => {\n if (response.loading) {\n this.scrollbarService.toTop('instant');\n this.loadingService.start();\n return;\n }\n\n this.loadingService.stop();\n if (!response.success || response.selected === undefined) {\n this.updateHeader();\n this.emitSelectionError(\n response.error ?? new Error('The bulk selection response is invalid.'),\n requestedSelected,\n previousSelected,\n );\n return;\n }\n\n if (response.selected) {\n if (this.selectionModel.isMultipleSelection()) {\n this.selectionModel.select(\n this.datasourceService.datasource.filteredData?.filter((g) => g.controls[this.selectionLoaderService.key]?.enabled) ??\n [],\n );\n } else {\n const row = this.datasourceService.datasource.filteredData?.filter(\n (g) => g.controls[this.selectionLoaderService.key]?.enabled,\n )[0];\n if (row) {\n this.selectionModel.select(row);\n }\n }\n } else {\n this.selectionModel.deselect(\n this.datasourceService.datasource.filteredData?.filter((g) => g.controls[this.selectionLoaderService.key]?.enabled),\n );\n }\n this.emitBulkSelectionEvent(response.selected, this.selectionModel.selected.count);\n });\n }\n\n private areAllFilteredRowsSelected(): boolean {\n const rows = this.datasourceService.datasource.filteredData.filter(\n (group) => group.controls[this.selectionLoaderService.key]?.enabled,\n );\n return rows.length > 0 && rows.every((group) => this.selectionModel.isSelected(group));\n }\n\n private listenRowSelection(): void {\n this.datasourceService.datasource\n .connect()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n auditTime(0),\n switchMap((rows) => {\n return merge(\n ...rows\n .map((row) => {\n return row.controls[this.selectionLoaderService.key]?.valueChanges.pipe(\n map((value) => {\n return { row, selected: !!value };\n }),\n );\n })\n .filter(Boolean),\n );\n }),\n concatMap(({ row, selected }) => {\n const previousSelected = this.selectionModel.isSelected(row);\n return this.selectionLoaderService.select(row, selected).pipe(\n map((response) => {\n return {\n row,\n selected,\n previousSelected,\n response,\n };\n }),\n );\n }),\n )\n\n .subscribe(({ row, selected, previousSelected, response }) => {\n if (response.loading) {\n this.startRowSelection(row);\n return;\n }\n\n if (!response.success || response.selected === undefined) {\n this.stabilizeRowSelection(row, previousSelected);\n this.emitSelectionError(\n response.error ?? new Error('The row selection response is invalid.'),\n selected,\n previousSelected,\n row,\n );\n return;\n }\n\n this.stabilizeRowSelection(row, response.selected);\n if (response.selected) {\n this.selectionModel.select(row);\n } else {\n this.selectionModel.deselect(row);\n }\n });\n }\n\n private listenSelection(): void {\n this.selectionModel.changed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((changed) => {\n changed.removed?.forEach((group: FormGroup) => {\n group.controls[this.selectionLoaderService.key].patchValue(false, { emitEvent: false });\n });\n\n changed.added?.forEach((group: FormGroup) => {\n group.controls[this.selectionLoaderService.key].patchValue(true, { emitEvent: false });\n });\n this.fm.getRows().updateValueAndValidity({ emitEvent: false });\n this.updateHeader();\n this.emitSelectionEvents(changed);\n });\n\n this.selectionModel.stateChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((state) => {\n if (state === KlesSelectionModelState.ENABLED) {\n this.fm.getHeader().controls[this.key].enable({ emitEvent: false });\n this.fm.getRows().controls.forEach((group) => {\n if (!this.isLoading(group) && !this.selectionConfig?.isDisabled?.(group)) {\n group.controls[this.key].enable({ emitEvent: false });\n }\n });\n } else {\n this.fm.getHeader().controls[this.key].disable({ emitEvent: false });\n this.fm.getRows().controls.forEach((group) => {\n group.controls[this.key].disable({ emitEvent: false });\n });\n }\n });\n }\n\n private listenDatasource(): void {\n this.datasourceService.datasource\n .connect()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.updateHeader();\n });\n }\n\n private updateHeader() {\n if (this.selectionModel.hasValue()) {\n if (\n this.datasourceService.datasource.filteredData\n .filter((group) => group.controls[this.selectionLoaderService.key]?.enabled)\n .every((group) => this.selectionModel.isSelected(group))\n ) {\n this.fm.getUiHeader().get(this.selectionLoaderService.key)?.patchValue({ indeterminate: false });\n this.fm.getHeader().controls[this.selectionLoaderService.key]?.patchValue(true, { emitEvent: false });\n } else {\n this.fm.getUiHeader().get(this.selectionLoaderService.key)?.patchValue({ indeterminate: true });\n this.fm.getHeader().controls[this.selectionLoaderService.key]?.patchValue(false, { emitEvent: false });\n }\n } else {\n this.fm.getUiHeader().get(this.selectionLoaderService.key)?.patchValue({ indeterminate: false });\n this.fm.getHeader().controls[this.selectionLoaderService.key]?.patchValue(false, { emitEvent: false });\n }\n }\n}\n\n@Injectable()\nexport class SelectionLazyService<T> extends AbstractSelectionService<T> {\n public selectionModel: KlesSelectionModel<FormGroup>;\n\n private readonly destroyRef = inject(DestroyRef);\n private _count = signal(0);\n\n constructor(\n @Optional() @Inject(SELECTION_CONFIG) selectionConfig: SelectionConfig<T> | undefined,\n fm: KlesForm,\n private selectionLoaderService: SelectionLoaderService<T>,\n private scrollbarService: ScrollbarService,\n private loadingService: LoadingService,\n @Inject(DATASOURCE_SERVICE) private datasourceService: DatasourceService,\n @Inject(LINES_SERVICE) private linesService: ILinesService,\n @Optional() private filterStore: FilterStore | null,\n eventsService: EventsService,\n ) {\n super(selectionConfig, fm, eventsService);\n\n this.selectionModel = new KlesSelectionModel<FormGroup>(selectionConfig?.selectionMode);\n }\n\n public register(): void {\n this.listenSelection();\n this.setSelection();\n this.listenHeaderSelection();\n this.listenRowSelection();\n }\n\n public count(): Signal<number> {\n return this._count.asReadonly();\n }\n\n public disable(): void {\n this.selectionModel.disable();\n }\n\n public enable(): void {\n this.selectionModel.enable();\n }\n\n protected linesTotal(): number {\n return this.linesService.total();\n }\n\n private listenHeaderSelection(): void {\n this.fm\n .getHeader()\n .controls[this.key]?.valueChanges.pipe(\n takeUntilDestroyed(this.destroyRef),\n switchMap((value) => {\n const requestedSelected = !!value;\n const previousSelected = this._count() > 0 && this._count() === this.linesService.total();\n return this.selectionLoaderService\n .selectAll(requestedSelected, this.fm.getHeader().getRawValue())\n .pipe(map((response) => ({ response, requestedSelected, previousSelected })));\n }),\n )\n .subscribe(({ response, requestedSelected, previousSelected }) => {\n if (response.loading) {\n this.scrollbarService.toTop('instant');\n this.loadingService.start();\n return;\n }\n\n this.loadingService.stop();\n if (!response.success || response.selected === undefined) {\n this.updateHeader();\n this.emitSelectionError(\n response.error ?? new Error('The bulk selection response is invalid.'),\n requestedSelected,\n previousSelected,\n );\n return;\n }\n\n this._count.set(response.count ?? 0);\n const rows = this.fm.getRows().controls.filter((group) => group.controls[this.selectionLoaderService.key]?.enabled);\n\n if (response.selected) {\n if (this.selectionModel.isMultipleSelection()) {\n this.selectionModel.select(rows);\n } else {\n const row = rows[0];\n\n if (row) {\n this.selectionModel.select(row);\n }\n }\n } else {\n this.selectionModel.deselect(rows);\n }\n\n this.fm.getRows().updateValueAndValidity({\n emitEvent: false,\n });\n this.emitBulkSelectionEvent(response.selected, this._count());\n });\n }\n\n private listenRowSelection(): void {\n this.datasourceService.datasource\n .connect()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n auditTime(0),\n\n switchMap((rows) => {\n return merge(\n ...rows\n .map((row) => {\n return row.controls[this.selectionLoaderService.key]?.valueChanges.pipe(\n map((value) => {\n return {\n row,\n selected: !!value,\n };\n }),\n );\n })\n .filter(Boolean),\n );\n }),\n\n withLatestFrom(this.filterStore?.filters$ ?? of({})),\n\n concatMap(([{ row, selected }, filters]) => {\n const previousSelected = this.selectionModel.isSelected(row);\n return this.selectionLoaderService.select(row, selected, filters).pipe(\n map((response) => {\n return {\n row,\n selected,\n previousSelected,\n response,\n };\n }),\n );\n }),\n )\n .subscribe(({ row, selected, previousSelected, response }) => {\n if (response.loading) {\n this.startRowSelection(row);\n return;\n }\n\n if (!response.success || response.selected === undefined) {\n this.stabilizeRowSelection(row, previousSelected);\n this.emitSelectionError(\n response.error ?? new Error('The row selection response is invalid.'),\n selected,\n previousSelected,\n row,\n );\n return;\n }\n\n this._count.set(response.count ?? 0);\n this.stabilizeRowSelection(row, response.selected);\n\n if (response.selected) {\n this.selectionModel.select(row);\n } else {\n this.selectionModel.deselect(row);\n }\n\n this.updateHeader(this._count());\n });\n }\n\n private listenSelection(): void {\n this.selectionModel.changed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((changed) => {\n changed.removed?.forEach((group) => {\n group.controls[this.selectionLoaderService.key]?.patchValue(false, { emitEvent: false });\n });\n\n changed.added?.forEach((group) => {\n group.controls[this.selectionLoaderService.key]?.patchValue(true, { emitEvent: false });\n });\n\n this.fm.getRows().updateValueAndValidity({\n emitEvent: false,\n });\n this.emitSelectionEvents(changed, this._count());\n });\n\n this.selectionModel.stateChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((state) => {\n if (state === KlesSelectionModelState.ENABLED) {\n this.fm.getHeader().controls[this.key]?.enable({ emitEvent: false });\n\n this.fm.getRows().controls.forEach((group) => {\n if (!this.isLoading(group) && !this.selectionConfig?.isDisabled?.(group)) {\n group.controls[this.key]?.enable({\n emitEvent: false,\n });\n }\n });\n\n return;\n }\n\n this.fm.getHeader().controls[this.key]?.disable({ emitEvent: false });\n\n this.fm.getRows().controls.forEach((group) => {\n group.controls[this.key]?.disable({\n emitEvent: false,\n });\n });\n });\n }\n\n private setSelection(): void {\n this.linesService\n .loaded()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n const selectedRows = this.fm.getRows().controls.filter((group) => {\n const selected =\n group.controls[this.selectionLoaderService.key]?.value === true || this.selectionConfig?.isSelected?.(group) === true;\n\n if (selected) {\n group.controls[this.selectionLoaderService.key]?.patchValue(true, {\n emitEvent: false,\n });\n }\n\n if (this.selectionConfig?.isDisabled?.(group)) {\n group.controls[this.selectionLoaderService.key]?.disable({\n emitEvent: false,\n });\n }\n\n return selected;\n });\n\n this.selectionModel.reset(selectedRows, {\n emitEvent: false,\n });\n\n this.updateHeader(this._count());\n });\n }\n\n private updateHeader(count = this._count()): void {\n const total = this.linesService.total();\n\n this.fm\n .getUiHeader()\n .get(this.selectionLoaderService.key)\n ?.patchValue({\n indeterminate: count > 0 && count < total,\n });\n\n this.fm.getHeader().controls[this.selectionLoaderService.key]?.patchValue(count > 0 && count === total, {\n emitEvent: false,\n });\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { auditTime, catchError, combineLatest, concat, map, Observable, of, ReplaySubject, shareReplay, startWith, Subject, switchMap } from 'rxjs';\nimport { LOADER_CONFIG } from '../../../token';\nimport { PaginatorStore } from '../../store/paginator-store.service';\nimport { LoaderConfig } from '../../../core/table/config.interface';\nimport { SortStore } from '../../store/sort-store.service';\nimport { FilterStore } from '../../store/filter-store.service';\nimport { LinesLazyLoader, LinesLoader } from '../../../core/table/loader.interface';\nimport { ILoader } from './loader.interface';\nimport { EventsService } from '../events/events.service';\n\n@Injectable()\nexport class LoaderService<T, R> implements ILoader<R> {\n private _refresh$ = new Subject<void>();\n\n private _loader$!: Observable<{ total: number; items: R[]; loading: boolean; error?: any; header?: any }>;\n\n constructor(\n @Inject(LOADER_CONFIG) private readonly loaderConfig: LoaderConfig<T, R>,\n private readonly eventsService: EventsService,\n ) {\n this.init();\n }\n\n private init() {\n const linesLoader = this.loaderConfig.lines as LinesLoader<T, R>;\n this._loader$ = combineLatest([this._refresh$.pipe(startWith(void 0)), this.loaderConfig.lines.params?.() || of({} as T)]).pipe(\n auditTime(0),\n switchMap(([_, params]) => {\n return concat(\n of({ loading: true, total: 0, items: [] }),\n linesLoader.loader(params).pipe(\n catchError((err) => {\n return of({ error: err, items: [] });\n }),\n map((response) => {\n return { ...response, loading: false, total: response?.items.length || 0 };\n }),\n ),\n );\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n public load(): Observable<{ total: number; items: R[]; loading: boolean; error?: any }> {\n return this._loader$;\n }\n\n public refresh() {\n this._refresh$.next();\n this.eventsService.emit('refresh');\n }\n}\n\n@Injectable()\nexport class LoaderLazyService<T, R> implements ILoader<R> {\n private _refresh$ = new Subject<void>();\n\n private _loader$!: Observable<{ total: number; items: R[]; loading: boolean; error?: any; header?: any }>;\n\n constructor(\n @Inject(LOADER_CONFIG) private readonly loaderConfig: LoaderConfig<T, R>,\n @Optional() private paginatorStore: PaginatorStore | null,\n @Optional() private sortStore: SortStore | null,\n @Optional() private filterStore: FilterStore | null,\n private readonly eventsService: EventsService,\n ) {\n this.init();\n }\n\n public load(): Observable<{ total: number; items: R[]; loading: boolean; error?: any }> {\n return this._loader$;\n }\n\n private init() {\n const linesLoader = this.loaderConfig.lines as LinesLazyLoader<T, R>;\n this._loader$ = combineLatest([\n this._refresh$.pipe(startWith(void 0)),\n this.loaderConfig.lines.params?.() || of({} as T),\n this.paginatorStore?.page$ || of(undefined),\n this.sortStore?.sort$ || of(undefined),\n this.filterStore?.filters$ || of({}),\n ]).pipe(\n auditTime(0),\n switchMap(([_, params, pagination, sort, filters]) => {\n return concat(\n of({ loading: true, total: 0, items: [] }),\n linesLoader.loader(params, { filters, pagination, sort }).pipe(\n catchError((err) => {\n return of({ error: err, items: [] as R[], total: 0 });\n }),\n map((response) => {\n return { ...response, loading: false };\n }),\n ),\n );\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n public refresh() {\n this._refresh$.next();\n this.eventsService.emit('refresh');\n }\n}\n","import { DestroyRef, EventEmitter, inject, Inject, Injectable } from '@angular/core';\nimport { LOADER_SERVICE } from '../../../token';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KlesForm } from '../table/form';\nimport { RowFormFactory } from '../table/row-factory.service';\nimport { ColumnsService } from '../columns/columns.service';\nimport { PaginatorService } from '../paginator/paginator.service';\nimport { Subject } from 'rxjs';\nimport { LoaderLazyService, LoaderService } from '../loader/loader.service';\nimport { ExtraRowService } from '../extra-row/extra-row.service';\nimport { EventsService } from '../events/events.service';\n\nexport interface ILinesService {\n register(): void;\n total(): number;\n loaded(): EventEmitter<void>;\n loading(): EventEmitter<void>;\n}\n\n@Injectable()\nexport class LinesService implements ILinesService {\n private readonly destroyRef = inject(DestroyRef);\n private _loaded = new EventEmitter<void>();\n private _loading = new EventEmitter<void>();\n\n private _total: number | undefined;\n\n constructor(\n @Inject(LOADER_SERVICE) private loader: LoaderService<any, any>,\n private fm: KlesForm,\n private columnsService: ColumnsService,\n private rowFactory: RowFormFactory,\n private extraRowService: ExtraRowService,\n private readonly eventsService: EventsService,\n ) {}\n\n public register() {\n this.load();\n }\n\n public total() {\n return this._total ?? 0;\n }\n\n public loaded(): EventEmitter<void> {\n return this._loaded;\n }\n\n public loading(): EventEmitter<void> {\n return this._loading;\n }\n\n private load() {\n this.loader\n .load()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((response) => {\n if (response.loading) {\n this.eventsService.emit('loadStart');\n this._loading.next();\n } else {\n if (response.error) {\n this.eventsService.emit('loadError', {\n error: response.error,\n message: response.error?.message,\n });\n } else {\n this.fm.setRows(\n this.rowFactory.createRows(\n this.columnsService\n .columns()\n .map((col) => ({ ...col.cell?.field, name: col.columnDef }))\n .concat(this.extraRowService.extraColumns().map((col) => ({ ...col, name: col.columnDef }))),\n response.items ?? [],\n ),\n );\n this._total = response.items?.length ?? 0;\n this._loaded.next();\n\n this.eventsService.emit('loadSuccess', {\n total: this._total,\n values: response.items,\n rawValues: this.fm.getRows().getRawValue(),\n rows: this.fm.getRows().controls,\n });\n }\n }\n });\n }\n}\n\n@Injectable()\nexport class LinesLazyService implements ILinesService {\n private readonly destroyRef = inject(DestroyRef);\n private _refresh$ = new Subject<void>();\n private _total?: number;\n private _loaded = new EventEmitter<void>();\n private _loading = new EventEmitter<void>();\n\n constructor(\n @Inject(LOADER_SERVICE) private loader: LoaderLazyService<any, any>,\n private fm: KlesForm,\n private columnsService: ColumnsService,\n private rowFactory: RowFormFactory,\n private extraRowService: ExtraRowService,\n private paginatorService: PaginatorService,\n private readonly eventsService: EventsService,\n ) {}\n\n public register() {\n this.load();\n }\n\n public total() {\n return this._total ?? 0;\n }\n\n public loaded(): EventEmitter<void> {\n return this._loaded;\n }\n\n public loading(): EventEmitter<void> {\n return this._loading;\n }\n\n public refresh() {\n this._refresh$.next();\n }\n\n private load() {\n this.loader\n .load()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((response) => {\n if (response.loading) {\n this._loading.next();\n this.eventsService.emit('loadStart');\n } else {\n if (response.error) {\n this.eventsService.emit('loadError', {\n error: response.error,\n message: response.error?.message,\n });\n } else {\n this.fm.setRows(\n this.rowFactory.createRows(\n this.columnsService\n .columns()\n .map((col) => ({ ...col.cell?.field, name: col.columnDef }))\n .concat(this.extraRowService.extraColumns().map((col) => ({ ...col, name: col.columnDef }))),\n response.items,\n ),\n );\n this.paginatorService.setlength(response.total ?? 0);\n this._total = response.total ?? 0;\n this._loaded.next();\n\n this.eventsService.emit('loadSuccess', {\n total: this._total ?? 0,\n values: response.items,\n rawValues: this.fm.getRows().getRawValue(),\n rows: this.fm.getRows().controls,\n });\n }\n }\n });\n }\n}\n","import { DestroyRef, inject, Inject, Injectable } from '@angular/core';\n\nimport { LOADER_SERVICE } from '../../../token';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { LoadingService } from './loading.service';\nimport { ILoader } from '../loader/loader.interface';\n\n@Injectable()\nexport class LoadingOrchestratorService {\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n @Inject(LOADER_SERVICE) private loader: ILoader<any>,\n private loadingService: LoadingService,\n ) {}\n\n public register() {\n this.listen();\n }\n\n private listen() {\n this.loader\n .load()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n map((response) => response.loading ?? false),\n )\n .subscribe((loading) => {\n if (loading) {\n this.loadingService.start();\n } else {\n this.loadingService.stop();\n }\n });\n }\n}\n","import { EventEmitter, Inject, Injectable } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { ColumnsService } from '../columns/columns.service';\nimport { DATASOURCE_SERVICE, HEADER_SERVICE, LINES_SERVICE, SCROLLBAR_ORCHESTRATOR_SERVICE, SELECTION_SERVICE } from '../../../token';\nimport { KlesForm } from './form';\nimport { IDatasourceService } from '../datasource/datasource.service';\nimport { IHeaderService } from '../header/header.service';\nimport { ILinesService } from '../lines/lines.service';\nimport { ISelectionService } from '../selection/selection.service';\nimport { LoadingOrchestratorService } from '../loading/loading-orchestrator.service';\nimport { IScrollbarOrchestratorService } from '../scrollbar/scrollbar-orchestrator.service';\nimport { AbstractUiState, ArrayUiState, GroupUiState } from '@3kles/kles-material-dynamicforms';\n\nexport interface ITableService {\n readonly form: FormGroup<{\n header: FormGroup<{}>;\n rows: FormArray<FormGroup<any>>;\n footer: FormGroup<{}>;\n }>;\n readonly ui: GroupUiState<{\n header: GroupUiState;\n rows: ArrayUiState<any, any, any>;\n footer: GroupUiState;\n }>;\n\n klesForm: KlesForm;\n\n trackBy: (_: number, row: FormGroup) => any;\n}\n\n@Injectable()\nexport class TableService implements ITableService {\n trackBy = (_: number, row: FormGroup) => row.get('_id')?.value ?? row;\n\n constructor(\n public readonly klesForm: KlesForm,\n private readonly columnsService: ColumnsService,\n @Inject(DATASOURCE_SERVICE) private readonly datasourceService: IDatasourceService,\n @Inject(LINES_SERVICE) private readonly linesService: ILinesService,\n @Inject(HEADER_SERVICE) private readonly headerService: IHeaderService,\n @Inject(SELECTION_SERVICE) private readonly selectionService: ISelectionService,\n private readonly loadingOrchestratorService: LoadingOrchestratorService,\n @Inject(SCROLLBAR_ORCHESTRATOR_SERVICE) private readonly scrollbarOrchestratorService: IScrollbarOrchestratorService,\n ) {\n this.orchestrators();\n this.features();\n }\n\n public get ui() {\n return this.klesForm.ui;\n }\n\n public get form() {\n return this.klesForm.form;\n }\n\n private orchestrators() {\n this.scrollbarOrchestratorService.register();\n this.loadingOrchestratorService.register();\n }\n\n private features() {\n this.columnsService.register();\n this.klesForm.init();\n this.datasourceService.register();\n this.headerService.register();\n this.linesService.register();\n this.selectionService.register();\n }\n}\n","import { DestroyRef, inject, Inject, Injectable, Optional } from '@angular/core';\nimport { LINES_SERVICE, SORT_SERVICE } from '../../../token';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ILinesService } from '../lines/lines.service';\nimport { ScrollbarService } from './scrollbar.service';\nimport { PaginatorService } from '../paginator/paginator.service';\nimport { ISortService } from '../sort/sort.service';\n\nexport interface IScrollbarOrchestratorService {\n register(): void;\n}\n\n@Injectable()\nexport class ScrollbarOrchestratorService implements IScrollbarOrchestratorService {\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n @Inject(LINES_SERVICE) private linesService: ILinesService,\n private scrollbarService: ScrollbarService,\n @Optional() private paginatorService: PaginatorService,\n @Optional() @Inject(SORT_SERVICE) private sortService: ISortService,\n ) {}\n\n public register() {\n this.listen();\n }\n\n private listen() {\n this.linesService\n .loaded()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.scrollbarService.toTop('instant');\n this.scrollbarService.showScrollbar();\n });\n\n this.linesService\n .loading()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.scrollbarService.hideScrollbar();\n });\n\n this.paginatorService\n ?.pageChanged()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.scrollbarService.toTop('instant');\n });\n\n this.sortService\n ?.sortChange()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.scrollbarService.toTop('instant');\n });\n }\n}\n\n@Injectable()\nexport class ScrollbarLazyOrchestratorService implements IScrollbarOrchestratorService {\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n @Inject(LINES_SERVICE) private linesService: ILinesService,\n private scrollbarService: ScrollbarService,\n ) {}\n\n public register() {\n this.listen();\n }\n\n private listen() {\n this.linesService\n .loaded()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.scrollbarService.toTop('instant');\n this.scrollbarService.showScrollbar();\n });\n\n this.linesService\n .loading()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.scrollbarService.hideScrollbar();\n });\n }\n}\n","import {\n ComponentRef,\n DestroyableInjector,\n Directive,\n effect,\n Injector,\n inject,\n input,\n OnDestroy,\n Provider,\n signal,\n StaticProvider,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport { TableComponent } from '../components/table/table.component';\nimport { isDestroyable } from '../utils';\nimport { ExtraRowConfig, KlesTableConfig } from '../core/table/config.interface';\nimport { PaginateTableComponent } from '../components/paginate-table/paginate-table.component';\nimport { PaginatorStore } from '../services/store/paginator-store.service';\nimport { SortLazyService, SortService } from '../services/features/sort/sort.service';\nimport { SortStore } from '../services/store/sort-store.service';\nimport { FilterService } from '../services/features/filter/filter.service';\nimport { FilterStore } from '../services/store/filter-store.service';\nimport { DragDropLazyService, DragDropService } from '../services/features/dragdrop/dragdrop.service';\nimport {\n COLUMNS,\n DATASOURCE_SERVICE,\n FOOTER,\n HEADER_SERVICE,\n LINES_SERVICE,\n LOADER_SERVICE,\n LOADER_CONFIG,\n PAGINATOR_CONFIG,\n ROW_DRAG_DROP,\n SELECTION_CONFIG,\n SELECTION_SERVICE,\n SORT_CONFIG,\n SORT_SERVICE,\n TABLE_SERVICE,\n SCROLLBAR_ORCHESTRATOR_SERVICE,\n EXTRA_ROWS,\n EMPTY_STATE_CONFIG,\n} from '../token';\nimport { KlesColumnConfig } from '../core/table/column.interface';\nimport { ColumnsService } from '../services/features/columns/columns.service';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { ScrollbarService } from '../services/features/scrollbar/scrollbar.service';\nimport { InfiniteScrollTableComponent } from '../components/infinite-scroll-table/infinite-scroll-table.component';\n\nimport { KlesForm } from '../services/features/table/form';\nimport { SelectionLoaderService } from '../services/features/selection/selection-loader.service';\nimport { LoadingService } from '../services/features/loading/loading.service';\nimport { HeaderLazyService, HeaderService } from '../services/features/header/header.service';\nimport { DatasourceLazyService, DatasourceService } from '../services/features/datasource/datasource.service';\nimport { PaginatorService } from '../services/features/paginator/paginator.service';\nimport { SelectionLazyService, SelectionService } from '../services/features/selection/selection.service';\nimport { LinesLazyService, LinesService } from '../services/features/lines/lines.service';\nimport { TableService } from '../services/features/table/table.service';\nimport { LoaderLazyService, LoaderService } from '../services/features/loader/loader.service';\nimport { LoadingOrchestratorService } from '../services/features/loading/loading-orchestrator.service';\nimport { ScrollbarLazyOrchestratorService, ScrollbarOrchestratorService } from '../services/features/scrollbar/scrollbar-orchestrator.service';\nimport { FooterService } from '../services/features/footer/footer.service';\nimport { KlesExtraCellFieldConfig } from '../core/table/cell.interface';\nimport { ExtraRowService } from '../services/features/extra-row/extra-row.service';\nimport { RenderService } from '../services/features/render/render.service';\nimport { ExpandedRowStore } from '../services/store/expanded-row-store.service';\nimport { TreeService } from '../services/features/tree/tree.service';\nimport { LoaderChildrensService } from '../services/features/loader/loader-childrens.service';\nimport { EventsService } from '../services/features/events/events.service';\nimport { RowService } from '../services/features/row/row.service';\nimport { CellService } from '../services/features/cell/cell.service';\nimport { CellValueChangeService } from '../services/features/cell/cell-valuechange.service';\nimport { ValidationService } from '../services/features/validation/validation.service';\nimport { KlesTableIntl } from '../components/table/table-intl';\nimport { KlesTableEmptyStateComponent } from '../components/empty-state/empty-state.component';\nimport { EmptyStateService } from '../services/features/empty-state/empty-state.service';\nimport { RowContextStore } from '../services/store/row-context-store.service';\n\n@Directive({\n selector: '[appDynamicTableLoader]',\n})\nexport class DynamicTableLoaderDirective implements OnDestroy {\n tableConfig = input.required<KlesTableConfig, KlesTableConfig>({\n transform: (v) => {\n v.columns = v.columns.map((col) => {\n if (col.headerCell?.field) {\n col.headerCell.field.subscriptSizing = col.headerCell.field.subscriptSizing ?? 'dynamic';\n }\n return { ...col, separator: col.separator ?? v.columnSeparator ?? false };\n });\n return v;\n },\n });\n private componentRef: ComponentRef<any> | null = null;\n\n constructor(private viewContainerRef: ViewContainerRef) {\n effect(() => {\n if (this.tableConfig()) {\n this.loadComponent();\n } else {\n this.clearComponent();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.clearComponent();\n }\n\n private loadComponent() {\n if (this.componentRef) {\n this.clearComponent();\n }\n\n this.viewContainerRef.clear();\n\n let component: Type<any> = TableComponent;\n\n if (this.tableConfig().paginator) {\n component = PaginateTableComponent;\n } else if (this.tableConfig().infinite) {\n component = InfiniteScrollTableComponent;\n }\n\n const injector = this.initInjector();\n\n this.componentRef = this.viewContainerRef.createComponent(component, {\n injector,\n });\n\n this.componentRef.onDestroy(() => {\n if (isDestroyable(injector)) {\n injector.destroy();\n }\n });\n }\n\n private clearComponent() {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n private initInjector(): DestroyableInjector {\n const storeProviders = [RowContextStore, SortStore, FilterStore, ...(this.tableConfig().paginator ? [PaginatorStore] : []), ExpandedRowStore];\n\n const emptyState = this.tableConfig().emptyState;\n\n const emptyStateIntl = typeof emptyState === 'object' && emptyState !== null ? emptyState.intl : undefined;\n\n const configProviders = [\n {\n provide: COLUMNS,\n useValue: signal<KlesColumnConfig[]>(this.tableConfig().columns || []),\n },\n {\n provide: EXTRA_ROWS,\n useValue: signal<ExtraRowConfig[]>(this.tableConfig().extraRows ?? []),\n },\n {\n provide: FOOTER,\n useValue: signal<boolean>(this.tableConfig().footer ?? false),\n },\n {\n provide: LOADER_CONFIG,\n useValue: {\n lazy: this.tableConfig().lazy,\n lines: this.tableConfig().lines,\n },\n },\n {\n provide: SORT_CONFIG,\n useValue: this.tableConfig().sortConfig,\n },\n {\n provide: SELECTION_CONFIG,\n useValue: this.tableConfig().selection,\n },\n\n {\n provide: PAGINATOR_CONFIG,\n useValue: {\n paginator: this.tableConfig().paginator || false,\n customMatPaginatorIntl: this.tableConfig().customMatPaginatorIntl,\n pageSize: this.tableConfig().pageSize,\n pageSizeOptions: this.tableConfig().pageSizeOptions,\n },\n },\n ...(this.tableConfig().customMatPaginatorIntl\n ? [\n {\n provide: MatPaginatorIntl,\n useClass: this.tableConfig().customMatPaginatorIntl,\n },\n ]\n : []),\n {\n provide: EMPTY_STATE_CONFIG,\n useValue: emptyState,\n },\n ...(emptyStateIntl\n ? [\n {\n provide: KlesTableIntl,\n useClass: emptyStateIntl,\n },\n ]\n : []),\n ];\n\n const orchestratorProviders = [\n LoadingOrchestratorService,\n ...(this.tableConfig().lazy\n ? [\n {\n provide: SCROLLBAR_ORCHESTRATOR_SERVICE,\n useClass: ScrollbarLazyOrchestratorService,\n },\n ]\n : [\n {\n provide: SCROLLBAR_ORCHESTRATOR_SERVICE,\n useClass: ScrollbarOrchestratorService,\n },\n ]),\n ];\n\n const datasourceProvider = this.tableConfig().lazy\n ? [\n {\n provide: DATASOURCE_SERVICE,\n useClass: DatasourceLazyService,\n },\n ]\n : [\n {\n provide: DATASOURCE_SERVICE,\n useClass: DatasourceService,\n },\n ];\n\n const featureProviders = [\n TreeService,\n RenderService,\n ExtraRowService,\n EmptyStateService,\n LoadingService,\n KlesForm,\n ColumnsService,\n FooterService,\n ScrollbarService,\n EventsService,\n RowService,\n CellService,\n CellValueChangeService,\n ValidationService,\n SelectionLoaderService,\n PaginatorService,\n LoaderChildrensService,\n {\n provide: TABLE_SERVICE,\n useClass: TableService,\n },\n\n ...(this.tableConfig().lazy\n ? [\n {\n provide: HEADER_SERVICE,\n useClass: HeaderLazyService,\n },\n {\n provide: LOADER_SERVICE,\n useClass: LoaderLazyService,\n },\n {\n provide: LINES_SERVICE,\n useClass: LinesLazyService,\n },\n {\n provide: SELECTION_SERVICE,\n useClass: SelectionLazyService,\n },\n\n {\n provide: ROW_DRAG_DROP,\n useFactory: () =>\n new DragDropLazyService(\n this.tableConfig().dragDropRows,\n inject(EventsService),\n inject(KlesForm),\n inject(Injector),\n this.tableConfig().id,\n ),\n },\n {\n provide: SORT_SERVICE,\n useClass: SortLazyService,\n },\n ]\n : [\n {\n provide: LOADER_SERVICE,\n useClass: LoaderService,\n },\n {\n provide: HEADER_SERVICE,\n useClass: HeaderService,\n },\n {\n provide: LINES_SERVICE,\n useClass: LinesService,\n },\n {\n provide: SELECTION_SERVICE,\n useClass: SelectionService,\n },\n\n FilterService,\n {\n provide: ROW_DRAG_DROP,\n useFactory: () =>\n new DragDropService(\n this.tableConfig().dragDropRows,\n inject(EventsService),\n inject(KlesForm),\n inject(Injector),\n this.tableConfig().id,\n ),\n },\n {\n provide: SORT_SERVICE,\n useClass: SortService,\n },\n ]),\n ];\n\n const providers: Array<Provider | StaticProvider> = [\n storeProviders,\n configProviders,\n datasourceProvider,\n featureProviders,\n orchestratorProviders,\n ];\n\n return Injector.create({\n parent: this.viewContainerRef.injector,\n providers,\n });\n }\n}\n","import { Component, computed, DestroyRef, EventEmitter, HostBinding, inject, input, OnInit, Output } from '@angular/core';\nimport { DynamicTableLoaderDirective } from './directives/dynamic-table-loader.directive';\nimport { KlesTableConfig } from './core/table/config.interface';\nimport { KlesTableConnectorService } from './kles-table-connector.service';\nimport { KlesTableApi } from './core/api/table';\nimport { ScrollbarApi } from './core/api/scrollbar';\nimport { ColumnApi } from './core/api/column';\nimport { PaginationApi } from './core/api/pagination';\nimport { SortApi } from './core/api/sort';\nimport { LoadingApi } from './core/api/loading';\nimport { SelectionApi } from './core/api/selection';\nimport { FormApi, TableFormValue } from './core/api/form';\nimport { FooterApi } from './core/api/footer';\nimport { ArrayUiState, GroupUiState } from '@3kles/kles-material-dynamicforms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter, switchMap } from 'rxjs';\nimport { TableEvent } from './services/features/events/events.model';\nimport {\n CellMousePayload,\n CellValueChangePayload,\n FilterChangePayload,\n LoadErrorPayload,\n PageChangePayload,\n RowMousePayload,\n RowDropErrorPayload,\n RowDropPayload,\n SelectionChangePayload,\n SelectionErrorPayload,\n SortPayload,\n TreePayload,\n} from './services/features/events/event-payloads.model';\nimport { EmptyStateApi } from './core/api/empty-state';\nimport { RenderApi } from './core/api/render';\nimport { EventsApi } from './core/api/events';\nimport { TreeApi } from './core/api/tree';\n\n@Component({\n selector: 'kles-dynamic-table',\n templateUrl: './kles-table.component.html',\n standalone: true,\n imports: [DynamicTableLoaderDirective],\n providers: [KlesTableConnectorService],\n styleUrl: './kles-table.component.scss',\n})\nexport class KlesTableComponent<TValue = unknown> implements OnInit, KlesTableApi<TValue> {\n tableConfig = input.required<KlesTableConfig>();\n private readonly destroyRef = inject(DestroyRef);\n\n @Output() tableEvent = new EventEmitter<TableEvent<TValue>>();\n\n @Output() rowClick = new EventEmitter<RowMousePayload<TValue>>();\n @Output() rowDoubleClick = new EventEmitter<RowMousePayload<TValue>>();\n @Output() rowContextMenu = new EventEmitter<RowMousePayload<TValue>>();\n @Output() rowMouseEnter = new EventEmitter<RowMousePayload<TValue>>();\n @Output() rowMouseLeave = new EventEmitter<RowMousePayload<TValue>>();\n @Output() rowDrop = new EventEmitter<RowDropPayload<TValue>>();\n @Output() rowDropSuccess = new EventEmitter<RowDropPayload<TValue>>();\n @Output() rowDropError = new EventEmitter<RowDropErrorPayload<TValue>>();\n\n @Output() cellClick = new EventEmitter<CellMousePayload<TValue>>();\n @Output() cellDoubleClick = new EventEmitter<CellMousePayload<TValue>>();\n @Output() cellContextMenu = new EventEmitter<CellMousePayload<TValue>>();\n @Output() cellValueChange = new EventEmitter<CellValueChangePayload<TValue>>();\n\n @Output() selectionChange = new EventEmitter<SelectionChangePayload<TValue>>();\n @Output() selectionError = new EventEmitter<SelectionErrorPayload<TValue>>();\n @Output() pageChange = new EventEmitter<PageChangePayload>();\n @Output() sortChange = new EventEmitter<SortPayload>();\n @Output() filterChange = new EventEmitter<FilterChangePayload>();\n @Output() loadError = new EventEmitter<LoadErrorPayload>();\n @Output() nodeExpand = new EventEmitter<TreePayload<TValue>>();\n @Output() nodeCollapse = new EventEmitter<TreePayload<TValue>>();\n @Output() nodeLoadChildren = new EventEmitter<TreePayload<TValue>>();\n @Output() nodeChildrenLoaded = new EventEmitter<TreePayload<TValue>>();\n\n readonly elevationShadow = computed(() => {\n const level = this.tableConfig().elevation ?? 2;\n\n return level === 0 ? 'none' : `var(--mat-sys-level${level})`;\n });\n\n constructor(private connectorService: KlesTableConnectorService) {}\n\n ngOnInit(): void {\n this.connectorService.connected$\n .pipe(\n filter((connected) => connected),\n switchMap(() => {\n return this.events.listen();\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((event) => {\n this.dispatchEvent(event);\n });\n }\n\n @HostBinding('attr.id')\n get hostId() {\n return this.tableConfig()?.id ?? undefined;\n }\n\n refresh(): void {\n this.connectorService.refresh();\n }\n\n get scrollbar(): ScrollbarApi {\n return this.connectorService.scrollbar;\n }\n\n get column(): ColumnApi {\n return this.connectorService.column;\n }\n\n get pagination(): PaginationApi | undefined {\n return this.connectorService.pagination;\n }\n\n get sort(): SortApi {\n return this.connectorService.sort;\n }\n\n get loading(): LoadingApi {\n return this.connectorService.loading;\n }\n\n get selection(): SelectionApi {\n return this.connectorService.selection;\n }\n\n get form(): FormApi<TableFormValue<TValue>> {\n return this.connectorService.form as FormApi<TableFormValue<TValue>>;\n }\n\n get footer(): FooterApi {\n return this.connectorService.footer;\n }\n\n get emptyState(): EmptyStateApi {\n return this.connectorService.emptyState;\n }\n\n get render(): RenderApi {\n return this.connectorService.render;\n }\n\n get events(): EventsApi<TValue> {\n return this.connectorService.events as EventsApi<TValue>;\n }\n\n get tree(): TreeApi {\n return this.connectorService.tree;\n }\n\n get ui(): GroupUiState<{\n header: GroupUiState;\n rows: ArrayUiState;\n footer: GroupUiState;\n }> {\n return this.connectorService.ui;\n }\n\n private dispatchEvent(event: TableEvent<TValue>): void {\n this.tableEvent.emit(event);\n\n switch (event.type) {\n case 'rowClick':\n this.rowClick.emit(event.payload);\n break;\n\n case 'rowDoubleClick':\n this.rowDoubleClick.emit(event.payload);\n break;\n\n case 'rowContextMenu':\n this.rowContextMenu.emit(event.payload);\n break;\n\n case 'rowMouseEnter':\n this.rowMouseEnter.emit(event.payload);\n break;\n\n case 'rowMouseLeave':\n this.rowMouseLeave.emit(event.payload);\n break;\n\n case 'rowDrop':\n this.rowDrop.emit(event.payload);\n break;\n\n case 'rowDropSuccess':\n this.rowDropSuccess.emit(event.payload);\n break;\n\n case 'rowDropError':\n this.rowDropError.emit(event.payload);\n break;\n\n case 'cellClick':\n this.cellClick.emit(event.payload);\n break;\n\n case 'cellDoubleClick':\n this.cellDoubleClick.emit(event.payload);\n break;\n\n case 'cellContextMenu':\n this.cellContextMenu.emit(event.payload);\n break;\n\n case 'cellValueChange':\n this.cellValueChange.emit(event.payload);\n break;\n\n case 'selectionChange':\n this.selectionChange.emit(event.payload);\n break;\n\n case 'selectionError':\n this.selectionError.emit(event.payload);\n break;\n\n case 'pageChange':\n this.pageChange.emit(event.payload);\n break;\n\n case 'sortChange':\n this.sortChange.emit(event.payload);\n break;\n\n case 'filterChange':\n this.filterChange.emit(event.payload);\n break;\n\n case 'loadError':\n this.loadError.emit(event.payload);\n break;\n\n case 'nodeExpand':\n this.nodeExpand.emit(event.payload);\n break;\n\n case 'nodeCollapse':\n this.nodeCollapse.emit(event.payload);\n break;\n\n case 'nodeLoadChildren':\n this.nodeLoadChildren.emit(event.payload);\n break;\n\n case 'nodeChildrenLoaded':\n this.nodeChildrenLoaded.emit(event.payload);\n break;\n }\n }\n}\n","<div class=\"table-frame\" [style.box-shadow]=\"elevationShadow()\">\n <ng-template appDynamicTableLoader [tableConfig]=\"tableConfig()\"></ng-template>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TableComponent } from './components/table/table.component';\nimport { KlesTableComponent } from './kles-table.component';\nimport { KlesMaterialDynamicformsModule } from '@3kles/kles-material-dynamicforms';\n\nconst components = [TableComponent];\nconst directives = [];\nconst pipes = [];\n\n@NgModule({\n imports: [CommonModule, components, KlesTableComponent, KlesMaterialDynamicformsModule],\n providers: [pipes],\n exports: [pipes, directives, KlesTableComponent],\n})\nexport class KlesMaterialTableModule {\n static declarations = [components, directives, pipes];\n}\n","import { Observable } from 'rxjs';\nimport { Query } from '../query/query.interface';\nimport { FormGroup } from '@angular/forms';\n\ntype LoaderCallback<TArgs extends unknown[], TResult> = {\n bivarianceHack(...args: TArgs): TResult;\n}['bivarianceHack'];\n\nexport type LoaderLazyResult<R> = Observable<{ total: number; items: R[]; header?: { [key: string]: unknown } }>;\nexport type LoaderResult<R> = Observable<{ items: R[] }>;\n\ntype LinesLoaderDef<T, R, C> = {\n params?: () => Observable<T>;\n loader: LoaderCallback<[params: T], LoaderResult<R>>;\n hasChildren?: LoaderCallback<[parent: FormGroup, depth: number], boolean>;\n childrens?: LoaderCallback<[params: T, parent: FormGroup, depth: number], LoaderResult<C>>;\n};\n\ntype LinesLazyLoaderDef<T, R, C> = {\n params?: () => Observable<T>;\n loader: LoaderCallback<[params: T, query?: Query], LoaderLazyResult<R>>;\n hasChildren?: LoaderCallback<[parent: FormGroup, depth: number], boolean>;\n childrens?: LoaderCallback<[params: T, parent: FormGroup, depth: number, query?: Query], LoaderLazyResult<C>>;\n};\n\ntype Brand<K extends string> = { readonly __brand: K };\n\nexport type LinesLoader<T, R, C = R> = LinesLoaderDef<T, R, C> & Brand<'LinesLoader'>;\nexport type LinesLazyLoader<T, R, C = R> = LinesLazyLoaderDef<T, R, C> & Brand<'LinesLazyLoader'>;\n\nexport const linesLoader = <T, R, C = R>(l: LinesLoaderDef<T, R, C>) => l as LinesLoader<T, R, C>;\nexport const linesLazyLoader = <T, R, C = R>(l: LinesLazyLoaderDef<T, R, C>) => l as LinesLazyLoader<T, R, C>;\n","import { FormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\ntype SelectionCallback<TArgs extends unknown[], TResult> = {\n bivarianceHack(...args: TArgs): TResult;\n}['bivarianceHack'];\n\nexport type RowId = string | number;\n\nexport interface SelectionResponse {\n selected: boolean;\n count?: number;\n}\n\nexport interface SelectionAllResponse extends SelectionResponse {\n footer?: unknown;\n}\n\nexport interface SelectionState {\n loading: boolean;\n success: boolean;\n selected?: boolean;\n footer?: unknown;\n count?: number;\n error?: unknown;\n}\n\ntype SelectionConfigDef<T> = {\n selectionMode?: boolean;\n key?: string;\n params?: () => Observable<T>;\n select?: SelectionCallback<\n [params: T, row: FormGroup, selected: boolean, filters?: Record<string, unknown>],\n Observable<SelectionResponse>\n >;\n selectAll?: SelectionCallback<\n [params: T, selected: boolean, filters?: Record<string, unknown>],\n Observable<SelectionAllResponse>\n >;\n\n /** Resolves the initial selected state of a row. */\n isSelected?: (row: FormGroup) => boolean;\n /** Resolves whether selection must remain disabled for a row. */\n isDisabled?: (row: FormGroup) => boolean;\n};\n\ntype Brand<K extends string> = { readonly __brand: K };\n\nexport type SelectionConfig<T> = SelectionConfigDef<T> & Brand<'SelectionConfig'>;\nexport const selectionConfig = <T>(l: SelectionConfigDef<T>) => l as SelectionConfig<T>;\n","export enum AlignCell {\n LEFT = 'left',\n CENTER = 'center',\n RIGHT = 'right',\n}\n","/*\n * Public API Surface of kles-material-table\n */\n\nexport * from './lib/kles-material-table.module';\n\nexport * from './lib/core/table/config.interface';\nexport * from './lib/core/table/table.interface';\nexport * from './lib/core/table/loader.interface';\nexport * from './lib/core/table/selection-config.interface';\nexport * from './lib/core/table/cell.interface';\nexport * from './lib/core/table/column.interface';\n\nexport * from './lib/components/table/table.component';\nexport * from './lib/components/table/table-intl';\nexport * from './lib/components/empty-state/empty-state.component';\n\nexport * from './lib/kles-table.component';\nexport * from './lib/token';\n\nexport * from './lib/enums/align.enum';\nexport * from './lib/enums/span.enum';\n\nexport * from './lib/core/api/table';\nexport * from './lib/core/api/column';\nexport * from './lib/core/api/empty-state';\nexport * from './lib/core/api/events';\nexport * from './lib/core/api/footer';\nexport * from './lib/core/api/form';\nexport * from './lib/core/api/loading';\nexport * from './lib/core/api/pagination';\nexport * from './lib/core/api/render';\nexport * from './lib/core/api/scrollbar';\nexport * from './lib/core/api/selection';\nexport * from './lib/core/api/sort';\nexport * from './lib/core/api/tree';\n\nexport * from './lib/services/features/events/event-map.model';\nexport * from './lib/services/features/events/event-payloads.model';\nexport * from './lib/services/features/events/events.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.EventsService","i2.ColumnsService","i1.ColumnsService","i2.RowFormFactory","i3.RowContextStore","i1.PaginatorStore","i2.EventsService","i1.ExpandedRowStore","i1.KlesForm","i3.CellValueChangeService","i4.ValidationService","i1.KlesTableConnectorService","i3.LoadingService","i4.PaginatorService","i5.ScrollbarService","i6.FooterService","i7.ExtraRowService","i8.RenderService","i9.FilterService","i10.ExpandedRowStore","i11.RowFormFactory","i12.EventsService","i13.RowService","i14.CellService","i15.EmptyStateService","i16.TreeService","i1.PaginatorService","i2","_","i2.FilterService","i3.FilterStore","i4.ColumnsService","i5.EventsService","i3.SelectionLoaderService","i4.ScrollbarService","i5.LoadingService","i7.FilterStore","i2.PaginatorStore","i3.SortStore","i4.FilterStore","i3.RowFormFactory","i4.ExtraRowService","i7.PaginatorService","i1.LoadingService","i3.LoadingOrchestratorService","i1.ScrollbarService","i2.PaginatorService"],"mappings":"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"}
|