@angular-generic-table/core 5.0.0-rc.1 → 5.0.0-rc.5

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 (67) hide show
  1. package/angular-generic-table-core.d.ts +1 -3
  2. package/esm2020/angular-generic-table-core.mjs +5 -0
  3. package/esm2020/lib/core.component.mjs +118 -0
  4. package/esm2020/lib/core.module.mjs +23 -0
  5. package/esm2020/lib/core.service.mjs +14 -0
  6. package/esm2020/lib/enums/order.enum.mjs +6 -0
  7. package/esm2020/lib/models/table-column.interface.mjs +2 -0
  8. package/esm2020/lib/models/table-config.interface.mjs +2 -0
  9. package/esm2020/lib/models/table-info.interface.mjs +2 -0
  10. package/esm2020/lib/models/table-meta.interface.mjs +2 -0
  11. package/esm2020/lib/models/table-row.interface.mjs +2 -0
  12. package/esm2020/lib/models/table-sort.interface.mjs +2 -0
  13. package/esm2020/lib/pagination/pagination.component.mjs +63 -0
  14. package/esm2020/lib/pagination/pagination.module.mjs +18 -0
  15. package/esm2020/lib/pipes/capital-case.pipe.mjs +17 -0
  16. package/esm2020/lib/pipes/dash-case.pipe.mjs +17 -0
  17. package/esm2020/lib/pipes/dynamic.pipe.mjs +26 -0
  18. package/esm2020/lib/pipes/highlight.pipe.mjs +48 -0
  19. package/esm2020/lib/pipes/sort-class.pipe.mjs +16 -0
  20. package/esm2020/lib/utilities/utilities.mjs +38 -0
  21. package/esm2020/public-api.mjs +15 -0
  22. package/fesm2015/angular-generic-table-core.mjs +379 -0
  23. package/fesm2015/angular-generic-table-core.mjs.map +1 -0
  24. package/fesm2020/angular-generic-table-core.mjs +377 -0
  25. package/fesm2020/angular-generic-table-core.mjs.map +1 -0
  26. package/lib/core.component.d.ts +17 -16
  27. package/lib/core.module.d.ts +11 -0
  28. package/lib/core.service.d.ts +3 -0
  29. package/lib/models/table-column.interface.d.ts +8 -0
  30. package/lib/models/table-config.interface.d.ts +3 -2
  31. package/lib/models/table-meta.interface.d.ts +8 -0
  32. package/lib/models/table-row.interface.d.ts +2 -1
  33. package/lib/pagination/pagination.component.d.ts +14 -0
  34. package/lib/pagination/pagination.module.d.ts +8 -0
  35. package/lib/pipes/capital-case.pipe.d.ts +7 -0
  36. package/lib/pipes/dash-case.pipe.d.ts +3 -0
  37. package/lib/pipes/dynamic.pipe.d.ts +9 -0
  38. package/lib/pipes/highlight.pipe.d.ts +3 -0
  39. package/lib/pipes/sort-class.pipe.d.ts +3 -0
  40. package/lib/utilities/utilities.d.ts +1 -0
  41. package/package.json +19 -7
  42. package/public-api.d.ts +8 -0
  43. package/scss/index.scss +4 -0
  44. package/scss/mixins.scss +79 -0
  45. package/scss/tokens.scss +12 -0
  46. package/angular-generic-table-core.metadata.json +0 -1
  47. package/bundles/angular-generic-table-core.umd.js +0 -594
  48. package/bundles/angular-generic-table-core.umd.js.map +0 -1
  49. package/bundles/angular-generic-table-core.umd.min.js +0 -2
  50. package/bundles/angular-generic-table-core.umd.min.js.map +0 -1
  51. package/esm2015/angular-generic-table-core.js +0 -8
  52. package/esm2015/lib/core.component.js +0 -107
  53. package/esm2015/lib/core.module.js +0 -16
  54. package/esm2015/lib/core.service.js +0 -13
  55. package/esm2015/lib/enums/order.enum.js +0 -6
  56. package/esm2015/lib/models/table-column.interface.js +0 -2
  57. package/esm2015/lib/models/table-config.interface.js +0 -2
  58. package/esm2015/lib/models/table-info.interface.js +0 -2
  59. package/esm2015/lib/models/table-row.interface.js +0 -2
  60. package/esm2015/lib/models/table-sort.interface.js +0 -2
  61. package/esm2015/lib/pipes/dash-case.pipe.js +0 -13
  62. package/esm2015/lib/pipes/highlight.pipe.js +0 -44
  63. package/esm2015/lib/pipes/sort-class.pipe.js +0 -12
  64. package/esm2015/lib/utilities/utilities.js +0 -25
  65. package/esm2015/public-api.js +0 -7
  66. package/fesm2015/angular-generic-table-core.js +0 -234
  67. package/fesm2015/angular-generic-table-core.js.map +0 -1
@@ -1,234 +0,0 @@
1
- import { ɵɵdefineInjectable, Injectable, Component, ChangeDetectionStrategy, Input, Pipe, NgModule } from '@angular/core';
2
- import { of, BehaviorSubject, ReplaySubject, isObservable, combineLatest } from 'rxjs';
3
- import { startWith, map, switchMap, shareReplay, withLatestFrom } from 'rxjs/operators';
4
- import { CommonModule } from '@angular/common';
5
-
6
- class CoreService {
7
- constructor() { }
8
- }
9
- CoreService.ɵprov = ɵɵdefineInjectable({ factory: function CoreService_Factory() { return new CoreService(); }, token: CoreService, providedIn: "root" });
10
- CoreService.decorators = [
11
- { type: Injectable, args: [{
12
- providedIn: 'root'
13
- },] }
14
- ];
15
- CoreService.ctorParameters = () => [];
16
-
17
- var Order;
18
- (function (Order) {
19
- Order["ASC"] = "asc";
20
- Order["DESC"] = "desc";
21
- })(Order || (Order = {}));
22
-
23
- let dashed;
24
- dashed = (s) => s.replace(/[A-Z]/g, m => '-' + m.toLowerCase());
25
- let chunk;
26
- chunk = (array, chunkSize) => {
27
- if (chunkSize < 0) {
28
- throw new Error('Invalid chunk size');
29
- }
30
- if (chunkSize === 0 && !chunkSize) {
31
- return [array];
32
- }
33
- const CHUNK = [];
34
- for (let i = 0, len = array.length; i < len; i += chunkSize) {
35
- CHUNK.push(array.slice(i, i + chunkSize));
36
- }
37
- return CHUNK;
38
- };
39
- let search;
40
- search = (text, caseSensitive, data, config) => {
41
- const searchColumns = Object.keys(config.columns).filter(key => !config.columns[key].hidden && config.columns[key].search !== false);
42
- return data.filter(row => Object.entries(row)
43
- .filter(([key, value]) => searchColumns.indexOf(key) !== -1)
44
- .reduce((prev, [key, value]) => prev + (prev === '' ? '' : ' & ') + (caseSensitive ? value + '' : (value + '').toLowerCase()), '')
45
- .indexOf(text) !== -1);
46
- };
47
-
48
- class CoreComponent {
49
- constructor() {
50
- this.loading$ = of(false);
51
- this.sortBy$ = new BehaviorSubject({
52
- sortBy: 'firstName',
53
- sortByOrder: Order.ASC,
54
- });
55
- // tslint:disable-next-line:variable-name
56
- this._searchBy$ = new ReplaySubject(1);
57
- this.searchBy$ = this._searchBy$.pipe(startWith(''), map((value) => (isObservable(value) ? value : of(value))), switchMap((obs) => obs), shareReplay(1));
58
- // tslint:disable-next-line:variable-name
59
- this._tableConfig$ = new ReplaySubject(1);
60
- this.tableConfig$ = this._tableConfig$.pipe(map((value) => (isObservable(value) ? value : of(value))), switchMap((obs) => obs), shareReplay(1));
61
- // tslint:disable-next-line:variable-name
62
- this._data$ = new ReplaySubject(1);
63
- this.data$ = this._data$.pipe(map((value) => (isObservable(value) ? value : of(value))), switchMap((obs) => combineLatest([obs, this.sortBy$, this.searchBy$])), withLatestFrom(this.tableConfig$), map(([[data, sortBy, searchBy], config]) => {
64
- return !sortBy
65
- ? searchBy
66
- ? search(searchBy, false, data, config)
67
- : data
68
- : (searchBy ? search(searchBy, false, data, config) : data).sort((a, b) => a[sortBy.sortBy] > b[sortBy.sortBy]
69
- ? sortBy.sortByOrder === Order.ASC
70
- ? 1
71
- : -1
72
- : b[sortBy.sortBy] > a[sortBy.sortBy]
73
- ? sortBy.sortByOrder === Order.ASC
74
- ? -1
75
- : 1
76
- : 0);
77
- }));
78
- this.table$ = combineLatest([
79
- this.data$,
80
- this.tableConfig$,
81
- ]).pipe(map(([sorted, config]) => {
82
- // if pagination is disabled...
83
- if (!config.pagination || config.pagination.length === 0) {
84
- // ...return unaltered array
85
- return { data: [sorted], config, info: { records: sorted.length, pageTotal: 1 } };
86
- }
87
- // return record set
88
- return {
89
- data: chunk(sorted, +config.pagination.length),
90
- config,
91
- info: {
92
- records: sorted.length,
93
- pageTotal: Math.ceil(sorted.length / +config.pagination.length),
94
- },
95
- };
96
- }));
97
- // tslint:disable-next-line:variable-name
98
- this._currentPage$ = new BehaviorSubject(0);
99
- this.currentPage$ = this._currentPage$.pipe(map((value) => (isObservable(value) ? value : of(value))), switchMap((obs) => obs), withLatestFrom(this.table$), map(([page, table]) => {
100
- // determine last page
101
- const lastPage = Math.ceil(table.info.records / table.config.pagination.length) - 1;
102
- // determine max/min position
103
- return +page < 0 ? 0 : +page > lastPage ? lastPage : +page;
104
- }), shareReplay(1));
105
- this.columnOrder = (a, b) => {
106
- return (a.value.order || 0) - (b.value.order || 0);
107
- };
108
- }
109
- set page(value) {
110
- this._currentPage$.next(value);
111
- }
112
- set search(value) {
113
- this._searchBy$.next(value);
114
- }
115
- set config(value) {
116
- this._tableConfig$.next(value);
117
- }
118
- set data(value) {
119
- this._data$.next(value);
120
- }
121
- sort(property) {
122
- var _a, _b, _c;
123
- const newSortOrder = ((_a = this.sortBy$.getValue()) === null || _a === void 0 ? void 0 : _a.sortBy) !== property ||
124
- ((_b = this.sortBy$.getValue()) === null || _b === void 0 ? void 0 : _b.sortByOrder) === Order.DESC ||
125
- !((_c = this.sortBy$.getValue()) === null || _c === void 0 ? void 0 : _c.sortByOrder)
126
- ? Order.ASC
127
- : Order.DESC;
128
- this.sortBy$.next({
129
- sortBy: property,
130
- sortByOrder: newSortOrder,
131
- });
132
- }
133
- ngOnInit() { }
134
- }
135
- CoreComponent.decorators = [
136
- { type: Component, args: [{
137
- selector: 'angular-generic-table',
138
- template: "<table class=\"table text-nowrap mb-0\" id=\"agreementList_table\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let column of (tableConfig$ | async)!.columns | keyvalue: columnOrder\">\n <th\n *ngIf=\"!column.value?.hidden\"\n ngClass=\"{{ column.value?.sortable ? 'sort ' : '' }} {{ sortBy$ | async | sortClass: column.key }} {{\n (column.key | dashCase) + '-column'\n }}\"\n [class.disabled]=\"loading$ | async\"\n (click)=\"!column.value.sortable || sort(column.key)\"\n >\n <span>{{ column.value?.header || column.key }}</span>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody *ngIf=\"false !== false; else tableContent\">\n <tr>\n <!-- <td class=\"p-0\" [colSpan]=\"colspan$ | async\">-->\n <td class=\"p-0\">\n <div class=\"skeleton-loader skeleton-loader-table\"></div>\n </td>\n </tr>\n </tbody>\n</table>\n<ng-template #tableContent>\n <ng-container\n *ngIf=\"(table$ | async)! as table\"\n >\n <tbody id=\"agreementList_tableContent\" *ngIf=\"table!.data!.length > 0; else noData\">\n <tr *ngFor=\"let row of table!.data![(currentPage$ | async) || 0]; let i = index\" [attr.id]=\"'tableRow_' + i\">\n <ng-container *ngFor=\"let column of table.config?.columns | keyvalue: columnOrder\">\n <td *ngIf=\"!column.value?.hidden\">\n <!--<ng-container *ngIf=\"column.value.template === 'actions'\">\n <ng-container\n *ngTemplateOutlet=\"actionsColumn; context: { agreement: agreement, index: i }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"column.value.template === 'date'\">\n <ng-container\n *ngTemplateOutlet=\"dateColumn; context: { agreement: agreement, column: column.key }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"column.value.template === 'name'\">\n <ng-container *ngTemplateOutlet=\"nameColumn; context: { agreement: agreement }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"column.value.template === 'badge'\">\n <ng-container *ngTemplateOutlet=\"badgeColumn; context: { agreement: agreement }\"></ng-container>\n </ng-container>-->\n <ng-container [ngTemplateOutlet]=\"(searchBy$ | async) ? highlighted: tableRow\" [ngTemplateOutletContext]=\"{row: row, column: column, search: (searchBy$ | async) }\"></ng-container>\n </td>\n </ng-container>\n </tr>\n </tbody>\n </ng-container>\n</ng-template>\n<ng-template #noData></ng-template>\n<ng-template #highlighted let-row=\"row\" let-column=\"column\" let-search=\"search\">\n <div [innerHTML]=\"(row[column.key] | highlight: search)\"></div>\n</ng-template>\n<ng-template #tableRow let-row=\"row\" let-column=\"column\">\n {{row[column.key]}}\n</ng-template>\n",
139
- changeDetection: ChangeDetectionStrategy.OnPush
140
- },] }
141
- ];
142
- CoreComponent.ctorParameters = () => [];
143
- CoreComponent.propDecorators = {
144
- page: [{ type: Input }],
145
- search: [{ type: Input }],
146
- config: [{ type: Input }],
147
- data: [{ type: Input }]
148
- };
149
-
150
- class SortClassPipe {
151
- transform(selection, property) {
152
- return selection.sortBy === property ? 'sort-' + selection.sortByOrder : '';
153
- }
154
- }
155
- SortClassPipe.decorators = [
156
- { type: Pipe, args: [{
157
- name: 'sortClass'
158
- },] }
159
- ];
160
-
161
- class DashCasePipe {
162
- transform(s) {
163
- return dashed(s);
164
- }
165
- }
166
- DashCasePipe.decorators = [
167
- { type: Pipe, args: [{
168
- name: 'dashCase'
169
- },] }
170
- ];
171
-
172
- class HighlightPipe {
173
- transform(text, searchTerm) {
174
- if (!searchTerm) {
175
- return text;
176
- }
177
- const haystackAlwaysString = text + '';
178
- let highlightedText = haystackAlwaysString; // fallback
179
- let searchPattern;
180
- try {
181
- searchPattern = new RegExp('(' +
182
- // @ts-ignore
183
- searchTerm
184
- .toLowerCase()
185
- .match(/".*?"|[^ ]+/g) // extract words
186
- .map(needle => needle.replace(/"(.*?)"/, '$1') // strip away '"'
187
- )
188
- .join('|') + // combine words
189
- ')', 'ig');
190
- }
191
- catch (error) {
192
- return highlightedText;
193
- }
194
- const containsTagPattern = /(<.*?>)(.*)(<\/.*?>)/gi;
195
- const containsTagMatches = containsTagPattern.exec(haystackAlwaysString);
196
- if (containsTagMatches) {
197
- // tag exists in haystack
198
- highlightedText =
199
- containsTagMatches[1] +
200
- containsTagMatches[2].replace(searchPattern, '<span class="gt-highlight-search">$1</span>') +
201
- containsTagMatches[3];
202
- }
203
- else {
204
- highlightedText = haystackAlwaysString.replace(searchPattern, '<span class="gt-highlight-search">$1</span>');
205
- }
206
- return highlightedText;
207
- }
208
- }
209
- HighlightPipe.decorators = [
210
- { type: Pipe, args: [{
211
- name: 'highlight'
212
- },] }
213
- ];
214
-
215
- class GenericTableCoreModule {
216
- }
217
- GenericTableCoreModule.decorators = [
218
- { type: NgModule, args: [{
219
- declarations: [CoreComponent, SortClassPipe, DashCasePipe, HighlightPipe],
220
- imports: [CommonModule],
221
- exports: [CoreComponent]
222
- },] }
223
- ];
224
-
225
- /*
226
- * Public API Surface of core
227
- */
228
-
229
- /**
230
- * Generated bundle index. Do not edit.
231
- */
232
-
233
- export { CoreComponent, CoreService, GenericTableCoreModule, SortClassPipe as ɵa, DashCasePipe as ɵb, HighlightPipe as ɵc };
234
- //# sourceMappingURL=angular-generic-table-core.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"angular-generic-table-core.js","sources":["../../projects/core/src/lib/core.service.ts","../projects/core/src/lib/enums/order.enum.ts","../projects/core/src/lib/utilities/utilities.ts","../../projects/core/src/lib/core.component.ts","../projects/core/src/lib/pipes/sort-class.pipe.ts","../projects/core/src/lib/pipes/dash-case.pipe.ts","../projects/core/src/lib/pipes/highlight.pipe.ts","../../projects/core/src/lib/core.module.ts","../../../projects/core/src/public-api.ts","../../../projects/core/src/angular-generic-table-core.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CoreService {\n constructor() {}\n}\n","export enum Order {\n ASC = 'asc',\n DESC = 'desc'\n}\n","import { TableRow } from '../models/table-row.interface';\nimport { TableConfig } from '../models/table-config.interface';\n\nexport let dashed: (s: string) => string;\ndashed = (s: string) => s.replace(/[A-Z]/g, m => '-' + m.toLowerCase());\n\nexport let chunk: (array: Array<any>, chunkSize: number) => Array<Array<TableRow>>;\nchunk = (array, chunkSize) => {\n if (chunkSize < 0) {\n throw new Error('Invalid chunk size');\n }\n if (chunkSize === 0 && !chunkSize) {\n return [array];\n }\n const CHUNK = [];\n for (let i = 0, len = array.length; i < len; i += chunkSize) {\n CHUNK.push(array.slice(i, i + chunkSize));\n }\n return CHUNK;\n};\n\nexport let search: (text: string, caseSensitive: boolean, data: Array<TableRow>, config: TableConfig) => TableRow[];\nsearch = (text: string, caseSensitive: boolean, data: Array<TableRow>, config: TableConfig) => {\n const searchColumns = Object.keys(config.columns).filter(\n key => !config.columns[key].hidden && config.columns[key].search !== false\n );\n return data.filter(\n row =>\n Object.entries(row)\n .filter(([key, value]) => searchColumns.indexOf(key) !== -1)\n .reduce(\n (prev, [key, value]): string =>\n prev + (prev === '' ? '' : ' & ') + (caseSensitive ? value + '' : (value + '').toLowerCase()),\n ''\n )\n .indexOf(text) !== -1\n );\n};\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { BehaviorSubject, combineLatest, isObservable, Observable, of, ReplaySubject } from 'rxjs';\nimport { TableConfig } from './models/table-config.interface';\nimport { KeyValue } from '@angular/common';\nimport { map, shareReplay, startWith, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { TableColumn } from './models/table-column.interface';\nimport { Order } from './enums/order.enum';\nimport { chunk, search } from './utilities/utilities';\nimport { TableRow } from './models/table-row.interface';\nimport { TableSort } from './models/table-sort.interface';\nimport { TableInfo } from './models/table-info.interface';\n\n@Component({\n selector: 'angular-generic-table',\n templateUrl: './core.component.html',\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CoreComponent implements OnInit {\n @Input()\n set page(value: Observable<number> | number) {\n this._currentPage$.next(value);\n }\n\n @Input()\n set search(value: Observable<string> | string) {\n this._searchBy$.next(value);\n }\n\n @Input()\n set config(value: Observable<TableConfig> | TableConfig) {\n this._tableConfig$.next(value);\n }\n\n @Input()\n set data(value: Observable<Array<TableRow>> | Array<TableRow>) {\n this._data$.next(value);\n }\n constructor() {}\n\n loading$ = of(false);\n\n sortBy$: BehaviorSubject<any> = new BehaviorSubject({\n sortBy: 'firstName',\n sortByOrder: Order.ASC,\n });\n\n // tslint:disable-next-line:variable-name\n private _searchBy$: ReplaySubject<Observable<string> | string> = new ReplaySubject(1);\n searchBy$: Observable<string> = this._searchBy$.pipe(\n startWith(''),\n map((value) => (isObservable(value) ? value : of(value))),\n switchMap((obs) => obs),\n shareReplay(1)\n );\n\n // tslint:disable-next-line:variable-name\n private _tableConfig$: ReplaySubject<TableConfig | Observable<TableConfig>> = new ReplaySubject(1);\n tableConfig$: Observable<TableConfig> = this._tableConfig$.pipe(\n map((value) => (isObservable(value) ? value : of(value))),\n switchMap((obs) => obs),\n shareReplay(1)\n );\n\n // tslint:disable-next-line:variable-name\n private _data$: ReplaySubject<Array<TableRow> | Observable<Array<TableRow>>> = new ReplaySubject(1);\n data$: Observable<Array<TableRow>> = this._data$.pipe(\n map((value) => (isObservable(value) ? value : of(value))),\n switchMap((obs) => combineLatest([obs, this.sortBy$, this.searchBy$])),\n withLatestFrom(this.tableConfig$),\n map(([[data, sortBy, searchBy], config]) => {\n return !sortBy\n ? searchBy\n ? search(searchBy, false, data, config)\n : data\n : (searchBy ? search(searchBy, false, data, config) : data).sort((a, b) =>\n a[sortBy.sortBy] > b[sortBy.sortBy]\n ? sortBy.sortByOrder === Order.ASC\n ? 1\n : -1\n : b[sortBy.sortBy] > a[sortBy.sortBy]\n ? sortBy.sortByOrder === Order.ASC\n ? -1\n : 1\n : 0\n );\n })\n );\n\n table$: Observable<{ data: Array<Array<TableRow>>; config: TableConfig; info: TableInfo }> = combineLatest([\n this.data$,\n this.tableConfig$,\n ]).pipe(\n map(([sorted, config]) => {\n // if pagination is disabled...\n if (!config.pagination || config.pagination.length === 0) {\n // ...return unaltered array\n return { data: [sorted], config, info: { records: sorted.length, pageTotal: 1 } };\n }\n // return record set\n return {\n data: chunk(sorted, +config.pagination.length),\n config,\n info: {\n records: sorted.length,\n pageTotal: Math.ceil(sorted.length / +config.pagination.length),\n },\n };\n })\n );\n\n // tslint:disable-next-line:variable-name\n private _currentPage$: BehaviorSubject<any> = new BehaviorSubject(0);\n currentPage$ = this._currentPage$.pipe(\n map((value) => (isObservable(value) ? (value as Observable<number>) : (of(value) as Observable<number>))),\n switchMap((obs) => obs),\n withLatestFrom(this.table$),\n map(([page, table]: any) => {\n // determine last page\n const lastPage = Math.ceil(table.info.records / table.config.pagination.length) - 1;\n // determine max/min position\n return +page < 0 ? 0 : +page > lastPage ? lastPage : +page;\n }),\n shareReplay(1)\n );\n\n sort(property: string): void {\n const newSortOrder =\n this.sortBy$.getValue()?.sortBy !== property ||\n this.sortBy$.getValue()?.sortByOrder === Order.DESC ||\n !this.sortBy$.getValue()?.sortByOrder\n ? Order.ASC\n : Order.DESC;\n this.sortBy$.next({\n sortBy: property,\n sortByOrder: newSortOrder,\n });\n }\n\n ngOnInit() {}\n\n columnOrder = (a: KeyValue<string, TableColumn>, b: KeyValue<string, TableColumn>): number => {\n return (a.value.order || 0) - (b.value.order || 0);\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Order } from '../enums/order.enum';\n\n@Pipe({\n name: 'sortClass'\n})\nexport class SortClassPipe implements PipeTransform {\n transform(selection: { sortBy: string; sortByOrder: Order } | any, property: string): string {\n return selection.sortBy === property ? 'sort-' + selection.sortByOrder : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { dashed } from '../utilities/utilities';\n\n@Pipe({\n name: 'dashCase'\n})\nexport class DashCasePipe implements PipeTransform {\n transform(s: string): any {\n return dashed(s);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'highlight'\n})\nexport class HighlightPipe implements PipeTransform {\n transform(text: any, searchTerm: string | null): string {\n if (!searchTerm) {\n return text;\n }\n const haystackAlwaysString = text + '';\n let highlightedText = haystackAlwaysString; // fallback\n\n let searchPattern;\n try {\n searchPattern = new RegExp(\n '(' +\n // @ts-ignore\n searchTerm\n .toLowerCase()\n .match(/\".*?\"|[^ ]+/g) // extract words\n .map(\n needle => needle.replace(/\"(.*?)\"/, '$1') // strip away '\"'\n )\n .join('|') + // combine words\n ')',\n 'ig'\n );\n } catch (error) {\n return highlightedText;\n }\n\n const containsTagPattern = /(<.*?>)(.*)(<\\/.*?>)/gi;\n const containsTagMatches = containsTagPattern.exec(haystackAlwaysString);\n\n if (containsTagMatches) {\n // tag exists in haystack\n highlightedText =\n containsTagMatches[1] +\n containsTagMatches[2].replace(searchPattern, '<span class=\"gt-highlight-search\">$1</span>') +\n containsTagMatches[3];\n } else {\n highlightedText = haystackAlwaysString.replace(searchPattern, '<span class=\"gt-highlight-search\">$1</span>');\n }\n\n return highlightedText;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreComponent } from './core.component';\nimport { CommonModule } from '@angular/common';\nimport { SortClassPipe } from './pipes/sort-class.pipe';\nimport { DashCasePipe } from './pipes/dash-case.pipe';\nimport { HighlightPipe } from './pipes/highlight.pipe';\n\n@NgModule({\n declarations: [CoreComponent, SortClassPipe, DashCasePipe, HighlightPipe],\n imports: [CommonModule],\n exports: [CoreComponent]\n})\nexport class GenericTableCoreModule {}\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib/core.service';\nexport * from './lib/core.component';\nexport * from './lib/core.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {DashCasePipe as ɵb} from './lib/pipes/dash-case.pipe';\nexport {HighlightPipe as ɵc} from './lib/pipes/highlight.pipe';\nexport {SortClassPipe as ɵa} from './lib/pipes/sort-class.pipe';"],"names":[],"mappings":"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"}