UNPKG

122 kBSource Map (JSON)View Raw
1{"version":3,"file":"ngx-easy-table.mjs","sources":["../../../projects/ngx-easy-table/src/lib/model/config.ts","../../../projects/ngx-easy-table/src/lib/model/event.enum.ts","../../../projects/ngx-easy-table/src/lib/model/api.ts","../../../projects/ngx-easy-table/src/lib/services/config-service.ts","../../../projects/ngx-easy-table/src/lib/services/group-rows.service.ts","../../../projects/ngx-easy-table/src/lib/services/style.service.ts","../../../projects/ngx-easy-table/src/lib/components/pagination/pagination.component.ts","../../../projects/ngx-easy-table/src/lib/components/pagination/pagination.html","../../../projects/ngx-easy-table/src/lib/components/header/header.component.ts","../../../projects/ngx-easy-table/src/lib/components/header/header.html","../../../projects/ngx-easy-table/src/lib/components/thead/thead.component.ts","../../../projects/ngx-easy-table/src/lib/components/thead/thead.component.html","../../../projects/ngx-easy-table/src/lib/services/filters.service.ts","../../../projects/ngx-easy-table/src/lib/pipes/search-pipe.ts","../../../projects/ngx-easy-table/src/lib/pipes/render-pipe.ts","../../../projects/ngx-easy-table/src/lib/pipes/global-search-pipe.ts","../../../projects/ngx-easy-table/src/lib/pipes/sort.pipe.ts","../../../projects/ngx-easy-table/src/lib/components/base/base.component.ts","../../../projects/ngx-easy-table/src/lib/components/base/base.component.html","../../../projects/ngx-easy-table/src/lib/components/base/base.module.ts","../../../projects/ngx-easy-table/src/lib/table.module.ts","../../../projects/ngx-easy-table/src/ngx-easy-table.ts"],"sourcesContent":["export interface Config {\n searchEnabled: boolean;\n headerEnabled: boolean;\n orderEnabled: boolean;\n orderEventOnly?: boolean;\n paginationEnabled: boolean;\n /* @deprecated */\n exportEnabled?: boolean;\n clickEvent: boolean;\n selectRow: boolean;\n selectCol: boolean;\n selectCell: boolean;\n rows: number;\n additionalActions: boolean;\n serverPagination: boolean;\n isLoading: boolean;\n detailsTemplate: boolean;\n groupRows: boolean;\n paginationRangeEnabled: boolean;\n collapseAllRows: boolean;\n checkboxes: boolean;\n radio?: boolean;\n resizeColumn: boolean;\n fixedColumnWidth: boolean;\n horizontalScroll: boolean;\n /* @deprecated Use 'rowReorder' instead */\n draggable: boolean;\n logger: boolean;\n showDetailsArrow?: boolean;\n showContextMenu?: boolean;\n persistState?: boolean;\n paginationMaxSize?: number;\n threeWaySort?: boolean;\n columnReorder?: boolean;\n rowReorder?: boolean;\n reorderDelay?: number;\n infiniteScroll?: boolean;\n infiniteScrollThrottleTime?: number;\n onDragOver?: boolean;\n tableLayout: {\n style: STYLE | string | null;\n theme: THEME | string | null;\n borderless: boolean | null;\n hover: boolean | null;\n striped: boolean | null;\n };\n}\n\nexport enum STYLE {\n TINY = 'tiny',\n BIG = 'big',\n NORMAL = 'normal',\n}\n\nexport enum THEME {\n LIGHT = 'light',\n DARK = 'dark',\n}\n","export enum Event {\n onPagination = 'onPagination',\n onOrder = 'onOrder',\n onGlobalSearch = 'onGlobalSearch',\n onSearch = 'onSearch',\n onClick = 'onClick',\n onDoubleClick = 'onDoubleClick',\n onCheckboxSelect = 'onCheckboxSelect',\n onRadioSelect = 'onRadioSelect',\n onCheckboxToggle = 'onCheckboxToggle',\n onSelectAll = 'onSelectAll',\n onInfiniteScrollEnd = 'onInfiniteScrollEnd',\n onColumnResizeMouseDown = 'onColumnResizeMouseDown',\n onColumnResizeMouseUp = 'onColumnResizeMouseUp',\n onRowDrop = 'onRowDrop',\n onReorderStart = 'onReorderStart',\n onRowCollapsedShow = 'onRowCollapsedShow',\n onRowCollapsedHide = 'onRowCollapsedHide',\n onRowContextMenu = 'onRowContextMenu',\n}\n","export enum API {\n rowContextMenuClicked = 'rowContextMenuClicked',\n setInputValue = 'setInputValue',\n toggleRowIndex = 'toggleRowIndex',\n toggleCheckbox = 'toggleCheckbox',\n onGlobalSearch = 'onGlobalSearch',\n setPaginationCurrentPage = 'setPaginationCurrentPage',\n getPaginationCurrentPage = 'getPaginationCurrentPage',\n getPaginationTotalItems = 'getPaginationTotalItems',\n getNumberOfRowsPerPage = 'getNumberOfRowsPerPage',\n getPaginationLastPage = 'getPaginationLastPage',\n setPaginationRange = 'setPaginationRange',\n setPaginationPreviousLabel = 'setPaginationPreviousLabel',\n setPaginationNextLabel = 'setPaginationNextLabel',\n setPaginationDisplayLimit = 'setPaginationDisplayLimit',\n setTableClass = 'setTableClass',\n setRowClass = 'setRowClass',\n setCellClass = 'setCellClass',\n setRowStyle = 'setRowStyle',\n setCellStyle = 'setCellStyle',\n sortBy = 'sortBy',\n}\n\nexport interface RowClass {\n row: number;\n className: string;\n}\nexport interface CellClass {\n row: number;\n cell: number | string;\n className: string;\n}\nexport interface RowStyle {\n row: number;\n attr: string;\n value: string;\n}\nexport interface CellStyle {\n row: number;\n cell: number;\n attr: string;\n value: string;\n}\n\nexport type ApiType =\n | { type: API.rowContextMenuClicked }\n | { type: API.setInputValue; value: Array<{ key: string; value: string }> }\n | { type: API.toggleRowIndex; value: number }\n | { type: API.toggleCheckbox; value: number }\n | { type: API.onGlobalSearch; value: string }\n | { type: API.setPaginationCurrentPage; value: number }\n | { type: API.getPaginationCurrentPage }\n | { type: API.getPaginationTotalItems }\n | { type: API.getPaginationLastPage }\n | { type: API.getNumberOfRowsPerPage }\n | { type: API.setPaginationRange; value: number[] }\n | { type: API.setPaginationPreviousLabel; value: string }\n | { type: API.setPaginationNextLabel; value: string }\n | { type: API.setPaginationDisplayLimit; value: number }\n | { type: API.setTableClass; value: string | null }\n | { type: API.setRowClass; value: RowClass | RowClass[] }\n | { type: API.setCellClass; value: CellClass | CellClass[] }\n | { type: API.setRowStyle; value: RowStyle | RowStyle[] }\n | { type: API.setCellStyle; value: CellStyle | CellStyle[] }\n | { type: API.sortBy; value: { column: string; order: 'asc' | 'desc' } };\n\nexport interface APIDefinition {\n apiEvent<B extends ApiType>(event: B): IAPIDefinition<B>;\n}\n\nexport type IAPIDefinition<B> = B extends\n | { type: API.getPaginationCurrentPage }\n | { type: API.getPaginationTotalItems }\n | { type: API.getPaginationLastPage }\n | { type: API.getNumberOfRowsPerPage }\n ? number\n : void;\n","import { Injectable } from '@angular/core';\nimport { Config, STYLE, THEME } from '../model/config';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\nexport const DefaultConfig: Config = {\n searchEnabled: false,\n headerEnabled: true,\n orderEnabled: true,\n orderEventOnly: false,\n paginationEnabled: true,\n exportEnabled: false,\n clickEvent: true,\n selectRow: false,\n selectCol: false,\n selectCell: false,\n rows: 10,\n additionalActions: false,\n serverPagination: false,\n isLoading: false,\n detailsTemplate: false,\n groupRows: false,\n paginationRangeEnabled: true,\n collapseAllRows: false,\n checkboxes: false,\n radio: false,\n resizeColumn: false,\n fixedColumnWidth: true,\n horizontalScroll: false,\n draggable: false,\n logger: false,\n showDetailsArrow: false,\n showContextMenu: false,\n persistState: false,\n paginationMaxSize: 5,\n threeWaySort: false,\n onDragOver: false,\n tableLayout: {\n style: STYLE.NORMAL,\n theme: THEME.LIGHT,\n borderless: false,\n hover: true,\n striped: false,\n },\n};\n\n@Injectable()\nexport class DefaultConfigService {\n public static config: Config = DefaultConfig;\n}\n","import { Injectable } from '@angular/core';\nimport { from } from 'rxjs';\nimport { mergeMap, groupBy, reduce } from 'rxjs/operators';\n\n@Injectable()\nexport class GroupRowsService {\n public static doGroupRows<T>(data: T[], groupRowsBy: string): any[] {\n const grouped: any[] = [];\n from(data)\n .pipe(\n groupBy((row) => row[groupRowsBy]),\n mergeMap((group) => group.pipe(reduce((acc: T[], curr: T) => [...acc, curr], [])))\n )\n .subscribe((row) => grouped.push(row));\n\n return grouped;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CellClass, CellStyle, RowClass, RowStyle } from '..';\n\n/* eslint-disable */\n@Injectable()\nexport class StyleService {\n public setRowClass(val: RowClass): void {\n const selector = `#table > tbody > tr:nth-child(${val.row})`;\n const row = document.querySelector(selector) as HTMLTableRowElement;\n if (row) {\n row.classList.add(val.className);\n }\n }\n\n public setCellClass(val: CellClass): void {\n const selector = `#table > tbody > tr:nth-child(${val.row}) > td:nth-child(${val.cell})`;\n const cell = document.querySelector(selector) as HTMLTableCellElement;\n if (cell) {\n cell.classList.add(val.className);\n }\n }\n\n public setRowStyle(val: RowStyle): void {\n const selector = `#table > tbody > tr:nth-child(${val.row})`;\n const row = document.querySelector(selector) as HTMLTableRowElement;\n if (row) {\n // eslint-disable-next-line @typescript-eslint/dot-notation\n row.style[val.attr] = val.value;\n }\n }\n\n public setCellStyle(val: CellStyle): void {\n const selector = `#table > tbody > tr:nth-child(${val.row}) > td:nth-child(${val.cell})`;\n const cell = document.querySelector(selector) as HTMLTableCellElement;\n if (cell) {\n // eslint-disable-next-line @typescript-eslint/dot-notation\n cell.style[val.attr] = val.value;\n }\n }\n\n public pinnedWidth(pinned: boolean | undefined, column: number): string | undefined {\n if (pinned) {\n return 150 * column + 'px';\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { Config } from '../..';\nimport { PaginationControlsDirective } from 'ngx-pagination';\n\nexport interface PaginationRange {\n page: number;\n limit: number;\n}\n\n@Component({\n selector: 'pagination',\n templateUrl: './pagination.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginationComponent implements OnChanges {\n @ViewChild('paginationDirective')\n paginationDirective: PaginationControlsDirective;\n @ViewChild('paginationRange') paginationRange;\n @Input() pagination;\n @Input() config: Config;\n @Input() id;\n @Output() readonly updateRange: EventEmitter<PaginationRange> = new EventEmitter();\n public ranges: number[] = [5, 10, 25, 50, 100];\n public selectedLimit: number;\n public showRange = false;\n public screenReaderPaginationLabel = 'Pagination';\n public screenReaderPageLabel = 'page';\n public screenReaderCurrentLabel = 'You are on page';\n public previousLabel = '';\n public nextLabel = '';\n public directionLinks = true;\n\n @HostListener('document:click', ['$event.target'])\n public onClick(targetElement: any): void {\n if (this.paginationRange && !this.paginationRange.nativeElement.contains(targetElement)) {\n this.showRange = false;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { config } = changes;\n if (config && config.currentValue) {\n this.selectedLimit = this.config.rows;\n }\n }\n\n onPageChange(page: number): void {\n this.updateRange.emit({\n page,\n limit: this.selectedLimit,\n });\n }\n\n changeLimit(limit: number, callFromAPI: boolean): void {\n if (!callFromAPI) {\n this.showRange = !this.showRange;\n }\n this.selectedLimit = limit;\n this.updateRange.emit({\n page: 1,\n limit,\n });\n }\n}\n","<div\n class=\"ngx-pagination-wrapper\"\n [style.display]=\"config.paginationEnabled ? '' : 'none'\"\n [class.ngx-table__table--dark-pagination-wrapper]=\"config.tableLayout.theme === 'dark'\"\n>\n <div class=\"ngx-pagination-steps\">\n <pagination-template\n #paginationDirective=\"paginationApi\"\n id=\"pagination-controls\"\n [id]=\"id\"\n [class.ngx-table__table--dark-pagination]=\"config.tableLayout.theme === 'dark'\"\n [maxSize]=\"config.paginationMaxSize || 5\"\n (pageChange)=\"onPageChange($event)\"\n >\n <ul\n class=\"ngx-pagination\"\n role=\"navigation\"\n [attr.aria-label]=\"screenReaderPaginationLabel\"\n [class.responsive]=\"true\"\n >\n <li\n class=\"pagination-previous\"\n [class.disabled]=\"paginationDirective.isFirstPage()\"\n *ngIf=\"directionLinks\"\n >\n <a\n tabindex=\"0\"\n *ngIf=\"1 < paginationDirective.getCurrent()\"\n (keyup.enter)=\"paginationDirective.previous()\"\n (click)=\"paginationDirective.previous()\"\n [attr.aria-label]=\"previousLabel + ' ' + screenReaderPageLabel\"\n >\n {{ previousLabel }} <span class=\"show-for-sr\">{{ screenReaderPageLabel }}</span>\n </a>\n <span *ngIf=\"paginationDirective.isFirstPage()\">\n {{ previousLabel }} <span class=\"show-for-sr\">{{ screenReaderPageLabel }}</span>\n </span>\n </li>\n <li class=\"small-screen\">\n {{ paginationDirective.getCurrent() }} / {{ paginationDirective.getLastPage() }}\n </li>\n <li\n [class.current]=\"paginationDirective.getCurrent() === page.value\"\n [class.ellipsis]=\"page.label === '...'\"\n *ngFor=\"let page of paginationDirective.pages\"\n >\n <a\n tabindex=\"0\"\n (keyup.enter)=\"paginationDirective.setCurrent(page.value)\"\n (click)=\"paginationDirective.setCurrent(page.value)\"\n *ngIf=\"paginationDirective.getCurrent() !== page.value\"\n >\n <span class=\"show-for-sr\">{{ screenReaderPageLabel }} </span>\n <span>{{ page.label }}</span>\n </a>\n <ng-container *ngIf=\"paginationDirective.getCurrent() === page.value\">\n <span class=\"show-for-sr\">{{ screenReaderCurrentLabel }} </span>\n <span>{{ page.label }}</span>\n </ng-container>\n </li>\n <li\n class=\"pagination-next\"\n [class.disabled]=\"paginationDirective.isLastPage()\"\n *ngIf=\"directionLinks\"\n >\n <a\n tabindex=\"0\"\n *ngIf=\"!paginationDirective.isLastPage()\"\n (keyup.enter)=\"paginationDirective.next()\"\n (click)=\"paginationDirective.next()\"\n [attr.aria-label]=\"nextLabel + ' ' + screenReaderPageLabel\"\n >\n {{ nextLabel }} <span class=\"show-for-sr\">{{ screenReaderPageLabel }}</span>\n </a>\n <span *ngIf=\"paginationDirective.isLastPage()\">\n {{ nextLabel }} <span class=\"show-for-sr\">{{ screenReaderPageLabel }}</span>\n </span>\n </li>\n </ul>\n </pagination-template>\n </div>\n <div\n class=\"ngx-pagination-range\"\n #paginationRange\n [class.ngx-table__table--dark-pagination-range]=\"config.tableLayout.theme === 'dark'\"\n *ngIf=\"config.paginationRangeEnabled\"\n >\n <div class=\"ngx-dropdown ngx-pagination-range-dropdown\" id=\"rowAmount\">\n <div class=\"ngx-btn-group\">\n <div class=\"ngx-pagination-range-dropdown-button\" (click)=\"showRange = !showRange\">\n {{selectedLimit}} <i class=\"ngx-icon ngx-icon-arrow-down\"></i>\n </div>\n <ul class=\"ngx-menu\" *ngIf=\"showRange\">\n <li\n class=\"ngx-pagination-range-dropdown-button-item\"\n [class.ngx-pagination-range--selected]=\"limit === selectedLimit\"\n (click)=\"changeLimit(limit, false)\"\n *ngFor=\"let limit of ranges\"\n >\n <span>{{limit}}</span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Columns } from '../..';\n\n@Component({\n selector: 'table-header',\n templateUrl: './header.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderComponent {\n @Input() column: Columns;\n @Output() readonly update = new EventEmitter<Array<{ key: string; value: string }>>();\n\n unifyKey(key: string): string {\n return key.replace('.', '_');\n }\n\n onSearch(input: HTMLInputElement): void {\n this.update.emit([{ value: input.value, key: this.column.key }]);\n }\n}\n","<label for=\"search_{{ unifyKey(column.key) }}\">\n <input\n type=\"text\"\n id=\"search_{{ unifyKey(column.key) }}\"\n aria-label=\"Search\"\n placeholder=\"{{ column.placeholder ? column.placeholder : column.title }}\"\n class=\"ngx-table__header-search\"\n #input\n (input)=\"onSearch(input)\"\n />\n</label>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { Columns, Config, Event } from '../..';\nimport { StyleService } from '../../services/style.service';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: '[table-thead]',\n templateUrl: './thead.component.html',\n styles: [\n `\n .cdk-drag-preview {\n text-align: left;\n padding-top: 9px;\n padding-left: 4px;\n color: #50596c;\n border: 1px solid #e7e9ed;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [StyleService],\n})\nexport class TableTHeadComponent {\n public menuActive = false;\n public openedHeaderActionTemplate: string | null = null;\n public startOffset;\n public onSelectAllBinded = this.onSelectAll.bind(this);\n\n @Input() config: Config;\n @Input() columns: Columns[];\n @Input() sortKey;\n @Input() sortState;\n @Input() selectAllTemplate;\n @Input() filtersTemplate;\n @Input() additionalActionsTemplate: TemplateRef<void>;\n @Output() readonly filter = new EventEmitter<Array<{ key: string; value: string }>>();\n @Output() readonly order = new EventEmitter<Columns>();\n @Output() readonly selectAll = new EventEmitter<void>();\n @Output() readonly event = new EventEmitter<{ event: string; value: any }>();\n @ViewChild('th') private th;\n @ViewChildren('headerDropdown') headerDropdown;\n @ViewChild('additionalActionMenu') additionalActionMenu;\n @HostListener('document:click', ['$event.target'])\n public onClick(targetElement: any): void {\n if (\n this.additionalActionMenu &&\n !this.additionalActionMenu.nativeElement.contains(targetElement)\n ) {\n this.menuActive = false;\n }\n\n // if click outside the header then close opened Header Action Template\n if (\n this.openedHeaderActionTemplate &&\n // if no header have the clicked point\n !this.headerDropdown.toArray().some((ref) => ref.nativeElement.contains(targetElement))\n ) {\n this.openedHeaderActionTemplate = null;\n }\n }\n\n constructor(public readonly styleService: StyleService) {}\n\n getColumnDefinition(column: Columns): boolean {\n return column.searchEnabled || typeof column.searchEnabled === 'undefined';\n }\n\n orderBy(column: Columns): void {\n this.order.emit(column);\n }\n\n isOrderEnabled(column: Columns): boolean {\n const columnOrderEnabled = column.orderEnabled === undefined ? true : !!column.orderEnabled;\n return this.config.orderEnabled && columnOrderEnabled;\n }\n\n columnDrop(event: CdkDragDrop<string[]>): void {\n moveItemInArray(this.columns, event.previousIndex, event.currentIndex);\n }\n\n onSearch($event: Array<{ key: string; value: string }>): void {\n this.filter.emit($event);\n }\n\n getColumnWidth(column: any): string | null {\n if (column.width) {\n return column.width;\n }\n return this.config.fixedColumnWidth ? 100 / this.columns.length + '%' : null;\n }\n\n onSelectAll(): void {\n this.selectAll.emit();\n }\n\n onMouseDown(event: MouseEvent, th: HTMLTableHeaderCellElement): void {\n if (!this.config.resizeColumn) {\n return;\n }\n this.th = th;\n this.startOffset = th.offsetWidth - event.pageX;\n this.event.emit({\n event: Event.onColumnResizeMouseDown,\n value: event,\n });\n }\n\n onMouseMove(event: MouseEvent): void {\n if (!this.config.resizeColumn) {\n return;\n }\n if (this.th && this.th.style) {\n this.th.style.width = this.startOffset + event.pageX + 'px';\n this.th.style.cursor = 'col-resize';\n this.th.style['user-select'] = 'none';\n }\n }\n\n onMouseUp(event: MouseEvent): void {\n if (!this.config.resizeColumn) {\n return;\n }\n this.event.emit({\n event: Event.onColumnResizeMouseUp,\n value: event,\n });\n this.th.style.cursor = 'default';\n this.th = undefined;\n }\n\n showHeaderActionTemplateMenu(column: Columns): void {\n if (!column.headerActionTemplate) {\n console.error('Column [headerActionTemplate] property not defined');\n }\n if (this.openedHeaderActionTemplate === column.key) {\n this.openedHeaderActionTemplate = null;\n return;\n }\n this.openedHeaderActionTemplate = column.key;\n }\n\n showMenu(): void {\n if (!this.additionalActionsTemplate) {\n console.error('[additionalActionsTemplate] property not defined');\n }\n this.menuActive = !this.menuActive;\n }\n}\n","<tr class=\"ngx-table__header\" *ngIf=\"config.headerEnabled && !config.columnReorder\">\n <th *ngIf=\"config.checkboxes || config.radio\" [style.width]=\"'3%'\">\n <ng-container\n *ngIf=\"selectAllTemplate && config.checkboxes\"\n [ngTemplateOutlet]=\"selectAllTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: onSelectAllBinded }\"\n >\n </ng-container>\n <label\n class=\"ngx-form-checkbox\"\n for=\"selectAllCheckboxes\"\n *ngIf=\"!selectAllTemplate && config.checkboxes\"\n >\n <input type=\"checkbox\" id=\"selectAllCheckboxes\" (change)=\"onSelectAll()\" />\n <em class=\"ngx-form-icon\" id=\"selectAllCheckbox\"></em>\n </label>\n </th>\n <ng-container *ngFor=\"let column of columns; let colIndex = index; let last = last\">\n <th\n class=\"ngx-table__header-cell\"\n [class.pinned-left]=\"column.pinned\"\n [ngClass]=\"column.cssClass && column.cssClass.includeHeader ? column.cssClass.name : ''\"\n [style.left]=\"styleService.pinnedWidth(column.pinned, colIndex)\"\n #th\n [style.width]=\"getColumnWidth(column)\"\n (mousedown)=\"onMouseDown($event, th)\"\n (mouseup)=\"onMouseUp($event)\"\n (mousemove)=\"onMouseMove($event)\"\n >\n <div\n (click)=\"orderBy(column)\"\n style=\"display: inline\"\n [class.pointer]=\"isOrderEnabled(column)\"\n >\n <div class=\"ngx-table__header-title\">\n {{ column.title }}<span>&nbsp;</span>\n <em class=\"ngx-icon ngx-icon-pin\" *ngIf=\"column.pinned\"></em>\n <div [style.display]=\"config.orderEnabled ? 'inline' : 'none'\">\n <em\n *ngIf=\"sortKey === column.key && this.sortState.get(sortKey) === 'asc'\"\n class=\"ngx-icon ngx-icon-arrow-up\"\n >\n </em>\n <em\n *ngIf=\"sortKey === column.key && this.sortState.get(sortKey) === 'desc'\"\n class=\"ngx-icon ngx-icon-arrow-down\"\n >\n </em>\n </div>\n </div>\n </div>\n <div class=\"ngx-dropdown\" *ngIf=\"!!column.headerActionTemplate\" #headerDropdown>\n <a class=\"ngx-btn ngx-btn-link\" (click)=\"showHeaderActionTemplateMenu(column)\">\n <span class=\"ngx-icon ngx-icon-more\"></span>\n </a>\n <div\n class=\"ngx-menu ngx-table__table-menu\"\n *ngIf=\"column.key === openedHeaderActionTemplate\"\n >\n <ng-container [ngTemplateOutlet]=\"column.headerActionTemplate\"> </ng-container>\n </div>\n </div>\n <div class=\"ngx-table__column-resizer\" *ngIf=\"config.resizeColumn && !last\"></div>\n </th>\n </ng-container>\n <th\n *ngIf=\"\n config.additionalActions ||\n config.detailsTemplate ||\n config.collapseAllRows ||\n config.groupRows\n \"\n class=\"ngx-table__header-cell-additional-actions\"\n >\n <div class=\"ngx-dropdown\" #additionalActionMenu *ngIf=\"config.additionalActions\">\n <a class=\"ngx-btn ngx-btn-link\" (click)=\"showMenu()\">\n <span class=\"ngx-icon ngx-icon-menu\"></span>\n </a>\n <ul class=\"ngx-menu ngx-table__table-menu\" *ngIf=\"menuActive\">\n <ng-container\n *ngIf=\"additionalActionsTemplate\"\n [ngTemplateOutlet]=\"additionalActionsTemplate\"\n >\n </ng-container>\n </ul>\n </div>\n </th>\n</tr>\n<tr\n class=\"ngx-table__header ngx-table__header--draggable\"\n *ngIf=\"config.headerEnabled && config.columnReorder\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"columnDrop($event)\"\n>\n <th *ngIf=\"config.checkboxes || config.radio\" [style.width]=\"'3%'\">\n <ng-container\n *ngIf=\"selectAllTemplate && config.checkboxes\"\n [ngTemplateOutlet]=\"selectAllTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: onSelectAllBinded }\"\n >\n </ng-container>\n <label\n class=\"ngx-form-checkbox\"\n for=\"selectAllCheckboxes\"\n *ngIf=\"!selectAllTemplate && config.checkboxes\"\n >\n <input type=\"checkbox\" id=\"selectAllCheckboxesDrag\" (change)=\"onSelectAll()\" />\n <em class=\"ngx-form-icon\" id=\"selectAllCheckboxDrag\"></em>\n </label>\n </th>\n <ng-container *ngFor=\"let column of columns; let colIndex = index; let last = last\">\n <th\n class=\"ngx-table__header-cell ngx-table__header-cell--draggable\"\n cdkDragLockAxis=\"x\"\n cdkDrag\n [cdkDragStartDelay]=\"config.reorderDelay || 0\"\n [class.pinned-left]=\"column.pinned\"\n [ngClass]=\"column.cssClass && column.cssClass.includeHeader ? column.cssClass.name : ''\"\n [style.left]=\"styleService.pinnedWidth(column.pinned, colIndex)\"\n #th\n [style.width]=\"getColumnWidth(column)\"\n (mousedown)=\"onMouseDown($event, th)\"\n (mouseup)=\"onMouseUp($event)\"\n (mousemove)=\"onMouseMove($event)\"\n >\n <div\n (click)=\"orderBy(column)\"\n style=\"display: inline\"\n cdkDragHandle\n [class.pointer]=\"isOrderEnabled(column)\"\n >\n <div class=\"ngx-table__header-title\">\n {{ column.title }}<span>&nbsp;</span>\n <em class=\"ngx-icon ngx-icon-pin\" *ngIf=\"column.pinned\"></em>\n <div [style.display]=\"config.orderEnabled ? 'inline' : 'none'\">\n <em\n *ngIf=\"sortKey === column.key && this.sortState.get(sortKey) === 'asc'\"\n class=\"ngx-icon ngx-icon-arrow-up\"\n >\n </em>\n <em\n *ngIf=\"sortKey === column.key && this.sortState.get(sortKey) === 'desc'\"\n class=\"ngx-icon ngx-icon-arrow-down\"\n >\n </em>\n </div>\n </div>\n </div>\n <div class=\"ngx-dropdown\" *ngIf=\"!!column.headerActionTemplate\" #headerDropdown>\n <a class=\"ngx-btn ngx-btn-link\" (click)=\"showHeaderActionTemplateMenu(column)\">\n <span class=\"ngx-icon ngx-icon-more\"></span>\n </a>\n <div\n class=\"ngx-menu ngx-table__table-menu\"\n *ngIf=\"column.key === openedHeaderActionTemplate\"\n >\n <ng-container [ngTemplateOutlet]=\"column.headerActionTemplate\"> </ng-container>\n </div>\n </div>\n <div class=\"ngx-table__column-resizer\" *ngIf=\"config.resizeColumn && !last\"></div>\n </th>\n </ng-container>\n <th\n *ngIf=\"\n config.additionalActions ||\n config.detailsTemplate ||\n config.collapseAllRows ||\n config.groupRows\n \"\n class=\"ngx-table__header-cell-additional-actions\"\n >\n <div class=\"ngx-dropdown\" #additionalActionMenu *ngIf=\"config.additionalActions\">\n <a class=\"ngx-btn ngx-btn-link\" (click)=\"showMenu()\">\n <span class=\"ngx-icon ngx-icon-menu\"></span>\n </a>\n <ul class=\"ngx-menu ngx-table__table-menu\" *ngIf=\"menuActive\">\n <ng-container\n *ngIf=\"additionalActionsTemplate\"\n [ngTemplateOutlet]=\"additionalActionsTemplate\"\n >\n </ng-container>\n </ul>\n </div>\n </th>\n</tr>\n<tr *ngIf=\"config.searchEnabled && !filtersTemplate\" class=\"ngx-table__sort-header\">\n <th *ngIf=\"config.checkboxes || config.radio\"></th>\n <ng-container *ngFor=\"let column of columns; let colIndex = index\">\n <th\n [ngClass]=\"column.cssClass && column.cssClass.includeHeader ? column.cssClass.name : ''\"\n [class.pinned-left]=\"column.pinned\"\n [style.left]=\"styleService.pinnedWidth(column.pinned, colIndex)\"\n >\n <table-header\n *ngIf=\"getColumnDefinition(column)\"\n (update)=\"onSearch($event)\"\n [column]=\"column\"\n >\n </table-header>\n </th>\n </ng-container>\n <th *ngIf=\"config.additionalActions || config.detailsTemplate\"></th>\n</tr>\n<ng-container *ngIf=\"filtersTemplate\">\n <tr>\n <ng-container [ngTemplateOutlet]=\"filtersTemplate\"> </ng-container>\n </tr>\n</ng-container>\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class FiltersService {\n static getPath(p: string[], o: any): any {\n // https://github.com/dherges/ng-packagr/issues/696\n /* eslint-disable-next-line */\n const result = p.reduce((xs, x) => (xs && typeof xs[x] !== 'undefined' ? xs[x] : null), o);\n return result;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FiltersService } from '../services/filters.service';\nimport { Config } from '..';\nimport { Subject } from 'rxjs';\n\n@Pipe({\n name: 'search',\n})\nexport class SearchPipe implements PipeTransform {\n private filters: { [key: string]: string } = {};\n\n transform(\n array: any[],\n filter: Array<{ value: string; key: string }>,\n filteredCountSubject: Subject<number>,\n config?: Config\n ): any {\n filteredCountSubject.next(0);\n if (typeof array === 'undefined') {\n return;\n }\n if (typeof filter === 'undefined') {\n filteredCountSubject.next(array.length);\n return array;\n }\n filter.forEach((f) => {\n this.filters[f.key] = f.value.toString().toLocaleLowerCase();\n if (Object.keys(f).length === 0 || f.value === '') {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.filters[f.key];\n }\n });\n if (config && config.groupRows) {\n return array.map((arr) => this.filterGroup(arr, filteredCountSubject));\n }\n return this.filterGroup(array, filteredCountSubject);\n }\n\n private filterGroup(array: any[], filteredCountSubject: Subject<number>): any[] {\n const arr = array.filter((obj) => {\n return Object.keys(this.filters).every((c) => {\n const split = c.split('.');\n const val = FiltersService.getPath(split, obj);\n const element =\n typeof val === 'object' ? JSON.stringify(val) : val.toString().toLocaleLowerCase();\n const strings = this.filters[c].split(',');\n return strings.some((s) => element.indexOf(s.trim()) > -1);\n });\n });\n filteredCountSubject.next(arr.length);\n return arr;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FiltersService } from '../services/filters.service';\n\n@Pipe({\n name: 'render',\n})\nexport class RenderPipe implements PipeTransform {\n transform(row: any, key: string): string {\n const split = key.split('.');\n\n return FiltersService.getPath(split, row);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Pipe({\n name: 'global',\n})\nexport class GlobalSearchPipe implements PipeTransform {\n transform(array: any[], filter: string, filteredCountSubject: Subject<number>): any {\n filteredCountSubject.next(0);\n if (typeof array === 'undefined') {\n return;\n }\n if (typeof filter === 'undefined' || Object.keys(filter).length === 0 || filter === '') {\n filteredCountSubject.next(array.length);\n return array;\n }\n const arr = array.filter((row) => {\n const element = JSON.stringify(Object.values(row));\n const strings = filter.split(',');\n return strings.some(\n (s) => element.toLocaleLowerCase().indexOf(s.trim().toLocaleLowerCase()) > -1\n );\n });\n filteredCountSubject.next(arr.length);\n\n return arr;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FiltersService } from '../services/filters.service';\nimport { Config } from '..';\n\n@Pipe({\n name: 'sort',\n})\nexport class SortPipe implements PipeTransform {\n private defaultArray: any[] = [];\n\n private static isNaN(aV: any, bV: any): boolean {\n return isNaN(parseFloat(aV)) || !isFinite(aV) || isNaN(parseFloat(bV)) || !isFinite(bV);\n }\n\n private static compare(a: any[], b: any[], key: string): number {\n const split = key.split('.');\n const aPath = FiltersService.getPath(split, a);\n const bPath = FiltersService.getPath(split, b);\n const aValue = (aPath + '').toLowerCase();\n const bValue = (bPath + '').toLowerCase();\n if (SortPipe.isNaN(aPath, bPath)) {\n return aValue.localeCompare(bValue);\n }\n if (parseFloat(aPath) < parseFloat(bPath)) {\n return -1;\n }\n if (parseFloat(aPath) > parseFloat(bPath)) {\n return 1;\n }\n\n return 0;\n }\n\n transform(array: any[], filter: { order: string; key: string }, config?: Config): any[] {\n if (this.defaultArray.length === 0) {\n this.defaultArray = array;\n }\n if (!filter.key || filter.key === '') {\n return array;\n }\n if (filter.order === '') {\n return this.defaultArray;\n }\n if (filter.order === 'asc') {\n return this.sortAsc(array, filter, config);\n }\n return this.sortDesc(array, filter, config);\n }\n\n private sortAsc(array: any[], filter: { order: string; key: string }, config?: Config): any[] {\n if (config && config.groupRows) {\n return array.map((arr) => arr.sort((a, b) => SortPipe.compare(a, b, filter.key)));\n }\n return array.sort((a, b) => SortPipe.compare(a, b, filter.key));\n }\n\n private sortDesc(array: any[], filter: { order: string; key: string }, config?: Config): any[] {\n if (config && config.groupRows) {\n return array.map((arr) => arr.sort((a, b) => SortPipe.compare(b, a, filter.key)));\n }\n return array.sort((a, b) => SortPipe.compare(b, a, filter.key));\n }\n}\n","import { CdkDragDrop, CdkDragStart, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChange,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\n\nimport { API, ApiType, Columns, Config, Event, Pagination } from '../..';\nimport { DefaultConfigService } from '../../services/config-service';\nimport { PaginationComponent, PaginationRange } from '../pagination/pagination.component';\nimport { GroupRowsService } from '../../services/group-rows.service';\nimport { StyleService } from '../../services/style.service';\nimport { Subject } from 'rxjs';\nimport { CdkVirtualScrollViewport, ScrollDispatcher } from '@angular/cdk/scrolling';\nimport { filter, takeUntil, throttleTime } from 'rxjs/operators';\n\ntype ColumnKeyType = string | number | boolean;\n\ninterface RowContextMenuPosition {\n top: string | null;\n left: string | null;\n value: any | null;\n}\n\n@Component({\n selector: 'ngx-table',\n providers: [DefaultConfigService, GroupRowsService, StyleService],\n templateUrl: './base.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BaseComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n private unsubscribe = new Subject<void>();\n public selectedRow: number;\n public selectedCol: number;\n public term: any;\n public filterCount = -1;\n public filteredCountSubject = new Subject<number>();\n public tableClass: string | null = null;\n public globalSearchTerm: string;\n public grouped: any = [];\n public isSelected = false;\n public page = 1;\n public count = 0;\n public sortState = new Map();\n public sortKey: string | null = null;\n public rowContextMenuPosition: RowContextMenuPosition = {\n top: null,\n left: null,\n value: null,\n };\n public limit;\n public sortBy: { key: string } & { order: string } = {\n key: '',\n order: 'asc',\n };\n public selectedDetailsTemplateRowId = new Set<number>();\n public selectedCheckboxes = new Set<number>();\n public config: Config;\n\n @Input() configuration: Config;\n @Input() data: any[];\n @Input() pagination: Pagination;\n @Input() groupRowsBy: string;\n @Input() id = 'table';\n @Input() toggleRowIndex;\n @Input() detailsTemplate: TemplateRef<any>;\n @Input() summaryTemplate: TemplateRef<{ total: number; limit: number; page: number }>;\n @Input() groupRowsHeaderTemplate: TemplateRef<any>;\n @Input() filtersTemplate: TemplateRef<any>;\n @Input() selectAllTemplate: TemplateRef<any>;\n @Input() noResultsTemplate: TemplateRef<void>;\n @Input() loadingTemplate: TemplateRef<void>;\n @Input() additionalActionsTemplate: TemplateRef<void>;\n @Input() rowContextMenu: TemplateRef<any>;\n @Input() columns: Columns[];\n @Output() readonly event = new EventEmitter<{ event: string; value: any }>();\n @ContentChild(TemplateRef) public rowTemplate: TemplateRef<any>;\n @ViewChild('paginationComponent') private paginationComponent: PaginationComponent;\n @ViewChild('contextMenu') contextMenu;\n @ViewChild('table') table;\n @ViewChild(CdkVirtualScrollViewport) viewPort: CdkVirtualScrollViewport;\n\n @HostListener('document:click', ['$event.target'])\n public onContextMenuClick(targetElement: any): void {\n if (this.contextMenu && !this.contextMenu.nativeElement.contains(targetElement)) {\n this.rowContextMenuPosition = {\n top: null,\n left: null,\n value: null,\n };\n }\n }\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly scrollDispatcher: ScrollDispatcher,\n public readonly styleService: StyleService\n ) {\n this.filteredCountSubject.pipe(takeUntil(this.unsubscribe)).subscribe((count) => {\n setTimeout(() => {\n this.filterCount = count;\n this.cdr.detectChanges();\n });\n });\n }\n\n ngOnInit(): void {\n if (!this.columns) {\n console.error('[columns] property required!');\n }\n if (this.configuration) {\n this.config = this.configuration;\n } else {\n this.config = DefaultConfigService.config;\n }\n this.limit = this.config.rows;\n if (this.groupRowsBy) {\n this.grouped = GroupRowsService.doGroupRows(this.data, this.groupRowsBy);\n }\n this.doDecodePersistedState();\n }\n\n ngOnDestroy(): void {\n this.unsubscribe.next();\n this.unsubscribe.complete();\n }\n\n ngAfterViewInit(): void {\n const throttleValue = this.config.infiniteScrollThrottleTime\n ? this.config.infiniteScrollThrottleTime\n : 200;\n this.scrollDispatcher\n .scrolled()\n .pipe(\n throttleTime(throttleValue),\n filter((event) => {\n return (\n !!event &&\n this.viewPort &&\n this.viewPort.getRenderedRange().end === this.viewPort.getDataLength()\n );\n }),\n takeUntil(this.unsubscribe)\n )\n .subscribe(() => {\n this.emitEvent(Event.onInfiniteScrollEnd, null);\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { configuration, data, pagination, groupRowsBy } = changes;\n this.toggleRowIndex = changes.toggleRowIndex;\n if (configuration && configuration.currentValue) {\n this.config = configuration.currentValue;\n }\n if (data && data.currentValue) {\n this.doApplyData(data);\n }\n if (pagination && pagination.currentValue) {\n const { count, limit, offset } = pagination.currentValue as Pagination;\n this.count = count;\n this.limit = limit;\n this.page = offset;\n }\n if (groupRowsBy && groupRowsBy.currentValue) {\n this.grouped = GroupRowsService.doGroupRows(this.data, this.groupRowsBy);\n }\n if (this.toggleRowIndex && this.toggleRowIndex.currentValue) {\n const row = this.toggleRowIndex.currentValue;\n this.collapseRow(row.index);\n }\n }\n\n orderBy(column: Columns): void {\n if (typeof column.orderEnabled !== 'undefined' && !column.orderEnabled) {\n return;\n }\n this.sortKey = column.key;\n if (!this.config.orderEnabled || this.sortKey === '') {\n return;\n }\n\n this.setColumnOrder(column);\n if (!this.config.orderEventOnly && !column.orderEventOnly) {\n this.sortBy.key = this.sortKey;\n this.sortBy.order = this.sortState.get(this.sortKey);\n } else {\n this.sortBy.key = '';\n this.sortBy.order = '';\n }\n if (!this.config.serverPagination) {\n this.data = [...this.data];\n this.sortBy = { ...this.sortBy };\n }\n\n const value = {\n key: this.sortKey,\n order: this.sortState.get(this.sortKey),\n };\n this.emitEvent(Event.onOrder, value);\n }\n\n onClick($event: MouseEvent, row: any, key: ColumnKeyType, colIndex: any, rowIndex: number): void {\n if (this.config.selectRow) {\n this.selectedRow = rowIndex;\n }\n if (this.config.selectCol && `${colIndex}`) {\n this.selectedCol = colIndex;\n }\n if (this.config.selectCell && `${colIndex}`) {\n this.selectedRow = rowIndex;\n this.selectedCol = colIndex;\n }\n\n if (this.config.clickEvent) {\n const value = {\n event: $event,\n row,\n key,\n rowId: rowIndex,\n colId: colIndex,\n };\n this.emitEvent(Event.onClick, value);\n }\n }\n\n onDoubleClick(\n $event: MouseEvent,\n row: any,\n key: ColumnKeyType,\n colIndex: any,\n rowIndex: number\n ): void {\n const value = {\n event: $event,\n row,\n key,\n rowId: rowIndex,\n colId: colIndex,\n };\n this.emitEvent(Event.onDoubleClick, value);\n }\n\n onCheckboxSelect($event: any, row: any, rowIndex: number): void {\n const value = {\n event: $event,\n row,\n rowId: rowIndex,\n };\n this.emitEvent(Event.onCheckboxSelect, value);\n }\n\n onRadioSelect($event: any, row: any, rowIndex: number): void {\n const value = {\n event: $event,\n row,\n rowId: rowIndex,\n };\n this.emitEvent(Event.onRadioSelect, value);\n }\n\n onSelectAll(): void {\n this.isSelected = !this.isSelected;\n this.emitEvent(Event.onSelectAll, this.isSelected);\n }\n\n onSearch($event: Array<{ key: string; value: string }>): void {\n if (!this.config.serverPagination) {\n this.term = $event;\n }\n this.emitEvent(Event.onSearch, $event);\n }\n\n onGlobalSearch(value: string): void {\n if (!this.config.serverPagination) {\n this.globalSearchTerm = value;\n }\n this.emitEvent(Event.onGlobalSearch, value);\n }\n\n onPagination(pagination: PaginationRange): void {\n this.page = pagination.page;\n this.limit = pagination.limit;\n this.emitEvent(Event.onPagination, pagination);\n }\n\n toggleCheckbox(rowIndex: number): void {\n /* eslint-disable @typescript-eslint/no-unused-expressions */\n this.selectedCheckboxes.has(rowIndex)\n ? this.selectedCheckboxes.delete(rowIndex)\n : this.selectedCheckboxes.add(rowIndex);\n }\n\n collapseRow(rowIndex: number): void {\n if (this.selectedDetailsTemplateRowId.has(rowIndex)) {\n this.selectedDetailsTemplateRowId.delete(rowIndex);\n this.emitEvent(Event.onRowCollapsedHide, rowIndex);\n } else {\n this.selectedDetailsTemplateRowId.add(rowIndex);\n this.emitEvent(Event.onRowCollapsedShow, rowIndex);\n }\n }\n\n private doDecodePersistedState(): void {\n if (!this.config.persistState) {\n return;\n }\n const pagination = localStorage.getItem(Event.onPagination);\n const sort = localStorage.getItem(Event.onOrder);\n const search = localStorage.getItem(Event.onSearch);\n if (pagination) {\n this.onPagination(JSON.parse(pagination));\n }\n if (sort) {\n const { key, order } = JSON.parse(sort);\n this.bindApi({\n type: API.sortBy,\n value: { column: key, order },\n });\n }\n if (search) {\n this.bindApi({\n type: API.setInputValue,\n value: JSON.parse(search),\n });\n }\n }\n\n isRowCollapsed(rowIndex: number): boolean {\n if (this.config.collapseAllRows) {\n return true;\n }\n return this.selectedDetailsTemplateRowId.has(rowIndex);\n }\n\n get loadingHeight(): number {\n const table = document.getElementById(this.id) as HTMLTableElement;\n if (table && table.rows && table.rows.length > 3) {\n const searchEnabled = this.config.searchEnabled ? 1 : 0;\n const headerEnabled = this.config.headerEnabled ? 1 : 0;\n const borderTrHeight = 1;\n const borderDivHeight = 2;\n return (\n (table.rows.length - searchEnabled - headerEnabled) *\n (table.rows[3].offsetHeight - borderTrHeight) -\n borderDivHeight\n );\n }\n\n return 30;\n }\n\n get arrowDefinition(): boolean {\n return this.config.showDetailsArrow || typeof this.config.showDetailsArrow === 'undefined';\n }\n\n onRowContextMenu(\n $event: MouseEvent,\n row: any,\n key: ColumnKeyType,\n colIndex: any,\n rowIndex: number\n ): void {\n if (!this.config.showContextMenu) {\n return;\n }\n $event.preventDefault();\n const value = {\n event: $event,\n row,\n key,\n rowId: rowIndex,\n colId: colIndex,\n };\n this.rowContextMenuPosition = {\n top: `${$event.pageY - 10}px`,\n left: `${$event.pageX - 10}px`,\n value,\n };\n\n this.emitEvent(Event.onRowContextMenu, value);\n }\n\n private doApplyData(data: SimpleChange): void {\n const order = this.columns.find((c) => !!c.orderBy);\n if (order) {\n this.sortState.set(this.sortKey, order.orderBy === 'asc' ? 'desc' : 'asc');\n this.orderBy(order);\n } else {\n this.data = [...data.currentValue];\n }\n }\n\n onDragStart(event: CdkDragStart): void {\n this.emitEvent(Event.onReorderStart, event);\n }\n\n onDrop(event: CdkDragDrop<string[]>): void {\n this.emitEvent(Event.onRowDrop, event);\n moveItemInArray(this.data, event.previousIndex, event.currentIndex);\n }\n\n // DO NOT REMOVE. It is called from parent component. See src/app/demo/api-doc/api-doc.component.ts\n apiEvent(event: ApiType): void | number {\n return this.bindApi(event);\n }\n\n /* eslint-disable */\n private bindApi(event: ApiType): void | number {\n switch (event.type) {\n case API.rowContextMenuClicked:\n this.rowContextMenuPosition = {\n top: null,\n left: null,\n value: null,\n };\n break;\n case API.toggleRowIndex:\n this.collapseRow(event.value);\n break;\n case API.toggleCheckbox:\n this.toggleCheckbox(event.value);\n break;\n case API.setInputValue:\n if (this.config.searchEnabled) {\n event.value.forEach((input) => {\n const element = document.getElementById(`search_${input.key}`) as HTMLInputElement;\n if (!element) {\n console.error(\n `Column '${input.key}' not available in the DOM. Have you misspelled a name?`\n );\n } else {\n element.value = input.value;\n }\n });\n }\n this.onSearch(event.value);\n this.cdr.detectChanges();\n break;\n case API.onGlobalSearch:\n this.onGlobalSearch(event.value);\n this.cdr.detectChanges();\n break;\n case API.setRowClass:\n if (Array.isArray(event.value)) {\n event.value.forEach((val) => this.styleService.setRowClass(val));\n break;\n }\n this.styleService.setRowClass(event.value);\n this.cdr.detectChanges();\n break;\n case API.setCellClass:\n if (Array.isArray(event.value)) {\n event.value.forEach((val) => this.styleService.setCellClass(val));\n break;\n }\n this.styleService.setCellClass(event.value);\n break;\n case API.setRowStyle:\n if (Array.isArray(event.value)) {\n event.value.forEach((val) => this.styleService.setRowStyle(val));\n break;\n }\n this.styleService.setRowStyle(event.value);\n break;\n case API.setCellStyle:\n if (Array.isArray(event.value)) {\n event.value.forEach((val) => this.styleService.setCellStyle(val));\n break;\n }\n this.styleService.setCellStyle(event.value);\n break;\n case API.setTableClass:\n this.tableClass = event.value;\n this.cdr.detectChanges();\n break;\n case API.getPaginationTotalItems:\n return this.paginationComponent.paginationDirective.getTotalItems();\n case API.getPaginationCurrentPage:\n return this.paginationComponent.paginationDirective.getCurrent();\n case API.getPaginationLastPage:\n return this.paginationComponent.paginationDirective.getLastPage();\n case API.getNumberOfRowsPerPage:\n return this.paginationComponent.paginationDirective.isLastPage()\n ? this.paginationComponent.paginationDirective.getTotalItems() % this.limit\n : this.limit;\n case API.setPaginationCurrentPage:\n this.paginationComponent.paginationDirective.setCurrent(event.value);\n break;\n case API.setPaginationRange:\n this.paginationComponent.ranges = event.value;\n break;\n case API.setPaginationPreviousLabel:\n this.paginationComponent.previousLabel = event.value;\n break;\n case API.setPaginationNextLabel:\n this.paginationComponent.nextLabel = event.value;\n break;\n case API.setPaginationDisplayLimit:\n this.paginationComponent.changeLimit(event.value, true);\n break;\n case API.sortBy:\n const column: Columns = { title: '', key: event.value.column, orderBy: event.value.order };\n this.orderBy(column);\n this.cdr.detectChanges();\n break;\n default:\n break;\n }\n }\n\n private setColumnOrder(column: Columns): void {\n const key: string = column.key;\n\n switch (this.sortState.get(key)) {\n case '':\n case undefined:\n this.sortState.set(key, column.orderBy || 'desc');\n break;\n case 'asc':\n this.config.threeWaySort ? this.sortState.set(key, '') : this.sortState.set(key, 'desc');\n break;\n case 'desc':\n this.sortState.set(key, 'asc');\n break;\n }\n if (this.sortState.size > 1) {\n const temp = this.sortState.get(key);\n this.sortState.clear();\n this.sortState.set(key, temp);\n }\n }\n\n public emitEvent(event: string, value: any): void {\n this.event.emit({ event, value });\n if (this.config.persistState) {\n localStorage.setItem(event, JSON.stringify(value));\n }\n if (this.config.logger) {\n // eslint-disable-next-line no-console\n console.log({ event, value });\n }\n }\n\n dragEnter($event: DragEvent): void {\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n dragOver($event: DragEvent): void {\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n dragLeave($event: DragEvent): void {\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n drop($event: DragEvent): void {\n $event.preventDefault();\n $event.stopPropagation();\n const file = $event.dataTransfer?.files?.[0];\n if (file?.type !== 'application/json') {\n // eslint-disable-next-line no-console\n console.log('File not allowed');\n return;\n }\n const fileReader = new FileReader();\n fileReader.onload = (event) => {\n this.data = JSON.parse(event?.target?.result as string);\n this.cdr.markForCheck();\n };\n fileReader.readAsText(file);\n }\n}\n","<div\n class=\"ngx-container\"\n [class.ngx-container--dark]=\"config.tableLayout.theme === 'dark'\"\n (dragenter)=\"dragEnter($event)\"\n (dragover)=\"dragOver($event)\"\n (dragleave)=\"dragLeave($event)\"\n (drop)=\"drop($event)\"\n>\n <table\n [id]=\"id\"\n #table\n [ngClass]=\"tableClass === null || tableClass === '' ? 'ngx-table' : tableClass\"\n [class.ngx-table__table--tiny]=\"config.tableLayout.style === 'tiny'\"\n [class.ngx-table__table--normal]=\"config.tableLayout.style === 'normal'\"\n [class.ngx-table__table--big]=\"config.tableLayout.style === 'big'\"\n [class.ngx-table__table--borderless]=\"config.tableLayout.borderless\"\n [class.ngx-table__table--dark]=\"config.tableLayout.theme === 'dark'\"\n [class.ngx-table__table--hoverable]=\"config.tableLayout.hover\"\n [class.ngx-table__table--striped]=\"config.tableLayout.striped\"\n [class.ngx-table__horizontal-scroll]=\"config.horizontalScroll && !config.isLoading\"\n >\n <thead\n [class.ngx-infinite-scroll-viewport-thead]=\"config.infiniteScroll\"\n table-thead\n [config]=\"config\"\n [sortKey]=\"sortKey\"\n [sortState]=\"sortState\"\n [selectAllTemplate]=\"selectAllTemplate\"\n [filtersTemplate]=\"filtersTemplate\"\n [additionalActionsTemplate]=\"additionalActionsTemplate\"\n [columns]=\"columns\"\n (selectAll)=\"onSelectAll()\"\n (filter)=\"onSearch($event)\"\n (order)=\"orderBy($event)\"\n (event)=\"emitEvent($event.event, $event.value)\"\n ></thead>\n <tbody *ngIf=\"data && !config.isLoading && !config.rowReorder\">\n <ng-container *ngIf=\"rowTemplate\">\n <ul\n class=\"ngx-table__table-row-context-menu\"\n [ngStyle]=\"{\n position: 'absolute',\n top: rowContextMenuPosition.top,\n left: rowContextMenuPosition.left\n }\"\n *ngIf=\"rowContextMenuPosition.top\"\n >\n <ng-container\n [ngTemplateOutlet]=\"rowContextMenu\"\n [ngTemplateOutletContext]=\"{ $implicit: rowContextMenuPosition.value }\"\n >\n </ng-container>\n </ul>\n <ng-container *ngIf=\"!config.infiniteScroll\">\n <ng-container\n *ngFor=\"\n let row of data\n | sort: sortBy\n | search: term:filteredCountSubject\n | global: globalSearchTerm:filteredCountSubject\n | paginate: { itemsPerPage: limit, currentPage: page, totalItems: count, id: id }\n \"\n >\n <tr\n (click)=\"onClick($event, row, '', null, data.indexOf(row))\"\n #contextMenu\n (contextmenu)=\"onRowContextMenu($event, row, '', null, data.indexOf(row))\"\n (dblclick)=\"onDoubleClick($event, row, '', null, data.indexOf(row))\"\n [class.ngx-table__table-row--selected]=\"\n data.indexOf(row) === selectedRow && !config.selectCell\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"rowTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: data.indexOf(row) }\"\n >\n </ng-container>\n <td *ngIf=\"config.detailsTemplate\">\n <span\n class=\"ngx-icon\"\n *ngIf=\"arrowDefinition\"\n [ngClass]=\"\n isRowCollapsed(data.indexOf(row))\n ? 'ngx-icon-arrow-down'\n : 'ngx-icon-arrow-right'\n \"\n (click)=\"collapseRow(data.indexOf(row))\"\n >\n </span>\n </td>\n </tr>\n <tr\n *ngIf=\"\n (config.detailsTemplate && selectedDetailsTemplateRowId.has(data.indexOf(row))) ||\n config.collapseAllRows\n \"\n >\n <td [attr.colspan]=\"columns.length + 1\">\n <ng-container\n [ngTemplateOutlet]=\"detailsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: data.indexOf(row) }\"\n >\n </ng-container>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n <cdk-virtual-scroll-viewport\n itemSize=\"50\"\n *ngIf=\"config.infiniteScroll\"\n class=\"ngx-infinite-scroll-viewport\"\n >\n <ng-container\n *cdkVirtualFor=\"\n let row of data\n | sort: sortBy\n | search: term:filteredCountSubject\n | global: globalSearchTerm:filteredCountSubject;\n let rowIndex = index\n \"\n >\n <tr\n (click)=\"onClick($event, row, '', null, rowIndex)\"\n #contextMenu\n (contextmenu)=\"onRowContextMenu($event, row, '', null, rowIndex)\"\n (dblclick)=\"onDoubleClick($event, row, '', null, rowIndex)\"\n [class.ngx-table__table-row--selected]=\"\n rowIndex === selectedRow && !config.selectCell\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"rowTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: rowIndex }\"\n >\n </ng-container>\n <td *ngIf=\"config.detailsTemplate\">\n <span\n class=\"ngx-icon\"\n *ngIf=\"arrowDefinition\"\n [ngClass]=\"\n isRowCollapsed(rowIndex) ? 'ngx-icon-arrow-down' : 'ngx-icon-arrow-right'\n \"\n (click)=\"collapseRow(rowIndex)\"\n >\n </span>\n </td>\n </tr>\n <tr\n *ngIf=\"\n (config.detailsTemplate && selectedDetailsTemplateRowId.has(rowIndex)) ||\n config.collapseAllRows\n \"\n >\n <td [attr.colspan]=\"columns.length + 1\">\n <ng-container\n [ngTemplateOutlet]=\"detailsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: rowIndex }\"\n >\n </ng-container>\n </td>\n </tr>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n <ng-container *ngIf=\"!rowTemplate && !config.groupRows\">\n <ul\n class=\"ngx-table__table-row-context-menu\"\n [ngStyle]=\"{\n position: 'absolute',\n top: rowContextMenuPosition.top,\n left: rowContextMenuPosition.left\n }\"\n *ngIf=\"rowContextMenuPosition.top\"\n >\n <ng-container\n [ngTemplateOutlet]=\"rowContextMenu\"\n [ngTemplateOutletContext]=\"{ $implicit: rowContextMenuPosition.value }\"\n >\n </ng-container>\n </ul>\n <ng-container *ngIf=\"!config.infiniteScroll\">\n <ng-container\n *ngFor=\"\n let row of data\n | sort: sortBy\n | search: term:filteredCountSubject\n | global: globalSearchTerm:filteredCountSubject\n | paginate: { itemsPerPage: limit, currentPage: page, totalItems: count, id: id }\n \"\n >\n <tr\n [class.ngx-table__table-row--selected]=\"\n data.indexOf(row) === selectedRow && !config.selectCell\n \"\n >\n <td *ngIf=\"config.checkboxes\">\n <label class=\"ngx-form-checkbox\">\n <input\n type=\"checkbox\"\n id=\"checkbox-{{ data.indexOf(row) }}\"\n [checked]=\"isSelected || selectedCheckboxes.has(data.indexOf(row))\"\n (change)=\"onCheckboxSelect($event, row, data.indexOf(row))\"\n />\n <em class=\"ngx-form-icon\"></em>\n </label>\n </td>\n <td *ngIf=\"config.radio\">\n <label>\n <input\n type=\"radio\"\n id=\"radio-{{ data.indexOf(row) }}\"\n name=\"radio\"\n (change)=\"onRadioSelect($event, row, data.indexOf(row))\"\n />\n </label>\n </td>\n <ng-container *ngFor=\"let column of columns; let colIndex = index\">\n <td\n (click)=\"onClick($event, row, column.key, colIndex, data.indexOf(row))\"\n #contextMenu\n (contextmenu)=\"\n onRowContextMenu($event, row, column.key, colIndex, data.indexOf(row))\n \"\n (dblclick)=\"onDoubleClick($event, row, column.key, colIndex, data.indexOf(row))\"\n [class.pinned-left]=\"column.pinned\"\n [ngClass]=\"column.cssClass ? column.cssClass.name : ''\"\n [style.left]=\"styleService.pinnedWidth(column.pinned, colIndex)\"\n [class.ngx-table__table-col--selected]=\"\n colIndex === selectedCol && !config.selectCell\n \"\n [class.ngx-table__table-cell--selected]=\"\n colIndex === selectedCol &&\n data.indexOf(row) === selectedRow &&\n !config.selectCol &&\n !config.selectRow\n \"\n >\n <div *ngIf=\"!column.cellTemplate\">{{ row | render: column.key }}</div>\n <ng-container\n *ngIf=\"column.cellTemplate\"\n [ngTemplateOutlet]=\"column.cellTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: row,\n rowIndex: data.indexOf(row),\n column: column\n }\"\n >\n </ng-container>\n </td>\n </ng-container>\n <td *ngIf=\"config.additionalActions || config.detailsTemplate\">\n <span\n class=\"ngx-icon\"\n *ngIf=\"arrowDefinition\"\n [ngClass]=\"\n isRowCollapsed(data.indexOf(row))\n ? 'ngx-icon-arrow-down'\n : 'ngx-icon-arrow-right'\n \"\n (click)=\"collapseRow(data.indexOf(row))\"\n >\n </span>\n </td>\n </tr>\n <tr\n *ngIf=\"\n (config.detailsTemplate && selectedDetailsTemplateRowId.has(data.indexOf(row))) ||\n config.collapseAllRows\n \"\n >\n <td *ngIf=\"config.checkboxes || config.radio\"></td>\n <td [attr.colspan]=\"columns.length + 1\">\n <ng-container\n [ngTemplateOutlet]=\"detailsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: data.indexOf(row) }\"\n >\n </ng-container>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n <!-- infinite scroll -->\n <cdk-virtual-scroll-viewport\n itemSize=\"50\"\n *ngIf=\"config.infiniteScroll\"\n class=\"ngx-infinite-scroll-viewport\"\n >\n <ng-container\n *cdkVirtualFor=\"\n let row of data\n | sort: sortBy\n | search: term:filteredCountSubject\n | global: globalSearchTerm:filteredCountSubject;\n let rowIndex = index\n \"\n >\n <tr\n [class.ngx-table__table-row--selected]=\"\n rowIndex === selectedRow && !config.selectCell\n \"\n >\n <td *ngIf=\"config.checkboxes\">\n <label class=\"ngx-form-checkbox\">\n <input\n type=\"checkbox\"\n id=\"checkbox-infinite-scroll-{{ rowIndex }}\"\n [checked]=\"isSelected || selectedCheckboxes.has(rowIndex)\"\n (change)=\"onCheckboxSelect($event, row, rowIndex)\"\n />\n <em class=\"ngx-form-icon\"></em>\n </label>\n </td>\n <td *ngIf=\"config.radio\">\n <label>\n <input\n type=\"radio\"\n id=\"radio-infinite-scroll-{{ rowIndex }}\"\n name=\"radio\"\n (change)=\"onRadioSelect($event, row, rowIndex)\"\n />\n </label>\n </td>\n <ng-container *ngFor=\"let column of columns; let colIndex = index\">\n <td\n (click)=\"onClick($event, row, column.key, colIndex, rowIndex)\"\n #contextMenu\n (contextmenu)=\"onRowContextMenu($event, row, column.key, colIndex, rowIndex)\"\n (dblclick)=\"onDoubleClick($event, row, column.key, colIndex, rowIndex)\"\n [class.pinned-left]=\"column.pinned\"\n [ngClass]=\"column.cssClass ? column.cssClass.name : ''\"\n [style.left]=\"styleService.pinnedWidth(column.pinned, colIndex)\"\n [class.ngx-table__table-col--selected]=\"\n colIndex === selectedCol && !config.selectCell\n \"\n [class.ngx-table__table-cell--selected]=\"\n colIndex === selectedCol &&\n rowIndex === selectedRow &&\n !config.selectCol &&\n !config.selectRow\n \"\n >\n <div *ngIf=\"!column.cellTemplate\">{{ row | render: column.key }}</div>\n <ng-container\n *ngIf=\"column.cellTemplate\"\n [ngTemplateOutlet]=\"column.cellTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: row,\n rowIndex: rowIndex,\n column: column\n }\"\n >\n </ng-container>\n </td>\n </ng-container>\n <td *ngIf=\"config.additionalActions || config.detailsTemplate\">\n <span\n class=\"ngx-icon\"\n *ngIf=\"arrowDefinition\"\n [ngClass]=\"\n isRowCollapsed(rowIndex) ? 'ngx-icon-arrow-down' : 'ngx-icon-arrow-right'\n \"\n (click)=\"collapseRow(rowIndex)\"\n >\n </span>\n </td>\n </tr>\n <tr\n *ngIf=\"\n (config.detailsTemplate && selectedDetailsTemplateRowId.has(rowIndex)) ||\n config.collapseAllRows\n \"\n >\n <td *ngIf=\"config.checkboxes || config.radio\"></td>\n <td [attr.colspan]=\"columns.length + 1\">\n <ng-container\n [ngTemplateOutlet]=\"detailsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: rowIndex }\"\n >\n </ng-container>\n </td>\n </tr>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n <ng-container *ngIf=\"!rowTemplate && config.groupRows\">\n <ng-container\n *ngFor=\"\n let group of grouped\n | sort: sortBy:config\n | search: term:filteredCountSubject:config\n | global: globalSearchTerm:filteredCountSubject\n | paginate: { itemsPerPage: limit, currentPage: page, totalItems: count, id: id };\n let rowIndex = index\n \"\n >\n <tr>\n <ng-container *ngIf=\"!groupRowsHeaderTemplate\">\n <td [attr.colspan]=\"columns.length\">\n <div>{{ group[0][groupRowsBy] }} ({{ group.length }})</div>\n </td>\n </ng-container>\n <ng-container\n *ngIf=\"groupRowsHeaderTemplate\"\n [ngTemplateOutlet]=\"groupRowsHeaderTemplate\"\n [ngTemplateOutletContext]=\"{\n total: group.length,\n key: groupRowsBy,\n value: group[0] ? group[0][groupRowsBy] : '',\n group: group,\n index: rowIndex\n }\"\n >\n </ng-container>\n <td>\n <span\n class=\"ngx-icon\"\n *ngIf=\"arrowDefinition\"\n [ngClass]=\"\n isRowCollapsed(rowIndex) ? 'ngx-icon-arrow-down' : 'ngx-icon-arrow-right'\n \"\n (click)=\"collapseRow(rowIndex)\"\n >\n </span>\n </td>\n </tr>\n <ng-container *ngIf=\"selectedDetailsTemplateRowId.has(rowIndex)\">\n <tr *ngFor=\"let row of group\">\n <td *ngFor=\"let column of columns\">\n {{ row | render: column.key }}\n <!-- TODO allow users to add groupRowsTemplateRef -->\n </td>\n <td></td>\n </tr>\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n <tbody\n *ngIf=\"data && !config.isLoading && config.rowReorder\"\n class=\"ngx-draggable-row-area\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n >\n <ng-container *ngIf=\"!rowTemplate && !config.groupRows\">\n <ng-container\n *ngFor=\"\n let row of data\n | sort: sortBy\n | search: term:filteredCountSubject\n | global: globalSearchTerm:filteredCountSubject\n | paginate: { itemsPerPage: limit, currentPage: page, totalItems: count, id: id }\n \"\n >\n <tr\n class=\"ngx-draggable-row\"\n cdkDrag\n (cdkDragStarted)=\"onDragStart($event)\"\n [cdkDragStartDelay]=\"config.reorderDelay || 0\"\n cdkDragLockAxis=\"y\"\n >\n <td *ngIf=\"config.checkboxes\">\n <label class=\"ngx-form-checkbox\">\n <input\n type=\"checkbox\"\n id=\"checkbox-draggable-{{ data.indexOf(row) }}\"\n [checked]=\"isSelected || selectedCheckboxes.has(data.indexOf(row))\"\n (change)=\"onCheckboxSelect($event, row, data.indexOf(row))\"\n />\n <em class=\"ngx-form-icon\"></em>\n </label>\n </td>\n <td *ngIf=\"config.radio\">\n <label>\n <input\n type=\"radio\"\n id=\"radio-draggable-{{ data.indexOf(row) }}\"\n name=\"radio\"\n (change)=\"onRadioSelect($event, row, data.indexOf(row))\"\n />\n </label>\n </td>\n <ng-container *ngFor=\"let column of columns; let colIndex = index\">\n <td\n (click)=\"onClick($event, row, column.key, colIndex, data.indexOf(row))\"\n (dblclick)=\"onDoubleClick($event, row, column.key, colIndex, data.indexOf(row))\"\n [class.ngx-table__table-col--selected]=\"\n colIndex === selectedCol && !config.selectCell\n \"\n [class.ngx-table__table-cell--selected]=\"\n colIndex === selectedCol &&\n data.indexOf(row) === selectedRow &&\n !config.selectCol &&\n !config.selectRow\n \"\n >\n <div *ngIf=\"!column.cellTemplate\">{{ row | render: column.key }}</div>\n <ng-container\n *ngIf=\"column.cellTemplate\"\n [ngTemplateOutlet]=\"column.cellTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: row,\n rowIndex: data.indexOf(row),\n column: column\n }\"\n >\n </ng-container>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </ng-container>\n </tbody>\n <tbody *ngIf=\"filterCount === 0\">\n <tr class=\"ngx-table__body-empty\">\n <ng-container *ngIf=\"noResultsTemplate\" [ngTemplateOutlet]=\"noResultsTemplate\">\n </ng-container>\n <td [attr.colspan]=\"columns && columns.length + 1\" *ngIf=\"!noResultsTemplate\">\n <div class=\"ngx-table__table-no-results\">No results</div>\n </td>\n </tr>\n </tbody>\n <tbody *ngIf=\"config.isLoading\">\n <tr class=\"ngx-table__body-loading\">\n <ng-container *ngIf=\"loadingTemplate\" [ngTemplateOutlet]=\"loadingTemplate\"> </ng-container>\n <td [attr.colspan]=\"columns && columns.length + 1\" *ngIf=\"!loadingTemplate\">\n <div [style.height.px]=\"loadingHeight\" class=\"ngx-table__table-loader-wrapper\">\n <div class=\"ngx-table__table-loader\"></div>\n </div>\n </td>\n </tr>\n </tbody>\n <tfoot *ngIf=\"summaryTemplate\">\n <tr>\n <ng-container\n [ngTemplateOutlet]=\"summaryTemplate\"\n [ngTemplateOutletContext]=\"{ total: data.length, limit: limit, page: page }\"\n >\n </ng-container>\n </tr>\n </tfoot>\n </table>\n <pagination\n [attr.id]=\"'pagination' + id\"\n [id]=\"id\"\n #paginationComponent\n [config]=\"config\"\n [pagination]=\"pagination\"\n (updateRange)=\"onPagination($event)\"\n >\n </pagination>\n</div>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { BaseComponent } from './base.component';\n\nimport { HeaderComponent } from '../header/header.component';\nimport { PaginationComponent } from '../pagination/pagination.component';\n\nimport { GlobalSearchPipe } from '../../pipes/global-search-pipe';\nimport { RenderPipe } from '../../pipes/render-pipe';\nimport { SearchPipe } from '../../pipes/search-pipe';\nimport { SortPipe } from '../../pipes/sort.pipe';\n\nimport { NgxPaginationModule } from 'ngx-pagination';\nimport { TableTHeadComponent } from '../thead/thead.component';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n@NgModule({\n declarations: [\n BaseComponent,\n HeaderComponent,\n PaginationComponent,\n TableTHeadComponent,\n\n // Pipes\n SearchPipe,\n RenderPipe,\n GlobalSearchPipe,\n SortPipe,\n ],\n imports: [CommonModule, NgxPaginationModule, DragDropModule, ScrollingModule],\n exports: [BaseComponent],\n})\nexport class BaseModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { BaseComponent } from './components/base/base.component';\nimport { BaseModule } from './components/base/base.module';\n\n@NgModule({\n imports: [CommonModule, BaseModule],\n exports: [BaseComponent],\n providers: [],\n})\nexport class TableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i1.StyleService","i2","i3","i4.HeaderComponent","i2.StyleService","i4","i5.PaginationComponent","i6.TableTHeadComponent","i7","i8.SearchPipe","i9.RenderPipe","i10.GlobalSearchPipe","i11.SortPipe"],"mappings":"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"}
\No newline at end of file