@ng-dominus/dm-table
Version:
Dominus angular material table extension
1 lines • 48.4 kB
Source Map (JSON)
{"version":3,"file":"ng-dominus-dm-table.mjs","sources":["../../../projects/dm-table/src/lib/dm-table.ts","../../../projects/dm-table/src/lib/dm-table-render.pipe.ts","../../../projects/dm-table/src/lib/dm-table.component.ts","../../../projects/dm-table/src/lib/dm-table.component.html","../../../projects/dm-table/src/public-api.ts","../../../projects/dm-table/src/ng-dominus-dm-table.ts"],"sourcesContent":["import {BehaviorSubject, catchError, merge, Observable, Subscription, throwError} from \"rxjs\";\nimport {HttpClient, HttpContext, HttpHeaders, HttpParams} from \"@angular/common/http\";\nimport {MatSort} from \"@angular/material/sort\";\nimport {MatPaginator} from \"@angular/material/paginator\";\nimport {MatTableDataSource} from \"@angular/material/table\";\nimport {ngClassCompatible} from \"../shared/types\";\nimport {FormGroup} from \"@angular/forms\";\nimport {InjectionToken, ProviderToken, Type} from \"@angular/core\";\n\nexport interface DmTableColumnDefinition {\n /**\n * This will be matched against the data source when providing value for this column.\n * For example the column id 'my_column' should be found in the data source, like so: [{'my_column': 'column_value'}, ...].\n */\n id: string;\n /**\n * The column display name.\n */\n name: string;\n /**\n * Classes to be placed on the whole column (th & td).\n * The values must be compatible with ngClass.\n */\n classes?: ngClassCompatible;\n /**\n * Is this column sortable?\n */\n sortable?: boolean;\n /**\n * Whether this column is displayed or hidden.\n */\n visible?: boolean;\n /**\n * Render this column using a pipe or a component.\n * If both are set, the component property takes priority\n */\n renderUsing?: {\n component?: Type<any>;\n pipe?: ProviderToken<any>;\n /**\n * arguments to be passed to either the pipe or the component\n */\n arguments?: any[] | {[key: string]: any}\n };\n}\n\nexport interface DmTableRow {\n [columnId: string]: any;\n}\n\nexport interface DmTableRenderComponentData {\n columnId: string;\n columnData: string;\n arguments: any[] | {[key: string]: any};\n}\n\nexport enum DmTableIntl {\n NO_DATA,\n LOADING\n}\n\nexport const DM_TABLE_INTL = new InjectionToken<Record<DmTableIntl, string>>('Dominus table i18n strings');\nexport const DM_TABLE_RENDER_COMPONENT_DATA = new InjectionToken<DmTableRenderComponentData>('DM_TABLE_RENDER_COMPONENT_DATA');\n\nexport type DmTableDataSource = string | { [columnId: string]: any }[];\nexport type DmTableFilters = {[filter: string]: any} | FormGroup;\n\nexport interface DmTableDataServerResponse {\n totalResults: number;\n rows: DmTableRow[];\n}\n\nexport interface DmTableRequestOptions {\n body?: any;\n headers?: HttpHeaders | {\n [header: string]: string | string[];\n };\n context?: HttpContext;\n observe?: 'body';\n params?: HttpParams | {\n [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean>;\n };\n responseType?: 'json';\n}\n\nexport interface DmTableColumnVisibility {\n columnId: string;\n /**\n * If not specified, the visibility will be toggled\n */\n visible?: boolean;\n}\n\nexport class DmTableDataSourceAdapter extends MatTableDataSource<any> {\n private totalResults = 0;\n private eventsSub: Subscription;\n private loadingData$ = new BehaviorSubject<boolean>(false);\n private readonly paginatorRef?: MatPaginator;\n private readonly sortRef?: MatSort;\n\n constructor(\n private requestMethod: string,\n private http: HttpClient,\n private dataSrc: DmTableDataSource,\n sort: MatSort,\n private readonly onBeforeRequest: (requestOptions: DmTableRequestOptions) => Promise<DmTableRequestOptions>,\n paginator?: MatPaginator,\n private mapRowsFn?: (rows: any[]) => any[],\n private filters?: DmTableFilters,\n ) {\n super();\n\n this.sortRef = sort;\n this.paginatorRef = paginator;\n\n if(typeof dataSrc !== 'string') {\n this.sort = sort;\n if(paginator) {\n this.paginator = paginator;\n }\n }\n\n this.eventsSub = (paginator?.page ? merge(sort.sortChange, paginator.page) : sort.sortChange).subscribe((event: any) => this.refresh(event.pageIndex === undefined));\n }\n\n override connect() {\n this.refresh(false);\n return super.connect();\n }\n\n getTotalResults() {\n return this.totalResults;\n }\n\n refresh(resetPage = true) {\n if(this.loadingData$.getValue()) {\n return;\n }\n\n const paginator = this.paginatorRef;\n const dataSrc = this.dataSrc;\n\n if (resetPage && paginator) {\n paginator.pageIndex = 0;\n }\n\n if (typeof dataSrc === 'string') {\n return this.handleServerSideDataSrc(dataSrc);\n }\n\n const mapRowsFn = this.mapRowsFn;\n this.data = mapRowsFn ? mapRowsFn(dataSrc) : dataSrc;\n this.totalResults = this.data.length;\n }\n\n onDataLoading(): Observable<boolean> {\n return this.loadingData$.asObservable();\n }\n\n private handleServerSideDataSrc(dataSource: string) {\n this.loadingData$.next(true);\n\n const requestMethod = this.requestMethod.toUpperCase();\n const requestOptions: DmTableRequestOptions = {\n responseType: 'json',\n observe: \"body\"\n };\n\n\n const filters = this.filters;\n\n let requestData;\n if(filters instanceof FormGroup) {\n requestData = Object.assign({}, filters.value || {});\n } else {\n requestData = filters || {};\n }\n\n requestData['dm_sort_col'] = this.sortRef?.active || '';\n requestData['dm_sort_dir'] = this.sortRef?.direction || '';\n requestData['dm_page_index'] = this.paginatorRef?.pageIndex || 0;\n requestData['dm_page_len'] = this.paginatorRef?.pageSize || 0;\n\n if(requestMethod === 'GET')\n {\n requestOptions.params = requestData;\n }\n else\n {\n requestOptions.body = requestData;\n }\n\n this.onBeforeRequest(requestOptions).then(options => {\n this.http.request<DmTableDataServerResponse>(requestMethod, dataSource, options)\n .pipe(catchError((error) => {\n this.data = [];\n this.loadingData$.next(false);\n return throwError(() => new Error(`Table data request from ${dataSource} failed! Error: ${error.message || 'Unknown'}`));\n }))\n .subscribe((response) => {\n if (response && response.rows) {\n if (this.paginatorRef) {\n this.paginatorRef.length = response.totalResults;\n }\n this.totalResults = response.totalResults;\n\n this.data = this.mapRowsFn ? this.mapRowsFn(response.rows) : response.rows;\n }\n this.loadingData$.next(false);\n });\n });\n }\n\n override disconnect(): void {\n this.eventsSub.unsubscribe();\n this.loadingData$.complete();\n super.disconnect();\n }\n}\n","import {Injector, Pipe, PipeTransform, ProviderToken} from '@angular/core';\n\n@Pipe({\n name: 'dmTableRender',\n standalone: true\n})\nexport class DmTableRenderPipe implements PipeTransform {\n constructor(private injector: Injector) {}\n\n transform(value: unknown, pipeToken: ProviderToken<any>, args: any[]): unknown {\n return this.injector.get(pipeToken).transform(value, ...args);\n }\n}\n","import {\n AfterViewInit, booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, Inject, Injector,\n Input,\n OnChanges,\n OnDestroy, OnInit, Optional,\n Output,\n SimpleChanges, TrackByFunction,\n ViewChild\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatPaginator, MatPaginatorModule} from \"@angular/material/paginator\";\nimport {MatSort, MatSortModule} from \"@angular/material/sort\";\nimport {\n DM_TABLE_INTL,\n DM_TABLE_RENDER_COMPONENT_DATA,\n DmTableColumnDefinition, DmTableColumnVisibility,\n DmTableDataSource,\n DmTableDataSourceAdapter, DmTableFilters, DmTableIntl, DmTableRenderComponentData,\n DmTableRequestOptions,\n} from \"./dm-table\";\nimport {Subject, Subscription} from \"rxjs\";\nimport {MatMenu, MatMenuModule} from \"@angular/material/menu\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {MatTableModule} from \"@angular/material/table\";\nimport {MatButtonModule} from \"@angular/material/button\";\nimport {MatIconModule} from \"@angular/material/icon\";\nimport {SelectionModel} from \"@angular/cdk/collections\";\nimport {MatCheckboxChange, MatCheckboxModule} from \"@angular/material/checkbox\";\nimport {MatProgressSpinnerModule} from \"@angular/material/progress-spinner\";\nimport {MatProgressBarModule} from \"@angular/material/progress-bar\";\nimport {DmTableRenderPipe} from \"./dm-table-render.pipe\";\n\n@Component({\n selector: 'dm-table',\n standalone: true,\n imports: [\n CommonModule,\n MatTableModule,\n MatButtonModule,\n MatIconModule,\n MatPaginatorModule,\n MatSortModule,\n MatMenuModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n DmTableRenderPipe\n ],\n templateUrl: './dm-table.component.html',\n styleUrl: './dm-table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DmTableComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n /**\n * Table column definitions.\n */\n @Input({required: true}) columns!: DmTableColumnDefinition[];\n /**\n * The data source from which rows are fetched.\n * Can be a static array of rows or an url to a server side source.\n * Note: When using server side data source, it is assumed that sorting and pagination is also handled on the server.\n */\n @Input({required: true}) dataSource!: DmTableDataSource;\n\n /**\n * Overrides the i18n default strings AND the string injected by the DM_TABLE_INTL token.\n * This is mostly useful when dynamic i18n strings are required, or when there are multiple tables on the same page.\n */\n @Input() intl: Record<DmTableIntl, string>;\n /**\n * The request method used when calling the server side data source(GET, POST, etc.).\n */\n @Input() dataSourceRequestMethod: string = 'GET';\n /**\n * Filters that will be sent to the server side data source along with the default parameters (paging, sorting, etc.).\n */\n @Input() filters?: DmTableFilters;\n /**\n * A function that takes the current request options and returns a promise which resolves the final request options to be passed to the angular HttpClient.\n * This is useful if you need to pass additional headers (e.g. Authorization) or modify the data before sending the request to the backend.\n * The same effect can be achieved using an interceptor.\n */\n @Input() onBeforeServerRequestFn?: (requestOptions: DmTableRequestOptions) => Promise<DmTableRequestOptions>;\n /**\n * Adds a contextual menu on each row in a special column added at the end of the table.\n * Use the [rowContextMenuDisplayCondition] @Input to control when this menu is displayed.\n */\n @Input() rowContextMenu: MatMenu | null = null;\n /**\n * Function which determines when the contextual menu is displayed\n */\n @Input() rowContextMenuIsVisibleFn: (row: any) => boolean = () => true;\n /**\n * If set, a column with checkboxes for each row will be appended at the beginning of the table.\n * The SelectionModel will be populated with each of the selected row's data.\n * Note: The table respects whether the selection model supports multiple values or not\n */\n @Input() rowSelectionModel?: SelectionModel<any>;\n /**\n * A function that takes the rows as an argument and returns them back.\n * This is useful when you need to alter row data from a server side data source before being rendered.\n */\n @Input() mapRowsFn?: (rows: any[]) => any[];\n\n /**\n * Tracking function that will be used to check the differences in data changes.\n * Used similarly to ngFor trackBy function.\n * Optimize row operations by identifying a row based on its data relative to the function to know if a row should be added/removed/moved.\n * Accepts a function that takes two parameters, index and item.\n */\n @Input() trackBy: TrackByFunction<any> = (index: number, item: any) => item;\n\n /**\n * Weather a highlight effect will be rendered when the user hovers the cursor over a row.\n */\n @Input() rowHoverEffectEnabled = false;\n /**\n * Highlights even rows\n */\n @Input() stripedRows = false;\n /**\n * Adds a border to the table\n */\n @Input() outline = true;\n /**\n * Whether to display a loading animation when loading data from a server.\n * The animation can also manually be triggered.\n */\n @Input() loadingAnimationEnabled = true;\n /**\n * Whether pagination will be enabled.\n */\n @Input() paginate = true;\n /**\n * Shows paginator first/last buttons\n */\n @Input() showFirstLastButtons = true;\n /**\n * Hides paginator page size info\n */\n @Input() hidePageSize = false;\n /**\n * The default page size.\n */\n @Input() pageSize = 10;\n /**\n * The page sizes available to the user.\n */\n @Input() pageSizeOptions = [5, 10, 20, 30, 40, 50];\n /**\n * The position of the sorting arrow\n */\n @Input() sortingArrowPosition: 'before' | 'after' = 'after';\n\n /**\n * Sets the header row as sticky.\n * This only works if you set a max height for the table using the [maxHeight] input.\n */\n @Input() freezeHeaderRow: boolean = true;\n\n /**\n * Set a max height for the table (excluding the paginator).\n * Should be a value compatible with the css property 'max-height'. Example: '70vh' or '600px'.\n */\n @Input() maxHeight?: string;\n\n /**\n * Event triggered when a row has been clicked.\n * The event contains the row data.\n */\n @Output('rowClicked') rowClicked$ = new Subject<any>();\n\n protected displayedColumns: string[] = [];\n protected dataSourceAdapter!: DmTableDataSourceAdapter;\n protected _isLoading = false;\n protected loadingDataSub?: Subscription;\n protected masterCheckboxChecked = false;\n protected masterCheckboxIndeterminate = false;\n protected readonly DominusTableIntl = DmTableIntl;\n protected containerClasses: {\n [key: string]: boolean\n } = {};\n\n @ViewChild(MatPaginator) private paginator?: MatPaginator;\n @ViewChild(MatSort) private sort!: MatSort;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private http: HttpClient,\n private injector: Injector,\n @Optional() @Inject(DM_TABLE_INTL) intl?: Record<DmTableIntl, string>\n ) {\n this.intl = Object.assign({\n [DmTableIntl.NO_DATA]: 'No data',\n [DmTableIntl.LOADING]: 'Loading...'\n }, intl || {});\n }\n\n ngOnInit() {\n this.prepareDisplayedColumns();\n this.updateContainerClasses();\n }\n\n ngAfterViewInit() {\n this.setDataSrcAdapter(true);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (\n (changes['dataSource'] && !changes['dataSource'].firstChange)\n || (changes['filters'] && !changes['filters'].firstChange)\n ) {\n this.setDataSrcAdapter();\n }\n\n const headerNeedsUpdate = (changes['columns'] && !changes['columns'].firstChange) || (changes['rowSelectionModel'] && !changes['rowSelectionModel'].firstChange);\n const updateContainerClasses = (changes['outline'] && !changes['outline'].firstChange) || (changes['stripedRows'] && !changes['stripedRows'].firstChange)\n\n if (\n headerNeedsUpdate\n || updateContainerClasses\n || (changes['rowHoverEffectEnabled'] && !changes['rowHoverEffectEnabled'].firstChange)\n || (changes['pageSizeOptions'] && !changes['pageSizeOptions'].firstChange)\n || (changes['paginate'] && !changes['paginate'].firstChange)\n || (changes['loadingDataOverlay'] && !changes['loadingDataOverlay'].firstChange)\n || (changes['sortingArrowPosition'] && !changes['sortingArrowPosition'].firstChange)\n || (changes['rowContextMenu'] && !changes['rowContextMenu'].firstChange)\n || (changes['intl'] && !changes['intl'].firstChange)\n || (changes['maxHeight'] && !changes['maxHeight'].firstChange)\n ) {\n headerNeedsUpdate && this.prepareDisplayedColumns();\n updateContainerClasses && this.updateContainerClasses();\n this.changeDetector.markForCheck();\n }\n }\n\n /**\n * Refreshes the table data\n * @param resetPage whether the page will be reset as well\n */\n refresh(resetPage = true) {\n this.dataSourceAdapter.refresh(resetPage);\n }\n\n /**\n * Hides/shows or toggles the specified table column's visibility\n * @param columnId\n * @param visible If not specified, the visibility will be toggled\n */\n changeColumnVisibility(columnId: string, visible?: boolean) {\n const column = this.getColumn(columnId);\n if(!column) {\n return;\n }\n\n column.visible = typeof visible === 'undefined' ? !column.visible : visible;\n this.prepareDisplayedColumns();\n this.changeDetector.markForCheck();\n }\n\n /**\n * Changes the visibility of multiple columns\n * @param columns The columns and their visibility. Example: [{columnId: 'myColumn1', visible: true}, {columnId: 'myOtherColumn', visible: false}] -- sets myColumn1 to visible and hides myOtherColumn\n */\n changeColumnsVisibility(columns: DmTableColumnVisibility[]) {\n for(let i = columns.length; i--;) {\n const colVisibilityConfig = columns[i];\n const column = this.getColumn(colVisibilityConfig.columnId);\n if(!column) {\n continue;\n }\n\n column.visible = typeof colVisibilityConfig.visible !== \"undefined\" ? colVisibilityConfig.visible : !column.visible;\n }\n\n this.prepareDisplayedColumns();\n this.changeDetector.markForCheck();\n }\n\n /**\n * Returns the table current loading state\n */\n get isLoading(): boolean {\n return this._isLoading;\n }\n\n /**\n * Activates or deactivates the table's loading state\n * @param state\n */\n @Input({transform: booleanAttribute}) set isLoading(state: boolean) {\n if(this._isLoading !== state) {\n this._isLoading = state;\n this.changeDetector.detectChanges();\n }\n }\n\n protected identifyColumn(index: number, column: DmTableColumnDefinition) {\n return column.id;\n }\n\n protected toggleAllRowsSelection($event: MatCheckboxChange) {\n const rowSelectionModel = this.rowSelectionModel;\n if(!rowSelectionModel) {\n return;\n }\n\n const rows = this.dataSourceAdapter.data;\n if($event.checked) {\n for(let i = rows.length; i--;) {\n rowSelectionModel.select(rows[i]);\n }\n\n this.masterCheckboxChecked = true;\n this.masterCheckboxIndeterminate = rowSelectionModel.selected.length !== this.dataSourceAdapter.getTotalResults();\n } else {\n rowSelectionModel.clear();\n this.masterCheckboxChecked = false;\n this.masterCheckboxIndeterminate = false;\n }\n }\n\n protected toggleRowSelection(row: any) {\n const rowSelectionModel = this.rowSelectionModel;\n if(!rowSelectionModel) {\n return;\n }\n\n rowSelectionModel.toggle(row);\n\n if(rowSelectionModel.isEmpty()) {\n this.masterCheckboxChecked = false;\n this.masterCheckboxIndeterminate = false;\n } else {\n this.masterCheckboxChecked = true;\n this.masterCheckboxIndeterminate = rowSelectionModel.selected.length !== this.dataSourceAdapter.getTotalResults();\n }\n }\n\n protected createRenderComponentInjector(column: DmTableColumnDefinition, columnData: any) {\n return Injector.create({\n providers: [{\n provide: DM_TABLE_RENDER_COMPONENT_DATA,\n useValue: {\n columnId: column.id,\n columnData,\n arguments: column.renderUsing?.arguments\n } as DmTableRenderComponentData\n }],\n parent: this.injector\n });\n }\n\n private updateContainerClasses() {\n this.containerClasses = {\n 'outline': this.outline,\n 'striped': this.stripedRows\n };\n }\n\n private getColumn(columnId: string) {\n const columns = this.columns;\n let foundColumn: undefined|DmTableColumnDefinition;\n\n for(let i = columns.length; i--;) {\n const col = columns[i];\n if(col.id === columnId) {\n foundColumn = col;\n break;\n }\n }\n\n return foundColumn;\n }\n\n private prepareDisplayedColumns() {\n const columns = this.columns;\n const colLen = columns.length;\n const _displayedColumns = [];\n\n if(this.rowSelectionModel) {\n _displayedColumns.push('dm_table_row_selection_column');\n }\n\n for (let colIndex = 0; colIndex < colLen; ++colIndex) {\n const column = columns[colIndex];\n if (column.visible === undefined || column.visible) {\n _displayedColumns.push(column.id);\n }\n }\n\n if (this.rowContextMenu) {\n _displayedColumns.push('dm_table_row_contextual_menu_column');\n }\n\n this.displayedColumns = _displayedColumns;\n }\n\n private setDataSrcAdapter(initialSet = false) {\n if(!initialSet) {\n this.loadingDataSub?.unsubscribe();\n if(this.sort.active !== '') {\n this.sort.active = '';\n this.sort.direction = '';\n this.sort._stateChanges.next();\n }\n\n if(this.paginator) {\n this.paginator.length = 0;\n this.paginator.pageIndex = 0;\n }\n }\n\n const dataSourceAdapter = new DmTableDataSourceAdapter(\n this.dataSourceRequestMethod,\n this.http,\n this.dataSource,\n this.sort,\n this.onBeforeServerRequestFn || ((requestOptions: DmTableRequestOptions) => new Promise((resolve) => { resolve(requestOptions); })),\n this.paginator,\n this.mapRowsFn,\n this.filters\n );\n\n if(this.loadingAnimationEnabled) {\n this.loadingDataSub = dataSourceAdapter.onDataLoading().subscribe(loading => this.isLoading = loading);\n }\n\n this.dataSourceAdapter = dataSourceAdapter;\n }\n\n ngOnDestroy() {\n this.rowClicked$.complete();\n this.loadingDataSub?.unsubscribe();\n }\n}\n","<div class=\"dm-table-container\" [ngClass]=\"containerClasses\">\n <div *ngIf=\"_isLoading\" class=\"loading-overlay\">\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n <div class=\"dm-table-overflow\" [ngStyle]=\"{'max-height': maxHeight}\">\n <table mat-table matSort [dataSource]=\"dataSourceAdapter\" class=\"dm-table\" [trackBy]=\"trackBy\">\n <!-- ROW SELECTION COLUMN -->\n <ng-container *ngIf=\"rowSelectionModel\" matColumnDef=\"dm_table_row_selection_column\">\n <th mat-header-cell *matHeaderCellDef>\n <mat-checkbox *ngIf=\"rowSelectionModel.isMultipleSelection()\" color=\"primary\"\n [disabled]=\"_isLoading\"\n (change)=\"toggleAllRowsSelection($event)\"\n [checked]=\"masterCheckboxChecked\"\n [indeterminate]=\"masterCheckboxIndeterminate\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-checkbox color=\"primary\"\n [disabled]=\"_isLoading\"\n (change)=\"toggleRowSelection(row)\"\n [checked]=\"rowSelectionModel.isSelected(row)\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <!-- NORMAL DATA COLUMN -->\n <ng-container *ngFor=\"let column of columns; trackBy: identifyColumn\" [matColumnDef]=\"column.id\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header [ngClass]=\"column.classes\" [arrowPosition]=\"sortingArrowPosition\" [disabled]=\"_isLoading || column.sortable === false\">\n {{ column.name }}\n </th>\n <td mat-cell *matCellDef=\"let row\" [ngClass]=\"column.classes\">\n <ng-container\n [ngTemplateOutlet]=\"!column.renderUsing ? renderDefault : (column.renderUsing.component ? renderComponent : renderPipe)\"\n [ngTemplateOutletContext]=\"{column, row}\">\n </ng-container>\n </td>\n </ng-container>\n\n <!-- ROW CONTEXTUAL MENU COLUMN -->\n <ng-container *ngIf=\"rowContextMenu\" matColumnDef=\"dm_table_row_contextual_menu_column\">\n <th mat-header-cell *matHeaderCellDef class=\"dm-table-row-contextual-menu-column\"> </th>\n <td mat-cell *matCellDef=\"let row\">\n <button *ngIf=\"rowContextMenuIsVisibleFn(row)\" [disabled]=\"_isLoading\" (click)=\"$event.stopPropagation()\"\n mat-icon-button [matMenuTriggerFor]=\"rowContextMenu\" [matMenuTriggerData]=\"{row: row}\">\n <mat-icon>menu</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: freezeHeaderRow\" class=\"dm-table-header-row\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n class=\"dm-table-row\" [ngClass]=\"{'dm-table-row-hover-effect': rowHoverEffectEnabled, 'dm-table-row-hover-pointer': rowClicked$.observed}\" (click)=\"!_isLoading && rowClicked$.next(row)\"></tr>\n\n <tr *matNoDataRow class=\"dm-table-row\">\n <td class=\"dm-no-data-cell\" [attr.colspan]=\"columns.length + (rowContextMenu ? 1 : 0) + (rowSelectionModel ? 1 : 0)\">{{ intl[_isLoading ? DominusTableIntl.LOADING : DominusTableIntl.NO_DATA] }}</td>\n </tr>\n </table>\n </div>\n <mat-paginator *ngIf=\"paginate\" class=\"paginator\" [disabled]=\"_isLoading\" [pageSizeOptions]=\"pageSizeOptions\" [pageSize]=\"pageSize\" [showFirstLastButtons]=\"showFirstLastButtons\" [hidePageSize]=\"hidePageSize\" aria-label=\"Select page\"></mat-paginator>\n</div>\n<ng-template #renderDefault let-column=\"column\" let-row=\"row\">\n {{ row[column.id] }}\n</ng-template>\n\n<ng-template #renderComponent let-column=\"column\" let-row=\"row\">\n <ng-container\n [ngComponentOutlet]=\"column.renderUsing.component\"\n [ngComponentOutletInjector]=\"createRenderComponentInjector(column, row[column.id])\"></ng-container>\n</ng-template>\n\n<ng-template #renderPipe let-column=\"column\" let-row=\"row\">\n {{ row[column.id] | dmTableRender: column.renderUsing.pipe : column.renderUsing.pipeArguments || [] }}\n</ng-template>\n","/*\n * Public API Surface of dm-table\n */\n\nexport * from './lib/dm-table';\nexport * from './lib/dm-table-render.pipe';\nexport * from './lib/dm-table.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}