@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.
- package/bundles/universis-ngx-tables.umd.js +156 -11
- package/bundles/universis-ngx-tables.umd.js.map +1 -1
- package/bundles/universis-ngx-tables.umd.min.js +1 -1
- package/bundles/universis-ngx-tables.umd.min.js.map +1 -1
- package/esm2015/lib/components/advanced-aggregator/advanced-aggregator.component.js +6 -3
- package/esm2015/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +6 -3
- package/esm2015/lib/components/advanced-table/advanced-table.component.js +96 -5
- package/esm2015/lib/components/advanced-table/advanced-table.formatters.interface.js +6 -31
- package/esm2015/lib/components/advanced-table/custom-button.formatter.js +45 -0
- package/esm2015/lib/i18n/tables.el.js +3 -2
- package/esm2015/lib/i18n/tables.en.js +3 -2
- package/esm2015/universis-ngx-tables.js +5 -4
- package/esm5/lib/components/advanced-aggregator/advanced-aggregator.component.js +6 -3
- package/esm5/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +6 -3
- package/esm5/lib/components/advanced-table/advanced-table.component.js +101 -5
- package/esm5/lib/components/advanced-table/advanced-table.formatters.interface.js +6 -31
- package/esm5/lib/components/advanced-table/custom-button.formatter.js +56 -0
- package/esm5/lib/i18n/tables.el.js +3 -2
- package/esm5/lib/i18n/tables.en.js +3 -2
- package/esm5/universis-ngx-tables.js +5 -4
- package/fesm2015/universis-ngx-tables.js +140 -10
- package/fesm2015/universis-ngx-tables.js.map +1 -1
- package/fesm5/universis-ngx-tables.js +155 -11
- package/fesm5/universis-ngx-tables.js.map +1 -1
- package/lib/components/advanced-aggregator/advanced-aggregator.component.d.ts +2 -1
- package/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.d.ts +2 -1
- package/lib/components/advanced-table/advanced-table.component.d.ts +6 -2
- package/lib/components/advanced-table/advanced-table.formatters.interface.d.ts +5 -17
- package/lib/components/advanced-table/custom-button.formatter.d.ts +11 -0
- package/lib/i18n/tables.el.d.ts +1 -0
- package/lib/i18n/tables.en.d.ts +1 -0
- package/package.json +1 -1
- package/universis-ngx-tables.d.ts +5 -4
- package/universis-ngx-tables.metadata.json +1 -1
|
@@ -2072,6 +2072,7 @@
|
|
|
2072
2072
|
this.height = 800;
|
|
2073
2073
|
this.showActions = true;
|
|
2074
2074
|
this.autoLoad = true;
|
|
2075
|
+
this.customEvent = new i0.EventEmitter();
|
|
2075
2076
|
this.load = new i0.EventEmitter();
|
|
2076
2077
|
this.init = new i0.EventEmitter();
|
|
2077
2078
|
this.reload = new i0.EventEmitter();
|
|
@@ -2084,6 +2085,8 @@
|
|
|
2084
2085
|
this.beforeServerData = new i0.EventEmitter();
|
|
2085
2086
|
this.afterServerData = new i0.EventEmitter();
|
|
2086
2087
|
this.loading = new i0.EventEmitter();
|
|
2088
|
+
this.showDetails = new i0.EventEmitter();
|
|
2089
|
+
this.hideDetails = new i0.EventEmitter();
|
|
2087
2090
|
this.scrollable = true;
|
|
2088
2091
|
this.serverSide = true;
|
|
2089
2092
|
this.lengthMenu = [50, 100, 200, 500];
|
|
@@ -2719,7 +2722,7 @@
|
|
|
2719
2722
|
*/ function (cell, cellData, rowData, rowIndex, colIndex) {
|
|
2720
2723
|
items_1.forEach(function (columnFormatter) {
|
|
2721
2724
|
/** @type {?} */
|
|
2722
|
-
var formatter = self._columnFormatters[columnFormatter.formatter];
|
|
2725
|
+
var formatter = /** @type {?} */ ((self._columnFormatters[columnFormatter.formatter]));
|
|
2723
2726
|
if (formatter && typeof formatter.afterRender === 'function') {
|
|
2724
2727
|
formatter.afterRender.bind(column)(cell, cellData, rowData, rowIndex, colIndex);
|
|
2725
2728
|
}
|
|
@@ -2736,12 +2739,14 @@
|
|
|
2736
2739
|
render: formatter.render.bind(column),
|
|
2737
2740
|
});
|
|
2738
2741
|
}
|
|
2739
|
-
|
|
2742
|
+
/** @type {?} */
|
|
2743
|
+
var afterRenderFormatter = /** @type {?} */ ((formatter));
|
|
2744
|
+
if (afterRenderFormatter && typeof afterRenderFormatter.afterRender === 'function') {
|
|
2740
2745
|
Object.assign(columnDefinition, {
|
|
2741
2746
|
render: formatter.render.bind(column),
|
|
2742
2747
|
});
|
|
2743
2748
|
Object.assign(columnDefinition, {
|
|
2744
|
-
createdCell:
|
|
2749
|
+
createdCell: afterRenderFormatter.afterRender.bind(column),
|
|
2745
2750
|
});
|
|
2746
2751
|
}
|
|
2747
2752
|
}
|
|
@@ -2879,6 +2884,64 @@
|
|
|
2879
2884
|
}
|
|
2880
2885
|
});
|
|
2881
2886
|
}
|
|
2887
|
+
// display row details
|
|
2888
|
+
if (this.detailsTemplate) {
|
|
2889
|
+
/** @type {?} */
|
|
2890
|
+
var detailsString_1 = this._translateService.instant('Tables.RowDetails');
|
|
2891
|
+
/** @type {?} */
|
|
2892
|
+
var firstColumn = this.config.columns[0];
|
|
2893
|
+
/** @type {?} */
|
|
2894
|
+
var showDetailsColumnDefinition = {
|
|
2895
|
+
className: 'details-control pl-4 pr-0',
|
|
2896
|
+
data: firstColumn.property || firstColumn.name,
|
|
2897
|
+
defaultContent: '',
|
|
2898
|
+
title: '',
|
|
2899
|
+
sortable: false,
|
|
2900
|
+
visible: !this.customSelect,
|
|
2901
|
+
name: firstColumn.name,
|
|
2902
|
+
render: function () {
|
|
2903
|
+
return "<button role=\"button\" title=\"" + detailsString_1 + "\" arial-label=\"" + detailsString_1 + "\"></button>";
|
|
2904
|
+
},
|
|
2905
|
+
};
|
|
2906
|
+
// and finally add column
|
|
2907
|
+
// and finally add column
|
|
2908
|
+
tableColumns_1.unshift(showDetailsColumnDefinition);
|
|
2909
|
+
// user interface additions
|
|
2910
|
+
// Add event listener for opening and closing details
|
|
2911
|
+
// user interface additions
|
|
2912
|
+
// Add event listener for opening and closing details
|
|
2913
|
+
tableElement_1.on('click', 'td.details-control', function (e) {
|
|
2914
|
+
/** @type {?} */
|
|
2915
|
+
var tr = e.target.closest('tr');
|
|
2916
|
+
/** @type {?} */
|
|
2917
|
+
var row = self.dataTable.row(tr);
|
|
2918
|
+
/** @type {?} */
|
|
2919
|
+
var container = document.createElement('div');
|
|
2920
|
+
/** @type {?} */
|
|
2921
|
+
var detailsViewRef = _this._viewContainerRef.createEmbeddedView(_this.detailsTemplate, {
|
|
2922
|
+
rowData: row.data(),
|
|
2923
|
+
});
|
|
2924
|
+
detailsViewRef.detectChanges();
|
|
2925
|
+
if (detailsViewRef.rootNodes.length !== 1) {
|
|
2926
|
+
throw new Error('DetailsTemplate must have exactly one root node.');
|
|
2927
|
+
}
|
|
2928
|
+
container.appendChild(detailsViewRef.rootNodes[0]);
|
|
2929
|
+
if (row.child.isShown()) {
|
|
2930
|
+
// This row is already open - close it
|
|
2931
|
+
// This row is already open - close it
|
|
2932
|
+
_this.hideDetails.emit();
|
|
2933
|
+
row.child.hide();
|
|
2934
|
+
detailsViewRef.destroy();
|
|
2935
|
+
}
|
|
2936
|
+
else {
|
|
2937
|
+
// Open this row
|
|
2938
|
+
// Open this row
|
|
2939
|
+
_this.showDetails.emit({ row: row });
|
|
2940
|
+
row.child(container).show();
|
|
2941
|
+
row.child().addClass('dt-child');
|
|
2942
|
+
}
|
|
2943
|
+
});
|
|
2944
|
+
}
|
|
2882
2945
|
/** @type {?} */
|
|
2883
2946
|
var settings = {
|
|
2884
2947
|
// set length menu
|
|
@@ -3247,6 +3310,9 @@
|
|
|
3247
3310
|
});
|
|
3248
3311
|
}
|
|
3249
3312
|
if (this.selectable) ;
|
|
3313
|
+
if (this.dataTable) {
|
|
3314
|
+
this.dataTable.destroy();
|
|
3315
|
+
}
|
|
3250
3316
|
// handle init.dt event and emit local event
|
|
3251
3317
|
this.dataTable = tableElement_1.on('init.dt', function (event) {
|
|
3252
3318
|
/** @type {?} */
|
|
@@ -3292,6 +3358,24 @@
|
|
|
3292
3358
|
infoSelector.classList.add('d-none');
|
|
3293
3359
|
}
|
|
3294
3360
|
}
|
|
3361
|
+
/** @type {?} */
|
|
3362
|
+
var onCustomEvent = function (event) {
|
|
3363
|
+
/** @type {?} */
|
|
3364
|
+
var target = /** @type {?} */ (event.currentTarget);
|
|
3365
|
+
/** @type {?} */
|
|
3366
|
+
var customEvent = target.dataset["event"] || 'event';
|
|
3367
|
+
/** @type {?} */
|
|
3368
|
+
var row = _this.dataTable.row(target.closest('tr'));
|
|
3369
|
+
/** @type {?} */
|
|
3370
|
+
var data = row.data();
|
|
3371
|
+
_this.customEvent.emit({
|
|
3372
|
+
name: customEvent,
|
|
3373
|
+
data: data,
|
|
3374
|
+
row: row.index()
|
|
3375
|
+
});
|
|
3376
|
+
};
|
|
3377
|
+
this.dataTable.off('click', '.dt-custom');
|
|
3378
|
+
this.dataTable.on('click', '.dt-custom', onCustomEvent);
|
|
3295
3379
|
// show or hide pager
|
|
3296
3380
|
if (this.showPaging) {
|
|
3297
3381
|
this.showPaging = true;
|
|
@@ -3879,7 +3963,7 @@
|
|
|
3879
3963
|
selector: 'app-advanced-table',
|
|
3880
3964
|
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 ",
|
|
3881
3965
|
encapsulation: i0.ViewEncapsulation.None,
|
|
3882
|
-
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}"]
|
|
3966
|
+
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'}"]
|
|
3883
3967
|
}] }
|
|
3884
3968
|
];
|
|
3885
3969
|
/** @nocollapse */
|
|
@@ -3911,6 +3995,7 @@
|
|
|
3911
3995
|
height: [{ type: i0.Input }],
|
|
3912
3996
|
showActions: [{ type: i0.Input }],
|
|
3913
3997
|
autoLoad: [{ type: i0.Input }],
|
|
3998
|
+
customEvent: [{ type: i0.Output, args: ['customEvent',] }],
|
|
3914
3999
|
load: [{ type: i0.Output, args: ['load',] }],
|
|
3915
4000
|
init: [{ type: i0.Output, args: ['init',] }],
|
|
3916
4001
|
reload: [{ type: i0.Input, args: ['reload',] }],
|
|
@@ -3923,6 +4008,8 @@
|
|
|
3923
4008
|
beforeServerData: [{ type: i0.Output, args: ['beforeServerData',] }],
|
|
3924
4009
|
afterServerData: [{ type: i0.Output, args: ['afterServerData',] }],
|
|
3925
4010
|
loading: [{ type: i0.Output, args: ['loading',] }],
|
|
4011
|
+
showDetails: [{ type: i0.Output, args: ['showDetails',] }],
|
|
4012
|
+
hideDetails: [{ type: i0.Output, args: ['hideDetails',] }],
|
|
3926
4013
|
scrollable: [{ type: i0.Input }],
|
|
3927
4014
|
serverSide: [{ type: i0.Input }],
|
|
3928
4015
|
lengthMenu: [{ type: i0.Input }],
|
|
@@ -3942,6 +4029,7 @@
|
|
|
3942
4029
|
rowGroup: [{ type: i0.Input }],
|
|
3943
4030
|
headerTemplate: [{ type: i0.Input }],
|
|
3944
4031
|
footerTemplate: [{ type: i0.Input }],
|
|
4032
|
+
detailsTemplate: [{ type: i0.Input }],
|
|
3945
4033
|
header: [{ type: i0.ViewChild, args: ['header',] }],
|
|
3946
4034
|
footer: [{ type: i0.ViewChild, args: ['footer',] }],
|
|
3947
4035
|
config: [{ type: i0.Input, args: ['config',] }],
|
|
@@ -6298,6 +6386,57 @@
|
|
|
6298
6386
|
return AdvancedTableSearchComponent;
|
|
6299
6387
|
}(AdvancedTableSearchBaseComponent));
|
|
6300
6388
|
|
|
6389
|
+
/**
|
|
6390
|
+
* @fileoverview added by tsickle
|
|
6391
|
+
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
6392
|
+
*/
|
|
6393
|
+
var CustomButtonFormatter = /** @class */ (function (_super) {
|
|
6394
|
+
__extends(CustomButtonFormatter, _super);
|
|
6395
|
+
function CustomButtonFormatter() {
|
|
6396
|
+
return _super.call(this) || this;
|
|
6397
|
+
}
|
|
6398
|
+
/**
|
|
6399
|
+
* @param {?} data
|
|
6400
|
+
* @param {?} type
|
|
6401
|
+
* @param {?} row
|
|
6402
|
+
* @param {?} meta
|
|
6403
|
+
* @return {?}
|
|
6404
|
+
*/
|
|
6405
|
+
CustomButtonFormatter.prototype.render = /**
|
|
6406
|
+
* @param {?} data
|
|
6407
|
+
* @param {?} type
|
|
6408
|
+
* @param {?} row
|
|
6409
|
+
* @param {?} meta
|
|
6410
|
+
* @return {?}
|
|
6411
|
+
*/
|
|
6412
|
+
function (data, type, row, meta) {
|
|
6413
|
+
if (data == null || this.injector == null) {
|
|
6414
|
+
return '';
|
|
6415
|
+
}
|
|
6416
|
+
/** @type {?} */
|
|
6417
|
+
var formatOptions = Object.assign({
|
|
6418
|
+
buttonClass: 'btn btn-default',
|
|
6419
|
+
}, this.formatOptions);
|
|
6420
|
+
/** @type {?} */
|
|
6421
|
+
var buttonText;
|
|
6422
|
+
/** @type {?} */
|
|
6423
|
+
var buttonTitle = '';
|
|
6424
|
+
if (formatOptions.buttonText) {
|
|
6425
|
+
buttonText = this.injector.get(core.TranslateService).instant(formatOptions.buttonText);
|
|
6426
|
+
}
|
|
6427
|
+
else {
|
|
6428
|
+
buttonText = formatOptions.buttonContent;
|
|
6429
|
+
}
|
|
6430
|
+
if (formatOptions.buttonTitle) {
|
|
6431
|
+
buttonTitle = this.injector.get(core.TranslateService).instant(formatOptions.buttonTitle);
|
|
6432
|
+
}
|
|
6433
|
+
/** @type {?} */
|
|
6434
|
+
var customEvent = formatOptions.event || 'event';
|
|
6435
|
+
return "<button style=\"cursor:pointer\" data-event=\"" + customEvent + "\" class=\"dt-custom " + formatOptions.buttonClass + "\" title=\"" + buttonTitle + "\">" + buttonText + "</button>";
|
|
6436
|
+
};
|
|
6437
|
+
return CustomButtonFormatter;
|
|
6438
|
+
}(ButtonFormatter));
|
|
6439
|
+
|
|
6301
6440
|
/**
|
|
6302
6441
|
* @fileoverview added by tsickle
|
|
6303
6442
|
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
@@ -6317,6 +6456,7 @@
|
|
|
6317
6456
|
TrueFalseFormatter: new TrueFalseFormatter(),
|
|
6318
6457
|
ActionButtonFormatter: new ActionButtonFormatter(),
|
|
6319
6458
|
ActionSplitButtonFormatter: new ActionSplitButtonFormatter(),
|
|
6459
|
+
CustomButtonFormatter: new CustomButtonFormatter(),
|
|
6320
6460
|
};
|
|
6321
6461
|
|
|
6322
6462
|
/**
|
|
@@ -7039,7 +7179,7 @@
|
|
|
7039
7179
|
{ type: i0.Component, args: [{
|
|
7040
7180
|
// tslint:disable-next-line:component-selector
|
|
7041
7181
|
selector: 'app-advanced-aggregator',
|
|
7042
|
-
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>",
|
|
7182
|
+
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>",
|
|
7043
7183
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
7044
7184
|
}] }
|
|
7045
7185
|
];
|
|
@@ -7059,6 +7199,7 @@
|
|
|
7059
7199
|
selectedGroups$: [{ type: i0.Input, args: ['selectedGroups',] }],
|
|
7060
7200
|
filters$: [{ type: i0.Input, args: ['filters',] }],
|
|
7061
7201
|
searchExpression: [{ type: i0.Input, args: ['searchExpression',] }],
|
|
7202
|
+
detailTemplate: [{ type: i0.Input, args: ['detailTemplate',] }],
|
|
7062
7203
|
eventHandler: [{ type: i0.Output }]
|
|
7063
7204
|
};
|
|
7064
7205
|
return AdvancedAggregatorComponent;
|
|
@@ -7128,7 +7269,7 @@
|
|
|
7128
7269
|
{ type: i0.Component, args: [{
|
|
7129
7270
|
// tslint:disable-next-line:component-selector
|
|
7130
7271
|
selector: 'app-advanced-aggregator-list',
|
|
7131
|
-
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\"> </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 <
|
|
7272
|
+
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\"> </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\"> </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>"
|
|
7132
7273
|
}] }
|
|
7133
7274
|
];
|
|
7134
7275
|
/** @nocollapse */
|
|
@@ -7140,6 +7281,7 @@
|
|
|
7140
7281
|
AdvancedAggregatorListComponent.propDecorators = {
|
|
7141
7282
|
config: [{ type: i0.Input }],
|
|
7142
7283
|
body: [{ type: i0.Input }],
|
|
7284
|
+
detailTemplate: [{ type: i0.Input, args: ['detailTemplate',] }],
|
|
7143
7285
|
clickEvent: [{ type: i0.Output }]
|
|
7144
7286
|
};
|
|
7145
7287
|
return AdvancedAggregatorListComponent;
|
|
@@ -7567,7 +7709,8 @@
|
|
|
7567
7709
|
},
|
|
7568
7710
|
"ExportList": "Εξαγωγή λίστας",
|
|
7569
7711
|
"ExportLimitExceeded": "Το πλήθος των στοιχείων προς εξαγωγή ({{dataLength}}) ξεπερνάει το μέγιστο επιτρεπτό ({{exportLimit}}). Παρακαλούμε προσαρμόστε τα φίλτρα της αναζήτησης και προσπαθήστε ξανά.",
|
|
7570
|
-
"ExportResults": "Δεδομένα λίστας"
|
|
7712
|
+
"ExportResults": "Δεδομένα λίστας",
|
|
7713
|
+
"RowDetails": "Λεπτομέρειες"
|
|
7571
7714
|
},
|
|
7572
7715
|
"TrueFalse": {
|
|
7573
7716
|
"long": {
|
|
@@ -7698,7 +7841,8 @@
|
|
|
7698
7841
|
},
|
|
7699
7842
|
"ExportList": "Export list",
|
|
7700
7843
|
"ExportLimitExceeded": "The number of items that are to be exported ({{dataLength}}) exceeds the export limit ({{exportLimit}}). Please apply more specific filters to the search.",
|
|
7701
|
-
"ExportResults": "Exported list"
|
|
7844
|
+
"ExportResults": "Exported list",
|
|
7845
|
+
"RowDetails": "Details"
|
|
7702
7846
|
},
|
|
7703
7847
|
"TrueFalse": {
|
|
7704
7848
|
"long": {
|
|
@@ -8313,9 +8457,10 @@
|
|
|
8313
8457
|
exports.featureName = featureName;
|
|
8314
8458
|
exports.getTablesState = getTablesState;
|
|
8315
8459
|
exports.selectTable = selectTable;
|
|
8316
|
-
exports.ɵa =
|
|
8317
|
-
exports.ɵ
|
|
8318
|
-
exports.ɵd =
|
|
8460
|
+
exports.ɵa = CustomButtonFormatter;
|
|
8461
|
+
exports.ɵb = AdvancedSearchState;
|
|
8462
|
+
exports.ɵd = AdvancedTableState;
|
|
8463
|
+
exports.ɵe = AdvancedSearchRouterState;
|
|
8319
8464
|
|
|
8320
8465
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
8321
8466
|
|