UNPKG

ngx-easy-table

Version:
1 lines 74 kB
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://ngx-easy-table/lib/model/config.ts","ng://ngx-easy-table/lib/model/event.enum.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"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__read","o","m","Symbol","iterator","r","e","ar","next","done","push","value","error","__spread","concat","TINY","BIG","NORMAL","LIGHT","DARK","onPagination","onOrder","onGlobalSearch","onSearch","onClick","onDoubleClick","onCheckboxSelect","onRadioSelect","onCheckboxToggle","onSelectAll","onInfiniteScrollEnd","onColumnResizeMouseDown","onColumnResizeMouseUp","onRowDrop","onRowCollapsedShow","onRowCollapsedHide","onRowContextMenu","rowContextMenuClicked","setInputValue","toolPanelClicked","toggleRowIndex","toggleCheckbox","setPaginationCurrentPage","getPaginationCurrentPage","getPaginationTotalItems","getNumberOfRowsPerPage","getPaginationLastPage","setPaginationRange","setPaginationPreviousLabel","setPaginationNextLabel","setPaginationDisplayLimit","setTableClass","setRowClass","setCellClass","setRowStyle","setCellStyle","sortBy","DefaultConfig","searchEnabled","headerEnabled","orderEnabled","orderEventOnly","paginationEnabled","exportEnabled","clickEvent","selectRow","selectCol","selectCell","rows","additionalActions","serverPagination","isLoading","detailsTemplate","groupRows","paginationRangeEnabled","collapseAllRows","checkboxes","radio","resizeColumn","fixedColumnWidth","horizontalScroll","draggable","logger","showDetailsArrow","showContextMenu","persistState","paginationMaxSize","threeWaySort","tableLayout","style","STYLE","theme","THEME","borderless","hover","striped","DefaultConfigService","config","Injectable","PaginationComponent","updateRange","EventEmitter","ranges","showRange","screenReaderPaginationLabel","screenReaderPageLabel","screenReaderCurrentLabel","previousLabel","nextLabel","directionLinks","targetElement","paginationRange","nativeElement","contains","ngOnChanges","changes","currentValue","selectedLimit","onPageChange","page","emit","limit","changeLimit","callFromAPI","Component","args","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","ViewChild","static","Input","Output","HostListener","GroupRowsService","doGroupRows","data","groupRowsBy","grouped","from","pipe","groupBy","row","flatMap","group","reduce","acc","curr","subscribe","StyleService","val","document","querySelector","classList","add","className","cell","attr","pinnedWidth","pinned","column","BaseComponent","cdr","scrollDispatcher","styleService","_this","unsubscribe","Subject","filterCount","filteredCountSubject","tableClass","isSelected","count","sortState","Map","sortKey","rowContextMenuPosition","top","left","key","order","selectedDetailsTemplateRowId","Set","selectedCheckboxes","loadingHeight","id","event","subscription","takeUntil","detectChanges","onContextMenuClick","contextMenu","ngOnInit","columns","console","configuration","doDecodePersistedState","ngOnDestroy","complete","ngAfterViewInit","throttleValue","infiniteScrollThrottleTime","scrolled","throttleTime","filter","viewPort","getRenderedRange","end","getDataLength","emitEvent","Event","pagination","doApplyData","_a","offset","collapseRow","index","orderBy","setColumnOrder","get","$event","colIndex","rowIndex","selectedRow","selectedCol","rowId","colId","term","globalSearchTerm","has","delete","localStorage","getItem","sort","search","JSON","parse","bindApi","type","API","isRowCollapsed","defineProperty","table","getElementById","getLoadingHeight","offsetHeight","preventDefault","y","x","find","c","set","onDrop","moveItemInArray","previousIndex","currentIndex","apiEvent","forEach","input","element","Array","isArray","paginationComponent","paginationDirective","getTotalItems","getCurrent","getLastPage","isLastPage","setCurrent","title","undefined","size","temp","clear","setItem","stringify","log","providers","ChangeDetectorRef","ScrollDispatcher","ContentChild","TemplateRef","CdkVirtualScrollViewport","HeaderComponent","update","unifyKey","replace","GlobalSearchPipe","transform","array","keys","arr","values","split","some","string","toLocaleLowerCase","indexOf","trim","Pipe","name","FiltersService","getPath","xs","RenderPipe","SearchPipe","filters","f","toString","map","filterGroup","obj","every","SortPipe","defaultArray","isNaN","aV","bV","parseFloat","isFinite","compare","a","b","aPath","bPath","aValue","toLowerCase","bValue","localeCompare","sortAsc","sortDesc","TableTHeadComponent","menuActive","openedHeaderActionTemplate","onSelectAllBinded","bind","selectAll","additionalActionMenu","getColumnDefinition","isOrderEnabled","columnOrderEnabled","columnDrop","getColumnWidth","width","onMouseDown","th","startOffset","offsetWidth","pageX","onMouseMove","cursor","onMouseUp","showHeaderActionTemplateMenu","headerActionTemplate","showMenu","additionalActionsTemplate","BaseModule","NgModule","declarations","imports","CommonModule","NgxPaginationModule","DragDropModule","ScrollingModule","exports","TableModule","bootstrap"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\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 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"]}