{"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\">&nbsp;</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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"}