@universis/ngx-tables 6.13.3 → 6.13.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 (34) hide show
  1. package/bundles/universis-ngx-tables.umd.js +156 -11
  2. package/bundles/universis-ngx-tables.umd.js.map +1 -1
  3. package/bundles/universis-ngx-tables.umd.min.js +1 -1
  4. package/bundles/universis-ngx-tables.umd.min.js.map +1 -1
  5. package/esm2015/lib/components/advanced-aggregator/advanced-aggregator.component.js +6 -3
  6. package/esm2015/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +6 -3
  7. package/esm2015/lib/components/advanced-table/advanced-table.component.js +96 -5
  8. package/esm2015/lib/components/advanced-table/advanced-table.formatters.interface.js +6 -31
  9. package/esm2015/lib/components/advanced-table/custom-button.formatter.js +45 -0
  10. package/esm2015/lib/i18n/tables.el.js +3 -2
  11. package/esm2015/lib/i18n/tables.en.js +3 -2
  12. package/esm2015/universis-ngx-tables.js +5 -4
  13. package/esm5/lib/components/advanced-aggregator/advanced-aggregator.component.js +6 -3
  14. package/esm5/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +6 -3
  15. package/esm5/lib/components/advanced-table/advanced-table.component.js +101 -5
  16. package/esm5/lib/components/advanced-table/advanced-table.formatters.interface.js +6 -31
  17. package/esm5/lib/components/advanced-table/custom-button.formatter.js +56 -0
  18. package/esm5/lib/i18n/tables.el.js +3 -2
  19. package/esm5/lib/i18n/tables.en.js +3 -2
  20. package/esm5/universis-ngx-tables.js +5 -4
  21. package/fesm2015/universis-ngx-tables.js +140 -10
  22. package/fesm2015/universis-ngx-tables.js.map +1 -1
  23. package/fesm5/universis-ngx-tables.js +155 -11
  24. package/fesm5/universis-ngx-tables.js.map +1 -1
  25. package/lib/components/advanced-aggregator/advanced-aggregator.component.d.ts +2 -1
  26. package/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.d.ts +2 -1
  27. package/lib/components/advanced-table/advanced-table.component.d.ts +6 -2
  28. package/lib/components/advanced-table/advanced-table.formatters.interface.d.ts +5 -17
  29. package/lib/components/advanced-table/custom-button.formatter.d.ts +11 -0
  30. package/lib/i18n/tables.el.d.ts +1 -0
  31. package/lib/i18n/tables.en.d.ts +1 -0
  32. package/package.json +1 -1
  33. package/universis-ngx-tables.d.ts +5 -4
  34. package/universis-ngx-tables.metadata.json +1 -1
@@ -22,8 +22,8 @@ import { BsModalRef, BsModalService, ModalModule } from 'ngx-bootstrap/modal';
22
22
  import { ProgressbarModule } from 'ngx-bootstrap/progressbar';
23
23
  import { GroupByPipe, NgPipesModule } from 'ngx-pipes';
24
24
  import { template, at, cloneDeep, isEmpty } from 'lodash';
25
- import { __extends, __awaiter, __generator, __values, __assign, __spread } from 'tslib';
26
- import { Injectable, Directive, Optional, Input, Pipe, Component, EventEmitter, Output, ElementRef, ViewChild, ViewEncapsulation, NgModule, CUSTOM_ELEMENTS_SCHEMA, defineInjectable, inject, HostListener, ChangeDetectorRef, InjectionToken, Inject, Injector, ViewContainerRef, ChangeDetectionStrategy } from '@angular/core';
25
+ import { __extends, __awaiter, __generator, __values, __spread, __assign } from 'tslib';
26
+ import { Injectable, Directive, Optional, Input, Component, ElementRef, ViewChild, ViewEncapsulation, EventEmitter, Output, Pipe, NgModule, CUSTOM_ELEMENTS_SCHEMA, defineInjectable, inject, HostListener, ChangeDetectorRef, InjectionToken, Inject, Injector, ViewContainerRef, ChangeDetectionStrategy } from '@angular/core';
27
27
  import { ActivatedRoute, Router, NavigationStart, NavigationEnd, RouterModule } from '@angular/router';
28
28
  import { createFeatureSelector, createSelector, select, Store } from '@ngrx/store';
29
29
  import { skip, first, filter } from 'rxjs/operators';
@@ -1860,6 +1860,7 @@ var AdvancedTableComponent = /** @class */ (function () {
1860
1860
  this.height = 800;
1861
1861
  this.showActions = true;
1862
1862
  this.autoLoad = true;
1863
+ this.customEvent = new EventEmitter();
1863
1864
  this.load = new EventEmitter();
1864
1865
  this.init = new EventEmitter();
1865
1866
  this.reload = new EventEmitter();
@@ -1872,6 +1873,8 @@ var AdvancedTableComponent = /** @class */ (function () {
1872
1873
  this.beforeServerData = new EventEmitter();
1873
1874
  this.afterServerData = new EventEmitter();
1874
1875
  this.loading = new EventEmitter();
1876
+ this.showDetails = new EventEmitter();
1877
+ this.hideDetails = new EventEmitter();
1875
1878
  this.scrollable = true;
1876
1879
  this.serverSide = true;
1877
1880
  this.lengthMenu = [50, 100, 200, 500];
@@ -2520,7 +2523,7 @@ var AdvancedTableComponent = /** @class */ (function () {
2520
2523
  function (cell, cellData, rowData, rowIndex, colIndex) {
2521
2524
  items_1.forEach(function (columnFormatter) {
2522
2525
  /** @type {?} */
2523
- var formatter = self._columnFormatters[columnFormatter.formatter];
2526
+ var formatter = /** @type {?} */ ((self._columnFormatters[columnFormatter.formatter]));
2524
2527
  if (formatter && typeof formatter.afterRender === 'function') {
2525
2528
  formatter.afterRender.bind(column)(cell, cellData, rowData, rowIndex, colIndex);
2526
2529
  }
@@ -2537,12 +2540,14 @@ var AdvancedTableComponent = /** @class */ (function () {
2537
2540
  render: formatter.render.bind(column),
2538
2541
  });
2539
2542
  }
2540
- if (formatter && typeof formatter.afterRender === 'function') {
2543
+ /** @type {?} */
2544
+ var afterRenderFormatter = /** @type {?} */ ((formatter));
2545
+ if (afterRenderFormatter && typeof afterRenderFormatter.afterRender === 'function') {
2541
2546
  Object.assign(columnDefinition, {
2542
2547
  render: formatter.render.bind(column),
2543
2548
  });
2544
2549
  Object.assign(columnDefinition, {
2545
- createdCell: formatter.afterRender.bind(column),
2550
+ createdCell: afterRenderFormatter.afterRender.bind(column),
2546
2551
  });
2547
2552
  }
2548
2553
  }
@@ -2680,6 +2685,64 @@ var AdvancedTableComponent = /** @class */ (function () {
2680
2685
  }
2681
2686
  });
2682
2687
  }
2688
+ // display row details
2689
+ if (this.detailsTemplate) {
2690
+ /** @type {?} */
2691
+ var detailsString_1 = this._translateService.instant('Tables.RowDetails');
2692
+ /** @type {?} */
2693
+ var firstColumn = this.config.columns[0];
2694
+ /** @type {?} */
2695
+ var showDetailsColumnDefinition = {
2696
+ className: 'details-control pl-4 pr-0',
2697
+ data: firstColumn.property || firstColumn.name,
2698
+ defaultContent: '',
2699
+ title: '',
2700
+ sortable: false,
2701
+ visible: !this.customSelect,
2702
+ name: firstColumn.name,
2703
+ render: function () {
2704
+ return "<button role=\"button\" title=\"" + detailsString_1 + "\" arial-label=\"" + detailsString_1 + "\"></button>";
2705
+ },
2706
+ };
2707
+ // and finally add column
2708
+ // and finally add column
2709
+ tableColumns_1.unshift(showDetailsColumnDefinition);
2710
+ // user interface additions
2711
+ // Add event listener for opening and closing details
2712
+ // user interface additions
2713
+ // Add event listener for opening and closing details
2714
+ tableElement_1.on('click', 'td.details-control', function (e) {
2715
+ /** @type {?} */
2716
+ var tr = e.target.closest('tr');
2717
+ /** @type {?} */
2718
+ var row = self.dataTable.row(tr);
2719
+ /** @type {?} */
2720
+ var container = document.createElement('div');
2721
+ /** @type {?} */
2722
+ var detailsViewRef = _this._viewContainerRef.createEmbeddedView(_this.detailsTemplate, {
2723
+ rowData: row.data(),
2724
+ });
2725
+ detailsViewRef.detectChanges();
2726
+ if (detailsViewRef.rootNodes.length !== 1) {
2727
+ throw new Error('DetailsTemplate must have exactly one root node.');
2728
+ }
2729
+ container.appendChild(detailsViewRef.rootNodes[0]);
2730
+ if (row.child.isShown()) {
2731
+ // This row is already open - close it
2732
+ // This row is already open - close it
2733
+ _this.hideDetails.emit();
2734
+ row.child.hide();
2735
+ detailsViewRef.destroy();
2736
+ }
2737
+ else {
2738
+ // Open this row
2739
+ // Open this row
2740
+ _this.showDetails.emit({ row: row });
2741
+ row.child(container).show();
2742
+ row.child().addClass('dt-child');
2743
+ }
2744
+ });
2745
+ }
2683
2746
  /** @type {?} */
2684
2747
  var settings = {
2685
2748
  // set length menu
@@ -3049,6 +3112,9 @@ var AdvancedTableComponent = /** @class */ (function () {
3049
3112
  });
3050
3113
  }
3051
3114
  if (this.selectable) ;
3115
+ if (this.dataTable) {
3116
+ this.dataTable.destroy();
3117
+ }
3052
3118
  // handle init.dt event and emit local event
3053
3119
  this.dataTable = tableElement_1.on('init.dt', function (event) {
3054
3120
  /** @type {?} */
@@ -3094,6 +3160,24 @@ var AdvancedTableComponent = /** @class */ (function () {
3094
3160
  infoSelector.classList.add('d-none');
3095
3161
  }
3096
3162
  }
3163
+ /** @type {?} */
3164
+ var onCustomEvent = function (event) {
3165
+ /** @type {?} */
3166
+ var target = /** @type {?} */ (event.currentTarget);
3167
+ /** @type {?} */
3168
+ var customEvent = target.dataset["event"] || 'event';
3169
+ /** @type {?} */
3170
+ var row = _this.dataTable.row(target.closest('tr'));
3171
+ /** @type {?} */
3172
+ var data = row.data();
3173
+ _this.customEvent.emit({
3174
+ name: customEvent,
3175
+ data: data,
3176
+ row: row.index()
3177
+ });
3178
+ };
3179
+ this.dataTable.off('click', '.dt-custom');
3180
+ this.dataTable.on('click', '.dt-custom', onCustomEvent);
3097
3181
  // show or hide pager
3098
3182
  if (this.showPaging) {
3099
3183
  this.showPaging = true;
@@ -3681,7 +3765,7 @@ var AdvancedTableComponent = /** @class */ (function () {
3681
3765
  selector: 'app-advanced-table',
3682
3766
  template: "\n <table #table class=\"dataTable\">\n </table>\n <div #emptyTable class=\"d-none\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n </div>\n </div>\n <div #errorTemplate class=\"d-none error-message\">\n <div class=\"text-center\">\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-danger border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-secondary\" [translate]=\"'Tables.DataError.Title'\"></h4>\n <p class=\"font-lg text-secondary mb-1\" [translate]=\"'Tables.DataError.Message'\"></p>\n <p class=\"font-lg text-secondary error-inner-message\">\n <small></small>\n </p>\n </div>\n </div>\n </div>\n ",
3683
3767
  encapsulation: ViewEncapsulation.None,
3684
- styles: ["div.dataTables_processing>div:last-child>div{background-color:var(--secondary)}table.dataTable thead .sorting{background-image:none}table.dataTable thead tr th{border-bottom:none;font-weight:500;font-size:.75rem}table.dataTable thead th{color:#73818e;font-size:.75rem;font-weight:600;padding-top:16px;padding-bottom:4px;border-bottom:none;padding-left:8px}table.dataTable tbody tr:first-child td:first-child{border-radius:6px 0}table.dataTable tbody tr:first-child td:last-child{border-radius:0 6px}table.dataTable tbody tr{border-radius:6px}table.dataTable tbody tr td:first-child{border-left:1px solid #c2cfd6}table.dataTable tbody tr td:last-child{border-right:1px solid #c2cfd6}table.dataTable tbody tr td{padding-top:8px;padding-bottom:8px;border-top:1px solid #c2cfd6}table.dataTable tbody tr:last-child td:first-child{border-radius:0 0 0 6px}table.dataTable tbody tr:last-child td:last-child{border-radius:0 0 6px}table.dataTable tbody tr:last-child td{border-bottom:1px solid #c2cfd6}table.dataTable tbody tr.dtrg-group.dtrg-start th{border:2px solid #c2cfd6;border-bottom:1px solid #c2cfd6;color:#3e515b;background-color:#f0f3f5}table.dataTable tbody tr.dtrg-group.dtrg-end th{border-top:2px solid #c2cfd6;border-right:2px solid #c2cfd6;border-left:2px solid #c2cfd6;color:#3e515b;background-color:#f0f3f5}table.dataTable tbody tr:nth-last-child(1) th{border-bottom:2px solid #c2cfd6}table.dataTable td.dataTables_empty{border:none!important}table.dataTable .error-inner-message>small{overflow-wrap:break-word}table.dataTable.no-footer{border-bottom:none}.dataTables_paginate .btn.previous{margin-right:8px}.dataTables_paginate .btn.next{margin-left:8px}.dataTables_info,.dataTables_paginate{margin-top:1rem}.dataTables_paginate span .btn{border-radius:1.5rem}.dataTables_filter{display:none}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:0;overflow:auto}.dataTables_paginate{display:none}.dataTable.processing{opacity:15%}.dataTables_wrapper .dataTables_processing{background:0 0;position:absolute;display:inline-block;top:25%;z-index:5;color:#73818e}.text-decoration-line-through{text-decoration:line-through!important}tr.removed .checkbox+label{visibility:hidden}"]
3768
+ styles: ["div.dataTables_processing>div:last-child>div{background-color:var(--secondary)}table.dataTable thead .sorting{background-image:none}table.dataTable thead tr th{border-bottom:none;font-weight:500;font-size:.75rem}table.dataTable thead th{color:#73818e;font-size:.75rem;font-weight:600;padding-top:16px;padding-bottom:4px;border-bottom:none;padding-left:8px}table.dataTable tbody tr:first-child td:first-child{border-radius:6px 0}table.dataTable tbody tr:first-child td:last-child{border-radius:0 6px}table.dataTable tbody tr{border-radius:6px}table.dataTable tbody tr td:first-child{border-left:1px solid #c2cfd6}table.dataTable tbody tr td:last-child{border-right:1px solid #c2cfd6}table.dataTable tbody tr td{padding-top:8px;padding-bottom:8px;border-top:1px solid #c2cfd6}table.dataTable tbody tr:last-child td:first-child{border-radius:0 0 0 6px}table.dataTable tbody tr:last-child td:last-child{border-radius:0 0 6px}table.dataTable tbody tr:last-child td{border-bottom:1px solid #c2cfd6}table.dataTable tbody tr.dtrg-group.dtrg-start th{border:2px solid #c2cfd6;border-bottom:1px solid #c2cfd6;color:#3e515b;background-color:#f0f3f5}table.dataTable tbody tr.dtrg-group.dtrg-end th{border-top:2px solid #c2cfd6;border-right:2px solid #c2cfd6;border-left:2px solid #c2cfd6;color:#3e515b;background-color:#f0f3f5}table.dataTable tbody tr:nth-last-child(1) th{border-bottom:2px solid #c2cfd6}table.dataTable td.dataTables_empty{border:none!important}table.dataTable .error-inner-message>small{overflow-wrap:break-word}table.dataTable.no-footer{border-bottom:none}.dataTables_paginate .btn.previous{margin-right:8px}.dataTables_paginate .btn.next{margin-left:8px}.dataTables_info,.dataTables_paginate{margin-top:1rem}.dataTables_paginate span .btn{border-radius:1.5rem}.dataTables_filter{display:none}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:0;overflow:auto}.dataTables_paginate{display:none}.dataTable.processing{opacity:15%}.dataTables_wrapper .dataTables_processing{background:0 0;position:absolute;display:inline-block;top:25%;z-index:5;color:#73818e}.text-decoration-line-through{text-decoration:line-through!important}tr.removed .checkbox+label{visibility:hidden}table.dataTable td.details-control{cursor:pointer}table.dataTable td.details-control button{border:none;background-color:inherit;outline:0}table.dataTable td.details-control button::after{content:'\\25B7'}table.dataTable tr.dt-hasChild td.details-control button::after{content:'\\25BD'}"]
3685
3769
  }] }
3686
3770
  ];
3687
3771
  /** @nocollapse */
@@ -3711,6 +3795,7 @@ var AdvancedTableComponent = /** @class */ (function () {
3711
3795
  height: [{ type: Input }],
3712
3796
  showActions: [{ type: Input }],
3713
3797
  autoLoad: [{ type: Input }],
3798
+ customEvent: [{ type: Output, args: ['customEvent',] }],
3714
3799
  load: [{ type: Output, args: ['load',] }],
3715
3800
  init: [{ type: Output, args: ['init',] }],
3716
3801
  reload: [{ type: Input, args: ['reload',] }],
@@ -3723,6 +3808,8 @@ var AdvancedTableComponent = /** @class */ (function () {
3723
3808
  beforeServerData: [{ type: Output, args: ['beforeServerData',] }],
3724
3809
  afterServerData: [{ type: Output, args: ['afterServerData',] }],
3725
3810
  loading: [{ type: Output, args: ['loading',] }],
3811
+ showDetails: [{ type: Output, args: ['showDetails',] }],
3812
+ hideDetails: [{ type: Output, args: ['hideDetails',] }],
3726
3813
  scrollable: [{ type: Input }],
3727
3814
  serverSide: [{ type: Input }],
3728
3815
  lengthMenu: [{ type: Input }],
@@ -3742,6 +3829,7 @@ var AdvancedTableComponent = /** @class */ (function () {
3742
3829
  rowGroup: [{ type: Input }],
3743
3830
  headerTemplate: [{ type: Input }],
3744
3831
  footerTemplate: [{ type: Input }],
3832
+ detailsTemplate: [{ type: Input }],
3745
3833
  header: [{ type: ViewChild, args: ['header',] }],
3746
3834
  footer: [{ type: ViewChild, args: ['footer',] }],
3747
3835
  config: [{ type: Input, args: ['config',] }],
@@ -6076,6 +6164,57 @@ var AdvancedTableSearchComponent = /** @class */ (function (_super) {
6076
6164
  return AdvancedTableSearchComponent;
6077
6165
  }(AdvancedTableSearchBaseComponent));
6078
6166
 
6167
+ /**
6168
+ * @fileoverview added by tsickle
6169
+ * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
6170
+ */
6171
+ var CustomButtonFormatter = /** @class */ (function (_super) {
6172
+ __extends(CustomButtonFormatter, _super);
6173
+ function CustomButtonFormatter() {
6174
+ return _super.call(this) || this;
6175
+ }
6176
+ /**
6177
+ * @param {?} data
6178
+ * @param {?} type
6179
+ * @param {?} row
6180
+ * @param {?} meta
6181
+ * @return {?}
6182
+ */
6183
+ CustomButtonFormatter.prototype.render = /**
6184
+ * @param {?} data
6185
+ * @param {?} type
6186
+ * @param {?} row
6187
+ * @param {?} meta
6188
+ * @return {?}
6189
+ */
6190
+ function (data, type, row, meta) {
6191
+ if (data == null || this.injector == null) {
6192
+ return '';
6193
+ }
6194
+ /** @type {?} */
6195
+ var formatOptions = Object.assign({
6196
+ buttonClass: 'btn btn-default',
6197
+ }, this.formatOptions);
6198
+ /** @type {?} */
6199
+ var buttonText;
6200
+ /** @type {?} */
6201
+ var buttonTitle = '';
6202
+ if (formatOptions.buttonText) {
6203
+ buttonText = this.injector.get(TranslateService).instant(formatOptions.buttonText);
6204
+ }
6205
+ else {
6206
+ buttonText = formatOptions.buttonContent;
6207
+ }
6208
+ if (formatOptions.buttonTitle) {
6209
+ buttonTitle = this.injector.get(TranslateService).instant(formatOptions.buttonTitle);
6210
+ }
6211
+ /** @type {?} */
6212
+ var customEvent = formatOptions.event || 'event';
6213
+ return "<button style=\"cursor:pointer\" data-event=\"" + customEvent + "\" class=\"dt-custom " + formatOptions.buttonClass + "\" title=\"" + buttonTitle + "\">" + buttonText + "</button>";
6214
+ };
6215
+ return CustomButtonFormatter;
6216
+ }(ButtonFormatter));
6217
+
6079
6218
  /**
6080
6219
  * @fileoverview added by tsickle
6081
6220
  * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
@@ -6095,6 +6234,7 @@ var FORMATTERS = {
6095
6234
  TrueFalseFormatter: new TrueFalseFormatter(),
6096
6235
  ActionButtonFormatter: new ActionButtonFormatter(),
6097
6236
  ActionSplitButtonFormatter: new ActionSplitButtonFormatter(),
6237
+ CustomButtonFormatter: new CustomButtonFormatter(),
6098
6238
  };
6099
6239
 
6100
6240
  /**
@@ -6795,7 +6935,7 @@ var AdvancedAggregatorComponent = /** @class */ (function () {
6795
6935
  { type: Component, args: [{
6796
6936
  // tslint:disable-next-line:component-selector
6797
6937
  selector: 'app-advanced-aggregator',
6798
- template: "<ng-container *ngIf=\"config && body\">\n <div class=\"w-100 text-center\" *ngIf=\"body && body.length === 0\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"groups.length === 0\">\n <div class=\"row mt-4\">\n <app-advanced-aggregator-list [body]=\"body\" [config]=\"config\" (clickEvent)=\"onActionEvent($event)\" class=\"col-12\">\n </app-advanced-aggregator-list>\n <div *ngIf=\"config.aggregators && config.aggregators.length > 0\"\n class=\"footer-text text-dark font-weight-normal text-right font-sm mt-3 mr-2 w-100\">\n <div *ngFor=\"let aggregator of config.aggregators\">\n <span *ngIf=\"aggregator.label\"> {{ aggregator.label | translate }} </span>:\n <span class=\"font-weight-bold\"> {{ body | callAggregator: aggregators: aggregator.name }}\n </span>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"groups.length === 1\">\n <ng-container *ngFor=\"let group of body | groupBy: groups[0].name | keyvalue\">\n <div class=\"row mt-4\">\n <h4 class=\"col text-secondary\"> {{ groups[0].title | aggregatorListTitle: group.key }} </h4>\n <app-advanced-aggregator-list [body]=\"group.value\" [config]=\"config\" (clickEvent)=\"onActionEvent($event)\"\n class=\"col-12\">\n </app-advanced-aggregator-list>\n </div>\n\n <!-- Footer for the group -->\n <div *ngIf=\"config.aggregators && config.aggregators.length > 0\"\n class=\"footer-text text-dark font-weight-normal text-right font-sm mt-3 mr-2 w-100\">\n <div *ngFor=\"let aggregator of config.aggregators\">\n <span *ngIf=\"aggregator.label\"> {{ aggregator.label | translate }} </span>:\n <span class=\"font-weight-bold\"> {{ group.value | callAggregator: aggregators: aggregator.name }} </span>\n </div>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"groups.length > 1\">\n <ng-container *ngFor=\"let group of body | groupBy: groups[0].name | keyvalue\">\n <div class=\"row mt-4\">\n <h4 class=\"col text-secondary\"> {{ groups[0].title | aggregatorListTitle: group.key }} </h4>\n <div *ngFor=\"let subgroup of group.value | groupBy: groups[1].name | keyvalue\" class=\"col-12 ml-4 pl-4\">\n <div class=\"row mt-4\">\n <h6 class=\"col-12 text-secondary\"> {{ groups[1].title | aggregatorListTitle: subgroup.key }} </h6>\n <app-advanced-aggregator-list [body]=\"subgroup.value\" [config]=\"config\" (clickEvent)=\"onActionEvent($event)\"\n class=\"col-12\">\n </app-advanced-aggregator-list>\n </div>\n\n <!-- Footer for each subgroup -->\n <div *ngIf=\"config.aggregators && config.aggregators.length > 0\"\n class=\"footer-text text-dark font-weight-normal text-right font-sm mt-3 mr-2 w-100\">\n <div *ngFor=\"let aggregator of config.aggregators\">\n <span *ngIf=\"aggregator.label\"> {{ aggregator.label | translate }} </span>:\n <span class=\"font-weight-bold\"> {{ subgroup.value | callAggregator: aggregators: aggregator.name }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>",
6938
+ template: "<ng-container *ngIf=\"config && body\">\n <div class=\"w-100 text-center\" *ngIf=\"body && body.length === 0\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"groups.length === 0\">\n <div class=\"row mt-4\">\n <app-advanced-aggregator-list [detailTemplate]=\"detailTemplate\" [body]=\"body\" [config]=\"config\" (clickEvent)=\"onActionEvent($event)\" class=\"col-12\">\n </app-advanced-aggregator-list>\n <div *ngIf=\"config.aggregators && config.aggregators.length > 0\"\n class=\"footer-text text-dark font-weight-normal text-right font-sm mt-3 mr-2 w-100\">\n <div *ngFor=\"let aggregator of config.aggregators\">\n <span *ngIf=\"aggregator.label\"> {{ aggregator.label | translate }} </span>:\n <span class=\"font-weight-bold\"> {{ body | callAggregator: aggregators: aggregator.name }}\n </span>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"groups.length === 1\">\n <ng-container *ngFor=\"let group of body | groupBy: groups[0].name | keyvalue\">\n <div class=\"row mt-4\">\n <h4 class=\"col text-secondary\"> {{ groups[0].title | aggregatorListTitle: group.key }} </h4>\n <app-advanced-aggregator-list [detailTemplate]=\"detailTemplate\" [body]=\"group.value\" [config]=\"config\" (clickEvent)=\"onActionEvent($event)\"\n class=\"col-12\">\n </app-advanced-aggregator-list>\n </div>\n\n <!-- Footer for the group -->\n <div *ngIf=\"config.aggregators && config.aggregators.length > 0\"\n class=\"footer-text text-dark font-weight-normal text-right font-sm mt-3 mr-2 w-100\">\n <div *ngFor=\"let aggregator of config.aggregators\">\n <span *ngIf=\"aggregator.label\"> {{ aggregator.label | translate }} </span>:\n <span class=\"font-weight-bold\"> {{ group.value | callAggregator: aggregators: aggregator.name }} </span>\n </div>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"groups.length > 1\">\n <ng-container *ngFor=\"let group of body | groupBy: groups[0].name | keyvalue\">\n <div class=\"row mt-4\">\n <h4 class=\"col text-secondary\"> {{ groups[0].title | aggregatorListTitle: group.key }} </h4>\n <div *ngFor=\"let subgroup of group.value | groupBy: groups[1].name | keyvalue\" class=\"col-12 ml-4 pl-4\">\n <div class=\"row mt-4\">\n <h6 class=\"col-12 text-secondary\"> {{ groups[1].title | aggregatorListTitle: subgroup.key }} </h6>\n <app-advanced-aggregator-list [detailTemplate]=\"detailTemplate\" [body]=\"subgroup.value\" [config]=\"config\" (clickEvent)=\"onActionEvent($event)\"\n class=\"col-12\">\n </app-advanced-aggregator-list>\n </div>\n\n <!-- Footer for each subgroup -->\n <div *ngIf=\"config.aggregators && config.aggregators.length > 0\"\n class=\"footer-text text-dark font-weight-normal text-right font-sm mt-3 mr-2 w-100\">\n <div *ngFor=\"let aggregator of config.aggregators\">\n <span *ngIf=\"aggregator.label\"> {{ aggregator.label | translate }} </span>:\n <span class=\"font-weight-bold\"> {{ subgroup.value | callAggregator: aggregators: aggregator.name }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>",
6799
6939
  changeDetection: ChangeDetectionStrategy.OnPush
6800
6940
  }] }
6801
6941
  ];
@@ -6813,6 +6953,7 @@ var AdvancedAggregatorComponent = /** @class */ (function () {
6813
6953
  selectedGroups$: [{ type: Input, args: ['selectedGroups',] }],
6814
6954
  filters$: [{ type: Input, args: ['filters',] }],
6815
6955
  searchExpression: [{ type: Input, args: ['searchExpression',] }],
6956
+ detailTemplate: [{ type: Input, args: ['detailTemplate',] }],
6816
6957
  eventHandler: [{ type: Output }]
6817
6958
  };
6818
6959
  return AdvancedAggregatorComponent;
@@ -6882,7 +7023,7 @@ var AdvancedAggregatorListComponent = /** @class */ (function () {
6882
7023
  { type: Component, args: [{
6883
7024
  // tslint:disable-next-line:component-selector
6884
7025
  selector: 'app-advanced-aggregator-list',
6885
- template: "<div id=\"group-list\" class=\"flex-column\" *ngIf=\"config && config.columns\">\n <ul class=\"sis--list-group sis--list-group-header\">\n <li class=\"sis--list-group-item text-wrap\">\n <div class=\"d-flex justify-content-center align-items-center\" *ngIf=\"body && body.length > 0\">\n <div *ngIf=\"config.actions && config.actions.length > 0\" class=\"sis--list-group-item_sm_column\"></div>\n <div *ngFor=\"let column of config.columns; let i = index\" class=\"text-left\" [class]=\"config.columns[i].length\"\n [translate]=\"config.columns[i].type === 'action' ? '' : column.title\" [ngClass]=\"{\n 'd-none': config.columns[i].hidden\n }\"></div>\n </div>\n </li>\n </ul>\n\n <!-- The list of entries -->\n <ul class=\"sis--list-group sis--list-group-body\" *ngIf=\"body && body.length > 0\">\n <li class=\"sis--list-group-item text-wrap\" *ngFor=\"let entry of body | orderBy: config.orderBy\">\n <div class=\"d-flex justify-content-center align-items-center list-color\">\n <!-- The list of actions -->\n <div *ngIf=\"config.actions && config.actions.length > 0\" class=\"sis--list-group-item_sm_column text-left pr-0\">\n <button *ngFor=\"let action of config.actions\" (click)=\"callCallback(action.identifier, entry)\"\n [title]=\"(action.title ? action.title : '') | translate \" class=\"btn btn-default px-0\">\n <i class=\"\" [class]=\"'fas text-indigo ml-2 ' + 'fa-' + action.icon\"></i>\n </button>\n <span class=\"px-0\">\n <i class=\"fa fa-fw\">&nbsp;</i>\n </span>\n\n </div>\n <!-- The list of data -->\n <div *ngFor=\"let column of config.columns; let i=index\" [class]=\"config.columns[i].length\" class=\"text-left\"\n [ngClass]=\"{\n 'text-truncate': config.columns[i].hasOwnProperty('truncate') && config.columns[i].truncate,\n 'd-none': config.columns[i].hidden,\n 'd-md-block': !config.columns[i].hidden\n }\"\n [title]=\"config.columns[i].hasOwnProperty('truncate') && config.columns[i].truncate ? entry[column.name] : ''\">\n <span class=\"text-secondary\"\n *ngIf=\"!config.columns[i].hasOwnProperty('type') || (config.columns[i].hasOwnProperty('type') && config.columns[i].type === 'text')\"\n [ngClass]=\"{\n 'font-xs': config.columns[i].variant !== 'primary',\n 'text-body': config.columns[i].variant === 'primary',\n 'text-success': config.columns[i].variant === 'redGreen' && config.columns[i].hasOwnProperty('condition') && entry[config.columns[i].condition],\n 'text-danger': config.columns[i].variant === 'redGreen' && config.columns[i].hasOwnProperty('condition') && !entry[config.columns[i].condition],\n 'font-lg': config.columns[i].variant === 'redGreen' && entry[column.name] && entry[column.name].length > 3,\n 'font-2xl': config.columns[i].variant === 'redGreen' && entry[column.name] && entry[column.name].length <= 3\n }\">\n {{entry[column.name] || '-'}}\n </span>\n\n <span *ngIf=\"config.columns[i].type === 'boolean'\">\n <i class=\"fa font-lg\" [ngClass]=\"{\n 'fa-check text-success': !!entry[column.name],\n 'fa-times text-danger': !!entry[column.name] === false && config.columns[i].variant !== 'checkOrDash'\n }\"></i>\n <span\n *ngIf=\"entry[column.name].toString() !== config.columns[i].trueValue && config.columns[i].variant === 'checkOrDash'\"\n class=\"text-secondary font-xs\">-</span>\n </span>\n </div>\n </div>\n <div *ngIf=\"entry && entry.subitems\">\n <div *ngFor=\"let subitem of entry.subitems\" class=\"d-flex justify-content-center align-items-center list-color\">\n <div *ngIf=\"config.actions && config.actions.length > 0\"\n class=\"sis--list-group-item_sm_column text-left pr-0\">\n <span class=\"px-0\">\n <i class=\"fa fa-fw\">&nbsp;</i>\n </span>\n <button *ngFor=\"let action of config.actions\" (click)=\"callCallback(action.identifier, subitem)\"\n [title]=\"(action.title ? action.title : '') | translate \" class=\"btn btn-default px-0\">\n <i *ngIf=\"action.type === 'edit'\" class=\"fas fa-edit text-indigo\"></i>\n </button>\n </div>\n <div class=\"text-left\"></div>\n <div *ngFor=\"let column of config.columns; let i=index\" [class]=\"config.columns[i].length\" class=\"text-left\"\n [ngClass]=\"{\n 'text-truncate': config.columns[i].hasOwnProperty('truncate') && config.columns[i].truncate,\n 'd-none': config.columns[i].hidden,\n 'd-md-block': !config.columns[i].hidden\n }\"\n [title]=\"config.columns[i].hasOwnProperty('truncate') && config.columns[i].truncate ? entry[column.name] : ''\">\n <span class=\"text-secondary\"\n *ngIf=\"!config.columns[i].hasOwnProperty('type') || (config.columns[i].hasOwnProperty('type') && config.columns[i].type === 'text')\"\n [ngClass]=\"{\n 'font-xs': config.columns[i].variant !== 'primary',\n 'text-body': config.columns[i].variant === 'primary',\n 'text-success': config.columns[i].variant === 'redGreen' && config.columns[i].hasOwnProperty('condition') && subitem[config.columns[i].condition],\n 'text-danger': config.columns[i].variant === 'redGreen' && config.columns[i].hasOwnProperty('condition') && !subitem[config.columns[i].condition],\n 'font-lg': config.columns[i].variant === 'redGreen' && subitem[column.name] && subitem[column.name].length > 3,\n 'font-2xl': config.columns[i].variant === 'redGreen' && subitem[column.name] && subitem[column.name].length <= 3\n }\">\n {{subitem[column.name] || '-'}}\n </span>\n <span *ngIf=\"config.columns[i].type === 'boolean'\">\n <i class=\"fa font-lg\" [ngClass]=\"{\n 'fa-check text-success': !!subitem[column.name],\n 'fa-times text-danger': !!subitem[column.name] === false && config.columns[i].variant !== 'checkOrDash'\n }\"></i>\n <span\n *ngIf=\"subitem[column.name].toString() !== config.columns[i].trueValue && config.columns[i].variant === 'checkOrDash'\"\n class=\"text-secondary font-xs\">-</span>\n </span>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>"
7026
+ template: "<div id=\"group-list\" class=\"flex-column\" *ngIf=\"config && config.columns\">\n <ul class=\"sis--list-group sis--list-group-header\">\n <li class=\"sis--list-group-item text-wrap\">\n <div class=\"d-flex justify-content-center align-items-center\" *ngIf=\"body && body.length > 0\">\n <div *ngIf=\"config.actions && config.actions.length > 0\" class=\"sis--list-group-item_sm_column\"></div>\n <div *ngFor=\"let column of config.columns; let i = index\" class=\"text-left\" [class]=\"config.columns[i].length\"\n [translate]=\"config.columns[i].type === 'action' ? '' : column.title\" [ngClass]=\"{\n 'd-none': config.columns[i].hidden\n }\"></div>\n </div>\n </li>\n </ul>\n\n <!-- The list of entries -->\n <ul class=\"sis--list-group sis--list-group-body\" *ngIf=\"body && body.length > 0\">\n <li class=\"sis--list-group-item text-wrap\" *ngFor=\"let entry of body | orderBy: config.orderBy\">\n <div class=\"d-flex justify-content-center align-items-center list-color\">\n <!-- The list of actions -->\n <div *ngIf=\"config.actions && config.actions.length > 0\" class=\"sis--list-group-item_sm_column text-left pr-0\">\n <button *ngFor=\"let action of config.actions\" (click)=\"callCallback(action.identifier, entry)\"\n [title]=\"(action.title ? action.title : '') | translate \" class=\"btn btn-default px-0\">\n <i class=\"\" [class]=\"'fas text-indigo ml-2 ' + 'fa-' + action.icon\"></i>\n </button>\n <span class=\"px-0\">\n <i class=\"fa fa-fw\">&nbsp;</i>\n </span>\n\n </div>\n <!-- The list of data -->\n <div *ngFor=\"let column of config.columns; let i=index\" [class]=\"config.columns[i].length\" class=\"text-left\"\n [ngClass]=\"{\n 'text-truncate': config.columns[i].hasOwnProperty('truncate') && config.columns[i].truncate,\n 'd-none': config.columns[i].hidden,\n 'd-md-block': !config.columns[i].hidden\n }\"\n [title]=\"config.columns[i].hasOwnProperty('truncate') && config.columns[i].truncate ? entry[column.name] : ''\">\n <span class=\"text-secondary\"\n *ngIf=\"!config.columns[i].hasOwnProperty('type') || (config.columns[i].hasOwnProperty('type') && config.columns[i].type === 'text')\"\n [ngClass]=\"{\n 'font-xs': config.columns[i].variant !== 'primary',\n 'text-body': config.columns[i].variant === 'primary',\n 'text-success': config.columns[i].variant === 'redGreen' && config.columns[i].hasOwnProperty('condition') && entry[config.columns[i].condition],\n 'text-danger': config.columns[i].variant === 'redGreen' && config.columns[i].hasOwnProperty('condition') && !entry[config.columns[i].condition],\n 'font-lg': config.columns[i].variant === 'redGreen' && entry[column.name] && entry[column.name].length > 3,\n 'font-2xl': config.columns[i].variant === 'redGreen' && entry[column.name] && entry[column.name].length <= 3\n }\">\n {{entry[column.name] || '-'}}\n </span>\n\n <span *ngIf=\"config.columns[i].type === 'boolean'\">\n <i class=\"fa font-lg\" [ngClass]=\"{\n 'fa-check text-success': !!entry[column.name],\n 'fa-times text-danger': !!entry[column.name] === false && config.columns[i].variant !== 'checkOrDash'\n }\"></i>\n <span\n *ngIf=\"entry[column.name].toString() !== config.columns[i].trueValue && config.columns[i].variant === 'checkOrDash'\"\n class=\"text-secondary font-xs\">-</span>\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"detailTemplate\">\n <ng-container *ngTemplateOutlet=\"detailTemplate; context: { row: entry }\"></ng-container>\n </ng-container>\n <div *ngIf=\"entry && entry.subitems\">\n <ng-container *ngFor=\"let subitem of entry.subitems\">\n <div class=\"d-flex d-debug justify-content-center align-items-center list-color\">\n <div *ngIf=\"config.actions && config.actions.length > 0\" class=\"sis--list-group-item_sm_column text-left pr-0\">\n <span class=\"px-0\">\n <i class=\"fa fa-fw\">&nbsp;</i>\n </span>\n <button *ngFor=\"let action of config.actions\" (click)=\"callCallback(action.identifier, subitem)\"\n [title]=\"(action.title ? action.title : '') | translate \" class=\"btn btn-default px-0\">\n <i *ngIf=\"action.type === 'edit'\" class=\"fas fa-edit text-indigo\"></i>\n </button>\n </div>\n <div class=\"text-left\"></div>\n <div *ngFor=\"let column of config.columns; let i=index\" [class]=\"config.columns[i].length\" class=\"text-left\"\n [ngClass]=\"{\n 'text-truncate': config.columns[i].hasOwnProperty('truncate') && config.columns[i].truncate,\n 'd-none': config.columns[i].hidden,\n 'd-md-block': !config.columns[i].hidden\n }\"\n [title]=\"config.columns[i].hasOwnProperty('truncate') && config.columns[i].truncate ? entry[column.name] : ''\">\n <span class=\"text-secondary\"\n *ngIf=\"!config.columns[i].hasOwnProperty('type') || (config.columns[i].hasOwnProperty('type') && config.columns[i].type === 'text')\"\n [ngClass]=\"{\n 'font-xs': config.columns[i].variant !== 'primary',\n 'text-body': config.columns[i].variant === 'primary',\n 'text-success': config.columns[i].variant === 'redGreen' && config.columns[i].hasOwnProperty('condition') && subitem[config.columns[i].condition],\n 'text-danger': config.columns[i].variant === 'redGreen' && config.columns[i].hasOwnProperty('condition') && !subitem[config.columns[i].condition],\n 'font-lg': config.columns[i].variant === 'redGreen' && subitem[column.name] && subitem[column.name].length > 3,\n 'font-2xl': config.columns[i].variant === 'redGreen' && subitem[column.name] && subitem[column.name].length <= 3\n }\">\n {{subitem[column.name] || '-'}}\n </span>\n <span *ngIf=\"config.columns[i].type === 'boolean'\">\n <i class=\"fa font-lg\" [ngClass]=\"{\n 'fa-check text-success': !!subitem[column.name],\n 'fa-times text-danger': !!subitem[column.name] === false && config.columns[i].variant !== 'checkOrDash'\n }\"></i>\n <span\n *ngIf=\"subitem[column.name].toString() !== config.columns[i].trueValue && config.columns[i].variant === 'checkOrDash'\"\n class=\"text-secondary font-xs\">-</span>\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n </li>\n </ul>\n</div>"
6886
7027
  }] }
6887
7028
  ];
6888
7029
  /** @nocollapse */
@@ -6892,6 +7033,7 @@ var AdvancedAggregatorListComponent = /** @class */ (function () {
6892
7033
  AdvancedAggregatorListComponent.propDecorators = {
6893
7034
  config: [{ type: Input }],
6894
7035
  body: [{ type: Input }],
7036
+ detailTemplate: [{ type: Input, args: ['detailTemplate',] }],
6895
7037
  clickEvent: [{ type: Output }]
6896
7038
  };
6897
7039
  return AdvancedAggregatorListComponent;
@@ -7316,7 +7458,8 @@ var TABLES_EL = {
7316
7458
  },
7317
7459
  "ExportList": "Εξαγωγή λίστας",
7318
7460
  "ExportLimitExceeded": "Το πλήθος των στοιχείων προς εξαγωγή ({{dataLength}}) ξεπερνάει το μέγιστο επιτρεπτό ({{exportLimit}}). Παρακαλούμε προσαρμόστε τα φίλτρα της αναζήτησης και προσπαθήστε ξανά.",
7319
- "ExportResults": "Δεδομένα λίστας"
7461
+ "ExportResults": "Δεδομένα λίστας",
7462
+ "RowDetails": "Λεπτομέρειες"
7320
7463
  },
7321
7464
  "TrueFalse": {
7322
7465
  "long": {
@@ -7447,7 +7590,8 @@ var TABLES_EN = {
7447
7590
  },
7448
7591
  "ExportList": "Export list",
7449
7592
  "ExportLimitExceeded": "The number of items that are to be exported ({{dataLength}}) exceeds the export limit ({{exportLimit}}). Please apply more specific filters to the search.",
7450
- "ExportResults": "Exported list"
7593
+ "ExportResults": "Exported list",
7594
+ "RowDetails": "Details"
7451
7595
  },
7452
7596
  "TrueFalse": {
7453
7597
  "long": {
@@ -7997,6 +8141,6 @@ var TablesModule = /** @class */ (function () {
7997
8141
  * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
7998
8142
  */
7999
8143
 
8000
- export { AdvancedListComponent, AdvancedRowActionComponent, AdvancedSearchFormComponent, AdvancedSelectComponent, AdvancedSelectService, AdvancedTableConfigurationResolver, AdvancedSearchConfigurationResolver, AdvancedColumnFormatter, NestedPropertyFormatter, ButtonFormatter, LinkFormatter, ActionLinkFormatter, ActionButtonFormatter, ActionSplitButtonFormatter, SelectRowFormatter, TemplateFormatter, TrueFalseFormatter, TranslationFormatter, DateTimeFormatter, NgClassFormatter, LanguageFormatter, COLUMN_FORMATTERS, ExportLimitExceededError, AdvancedTableConfiguration, AdvancedTableComponent, AdvancedTableSettingsComponent, AdvancedTableSearchBaseComponent, AdvancedTableSearchComponent, FORMATTERS, AdvancedFilterValueProvider, AdvancedTableModalBaseTemplate, AdvancedTableModalBaseComponent, SimpleHeaderToolsComponent, TableSimpleHeaderComponent, AdvancedTableNotNullError, AdvancedTableEditorDirective, MAX_EXPORT_ITEMS, BtnExpDirective, AdvancedAggregatorComponent, AdvancedAggregatorListComponent, AddItemsComponent, AdvancedAggregatorPipe, ParseTitlePipe, AdvancedAggregatorService, TablesModule, ActivatedTableService, ColumnSelectorService, ColumnSelectorComponent, tableReducer, initialState, tableInitialState, tableReducers, featureName, getTablesState, selectTable, AdvancedSearchState as ɵa, AdvancedTableState as ɵc, AdvancedSearchRouterState as ɵd };
8144
+ export { AdvancedListComponent, AdvancedRowActionComponent, AdvancedSearchFormComponent, AdvancedSelectComponent, AdvancedSelectService, AdvancedTableConfigurationResolver, AdvancedSearchConfigurationResolver, AdvancedColumnFormatter, NestedPropertyFormatter, ButtonFormatter, LinkFormatter, ActionLinkFormatter, ActionButtonFormatter, ActionSplitButtonFormatter, SelectRowFormatter, TemplateFormatter, TrueFalseFormatter, TranslationFormatter, DateTimeFormatter, NgClassFormatter, LanguageFormatter, COLUMN_FORMATTERS, ExportLimitExceededError, AdvancedTableConfiguration, AdvancedTableComponent, AdvancedTableSettingsComponent, AdvancedTableSearchBaseComponent, AdvancedTableSearchComponent, FORMATTERS, AdvancedFilterValueProvider, AdvancedTableModalBaseTemplate, AdvancedTableModalBaseComponent, SimpleHeaderToolsComponent, TableSimpleHeaderComponent, AdvancedTableNotNullError, AdvancedTableEditorDirective, MAX_EXPORT_ITEMS, BtnExpDirective, AdvancedAggregatorComponent, AdvancedAggregatorListComponent, AddItemsComponent, AdvancedAggregatorPipe, ParseTitlePipe, AdvancedAggregatorService, TablesModule, ActivatedTableService, ColumnSelectorService, ColumnSelectorComponent, tableReducer, initialState, tableInitialState, tableReducers, featureName, getTablesState, selectTable, CustomButtonFormatter as ɵa, AdvancedSearchState as ɵb, AdvancedTableState as ɵd, AdvancedSearchRouterState as ɵe };
8001
8145
 
8002
8146
  //# sourceMappingURL=universis-ngx-tables.js.map