ngx-easy-table-plus 15.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +37 -0
  3. package/esm2022/lib/components/base/base.component.mjs +541 -0
  4. package/esm2022/lib/components/base/base.module.mjs +46 -0
  5. package/esm2022/lib/components/header/header.component.mjs +24 -0
  6. package/esm2022/lib/components/pagination/pagination.component.mjs +68 -0
  7. package/esm2022/lib/components/thead/thead.component.mjs +147 -0
  8. package/esm2022/lib/index.mjs +7 -0
  9. package/esm2022/lib/model/api.mjs +24 -0
  10. package/esm2022/lib/model/columns.mjs +2 -0
  11. package/esm2022/lib/model/config.mjs +12 -0
  12. package/esm2022/lib/model/event.enum.mjs +24 -0
  13. package/esm2022/lib/model/pagination.mjs +2 -0
  14. package/esm2022/lib/pipes/global-search-pipe.mjs +30 -0
  15. package/esm2022/lib/pipes/render-pipe.mjs +18 -0
  16. package/esm2022/lib/pipes/search-pipe.mjs +51 -0
  17. package/esm2022/lib/pipes/sort.pipe.mjs +64 -0
  18. package/esm2022/lib/services/config-service.mjs +51 -0
  19. package/esm2022/lib/services/filters.service.mjs +16 -0
  20. package/esm2022/lib/services/group-rows.service.mjs +19 -0
  21. package/esm2022/lib/services/style.service.mjs +46 -0
  22. package/esm2022/lib/table.module.mjs +19 -0
  23. package/esm2022/ngx-easy-table-plus.mjs +5 -0
  24. package/esm2022/public_api.mjs +9 -0
  25. package/fesm2022/ngx-easy-table-plus.mjs +1142 -0
  26. package/fesm2022/ngx-easy-table-plus.mjs.map +1 -0
  27. package/index.d.ts +6 -0
  28. package/lib/components/base/base.component.d.ts +112 -0
  29. package/lib/components/base/base.component.d.ts.map +1 -0
  30. package/lib/components/base/base.module.d.ts +19 -0
  31. package/lib/components/base/base.module.d.ts.map +1 -0
  32. package/lib/components/header/header.component.d.ts +15 -0
  33. package/lib/components/header/header.component.d.ts.map +1 -0
  34. package/lib/components/pagination/pagination.component.d.ts +32 -0
  35. package/lib/components/pagination/pagination.component.d.ts.map +1 -0
  36. package/lib/components/thead/thead.component.d.ts +52 -0
  37. package/lib/components/thead/thead.component.d.ts.map +1 -0
  38. package/lib/index.d.ts +7 -0
  39. package/lib/index.d.ts.map +1 -0
  40. package/lib/model/api.d.ts +117 -0
  41. package/lib/model/api.d.ts.map +1 -0
  42. package/lib/model/columns.d.ts +19 -0
  43. package/lib/model/columns.d.ts.map +1 -0
  44. package/lib/model/config.d.ts +53 -0
  45. package/lib/model/config.d.ts.map +1 -0
  46. package/lib/model/event.enum.d.ts +21 -0
  47. package/lib/model/event.enum.d.ts.map +1 -0
  48. package/lib/model/pagination.d.ts +6 -0
  49. package/lib/model/pagination.d.ts.map +1 -0
  50. package/lib/pipes/global-search-pipe.d.ts +9 -0
  51. package/lib/pipes/global-search-pipe.d.ts.map +1 -0
  52. package/lib/pipes/render-pipe.d.ts +8 -0
  53. package/lib/pipes/render-pipe.d.ts.map +1 -0
  54. package/lib/pipes/search-pipe.d.ts +15 -0
  55. package/lib/pipes/search-pipe.d.ts.map +1 -0
  56. package/lib/pipes/sort.pipe.d.ts +17 -0
  57. package/lib/pipes/sort.pipe.d.ts.map +1 -0
  58. package/lib/services/config-service.d.ts +9 -0
  59. package/lib/services/config-service.d.ts.map +1 -0
  60. package/lib/services/filters.service.d.ts +7 -0
  61. package/lib/services/filters.service.d.ts.map +1 -0
  62. package/lib/services/group-rows.service.d.ts +7 -0
  63. package/lib/services/group-rows.service.d.ts.map +1 -0
  64. package/lib/services/style.service.d.ts +12 -0
  65. package/lib/services/style.service.d.ts.map +1 -0
  66. package/lib/table.module.d.ts +10 -0
  67. package/lib/table.module.d.ts.map +1 -0
  68. package/ngx-easy-table-plus.d.ts.map +1 -0
  69. package/package.json +44 -0
  70. package/public_api.d.ts +9 -0
  71. package/public_api.d.ts.map +1 -0
  72. package/style.css +514 -0
  73. package/style.css.map +1 -0
  74. package/style.scss +616 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-easy-table-plus.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-plus.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 @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 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 <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>\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]=\"config.orderEnabled ? 'inline' : 'none'\">\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>\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' ? 'desc' : 'asc');\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 || 'desc');\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 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","<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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"}
package/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="ngx-easy-table-plus" />
5
+ export * from './public_api';
6
+ //# sourceMappingURL=ngx-easy-table-plus.d.ts.map
@@ -0,0 +1,112 @@
1
+ import { CdkDragDrop, CdkDragStart } from '@angular/cdk/drag-drop';
2
+ import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
3
+ import { ApiType, Columns, Config, Pagination } from '../..';
4
+ import { PaginationRange } from '../pagination/pagination.component';
5
+ import { StyleService } from '../../services/style.service';
6
+ import { Subject } from 'rxjs';
7
+ import { CdkVirtualScrollViewport, ScrollDispatcher } from '@angular/cdk/scrolling';
8
+ import * as i0 from "@angular/core";
9
+ type ColumnKeyType = string | number | boolean;
10
+ interface RowContextMenuPosition {
11
+ top: string | null;
12
+ left: string | null;
13
+ value: any | null;
14
+ }
15
+ export declare class BaseComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {
16
+ private readonly cdr;
17
+ private readonly scrollDispatcher;
18
+ readonly styleService: StyleService;
19
+ private unsubscribe;
20
+ selectedRow: number;
21
+ selectedCol: number;
22
+ term: any;
23
+ filterCount: number;
24
+ filteredCountSubject: Subject<number>;
25
+ tableClass: string | null;
26
+ globalSearchTerm: string;
27
+ grouped: any;
28
+ isSelected: boolean;
29
+ page: number;
30
+ count: number;
31
+ sortState: Map<any, any>;
32
+ sortKey: string | null;
33
+ rowContextMenuPosition: RowContextMenuPosition;
34
+ limit: any;
35
+ sortBy: {
36
+ key: string;
37
+ } & {
38
+ order: string;
39
+ };
40
+ selectedDetailsTemplateRowId: Set<number>;
41
+ selectedCheckboxes: Set<number>;
42
+ config: Config;
43
+ configuration: Config;
44
+ data: any[];
45
+ pagination: Pagination;
46
+ groupRowsBy: string;
47
+ id: string;
48
+ toggleRowIndex: any;
49
+ detailsTemplate: TemplateRef<any>;
50
+ summaryTemplate: TemplateRef<{
51
+ total: number;
52
+ limit: number;
53
+ page: number;
54
+ }>;
55
+ groupRowsHeaderTemplate: TemplateRef<any>;
56
+ filtersTemplate: TemplateRef<any>;
57
+ selectAllTemplate: TemplateRef<any>;
58
+ noResultsTemplate: TemplateRef<void>;
59
+ loadingTemplate: TemplateRef<void>;
60
+ additionalActionsTemplate: TemplateRef<void>;
61
+ rowContextMenu: TemplateRef<any>;
62
+ columns: Columns[];
63
+ readonly event: EventEmitter<{
64
+ event: string;
65
+ value: any;
66
+ }>;
67
+ rowTemplate: TemplateRef<any>;
68
+ private paginationComponent;
69
+ contextMenu: any;
70
+ table: any;
71
+ viewPort: CdkVirtualScrollViewport;
72
+ onContextMenuClick(targetElement: any): void;
73
+ constructor(cdr: ChangeDetectorRef, scrollDispatcher: ScrollDispatcher, styleService: StyleService);
74
+ ngOnInit(): void;
75
+ ngOnDestroy(): void;
76
+ ngAfterViewInit(): void;
77
+ ngOnChanges(changes: SimpleChanges): void;
78
+ orderBy(column: Columns): void;
79
+ onClick($event: MouseEvent, row: any, key: ColumnKeyType, colIndex: any, rowIndex: number): void;
80
+ onDoubleClick($event: MouseEvent, row: any, key: ColumnKeyType, colIndex: any, rowIndex: number): void;
81
+ onCheckboxSelect($event: any, row: any, rowIndex: number): void;
82
+ onRadioSelect($event: any, row: any, rowIndex: number): void;
83
+ onSelectAll(): void;
84
+ onSearch($event: Array<{
85
+ key: string;
86
+ value: string;
87
+ }>): void;
88
+ onGlobalSearch(value: string): void;
89
+ onPagination(pagination: PaginationRange): void;
90
+ toggleCheckbox(rowIndex: number): void;
91
+ collapseRow(rowIndex: number): void;
92
+ private doDecodePersistedState;
93
+ isRowCollapsed(rowIndex: number): boolean;
94
+ get loadingHeight(): number;
95
+ get arrowDefinition(): boolean;
96
+ onRowContextMenu($event: MouseEvent, row: any, key: ColumnKeyType, colIndex: any, rowIndex: number): void;
97
+ private doApplyData;
98
+ onDragStart(event: CdkDragStart): void;
99
+ onDrop(event: CdkDragDrop<string[]>): void;
100
+ apiEvent(event: ApiType): void | number;
101
+ private bindApi;
102
+ private setColumnOrder;
103
+ emitEvent(event: string, value: any): void;
104
+ dragEnter($event: DragEvent): void;
105
+ dragOver($event: DragEvent): void;
106
+ dragLeave($event: DragEvent): void;
107
+ drop($event: DragEvent): void;
108
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseComponent, never>;
109
+ static ɵcmp: i0.ɵɵComponentDeclaration<BaseComponent, "ngx-table", never, { "configuration": { "alias": "configuration"; "required": false; }; "data": { "alias": "data"; "required": false; }; "pagination": { "alias": "pagination"; "required": false; }; "groupRowsBy": { "alias": "groupRowsBy"; "required": false; }; "id": { "alias": "id"; "required": false; }; "toggleRowIndex": { "alias": "toggleRowIndex"; "required": false; }; "detailsTemplate": { "alias": "detailsTemplate"; "required": false; }; "summaryTemplate": { "alias": "summaryTemplate"; "required": false; }; "groupRowsHeaderTemplate": { "alias": "groupRowsHeaderTemplate"; "required": false; }; "filtersTemplate": { "alias": "filtersTemplate"; "required": false; }; "selectAllTemplate": { "alias": "selectAllTemplate"; "required": false; }; "noResultsTemplate": { "alias": "noResultsTemplate"; "required": false; }; "loadingTemplate": { "alias": "loadingTemplate"; "required": false; }; "additionalActionsTemplate": { "alias": "additionalActionsTemplate"; "required": false; }; "rowContextMenu": { "alias": "rowContextMenu"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; }, { "event": "event"; }, ["rowTemplate"], never, false, never>;
110
+ }
111
+ export {};
112
+ //# sourceMappingURL=base.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.component.d.ts","sourceRoot":"","sources":["../../../../../projects/ngx-easy-table/src/lib/components/base/base.component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./base.component";
3
+ import * as i2 from "../header/header.component";
4
+ import * as i3 from "../pagination/pagination.component";
5
+ import * as i4 from "../thead/thead.component";
6
+ import * as i5 from "../../pipes/search-pipe";
7
+ import * as i6 from "../../pipes/render-pipe";
8
+ import * as i7 from "../../pipes/global-search-pipe";
9
+ import * as i8 from "../../pipes/sort.pipe";
10
+ import * as i9 from "@angular/common";
11
+ import * as i10 from "ngx-pagination";
12
+ import * as i11 from "@angular/cdk/drag-drop";
13
+ import * as i12 from "@angular/cdk/scrolling";
14
+ export declare class BaseModule {
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseModule, never>;
16
+ static ɵmod: i0.ɵɵNgModuleDeclaration<BaseModule, [typeof i1.BaseComponent, typeof i2.HeaderComponent, typeof i3.PaginationComponent, typeof i4.TableTHeadComponent, typeof i5.SearchPipe, typeof i6.RenderPipe, typeof i7.GlobalSearchPipe, typeof i8.SortPipe], [typeof i9.CommonModule, typeof i10.NgxPaginationModule, typeof i11.DragDropModule, typeof i12.ScrollingModule], [typeof i1.BaseComponent]>;
17
+ static ɵinj: i0.ɵɵInjectorDeclaration<BaseModule>;
18
+ }
19
+ //# sourceMappingURL=base.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.module.d.ts","sourceRoot":"","sources":["../../../../../projects/ngx-easy-table/src/lib/components/base/base.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAkBA,qBAgBa,UAAU;yCAAV,UAAU;0CAAV,UAAU;0CAAV,UAAU;CAAG"}
@@ -0,0 +1,15 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { Columns } from '../..';
3
+ import * as i0 from "@angular/core";
4
+ export declare class HeaderComponent {
5
+ column: Columns;
6
+ readonly update: EventEmitter<{
7
+ key: string;
8
+ value: string;
9
+ }[]>;
10
+ unifyKey(key: string): string;
11
+ onSearch(input: HTMLInputElement): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<HeaderComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<HeaderComponent, "table-header", never, { "column": { "alias": "column"; "required": false; }; }, { "update": "update"; }, never, never, false, never>;
14
+ }
15
+ //# sourceMappingURL=header.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.component.d.ts","sourceRoot":"","sources":["../../../../../projects/ngx-easy-table/src/lib/components/header/header.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,YAAY,EAAiB,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;;AAEhC,qBAKa,eAAe;IACjB,MAAM,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,MAAM;aAAiC,MAAM;eAAS,MAAM;SAAO;IAEtF,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;yCAR5B,eAAe;2CAAf,eAAe;CAW3B"}
@@ -0,0 +1,32 @@
1
+ import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
2
+ import { Config } from '../..';
3
+ import { PaginationControlsDirective } from 'ngx-pagination';
4
+ import * as i0 from "@angular/core";
5
+ export interface PaginationRange {
6
+ page: number;
7
+ limit: number;
8
+ }
9
+ export declare class PaginationComponent implements OnChanges {
10
+ paginationDirective: PaginationControlsDirective;
11
+ paginationRange: any;
12
+ pagination: any;
13
+ config: Config;
14
+ id: any;
15
+ readonly updateRange: EventEmitter<PaginationRange>;
16
+ ranges: number[];
17
+ selectedLimit: number;
18
+ showRange: boolean;
19
+ screenReaderPaginationLabel: string;
20
+ screenReaderPageLabel: string;
21
+ screenReaderCurrentLabel: string;
22
+ previousLabel: string;
23
+ nextLabel: string;
24
+ directionLinks: boolean;
25
+ onClick(targetElement: any): void;
26
+ ngOnChanges(changes: SimpleChanges): void;
27
+ onPageChange(page: number): void;
28
+ changeLimit(limit: number, callFromAPI: boolean): void;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<PaginationComponent, never>;
30
+ static ɵcmp: i0.ɵɵComponentDeclaration<PaginationComponent, "pagination", never, { "pagination": { "alias": "pagination"; "required": false; }; "config": { "alias": "config"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, { "updateRange": "updateRange"; }, never, never, false, never>;
31
+ }
32
+ //# sourceMappingURL=pagination.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.component.d.ts","sourceRoot":"","sources":["../../../../../projects/ngx-easy-table/src/lib/components/pagination/pagination.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAGZ,SAAS,EAET,aAAa,EAEd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;;AAE7D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAKa,mBAAoB,YAAW,SAAS;IAEnD,mBAAmB,EAAE,2BAA2B,CAAC;IACnB,eAAe,MAAC;IACrC,UAAU,MAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,MAAC;IACF,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,eAAe,CAAC,CAAsB;IAC5E,MAAM,EAAE,MAAM,EAAE,CAAwB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,UAAS;IAClB,2BAA2B,SAAgB;IAC3C,qBAAqB,SAAU;IAC/B,wBAAwB,SAAqB;IAC7C,aAAa,SAAM;IACnB,SAAS,SAAM;IACf,cAAc,UAAQ;IAGtB,OAAO,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI;IAMxC,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAOzC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOhC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI;yCAvC3C,mBAAmB;2CAAnB,mBAAmB;CAiD/B"}
@@ -0,0 +1,52 @@
1
+ import { EventEmitter, TemplateRef } from '@angular/core';
2
+ import { Columns, Config } from '../..';
3
+ import { StyleService } from '../../services/style.service';
4
+ import { CdkDragDrop } from '@angular/cdk/drag-drop';
5
+ import * as i0 from "@angular/core";
6
+ export declare class TableTHeadComponent {
7
+ readonly styleService: StyleService;
8
+ menuActive: boolean;
9
+ openedHeaderActionTemplate: string | null;
10
+ startOffset: any;
11
+ onSelectAllBinded: () => void;
12
+ config: Config;
13
+ columns: Columns[];
14
+ sortKey: any;
15
+ sortState: any;
16
+ selectAllTemplate: any;
17
+ filtersTemplate: any;
18
+ additionalActionsTemplate: TemplateRef<void>;
19
+ readonly filter: EventEmitter<{
20
+ key: string;
21
+ value: string;
22
+ }[]>;
23
+ readonly order: EventEmitter<Columns>;
24
+ readonly selectAll: EventEmitter<void>;
25
+ readonly event: EventEmitter<{
26
+ event: string;
27
+ value: any;
28
+ }>;
29
+ private th;
30
+ headerDropdown: any;
31
+ additionalActionMenu: any;
32
+ onClick(targetElement: any): void;
33
+ constructor(styleService: StyleService);
34
+ getColumnDefinition(column: Columns): boolean;
35
+ orderBy(column: Columns): void;
36
+ isOrderEnabled(column: Columns): boolean;
37
+ columnDrop(event: CdkDragDrop<string[]>): void;
38
+ onSearch($event: Array<{
39
+ key: string;
40
+ value: string;
41
+ }>): void;
42
+ getColumnWidth(column: any): string | null;
43
+ onSelectAll(): void;
44
+ onMouseDown(event: MouseEvent, th: HTMLTableHeaderCellElement): void;
45
+ onMouseMove(event: MouseEvent): void;
46
+ onMouseUp(event: MouseEvent): void;
47
+ showHeaderActionTemplateMenu(column: Columns): void;
48
+ showMenu(): void;
49
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableTHeadComponent, never>;
50
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableTHeadComponent, "[table-thead]", never, { "config": { "alias": "config"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "sortKey": { "alias": "sortKey"; "required": false; }; "sortState": { "alias": "sortState"; "required": false; }; "selectAllTemplate": { "alias": "selectAllTemplate"; "required": false; }; "filtersTemplate": { "alias": "filtersTemplate"; "required": false; }; "additionalActionsTemplate": { "alias": "additionalActionsTemplate"; "required": false; }; }, { "filter": "filter"; "order": "order"; "selectAll": "selectAll"; "event": "event"; }, never, never, false, never>;
51
+ }
52
+ //# sourceMappingURL=thead.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thead.component.d.ts","sourceRoot":"","sources":["../../../../../projects/ngx-easy-table/src/lib/components/thead/thead.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAIZ,WAAW,EAGZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAS,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAmB,MAAM,wBAAwB,CAAC;;AAEtE,qBAiBa,mBAAmB;aAuCF,YAAY,EAAE,YAAY;IAtC/C,UAAU,UAAS;IACnB,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAQ;IACjD,WAAW,MAAC;IACZ,iBAAiB,QAiET,IAAI,CAjEoC;IAE9C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,OAAO,MAAC;IACR,SAAS,MAAC;IACV,iBAAiB,MAAC;IAClB,eAAe,MAAC;IAChB,yBAAyB,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,CAAC,MAAM;aAAiC,MAAM;eAAS,MAAM;SAAO;IAC5E,QAAQ,CAAC,KAAK,wBAA+B;IAC7C,QAAQ,CAAC,SAAS,qBAA4B;IAC9C,QAAQ,CAAC,KAAK;eAA6B,MAAM;eAAS,GAAG;OAAM;IAC5D,OAAO,CAAC,EAAE,CAAC;IACI,cAAc,MAAC;IACZ,oBAAoB,MAAC;IAEjD,OAAO,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI;gBAkBZ,YAAY,EAAE,YAAY;IAEtD,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAI7C,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAI9B,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAKxC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI;IAI9C,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAI7D,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI;IAO1C,WAAW,IAAI,IAAI;IAInB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,0BAA0B,GAAG,IAAI;IAYpE,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAWpC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAYlC,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAWnD,QAAQ,IAAI,IAAI;yCAvHL,mBAAmB;2CAAnB,mBAAmB;CA6H/B"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export * from './model/columns';
2
+ export * from './model/config';
3
+ export * from './model/event.enum';
4
+ export * from './model/pagination';
5
+ export * from './model/api';
6
+ export * from './services/config-service';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../projects/ngx-easy-table/src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC"}