@agentsmith.bgd/as-lib-generic-table 19.0.19 → 19.0.20
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/fesm2022/agentsmith.bgd-as-lib-generic-table.mjs +18 -13
- package/fesm2022/agentsmith.bgd-as-lib-generic-table.mjs.map +1 -1
- package/lib/as-lib-generic-table.component.d.ts +4 -3
- package/package.json +2 -4
- package/esm2022/agentsmith.bgd-as-lib-generic-table.mjs +0 -5
- package/esm2022/lib/as-lib-generic-table.component.mjs +0 -255
- package/esm2022/lib/as-lib-generic-table.service.mjs +0 -14
- package/esm2022/lib/directives/component/tooltip.component.mjs +0 -16
- package/esm2022/lib/directives/tooltip/tooltip.directive.mjs +0 -61
- package/esm2022/lib/exports.mjs +0 -2
- package/esm2022/public-api.mjs +0 -7
|
@@ -10,10 +10,10 @@ import { AsLibPaginationComponent } from '@agentsmith.bgd/as-lib-pagination';
|
|
|
10
10
|
|
|
11
11
|
class AsLibGenericTableService {
|
|
12
12
|
constructor() { }
|
|
13
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
14
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
13
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: AsLibGenericTableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: AsLibGenericTableService, providedIn: 'root' });
|
|
15
15
|
}
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: AsLibGenericTableService, decorators: [{
|
|
17
17
|
type: Injectable,
|
|
18
18
|
args: [{
|
|
19
19
|
providedIn: 'root'
|
|
@@ -26,10 +26,10 @@ class TooltipComponent {
|
|
|
26
26
|
top = 0;
|
|
27
27
|
constructor() { }
|
|
28
28
|
ngOnInit() { }
|
|
29
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
30
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
29
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.1", type: TooltipComponent, isStandalone: true, selector: "tooltip", ngImport: i0, template: "<div [style.left]=\"left + 'px'\" [style.top]=\"top + 'px'\" class=\"my-tooltip\">\n\t{{ tooltip }}\n</div>\n", styles: [".my-tooltip{position:fixed;background-color:#000;border-radius:4px;color:#fff;font-family:Arial,serif;padding:3px 6px;font-size:13px;margin-top:5px;transform:translate(-50%)}.my-tooltip:before{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid black;position:absolute;left:calc(50% - 5px);top:-5px}\n"] });
|
|
31
31
|
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
33
33
|
type: Component,
|
|
34
34
|
args: [{ selector: 'tooltip', standalone: true, template: "<div [style.left]=\"left + 'px'\" [style.top]=\"top + 'px'\" class=\"my-tooltip\">\n\t{{ tooltip }}\n</div>\n", styles: [".my-tooltip{position:fixed;background-color:#000;border-radius:4px;color:#fff;font-family:Arial,serif;padding:3px 6px;font-size:13px;margin-top:5px;transform:translate(-50%)}.my-tooltip:before{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid black;position:absolute;left:calc(50% - 5px);top:-5px}\n"] }]
|
|
35
35
|
}], ctorParameters: () => [] });
|
|
@@ -73,10 +73,10 @@ class TooltipDirective {
|
|
|
73
73
|
this.componentRef.instance.top = bottom;
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
77
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
76
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: TooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.ApplicationRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
77
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.1", type: TooltipDirective, isStandalone: true, selector: "[tooltip]", inputs: { tooltip: "tooltip" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, ngImport: i0 });
|
|
78
78
|
}
|
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: TooltipDirective, decorators: [{
|
|
80
80
|
type: Directive,
|
|
81
81
|
args: [{
|
|
82
82
|
selector: '[tooltip]',
|
|
@@ -134,9 +134,10 @@ class AsLibGenericTableComponent {
|
|
|
134
134
|
this.calculatePages();
|
|
135
135
|
this.badgeClassRules();
|
|
136
136
|
this.rowClassRules();
|
|
137
|
+
this.init();
|
|
137
138
|
});
|
|
138
139
|
}
|
|
139
|
-
|
|
140
|
+
init() {
|
|
140
141
|
if (this.tableHeadStorage()) {
|
|
141
142
|
const storage = localStorage.getItem(this.tableHeadStorage());
|
|
142
143
|
if (storage) {
|
|
@@ -324,10 +325,14 @@ class AsLibGenericTableComponent {
|
|
|
324
325
|
const rulesSignature = item.rowClassRules?.map(r => `${r.rule}${r.value}${r.class}`).join('|') || '';
|
|
325
326
|
return `${item.key}-${rulesSignature}`;
|
|
326
327
|
}
|
|
327
|
-
|
|
328
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.1", type: AsLibGenericTableComponent, isStandalone: true, selector: "as-lib-generic-table", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, hovered: { classPropertyName: "hovered", publicName: "hovered", isSignal: true, isRequired: false, transformFunction: null }, enableSearch: { classPropertyName: "enableSearch", publicName: "enableSearch", isSignal: true, isRequired: false, transformFunction: null }, rowCounter: { classPropertyName: "rowCounter", publicName: "rowCounter", isSignal: true, isRequired: false, transformFunction: null }, enableLog: { classPropertyName: "enableLog", publicName: "enableLog", isSignal: true, isRequired: false, transformFunction: null }, perPage: { classPropertyName: "perPage", publicName: "perPage", isSignal: true, isRequired: false, transformFunction: null }, tableHead: { classPropertyName: "tableHead", publicName: "tableHead", isSignal: true, isRequired: false, transformFunction: null }, tableData: { classPropertyName: "tableData", publicName: "tableData", isSignal: true, isRequired: false, transformFunction: null }, tableHeadStorage: { classPropertyName: "tableHeadStorage", publicName: "tableHeadStorage", isSignal: true, isRequired: false, transformFunction: null }, perPageValues: { classPropertyName: "perPageValues", publicName: "perPageValues", isSignal: true, isRequired: false, transformFunction: null }, headerActions: { classPropertyName: "headerActions", publicName: "headerActions", isSignal: true, isRequired: false, transformFunction: null }, rowActions: { classPropertyName: "rowActions", publicName: "rowActions", isSignal: true, isRequired: false, transformFunction: null }, tableStyle: { classPropertyName: "tableStyle", publicName: "tableStyle", isSignal: true, isRequired: false, transformFunction: null }, headStyle: { classPropertyName: "headStyle", publicName: "headStyle", isSignal: true, isRequired: false, transformFunction: null }, paginationAlignment: { classPropertyName: "paginationAlignment", publicName: "paginationAlignment", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: false, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterParamsChanged: "filterParamsChanged", editRow: "editRow", sliderClicked: "sliderClicked", headerActionClicked: "headerActionClicked", rowActionClicked: "rowActionClicked", tableHeadChanged: "tableHeadChanged" }, providers: [BsModalService], ngImport: i0, template: "<p *ngIf=\"loading()\">\n\t<img\n\t\t*ngIf=\"loading()\"\n\t\tclass=\"pl-3\"\n\t\tsrc=\"data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==\"\n\t/>\n</p>\n<div\n\t[ngClass]=\"{\n\t\tloading: loading()\n\t}\"\n\tclass=\"dynamic-table\"\n>\n\t<div class=\"row mb-3 mx-0\">\n\t\t<div class=\"col-md-7 d-flex d-sm-flex d-md-block justify-content-center mb-2\">\n\t\t\t<div *ngIf=\"perPageValues() && perPageValues().length\" class=\"d-block d-md-inline-flex me-0 me-md-3\">\n\t\t\t\t<div class=\"table-length\">\n\t\t\t\t\t<label\n\t\t\t\t\t\t>Show\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\t(change)=\"changePerPage($event)\"\n\t\t\t\t\t\t\taria-controls=\"data-table-combine\"\n\t\t\t\t\t\t\tclass=\"form-select form-select-sm\"\n\t\t\t\t\t\t\tname=\"data-table-combine_length\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<option *ngFor=\"let perp of perPageValues()\" [selected]=\"perPage() === perp\" value=\"{{ perp }}\">{{ perp }}</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\tentries</label\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"headerActions() && headerActions().length\" class=\"d-block d-inline-flex\">\n\t\t\t\t<div class=\"dt-buttons btn-group flex-wrap\">\n\t\t\t\t\t<ng-container *ngFor=\"let action of headerActions()\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t(click)=\"headerAction(action.actionName)\"\n\t\t\t\t\t\t\t[ngClass]=\"{ 'btn-secondary': !action.btnColor }\"\n\t\t\t\t\t\t\tclass=\"btn buttons-copy buttons-html5 btn-sm {{ action.actionName }} {{ action.btnColor }}\"\n\t\t\t\t\t\t\tid=\"header-action-{{ action.actionName }}\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span><i *ngIf=\"action.faIcon\" class=\"fa {{ action.faIcon }}\"></i> {{ action.label }}</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"enableSearch()\" class=\"col-md-5 d-flex d-xl-block justify-content-center\">\n\t\t\t<div class=\"table-search\">\n\t\t\t\t<label\n\t\t\t\t\t>Search:\n\t\t\t\t\t<input\n\t\t\t\t\t\t(ngModelChange)=\"this.searchUpdate.next($event)\"\n\t\t\t\t\t\t[(ngModel)]=\"search\"\n\t\t\t\t\t\taria-controls=\"data-table-combine\"\n\t\t\t\t\t\tclass=\"form-control form-control-sm\"\n\t\t\t\t\t\tid=\"table-search\"\n\t\t\t\t\t\tplaceholder=\"\"\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t/></label>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"table-responsive\">\n\t\t<table\n\t\t\t[ngClass]=\"{\n\t\t\t\t'table-striped': striped(),\n\t\t\t\t'table-bordered': bordered(),\n\t\t\t\t'table-hover': hovered()\n\t\t\t}\"\n\t\t\tclass=\"table table-fixed align-middle {{ tableStyle() }}\"\n\t\t>\n\t\t\t<thead [class]=\"headStyle()\">\n\t\t\t\t<tr>\n\t\t\t\t\t<th *ngIf=\"rowCounter()\" class=\"text-end small-column\"> Nr.</th>\n\t\t\t\t\t<ng-container *ngFor=\"let head of tableHead(); trackBy:trackByHeadChange\">\n\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t(click)=\"!head.notSortable && tableSort(head.key)\"\n\t\t\t\t\t\t\t*ngIf=\"!head.hidden\"\n\t\t\t\t\t\t\t[ngClass]=\"head.sort\"\n\t\t\t\t\t\t\tclass=\"header {{ head.notSortable ? '' : 'sortable' }} {{ head.cellAlign }}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<span [translate]=\"head.key.toUpperCase()\">{{ head.label || head.key }}</span>\n\t\t\t\t\t\t\t\t<span class=\"fa\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<th *ngIf=\"tableHeadStorage() || (rowActions() && rowActions().length)\" class=\"header small-column text-center p-0\" data-width=\"50\">\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t(click)=\"openTableLayoutModal(tableHeadModal)\"\n\t\t\t\t\t\t\t*ngIf=\"tableHeadStorage()\"\n\t\t\t\t\t\t\taria-controls=\"basic-link-dropdown\"\n\t\t\t\t\t\t\tclass=\"menu-button toggle-white big-toggle dropdown-menu-link\"\n\t\t\t\t\t\t></a>\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<tr *ngFor=\"let row of tableData(); let i = index;\" class=\"{{ row['rowClass'] || '' }}\" (click)=\"onRowClick(row)\">\n\t\t\t\t\t<th *ngIf=\"rowCounter()\" class=\"text-end\"> {{ i + counter }}.</th>\n\t\t\t\t\t<ng-container *ngFor=\"let head of tableHead()\">\n\t\t\t\t\t\t<td *ngIf=\"!head.hidden\" class=\"header text-nowrap {{ head.cellAlign }}\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'select'\">\n\t\t\t\t\t\t\t\t<input class=\"select\" type=\"checkbox\" />\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!head.type\">\n\t\t\t\t\t\t\t\t{{ row[head.key] }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'badge'\">\n\t\t\t\t\t\t\t\t<span class=\"badge {{ row[head.key + 'Badge'] }}\">{{ row[head.key] }}</span>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'date'\">\n\t\t\t\t\t\t\t\t{{ row[head.key] | date: \"dd.MM.yyyy HH:mm:ss\" }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'slider'\">\n\t\t\t\t\t\t\t\t<div class=\"form-check form-switch\">\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t(change)=\"sliderClicked.emit(row)\"\n\t\t\t\t\t\t\t\t\t\t[checked]=\"row[head.key]\"\n\t\t\t\t\t\t\t\t\t\tclass=\"switched\"\n\t\t\t\t\t\t\t\t\t\tid=\"check-{{ row['id'] }}\"\n\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\tvalue=\"true\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<label for=\"check-{{ row['id'] }}\"></label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'input'\">\n\t\t\t\t\t\t\t\t<input [value]=\"row[head.key]\" type=\"text\" />\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<td *ngIf=\"tableHeadStorage() || (rowActions() && rowActions().length)\" class=\"small-column\">\n\t\t\t\t\t\t<div class=\"menu text-end\">\n\t\t\t\t\t\t\t<ng-container *ngFor=\"let action of rowActions()\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t(click)=\"rowAction(action.actionName, row)\"\n\t\t\t\t\t\t\t\t\t[ngClass]=\"{ 'btn-secondary': !action.btnColor }\"\n\t\t\t\t\t\t\t\t\tclass=\"btn buttons-copy buttons-html5 btn-sm ms-2 {{ action.actionName }} {{ action.btnColor }}\"\n\t\t\t\t\t\t\t\t\ttooltip=\"{{ action.label }}\"\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span><i *ngIf=\"action.faIcon\" class=\"fa {{ action.faIcon }}\"></i></span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t</table>\n\t\t<as-lib-pagination\n\t\t\t(pageChange)=\"pageChange($event)\"\n\t\t\t*ngIf=\"totalPages > 1\"\n\t\t\t[align]=\"paginationAlignment()\"\n\t\t\t[enableLog]=\"enableLog()\"\n\t\t\t[first]=\"page() === 0\"\n\t\t\t[last]=\"page() === totalPages - 1\"\n\t\t\t[page]=\"page()\"\n\t\t\t[totalPages]=\"totalPages\"\n\t\t></as-lib-pagination>\n\t</div>\n\t<ng-template #tableHeadModal>\n\t\t<div class=\"modal-header\">\n\t\t\t<h4 class=\"modal-title pull-left\">Edit table header</h4>\n\t\t\t<button (click)=\"modalClose()\" aria-label=\"Close\" class=\"btn-close close pull-right\" type=\"button\">\n\t\t\t\t<span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"modal-body\">\n\t\t\t<ng-container *ngFor=\"let td of tableHead(); trackBy:trackByHeadChange\">\n\t\t\t\t<div class=\"form-check form-switch\">\n\t\t\t\t\t<input\n\t\t\t\t\t\t(change)=\"handleTHchange(td.key)\"\n\t\t\t\t\t\t[checked]=\"!td.hidden\"\n\t\t\t\t\t\t[disabled]=\"td.mandatory\"\n\t\t\t\t\t\t[readOnly]=\"td.mandatory\"\n\t\t\t\t\t\tclass=\"form-check-input\"\n\t\t\t\t\t\tid=\"{{ td.key }}\"\n\t\t\t\t\t\trole=\"switch\"\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tvalue=\"true\"\n\t\t\t\t\t/>\n\t\t\t\t\t<label class=\"form-check-label\" for=\"{{ td.key }}\">{{ td.label }} {{ td.mandatory ? \"*\" : \"\" }}</label>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<small class=\"small text-muted pt-2\">* Mandatory field for the view</small>\n\t\t</div>\n\t\t<div class=\"modal-footer\">\n\t\t\t<button (click)=\"resetValues()\" class=\"btn btn-outline-secondary me-auto\" type=\"button\">Reset</button>\n\t\t\t<button (click)=\"modalClose()\" class=\"btn btn-primary\" translate=\"CLOSE\" type=\"button\">Close</button>\n\t\t</div>\n\t</ng-template>\n</div>\n", styles: [".dropdown-holder{min-height:20px}.dynamic-table,.dynamic-table button,span.badge{font-size:12px;font-weight:400}.table-length label{display:inline-block;white-space:nowrap}.table-length select{display:inline-block;width:auto}.table-search{text-align:right}.table-search label{display:inline-block;white-space:nowrap}.table-search input{display:inline-block;width:auto}th.sortable div{display:flex;align-items:center;cursor:pointer}th.sortable div span:not(.fa){flex:1}th.sortable div span.fa{display:block}th.sortable div span.fa:after{content:\"\\f0dc\";opacity:.25}th.sortable.headerSortDown span.fa.fa:after{color:#348fe2;content:\"\\f0dd\";opacity:1}th.sortable.headerSortUp span.fa.fa:after{color:#348fe2;content:\"\\f0de\";opacity:1}.menu-button{border-radius:50%;width:24px;height:24px;display:inline-block;position:relative}.menu-button:after{content:\"\";background-image:radial-gradient(circle,black 2px,transparent 2px);background-size:100% 33.33%;width:18px;height:18px;display:block;top:3px;left:3px;position:absolute}.menu-button:hover{background:#4e4e4e26}.menu-button.menu-horizontal:after{background-size:33.33% 100%}.small-column{white-space:nowrap;width:1%}.loading{opacity:.3}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TooltipDirective, selector: "[tooltip]", inputs: ["tooltip"] }, { kind: "component", type: AsLibPaginationComponent, selector: "as-lib-pagination", inputs: ["first", "last", "align", "enableLog", "totalPages", "page"], outputs: ["pageChange"] }] });
|
|
328
|
+
trackByHeadChange2(index, item) {
|
|
329
|
+
console.log('any', index, item);
|
|
330
|
+
return `${item.key}-${index}`;
|
|
331
|
+
}
|
|
332
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: AsLibGenericTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
333
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.1", type: AsLibGenericTableComponent, isStandalone: true, selector: "as-lib-generic-table", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, hovered: { classPropertyName: "hovered", publicName: "hovered", isSignal: true, isRequired: false, transformFunction: null }, enableSearch: { classPropertyName: "enableSearch", publicName: "enableSearch", isSignal: true, isRequired: false, transformFunction: null }, rowCounter: { classPropertyName: "rowCounter", publicName: "rowCounter", isSignal: true, isRequired: false, transformFunction: null }, enableLog: { classPropertyName: "enableLog", publicName: "enableLog", isSignal: true, isRequired: false, transformFunction: null }, perPage: { classPropertyName: "perPage", publicName: "perPage", isSignal: true, isRequired: false, transformFunction: null }, tableHead: { classPropertyName: "tableHead", publicName: "tableHead", isSignal: true, isRequired: false, transformFunction: null }, tableData: { classPropertyName: "tableData", publicName: "tableData", isSignal: true, isRequired: false, transformFunction: null }, tableHeadStorage: { classPropertyName: "tableHeadStorage", publicName: "tableHeadStorage", isSignal: true, isRequired: false, transformFunction: null }, perPageValues: { classPropertyName: "perPageValues", publicName: "perPageValues", isSignal: true, isRequired: false, transformFunction: null }, headerActions: { classPropertyName: "headerActions", publicName: "headerActions", isSignal: true, isRequired: false, transformFunction: null }, rowActions: { classPropertyName: "rowActions", publicName: "rowActions", isSignal: true, isRequired: false, transformFunction: null }, tableStyle: { classPropertyName: "tableStyle", publicName: "tableStyle", isSignal: true, isRequired: false, transformFunction: null }, headStyle: { classPropertyName: "headStyle", publicName: "headStyle", isSignal: true, isRequired: false, transformFunction: null }, paginationAlignment: { classPropertyName: "paginationAlignment", publicName: "paginationAlignment", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: false, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterParamsChanged: "filterParamsChanged", editRow: "editRow", sliderClicked: "sliderClicked", headerActionClicked: "headerActionClicked", rowActionClicked: "rowActionClicked", tableHeadChanged: "tableHeadChanged" }, providers: [BsModalService], ngImport: i0, template: "<p *ngIf=\"loading()\">\n\t<img\n\t\t*ngIf=\"loading()\"\n\t\tclass=\"pl-3\"\n\t\tsrc=\"data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==\"\n\t/>\n</p>\n<div\n\t[ngClass]=\"{\n\t\tloading: loading()\n\t}\"\n\tclass=\"dynamic-table\"\n>\n\t<div class=\"row mb-3 mx-0\">\n\t\t<div class=\"col-md-7 d-flex d-sm-flex d-md-block justify-content-center mb-2\">\n\t\t\t<div *ngIf=\"perPageValues() && perPageValues().length\" class=\"d-block d-md-inline-flex me-0 me-md-3\">\n\t\t\t\t<div class=\"table-length\">\n\t\t\t\t\t<label\n\t\t\t\t\t\t>Show\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\t(change)=\"changePerPage($event)\"\n\t\t\t\t\t\t\taria-controls=\"data-table-combine\"\n\t\t\t\t\t\t\tclass=\"form-select form-select-sm\"\n\t\t\t\t\t\t\tname=\"data-table-combine_length\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<option *ngFor=\"let perp of perPageValues()\" [selected]=\"perPage() === perp\" value=\"{{ perp }}\">{{ perp }}</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\tentries</label\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"headerActions() && headerActions().length\" class=\"d-block d-inline-flex\">\n\t\t\t\t<div class=\"dt-buttons btn-group flex-wrap\">\n\t\t\t\t\t<ng-container *ngFor=\"let action of headerActions()\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t(click)=\"headerAction(action.actionName)\"\n\t\t\t\t\t\t\t[ngClass]=\"{ 'btn-secondary': !action.btnColor }\"\n\t\t\t\t\t\t\tclass=\"btn buttons-copy buttons-html5 btn-sm {{ action.actionName }} {{ action.btnColor }}\"\n\t\t\t\t\t\t\tid=\"header-action-{{ action.actionName }}\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span><i *ngIf=\"action.faIcon\" class=\"fa {{ action.faIcon }}\"></i> {{ action.label }}</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"enableSearch()\" class=\"col-md-5 d-flex d-xl-block justify-content-center\">\n\t\t\t<div class=\"table-search\">\n\t\t\t\t<label\n\t\t\t\t\t>Search:\n\t\t\t\t\t<input\n\t\t\t\t\t\t(ngModelChange)=\"this.searchUpdate.next($event)\"\n\t\t\t\t\t\t[(ngModel)]=\"search\"\n\t\t\t\t\t\taria-controls=\"data-table-combine\"\n\t\t\t\t\t\tclass=\"form-control form-control-sm\"\n\t\t\t\t\t\tid=\"table-search\"\n\t\t\t\t\t\tplaceholder=\"\"\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t/></label>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"table-responsive\">\n\t\t<table\n\t\t\t[ngClass]=\"{\n\t\t\t\t'table-striped': striped(),\n\t\t\t\t'table-bordered': bordered(),\n\t\t\t\t'table-hover': hovered()\n\t\t\t}\"\n\t\t\tclass=\"table table-fixed align-middle {{ tableStyle() }}\"\n\t\t>\n\t\t\t<thead [class]=\"headStyle()\">\n\t\t\t\t<tr>\n\t\t\t\t\t<th *ngIf=\"rowCounter()\" class=\"text-end small-column\"> Nr.</th>\n\t\t\t\t\t<ng-container *ngFor=\"let head of tableHead(); trackBy:trackByHeadChange\">\n\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t(click)=\"!head.notSortable && tableSort(head.key)\"\n\t\t\t\t\t\t\t*ngIf=\"!head.hidden\"\n\t\t\t\t\t\t\t[ngClass]=\"head.sort\"\n\t\t\t\t\t\t\tclass=\"header {{ head.notSortable ? '' : 'sortable' }} {{ head.cellAlign }}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<span [translate]=\"head.key.toUpperCase()\">{{ head.label || head.key }}</span>\n\t\t\t\t\t\t\t\t<span class=\"fa\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<th *ngIf=\"tableHeadStorage() || (rowActions() && rowActions().length)\" class=\"header small-column text-center p-0\" data-width=\"50\">\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t(click)=\"openTableLayoutModal(tableHeadModal)\"\n\t\t\t\t\t\t\t*ngIf=\"tableHeadStorage()\"\n\t\t\t\t\t\t\taria-controls=\"basic-link-dropdown\"\n\t\t\t\t\t\t\tclass=\"menu-button toggle-white big-toggle dropdown-menu-link\"\n\t\t\t\t\t\t></a>\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<tr *ngFor=\"let row of tableData(); let i = index;\" class=\"{{ row['rowClass'] || '' }}\" (click)=\"onRowClick(row)\">\n\t\t\t\t\t<th *ngIf=\"rowCounter()\" class=\"text-end\"> {{ i + counter }}.</th>\n\t\t\t\t\t<ng-container *ngFor=\"let head of tableHead()\">\n\t\t\t\t\t\t<td *ngIf=\"!head.hidden\" class=\"header text-nowrap {{ head.cellAlign }}\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'select'\">\n\t\t\t\t\t\t\t\t<input class=\"select\" type=\"checkbox\" />\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!head.type\">\n\t\t\t\t\t\t\t\t{{ row[head.key] }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'badge'\">\n\t\t\t\t\t\t\t\t<span class=\"badge {{ row[head.key + 'Badge'] }}\">{{ row[head.key] }}</span>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'date'\">\n\t\t\t\t\t\t\t\t{{ row[head.key] | date: \"dd.MM.yyyy HH:mm:ss\" }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'slider'\">\n\t\t\t\t\t\t\t\t<div class=\"form-check form-switch\">\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t(change)=\"sliderClicked.emit(row)\"\n\t\t\t\t\t\t\t\t\t\t[checked]=\"row[head.key]\"\n\t\t\t\t\t\t\t\t\t\tclass=\"switched\"\n\t\t\t\t\t\t\t\t\t\tid=\"check-{{ row['id'] }}\"\n\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\tvalue=\"true\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<label for=\"check-{{ row['id'] }}\"></label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'input'\">\n\t\t\t\t\t\t\t\t<input [value]=\"row[head.key]\" type=\"text\" />\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<td *ngIf=\"tableHeadStorage() || (rowActions() && rowActions().length)\" class=\"small-column\">\n\t\t\t\t\t\t<div class=\"menu text-end\">\n\t\t\t\t\t\t\t<ng-container *ngFor=\"let action of rowActions()\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t(click)=\"rowAction(action.actionName, row)\"\n\t\t\t\t\t\t\t\t\t[ngClass]=\"{ 'btn-secondary': !action.btnColor }\"\n\t\t\t\t\t\t\t\t\tclass=\"btn buttons-copy buttons-html5 btn-sm ms-2 {{ action.actionName }} {{ action.btnColor }}\"\n\t\t\t\t\t\t\t\t\ttooltip=\"{{ action.label }}\"\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span><i *ngIf=\"action.faIcon\" class=\"fa {{ action.faIcon }}\"></i></span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t</table>\n\t\t<as-lib-pagination\n\t\t\t(pageChange)=\"pageChange($event)\"\n\t\t\t*ngIf=\"totalPages > 1\"\n\t\t\t[align]=\"paginationAlignment()\"\n\t\t\t[enableLog]=\"enableLog()\"\n\t\t\t[first]=\"page() === 0\"\n\t\t\t[last]=\"page() === totalPages - 1\"\n\t\t\t[page]=\"page()\"\n\t\t\t[totalPages]=\"totalPages\"\n\t\t></as-lib-pagination>\n\t</div>\n\t<ng-template #tableHeadModal>\n\t\t<div class=\"modal-header\">\n\t\t\t<h4 class=\"modal-title pull-left\">Edit table header</h4>\n\t\t\t<button (click)=\"modalClose()\" aria-label=\"Close\" class=\"btn-close close pull-right\" type=\"button\">\n\t\t\t\t<span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"modal-body\">\n\t\t\t<ng-container *ngFor=\"let td of tableHead(); trackBy:trackByHeadChange\">\n\t\t\t\t<div class=\"form-check form-switch\">\n\t\t\t\t\t<input\n\t\t\t\t\t\t(change)=\"handleTHchange(td.key)\"\n\t\t\t\t\t\t[checked]=\"!td.hidden\"\n\t\t\t\t\t\t[disabled]=\"td.mandatory\"\n\t\t\t\t\t\t[readOnly]=\"td.mandatory\"\n\t\t\t\t\t\tclass=\"form-check-input\"\n\t\t\t\t\t\tid=\"{{ td.key }}\"\n\t\t\t\t\t\trole=\"switch\"\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tvalue=\"true\"\n\t\t\t\t\t/>\n\t\t\t\t\t<label class=\"form-check-label\" for=\"{{ td.key }}\">{{ td.label }} {{ td.mandatory ? \"*\" : \"\" }}</label>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<small class=\"small text-muted pt-2\">* Mandatory field for the view</small>\n\t\t</div>\n\t\t<div class=\"modal-footer\">\n\t\t\t<button (click)=\"resetValues()\" class=\"btn btn-outline-secondary me-auto\" type=\"button\">Reset</button>\n\t\t\t<button (click)=\"modalClose()\" class=\"btn btn-primary\" translate=\"CLOSE\" type=\"button\">Close</button>\n\t\t</div>\n\t</ng-template>\n</div>\n", styles: [".dropdown-holder{min-height:20px}.dynamic-table,.dynamic-table button,span.badge{font-size:12px;font-weight:400}.table-length label{display:inline-block;white-space:nowrap}.table-length select{display:inline-block;width:auto}.table-search{text-align:right}.table-search label{display:inline-block;white-space:nowrap}.table-search input{display:inline-block;width:auto}th.sortable div{display:flex;align-items:center;cursor:pointer}th.sortable div span:not(.fa){flex:1}th.sortable div span.fa{display:block}th.sortable div span.fa:after{content:\"\\f0dc\";opacity:.25}th.sortable.headerSortDown span.fa.fa:after{color:#348fe2;content:\"\\f0dd\";opacity:1}th.sortable.headerSortUp span.fa.fa:after{color:#348fe2;content:\"\\f0de\";opacity:1}.menu-button{border-radius:50%;width:24px;height:24px;display:inline-block;position:relative}.menu-button:after{content:\"\";background-image:radial-gradient(circle,black 2px,transparent 2px);background-size:100% 33.33%;width:18px;height:18px;display:block;top:3px;left:3px;position:absolute}.menu-button:hover{background:#4e4e4e26}.menu-button.menu-horizontal:after{background-size:33.33% 100%}.small-column{white-space:nowrap;width:1%}.loading{opacity:.3}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TooltipDirective, selector: "[tooltip]", inputs: ["tooltip"] }, { kind: "component", type: AsLibPaginationComponent, selector: "as-lib-pagination", inputs: ["first", "last", "align", "enableLog", "totalPages", "page"], outputs: ["pageChange"] }] });
|
|
329
334
|
}
|
|
330
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
335
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: AsLibGenericTableComponent, decorators: [{
|
|
331
336
|
type: Component,
|
|
332
337
|
args: [{ selector: 'as-lib-generic-table', imports: [
|
|
333
338
|
CommonModule,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentsmith.bgd-as-lib-generic-table.mjs","sources":["../../../projects/as-lib-generic-table/src/lib/as-lib-generic-table.service.ts","../../../projects/as-lib-generic-table/src/lib/directives/component/tooltip.component.ts","../../../projects/as-lib-generic-table/src/lib/directives/component/tooltip.component.html","../../../projects/as-lib-generic-table/src/lib/directives/tooltip/tooltip.directive.ts","../../../projects/as-lib-generic-table/src/lib/as-lib-generic-table.component.ts","../../../projects/as-lib-generic-table/src/lib/as-lib-generic-table.component.html","../../../projects/as-lib-generic-table/src/public-api.ts","../../../projects/as-lib-generic-table/src/agentsmith.bgd-as-lib-generic-table.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AsLibGenericTableService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'tooltip',\n standalone: true,\n\ttemplateUrl: './tooltip.component.html',\n\tstyleUrls: ['./tooltip.component.scss'],\n})\nexport class TooltipComponent implements OnInit {\n\ttooltip: string = '';\n\tleft: number = 0;\n\ttop: number = 0;\n\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<div [style.left]=\"left + 'px'\" [style.top]=\"top + 'px'\" class=\"my-tooltip\">\n\t{{ tooltip }}\n</div>\n","import {\n ApplicationRef,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n HostListener,\n Injector,\n Input,\n ViewContainerRef,\n} from '@angular/core';\nimport { TooltipComponent } from '../component/tooltip.component';\n\n@Directive({\n selector: '[tooltip]',\n standalone: true\n})\nexport class TooltipDirective {\n @Input() tooltip = '';\n\n private componentRef: ComponentRef<any> | null = null;\n\n constructor(\n private elementRef: ElementRef,\n private appRef: ApplicationRef,\n private viewContainerRef: ViewContainerRef\n ) {\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n if (this.componentRef === null) {\n this.componentRef = this.viewContainerRef.createComponent(TooltipComponent);\n this.componentRef.instance.text = this.tooltip;\n this.setTooltipComponentProperties();\n }\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.destroy();\n }\n\n ngOnDestroy(): void {\n this.destroy();\n }\n\n destroy(): void {\n if (this.componentRef !== null) {\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n private setTooltipComponentProperties() {\n if (this.componentRef !== null) {\n this.componentRef.instance.tooltip = this.tooltip;\n const {left, right, bottom} = this.elementRef.nativeElement.getBoundingClientRect();\n this.componentRef.instance.left = (right - left) / 2 + left;\n this.componentRef.instance.top = bottom;\n }\n }\n}\n","import {Component, effect, Inject, inject, InjectionToken, input, OnInit, output, TemplateRef} from '@angular/core';\nimport {IActionButton, IFilterParams, ITableHead} from \"./exports\";\nimport {debounceTime, distinctUntilChanged, Subject} from \"rxjs\";\nimport {BsModalRef, BsModalService} from \"ngx-bootstrap/modal\";\nimport {CommonModule} from \"@angular/common\";\nimport {FormsModule} from \"@angular/forms\";\nimport {TooltipDirective} from \"./directives/tooltip/tooltip.directive\";\nimport {AsLibPaginationComponent} from \"@agentsmith.bgd/as-lib-pagination\";\n\n@Component({\n selector: 'as-lib-generic-table',\n imports: [\n CommonModule,\n FormsModule,\n TooltipDirective,\n AsLibPaginationComponent\n ],\n providers: [BsModalService],\n templateUrl: './as-lib-generic-table.component.html',\n styleUrl: './as-lib-generic-table.component.scss',\n standalone: true\n})\nexport class AsLibGenericTableComponent implements OnInit {\n\n\n loading = input(false);\n striped = input(false);\n bordered = input(false);\n hovered = input(false);\n enableSearch = input(true);\n rowCounter = input(false);\n enableLog = input(false);\n perPage = input(10);\n\n tableHead = input<ITableHead[]>([]);\n\n tableData = input<Record<string, never>[]>([]);\n\n tableHeadStorage = input<string>('');\n\n perPageValues = input<number[]>([10, 20, 50, 100]);\n\n headerActions = input<IActionButton[]>([]);\n\n rowActions = input<IActionButton[]>([]);\n\n tableStyle = input<'' | 'table-light' | 'table-dark'>('');\n\n headStyle = input<\n | 'table-default'\n | 'table-primary'\n | 'table-secondary'\n | 'table-success'\n | 'table-danger'\n | 'table-warning'\n | 'table-info'\n | 'table-light'\n | 'table-dark'>('table-default');\n paginationAlignment = input<'' | 'justify-content-center' | 'justify-content-end'>('justify-content-end');\n\n totalItems = input(0);\n\n page = input(0);\n\n filterParamsChanged = output<IFilterParams>();\n\n editRow = output<Record<string, never>>();\n\n sliderClicked = output<Record<string, never>>();\n\n headerActionClicked = output<string>();\n\n rowActionClicked = output<{ action: string; value: any }>();\n\n tableHeadChanged = output<string[] | null>();\n\n\n bsModalRef!: BsModalRef;\n searchUpdate: Subject<string> = new Subject();\n search = '';\n totalPages = 0;\n counter = 0;\n private sort!: string;\n private sortOrder: 'asc' | 'desc' = 'asc';\n\n //private modalService: BsModalService;// = Inject(BsModalService)\n private modalService = inject(BsModalService);\n\n\n constructor() {\n effect(() => {\n console.log(`The count is:`, this.totalItems(), this.page());\n this.counter = this.page() * this.perPage() + 1\n this.calculatePages();\n this.badgeClassRules();\n this.rowClassRules();\n });\n\n\n }\n\n ngOnInit(): void {\n if (this.tableHeadStorage()) {\n const storage = localStorage.getItem(this.tableHeadStorage());\n if (storage) {\n const hidden: string[] = (JSON.parse(storage) as string[]) || [];\n this.tableHead().forEach(t => (t.hidden = hidden.includes(t.key)));\n } else {\n localStorage.setItem(this.tableHeadStorage(), JSON.stringify(this.tableHead().filter(t => t.hidden).map(t => t.key)));\n }\n }\n\n this.sort = this.tableHead()[0].key;\n this.log('totalPages', this.totalPages);\n this.log('Table head', this.tableHead());\n this.log('Table data', this.tableData());\n this.log('Row actions', this.rowActions());\n // this.log('rows', rows);\n this.searchUpdate.pipe(debounceTime(500), distinctUntilChanged()).subscribe(_ => {\n this.log('search', this.search);\n const emitValue: IFilterParams = {\n page: 0,\n sort: this.sort,\n order: this.sortOrder,\n perPage: this.perPage(),\n searchString: this.search,\n };\n this.log('Search value change, sort values: ', emitValue);\n this.filterParamsChanged.emit(emitValue);\n });\n\n if (!this.perPageValues().includes(this.perPage())) {\n throw new Error('Per page value invalid');\n }\n this.log('Loading', this.loading());\n }\n\n private badgeClassRules() {\n this.applyRules(\n 'badgeClassRules',\n (key) => `${key}Badge`\n );\n }\n\n private rowClassRules() {\n this.applyRules(\n 'rowClassRules',\n () => 'rowClass'\n );\n }\n\n private applyRules(\n ruleKey: 'badgeClassRules' | 'rowClassRules',\n targetKeyFn: (key: string) => string\n ) {\n const tableData = this.tableData();\n\n this.tableHead().forEach(head => {\n const rules = head[ruleKey] || [];\n rules.forEach(rule => {\n const {key} = head;\n const {rule: condition, value, class: cl} = rule;\n\n tableData.forEach(row => {\n if (this.shouldApplyRule(row[key], condition, value)) {\n row[targetKeyFn(key)] = cl as never;\n }\n });\n });\n });\n }\n\n\n private shouldApplyRule(cellValue: any, condition: string, value: any): boolean {\n switch (condition) {\n case '=':\n return cellValue === value;\n case '<>':\n return cellValue !== value;\n case '>':\n return cellValue > value;\n case '<':\n return cellValue < value;\n default:\n return false;\n }\n }\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n openTableLayoutModal(tableHeadModal: TemplateRef<any>): void {\n this.log('Open layout');\n this.bsModalRef = this.modalService.show(tableHeadModal, {\n animated: true,\n ignoreBackdropClick: true,\n class: 'confirm-modal modal-sm',\n initialState: {},\n });\n }\n\n handleTHchange(key: string): void {\n this.log('change triggered', key);\n this.tableHead().forEach(t => {\n if (t.key === key) {\n t.hidden = !t.hidden;\n this.tableHeadStorage &&\n localStorage.setItem(this.tableHeadStorage(), JSON.stringify(this.tableHead().filter(t => t.hidden).map(t => t.key)));\n }\n });\n }\n\n tableSort(key: string): void {\n this.log('table sort key', key);\n this.sort = key;\n this.tableHead().forEach(h => {\n if (h.key === key) {\n if (h.sort === 'headerSortDown') {\n this.sortOrder = 'desc';\n h.sort = 'headerSortUp';\n } else {\n h.sort = 'headerSortDown';\n this.sortOrder = 'asc';\n }\n const emitValue: IFilterParams = {\n page: 0,\n sort: this.sort,\n order: this.sortOrder,\n perPage: this.perPage(),\n searchString: this.search,\n };\n this.log('Sort changed, filter values: ', emitValue);\n this.filterParamsChanged.emit(emitValue);\n } else {\n h.sort = '';\n }\n });\n }\n\n changePerPage($event: Event): void {\n const perPage = parseInt(($event.target as HTMLSelectElement).value, 10) || 25;\n //this.perPage = perPage;\n // this.page = 0;\n this.log('changePerPage', perPage);\n this.calculatePages();\n this.filterParamsChanged.emit({\n page: 0,\n sort: this.sort,\n order: this.sortOrder,\n perPage: perPage,\n searchString: this.search,\n });\n }\n\n log(value: any, ...rest: any[]): void {\n if (this.enableLog() || localStorage.getItem('loggerEnable')) {\n console.log(`AS Dynamic Table -> ${value}`, ...rest);\n }\n }\n\n emitRow(row: Record<string, never>) {\n this.log('edit row', row);\n this.editRow.emit(row);\n }\n\n headerAction(actionName: string) {\n this.log('Header action', actionName);\n this.headerActionClicked.emit(actionName);\n }\n\n rowAction(action: string, value: Record<string, never>) {\n this.log('Row action', action, value);\n this.rowActionClicked.emit({action, value});\n }\n\n pageChange(page: number) {\n const emitValue: IFilterParams = {\n page,\n sort: this.sort,\n order: this.sortOrder,\n perPage: this.perPage(),\n searchString: this.search,\n };\n this.log('Page change, filter values: ', emitValue);\n this.filterParamsChanged.emit(emitValue);\n }\n\n modalClose() {\n const hiddenKeys = this.tableHead().filter(t => t.hidden).map(t => t.key);\n this.log('Modal closed, saved keys', hiddenKeys);\n this.tableHeadChanged.emit(hiddenKeys);\n this.bsModalRef.hide();\n }\n\n //\n resetValues() {\n this.tableHeadChanged.emit(null);\n this.bsModalRef.hide();\n }\n\n //\n private calculatePages() {\n this.totalPages = Math.ceil(this.totalItems() / this.perPage());\n this.log('total items/pages', this.totalItems(), this.totalPages);\n }\n\n\n onRowClick(row: Record<string, never>) {\n console.log('onRowClick', row)\n let find = this.tableHead().find(k => k.key === 'email');\n if (find) {\n find.rowClassRules = [{rule: '=', value: row['email'], class: 'bg-warning'}]\n }\n console.log(this.tableHead());\n this.rowClassRules();\n }\n\n trackByHeadChange(index: number, item: ITableHead): string {\n const rulesSignature = item.rowClassRules?.map(r => `${r.rule}${r.value}${r.class}`).join('|') || '';\n return `${item.key}-${rulesSignature}`;\n }\n}\n","<p *ngIf=\"loading()\">\n\t<img\n\t\t*ngIf=\"loading()\"\n\t\tclass=\"pl-3\"\n\t\tsrc=\"data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==\"\n\t/>\n</p>\n<div\n\t[ngClass]=\"{\n\t\tloading: loading()\n\t}\"\n\tclass=\"dynamic-table\"\n>\n\t<div class=\"row mb-3 mx-0\">\n\t\t<div class=\"col-md-7 d-flex d-sm-flex d-md-block justify-content-center mb-2\">\n\t\t\t<div *ngIf=\"perPageValues() && perPageValues().length\" class=\"d-block d-md-inline-flex me-0 me-md-3\">\n\t\t\t\t<div class=\"table-length\">\n\t\t\t\t\t<label\n\t\t\t\t\t\t>Show\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\t(change)=\"changePerPage($event)\"\n\t\t\t\t\t\t\taria-controls=\"data-table-combine\"\n\t\t\t\t\t\t\tclass=\"form-select form-select-sm\"\n\t\t\t\t\t\t\tname=\"data-table-combine_length\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<option *ngFor=\"let perp of perPageValues()\" [selected]=\"perPage() === perp\" value=\"{{ perp }}\">{{ perp }}</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\tentries</label\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"headerActions() && headerActions().length\" class=\"d-block d-inline-flex\">\n\t\t\t\t<div class=\"dt-buttons btn-group flex-wrap\">\n\t\t\t\t\t<ng-container *ngFor=\"let action of headerActions()\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t(click)=\"headerAction(action.actionName)\"\n\t\t\t\t\t\t\t[ngClass]=\"{ 'btn-secondary': !action.btnColor }\"\n\t\t\t\t\t\t\tclass=\"btn buttons-copy buttons-html5 btn-sm {{ action.actionName }} {{ action.btnColor }}\"\n\t\t\t\t\t\t\tid=\"header-action-{{ action.actionName }}\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span><i *ngIf=\"action.faIcon\" class=\"fa {{ action.faIcon }}\"></i> {{ action.label }}</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"enableSearch()\" class=\"col-md-5 d-flex d-xl-block justify-content-center\">\n\t\t\t<div class=\"table-search\">\n\t\t\t\t<label\n\t\t\t\t\t>Search:\n\t\t\t\t\t<input\n\t\t\t\t\t\t(ngModelChange)=\"this.searchUpdate.next($event)\"\n\t\t\t\t\t\t[(ngModel)]=\"search\"\n\t\t\t\t\t\taria-controls=\"data-table-combine\"\n\t\t\t\t\t\tclass=\"form-control form-control-sm\"\n\t\t\t\t\t\tid=\"table-search\"\n\t\t\t\t\t\tplaceholder=\"\"\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t/></label>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"table-responsive\">\n\t\t<table\n\t\t\t[ngClass]=\"{\n\t\t\t\t'table-striped': striped(),\n\t\t\t\t'table-bordered': bordered(),\n\t\t\t\t'table-hover': hovered()\n\t\t\t}\"\n\t\t\tclass=\"table table-fixed align-middle {{ tableStyle() }}\"\n\t\t>\n\t\t\t<thead [class]=\"headStyle()\">\n\t\t\t\t<tr>\n\t\t\t\t\t<th *ngIf=\"rowCounter()\" class=\"text-end small-column\"> Nr.</th>\n\t\t\t\t\t<ng-container *ngFor=\"let head of tableHead(); trackBy:trackByHeadChange\">\n\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t(click)=\"!head.notSortable && tableSort(head.key)\"\n\t\t\t\t\t\t\t*ngIf=\"!head.hidden\"\n\t\t\t\t\t\t\t[ngClass]=\"head.sort\"\n\t\t\t\t\t\t\tclass=\"header {{ head.notSortable ? '' : 'sortable' }} {{ head.cellAlign }}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<span [translate]=\"head.key.toUpperCase()\">{{ head.label || head.key }}</span>\n\t\t\t\t\t\t\t\t<span class=\"fa\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<th *ngIf=\"tableHeadStorage() || (rowActions() && rowActions().length)\" class=\"header small-column text-center p-0\" data-width=\"50\">\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t(click)=\"openTableLayoutModal(tableHeadModal)\"\n\t\t\t\t\t\t\t*ngIf=\"tableHeadStorage()\"\n\t\t\t\t\t\t\taria-controls=\"basic-link-dropdown\"\n\t\t\t\t\t\t\tclass=\"menu-button toggle-white big-toggle dropdown-menu-link\"\n\t\t\t\t\t\t></a>\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<tr *ngFor=\"let row of tableData(); let i = index;\" class=\"{{ row['rowClass'] || '' }}\" (click)=\"onRowClick(row)\">\n\t\t\t\t\t<th *ngIf=\"rowCounter()\" class=\"text-end\"> {{ i + counter }}.</th>\n\t\t\t\t\t<ng-container *ngFor=\"let head of tableHead()\">\n\t\t\t\t\t\t<td *ngIf=\"!head.hidden\" class=\"header text-nowrap {{ head.cellAlign }}\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'select'\">\n\t\t\t\t\t\t\t\t<input class=\"select\" type=\"checkbox\" />\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!head.type\">\n\t\t\t\t\t\t\t\t{{ row[head.key] }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'badge'\">\n\t\t\t\t\t\t\t\t<span class=\"badge {{ row[head.key + 'Badge'] }}\">{{ row[head.key] }}</span>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'date'\">\n\t\t\t\t\t\t\t\t{{ row[head.key] | date: \"dd.MM.yyyy HH:mm:ss\" }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'slider'\">\n\t\t\t\t\t\t\t\t<div class=\"form-check form-switch\">\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t(change)=\"sliderClicked.emit(row)\"\n\t\t\t\t\t\t\t\t\t\t[checked]=\"row[head.key]\"\n\t\t\t\t\t\t\t\t\t\tclass=\"switched\"\n\t\t\t\t\t\t\t\t\t\tid=\"check-{{ row['id'] }}\"\n\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\tvalue=\"true\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<label for=\"check-{{ row['id'] }}\"></label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'input'\">\n\t\t\t\t\t\t\t\t<input [value]=\"row[head.key]\" type=\"text\" />\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<td *ngIf=\"tableHeadStorage() || (rowActions() && rowActions().length)\" class=\"small-column\">\n\t\t\t\t\t\t<div class=\"menu text-end\">\n\t\t\t\t\t\t\t<ng-container *ngFor=\"let action of rowActions()\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t(click)=\"rowAction(action.actionName, row)\"\n\t\t\t\t\t\t\t\t\t[ngClass]=\"{ 'btn-secondary': !action.btnColor }\"\n\t\t\t\t\t\t\t\t\tclass=\"btn buttons-copy buttons-html5 btn-sm ms-2 {{ action.actionName }} {{ action.btnColor }}\"\n\t\t\t\t\t\t\t\t\ttooltip=\"{{ action.label }}\"\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span><i *ngIf=\"action.faIcon\" class=\"fa {{ action.faIcon }}\"></i></span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t</table>\n\t\t<as-lib-pagination\n\t\t\t(pageChange)=\"pageChange($event)\"\n\t\t\t*ngIf=\"totalPages > 1\"\n\t\t\t[align]=\"paginationAlignment()\"\n\t\t\t[enableLog]=\"enableLog()\"\n\t\t\t[first]=\"page() === 0\"\n\t\t\t[last]=\"page() === totalPages - 1\"\n\t\t\t[page]=\"page()\"\n\t\t\t[totalPages]=\"totalPages\"\n\t\t></as-lib-pagination>\n\t</div>\n\t<ng-template #tableHeadModal>\n\t\t<div class=\"modal-header\">\n\t\t\t<h4 class=\"modal-title pull-left\">Edit table header</h4>\n\t\t\t<button (click)=\"modalClose()\" aria-label=\"Close\" class=\"btn-close close pull-right\" type=\"button\">\n\t\t\t\t<span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"modal-body\">\n\t\t\t<ng-container *ngFor=\"let td of tableHead(); trackBy:trackByHeadChange\">\n\t\t\t\t<div class=\"form-check form-switch\">\n\t\t\t\t\t<input\n\t\t\t\t\t\t(change)=\"handleTHchange(td.key)\"\n\t\t\t\t\t\t[checked]=\"!td.hidden\"\n\t\t\t\t\t\t[disabled]=\"td.mandatory\"\n\t\t\t\t\t\t[readOnly]=\"td.mandatory\"\n\t\t\t\t\t\tclass=\"form-check-input\"\n\t\t\t\t\t\tid=\"{{ td.key }}\"\n\t\t\t\t\t\trole=\"switch\"\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tvalue=\"true\"\n\t\t\t\t\t/>\n\t\t\t\t\t<label class=\"form-check-label\" for=\"{{ td.key }}\">{{ td.label }} {{ td.mandatory ? \"*\" : \"\" }}</label>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<small class=\"small text-muted pt-2\">* Mandatory field for the view</small>\n\t\t</div>\n\t\t<div class=\"modal-footer\">\n\t\t\t<button (click)=\"resetValues()\" class=\"btn btn-outline-secondary me-auto\" type=\"button\">Reset</button>\n\t\t\t<button (click)=\"modalClose()\" class=\"btn btn-primary\" translate=\"CLOSE\" type=\"button\">Close</button>\n\t\t</div>\n\t</ng-template>\n</div>\n","/*\n * Public API Surface of as-lib-generic-table\n */\n\nexport * from './lib/as-lib-generic-table.service';\nexport * from './lib/as-lib-generic-table.component';\nexport * from './lib/exports';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agentsmith.bgd-as-lib-generic-table.mjs","sources":["../../../projects/as-lib-generic-table/src/lib/as-lib-generic-table.service.ts","../../../projects/as-lib-generic-table/src/lib/directives/component/tooltip.component.ts","../../../projects/as-lib-generic-table/src/lib/directives/component/tooltip.component.html","../../../projects/as-lib-generic-table/src/lib/directives/tooltip/tooltip.directive.ts","../../../projects/as-lib-generic-table/src/lib/as-lib-generic-table.component.ts","../../../projects/as-lib-generic-table/src/lib/as-lib-generic-table.component.html","../../../projects/as-lib-generic-table/src/public-api.ts","../../../projects/as-lib-generic-table/src/agentsmith.bgd-as-lib-generic-table.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AsLibGenericTableService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'tooltip',\n standalone: true,\n\ttemplateUrl: './tooltip.component.html',\n\tstyleUrls: ['./tooltip.component.scss'],\n})\nexport class TooltipComponent implements OnInit {\n\ttooltip: string = '';\n\tleft: number = 0;\n\ttop: number = 0;\n\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<div [style.left]=\"left + 'px'\" [style.top]=\"top + 'px'\" class=\"my-tooltip\">\n\t{{ tooltip }}\n</div>\n","import {\n ApplicationRef,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n HostListener,\n Injector,\n Input,\n ViewContainerRef,\n} from '@angular/core';\nimport { TooltipComponent } from '../component/tooltip.component';\n\n@Directive({\n selector: '[tooltip]',\n standalone: true\n})\nexport class TooltipDirective {\n @Input() tooltip = '';\n\n private componentRef: ComponentRef<any> | null = null;\n\n constructor(\n private elementRef: ElementRef,\n private appRef: ApplicationRef,\n private viewContainerRef: ViewContainerRef\n ) {\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n if (this.componentRef === null) {\n this.componentRef = this.viewContainerRef.createComponent(TooltipComponent);\n this.componentRef.instance.text = this.tooltip;\n this.setTooltipComponentProperties();\n }\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.destroy();\n }\n\n ngOnDestroy(): void {\n this.destroy();\n }\n\n destroy(): void {\n if (this.componentRef !== null) {\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n private setTooltipComponentProperties() {\n if (this.componentRef !== null) {\n this.componentRef.instance.tooltip = this.tooltip;\n const {left, right, bottom} = this.elementRef.nativeElement.getBoundingClientRect();\n this.componentRef.instance.left = (right - left) / 2 + left;\n this.componentRef.instance.top = bottom;\n }\n }\n}\n","import { Component, effect, inject, input, OnInit, output, TemplateRef } from '@angular/core';\nimport { IActionButton, IFilterParams, ITableHead } from \"./exports\";\nimport { debounceTime, distinctUntilChanged, Subject } from \"rxjs\";\nimport { BsModalRef, BsModalService } from \"ngx-bootstrap/modal\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { TooltipDirective } from \"./directives/tooltip/tooltip.directive\";\nimport { AsLibPaginationComponent } from \"@agentsmith.bgd/as-lib-pagination\";\n\n@Component({\n selector: 'as-lib-generic-table',\n imports: [\n CommonModule,\n FormsModule,\n TooltipDirective,\n AsLibPaginationComponent\n ],\n providers: [BsModalService],\n templateUrl: './as-lib-generic-table.component.html',\n styleUrl: './as-lib-generic-table.component.scss',\n standalone: true\n})\nexport class AsLibGenericTableComponent {\n\n\n loading = input(false);\n striped = input(false);\n bordered = input(false);\n hovered = input(false);\n enableSearch = input(true);\n rowCounter = input(false);\n enableLog = input(false);\n perPage = input(10);\n\n tableHead = input<ITableHead[]>([]);\n\n tableData = input<Record<string, never>[]>([]);\n\n tableHeadStorage = input<string>('');\n\n perPageValues = input<number[]>([10, 20, 50, 100]);\n\n headerActions = input<IActionButton[]>([]);\n\n rowActions = input<IActionButton[]>([]);\n\n tableStyle = input<'' | 'table-light' | 'table-dark'>('');\n\n headStyle = input<\n | 'table-default'\n | 'table-primary'\n | 'table-secondary'\n | 'table-success'\n | 'table-danger'\n | 'table-warning'\n | 'table-info'\n | 'table-light'\n | 'table-dark'>('table-default');\n paginationAlignment = input<'' | 'justify-content-center' | 'justify-content-end'>('justify-content-end');\n\n totalItems = input(0);\n\n page = input(0);\n\n filterParamsChanged = output<IFilterParams>();\n\n editRow = output<Record<string, never>>();\n\n sliderClicked = output<Record<string, never>>();\n\n headerActionClicked = output<string>();\n\n rowActionClicked = output<{ action: string; value: any }>();\n\n tableHeadChanged = output<string[] | null>();\n\n\n bsModalRef!: BsModalRef;\n searchUpdate: Subject<string> = new Subject();\n search = '';\n totalPages = 0;\n counter = 0;\n private sort!: string;\n private sortOrder: 'asc' | 'desc' = 'asc';\n\n //private modalService: BsModalService;// = Inject(BsModalService)\n private modalService = inject(BsModalService);\n\n\n constructor() {\n effect(() => {\n console.log(`The count is:`, this.totalItems(), this.page());\n this.counter = this.page() * this.perPage() + 1\n this.calculatePages();\n this.badgeClassRules();\n this.rowClassRules();\n this.init();\n });\n\n\n }\n\n init(): void {\n if (this.tableHeadStorage()) {\n const storage = localStorage.getItem(this.tableHeadStorage());\n if (storage) {\n const hidden: string[] = (JSON.parse(storage) as string[]) || [];\n this.tableHead().forEach(t => (t.hidden = hidden.includes(t.key)));\n } else {\n localStorage.setItem(this.tableHeadStorage(), JSON.stringify(this.tableHead().filter(t => t.hidden).map(t => t.key)));\n }\n }\n\n this.sort = this.tableHead()[0].key;\n this.log('totalPages', this.totalPages);\n this.log('Table head', this.tableHead());\n this.log('Table data', this.tableData());\n this.log('Row actions', this.rowActions());\n // this.log('rows', rows);\n this.searchUpdate.pipe(debounceTime(500), distinctUntilChanged()).subscribe(_ => {\n this.log('search', this.search);\n const emitValue: IFilterParams = {\n page: 0,\n sort: this.sort,\n order: this.sortOrder,\n perPage: this.perPage(),\n searchString: this.search,\n };\n this.log('Search value change, sort values: ', emitValue);\n this.filterParamsChanged.emit(emitValue);\n });\n\n if (!this.perPageValues().includes(this.perPage())) {\n throw new Error('Per page value invalid');\n }\n this.log('Loading', this.loading());\n }\n\n private badgeClassRules() {\n this.applyRules(\n 'badgeClassRules',\n (key) => `${key}Badge`\n );\n }\n\n private rowClassRules() {\n this.applyRules(\n 'rowClassRules',\n () => 'rowClass'\n );\n }\n\n private applyRules(\n ruleKey: 'badgeClassRules' | 'rowClassRules',\n targetKeyFn: (key: string) => string\n ) {\n const tableData = this.tableData();\n\n this.tableHead().forEach(head => {\n const rules = head[ruleKey] || [];\n rules.forEach(rule => {\n const {key} = head;\n const {rule: condition, value, class: cl} = rule;\n\n tableData.forEach(row => {\n if (this.shouldApplyRule(row[key], condition, value)) {\n row[targetKeyFn(key)] = cl as never;\n }\n });\n });\n });\n }\n\n\n private shouldApplyRule(cellValue: any, condition: string, value: any): boolean {\n switch (condition) {\n case '=':\n return cellValue === value;\n case '<>':\n return cellValue !== value;\n case '>':\n return cellValue > value;\n case '<':\n return cellValue < value;\n default:\n return false;\n }\n }\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n openTableLayoutModal(tableHeadModal: TemplateRef<any>): void {\n this.log('Open layout');\n this.bsModalRef = this.modalService.show(tableHeadModal, {\n animated: true,\n ignoreBackdropClick: true,\n class: 'confirm-modal modal-sm',\n initialState: {},\n });\n }\n\n handleTHchange(key: string): void {\n this.log('change triggered', key);\n this.tableHead().forEach(t => {\n if (t.key === key) {\n t.hidden = !t.hidden;\n this.tableHeadStorage &&\n localStorage.setItem(this.tableHeadStorage(), JSON.stringify(this.tableHead().filter(t => t.hidden).map(t => t.key)));\n }\n });\n }\n\n tableSort(key: string): void {\n this.log('table sort key', key);\n this.sort = key;\n this.tableHead().forEach(h => {\n if (h.key === key) {\n if (h.sort === 'headerSortDown') {\n this.sortOrder = 'desc';\n h.sort = 'headerSortUp';\n } else {\n h.sort = 'headerSortDown';\n this.sortOrder = 'asc';\n }\n const emitValue: IFilterParams = {\n page: 0,\n sort: this.sort,\n order: this.sortOrder,\n perPage: this.perPage(),\n searchString: this.search,\n };\n this.log('Sort changed, filter values: ', emitValue);\n this.filterParamsChanged.emit(emitValue);\n } else {\n h.sort = '';\n }\n });\n }\n\n changePerPage($event: Event): void {\n const perPage = parseInt(($event.target as HTMLSelectElement).value, 10) || 25;\n //this.perPage = perPage;\n // this.page = 0;\n this.log('changePerPage', perPage);\n this.calculatePages();\n this.filterParamsChanged.emit({\n page: 0,\n sort: this.sort,\n order: this.sortOrder,\n perPage: perPage,\n searchString: this.search,\n });\n }\n\n log(value: any, ...rest: any[]): void {\n if (this.enableLog() || localStorage.getItem('loggerEnable')) {\n console.log(`AS Dynamic Table -> ${value}`, ...rest);\n }\n }\n\n emitRow(row: Record<string, never>) {\n this.log('edit row', row);\n this.editRow.emit(row);\n }\n\n headerAction(actionName: string) {\n this.log('Header action', actionName);\n this.headerActionClicked.emit(actionName);\n }\n\n rowAction(action: string, value: Record<string, never>) {\n this.log('Row action', action, value);\n this.rowActionClicked.emit({action, value});\n }\n\n pageChange(page: number) {\n const emitValue: IFilterParams = {\n page,\n sort: this.sort,\n order: this.sortOrder,\n perPage: this.perPage(),\n searchString: this.search,\n };\n this.log('Page change, filter values: ', emitValue);\n this.filterParamsChanged.emit(emitValue);\n }\n\n modalClose() {\n const hiddenKeys = this.tableHead().filter(t => t.hidden).map(t => t.key);\n this.log('Modal closed, saved keys', hiddenKeys);\n this.tableHeadChanged.emit(hiddenKeys);\n this.bsModalRef.hide();\n }\n\n //\n resetValues() {\n this.tableHeadChanged.emit(null);\n this.bsModalRef.hide();\n }\n\n //\n private calculatePages() {\n this.totalPages = Math.ceil(this.totalItems() / this.perPage());\n this.log('total items/pages', this.totalItems(), this.totalPages);\n }\n\n\n onRowClick(row: Record<string, never>) {\n console.log('onRowClick', row)\n let find = this.tableHead().find(k => k.key === 'email');\n if (find) {\n find.rowClassRules = [{rule: '=', value: row['email'], class: 'bg-warning'}]\n }\n console.log(this.tableHead());\n this.rowClassRules();\n }\n\n trackByHeadChange(index: number, item: ITableHead): string {\n const rulesSignature = item.rowClassRules?.map(r => `${r.rule}${r.value}${r.class}`).join('|') || '';\n\n return `${item.key}-${rulesSignature}`;\n }\n\n trackByHeadChange2(index: number, item: any): string {\n console.log('any', index, item)\n return `${item.key}-${index}`;\n }\n}\n","<p *ngIf=\"loading()\">\n\t<img\n\t\t*ngIf=\"loading()\"\n\t\tclass=\"pl-3\"\n\t\tsrc=\"data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==\"\n\t/>\n</p>\n<div\n\t[ngClass]=\"{\n\t\tloading: loading()\n\t}\"\n\tclass=\"dynamic-table\"\n>\n\t<div class=\"row mb-3 mx-0\">\n\t\t<div class=\"col-md-7 d-flex d-sm-flex d-md-block justify-content-center mb-2\">\n\t\t\t<div *ngIf=\"perPageValues() && perPageValues().length\" class=\"d-block d-md-inline-flex me-0 me-md-3\">\n\t\t\t\t<div class=\"table-length\">\n\t\t\t\t\t<label\n\t\t\t\t\t\t>Show\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\t(change)=\"changePerPage($event)\"\n\t\t\t\t\t\t\taria-controls=\"data-table-combine\"\n\t\t\t\t\t\t\tclass=\"form-select form-select-sm\"\n\t\t\t\t\t\t\tname=\"data-table-combine_length\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<option *ngFor=\"let perp of perPageValues()\" [selected]=\"perPage() === perp\" value=\"{{ perp }}\">{{ perp }}</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\tentries</label\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"headerActions() && headerActions().length\" class=\"d-block d-inline-flex\">\n\t\t\t\t<div class=\"dt-buttons btn-group flex-wrap\">\n\t\t\t\t\t<ng-container *ngFor=\"let action of headerActions()\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t(click)=\"headerAction(action.actionName)\"\n\t\t\t\t\t\t\t[ngClass]=\"{ 'btn-secondary': !action.btnColor }\"\n\t\t\t\t\t\t\tclass=\"btn buttons-copy buttons-html5 btn-sm {{ action.actionName }} {{ action.btnColor }}\"\n\t\t\t\t\t\t\tid=\"header-action-{{ action.actionName }}\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span><i *ngIf=\"action.faIcon\" class=\"fa {{ action.faIcon }}\"></i> {{ action.label }}</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"enableSearch()\" class=\"col-md-5 d-flex d-xl-block justify-content-center\">\n\t\t\t<div class=\"table-search\">\n\t\t\t\t<label\n\t\t\t\t\t>Search:\n\t\t\t\t\t<input\n\t\t\t\t\t\t(ngModelChange)=\"this.searchUpdate.next($event)\"\n\t\t\t\t\t\t[(ngModel)]=\"search\"\n\t\t\t\t\t\taria-controls=\"data-table-combine\"\n\t\t\t\t\t\tclass=\"form-control form-control-sm\"\n\t\t\t\t\t\tid=\"table-search\"\n\t\t\t\t\t\tplaceholder=\"\"\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t/></label>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"table-responsive\">\n\t\t<table\n\t\t\t[ngClass]=\"{\n\t\t\t\t'table-striped': striped(),\n\t\t\t\t'table-bordered': bordered(),\n\t\t\t\t'table-hover': hovered()\n\t\t\t}\"\n\t\t\tclass=\"table table-fixed align-middle {{ tableStyle() }}\"\n\t\t>\n\t\t\t<thead [class]=\"headStyle()\">\n\t\t\t\t<tr>\n\t\t\t\t\t<th *ngIf=\"rowCounter()\" class=\"text-end small-column\"> Nr.</th>\n\t\t\t\t\t<ng-container *ngFor=\"let head of tableHead(); trackBy:trackByHeadChange\">\n\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t(click)=\"!head.notSortable && tableSort(head.key)\"\n\t\t\t\t\t\t\t*ngIf=\"!head.hidden\"\n\t\t\t\t\t\t\t[ngClass]=\"head.sort\"\n\t\t\t\t\t\t\tclass=\"header {{ head.notSortable ? '' : 'sortable' }} {{ head.cellAlign }}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<span [translate]=\"head.key.toUpperCase()\">{{ head.label || head.key }}</span>\n\t\t\t\t\t\t\t\t<span class=\"fa\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<th *ngIf=\"tableHeadStorage() || (rowActions() && rowActions().length)\" class=\"header small-column text-center p-0\" data-width=\"50\">\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t(click)=\"openTableLayoutModal(tableHeadModal)\"\n\t\t\t\t\t\t\t*ngIf=\"tableHeadStorage()\"\n\t\t\t\t\t\t\taria-controls=\"basic-link-dropdown\"\n\t\t\t\t\t\t\tclass=\"menu-button toggle-white big-toggle dropdown-menu-link\"\n\t\t\t\t\t\t></a>\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<tr *ngFor=\"let row of tableData(); let i = index;\" class=\"{{ row['rowClass'] || '' }}\" (click)=\"onRowClick(row)\">\n\t\t\t\t\t<th *ngIf=\"rowCounter()\" class=\"text-end\"> {{ i + counter }}.</th>\n\t\t\t\t\t<ng-container *ngFor=\"let head of tableHead()\">\n\t\t\t\t\t\t<td *ngIf=\"!head.hidden\" class=\"header text-nowrap {{ head.cellAlign }}\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'select'\">\n\t\t\t\t\t\t\t\t<input class=\"select\" type=\"checkbox\" />\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!head.type\">\n\t\t\t\t\t\t\t\t{{ row[head.key] }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'badge'\">\n\t\t\t\t\t\t\t\t<span class=\"badge {{ row[head.key + 'Badge'] }}\">{{ row[head.key] }}</span>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'date'\">\n\t\t\t\t\t\t\t\t{{ row[head.key] | date: \"dd.MM.yyyy HH:mm:ss\" }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'slider'\">\n\t\t\t\t\t\t\t\t<div class=\"form-check form-switch\">\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t(change)=\"sliderClicked.emit(row)\"\n\t\t\t\t\t\t\t\t\t\t[checked]=\"row[head.key]\"\n\t\t\t\t\t\t\t\t\t\tclass=\"switched\"\n\t\t\t\t\t\t\t\t\t\tid=\"check-{{ row['id'] }}\"\n\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\tvalue=\"true\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<label for=\"check-{{ row['id'] }}\"></label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'input'\">\n\t\t\t\t\t\t\t\t<input [value]=\"row[head.key]\" type=\"text\" />\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<td *ngIf=\"tableHeadStorage() || (rowActions() && rowActions().length)\" class=\"small-column\">\n\t\t\t\t\t\t<div class=\"menu text-end\">\n\t\t\t\t\t\t\t<ng-container *ngFor=\"let action of rowActions()\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t(click)=\"rowAction(action.actionName, row)\"\n\t\t\t\t\t\t\t\t\t[ngClass]=\"{ 'btn-secondary': !action.btnColor }\"\n\t\t\t\t\t\t\t\t\tclass=\"btn buttons-copy buttons-html5 btn-sm ms-2 {{ action.actionName }} {{ action.btnColor }}\"\n\t\t\t\t\t\t\t\t\ttooltip=\"{{ action.label }}\"\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span><i *ngIf=\"action.faIcon\" class=\"fa {{ action.faIcon }}\"></i></span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t</table>\n\t\t<as-lib-pagination\n\t\t\t(pageChange)=\"pageChange($event)\"\n\t\t\t*ngIf=\"totalPages > 1\"\n\t\t\t[align]=\"paginationAlignment()\"\n\t\t\t[enableLog]=\"enableLog()\"\n\t\t\t[first]=\"page() === 0\"\n\t\t\t[last]=\"page() === totalPages - 1\"\n\t\t\t[page]=\"page()\"\n\t\t\t[totalPages]=\"totalPages\"\n\t\t></as-lib-pagination>\n\t</div>\n\t<ng-template #tableHeadModal>\n\t\t<div class=\"modal-header\">\n\t\t\t<h4 class=\"modal-title pull-left\">Edit table header</h4>\n\t\t\t<button (click)=\"modalClose()\" aria-label=\"Close\" class=\"btn-close close pull-right\" type=\"button\">\n\t\t\t\t<span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"modal-body\">\n\t\t\t<ng-container *ngFor=\"let td of tableHead(); trackBy:trackByHeadChange\">\n\t\t\t\t<div class=\"form-check form-switch\">\n\t\t\t\t\t<input\n\t\t\t\t\t\t(change)=\"handleTHchange(td.key)\"\n\t\t\t\t\t\t[checked]=\"!td.hidden\"\n\t\t\t\t\t\t[disabled]=\"td.mandatory\"\n\t\t\t\t\t\t[readOnly]=\"td.mandatory\"\n\t\t\t\t\t\tclass=\"form-check-input\"\n\t\t\t\t\t\tid=\"{{ td.key }}\"\n\t\t\t\t\t\trole=\"switch\"\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tvalue=\"true\"\n\t\t\t\t\t/>\n\t\t\t\t\t<label class=\"form-check-label\" for=\"{{ td.key }}\">{{ td.label }} {{ td.mandatory ? \"*\" : \"\" }}</label>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<small class=\"small text-muted pt-2\">* Mandatory field for the view</small>\n\t\t</div>\n\t\t<div class=\"modal-footer\">\n\t\t\t<button (click)=\"resetValues()\" class=\"btn btn-outline-secondary me-auto\" type=\"button\">Reset</button>\n\t\t\t<button (click)=\"modalClose()\" class=\"btn btn-primary\" translate=\"CLOSE\" type=\"button\">Close</button>\n\t\t</div>\n\t</ng-template>\n</div>\n","/*\n * Public API Surface of as-lib-generic-table\n */\n\nexport * from './lib/as-lib-generic-table.service';\nexport * from './lib/as-lib-generic-table.component';\nexport * from './lib/exports';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TemplateRef } from '@angular/core';
|
|
2
2
|
import { IActionButton, IFilterParams, ITableHead } from "./exports";
|
|
3
3
|
import { Subject } from "rxjs";
|
|
4
4
|
import { BsModalRef } from "ngx-bootstrap/modal";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class AsLibGenericTableComponent
|
|
6
|
+
export declare class AsLibGenericTableComponent {
|
|
7
7
|
loading: import("@angular/core").InputSignal<boolean>;
|
|
8
8
|
striped: import("@angular/core").InputSignal<boolean>;
|
|
9
9
|
bordered: import("@angular/core").InputSignal<boolean>;
|
|
@@ -41,7 +41,7 @@ export declare class AsLibGenericTableComponent implements OnInit {
|
|
|
41
41
|
private sortOrder;
|
|
42
42
|
private modalService;
|
|
43
43
|
constructor();
|
|
44
|
-
|
|
44
|
+
init(): void;
|
|
45
45
|
private badgeClassRules;
|
|
46
46
|
private rowClassRules;
|
|
47
47
|
private applyRules;
|
|
@@ -60,6 +60,7 @@ export declare class AsLibGenericTableComponent implements OnInit {
|
|
|
60
60
|
private calculatePages;
|
|
61
61
|
onRowClick(row: Record<string, never>): void;
|
|
62
62
|
trackByHeadChange(index: number, item: ITableHead): string;
|
|
63
|
+
trackByHeadChange2(index: number, item: any): string;
|
|
63
64
|
static ɵfac: i0.ɵɵFactoryDeclaration<AsLibGenericTableComponent, never>;
|
|
64
65
|
static ɵcmp: i0.ɵɵComponentDeclaration<AsLibGenericTableComponent, "as-lib-generic-table", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "hovered": { "alias": "hovered"; "required": false; "isSignal": true; }; "enableSearch": { "alias": "enableSearch"; "required": false; "isSignal": true; }; "rowCounter": { "alias": "rowCounter"; "required": false; "isSignal": true; }; "enableLog": { "alias": "enableLog"; "required": false; "isSignal": true; }; "perPage": { "alias": "perPage"; "required": false; "isSignal": true; }; "tableHead": { "alias": "tableHead"; "required": false; "isSignal": true; }; "tableData": { "alias": "tableData"; "required": false; "isSignal": true; }; "tableHeadStorage": { "alias": "tableHeadStorage"; "required": false; "isSignal": true; }; "perPageValues": { "alias": "perPageValues"; "required": false; "isSignal": true; }; "headerActions": { "alias": "headerActions"; "required": false; "isSignal": true; }; "rowActions": { "alias": "rowActions"; "required": false; "isSignal": true; }; "tableStyle": { "alias": "tableStyle"; "required": false; "isSignal": true; }; "headStyle": { "alias": "headStyle"; "required": false; "isSignal": true; }; "paginationAlignment": { "alias": "paginationAlignment"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; }, { "filterParamsChanged": "filterParamsChanged"; "editRow": "editRow"; "sliderClicked": "sliderClicked"; "headerActionClicked": "headerActionClicked"; "rowActionClicked": "rowActionClicked"; "tableHeadChanged": "tableHeadChanged"; }, never, never, true, never>;
|
|
65
66
|
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentsmith.bgd/as-lib-generic-table",
|
|
3
|
-
"version": "19.0.
|
|
3
|
+
"version": "19.0.20",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^19.1.1",
|
|
6
6
|
"@angular/core": "^19.1.1",
|
|
7
|
-
"@agentsmith.bgd/as-lib-pagination": "^19.0.
|
|
7
|
+
"@agentsmith.bgd/as-lib-pagination": "^19.0.6",
|
|
8
8
|
"font-awesome": "^4.7.0",
|
|
9
9
|
"ngx-bootstrap": "^19.0.2",
|
|
10
10
|
"ngx-pipes": "^3.2.2",
|
|
@@ -22,8 +22,6 @@
|
|
|
22
22
|
},
|
|
23
23
|
".": {
|
|
24
24
|
"types": "./index.d.ts",
|
|
25
|
-
"esm2022": "./esm2022/agentsmith.bgd-as-lib-generic-table.mjs",
|
|
26
|
-
"esm": "./esm2022/agentsmith.bgd-as-lib-generic-table.mjs",
|
|
27
25
|
"default": "./fesm2022/agentsmith.bgd-as-lib-generic-table.mjs"
|
|
28
26
|
}
|
|
29
27
|
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnRzbWl0aC5iZ2QtYXMtbGliLWdlbmVyaWMtdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcy1saWItZ2VuZXJpYy10YWJsZS9zcmMvYWdlbnRzbWl0aC5iZ2QtYXMtbGliLWdlbmVyaWMtdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
import { Component, effect, inject, input, output } from '@angular/core';
|
|
2
|
-
import { debounceTime, distinctUntilChanged, Subject } from "rxjs";
|
|
3
|
-
import { BsModalService } from "ngx-bootstrap/modal";
|
|
4
|
-
import { CommonModule } from "@angular/common";
|
|
5
|
-
import { FormsModule } from "@angular/forms";
|
|
6
|
-
import { TooltipDirective } from "./directives/tooltip/tooltip.directive";
|
|
7
|
-
import { AsLibPaginationComponent } from "@agentsmith.bgd/as-lib-pagination";
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/common";
|
|
10
|
-
import * as i2 from "@angular/forms";
|
|
11
|
-
export class AsLibGenericTableComponent {
|
|
12
|
-
loading = input(false);
|
|
13
|
-
striped = input(false);
|
|
14
|
-
bordered = input(false);
|
|
15
|
-
hovered = input(false);
|
|
16
|
-
enableSearch = input(true);
|
|
17
|
-
rowCounter = input(false);
|
|
18
|
-
enableLog = input(false);
|
|
19
|
-
perPage = input(10);
|
|
20
|
-
tableHead = input([]);
|
|
21
|
-
tableData = input([]);
|
|
22
|
-
tableHeadStorage = input('');
|
|
23
|
-
perPageValues = input([10, 20, 50, 100]);
|
|
24
|
-
headerActions = input([]);
|
|
25
|
-
rowActions = input([]);
|
|
26
|
-
tableStyle = input('');
|
|
27
|
-
headStyle = input('table-default');
|
|
28
|
-
paginationAlignment = input('justify-content-end');
|
|
29
|
-
totalItems = input(0);
|
|
30
|
-
page = input(0);
|
|
31
|
-
filterParamsChanged = output();
|
|
32
|
-
editRow = output();
|
|
33
|
-
sliderClicked = output();
|
|
34
|
-
headerActionClicked = output();
|
|
35
|
-
rowActionClicked = output();
|
|
36
|
-
tableHeadChanged = output();
|
|
37
|
-
bsModalRef;
|
|
38
|
-
searchUpdate = new Subject();
|
|
39
|
-
search = '';
|
|
40
|
-
totalPages = 0;
|
|
41
|
-
counter = 0;
|
|
42
|
-
sort;
|
|
43
|
-
sortOrder = 'asc';
|
|
44
|
-
//private modalService: BsModalService;// = Inject(BsModalService)
|
|
45
|
-
modalService = inject(BsModalService);
|
|
46
|
-
constructor() {
|
|
47
|
-
effect(() => {
|
|
48
|
-
console.log(`The count is:`, this.totalItems(), this.page());
|
|
49
|
-
this.counter = this.page() * this.perPage() + 1;
|
|
50
|
-
this.calculatePages();
|
|
51
|
-
this.badgeClassRules();
|
|
52
|
-
this.rowClassRules();
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
ngOnInit() {
|
|
56
|
-
if (this.tableHeadStorage()) {
|
|
57
|
-
const storage = localStorage.getItem(this.tableHeadStorage());
|
|
58
|
-
if (storage) {
|
|
59
|
-
const hidden = JSON.parse(storage) || [];
|
|
60
|
-
this.tableHead().forEach(t => (t.hidden = hidden.includes(t.key)));
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
localStorage.setItem(this.tableHeadStorage(), JSON.stringify(this.tableHead().filter(t => t.hidden).map(t => t.key)));
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
this.sort = this.tableHead()[0].key;
|
|
67
|
-
this.log('totalPages', this.totalPages);
|
|
68
|
-
this.log('Table head', this.tableHead());
|
|
69
|
-
this.log('Table data', this.tableData());
|
|
70
|
-
this.log('Row actions', this.rowActions());
|
|
71
|
-
// this.log('rows', rows);
|
|
72
|
-
this.searchUpdate.pipe(debounceTime(500), distinctUntilChanged()).subscribe(_ => {
|
|
73
|
-
this.log('search', this.search);
|
|
74
|
-
const emitValue = {
|
|
75
|
-
page: 0,
|
|
76
|
-
sort: this.sort,
|
|
77
|
-
order: this.sortOrder,
|
|
78
|
-
perPage: this.perPage(),
|
|
79
|
-
searchString: this.search,
|
|
80
|
-
};
|
|
81
|
-
this.log('Search value change, sort values: ', emitValue);
|
|
82
|
-
this.filterParamsChanged.emit(emitValue);
|
|
83
|
-
});
|
|
84
|
-
if (!this.perPageValues().includes(this.perPage())) {
|
|
85
|
-
throw new Error('Per page value invalid');
|
|
86
|
-
}
|
|
87
|
-
this.log('Loading', this.loading());
|
|
88
|
-
}
|
|
89
|
-
badgeClassRules() {
|
|
90
|
-
this.applyRules('badgeClassRules', (key) => `${key}Badge`);
|
|
91
|
-
}
|
|
92
|
-
rowClassRules() {
|
|
93
|
-
this.applyRules('rowClassRules', () => 'rowClass');
|
|
94
|
-
}
|
|
95
|
-
applyRules(ruleKey, targetKeyFn) {
|
|
96
|
-
const tableData = this.tableData();
|
|
97
|
-
this.tableHead().forEach(head => {
|
|
98
|
-
const rules = head[ruleKey] || [];
|
|
99
|
-
rules.forEach(rule => {
|
|
100
|
-
const { key } = head;
|
|
101
|
-
const { rule: condition, value, class: cl } = rule;
|
|
102
|
-
tableData.forEach(row => {
|
|
103
|
-
if (this.shouldApplyRule(row[key], condition, value)) {
|
|
104
|
-
row[targetKeyFn(key)] = cl;
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
shouldApplyRule(cellValue, condition, value) {
|
|
111
|
-
switch (condition) {
|
|
112
|
-
case '=':
|
|
113
|
-
return cellValue === value;
|
|
114
|
-
case '<>':
|
|
115
|
-
return cellValue !== value;
|
|
116
|
-
case '>':
|
|
117
|
-
return cellValue > value;
|
|
118
|
-
case '<':
|
|
119
|
-
return cellValue < value;
|
|
120
|
-
default:
|
|
121
|
-
return false;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
125
|
-
openTableLayoutModal(tableHeadModal) {
|
|
126
|
-
this.log('Open layout');
|
|
127
|
-
this.bsModalRef = this.modalService.show(tableHeadModal, {
|
|
128
|
-
animated: true,
|
|
129
|
-
ignoreBackdropClick: true,
|
|
130
|
-
class: 'confirm-modal modal-sm',
|
|
131
|
-
initialState: {},
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
handleTHchange(key) {
|
|
135
|
-
this.log('change triggered', key);
|
|
136
|
-
this.tableHead().forEach(t => {
|
|
137
|
-
if (t.key === key) {
|
|
138
|
-
t.hidden = !t.hidden;
|
|
139
|
-
this.tableHeadStorage &&
|
|
140
|
-
localStorage.setItem(this.tableHeadStorage(), JSON.stringify(this.tableHead().filter(t => t.hidden).map(t => t.key)));
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
tableSort(key) {
|
|
145
|
-
this.log('table sort key', key);
|
|
146
|
-
this.sort = key;
|
|
147
|
-
this.tableHead().forEach(h => {
|
|
148
|
-
if (h.key === key) {
|
|
149
|
-
if (h.sort === 'headerSortDown') {
|
|
150
|
-
this.sortOrder = 'desc';
|
|
151
|
-
h.sort = 'headerSortUp';
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
h.sort = 'headerSortDown';
|
|
155
|
-
this.sortOrder = 'asc';
|
|
156
|
-
}
|
|
157
|
-
const emitValue = {
|
|
158
|
-
page: 0,
|
|
159
|
-
sort: this.sort,
|
|
160
|
-
order: this.sortOrder,
|
|
161
|
-
perPage: this.perPage(),
|
|
162
|
-
searchString: this.search,
|
|
163
|
-
};
|
|
164
|
-
this.log('Sort changed, filter values: ', emitValue);
|
|
165
|
-
this.filterParamsChanged.emit(emitValue);
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
h.sort = '';
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
changePerPage($event) {
|
|
173
|
-
const perPage = parseInt($event.target.value, 10) || 25;
|
|
174
|
-
//this.perPage = perPage;
|
|
175
|
-
// this.page = 0;
|
|
176
|
-
this.log('changePerPage', perPage);
|
|
177
|
-
this.calculatePages();
|
|
178
|
-
this.filterParamsChanged.emit({
|
|
179
|
-
page: 0,
|
|
180
|
-
sort: this.sort,
|
|
181
|
-
order: this.sortOrder,
|
|
182
|
-
perPage: perPage,
|
|
183
|
-
searchString: this.search,
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
log(value, ...rest) {
|
|
187
|
-
if (this.enableLog() || localStorage.getItem('loggerEnable')) {
|
|
188
|
-
console.log(`AS Dynamic Table -> ${value}`, ...rest);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
emitRow(row) {
|
|
192
|
-
this.log('edit row', row);
|
|
193
|
-
this.editRow.emit(row);
|
|
194
|
-
}
|
|
195
|
-
headerAction(actionName) {
|
|
196
|
-
this.log('Header action', actionName);
|
|
197
|
-
this.headerActionClicked.emit(actionName);
|
|
198
|
-
}
|
|
199
|
-
rowAction(action, value) {
|
|
200
|
-
this.log('Row action', action, value);
|
|
201
|
-
this.rowActionClicked.emit({ action, value });
|
|
202
|
-
}
|
|
203
|
-
pageChange(page) {
|
|
204
|
-
const emitValue = {
|
|
205
|
-
page,
|
|
206
|
-
sort: this.sort,
|
|
207
|
-
order: this.sortOrder,
|
|
208
|
-
perPage: this.perPage(),
|
|
209
|
-
searchString: this.search,
|
|
210
|
-
};
|
|
211
|
-
this.log('Page change, filter values: ', emitValue);
|
|
212
|
-
this.filterParamsChanged.emit(emitValue);
|
|
213
|
-
}
|
|
214
|
-
modalClose() {
|
|
215
|
-
const hiddenKeys = this.tableHead().filter(t => t.hidden).map(t => t.key);
|
|
216
|
-
this.log('Modal closed, saved keys', hiddenKeys);
|
|
217
|
-
this.tableHeadChanged.emit(hiddenKeys);
|
|
218
|
-
this.bsModalRef.hide();
|
|
219
|
-
}
|
|
220
|
-
//
|
|
221
|
-
resetValues() {
|
|
222
|
-
this.tableHeadChanged.emit(null);
|
|
223
|
-
this.bsModalRef.hide();
|
|
224
|
-
}
|
|
225
|
-
//
|
|
226
|
-
calculatePages() {
|
|
227
|
-
this.totalPages = Math.ceil(this.totalItems() / this.perPage());
|
|
228
|
-
this.log('total items/pages', this.totalItems(), this.totalPages);
|
|
229
|
-
}
|
|
230
|
-
onRowClick(row) {
|
|
231
|
-
console.log('onRowClick', row);
|
|
232
|
-
let find = this.tableHead().find(k => k.key === 'email');
|
|
233
|
-
if (find) {
|
|
234
|
-
find.rowClassRules = [{ rule: '=', value: row['email'], class: 'bg-warning' }];
|
|
235
|
-
}
|
|
236
|
-
console.log(this.tableHead());
|
|
237
|
-
this.rowClassRules();
|
|
238
|
-
}
|
|
239
|
-
trackByHeadChange(index, item) {
|
|
240
|
-
const rulesSignature = item.rowClassRules?.map(r => `${r.rule}${r.value}${r.class}`).join('|') || '';
|
|
241
|
-
return `${item.key}-${rulesSignature}`;
|
|
242
|
-
}
|
|
243
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AsLibGenericTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
244
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.1", type: AsLibGenericTableComponent, isStandalone: true, selector: "as-lib-generic-table", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, hovered: { classPropertyName: "hovered", publicName: "hovered", isSignal: true, isRequired: false, transformFunction: null }, enableSearch: { classPropertyName: "enableSearch", publicName: "enableSearch", isSignal: true, isRequired: false, transformFunction: null }, rowCounter: { classPropertyName: "rowCounter", publicName: "rowCounter", isSignal: true, isRequired: false, transformFunction: null }, enableLog: { classPropertyName: "enableLog", publicName: "enableLog", isSignal: true, isRequired: false, transformFunction: null }, perPage: { classPropertyName: "perPage", publicName: "perPage", isSignal: true, isRequired: false, transformFunction: null }, tableHead: { classPropertyName: "tableHead", publicName: "tableHead", isSignal: true, isRequired: false, transformFunction: null }, tableData: { classPropertyName: "tableData", publicName: "tableData", isSignal: true, isRequired: false, transformFunction: null }, tableHeadStorage: { classPropertyName: "tableHeadStorage", publicName: "tableHeadStorage", isSignal: true, isRequired: false, transformFunction: null }, perPageValues: { classPropertyName: "perPageValues", publicName: "perPageValues", isSignal: true, isRequired: false, transformFunction: null }, headerActions: { classPropertyName: "headerActions", publicName: "headerActions", isSignal: true, isRequired: false, transformFunction: null }, rowActions: { classPropertyName: "rowActions", publicName: "rowActions", isSignal: true, isRequired: false, transformFunction: null }, tableStyle: { classPropertyName: "tableStyle", publicName: "tableStyle", isSignal: true, isRequired: false, transformFunction: null }, headStyle: { classPropertyName: "headStyle", publicName: "headStyle", isSignal: true, isRequired: false, transformFunction: null }, paginationAlignment: { classPropertyName: "paginationAlignment", publicName: "paginationAlignment", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: false, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterParamsChanged: "filterParamsChanged", editRow: "editRow", sliderClicked: "sliderClicked", headerActionClicked: "headerActionClicked", rowActionClicked: "rowActionClicked", tableHeadChanged: "tableHeadChanged" }, providers: [BsModalService], ngImport: i0, template: "<p *ngIf=\"loading()\">\n\t<img\n\t\t*ngIf=\"loading()\"\n\t\tclass=\"pl-3\"\n\t\tsrc=\"data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==\"\n\t/>\n</p>\n<div\n\t[ngClass]=\"{\n\t\tloading: loading()\n\t}\"\n\tclass=\"dynamic-table\"\n>\n\t<div class=\"row mb-3 mx-0\">\n\t\t<div class=\"col-md-7 d-flex d-sm-flex d-md-block justify-content-center mb-2\">\n\t\t\t<div *ngIf=\"perPageValues() && perPageValues().length\" class=\"d-block d-md-inline-flex me-0 me-md-3\">\n\t\t\t\t<div class=\"table-length\">\n\t\t\t\t\t<label\n\t\t\t\t\t\t>Show\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\t(change)=\"changePerPage($event)\"\n\t\t\t\t\t\t\taria-controls=\"data-table-combine\"\n\t\t\t\t\t\t\tclass=\"form-select form-select-sm\"\n\t\t\t\t\t\t\tname=\"data-table-combine_length\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<option *ngFor=\"let perp of perPageValues()\" [selected]=\"perPage() === perp\" value=\"{{ perp }}\">{{ perp }}</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\tentries</label\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"headerActions() && headerActions().length\" class=\"d-block d-inline-flex\">\n\t\t\t\t<div class=\"dt-buttons btn-group flex-wrap\">\n\t\t\t\t\t<ng-container *ngFor=\"let action of headerActions()\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t(click)=\"headerAction(action.actionName)\"\n\t\t\t\t\t\t\t[ngClass]=\"{ 'btn-secondary': !action.btnColor }\"\n\t\t\t\t\t\t\tclass=\"btn buttons-copy buttons-html5 btn-sm {{ action.actionName }} {{ action.btnColor }}\"\n\t\t\t\t\t\t\tid=\"header-action-{{ action.actionName }}\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span><i *ngIf=\"action.faIcon\" class=\"fa {{ action.faIcon }}\"></i> {{ action.label }}</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"enableSearch()\" class=\"col-md-5 d-flex d-xl-block justify-content-center\">\n\t\t\t<div class=\"table-search\">\n\t\t\t\t<label\n\t\t\t\t\t>Search:\n\t\t\t\t\t<input\n\t\t\t\t\t\t(ngModelChange)=\"this.searchUpdate.next($event)\"\n\t\t\t\t\t\t[(ngModel)]=\"search\"\n\t\t\t\t\t\taria-controls=\"data-table-combine\"\n\t\t\t\t\t\tclass=\"form-control form-control-sm\"\n\t\t\t\t\t\tid=\"table-search\"\n\t\t\t\t\t\tplaceholder=\"\"\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t/></label>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"table-responsive\">\n\t\t<table\n\t\t\t[ngClass]=\"{\n\t\t\t\t'table-striped': striped(),\n\t\t\t\t'table-bordered': bordered(),\n\t\t\t\t'table-hover': hovered()\n\t\t\t}\"\n\t\t\tclass=\"table table-fixed align-middle {{ tableStyle() }}\"\n\t\t>\n\t\t\t<thead [class]=\"headStyle()\">\n\t\t\t\t<tr>\n\t\t\t\t\t<th *ngIf=\"rowCounter()\" class=\"text-end small-column\"> Nr.</th>\n\t\t\t\t\t<ng-container *ngFor=\"let head of tableHead(); trackBy:trackByHeadChange\">\n\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t(click)=\"!head.notSortable && tableSort(head.key)\"\n\t\t\t\t\t\t\t*ngIf=\"!head.hidden\"\n\t\t\t\t\t\t\t[ngClass]=\"head.sort\"\n\t\t\t\t\t\t\tclass=\"header {{ head.notSortable ? '' : 'sortable' }} {{ head.cellAlign }}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<span [translate]=\"head.key.toUpperCase()\">{{ head.label || head.key }}</span>\n\t\t\t\t\t\t\t\t<span class=\"fa\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<th *ngIf=\"tableHeadStorage() || (rowActions() && rowActions().length)\" class=\"header small-column text-center p-0\" data-width=\"50\">\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t(click)=\"openTableLayoutModal(tableHeadModal)\"\n\t\t\t\t\t\t\t*ngIf=\"tableHeadStorage()\"\n\t\t\t\t\t\t\taria-controls=\"basic-link-dropdown\"\n\t\t\t\t\t\t\tclass=\"menu-button toggle-white big-toggle dropdown-menu-link\"\n\t\t\t\t\t\t></a>\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<tr *ngFor=\"let row of tableData(); let i = index;\" class=\"{{ row['rowClass'] || '' }}\" (click)=\"onRowClick(row)\">\n\t\t\t\t\t<th *ngIf=\"rowCounter()\" class=\"text-end\"> {{ i + counter }}.</th>\n\t\t\t\t\t<ng-container *ngFor=\"let head of tableHead()\">\n\t\t\t\t\t\t<td *ngIf=\"!head.hidden\" class=\"header text-nowrap {{ head.cellAlign }}\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'select'\">\n\t\t\t\t\t\t\t\t<input class=\"select\" type=\"checkbox\" />\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!head.type\">\n\t\t\t\t\t\t\t\t{{ row[head.key] }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'badge'\">\n\t\t\t\t\t\t\t\t<span class=\"badge {{ row[head.key + 'Badge'] }}\">{{ row[head.key] }}</span>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'date'\">\n\t\t\t\t\t\t\t\t{{ row[head.key] | date: \"dd.MM.yyyy HH:mm:ss\" }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'slider'\">\n\t\t\t\t\t\t\t\t<div class=\"form-check form-switch\">\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t(change)=\"sliderClicked.emit(row)\"\n\t\t\t\t\t\t\t\t\t\t[checked]=\"row[head.key]\"\n\t\t\t\t\t\t\t\t\t\tclass=\"switched\"\n\t\t\t\t\t\t\t\t\t\tid=\"check-{{ row['id'] }}\"\n\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\tvalue=\"true\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<label for=\"check-{{ row['id'] }}\"></label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'input'\">\n\t\t\t\t\t\t\t\t<input [value]=\"row[head.key]\" type=\"text\" />\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<td *ngIf=\"tableHeadStorage() || (rowActions() && rowActions().length)\" class=\"small-column\">\n\t\t\t\t\t\t<div class=\"menu text-end\">\n\t\t\t\t\t\t\t<ng-container *ngFor=\"let action of rowActions()\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t(click)=\"rowAction(action.actionName, row)\"\n\t\t\t\t\t\t\t\t\t[ngClass]=\"{ 'btn-secondary': !action.btnColor }\"\n\t\t\t\t\t\t\t\t\tclass=\"btn buttons-copy buttons-html5 btn-sm ms-2 {{ action.actionName }} {{ action.btnColor }}\"\n\t\t\t\t\t\t\t\t\ttooltip=\"{{ action.label }}\"\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span><i *ngIf=\"action.faIcon\" class=\"fa {{ action.faIcon }}\"></i></span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t</table>\n\t\t<as-lib-pagination\n\t\t\t(pageChange)=\"pageChange($event)\"\n\t\t\t*ngIf=\"totalPages > 1\"\n\t\t\t[align]=\"paginationAlignment()\"\n\t\t\t[enableLog]=\"enableLog()\"\n\t\t\t[first]=\"page() === 0\"\n\t\t\t[last]=\"page() === totalPages - 1\"\n\t\t\t[page]=\"page()\"\n\t\t\t[totalPages]=\"totalPages\"\n\t\t></as-lib-pagination>\n\t</div>\n\t<ng-template #tableHeadModal>\n\t\t<div class=\"modal-header\">\n\t\t\t<h4 class=\"modal-title pull-left\">Edit table header</h4>\n\t\t\t<button (click)=\"modalClose()\" aria-label=\"Close\" class=\"btn-close close pull-right\" type=\"button\">\n\t\t\t\t<span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"modal-body\">\n\t\t\t<ng-container *ngFor=\"let td of tableHead(); trackBy:trackByHeadChange\">\n\t\t\t\t<div class=\"form-check form-switch\">\n\t\t\t\t\t<input\n\t\t\t\t\t\t(change)=\"handleTHchange(td.key)\"\n\t\t\t\t\t\t[checked]=\"!td.hidden\"\n\t\t\t\t\t\t[disabled]=\"td.mandatory\"\n\t\t\t\t\t\t[readOnly]=\"td.mandatory\"\n\t\t\t\t\t\tclass=\"form-check-input\"\n\t\t\t\t\t\tid=\"{{ td.key }}\"\n\t\t\t\t\t\trole=\"switch\"\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tvalue=\"true\"\n\t\t\t\t\t/>\n\t\t\t\t\t<label class=\"form-check-label\" for=\"{{ td.key }}\">{{ td.label }} {{ td.mandatory ? \"*\" : \"\" }}</label>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<small class=\"small text-muted pt-2\">* Mandatory field for the view</small>\n\t\t</div>\n\t\t<div class=\"modal-footer\">\n\t\t\t<button (click)=\"resetValues()\" class=\"btn btn-outline-secondary me-auto\" type=\"button\">Reset</button>\n\t\t\t<button (click)=\"modalClose()\" class=\"btn btn-primary\" translate=\"CLOSE\" type=\"button\">Close</button>\n\t\t</div>\n\t</ng-template>\n</div>\n", styles: [".dropdown-holder{min-height:20px}.dynamic-table,.dynamic-table button,span.badge{font-size:12px;font-weight:400}.table-length label{display:inline-block;white-space:nowrap}.table-length select{display:inline-block;width:auto}.table-search{text-align:right}.table-search label{display:inline-block;white-space:nowrap}.table-search input{display:inline-block;width:auto}th.sortable div{display:flex;align-items:center;cursor:pointer}th.sortable div span:not(.fa){flex:1}th.sortable div span.fa{display:block}th.sortable div span.fa:after{content:\"\\f0dc\";opacity:.25}th.sortable.headerSortDown span.fa.fa:after{color:#348fe2;content:\"\\f0dd\";opacity:1}th.sortable.headerSortUp span.fa.fa:after{color:#348fe2;content:\"\\f0de\";opacity:1}.menu-button{border-radius:50%;width:24px;height:24px;display:inline-block;position:relative}.menu-button:after{content:\"\";background-image:radial-gradient(circle,black 2px,transparent 2px);background-size:100% 33.33%;width:18px;height:18px;display:block;top:3px;left:3px;position:absolute}.menu-button:hover{background:#4e4e4e26}.menu-button.menu-horizontal:after{background-size:33.33% 100%}.small-column{white-space:nowrap;width:1%}.loading{opacity:.3}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TooltipDirective, selector: "[tooltip]", inputs: ["tooltip"] }, { kind: "component", type: AsLibPaginationComponent, selector: "as-lib-pagination", inputs: ["first", "last", "align", "enableLog", "totalPages", "page"], outputs: ["pageChange"] }] });
|
|
245
|
-
}
|
|
246
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AsLibGenericTableComponent, decorators: [{
|
|
247
|
-
type: Component,
|
|
248
|
-
args: [{ selector: 'as-lib-generic-table', imports: [
|
|
249
|
-
CommonModule,
|
|
250
|
-
FormsModule,
|
|
251
|
-
TooltipDirective,
|
|
252
|
-
AsLibPaginationComponent
|
|
253
|
-
], providers: [BsModalService], standalone: true, template: "<p *ngIf=\"loading()\">\n\t<img\n\t\t*ngIf=\"loading()\"\n\t\tclass=\"pl-3\"\n\t\tsrc=\"data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==\"\n\t/>\n</p>\n<div\n\t[ngClass]=\"{\n\t\tloading: loading()\n\t}\"\n\tclass=\"dynamic-table\"\n>\n\t<div class=\"row mb-3 mx-0\">\n\t\t<div class=\"col-md-7 d-flex d-sm-flex d-md-block justify-content-center mb-2\">\n\t\t\t<div *ngIf=\"perPageValues() && perPageValues().length\" class=\"d-block d-md-inline-flex me-0 me-md-3\">\n\t\t\t\t<div class=\"table-length\">\n\t\t\t\t\t<label\n\t\t\t\t\t\t>Show\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\t(change)=\"changePerPage($event)\"\n\t\t\t\t\t\t\taria-controls=\"data-table-combine\"\n\t\t\t\t\t\t\tclass=\"form-select form-select-sm\"\n\t\t\t\t\t\t\tname=\"data-table-combine_length\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<option *ngFor=\"let perp of perPageValues()\" [selected]=\"perPage() === perp\" value=\"{{ perp }}\">{{ perp }}</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\tentries</label\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"headerActions() && headerActions().length\" class=\"d-block d-inline-flex\">\n\t\t\t\t<div class=\"dt-buttons btn-group flex-wrap\">\n\t\t\t\t\t<ng-container *ngFor=\"let action of headerActions()\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t(click)=\"headerAction(action.actionName)\"\n\t\t\t\t\t\t\t[ngClass]=\"{ 'btn-secondary': !action.btnColor }\"\n\t\t\t\t\t\t\tclass=\"btn buttons-copy buttons-html5 btn-sm {{ action.actionName }} {{ action.btnColor }}\"\n\t\t\t\t\t\t\tid=\"header-action-{{ action.actionName }}\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span><i *ngIf=\"action.faIcon\" class=\"fa {{ action.faIcon }}\"></i> {{ action.label }}</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"enableSearch()\" class=\"col-md-5 d-flex d-xl-block justify-content-center\">\n\t\t\t<div class=\"table-search\">\n\t\t\t\t<label\n\t\t\t\t\t>Search:\n\t\t\t\t\t<input\n\t\t\t\t\t\t(ngModelChange)=\"this.searchUpdate.next($event)\"\n\t\t\t\t\t\t[(ngModel)]=\"search\"\n\t\t\t\t\t\taria-controls=\"data-table-combine\"\n\t\t\t\t\t\tclass=\"form-control form-control-sm\"\n\t\t\t\t\t\tid=\"table-search\"\n\t\t\t\t\t\tplaceholder=\"\"\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t/></label>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"table-responsive\">\n\t\t<table\n\t\t\t[ngClass]=\"{\n\t\t\t\t'table-striped': striped(),\n\t\t\t\t'table-bordered': bordered(),\n\t\t\t\t'table-hover': hovered()\n\t\t\t}\"\n\t\t\tclass=\"table table-fixed align-middle {{ tableStyle() }}\"\n\t\t>\n\t\t\t<thead [class]=\"headStyle()\">\n\t\t\t\t<tr>\n\t\t\t\t\t<th *ngIf=\"rowCounter()\" class=\"text-end small-column\"> Nr.</th>\n\t\t\t\t\t<ng-container *ngFor=\"let head of tableHead(); trackBy:trackByHeadChange\">\n\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t(click)=\"!head.notSortable && tableSort(head.key)\"\n\t\t\t\t\t\t\t*ngIf=\"!head.hidden\"\n\t\t\t\t\t\t\t[ngClass]=\"head.sort\"\n\t\t\t\t\t\t\tclass=\"header {{ head.notSortable ? '' : 'sortable' }} {{ head.cellAlign }}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<span [translate]=\"head.key.toUpperCase()\">{{ head.label || head.key }}</span>\n\t\t\t\t\t\t\t\t<span class=\"fa\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<th *ngIf=\"tableHeadStorage() || (rowActions() && rowActions().length)\" class=\"header small-column text-center p-0\" data-width=\"50\">\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t(click)=\"openTableLayoutModal(tableHeadModal)\"\n\t\t\t\t\t\t\t*ngIf=\"tableHeadStorage()\"\n\t\t\t\t\t\t\taria-controls=\"basic-link-dropdown\"\n\t\t\t\t\t\t\tclass=\"menu-button toggle-white big-toggle dropdown-menu-link\"\n\t\t\t\t\t\t></a>\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<tr *ngFor=\"let row of tableData(); let i = index;\" class=\"{{ row['rowClass'] || '' }}\" (click)=\"onRowClick(row)\">\n\t\t\t\t\t<th *ngIf=\"rowCounter()\" class=\"text-end\"> {{ i + counter }}.</th>\n\t\t\t\t\t<ng-container *ngFor=\"let head of tableHead()\">\n\t\t\t\t\t\t<td *ngIf=\"!head.hidden\" class=\"header text-nowrap {{ head.cellAlign }}\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'select'\">\n\t\t\t\t\t\t\t\t<input class=\"select\" type=\"checkbox\" />\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!head.type\">\n\t\t\t\t\t\t\t\t{{ row[head.key] }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'badge'\">\n\t\t\t\t\t\t\t\t<span class=\"badge {{ row[head.key + 'Badge'] }}\">{{ row[head.key] }}</span>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'date'\">\n\t\t\t\t\t\t\t\t{{ row[head.key] | date: \"dd.MM.yyyy HH:mm:ss\" }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'slider'\">\n\t\t\t\t\t\t\t\t<div class=\"form-check form-switch\">\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t(change)=\"sliderClicked.emit(row)\"\n\t\t\t\t\t\t\t\t\t\t[checked]=\"row[head.key]\"\n\t\t\t\t\t\t\t\t\t\tclass=\"switched\"\n\t\t\t\t\t\t\t\t\t\tid=\"check-{{ row['id'] }}\"\n\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\tvalue=\"true\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<label for=\"check-{{ row['id'] }}\"></label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"head.type === 'input'\">\n\t\t\t\t\t\t\t\t<input [value]=\"row[head.key]\" type=\"text\" />\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<td *ngIf=\"tableHeadStorage() || (rowActions() && rowActions().length)\" class=\"small-column\">\n\t\t\t\t\t\t<div class=\"menu text-end\">\n\t\t\t\t\t\t\t<ng-container *ngFor=\"let action of rowActions()\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t(click)=\"rowAction(action.actionName, row)\"\n\t\t\t\t\t\t\t\t\t[ngClass]=\"{ 'btn-secondary': !action.btnColor }\"\n\t\t\t\t\t\t\t\t\tclass=\"btn buttons-copy buttons-html5 btn-sm ms-2 {{ action.actionName }} {{ action.btnColor }}\"\n\t\t\t\t\t\t\t\t\ttooltip=\"{{ action.label }}\"\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span><i *ngIf=\"action.faIcon\" class=\"fa {{ action.faIcon }}\"></i></span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t</table>\n\t\t<as-lib-pagination\n\t\t\t(pageChange)=\"pageChange($event)\"\n\t\t\t*ngIf=\"totalPages > 1\"\n\t\t\t[align]=\"paginationAlignment()\"\n\t\t\t[enableLog]=\"enableLog()\"\n\t\t\t[first]=\"page() === 0\"\n\t\t\t[last]=\"page() === totalPages - 1\"\n\t\t\t[page]=\"page()\"\n\t\t\t[totalPages]=\"totalPages\"\n\t\t></as-lib-pagination>\n\t</div>\n\t<ng-template #tableHeadModal>\n\t\t<div class=\"modal-header\">\n\t\t\t<h4 class=\"modal-title pull-left\">Edit table header</h4>\n\t\t\t<button (click)=\"modalClose()\" aria-label=\"Close\" class=\"btn-close close pull-right\" type=\"button\">\n\t\t\t\t<span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"modal-body\">\n\t\t\t<ng-container *ngFor=\"let td of tableHead(); trackBy:trackByHeadChange\">\n\t\t\t\t<div class=\"form-check form-switch\">\n\t\t\t\t\t<input\n\t\t\t\t\t\t(change)=\"handleTHchange(td.key)\"\n\t\t\t\t\t\t[checked]=\"!td.hidden\"\n\t\t\t\t\t\t[disabled]=\"td.mandatory\"\n\t\t\t\t\t\t[readOnly]=\"td.mandatory\"\n\t\t\t\t\t\tclass=\"form-check-input\"\n\t\t\t\t\t\tid=\"{{ td.key }}\"\n\t\t\t\t\t\trole=\"switch\"\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tvalue=\"true\"\n\t\t\t\t\t/>\n\t\t\t\t\t<label class=\"form-check-label\" for=\"{{ td.key }}\">{{ td.label }} {{ td.mandatory ? \"*\" : \"\" }}</label>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<small class=\"small text-muted pt-2\">* Mandatory field for the view</small>\n\t\t</div>\n\t\t<div class=\"modal-footer\">\n\t\t\t<button (click)=\"resetValues()\" class=\"btn btn-outline-secondary me-auto\" type=\"button\">Reset</button>\n\t\t\t<button (click)=\"modalClose()\" class=\"btn btn-primary\" translate=\"CLOSE\" type=\"button\">Close</button>\n\t\t</div>\n\t</ng-template>\n</div>\n", styles: [".dropdown-holder{min-height:20px}.dynamic-table,.dynamic-table button,span.badge{font-size:12px;font-weight:400}.table-length label{display:inline-block;white-space:nowrap}.table-length select{display:inline-block;width:auto}.table-search{text-align:right}.table-search label{display:inline-block;white-space:nowrap}.table-search input{display:inline-block;width:auto}th.sortable div{display:flex;align-items:center;cursor:pointer}th.sortable div span:not(.fa){flex:1}th.sortable div span.fa{display:block}th.sortable div span.fa:after{content:\"\\f0dc\";opacity:.25}th.sortable.headerSortDown span.fa.fa:after{color:#348fe2;content:\"\\f0dd\";opacity:1}th.sortable.headerSortUp span.fa.fa:after{color:#348fe2;content:\"\\f0de\";opacity:1}.menu-button{border-radius:50%;width:24px;height:24px;display:inline-block;position:relative}.menu-button:after{content:\"\";background-image:radial-gradient(circle,black 2px,transparent 2px);background-size:100% 33.33%;width:18px;height:18px;display:block;top:3px;left:3px;position:absolute}.menu-button:hover{background:#4e4e4e26}.menu-button.menu-horizontal:after{background-size:33.33% 100%}.small-column{white-space:nowrap;width:1%}.loading{opacity:.3}\n"] }]
|
|
254
|
-
}], ctorParameters: () => [] });
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXMtbGliLWdlbmVyaWMtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXMtbGliLWdlbmVyaWMtdGFibGUvc3JjL2xpYi9hcy1saWItZ2VuZXJpYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcy1saWItZ2VuZXJpYy10YWJsZS9zcmMvbGliL2FzLWxpYi1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBa0IsS0FBSyxFQUFVLE1BQU0sRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUVwSCxPQUFPLEVBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQWEsY0FBYyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQzs7OztBQWUzRSxNQUFNLE9BQU8sMEJBQTBCO0lBR3JDLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixVQUFVLEdBQUcsS0FBSyxDQUFD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QyxDQUFBO1FBQzlFLENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBYSxFQUFFLElBQWdCO1FBQy9DLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyRyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUN6QyxDQUFDO3VHQXhTVSwwQkFBMEI7MkZBQTFCLDBCQUEwQixzekZBTDFCLENBQUMsY0FBYyxDQUFDLDBCQ2pCN0IsZzNSQWtNQSx1dUNEdExJLFlBQVksZ1pBQ1osV0FBVyw0ekJBQ1gsZ0JBQWdCLDJFQUNoQix3QkFBd0I7OzJGQU9mLDBCQUEwQjtrQkFidEMsU0FBUzsrQkFDRSxzQkFBc0IsV0FDdkI7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsd0JBQXdCO3FCQUN6QixhQUNVLENBQUMsY0FBYyxDQUFDLGNBR2YsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBlZmZlY3QsIEluamVjdCwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgaW5wdXQsIE9uSW5pdCwgb3V0cHV0LCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lBY3Rpb25CdXR0b24sIElGaWx0ZXJQYXJhbXMsIElUYWJsZUhlYWR9IGZyb20gXCIuL2V4cG9ydHNcIjtcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgU3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7QnNNb2RhbFJlZiwgQnNNb2RhbFNlcnZpY2V9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL21vZGFsXCI7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge1Rvb2x0aXBEaXJlY3RpdmV9IGZyb20gXCIuL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHtBc0xpYlBhZ2luYXRpb25Db21wb25lbnR9IGZyb20gXCJAYWdlbnRzbWl0aC5iZ2QvYXMtbGliLXBhZ2luYXRpb25cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXMtbGliLWdlbmVyaWMtdGFibGUnLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXG4gICAgQXNMaWJQYWdpbmF0aW9uQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW0JzTW9kYWxTZXJ2aWNlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2FzLWxpYi1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2FzLWxpYi1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5zY3NzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBBc0xpYkdlbmVyaWNUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cblxuICBsb2FkaW5nID0gaW5wdXQoZmFsc2UpO1xuICBzdHJpcGVkID0gaW5wdXQoZmFsc2UpO1xuICBib3JkZXJlZCA9IGlucHV0KGZhbHNlKTtcbiAgaG92ZXJlZCA9IGlucHV0KGZhbHNlKTtcbiAgZW5hYmxlU2VhcmNoID0gaW5wdXQodHJ1ZSk7XG4gIHJvd0NvdW50ZXIgPSBpbnB1dChmYWxzZSk7XG4gIGVuYWJsZUxvZyA9IGlucHV0KGZhbHNlKTtcbiAgcGVyUGFnZSA9IGlucHV0KDEwKTtcblxuICB0YWJsZUhlYWQgPSBpbnB1dDxJVGFibGVIZWFkW10+KFtdKTtcblxuICB0YWJsZURhdGEgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXT4oW10pO1xuXG4gIHRhYmxlSGVhZFN0b3JhZ2UgPSBpbnB1dDxzdHJpbmc+KCcnKTtcblxuICBwZXJQYWdlVmFsdWVzID0gaW5wdXQ8bnVtYmVyW10+KFsxMCwgMjAsIDUwLCAxMDBdKTtcblxuICBoZWFkZXJBY3Rpb25zID0gaW5wdXQ8SUFjdGlvbkJ1dHRvbltdPihbXSk7XG5cbiAgcm93QWN0aW9ucyA9IGlucHV0PElBY3Rpb25CdXR0b25bXT4oW10pO1xuXG4gIHRhYmxlU3R5bGUgPSBpbnB1dDwnJyB8ICd0YWJsZS1saWdodCcgfCAndGFibGUtZGFyayc+KCcnKTtcblxuICBoZWFkU3R5bGUgPSBpbnB1dDxcbiAgICB8ICd0YWJsZS1kZWZhdWx0J1xuICAgIHwgJ3RhYmxlLXByaW1hcnknXG4gICAgfCAndGFibGUtc2Vjb25kYXJ5J1xuICAgIHwgJ3RhYmxlLXN1Y2Nlc3MnXG4gICAgfCAndGFibGUtZGFuZ2VyJ1xuICAgIHwgJ3RhYmxlLXdhcm5pbmcnXG4gICAgfCAndGFibGUtaW5mbydcbiAgICB8ICd0YWJsZS1saWdodCdcbiAgICB8ICd0YWJsZS1kYXJrJz4oJ3RhYmxlLWRlZmF1bHQnKTtcbiAgcGFnaW5hdGlvbkFsaWdubWVudCA9IGlucHV0PCcnIHwgJ2p1c3RpZnktY29udGVudC1jZW50ZXInIHwgJ2p1c3RpZnktY29udGVudC1lbmQnPignanVzdGlmeS1jb250ZW50LWVuZCcpO1xuXG4gIHRvdGFsSXRlbXMgPSBpbnB1dCgwKTtcblxuICBwYWdlID0gaW5wdXQoMCk7XG5cbiAgZmlsdGVyUGFyYW1zQ2hhbmdlZCA9IG91dHB1dDxJRmlsdGVyUGFyYW1zPigpO1xuXG4gIGVkaXRSb3cgPSBvdXRwdXQ8UmVjb3JkPHN0cmluZywgbmV2ZXI+PigpO1xuXG4gIHNsaWRlckNsaWNrZWQgPSBvdXRwdXQ8UmVjb3JkPHN0cmluZywgbmV2ZXI+PigpO1xuXG4gIGhlYWRlckFjdGlvbkNsaWNrZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gIHJvd0FjdGlvbkNsaWNrZWQgPSBvdXRwdXQ8eyBhY3Rpb246IHN0cmluZzsgdmFsdWU6IGFueSB9PigpO1xuXG4gIHRhYmxlSGVhZENoYW5nZWQgPSBvdXRwdXQ8c3RyaW5nW10gfCBudWxsPigpO1xuXG5cbiAgYnNNb2RhbFJlZiE6IEJzTW9kYWxSZWY7XG4gIHNlYXJjaFVwZGF0ZTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3QoKTtcbiAgc2VhcmNoID0gJyc7XG4gIHRvdGFsUGFnZXMgPSAwO1xuICBjb3VudGVyID0gMDtcbiAgcHJpdmF0ZSBzb3J0ITogc3RyaW5nO1xuICBwcml2YXRlIHNvcnRPcmRlcjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJztcblxuICAvL3ByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZTsvLyA9IEluamVjdChCc01vZGFsU2VydmljZSlcbiAgcHJpdmF0ZSBtb2RhbFNlcnZpY2UgPSBpbmplY3QoQnNNb2RhbFNlcnZpY2UpO1xuXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGBUaGUgY291bnQgaXM6YCwgdGhpcy50b3RhbEl0ZW1zKCksIHRoaXMucGFnZSgpKTtcbiAgICAgIHRoaXMuY291bnRlciA9IHRoaXMucGFnZSgpICogdGhpcy5wZXJQYWdlKCkgKyAxXG4gICAgICB0aGlzLmNhbGN1bGF0ZVBhZ2VzKCk7XG4gICAgICB0aGlzLmJhZGdlQ2xhc3NSdWxlcygpO1xuICAgICAgdGhpcy5yb3dDbGFzc1J1bGVzKCk7XG4gICAgfSk7XG5cblxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGFibGVIZWFkU3RvcmFnZSgpKSB7XG4gICAgICBjb25zdCBzdG9yYWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy50YWJsZUhlYWRTdG9yYWdlKCkpO1xuICAgICAgaWYgKHN0b3JhZ2UpIHtcbiAgICAgICAgY29uc3QgaGlkZGVuOiBzdHJpbmdbXSA9IChKU09OLnBhcnNlKHN0b3JhZ2UpIGFzIHN0cmluZ1tdKSB8fCBbXTtcbiAgICAgICAgdGhpcy50YWJsZUhlYWQoKS5mb3JFYWNoKHQgPT4gKHQuaGlkZGVuID0gaGlkZGVuLmluY2x1ZGVzKHQua2V5KSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy50YWJsZUhlYWRTdG9yYWdlKCksIEpTT04uc3RyaW5naWZ5KHRoaXMudGFibGVIZWFkKCkuZmlsdGVyKHQgPT4gdC5oaWRkZW4pLm1hcCh0ID0+IHQua2V5KSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc29ydCA9IHRoaXMudGFibGVIZWFkKClbMF0ua2V5O1xuICAgIHRoaXMubG9nKCd0b3RhbFBhZ2VzJywgdGhpcy50b3RhbFBhZ2VzKTtcbiAgICB0aGlzLmxvZygnVGFibGUgaGVhZCcsIHRoaXMudGFibGVIZWFkKCkpO1xuICAgIHRoaXMubG9nKCdUYWJsZSBkYXRhJywgdGhpcy50YWJsZURhdGEoKSk7XG4gICAgdGhpcy5sb2coJ1JvdyBhY3Rpb25zJywgdGhpcy5yb3dBY3Rpb25zKCkpO1xuICAgIC8vIHRoaXMubG9nKCdyb3dzJywgcm93cyk7XG4gICAgdGhpcy5zZWFyY2hVcGRhdGUucGlwZShkZWJvdW5jZVRpbWUoNTAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgdGhpcy5sb2coJ3NlYXJjaCcsIHRoaXMuc2VhcmNoKTtcbiAgICAgIGNvbnN0IGVtaXRWYWx1ZTogSUZpbHRlclBhcmFtcyA9IHtcbiAgICAgICAgcGFnZTogMCxcbiAgICAgICAgc29ydDogdGhpcy5zb3J0LFxuICAgICAgICBvcmRlcjogdGhpcy5zb3J0T3JkZXIsXG4gICAgICAgIHBlclBhZ2U6IHRoaXMucGVyUGFnZSgpLFxuICAgICAgICBzZWFyY2hTdHJpbmc6IHRoaXMuc2VhcmNoLFxuICAgICAgfTtcbiAgICAgIHRoaXMubG9nKCdTZWFyY2ggdmFsdWUgY2hhbmdlLCBzb3J0IHZhbHVlczogJywgZW1pdFZhbHVlKTtcbiAgICAgIHRoaXMuZmlsdGVyUGFyYW1zQ2hhbmdlZC5lbWl0KGVtaXRWYWx1ZSk7XG4gICAgfSk7XG5cbiAgICBpZiAoIXRoaXMucGVyUGFnZVZhbHVlcygpLmluY2x1ZGVzKHRoaXMucGVyUGFnZSgpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQZXIgcGFnZSB2YWx1ZSBpbnZhbGlkJyk7XG4gICAgfVxuICAgIHRoaXMubG9nKCdMb2FkaW5nJywgdGhpcy5sb2FkaW5nKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBiYWRnZUNsYXNzUnVsZXMoKSB7XG4gICAgdGhpcy5hcHBseVJ1bGVzKFxuICAgICAgJ2JhZGdlQ2xhc3NSdWxlcycsXG4gICAgICAoa2V5KSA9PiBgJHtrZXl9QmFkZ2VgXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcm93Q2xhc3NSdWxlcygpIHtcbiAgICB0aGlzLmFwcGx5UnVsZXMoXG4gICAgICAncm93Q2xhc3NSdWxlcycsXG4gICAgICAoKSA9PiAncm93Q2xhc3MnXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlSdWxlcyhcbiAgICBydWxlS2V5OiAnYmFkZ2VDbGFzc1J1bGVzJyB8ICdyb3dDbGFzc1J1bGVzJyxcbiAgICB0YXJnZXRLZXlGbjogKGtleTogc3RyaW5nKSA9PiBzdHJpbmdcbiAgKSB7XG4gICAgY29uc3QgdGFibGVEYXRhID0gdGhpcy50YWJsZURhdGEoKTtcblxuICAgIHRoaXMudGFibGVIZWFkKCkuZm9yRWFjaChoZWFkID0+IHtcbiAgICAgIGNvbnN0IHJ1bGVzID0gaGVhZFtydWxlS2V5XSB8fCBbXTtcbiAgICAgIHJ1bGVzLmZvckVhY2gocnVsZSA9PiB7XG4gICAgICAgIGNvbnN0IHtrZXl9ID0gaGVhZDtcbiAgICAgICAgY29uc3Qge3J1bGU6IGNvbmRpdGlvbiwgdmFsdWUsIGNsYXNzOiBjbH0gPSBydWxlO1xuXG4gICAgICAgIHRhYmxlRGF0YS5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuc2hvdWxkQXBwbHlSdWxlKHJvd1trZXldLCBjb25kaXRpb24sIHZhbHVlKSkge1xuICAgICAgICAgICAgcm93W3RhcmdldEtleUZuKGtleSldID0gY2wgYXMgbmV2ZXI7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cblxuICBwcml2YXRlIHNob3VsZEFwcGx5UnVsZShjZWxsVmFsdWU6IGFueSwgY29uZGl0aW9uOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuICAgICAgY2FzZSAnPSc6XG4gICAgICAgIHJldHVybiBjZWxsVmFsdWUgPT09IHZhbHVlO1xuICAgICAgY2FzZSAnPD4nOlxuICAgICAgICByZXR1cm4gY2VsbFZhbHVlICE9PSB2YWx1ZTtcbiAgICAgIGNhc2UgJz4nOlxuICAgICAgICByZXR1cm4gY2VsbFZhbHVlID4gdmFsdWU7XG4gICAgICBjYXNlICc8JzpcbiAgICAgICAgcmV0dXJuIGNlbGxWYWx1ZSA8IHZhbHVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qIGVzbGludC1kaXNhYmxlICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4gIG9wZW5UYWJsZUxheW91dE1vZGFsKHRhYmxlSGVhZE1vZGFsOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5sb2coJ09wZW4gbGF5b3V0Jyk7XG4gICAgdGhpcy5ic01vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyh0YWJsZUhlYWRNb2RhbCwge1xuICAgICAgYW5pbWF0ZWQ6IHRydWUsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAgY2xhc3M6ICdjb25maXJtLW1vZGFsIG1vZGFsLXNtJyxcbiAgICAgIGluaXRpYWxTdGF0ZToge30sXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVUSGNoYW5nZShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubG9nKCdjaGFuZ2UgdHJpZ2dlcmVkJywga2V5KTtcbiAgICB0aGlzLnRhYmxlSGVhZCgpLmZvckVhY2godCA9PiB7XG4gICAgICBpZiAodC5rZXkgPT09IGtleSkge1xuICAgICAgICB0LmhpZGRlbiA9ICF0LmhpZGRlbjtcbiAgICAgICAgdGhpcy50YWJsZUhlYWRTdG9yYWdlICYmXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMudGFibGVIZWFkU3RvcmFnZSgpLCBKU09OLnN0cmluZ2lmeSh0aGlzLnRhYmxlSGVhZCgpLmZpbHRlcih0ID0+IHQuaGlkZGVuKS5tYXAodCA9PiB0LmtleSkpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHRhYmxlU29ydChrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubG9nKCd0YWJsZSBzb3J0IGtleScsIGtleSk7XG4gICAgdGhpcy5zb3J0ID0ga2V5O1xuICAgIHRoaXMudGFibGVIZWFkKCkuZm9yRWFjaChoID0+IHtcbiAgICAgIGlmIChoLmtleSA9PT0ga2V5KSB7XG4gICAgICAgIGlmIChoLnNvcnQgPT09ICdoZWFkZXJTb3J0RG93bicpIHtcbiAgICAgICAgICB0aGlzLnNvcnRPcmRlciA9ICdkZXNjJztcbiAgICAgICAgICBoLnNvcnQgPSAnaGVhZGVyU29ydFVwJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoLnNvcnQgPSAnaGVhZGVyU29ydERvd24nO1xuICAgICAgICAgIHRoaXMuc29ydE9yZGVyID0gJ2FzYyc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZW1pdFZhbHVlOiBJRmlsdGVyUGFyYW1zID0ge1xuICAgICAgICAgIHBhZ2U6IDAsXG4gICAgICAgICAgc29ydDogdGhpcy5zb3J0LFxuICAgICAgICAgIG9yZGVyOiB0aGlzLnNvcnRPcmRlcixcbiAgICAgICAgICBwZXJQYWdlOiB0aGlzLnBlclBhZ2UoKSxcbiAgICAgICAgICBzZWFyY2hTdHJpbmc6IHRoaXMuc2VhcmNoLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmxvZygnU29ydCBjaGFuZ2VkLCBmaWx0ZXIgdmFsdWVzOiAnLCBlbWl0VmFsdWUpO1xuICAgICAgICB0aGlzLmZpbHRlclBhcmFtc0NoYW5nZWQuZW1pdChlbWl0VmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaC5zb3J0ID0gJyc7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjaGFuZ2VQZXJQYWdlKCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBwZXJQYWdlID0gcGFyc2VJbnQoKCRldmVudC50YXJnZXQgYXMgSFRNTFNlbGVjdEVsZW1lbnQpLnZhbHVlLCAxMCkgfHwgMjU7XG4gICAgLy90aGlzLnBlclBhZ2UgPSBwZXJQYWdlO1xuICAgIC8vIHRoaXMucGFnZSA9IDA7XG4gICAgdGhpcy5sb2coJ2NoYW5nZVBlclBhZ2UnLCBwZXJQYWdlKTtcbiAgICB0aGlzLmNhbGN1bGF0ZVBhZ2VzKCk7XG4gICAgdGhpcy5maWx0ZXJQYXJhbXNDaGFuZ2VkLmVtaXQoe1xuICAgICAgcGFnZTogMCxcbiAgICAgIHNvcnQ6IHRoaXMuc29ydCxcbiAgICAgIG9yZGVyOiB0aGlzLnNvcnRPcmRlcixcbiAgICAgIHBlclBhZ2U6IHBlclBhZ2UsXG4gICAgICBzZWFyY2hTdHJpbmc6IHRoaXMuc2VhcmNoLFxuICAgIH0pO1xuICB9XG5cbiAgbG9nKHZhbHVlOiBhbnksIC4uLnJlc3Q6IGFueVtdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZW5hYmxlTG9nKCkgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xvZ2dlckVuYWJsZScpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgQVMgRHluYW1pYyBUYWJsZSAtPiAke3ZhbHVlfWAsIC4uLnJlc3QpO1xuICAgIH1cbiAgfVxuXG4gIGVtaXRSb3cocm93OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4pIHtcbiAgICB0aGlzLmxvZygnZWRpdCByb3cnLCByb3cpO1xuICAgIHRoaXMuZWRpdFJvdy5lbWl0KHJvdyk7XG4gIH1cblxuICBoZWFkZXJBY3Rpb24oYWN0aW9uTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2coJ0hlYWRlciBhY3Rpb24nLCBhY3Rpb25OYW1lKTtcbiAgICB0aGlzLmhlYWRlckFjdGlvbkNsaWNrZWQuZW1pdChhY3Rpb25OYW1lKTtcbiAgfVxuXG4gIHJvd0FjdGlvbihhY3Rpb246IHN0cmluZywgdmFsdWU6IFJlY29yZDxzdHJpbmcsIG5ldmVyPikge1xuICAgIHRoaXMubG9nKCdSb3cgYWN0aW9uJywgYWN0aW9uLCB2YWx1ZSk7XG4gICAgdGhpcy5yb3dBY3Rpb25DbGlja2VkLmVtaXQoe2FjdGlvbiwgdmFsdWV9KTtcbiAgfVxuXG4gIHBhZ2VDaGFuZ2UocGFnZTogbnVtYmVyKSB7XG4gICAgY29uc3QgZW1pdFZhbHVlOiBJRmlsdGVyUGFyYW1zID0ge1xuICAgICAgcGFnZSxcbiAgICAgIHNvcnQ6IHRoaXMuc29ydCxcbiAgICAgIG9yZGVyOiB0aGlzLnNvcnRPcmRlcixcbiAgICAgIHBlclBhZ2U6IHRoaXMucGVyUGFnZSgpLFxuICAgICAgc2VhcmNoU3RyaW5nOiB0aGlzLnNlYXJjaCxcbiAgICB9O1xuICAgIHRoaXMubG9nKCdQYWdlIGNoYW5nZSwgZmlsdGVyIHZhbHVlczogJywgZW1pdFZhbHVlKTtcbiAgICB0aGlzLmZpbHRlclBhcmFtc0NoYW5nZWQuZW1pdChlbWl0VmFsdWUpO1xuICB9XG5cbiAgbW9kYWxDbG9zZSgpIHtcbiAgICBjb25zdCBoaWRkZW5LZXlzID0gdGhpcy50YWJsZUhlYWQoKS5maWx0ZXIodCA9PiB0LmhpZGRlbikubWFwKHQgPT4gdC5rZXkpO1xuICAgIHRoaXMubG9nKCdNb2RhbCBjbG9zZWQsIHNhdmVkIGtleXMnLCBoaWRkZW5LZXlzKTtcbiAgICB0aGlzLnRhYmxlSGVhZENoYW5nZWQuZW1pdChoaWRkZW5LZXlzKTtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgLy9cbiAgcmVzZXRWYWx1ZXMoKSB7XG4gICAgdGhpcy50YWJsZUhlYWRDaGFuZ2VkLmVtaXQobnVsbCk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIC8vXG4gIHByaXZhdGUgY2FsY3VsYXRlUGFnZXMoKSB7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRoaXMudG90YWxJdGVtcygpIC8gdGhpcy5wZXJQYWdlKCkpO1xuICAgIHRoaXMubG9nKCd0b3RhbCBpdGVtcy9wYWdlcycsIHRoaXMudG90YWxJdGVtcygpLCB0aGlzLnRvdGFsUGFnZXMpO1xuICB9XG5cblxuICBvblJvd0NsaWNrKHJvdzogUmVjb3JkPHN0cmluZywgbmV2ZXI+KSB7XG4gICAgY29uc29sZS5sb2coJ29uUm93Q2xpY2snLCByb3cpXG4gICAgbGV0IGZpbmQgPSB0aGlzLnRhYmxlSGVhZCgpLmZpbmQoayA9PiBrLmtleSA9PT0gJ2VtYWlsJyk7XG4gICAgaWYgKGZpbmQpIHtcbiAgICAgIGZpbmQucm93Q2xhc3NSdWxlcyA9IFt7cnVsZTogJz0nLCB2YWx1ZTogcm93WydlbWFpbCddLCBjbGFzczogJ2JnLXdhcm5pbmcnfV1cbiAgICB9XG4gICAgY29uc29sZS5sb2codGhpcy50YWJsZUhlYWQoKSk7XG4gICAgdGhpcy5yb3dDbGFzc1J1bGVzKCk7XG4gIH1cblxuICB0cmFja0J5SGVhZENoYW5nZShpbmRleDogbnVtYmVyLCBpdGVtOiBJVGFibGVIZWFkKTogc3RyaW5nIHtcbiAgICBjb25zdCBydWxlc1NpZ25hdHVyZSA9IGl0ZW0ucm93Q2xhc3NSdWxlcz8ubWFwKHIgPT4gYCR7ci5ydWxlfSR7ci52YWx1ZX0ke3IuY2xhc3N9YCkuam9pbignfCcpIHx8ICcnO1xuICAgIHJldHVybiBgJHtpdGVtLmtleX0tJHtydWxlc1NpZ25hdHVyZX1gO1xuICB9XG59XG4iLCI8cCAqbmdJZj1cImxvYWRpbmcoKVwiPlxuXHQ8aW1nXG5cdFx0Km5nSWY9XCJsb2FkaW5nKClcIlxuXHRcdGNsYXNzPVwicGwtM1wiXG5cdFx0c3JjPVwiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFQSUFBUC8vL3dBQUFNTEN3a0pDUWdBQUFHSmlZb0tDZ3BLU2tpSC9DMDVGVkZORFFWQkZNaTR3QXdFQUFBQWgvaHBEY21WaGRHVmtJSGRwZEdnZ1lXcGhlR3h2WVdRdWFXNW1id0FoK1FRSkNnQUFBQ3dBQUFBQUVBQVFBQUFETXdpNjNQNHd5a2xyRTJNSU9nZ1puQWRPbUdZSlJiRXh3cm9VbWNHMkxtREV3bkhRTFZzWU9kMm1CemtZREFkS2ErZElBQUFoK1FRSkNnQUFBQ3dBQUFBQUVBQVFBQUFETkFpNjNQNU9qQ0VnRzRRTXU3RG1pa1J4UWxGVVlERVpJR0JNUlZzYXFId2N0WFhmN1dFWUI0QWcxeGppaGtNWnNpVWtLaElBSWZrRUNRb0FBQUFzQUFBQUFCQUFFQUFBQXpZSXVqSWpLOHBCeUpETWxGWXZCb1ZqSEE3MEdVN3hTVUpobUt0d0hQQUt6TE85SE1hb0t3Slo3UmY4QVlQRER6S3BaQnFmdndRQUlma0VDUW9BQUFBc0FBQUFBQkFBRUFBQUF6TUl1bUlsSzhveWhwSHNuRlpmaFl1bUNZVWhEQVF4UklkaEhCR3FSb0t3MFI4RFlsSmQ4ejBmTURnc0dvL0lwSEk1VEFBQUlma0VDUW9BQUFBc0FBQUFBQkFBRUFBQUF6SUl1bkluSzByblpCVHdHUE5NZ1F3bWRzTmdYR0pVbElXRXVSNW9XVUlwejhwQUVBTWU2VHdmd3lZc0dvL0lwRktTQUFBaCtRUUpDZ0FBQUN3QUFBQUFFQUFRQUFBRE13aTZJTUtRT1JmamRPZTgycDR3R2NjYzRDRXVRcmFkeWxlc29qRU1CZ3NVYzJHN3NEWDNsUUdCTUxBSmlidWZiU2xLQUFBaCtRUUpDZ0FBQUN3QUFBQUFFQUFRQUFBRE1naTYzUDd3Q1JIWm5GVmRtZ0h1Mm5Gd2xXQ0kzV0djM1RTV2hVRkd4VEFVa0dDYnRnRU5CTUpBRUpzeGdNTFd6cEVBQUNINUJBa0tBQUFBTEFBQUFBQVFBQkFBQUFNeUNMcmMvakRLU2F0bFF0U2NLZGNlQ0FqRElJN0hjUTRFTVRDcHlyQ3VVQmpDWVJnSFZ0cWxBaUIxWWhpQ25sc1JrQUFBT3dBQUFBQUFBQUFBQUE9PVwiXG5cdC8+XG48L3A+XG48ZGl2XG5cdFtuZ0NsYXNzXT1cIntcblx0XHRsb2FkaW5nOiBsb2FkaW5nKClcblx0fVwiXG5cdGNsYXNzPVwiZHluYW1pYy10YWJsZVwiXG4+XG5cdDxkaXYgY2xhc3M9XCJyb3cgbWItMyBteC0wXCI+XG5cdFx0PGRpdiBjbGFzcz1cImNvbC1tZC03IGQtZmxleCBkLXNtLWZsZXggZC1tZC1ibG9jayBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG1iLTJcIj5cblx0XHRcdDxkaXYgKm5nSWY9XCJwZXJQYWdlVmFsdWVzKCkgJiYgcGVyUGFnZVZhbHVlcygpLmxlbmd0aFwiIGNsYXNzPVwiZC1ibG9jayBkLW1kLWlubGluZS1mbGV4IG1lLTAgbWUtbWQtM1wiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGFibGUtbGVuZ3RoXCI+XG5cdFx0XHRcdFx0PGxhYmVsXG5cdFx0XHRcdFx0XHQ+U2hvd1xuXHRcdFx0XHRcdFx0PHNlbGVjdFxuXHRcdFx0XHRcdFx0XHQoY2hhbmdlKT1cImNoYW5nZVBlclBhZ2UoJGV2ZW50KVwiXG5cdFx0XHRcdFx0XHRcdGFyaWEtY29udHJvbHM9XCJkYXRhLXRhYmxlLWNvbWJpbmVcIlxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcblx0XHRcdFx0XHRcdFx0bmFtZT1cImRhdGEtdGFibGUtY29tYmluZV9sZW5ndGhcIlxuXHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHQ8b3B0aW9uICpuZ0Zvcj1cImxldCBwZXJwIG9mIHBlclBhZ2VWYWx1ZXMoKVwiIFtzZWxlY3RlZF09XCJwZXJQYWdlKCkgPT09IHBlcnBcIiB2YWx1ZT1cInt7IHBlcnAgfX1cIj57eyBwZXJwIH19PC9vcHRpb24+XG5cdFx0XHRcdFx0XHQ8L3NlbGVjdD5cblx0XHRcdFx0XHRcdGVudHJpZXM8L2xhYmVsXG5cdFx0XHRcdFx0PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiAqbmdJZj1cImhlYWRlckFjdGlvbnMoKSAmJiBoZWFkZXJBY3Rpb25zKCkubGVuZ3RoXCIgY2xhc3M9XCJkLWJsb2NrIGQtaW5saW5lLWZsZXhcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImR0LWJ1dHRvbnMgYnRuLWdyb3VwIGZsZXgtd3JhcFwiPlxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBoZWFkZXJBY3Rpb25zKClcIj5cblx0XHRcdFx0XHRcdDxidXR0b25cblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cImhlYWRlckFjdGlvbihhY3Rpb24uYWN0aW9uTmFtZSlcIlxuXHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJ7ICdidG4tc2Vjb25kYXJ5JzogIWFjdGlvbi5idG5Db2xvciB9XCJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnV0dG9ucy1jb3B5IGJ1dHRvbnMtaHRtbDUgYnRuLXNtIHt7IGFjdGlvbi5hY3Rpb25OYW1lIH19IHt7IGFjdGlvbi5idG5Db2xvciB9fVwiXG5cdFx0XHRcdFx0XHRcdGlkPVwiaGVhZGVyLWFjdGlvbi17eyBhY3Rpb24uYWN0aW9uTmFtZSB9fVwiXG5cdFx0XHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHQ8c3Bhbj48aSAqbmdJZj1cImFjdGlvbi5mYUljb25cIiBjbGFzcz1cImZhIHt7IGFjdGlvbi5mYUljb24gfX1cIj48L2k+IHt7IGFjdGlvbi5sYWJlbCB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJlbmFibGVTZWFyY2goKVwiIGNsYXNzPVwiY29sLW1kLTUgZC1mbGV4IGQteGwtYmxvY2sganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cInRhYmxlLXNlYXJjaFwiPlxuXHRcdFx0XHQ8bGFiZWxcblx0XHRcdFx0XHQ+U2VhcmNoOlxuXHRcdFx0XHRcdDxpbnB1dFxuXHRcdFx0XHRcdFx0KG5nTW9kZWxDaGFuZ2UpPVwidGhpcy5zZWFyY2hVcGRhdGUubmV4dCgkZXZlbnQpXCJcblx0XHRcdFx0XHRcdFsobmdNb2RlbCldPVwic2VhcmNoXCJcblx0XHRcdFx0XHRcdGFyaWEtY29udHJvbHM9XCJkYXRhLXRhYmxlLWNvbWJpbmVcIlxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcblx0XHRcdFx0XHRcdGlkPVwidGFibGUtc2VhcmNoXCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiXCJcblx0XHRcdFx0XHRcdHR5cGU9XCJzZWFyY2hcIlxuXHRcdFx0XHQvPjwvbGFiZWw+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XG5cdFx0PHRhYmxlXG5cdFx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHRcdCd0YWJsZS1zdHJpcGVkJzogc3RyaXBlZCgpLFxuXHRcdFx0XHQndGFibGUtYm9yZGVyZWQnOiBib3JkZXJlZCgpLFxuXHRcdFx0XHQndGFibGUtaG92ZXInOiBob3ZlcmVkKClcblx0XHRcdH1cIlxuXHRcdFx0Y2xhc3M9XCJ0YWJsZSB0YWJsZS1maXhlZCBhbGlnbi1taWRkbGUge3sgdGFibGVTdHlsZSgpIH19XCJcblx0XHQ+XG5cdFx0XHQ8dGhlYWQgW2NsYXNzXT1cImhlYWRTdHlsZSgpXCI+XG5cdFx0XHRcdDx0cj5cblx0XHRcdFx0XHQ8dGggKm5nSWY9XCJyb3dDb3VudGVyKClcIiBjbGFzcz1cInRleHQtZW5kIHNtYWxsLWNvbHVtblwiPiBOci48L3RoPlxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhlYWQgb2YgdGFibGVIZWFkKCk7IHRyYWNrQnk6dHJhY2tCeUhlYWRDaGFuZ2VcIj5cblx0XHRcdFx0XHRcdDx0aFxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwiIWhlYWQubm90U29ydGFibGUgJiYgdGFibGVTb3J0KGhlYWQua2V5KVwiXG5cdFx0XHRcdFx0XHRcdCpuZ0lmPVwiIWhlYWQuaGlkZGVuXCJcblx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwiaGVhZC5zb3J0XCJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJoZWFkZXIge3sgaGVhZC5ub3RTb3J0YWJsZSA/ICcnIDogJ3NvcnRhYmxlJyB9fSB7eyBoZWFkLmNlbGxBbGlnbiB9fVwiXG5cdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0XHRcdFx0PHNwYW4gW3RyYW5zbGF0ZV09XCJoZWFkLmtleS50b1VwcGVyQ2FzZSgpXCI+e3sgaGVhZC5sYWJlbCB8fCBoZWFkLmtleSB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhXCI+PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdDwvdGg+XG5cdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0PHRoICpuZ0lmPVwidGFibGVIZWFkU3RvcmFnZSgpIHx8IChyb3dBY3Rpb25zKCkgJiYgcm93QWN0aW9ucygpLmxlbmd0aClcIiBjbGFzcz1cImhlYWRlciBzbWFsbC1jb2x1bW4gdGV4dC1jZW50ZXIgcC0wXCIgZGF0YS13aWR0aD1cIjUwXCI+XG5cdFx0XHRcdFx0XHQ8YVxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib3BlblRhYmxlTGF5b3V0TW9kYWwodGFibGVIZWFkTW9kYWwpXCJcblx0XHRcdFx0XHRcdFx0Km5nSWY9XCJ0YWJsZUhlYWRTdG9yYWdlKClcIlxuXHRcdFx0XHRcdFx0XHRhcmlhLWNvbnRyb2xzPVwiYmFzaWMtbGluay1kcm9wZG93blwiXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwibWVudS1idXR0b24gdG9nZ2xlLXdoaXRlIGJpZy10b2dnbGUgZHJvcGRvd24tbWVudS1saW5rXCJcblx0XHRcdFx0XHRcdD48L2E+XG5cdFx0XHRcdFx0PC90aD5cblx0XHRcdFx0PC90cj5cblx0XHRcdDwvdGhlYWQ+XG5cdFx0XHQ8dGJvZHk+XG5cdFx0XHRcdDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIHRhYmxlRGF0YSgpOyBsZXQgaSA9IGluZGV4O1wiIGNsYXNzPVwie3sgcm93Wydyb3dDbGFzcyddIHx8ICcnIH19XCIgKGNsaWNrKT1cIm9uUm93Q2xpY2socm93KVwiPlxuXHRcdFx0XHRcdDx0aCAqbmdJZj1cInJvd0NvdW50ZXIoKVwiIGNsYXNzPVwidGV4dC1lbmRcIj4ge3sgaSArIGNvdW50ZXIgfX0uPC90aD5cblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZWFkIG9mIHRhYmxlSGVhZCgpXCI+XG5cdFx0XHRcdFx0XHQ8dGQgKm5nSWY9XCIhaGVhZC5oaWRkZW5cIiBjbGFzcz1cImhlYWRlciB0ZXh0LW5vd3JhcCB7eyBoZWFkLmNlbGxBbGlnbiB9fVwiPlxuXHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZC50eXBlID09PSAnc2VsZWN0J1wiPlxuXHRcdFx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cInNlbGVjdFwiIHR5cGU9XCJjaGVja2JveFwiIC8+XG5cdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWhlYWQudHlwZVwiPlxuXHRcdFx0XHRcdFx0XHRcdHt7IHJvd1toZWFkLmtleV0gfX1cblx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkLnR5cGUgPT09ICdiYWRnZSdcIj5cblx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImJhZGdlIHt7IHJvd1toZWFkLmtleSArICdCYWRnZSddIH19XCI+e3sgcm93W2hlYWQua2V5XSB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkLnR5cGUgPT09ICdkYXRlJ1wiPlxuXHRcdFx0XHRcdFx0XHRcdHt7IHJvd1toZWFkLmtleV0gfCBkYXRlOiBcImRkLk1NLnl5eXkgSEg6bW06c3NcIiB9fVxuXHRcdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWQudHlwZSA9PT0gJ3NsaWRlcidcIj5cblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdChjaGFuZ2UpPVwic2xpZGVyQ2xpY2tlZC5lbWl0KHJvdylcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbY2hlY2tlZF09XCJyb3dbaGVhZC5rZXldXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzd2l0Y2hlZFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlkPVwiY2hlY2ste3sgcm93WydpZCddIH19XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZT1cImNoZWNrYm94XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU9XCJ0cnVlXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgZm9yPVwiY2hlY2ste3sgcm93WydpZCddIH19XCI+PC9sYWJlbD5cblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkLnR5cGUgPT09ICdpbnB1dCdcIj5cblx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgW3ZhbHVlXT1cInJvd1toZWFkLmtleV1cIiB0eXBlPVwidGV4dFwiIC8+XG5cdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdFx0PC90ZD5cblx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHQ8dGQgKm5nSWY9XCJ0YWJsZUhlYWRTdG9yYWdlKCkgfHwgKHJvd0FjdGlvbnMoKSAmJiByb3dBY3Rpb25zKCkubGVuZ3RoKVwiIGNsYXNzPVwic21hbGwtY29sdW1uXCI+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWVudSB0ZXh0LWVuZFwiPlxuXHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygcm93QWN0aW9ucygpXCI+XG5cdFx0XHRcdFx0XHRcdFx0PGJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cInJvd0FjdGlvbihhY3Rpb24uYWN0aW9uTmFtZSwgcm93KVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJ7ICdidG4tc2Vjb25kYXJ5JzogIWFjdGlvbi5idG5Db2xvciB9XCJcblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwiYnRuIGJ1dHRvbnMtY29weSBidXR0b25zLWh0bWw1IGJ0bi1zbSBtcy0yIHt7IGFjdGlvbi5hY3Rpb25OYW1lIH19IHt7IGFjdGlvbi5idG5Db2xvciB9fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPVwie3sgYWN0aW9uLmxhYmVsIH19XCJcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuPjxpICpuZ0lmPVwiYWN0aW9uLmZhSWNvblwiIGNsYXNzPVwiZmEge3sgYWN0aW9uLmZhSWNvbiB9fVwiPjwvaT48L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC90ZD5cblx0XHRcdFx0PC90cj5cblx0XHRcdDwvdGJvZHk+XG5cdFx0PC90YWJsZT5cblx0XHQ8YXMtbGliLXBhZ2luYXRpb25cblx0XHRcdChwYWdlQ2hhbmdlKT1cInBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG5cdFx0XHQqbmdJZj1cInRvdGFsUGFnZXMgPiAxXCJcblx0XHRcdFthbGlnbl09XCJwYWdpbmF0aW9uQWxpZ25tZW50KClcIlxuXHRcdFx0W2VuYWJsZUxvZ109XCJlbmFibGVMb2coKVwiXG5cdFx0XHRbZmlyc3RdPVwicGFnZSgpID09PSAwXCJcblx0XHRcdFtsYXN0XT1cInBhZ2UoKSA9PT0gdG90YWxQYWdlcyAtIDFcIlxuXHRcdFx0W3BhZ2VdPVwicGFnZSgpXCJcblx0XHRcdFt0b3RhbFBhZ2VzXT1cInRvdGFsUGFnZXNcIlxuXHRcdD48L2FzLWxpYi1wYWdpbmF0aW9uPlxuXHQ8L2Rpdj5cblx0PG5nLXRlbXBsYXRlICN0YWJsZUhlYWRNb2RhbD5cblx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG5cdFx0XHQ8aDQgY2xhc3M9XCJtb2RhbC10aXRsZSBwdWxsLWxlZnRcIj5FZGl0IHRhYmxlIGhlYWRlcjwvaDQ+XG5cdFx0XHQ8YnV0dG9uIChjbGljayk9XCJtb2RhbENsb3NlKClcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0bi1jbG9zZSBjbG9zZSBwdWxsLXJpZ2h0XCIgdHlwZT1cImJ1dHRvblwiPlxuXHRcdFx0XHQ8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPiZ0aW1lczs8L3NwYW4+XG5cdFx0XHQ8L2J1dHRvbj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGQgb2YgdGFibGVIZWFkKCk7IHRyYWNrQnk6dHJhY2tCeUhlYWRDaGFuZ2VcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cblx0XHRcdFx0XHQ8aW5wdXRcblx0XHRcdFx0XHRcdChjaGFuZ2UpPVwiaGFuZGxlVEhjaGFuZ2UodGQua2V5KVwiXG5cdFx0XHRcdFx0XHRbY2hlY2tlZF09XCIhdGQuaGlkZGVuXCJcblx0XHRcdFx0XHRcdFtkaXNhYmxlZF09XCJ0ZC5tYW5kYXRvcnlcIlxuXHRcdFx0XHRcdFx0W3JlYWRPbmx5XT1cInRkLm1hbmRhdG9yeVwiXG5cdFx0XHRcdFx0XHRjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuXHRcdFx0XHRcdFx0aWQ9XCJ7eyB0ZC5rZXkgfX1cIlxuXHRcdFx0XHRcdFx0cm9sZT1cInN3aXRjaFwiXG5cdFx0XHRcdFx0XHR0eXBlPVwiY2hlY2tib3hcIlxuXHRcdFx0XHRcdFx0dmFsdWU9XCJ0cnVlXCJcblx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJ7eyB0ZC5rZXkgfX1cIj57eyB0ZC5sYWJlbCB9fSB7eyB0ZC5tYW5kYXRvcnkgPyBcIipcIiA6IFwiXCIgfX08L2xhYmVsPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0PHNtYWxsIGNsYXNzPVwic21hbGwgdGV4dC1tdXRlZCBwdC0yXCI+KiBNYW5kYXRvcnkgZmllbGQgZm9yIHRoZSB2aWV3PC9zbWFsbD5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG5cdFx0XHQ8YnV0dG9uIChjbGljayk9XCJyZXNldFZhbHVlcygpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IG1lLWF1dG9cIiB0eXBlPVwiYnV0dG9uXCI+UmVzZXQ8L2J1dHRvbj5cblx0XHRcdDxidXR0b24gKGNsaWNrKT1cIm1vZGFsQ2xvc2UoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHJhbnNsYXRlPVwiQ0xPU0VcIiB0eXBlPVwiYnV0dG9uXCI+Q2xvc2U8L2J1dHRvbj5cblx0XHQ8L2Rpdj5cblx0PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class AsLibGenericTableService {
|
|
4
|
-
constructor() { }
|
|
5
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AsLibGenericTableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AsLibGenericTableService, providedIn: 'root' });
|
|
7
|
-
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AsLibGenericTableService, decorators: [{
|
|
9
|
-
type: Injectable,
|
|
10
|
-
args: [{
|
|
11
|
-
providedIn: 'root'
|
|
12
|
-
}]
|
|
13
|
-
}], ctorParameters: () => [] });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXMtbGliLWdlbmVyaWMtdGFibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FzLWxpYi1nZW5lcmljLXRhYmxlL3NyYy9saWIvYXMtbGliLWdlbmVyaWMtdGFibGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DLGdCQUFnQixDQUFDO3VHQUZOLHdCQUF3QjsyR0FBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFzTGliR2VuZXJpY1RhYmxlU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cbn1cbiJdfQ==
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class TooltipComponent {
|
|
4
|
-
tooltip = '';
|
|
5
|
-
left = 0;
|
|
6
|
-
top = 0;
|
|
7
|
-
constructor() { }
|
|
8
|
-
ngOnInit() { }
|
|
9
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: TooltipComponent, isStandalone: true, selector: "tooltip", ngImport: i0, template: "<div [style.left]=\"left + 'px'\" [style.top]=\"top + 'px'\" class=\"my-tooltip\">\n\t{{ tooltip }}\n</div>\n", styles: [".my-tooltip{position:fixed;background-color:#000;border-radius:4px;color:#fff;font-family:Arial,serif;padding:3px 6px;font-size:13px;margin-top:5px;transform:translate(-50%)}.my-tooltip:before{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid black;position:absolute;left:calc(50% - 5px);top:-5px}\n"] });
|
|
11
|
-
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
13
|
-
type: Component,
|
|
14
|
-
args: [{ selector: 'tooltip', standalone: true, template: "<div [style.left]=\"left + 'px'\" [style.top]=\"top + 'px'\" class=\"my-tooltip\">\n\t{{ tooltip }}\n</div>\n", styles: [".my-tooltip{position:fixed;background-color:#000;border-radius:4px;color:#fff;font-family:Arial,serif;padding:3px 6px;font-size:13px;margin-top:5px;transform:translate(-50%)}.my-tooltip:before{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid black;position:absolute;left:calc(50% - 5px);top:-5px}\n"] }]
|
|
15
|
-
}], ctorParameters: () => [] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcy1saWItZ2VuZXJpYy10YWJsZS9zcmMvbGliL2RpcmVjdGl2ZXMvY29tcG9uZW50L3Rvb2x0aXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXMtbGliLWdlbmVyaWMtdGFibGUvc3JjL2xpYi9kaXJlY3RpdmVzL2NvbXBvbmVudC90b29sdGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBUWxELE1BQU0sT0FBTyxnQkFBZ0I7SUFDNUIsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNyQixJQUFJLEdBQVcsQ0FBQyxDQUFDO0lBQ2pCLEdBQUcsR0FBVyxDQUFDLENBQUM7SUFFaEIsZ0JBQWUsQ0FBQztJQUVoQixRQUFRLEtBQVUsQ0FBQzt1R0FQUCxnQkFBZ0I7MkZBQWhCLGdCQUFnQixtRUNSN0IsK0dBR0E7OzJGREthLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDQyxTQUFTLGNBQ04sSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3Rvb2x0aXAnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZVVybDogJy4vdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL3Rvb2x0aXAuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cdHRvb2x0aXA6IHN0cmluZyA9ICcnO1xuXHRsZWZ0OiBudW1iZXIgPSAwO1xuXHR0b3A6IG51bWJlciA9IDA7XG5cblx0Y29uc3RydWN0b3IoKSB7fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge31cbn1cbiIsIjxkaXYgW3N0eWxlLmxlZnRdPVwibGVmdCArICdweCdcIiBbc3R5bGUudG9wXT1cInRvcCArICdweCdcIiBjbGFzcz1cIm15LXRvb2x0aXBcIj5cblx0e3sgdG9vbHRpcCB9fVxuPC9kaXY+XG4iXX0=
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { Directive, HostListener, Input, } from '@angular/core';
|
|
2
|
-
import { TooltipComponent } from '../component/tooltip.component';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class TooltipDirective {
|
|
5
|
-
elementRef;
|
|
6
|
-
appRef;
|
|
7
|
-
viewContainerRef;
|
|
8
|
-
tooltip = '';
|
|
9
|
-
componentRef = null;
|
|
10
|
-
constructor(elementRef, appRef, viewContainerRef) {
|
|
11
|
-
this.elementRef = elementRef;
|
|
12
|
-
this.appRef = appRef;
|
|
13
|
-
this.viewContainerRef = viewContainerRef;
|
|
14
|
-
}
|
|
15
|
-
onMouseEnter() {
|
|
16
|
-
if (this.componentRef === null) {
|
|
17
|
-
this.componentRef = this.viewContainerRef.createComponent(TooltipComponent);
|
|
18
|
-
this.componentRef.instance.text = this.tooltip;
|
|
19
|
-
this.setTooltipComponentProperties();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
onMouseLeave() {
|
|
23
|
-
this.destroy();
|
|
24
|
-
}
|
|
25
|
-
ngOnDestroy() {
|
|
26
|
-
this.destroy();
|
|
27
|
-
}
|
|
28
|
-
destroy() {
|
|
29
|
-
if (this.componentRef !== null) {
|
|
30
|
-
this.appRef.detachView(this.componentRef.hostView);
|
|
31
|
-
this.componentRef.destroy();
|
|
32
|
-
this.componentRef = null;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
setTooltipComponentProperties() {
|
|
36
|
-
if (this.componentRef !== null) {
|
|
37
|
-
this.componentRef.instance.tooltip = this.tooltip;
|
|
38
|
-
const { left, right, bottom } = this.elementRef.nativeElement.getBoundingClientRect();
|
|
39
|
-
this.componentRef.instance.left = (right - left) / 2 + left;
|
|
40
|
-
this.componentRef.instance.top = bottom;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.ApplicationRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
44
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: TooltipDirective, isStandalone: true, selector: "[tooltip]", inputs: { tooltip: "tooltip" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, ngImport: i0 });
|
|
45
|
-
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TooltipDirective, decorators: [{
|
|
47
|
-
type: Directive,
|
|
48
|
-
args: [{
|
|
49
|
-
selector: '[tooltip]',
|
|
50
|
-
standalone: true
|
|
51
|
-
}]
|
|
52
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ApplicationRef }, { type: i0.ViewContainerRef }], propDecorators: { tooltip: [{
|
|
53
|
-
type: Input
|
|
54
|
-
}], onMouseEnter: [{
|
|
55
|
-
type: HostListener,
|
|
56
|
-
args: ['mouseenter']
|
|
57
|
-
}], onMouseLeave: [{
|
|
58
|
-
type: HostListener,
|
|
59
|
-
args: ['mouseleave']
|
|
60
|
-
}] } });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcy1saWItZ2VuZXJpYy10YWJsZS9zcmMvbGliL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUdULFlBQVksRUFFWixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBTWxFLE1BQU0sT0FBTyxnQkFBZ0I7SUFNakI7SUFDQTtJQUNBO0lBUEQsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUVkLFlBQVksR0FBNkIsSUFBSSxDQUFDO0lBRXRELFlBQ1UsVUFBc0IsRUFDdEIsTUFBc0IsRUFDdEIsZ0JBQWtDO1FBRmxDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUU1QyxDQUFDO0lBR0QsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUMvQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUdELFlBQVk7UUFDVixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRU8sNkJBQTZCO1FBQ25DLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNsRCxNQUFNLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3BGLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzVELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7dUdBN0NVLGdCQUFnQjsyRkFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7MklBRVUsT0FBTztzQkFBZixLQUFLO2dCQVlOLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZO2dCQVUxQixZQUFZO3NCQURYLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50L3Rvb2x0aXAuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3Rvb2x0aXBdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUb29sdGlwRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgdG9vbHRpcCA9ICcnO1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gIG9uTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChUb29sdGlwQ29tcG9uZW50KTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRleHQgPSB0aGlzLnRvb2x0aXA7XG4gICAgICB0aGlzLnNldFRvb2x0aXBDb21wb25lbnRQcm9wZXJ0aWVzKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSgpO1xuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VG9vbHRpcENvbXBvbmVudFByb3BlcnRpZXMoKSB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50b29sdGlwID0gdGhpcy50b29sdGlwO1xuICAgICAgY29uc3Qge2xlZnQsIHJpZ2h0LCBib3R0b219ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5sZWZ0ID0gKHJpZ2h0IC0gbGVmdCkgLyAyICsgbGVmdDtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRvcCA9IGJvdHRvbTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/lib/exports.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FzLWxpYi1nZW5lcmljLXRhYmxlL3NyYy9saWIvZXhwb3J0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJQWN0aW9uQnV0dG9uIHtcblx0YWN0aW9uTmFtZTogc3RyaW5nO1xuXHRsYWJlbD86IHN0cmluZztcblx0ZmFJY29uPzogc3RyaW5nO1xuXHRidG5Db2xvcj86XG5cdFx0fCAnYnRuLWRlZmF1bHQnXG5cdFx0fCAnYnRuLXByaW1hcnknXG5cdFx0fCAnYnRuLXNlY29uZGFyeSdcblx0XHR8ICdidG4tc3VjY2Vzcydcblx0XHR8ICdidG4tZGFuZ2VyJ1xuXHRcdHwgJ2J0bi13YXJuaW5nJ1xuXHRcdHwgJ2J0bi1pbmZvJ1xuXHRcdHwgJ2J0bi1saWdodCdcblx0XHR8ICdidG4tZGFyayc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlSGVhZCB7XG5cdGhpZGRlbj86IGJvb2xlYW47XG5cdGtleTogc3RyaW5nO1xuXHR0eXBlPzogJ3NlbGVjdCcgfCAnZGF0ZScgfCAnc2xpZGVyJyB8ICdpbnB1dCcgfCAnYmFkZ2UnO1xuXHRsYWJlbD86IHN0cmluZztcblx0c29ydD86ICcnIHwgJ2hlYWRlclNvcnREb3duJyB8ICdoZWFkZXJTb3J0VXAnO1xuXHRtYW5kYXRvcnk/OiBib29sZWFuO1xuXHRub3RTb3J0YWJsZT86IGJvb2xlYW47XG5cdGNlbGxBbGlnbj86ICcnIHwgJ3RleHQtY2VudGVyJyB8ICd0ZXh0LWVuZCc7XG4gIGJhZGdlQ2xhc3NSdWxlcz86IChcbiAgICB7IHJ1bGU6ICc+JyB8ICc8JyB8ICc9JyB8ICc8Pic7IHZhbHVlOiBhbnksIGNsYXNzOiBzdHJpbmcgfVxuICAgIClbXVxuICByb3dDbGFzc1J1bGVzPzogKFxuICAgIHwgeyBydWxlOiAnPicgfCAnPCcgfCAnPScgfCAnPD4nOyB2YWx1ZTogYW55LCBjbGFzczogc3RyaW5nIH1cbiAgICApW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRmlsdGVyUGFyYW1zIHtcblx0c29ydDogc3RyaW5nO1xuXHRvcmRlcjogJ2FzYycgfCAnZGVzYyc7XG5cdHBlclBhZ2U6IG51bWJlcjtcblx0c2VhcmNoU3RyaW5nOiBzdHJpbmc7XG5cdHBhZ2U6IG51bWJlcjtcbn1cbiJdfQ==
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of as-lib-generic-table
|
|
3
|
-
*/
|
|
4
|
-
export * from './lib/as-lib-generic-table.service';
|
|
5
|
-
export * from './lib/as-lib-generic-table.component';
|
|
6
|
-
export * from './lib/exports';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FzLWxpYi1nZW5lcmljLXRhYmxlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhcy1saWItZ2VuZXJpYy10YWJsZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2FzLWxpYi1nZW5lcmljLXRhYmxlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXMtbGliLWdlbmVyaWMtdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4cG9ydHMnO1xuIl19
|