UNPKG

@ngx-custom-code/ngx-table-custom-sort

Version:

Angular easy table

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