UNPKG

ngx-easy-table

Version:
1 lines 71.9 kB
{"version":3,"file":"ngx-easy-table.js","sources":["ng://ngx-easy-table/lib/model/columns.ts","ng://ngx-easy-table/lib/model/config.ts","ng://ngx-easy-table/lib/model/event.enum.ts","ng://ngx-easy-table/lib/model/pagination.ts","ng://ngx-easy-table/lib/model/api.ts","ng://ngx-easy-table/lib/services/config-service.ts","ng://ngx-easy-table/lib/components/pagination/pagination.component.ts","ng://ngx-easy-table/lib/services/group-rows.service.ts","ng://ngx-easy-table/lib/services/style.service.ts","ng://ngx-easy-table/lib/components/base/base.component.ts","ng://ngx-easy-table/lib/components/header/header.component.ts","ng://ngx-easy-table/lib/pipes/global-search-pipe.ts","ng://ngx-easy-table/lib/services/filters.service.ts","ng://ngx-easy-table/lib/pipes/render-pipe.ts","ng://ngx-easy-table/lib/pipes/search-pipe.ts","ng://ngx-easy-table/lib/pipes/sort.pipe.ts","ng://ngx-easy-table/lib/components/thead/thead.component.ts","ng://ngx-easy-table/lib/components/base/base.module.ts","ng://ngx-easy-table/lib/table.module.ts"],"sourcesContent":["import { TemplateRef } from '@angular/core';\n\nexport interface Columns {\n key: string;\n title: string;\n placeholder?: string;\n width?: string;\n cellTemplate?: TemplateRef<any>;\n orderEnabled?: boolean;\n orderEventOnly?: boolean;\n searchEnabled?: boolean;\n orderBy?: string;\n cssClass?: { name: string, includeHeader: boolean };\n pinned?: boolean;\n headerActionTemplate?: TemplateRef<any>;\n}\n","export interface Config {\n searchEnabled: boolean;\n headerEnabled: boolean;\n orderEnabled: boolean;\n orderEventOnly?: boolean;\n paginationEnabled: boolean;\n /* @deprecated */\n exportEnabled?: boolean;\n clickEvent: boolean;\n selectRow: boolean;\n selectCol: boolean;\n selectCell: boolean;\n rows: number;\n additionalActions: boolean;\n serverPagination: boolean;\n isLoading: boolean;\n detailsTemplate: boolean;\n groupRows: boolean;\n paginationRangeEnabled: boolean;\n collapseAllRows: boolean;\n checkboxes: boolean;\n radio?: boolean;\n resizeColumn: boolean;\n fixedColumnWidth: boolean;\n horizontalScroll: boolean;\n /* @deprecated Use 'rowReorder' instead */\n draggable: boolean;\n logger: boolean;\n showDetailsArrow?: boolean;\n showContextMenu?: boolean;\n persistState?: boolean;\n paginationMaxSize?: number;\n threeWaySort?: boolean;\n columnReorder?: boolean;\n rowReorder?: boolean;\n infiniteScroll?: boolean;\n infiniteScrollThrottleTime?: number;\n tableLayout: {\n style: STYLE | string | null,\n theme: THEME | string | null,\n borderless: boolean | null,\n hover: boolean | null,\n striped: boolean | null,\n };\n}\n\nexport enum STYLE {\n TINY = 'tiny',\n BIG = 'big',\n NORMAL = 'normal',\n}\n\nexport enum THEME {\n LIGHT = 'light',\n DARK = 'dark',\n}\n","export enum Event {\n onPagination = 'onPagination',\n onOrder = 'onOrder',\n onGlobalSearch = 'onGlobalSearch',\n onSearch = 'onSearch',\n onClick = 'onClick',\n onDoubleClick = 'onDoubleClick',\n onCheckboxSelect = 'onCheckboxSelect',\n onRadioSelect = 'onRadioSelect',\n onCheckboxToggle = 'onCheckboxToggle',\n onSelectAll = 'onSelectAll',\n onInfiniteScrollEnd = 'onInfiniteScrollEnd',\n onColumnResizeMouseDown = 'onColumnResizeMouseDown',\n onColumnResizeMouseUp = 'onColumnResizeMouseUp',\n onRowDrop = 'onRowDrop',\n onRowCollapsedShow = 'onRowCollapsedShow',\n onRowCollapsedHide = 'onRowCollapsedHide',\n onRowContextMenu = 'onRowContextMenu',\n}\n","export interface Pagination {\n limit: number;\n offset: number;\n count: number;\n}\n","export enum API {\n rowContextMenuClicked = 'rowContextMenuClicked',\n setInputValue = 'setInputValue',\n toolPanelClicked = 'toolPanelClicked',\n toggleRowIndex = 'toggleRowIndex',\n toggleCheckbox = 'toggleCheckbox',\n onGlobalSearch = 'onGlobalSearch',\n setPaginationCurrentPage = 'setPaginationCurrentPage',\n getPaginationCurrentPage = 'getPaginationCurrentPage',\n getPaginationTotalItems = 'getPaginationTotalItems',\n getNumberOfRowsPerPage = 'getNumberOfRowsPerPage',\n getPaginationLastPage = 'getPaginationLastPage',\n setPaginationRange = 'setPaginationRange',\n setPaginationPreviousLabel = 'setPaginationPreviousLabel',\n setPaginationNextLabel = 'setPaginationNextLabel',\n setPaginationDisplayLimit = 'setPaginationDisplayLimit',\n setTableClass = 'setTableClass',\n setRowClass = 'setRowClass',\n setCellClass = 'setCellClass',\n setRowStyle = 'setRowStyle',\n setCellStyle = 'setCellStyle',\n sortBy = 'sortBy',\n}\n\nexport interface RowClass { row: number; className: string; }\nexport interface CellClass { row: number; cell: number | string; className: string; }\nexport interface RowStyle { row: number; attr: string; value: string; }\nexport interface CellStyle { row: number; cell: number; attr: string; value: string; }\n\nexport type ApiType =\n { type: API.rowContextMenuClicked; }\n | { type: API.setInputValue; value: Array<{ key: string, value: string }>; }\n | { type: API.toolPanelClicked; }\n | { type: API.toggleRowIndex; value: number; }\n | { type: API.toggleCheckbox; value: number }\n | { type: API.onGlobalSearch; value: string; }\n | { type: API.setPaginationCurrentPage; value: number; }\n | { type: API.getPaginationCurrentPage; }\n | { type: API.getPaginationTotalItems; }\n | { type: API.getPaginationLastPage; }\n | { type: API.getNumberOfRowsPerPage; }\n | { type: API.setPaginationRange; value: number[]; }\n | { type: API.setPaginationPreviousLabel; value: string; }\n | { type: API.setPaginationNextLabel; value: string; }\n | { type: API.setPaginationDisplayLimit; value: number; }\n | { type: API.setTableClass; value: string | null; }\n | { type: API.setRowClass; value: RowClass | RowClass[] }\n | { type: API.setCellClass; value: CellClass | CellClass[] }\n | { type: API.setRowStyle; value: RowStyle | RowStyle[] }\n | { type: API.setCellStyle; value: CellStyle | CellStyle[] }\n | { type: API.sortBy; value: { column: string, order: 'asc' | 'desc' } }\n ;\n\nexport interface APIDefinition {\n apiEvent<B extends ApiType>(event: B): IAPIDefinition<B>;\n}\n\nexport type IAPIDefinition<B> = B extends\n | { type: API.getPaginationCurrentPage; }\n | { type: API.getPaginationTotalItems; }\n | { type: API.getPaginationLastPage; }\n | { type: API.getNumberOfRowsPerPage; }\n ? number\n : void;\n","import { Injectable } from '@angular/core';\nimport { Config, STYLE, THEME } from '../model/config';\n\nexport const DefaultConfig: Config = {\n searchEnabled: false,\n headerEnabled: true,\n orderEnabled: true,\n orderEventOnly: false,\n paginationEnabled: true,\n exportEnabled: false,\n clickEvent: true,\n selectRow: false,\n selectCol: false,\n selectCell: false,\n rows: 10,\n additionalActions: false,\n serverPagination: false,\n isLoading: false,\n detailsTemplate: false,\n groupRows: false,\n paginationRangeEnabled: true,\n collapseAllRows: false,\n checkboxes: false,\n radio: false,\n resizeColumn: false,\n fixedColumnWidth: true,\n horizontalScroll: false,\n draggable: false,\n logger: false,\n showDetailsArrow: false,\n showContextMenu: false,\n persistState: false,\n paginationMaxSize: 5,\n threeWaySort: false,\n tableLayout: {\n style: STYLE.NORMAL,\n theme: THEME.LIGHT,\n borderless: false,\n hover: true,\n striped: false,\n },\n};\n\n@Injectable()\nexport class DefaultConfigService {\n public static config: Config = DefaultConfig;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { Config } from '../..';\nimport { PaginationControlsDirective } from 'ngx-pagination';\n\nexport interface PaginationRange {\n page: number;\n limit: number;\n}\n\n@Component({\n selector: 'pagination',\n templateUrl: './pagination.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginationComponent implements OnChanges {\n @ViewChild('paginationDirective', { static: true }) paginationDirective: PaginationControlsDirective;\n @ViewChild('paginationRange', { static: false }) paginationRange;\n @Input() pagination;\n @Input() config: Config;\n @Input() id;\n @Output() readonly updateRange: EventEmitter<PaginationRange> = new EventEmitter();\n public ranges: number[] = [5, 10, 25, 50, 100];\n public selectedLimit: number;\n public showRange = false;\n public screenReaderPaginationLabel = 'Pagination';\n public screenReaderPageLabel = 'page';\n public screenReaderCurrentLabel = 'You are on page';\n public previousLabel = '';\n public nextLabel = '';\n public directionLinks = true;\n\n @HostListener('document:click', ['$event.target'])\n public onClick(targetElement: any): void {\n if (this.paginationRange && !this.paginationRange.nativeElement.contains(targetElement)) {\n this.showRange = false;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { config } = changes;\n if (config && config.currentValue) {\n this.selectedLimit = this.config.rows;\n }\n }\n\n onPageChange(page: number): void {\n this.updateRange.emit({\n page,\n limit: this.selectedLimit,\n });\n }\n\n changeLimit(limit: number, callFromAPI: boolean): void {\n if (!callFromAPI) {\n this.showRange = !this.showRange;\n }\n this.selectedLimit = limit;\n this.updateRange.emit({\n page: 1,\n limit,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { from } from 'rxjs';\nimport { flatMap, groupBy, reduce } from 'rxjs/operators';\n\n@Injectable()\nexport class GroupRowsService {\n public static doGroupRows<T>(data: T[], groupRowsBy: string): any[] {\n const grouped: any[] = [];\n from(data).pipe(\n groupBy((row) => row[groupRowsBy]),\n flatMap((group) => group.pipe(\n reduce((acc: T[], curr: T) => [...acc, curr], []),\n )),\n ).subscribe((row) => grouped.push(row));\n\n return grouped;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CellClass, CellStyle, RowClass, RowStyle } from '..';\n\n/* tslint:disable:no-useless-cast */\n@Injectable()\nexport class StyleService {\n public setRowClass(val: RowClass): void {\n const selector = `#table > tbody > tr:nth-child(${val.row})`;\n const row = document.querySelector(selector) as HTMLTableRowElement;\n if (row) {\n row.classList.add(val.className);\n }\n }\n\n public setCellClass(val: CellClass): void {\n const selector = `#table > tbody > tr:nth-child(${val.row}) > td:nth-child(${val.cell})`;\n const cell = document.querySelector(selector) as HTMLTableCellElement;\n if (cell) {\n cell.classList.add(val.className);\n }\n }\n\n public setRowStyle(val: RowStyle): void {\n const selector = `#table > tbody > tr:nth-child(${val.row})`;\n const row = document.querySelector(selector) as HTMLTableRowElement;\n if (row) {\n // tslint:disable-next-line:no-string-literal\n row.style[val.attr] = val.value;\n }\n }\n\n public setCellStyle(val: CellStyle): void {\n const selector = `#table > tbody > tr:nth-child(${val.row}) > td:nth-child(${val.cell})`;\n const cell = document.querySelector(selector) as HTMLTableCellElement;\n if (cell) {\n // tslint:disable-next-line:no-string-literal\n cell.style[val.attr] = val.value;\n }\n }\n\n public pinnedWidth(pinned: boolean, column: number): string | undefined {\n if (pinned) {\n return 150 * column + 'px';\n }\n }\n}\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n HostListener,\n Input,\n OnChanges, OnDestroy,\n OnInit, Output, SimpleChange,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\n\nimport { API, ApiType, Columns, Config, Event, Pagination } from '../..';\nimport { DefaultConfigService } from '../../services/config-service';\nimport { PaginationComponent, PaginationRange } from '../pagination/pagination.component';\nimport { GroupRowsService } from '../../services/group-rows.service';\nimport { StyleService } from '../../services/style.service';\nimport { Subject, Subscription } from 'rxjs';\nimport { CdkVirtualScrollViewport, ScrollDispatcher } from '@angular/cdk/scrolling';\nimport { filter, takeUntil, throttleTime } from 'rxjs/operators';\n\ntype ColumnKeyType = string | number | boolean;\n\ninterface RowContextMenuPosition {\n top: string | null;\n left: string | null;\n value: any | null;\n}\n\n@Component({\n selector: 'ngx-table',\n providers: [\n DefaultConfigService,\n GroupRowsService,\n StyleService,\n ],\n templateUrl: './base.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BaseComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n private unsubscribe = new Subject<void>();\n public selectedRow: number;\n public selectedCol: number;\n public term;\n public filterCount = -1;\n public filteredCountSubject = new Subject<number>();\n public subscription: Subscription;\n public tableClass: string | null = null;\n public globalSearchTerm: string;\n public grouped: any = [];\n public isSelected = false;\n public page = 1;\n public count = 0;\n public sortState = new Map();\n public sortKey: string | null = null;\n public rowContextMenuPosition: RowContextMenuPosition = {\n top: null,\n left: null,\n value: null,\n };\n public limit;\n public sortBy: { key: string } & { order: string } = {\n key: '',\n order: 'asc',\n };\n public selectedDetailsTemplateRowId = new Set<number>();\n public selectedCheckboxes = new Set<number>();\n public loadingHeight = '30px';\n public config: Config;\n\n @Input() configuration: Config;\n @Input() data: any[];\n @Input() pagination: Pagination;\n @Input() groupRowsBy: string;\n @Input() id = 'table';\n @Input() toggleRowIndex;\n @Input() detailsTemplate: TemplateRef<any>;\n @Input() summaryTemplate: TemplateRef<{ total: number; limit: number; page: number }>;\n @Input() groupRowsHeaderTemplate: TemplateRef<any>;\n @Input() filtersTemplate: TemplateRef<any>;\n @Input() selectAllTemplate: TemplateRef<any>;\n @Input() noResultsTemplate: TemplateRef<void>;\n @Input() loadingTemplate: TemplateRef<void>;\n @Input() additionalActionsTemplate: TemplateRef<void>;\n @Input() rowContextMenu: TemplateRef<any>;\n @Input() columns: Columns[];\n @Output() readonly event = new EventEmitter<{ event: string, value: any }>();\n @ContentChild(TemplateRef, { static: true }) public rowTemplate: TemplateRef<any>;\n @ViewChild('paginationComponent', { static: false }) private paginationComponent: PaginationComponent;\n @ViewChild('contextMenu', { static: false }) contextMenu;\n @ViewChild(CdkVirtualScrollViewport, { static: false }) viewPort: CdkVirtualScrollViewport;\n\n @HostListener('document:click', ['$event.target'])\n public onContextMenuClick(targetElement: any): void {\n if (this.contextMenu && !this.contextMenu.nativeElement.contains(targetElement)) {\n this.rowContextMenuPosition = {\n top: null,\n left: null,\n value: null,\n };\n }\n }\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly scrollDispatcher: ScrollDispatcher,\n public readonly styleService: StyleService,\n ) {\n this.subscription = this.filteredCountSubject\n .pipe(\n takeUntil(this.unsubscribe),\n )\n .subscribe((count) => {\n this.filterCount = count;\n this.cdr.detectChanges();\n });\n }\n\n ngOnInit(): void {\n if (!this.columns) {\n console.error('[columns] property required!');\n }\n if (this.configuration) {\n this.config = this.configuration;\n } else {\n this.config = DefaultConfigService.config;\n }\n this.limit = this.config.rows;\n if (this.groupRowsBy) {\n this.grouped = GroupRowsService.doGroupRows(this.data, this.groupRowsBy);\n }\n this.doDecodePersistedState();\n }\n\n ngOnDestroy(): void {\n this.unsubscribe.next();\n this.unsubscribe.complete();\n }\n\n ngAfterViewInit(): void {\n const throttleValue = this.config.infiniteScrollThrottleTime ?\n this.config.infiniteScrollThrottleTime :\n 200;\n this.scrollDispatcher.scrolled()\n .pipe(\n takeUntil(this.unsubscribe),\n throttleTime(throttleValue),\n filter((event) => {\n return !!event && this.viewPort && this.viewPort.getRenderedRange().end === this.viewPort.getDataLength();\n }),\n )\n .subscribe(() => {\n this.emitEvent(Event.onInfiniteScrollEnd, null);\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { configuration, data, pagination, groupRowsBy } = changes;\n this.toggleRowIndex = changes.toggleRowIndex;\n if (configuration && configuration.currentValue) {\n this.config = configuration.currentValue;\n }\n if (data && data.currentValue) {\n this.doApplyData(data);\n }\n if (pagination && pagination.currentValue) {\n const { count, limit, offset } = pagination.currentValue as Pagination;\n this.count = count;\n this.limit = limit;\n this.page = offset;\n }\n if (groupRowsBy && groupRowsBy.currentValue) {\n this.grouped = GroupRowsService.doGroupRows(this.data, this.groupRowsBy);\n }\n if (this.toggleRowIndex && this.toggleRowIndex.currentValue) {\n const row = this.toggleRowIndex.currentValue;\n this.collapseRow(row.index);\n }\n }\n\n orderBy(column: Columns): void {\n if (typeof column.orderEnabled !== 'undefined' && !column.orderEnabled) {\n return;\n }\n this.sortKey = column.key;\n if (!this.config.orderEnabled || this.sortKey === '') {\n return;\n }\n\n this.setColumnOrder(this.sortKey);\n if (!this.config.orderEventOnly && !column.orderEventOnly) {\n this.sortBy.key = this.sortKey;\n this.sortBy.order = this.sortState.get(this.sortKey);\n } else {\n this.sortBy.key = '';\n this.sortBy.order = '';\n }\n if (!this.config.serverPagination) {\n this.data = [...this.data];\n this.sortBy = { ...this.sortBy };\n }\n\n const value = {\n key: this.sortKey,\n order: this.sortState.get(this.sortKey),\n };\n this.emitEvent(Event.onOrder, value);\n }\n\n onClick($event: MouseEvent, row: object, key: ColumnKeyType, colIndex: any, rowIndex: number): void {\n if (this.config.selectRow) {\n this.selectedRow = rowIndex;\n }\n if (this.config.selectCol && colIndex) {\n this.selectedCol = colIndex;\n }\n if (this.config.selectCell && colIndex) {\n this.selectedRow = rowIndex;\n this.selectedCol = colIndex;\n }\n\n if (this.config.clickEvent) {\n const value = {\n event: $event,\n row,\n key,\n rowId: rowIndex,\n colId: colIndex,\n };\n this.emitEvent(Event.onClick, value);\n }\n }\n\n onDoubleClick($event: MouseEvent, row: object, key: ColumnKeyType, colIndex: any, rowIndex: number): void {\n const value = {\n event: $event,\n row,\n key,\n rowId: rowIndex,\n colId: colIndex,\n };\n this.emitEvent(Event.onDoubleClick, value);\n }\n\n onCheckboxSelect($event: object, row: object, rowIndex: number): void {\n const value = {\n event: $event,\n row,\n rowId: rowIndex,\n };\n this.emitEvent(Event.onCheckboxSelect, value);\n }\n\n onRadioSelect($event: object, row: object, rowIndex: number): void {\n const value = {\n event: $event,\n row,\n rowId: rowIndex,\n };\n this.emitEvent(Event.onRadioSelect, value);\n }\n\n onSelectAll(): void {\n this.isSelected = !this.isSelected;\n this.emitEvent(Event.onSelectAll, this.isSelected);\n }\n\n onSearch($event: Array<{ key: string; value: string }>): void {\n if (!this.config.serverPagination) {\n this.term = $event;\n }\n this.emitEvent(Event.onSearch, $event);\n }\n\n onGlobalSearch(value: string): void {\n if (!this.config.serverPagination) {\n this.globalSearchTerm = value;\n }\n this.emitEvent(Event.onGlobalSearch, value);\n }\n\n onPagination(pagination: PaginationRange): void {\n this.page = pagination.page;\n this.limit = pagination.limit;\n this.emitEvent(Event.onPagination, pagination);\n }\n\n toggleCheckbox(rowIndex: number): void {\n this.selectedCheckboxes.has(rowIndex) ?\n this.selectedCheckboxes.delete(rowIndex) :\n this.selectedCheckboxes.add(rowIndex);\n }\n\n collapseRow(rowIndex: number): void {\n if (this.selectedDetailsTemplateRowId.has(rowIndex)) {\n this.selectedDetailsTemplateRowId.delete(rowIndex);\n this.emitEvent(Event.onRowCollapsedHide, rowIndex);\n } else {\n this.selectedDetailsTemplateRowId.add(rowIndex);\n this.emitEvent(Event.onRowCollapsedShow, rowIndex);\n }\n }\n\n private doDecodePersistedState(): void {\n if (!this.config.persistState) {\n return;\n }\n const pagination = localStorage.getItem(Event.onPagination);\n const sort = localStorage.getItem(Event.onOrder);\n const search = localStorage.getItem(Event.onSearch);\n if (pagination) {\n this.onPagination(JSON.parse(pagination));\n }\n if (sort) {\n const { key, order } = JSON.parse(sort);\n this.bindApi({\n type: API.sortBy,\n value: { column: key, order },\n });\n }\n if (search) {\n this.bindApi({\n type: API.setInputValue,\n value: JSON.parse(search),\n });\n }\n }\n\n isRowCollapsed(rowIndex: number): boolean {\n if (this.config.collapseAllRows) {\n return true;\n }\n return this.selectedDetailsTemplateRowId.has(rowIndex);\n }\n\n get isLoading(): boolean {\n const table = document.getElementById(this.id) as HTMLTableElement;\n if (table && table.rows && table.rows.length > 3) {\n this.getLoadingHeight(table.rows);\n }\n return this.config.isLoading;\n }\n\n getLoadingHeight(rows: any): void {\n const searchEnabled = this.config.searchEnabled ? 1 : 0;\n const headerEnabled = this.config.headerEnabled ? 1 : 0;\n const borderTrHeight = 1;\n const borderDivHeight = 2;\n this.loadingHeight = (rows.length - searchEnabled - headerEnabled) * (rows[3].offsetHeight - borderTrHeight) - borderDivHeight + 'px';\n }\n\n get arrowDefinition(): boolean {\n return this.config.showDetailsArrow || typeof this.config.showDetailsArrow === 'undefined';\n }\n\n onRowContextMenu($event: MouseEvent, row: object, key: ColumnKeyType, colIndex: any, rowIndex: number): void {\n if (!this.config.showContextMenu) {\n return;\n }\n $event.preventDefault();\n const value = {\n event: $event,\n row,\n key,\n rowId: rowIndex,\n colId: colIndex,\n };\n this.rowContextMenuPosition = {\n top: `${$event.y - 10}px`,\n left: `${$event.x - 10}px`,\n value,\n };\n\n this.emitEvent(Event.onRowContextMenu, value);\n }\n\n private doApplyData(data: SimpleChange): void {\n const order = this.columns.find((c) => !!c.orderBy);\n if (order) {\n this.sortState.set(this.sortKey, (order.orderBy === 'asc') ? 'desc' : 'asc');\n this.orderBy(order);\n } else {\n this.data = [...data.currentValue];\n }\n }\n\n onDrop(event: CdkDragDrop<string[]>): void {\n this.emitEvent(Event.onRowDrop, event);\n moveItemInArray(this.data, event.previousIndex, event.currentIndex);\n }\n\n // DO NOT REMOVE. It is called from parent component. See src/app/demo/api-doc/api-doc.component.ts\n apiEvent(event: ApiType): void | number {\n return this.bindApi(event);\n }\n\n // tslint:disable:no-big-function cognitive-complexity\n private bindApi(event: ApiType): void | number {\n switch (event.type) {\n case API.rowContextMenuClicked:\n this.rowContextMenuPosition = {\n top: null,\n left: null,\n value: null,\n };\n break;\n case API.toolPanelClicked:\n // TODO\n break;\n case API.toggleRowIndex:\n this.collapseRow(event.value);\n break;\n case API.toggleCheckbox:\n this.toggleCheckbox(event.value);\n break;\n case API.setInputValue:\n if (this.config.searchEnabled) {\n event.value.forEach((input) => {\n const element = (document.getElementById(`search_${input.key}`) as HTMLInputElement);\n if (!element) {\n console.error(`Column '${input.key}' not available in the DOM. Have you misspelled a name?`);\n } else {\n element.value = input.value;\n }\n });\n }\n this.onSearch(event.value);\n this.cdr.detectChanges();\n break;\n case API.onGlobalSearch:\n this.onGlobalSearch(event.value);\n this.cdr.detectChanges();\n break;\n case API.setRowClass:\n if (Array.isArray(event.value)) {\n event.value.forEach((val) => this.styleService.setRowClass(val));\n break;\n }\n this.styleService.setRowClass(event.value);\n this.cdr.detectChanges();\n break;\n case API.setCellClass:\n if (Array.isArray(event.value)) {\n event.value.forEach((val) => this.styleService.setCellClass(val));\n break;\n }\n this.styleService.setCellClass(event.value);\n break;\n case API.setRowStyle:\n if (Array.isArray(event.value)) {\n event.value.forEach((val) => this.styleService.setRowStyle(val));\n break;\n }\n this.styleService.setRowStyle(event.value);\n break;\n case API.setCellStyle:\n if (Array.isArray(event.value)) {\n event.value.forEach((val) => this.styleService.setCellStyle(val));\n break;\n }\n this.styleService.setCellStyle(event.value);\n break;\n case API.setTableClass:\n this.tableClass = event.value;\n this.cdr.detectChanges();\n break;\n case API.getPaginationTotalItems:\n return this.paginationComponent.paginationDirective.getTotalItems();\n case API.getPaginationCurrentPage:\n return this.paginationComponent.paginationDirective.getCurrent();\n case API.getPaginationLastPage:\n return this.paginationComponent.paginationDirective.getLastPage();\n case API.getNumberOfRowsPerPage:\n return this.paginationComponent.paginationDirective.isLastPage() ?\n (this.paginationComponent.paginationDirective.getTotalItems() % this.limit) :\n this.limit;\n case API.setPaginationCurrentPage:\n this.paginationComponent.paginationDirective.setCurrent(event.value);\n break;\n case API.setPaginationRange:\n this.paginationComponent.ranges = event.value;\n break;\n case API.setPaginationPreviousLabel:\n this.paginationComponent.previousLabel = event.value;\n break;\n case API.setPaginationNextLabel:\n this.paginationComponent.nextLabel = event.value;\n break;\n case API.setPaginationDisplayLimit:\n this.paginationComponent.changeLimit(event.value, true);\n break;\n case API.sortBy:\n const column: Columns = { title: '', key: event.value.column, orderBy: event.value.order };\n this.orderBy(column);\n this.cdr.detectChanges();\n break;\n default:\n break;\n }\n }\n\n private setColumnOrder(key: string): void {\n switch (this.sortState.get(key)) {\n case '':\n case undefined:\n this.sortState.set(key, 'desc');\n break;\n case 'asc':\n this.config.threeWaySort ?\n this.sortState.set(key, '') :\n this.sortState.set(key, 'desc');\n break;\n case 'desc':\n this.sortState.set(key, 'asc');\n break;\n }\n if (this.sortState.size > 1) {\n const temp = this.sortState.get(key);\n this.sortState.clear();\n this.sortState.set(key, temp);\n }\n }\n\n public emitEvent(event: string, value: any): void {\n this.event.emit({ event, value });\n if (this.config.persistState) {\n localStorage.setItem(event, JSON.stringify(value));\n }\n if (this.config.logger) {\n // tslint:disable-next-line:no-console\n console.log({ event, value });\n }\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Columns } from '../..';\n\n@Component({\n selector: 'table-header',\n templateUrl: './header.html',\n})\n\nexport class HeaderComponent {\n @Input() column: Columns;\n @Output() readonly update = new EventEmitter<Array<{ key: string; value: string }>>();\n\n unifyKey(key: string): string {\n return key.replace('.', '_');\n }\n\n onSearch(input: HTMLInputElement): void {\n this.update.emit([\n { value: input.value, key: this.column.key },\n ]);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Pipe({\n name: 'global',\n})\n\nexport class GlobalSearchPipe implements PipeTransform {\n transform(array: any[], filter: string, filteredCountSubject: Subject<number>): any {\n filteredCountSubject.next(0);\n if (typeof array === 'undefined') {\n return;\n }\n if (typeof filter === 'undefined' || Object.keys(filter).length === 0 || filter === '') {\n filteredCountSubject.next(array.length);\n return array;\n }\n const arr = array.filter((row) => {\n const element = JSON.stringify(Object.values(row));\n const strings = filter.split(',');\n return strings.some((string) => element.toLocaleLowerCase().indexOf(string.trim().toLocaleLowerCase()) > -1);\n });\n filteredCountSubject.next(arr.length);\n\n return arr;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class FiltersService {\n static getPath(p: string[], o: any): any {\n // https://github.com/dherges/ng-packagr/issues/696\n /* tslint:disable-next-line */\n const result = p.reduce((xs, x) => (xs && typeof xs[x] !== 'undefined') ? xs[x] : null, o);\n return result;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FiltersService } from '../services/filters.service';\n\n@Pipe({\n name: 'render',\n})\n\nexport class RenderPipe implements PipeTransform {\n transform(row: any, key: string): string {\n const split = key.split('.');\n\n return FiltersService.getPath(split, row);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FiltersService } from '../services/filters.service';\nimport { Config } from '..';\nimport { Subject } from 'rxjs';\n\n@Pipe({\n name: 'search',\n})\n\nexport class SearchPipe implements PipeTransform {\n private filters: { [key: string]: string } = {};\n\n transform(array: any[], filter: Array<{ value: string, key: string }>, filteredCountSubject: Subject<number>, config?: Config): any {\n filteredCountSubject.next(0);\n if (typeof array === 'undefined') {\n return;\n }\n if (typeof filter === 'undefined') {\n filteredCountSubject.next(array.length);\n return array;\n }\n filter.forEach((f) => {\n this.filters[f.key] = f.value.toString().toLocaleLowerCase();\n if (Object.keys(f).length === 0 || f.value === '') {\n delete this.filters[f.key];\n }\n });\n if (config && config.groupRows) {\n return array.map((arr) => this.filterGroup(arr, filteredCountSubject));\n }\n return this.filterGroup(array, filteredCountSubject);\n }\n\n private filterGroup(array: any[], filteredCountSubject: Subject<number>): any[] {\n const arr = array.filter((obj) => {\n return Object.keys(this.filters).every((c) => {\n const split = c.split('.');\n const val = FiltersService.getPath(split, obj);\n const element = (typeof val === 'object') ? JSON.stringify(val) : val.toString().toLocaleLowerCase();\n const strings = this.filters[c].split(',');\n return strings.some((string) => element.indexOf(string.trim()) > -1);\n });\n });\n filteredCountSubject.next(arr.length);\n return arr;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FiltersService } from '../services/filters.service';\nimport { Config } from '..';\n\n@Pipe({\n name: 'sort',\n})\nexport class SortPipe implements PipeTransform {\n private defaultArray: any[] = [];\n\n private static isNaN(aV: any, bV: any): boolean {\n return (isNaN(parseFloat(aV)) || !isFinite(aV)) || (isNaN(parseFloat(bV)) || !isFinite(bV));\n }\n\n private static compare(a: any[], b: any[], key: string): number {\n const split = key.split('.');\n const aPath = FiltersService.getPath(split, a);\n const bPath = FiltersService.getPath(split, b);\n const aValue = (aPath + '').toLowerCase();\n const bValue = (bPath + '').toLowerCase();\n if (SortPipe.isNaN(aPath, bPath)) {\n return aValue.localeCompare(bValue);\n } else {\n if (parseFloat(aPath) < parseFloat(bPath)) {\n return -1;\n }\n if (parseFloat(aPath) > parseFloat(bPath)) {\n return 1;\n }\n }\n\n return 0;\n }\n\n transform(array: any[], filter: { order: string, key: string }, config?: Config): any[] {\n if (this.defaultArray.length === 0) {\n this.defaultArray = array;\n }\n if (!filter.key || filter.key === '') {\n return array;\n }\n if (filter.order === '') {\n return this.defaultArray;\n }\n if (filter.order === 'asc') {\n return this.sortAsc(array, filter, config);\n } else {\n return this.sortDesc(array, filter, config);\n }\n }\n\n private sortAsc(array: any[], filter: { order: string, key: string }, config?: Config): any[] {\n if (config && config.groupRows) {\n return array.map((arr) => arr.sort((a, b) => SortPipe.compare(a, b, filter.key)));\n }\n return array.sort((a, b) => SortPipe.compare(a, b, filter.key));\n }\n\n private sortDesc(array: any[], filter: { order: string, key: string }, config?: Config): any[] {\n if (config && config.groupRows) {\n return array.map((arr) => arr.sort((a, b) => SortPipe.compare(b, a, filter.key)));\n }\n return array.sort((a, b) => SortPipe.compare(b, a, filter.key));\n }\n}\n","import {\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { Columns, Config, Event } from '../..';\nimport { StyleService } from '../../services/style.service';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: '[table-thead]',\n templateUrl: './thead.component.html',\n styles: [`\n .cdk-drag-preview {\n text-align: left;\n padding-top: 9px;\n padding-left: 4px;\n color: #50596c;\n border: 1px solid #e7e9ed;\n }\n `],\n providers: [StyleService],\n})\nexport class TableTHeadComponent {\n public menuActive = false;\n public openedHeaderActionTemplate: string | null = null;\n public startOffset;\n public onSelectAllBinded = this.onSelectAll.bind(this);\n\n @Input() config: Config;\n @Input() columns: Columns[];\n @Input() sortKey;\n @Input() sortState;\n @Input() selectAllTemplate;\n @Input() filtersTemplate;\n @Input() additionalActionsTemplate: TemplateRef<void>;\n @Output() readonly filter = new EventEmitter<Array<{ key: string; value: string }>>();\n @Output() readonly order = new EventEmitter<Columns>();\n @Output() readonly selectAll = new EventEmitter<void>();\n @Output() readonly event = new EventEmitter<{ event: string, value: any }>();\n @ViewChild('th', { static: false }) private th;\n @ViewChild('additionalActionMenu', { static: false }) additionalActionMenu;\n @HostListener('document:click', ['$event.target'])\n public onClick(targetElement: any): void {\n if (this.additionalActionMenu && !this.additionalActionMenu.nativeElement.contains(targetElement)) {\n this.menuActive = false;\n }\n }\n\n constructor(\n public readonly styleService: StyleService,\n ) {\n\n }\n\n getColumnDefinition(column: Columns): boolean {\n return column.searchEnabled || typeof column.searchEnabled === 'undefined';\n }\n\n orderBy(column: Columns): void {\n this.order.emit(column);\n }\n\n isOrderEnabled(column: Columns): boolean {\n const columnOrderEnabled = column.orderEnabled === undefined ? true : !!column.orderEnabled;\n return this.config.orderEnabled && columnOrderEnabled;\n }\n\n columnDrop(event: CdkDragDrop<string[]>): void {\n moveItemInArray(this.columns, event.previousIndex, event.currentIndex);\n }\n\n onSearch($event: Array<{ key: string; value: string }>): void {\n this.filter.emit($event);\n }\n\n getColumnWidth(column: any): string | null {\n if (column.width) {\n return column.width;\n }\n return this.config.fixedColumnWidth ? 100 / this.columns.length + '%' : null;\n }\n\n onSelectAll(): void {\n this.selectAll.emit();\n }\n\n onMouseDown(event: MouseEvent, th: HTMLTableHeaderCellElement): void {\n if (!this.config.resizeColumn) {\n return;\n }\n this.th = th;\n this.startOffset = th.offsetWidth - event.pageX;\n this.event.emit({\n event: Event.onColumnResizeMouseDown,\n value: event,\n });\n }\n\n onMouseMove(event: MouseEvent): void {\n if (!this.config.resizeColumn) {\n return;\n }\n if (this.th && this.th.style) {\n this.th.style.width = this.startOffset + event.pageX + 'px';\n this.th.style.cursor = 'col-resize';\n this.th.style['user-select'] = 'none';\n }\n }\n\n onMouseUp(event: MouseEvent): void {\n if (!this.config.resizeColumn) {\n return;\n }\n this.event.emit({\n event: Event.onColumnResizeMouseUp,\n value: event,\n });\n this.th.style.cursor = 'default';\n this.th = undefined;\n }\n\n showHeaderActionTemplateMenu(column: Columns): void {\n if (!column.headerActionTemplate) {\n console.error('Column [headerActionTemplate] property not defined');\n }\n if (this.openedHeaderActionTemplate === column.key) {\n this.openedHeaderActionTemplate = null;\n return;\n }\n this.openedHeaderActionTemplate = column.key;\n }\n\n showMenu(): void {\n if (!this.additionalActionsTemplate) {\n console.error('[additionalActionsTemplate] property not defined');\n }\n this.menuActive = !this.menuActive;\n }\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { BaseComponent } from './base.component';\n\nimport { HeaderComponent } from '../header/header.component';\nimport { PaginationComponent } from '../pagination/pagination.component';\n\nimport { GlobalSearchPipe } from '../../pipes/global-search-pipe';\nimport { RenderPipe } from '../../pipes/render-pipe';\nimport { SearchPipe } from '../../pipes/search-pipe';\nimport { SortPipe } from '../../pipes/sort.pipe';\n\nimport { NgxPaginationModule } from 'ngx-pagination';\nimport { TableTHeadComponent } from '../thead/thead.component';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n@NgModule({\n declarations: [\n BaseComponent,\n HeaderComponent,\n PaginationComponent,\n TableTHeadComponent,\n\n // Pipes\n SearchPipe,\n RenderPipe,\n GlobalSearchPipe,\n SortPipe,\n ],\n imports: [\n CommonModule,\n NgxPaginationModule,\n DragDropModule,\n ScrollingModule,\n ],\n exports: [BaseComponent],\n})\nexport class BaseModule {\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { BaseComponent } from './components/base/base.component';\nimport { BaseModule } from './components/base/base.module';\n\n@NgModule({\n imports: [\n CommonModule,\n BaseModule,\n ],\n bootstrap: [BaseComponent],\n exports: [BaseComponent],\n providers: [],\n})\nexport class TableModule {\n}\n"],"names":[],"mappings":"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"}