@abp/ng.components 8.1.0-rc.3 → 8.1.0-rc.4
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/esm2022/extensible/lib/components/extensible-table/extensible-table.component.mjs +9 -28
- package/extensible/lib/components/extensible-table/extensible-table.component.d.ts +2 -5
- package/fesm2022/abp-ng.components-extensible.mjs +3 -22
- package/fesm2022/abp-ng.components-extensible.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { ConfigStateService, getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat, ListService, LocalizationModule, PermissionDirective, PermissionService, } from '@abp/ng.core';
|
|
2
|
-
import { AsyncPipe, formatDate, NgComponentOutlet, NgTemplateOutlet, } from '@angular/common';
|
|
3
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, inject, Injector, Input, LOCALE_ID, Output, TemplateRef, } from '@angular/core';
|
|
2
|
+
import { AsyncPipe, formatDate, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';
|
|
4
3
|
import { map } from 'rxjs/operators';
|
|
4
|
+
import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';
|
|
5
|
+
import { NgxDatatableModule } from '@swimlane/ngx-datatable';
|
|
6
|
+
import { ConfigStateService, getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat, ListService, LocalizationModule, PermissionDirective, PermissionService, } from '@abp/ng.core';
|
|
7
|
+
import { AbpVisibleDirective, NgxDatatableDefaultDirective, NgxDatatableListDirective, } from '@abp/ng.theme.shared';
|
|
5
8
|
import { ExtensionsService } from '../../services/extensions.service';
|
|
6
9
|
import { ENTITY_PROP_TYPE_CLASSES, EXTENSIONS_IDENTIFIER, PROP_DATA_STREAM, } from '../../tokens/extensions.token';
|
|
7
|
-
import { NgxDatatableModule } from '@swimlane/ngx-datatable';
|
|
8
10
|
import { GridActionsComponent } from '../grid-actions/grid-actions.component';
|
|
9
|
-
import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';
|
|
10
|
-
import { AbpVisibleDirective, NgxDatatableDefaultDirective, NgxDatatableListDirective, } from '@abp/ng.theme.shared';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
import * as i1 from "@swimlane/ngx-datatable";
|
|
13
13
|
import * as i2 from "@abp/ng.core";
|
|
@@ -81,26 +81,7 @@ export class ExtensibleTableComponent {
|
|
|
81
81
|
}
|
|
82
82
|
}));
|
|
83
83
|
}
|
|
84
|
-
|
|
85
|
-
this.list.page = offset;
|
|
86
|
-
}
|
|
87
|
-
ngOnChanges({ data, recordsTotal }) {
|
|
88
|
-
if (data?.currentValue.length < 1 && recordsTotal?.currentValue > 0) {
|
|
89
|
-
let maxPage = Math.floor(Number(recordsTotal?.currentValue / this.list.maxResultCount));
|
|
90
|
-
if (recordsTotal?.currentValue < this.list.maxResultCount) {
|
|
91
|
-
this.list.page = 0;
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
if (recordsTotal?.currentValue % this.list.maxResultCount === 0) {
|
|
95
|
-
maxPage -= 1;
|
|
96
|
-
}
|
|
97
|
-
if (this.list.page < maxPage) {
|
|
98
|
-
this.list.page = this.list.page;
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
this.list.page = maxPage;
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
84
|
+
ngOnChanges({ data }) {
|
|
104
85
|
if (!data?.currentValue)
|
|
105
86
|
return;
|
|
106
87
|
if (data.currentValue.length < 1) {
|
|
@@ -132,7 +113,7 @@ export class ExtensibleTableComponent {
|
|
|
132
113
|
});
|
|
133
114
|
}
|
|
134
115
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ExtensibleTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
135
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: ExtensibleTableComponent, isStandalone: true, selector: "abp-extensible-table", inputs: { actionsText: "actionsText", data: "data", list: "list", recordsTotal: "recordsTotal", actionsColumnWidth: "actionsColumnWidth", actionsTemplate: "actionsTemplate" }, outputs: { tableActivate: "tableActivate" }, exportAs: ["abpExtensibleTable"], usesOnChanges: true, ngImport: i0, template: "<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n
|
|
116
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: ExtensibleTableComponent, isStandalone: true, selector: "abp-extensible-table", inputs: { actionsText: "actionsText", data: "data", list: "list", recordsTotal: "recordsTotal", actionsColumnWidth: "actionsColumnWidth", actionsTemplate: "actionsTemplate" }, outputs: { tableActivate: "tableActivate" }, exportAs: ["abpExtensibleTable"], usesOnChanges: true, ngImport: i0, template: "<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n (activate)=\"tableActivate.emit($event)\"\r\n>\r\n @if (actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)) {\r\n <ngx-datatable-column\r\n [name]=\"actionsText | abpLocalization\"\r\n [maxWidth]=\"columnWidths[0]\"\r\n [width]=\"columnWidths[0]\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n </ng-template>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n } @for (prop of propList; track prop.name; let i = $index) {\r\n <ngx-datatable-column\r\n *abpVisible=\"prop.columnVisible(getInjected)\"\r\n [width]=\"columnWidths[i + 1] || 200\"\r\n [name]=\"prop.displayName | abpLocalization\"\r\n [prop]=\"prop.name\"\r\n [sortable]=\"prop.sortable\"\r\n >\r\n <ng-template ngx-datatable-header-template let-column=\"column\">\r\n @if (prop.tooltip) {\r\n <span [ngbTooltip]=\"prop.tooltip.text | abpLocalization\" [placement]=\"prop.tooltip.placement || 'auto'\"\r\n container=\"body\">\r\n {{ column.name }} <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n </span>\r\n }@else{\r\n {{ column.name }}\r\n }\r\n </ng-template>\r\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\r\n <ng-container *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n <ng-container *abpVisible=\"row['_' + prop.name]?.visible\">\r\n @if (!row['_' + prop.name].component) {\r\n <div\r\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n }@else{\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n row['_' + prop.name].component;\r\n injector: row['_' + prop.name].injector\r\n \"\r\n ></ng-container>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n</ngx-datatable>\r\n", dependencies: [{ kind: "directive", type: AbpVisibleDirective, selector: "[abpVisible]", inputs: ["abpVisible"] }, { kind: "ngmodule", type: NgxDatatableModule }, { kind: "component", type: i1.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i1.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { kind: "directive", type: i1.DataTableColumnHeaderDirective, selector: "[ngx-datatable-header-template]" }, { kind: "directive", type: i1.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "component", type: GridActionsComponent, selector: "abp-grid-actions", inputs: ["icon", "index", "text"], exportAs: ["abpGridActions"] }, { kind: "directive", type: NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: NgxDatatableDefaultDirective, selector: "ngx-datatable[default]", inputs: ["class"], exportAs: ["ngxDatatableDefault"] }, { kind: "directive", type: NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { kind: "directive", type: PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
136
117
|
}
|
|
137
118
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ExtensibleTableComponent, decorators: [{
|
|
138
119
|
type: Component,
|
|
@@ -148,7 +129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
148
129
|
AsyncPipe,
|
|
149
130
|
NgTemplateOutlet,
|
|
150
131
|
NgComponentOutlet,
|
|
151
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n
|
|
132
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n (activate)=\"tableActivate.emit($event)\"\r\n>\r\n @if (actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)) {\r\n <ngx-datatable-column\r\n [name]=\"actionsText | abpLocalization\"\r\n [maxWidth]=\"columnWidths[0]\"\r\n [width]=\"columnWidths[0]\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n </ng-template>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n } @for (prop of propList; track prop.name; let i = $index) {\r\n <ngx-datatable-column\r\n *abpVisible=\"prop.columnVisible(getInjected)\"\r\n [width]=\"columnWidths[i + 1] || 200\"\r\n [name]=\"prop.displayName | abpLocalization\"\r\n [prop]=\"prop.name\"\r\n [sortable]=\"prop.sortable\"\r\n >\r\n <ng-template ngx-datatable-header-template let-column=\"column\">\r\n @if (prop.tooltip) {\r\n <span [ngbTooltip]=\"prop.tooltip.text | abpLocalization\" [placement]=\"prop.tooltip.placement || 'auto'\"\r\n container=\"body\">\r\n {{ column.name }} <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n </span>\r\n }@else{\r\n {{ column.name }}\r\n }\r\n </ng-template>\r\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\r\n <ng-container *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n <ng-container *abpVisible=\"row['_' + prop.name]?.visible\">\r\n @if (!row['_' + prop.name].component) {\r\n <div\r\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n }@else{\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n row['_' + prop.name].component;\r\n injector: row['_' + prop.name].injector\r\n \"\r\n ></ng-container>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n</ngx-datatable>\r\n" }]
|
|
152
133
|
}], ctorParameters: () => [], propDecorators: { actionsText: [{
|
|
153
134
|
type: Input
|
|
154
135
|
}], data: [{
|
|
@@ -164,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
164
145
|
}], tableActivate: [{
|
|
165
146
|
type: Output
|
|
166
147
|
}] } });
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9jb21wb25lbnRzL2V4dGVuc2libGUtdGFibGUvZXh0ZW5zaWJsZS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9jb21wb25lbnRzL2V4dGVuc2libGUtdGFibGUvZXh0ZW5zaWJsZS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQiwyQkFBMkIsRUFDM0Isa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBRU4sV0FBVyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixnQkFBZ0IsR0FDakIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFP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b250ZW50IjpbImltcG9ydCB7XHJcbiAgQUJQLFxyXG4gIENvbmZpZ1N0YXRlU2VydmljZSwgXHJcbiAgZ2V0U2hvcnREYXRlRm9ybWF0LFxyXG4gIGdldFNob3J0RGF0ZVNob3J0VGltZUZvcm1hdCxcclxuICBnZXRTaG9ydFRpbWVGb3JtYXQsXHJcbiAgTGlzdFNlcnZpY2UsXHJcbiAgTG9jYWxpemF0aW9uTW9kdWxlLFxyXG4gIFBlcm1pc3Npb25EaXJlY3RpdmUsXHJcbiAgUGVybWlzc2lvblNlcnZpY2UsXHJcbn0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHtcclxuICBBc3luY1BpcGUsXHJcbiAgZm9ybWF0RGF0ZSxcclxuICBOZ0NvbXBvbmVudE91dGxldCwgXHJcbiAgTmdUZW1wbGF0ZU91dGxldCxcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0LFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIExPQ0FMRV9JRCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVHJhY2tCeUZ1bmN0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZVByb3BUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvcHJvcHMuZW51bSc7XHJcbmltcG9ydCB7IEVudGl0eUFjdGlvbkxpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5LWFjdGlvbnMnO1xyXG5pbXBvcnQgeyBFbnRpdHlQcm9wLCBFbnRpdHlQcm9wTGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy9lbnRpdHktcHJvcHMnO1xyXG5pbXBvcnQgeyBQcm9wRGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9wcm9wcyc7XHJcbmltcG9ydCB7IEV4dGVuc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBFTlRJVFlfUFJPUF9UWVBFX0NMQVNTRVMsXHJcbiAgRVhURU5TSU9OU19JREVOVElGSUVSLFxyXG4gIFBST1BfREFUQV9TVFJFQU0sXHJcbn0gZnJvbSAnLi4vLi4vdG9rZW5zL2V4dGVuc2lvbnMudG9rZW4nO1xyXG5pbXBvcnQgeyBOZ3hEYXRhdGFibGVNb2R1bGUgfSBmcm9tICdAc3dpbWxhbmUvbmd4LWRhdGF0YWJsZSc7XHJcbmltcG9ydCB7IEdyaWRBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1hY3Rpb25zL2dyaWQtYWN0aW9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ2JUb29sdGlwIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQge1xyXG4gIEFicFZpc2libGVEaXJlY3RpdmUsXHJcbiAgTmd4RGF0YXRhYmxlRGVmYXVsdERpcmVjdGl2ZSxcclxuICBOZ3hEYXRhdGFibGVMaXN0RGlyZWN0aXZlLFxyXG59IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuXHJcbmNvbnN0IERFRkFVTFRfQUNUSU9OU19DT0xVTU5fV0lEVEggPSAxNTA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBleHBvcnRBczogJ2FicEV4dGVuc2libGVUYWJsZScsXHJcbiAgc2VsZWN0b3I6ICdhYnAtZXh0ZW5zaWJsZS10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBBYnBWaXNpYmxlRGlyZWN0aXZlLFxyXG4gICAgTmd4RGF0YXRhYmxlTW9kdWxlLFxyXG4gICAgR3JpZEFjdGlvbnNDb21wb25lbnQsXHJcbiAgICBOZ2JUb29sdGlwLFxyXG4gICAgTmd4RGF0YXRhYmxlRGVmYXVsdERpcmVjdGl2ZSxcclxuICAgIE5neERhdGF0YWJsZUxpc3REaXJlY3RpdmUsXHJcbiAgICBQZXJtaXNzaW9uRGlyZWN0aXZlLFxyXG4gICAgTG9jYWxpemF0aW9uTW9kdWxlLFxyXG4gICAgQXN5bmNQaXBlLFxyXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcclxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2V4dGVuc2libGUtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXh0ZW5zaWJsZVRhYmxlQ29tcG9uZW50PFIgPSBhbnk+IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBwcm90ZWN0ZWQgX2FjdGlvbnNUZXh0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGFjdGlvbnNUZXh0KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2FjdGlvbnNUZXh0ID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aW9uc1RleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zVGV4dCA/PyAodGhpcy5hY3Rpb25MaXN0Lmxlbmd0aCA+IDEgPyAnQWJwVWk6OkFjdGlvbnMnIDogJycpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZGF0YSE6IFJbXTtcclxuICBASW5wdXQoKSBsaXN0ITogTGlzdFNlcnZpY2U7XHJcbiAgQElucHV0KCkgcmVjb3Jkc1RvdGFsITogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKSBzZXQgYWN0aW9uc0NvbHVtbldpZHRoKHdpZHRoOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2V0Q29sdW1uV2lkdGhzKHdpZHRoID8gTnVtYmVyKHdpZHRoKSA6IHVuZGVmaW5lZCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBhY3Rpb25zVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBAT3V0cHV0KCkgdGFibGVBY3RpdmF0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgaGFzQXRMZWFzdE9uZVBlcm1pdHRlZEFjdGlvbjogYm9vbGVhbjtcclxuXHJcbiAgcmVhZG9ubHkgY29sdW1uV2lkdGhzITogbnVtYmVyW107XHJcblxyXG4gIHJlYWRvbmx5IHByb3BMaXN0OiBFbnRpdHlQcm9wTGlzdDxSPjtcclxuXHJcbiAgcmVhZG9ubHkgYWN0aW9uTGlzdDogRW50aXR5QWN0aW9uTGlzdDxSPjtcclxuXHJcbiAgcmVhZG9ubHkgdHJhY2tCeUZuOiBUcmFja0J5RnVuY3Rpb248RW50aXR5UHJvcDxSPj4gPSAoXywgaXRlbSkgPT4gaXRlbS5uYW1lO1xyXG5cclxuICBsb2NhbGUgPSBpbmplY3QoTE9DQUxFX0lEKTtcclxuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChDb25maWdTdGF0ZVNlcnZpY2UpO1xyXG4gIGVudGl0eVByb3BUeXBlQ2xhc3NlcyA9IGluamVjdChFTlRJVFlfUFJPUF9UWVBFX0NMQVNTRVMpO1xyXG4gICNpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcbiAgZ2V0SW5qZWN0ZWQgPSB0aGlzLiNpbmplY3Rvci5nZXQuYmluZCh0aGlzLiNpbmplY3Rvcik7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9IHRoaXMuI2luamVjdG9yLmdldChFeHRlbnNpb25zU2VydmljZSk7XHJcbiAgICBjb25zdCBuYW1lID0gdGhpcy4jaW5qZWN0b3IuZ2V0KEVYVEVOU0lPTlNfSURFTlRJRklFUik7XHJcbiAgICB0aGlzLnByb3BMaXN0ID0gZXh0ZW5zaW9ucy5lbnRpdHlQcm9wcy5nZXQobmFtZSkucHJvcHM7XHJcbiAgICB0aGlzLmFjdGlvbkxpc3QgPSBleHRlbnNpb25zWydlbnRpdHlBY3Rpb25zJ10uZ2V0KG5hbWUpXHJcbiAgICAgIC5hY3Rpb25zIGFzIHVua25vd24gYXMgRW50aXR5QWN0aW9uTGlzdDxSPjtcclxuXHJcbiAgICBjb25zdCBwZXJtaXNzaW9uU2VydmljZSA9IHRoaXMuI2luamVjdG9yLmdldChQZXJtaXNzaW9uU2VydmljZSk7XHJcbiAgICB0aGlzLmhhc0F0TGVhc3RPbmVQZXJtaXR0ZWRBY3Rpb24gPVxyXG4gICAgICBwZXJtaXNzaW9uU2VydmljZS5maWx0ZXJJdGVtc0J5UG9saWN5KFxyXG4gICAgICAgIHRoaXMuYWN0aW9uTGlzdC50b0FycmF5KCkubWFwKGFjdGlvbiA9PiAoeyByZXF1aXJlZFBvbGljeTogYWN0aW9uLnBlcm1pc3Npb24gfSkpLFxyXG4gICAgICApLmxlbmd0aCA+IDA7XHJcbiAgICB0aGlzLnNldENvbHVtbldpZHRocyhERUZBVUxUX0FDVElPTlNfQ09MVU1OX1dJRFRIKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q29sdW1uV2lkdGhzKGFjdGlvbnNDb2x1bW46IG51bWJlciB8IHVuZGVmaW5lZCkge1xyXG4gICAgY29uc3Qgd2lkdGhzID0gW2FjdGlvbnNDb2x1bW5dO1xyXG4gICAgdGhpcy5wcm9wTGlzdC5mb3JFYWNoKCh7IHZhbHVlOiBwcm9wIH0pID0+IHtcclxuICAgICAgd2lkdGhzLnB1c2gocHJvcC5jb2x1bW5XaWR0aCk7XHJcbiAgICB9KTtcclxuICAgICh0aGlzLmNvbHVtbldpZHRocyBhcyBhbnkpID0gd2lkdGhzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRlKHZhbHVlOiBEYXRlIHwgdW5kZWZpbmVkLCBmb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgcmV0dXJuIHZhbHVlICYmIGZvcm1hdCA/IGZvcm1hdERhdGUodmFsdWUsIGZvcm1hdCwgdGhpcy5sb2NhbGUpIDogJyc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEljb24odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiB2YWx1ZVxyXG4gICAgICA/ICc8ZGl2IGNsYXNzPVwidGV4dC1zdWNjZXNzXCI+PGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2Rpdj4nXHJcbiAgICAgIDogJzxkaXYgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9kaXY+JztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RW51bShyb3dWYWx1ZTogYW55LCBsaXN0OiBBcnJheTxBQlAuT3B0aW9uPGFueT4+KSB7XHJcbiAgICBpZiAoIWxpc3QgfHwgbGlzdC5sZW5ndGggPCAxKSByZXR1cm4gcm93VmFsdWU7XHJcbiAgICBjb25zdCB7IGtleSB9ID0gbGlzdC5maW5kKCh7IHZhbHVlIH0pID0+IHZhbHVlID09PSByb3dWYWx1ZSkgfHwge307XHJcbiAgICByZXR1cm4ga2V5O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGVudChwcm9wOiBFbnRpdHlQcm9wPFI+LCBkYXRhOiBQcm9wRGF0YSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gcHJvcC52YWx1ZVJlc29sdmVyKGRhdGEpLnBpcGUoXHJcbiAgICAgIG1hcCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChwcm9wLnR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgZVByb3BUeXBlLkJvb2xlYW46XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEljb24odmFsdWUpO1xyXG4gICAgICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZTpcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZSh2YWx1ZSwgZ2V0U2hvcnREYXRlRm9ybWF0KHRoaXMuY29uZmlnKSk7XHJcbiAgICAgICAgICBjYXNlIGVQcm9wVHlwZS5UaW1lOlxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlKHZhbHVlLCBnZXRTaG9ydFRpbWVGb3JtYXQodGhpcy5jb25maWcpKTtcclxuICAgICAgICAgIGNhc2UgZVByb3BUeXBlLkRhdGVUaW1lOlxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlKHZhbHVlLCBnZXRTaG9ydERhdGVTaG9ydFRpbWVGb3JtYXQodGhpcy5jb25maWcpKTtcclxuICAgICAgICAgIGNhc2UgZVByb3BUeXBlLkVudW06XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEVudW0odmFsdWUsIHByb3AuZW51bUxpc3QgfHwgW10pO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgLy8gTW9yZSB0eXBlcyBjYW4gYmUgaGFuZGxlZCBpbiB0aGUgZnV0dXJlXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzZXRQYWdlKHsgb2Zmc2V0IH0pIHtcclxuICAgIHRoaXMubGlzdC5wYWdlID0gb2Zmc2V0O1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoeyBkYXRhLCByZWNvcmRzVG90YWwgfTogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGRhdGE/LmN1cnJlbnRWYWx1ZS5sZW5ndGggPCAxICYmIHJlY29yZHNUb3RhbD8uY3VycmVudFZhbHVlID4gMCkge1xyXG4gICAgICBsZXQgbWF4UGFnZSA9IE1hdGguZmxvb3IoTnVtYmVyKHJlY29yZHNUb3RhbD8uY3VycmVudFZhbHVlIC8gdGhpcy5saXN0Lm1heFJlc3VsdENvdW50KSk7XHJcbiAgICAgIFxyXG4gICAgICBpZihyZWNvcmRzVG90YWw/LmN1cnJlbnRWYWx1ZSA8IHRoaXMubGlzdC5tYXhSZXN1bHRDb3VudCkge1xyXG4gICAgICAgIHRoaXMubGlzdC5wYWdlID0gMDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChyZWNvcmRzVG90YWw/LmN1cnJlbnRWYWx1ZSAlIHRoaXMubGlzdC5tYXhSZXN1bHRDb3VudCA9PT0gMCkge1xyXG4gICAgICAgIG1heFBhZ2UgLT0gMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMubGlzdC5wYWdlIDwgbWF4UGFnZSkge1xyXG4gICAgICAgIHRoaXMubGlzdC5wYWdlID0gdGhpcy5saXN0LnBhZ2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmxpc3QucGFnZSA9IG1heFBhZ2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWRhdGE/LmN1cnJlbnRWYWx1ZSkgcmV0dXJuO1xyXG5cclxuICAgIGlmIChkYXRhLmN1cnJlbnRWYWx1ZS5sZW5ndGggPCAxKSB7XHJcbiAgICAgIHRoaXMubGlzdC50b3RhbENvdW50ID0gdGhpcy5yZWNvcmRzVG90YWw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhID0gZGF0YS5jdXJyZW50VmFsdWUubWFwKChyZWNvcmQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICB0aGlzLnByb3BMaXN0LmZvckVhY2gocHJvcCA9PiB7XHJcbiAgICAgICAgY29uc3QgcHJvcERhdGEgPSB7IGdldEluamVjdGVkOiB0aGlzLmdldEluamVjdGVkLCByZWNvcmQsIGluZGV4IH0gYXMgYW55O1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRDb250ZW50KHByb3AudmFsdWUsIHByb3BEYXRhKTtcclxuXHJcbiAgICAgICAgY29uc3QgcHJvcEtleSA9IGBfJHtwcm9wLnZhbHVlLm5hbWV9YDtcclxuICAgICAgICByZWNvcmRbcHJvcEtleV0gPSB7XHJcbiAgICAgICAgICB2aXNpYmxlOiBwcm9wLnZhbHVlLnZpc2libGUocHJvcERhdGEpLFxyXG4gICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAocHJvcC52YWx1ZS5jb21wb25lbnQpIHtcclxuICAgICAgICAgIHJlY29yZFtwcm9wS2V5XS5pbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHByb3ZpZGU6IFBST1BfREFUQV9TVFJFQU0sXHJcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZTogdmFsdWUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgcGFyZW50OiB0aGlzLiNpbmplY3RvcixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmVjb3JkW3Byb3BLZXldLmNvbXBvbmVudCA9IHByb3AudmFsdWUuY29tcG9uZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gcmVjb3JkO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZ3gtZGF0YXRhYmxlXHJcbiAgZGVmYXVsdFxyXG4gIFtyb3dzXT1cImRhdGFcIlxyXG4gIFtjb3VudF09XCJyZWNvcmRzVG90YWxcIlxyXG4gIFtsaXN0XT1cImxpc3RcIlxyXG4gIFtvZmZzZXRdPVwibGlzdD8ucGFnZVwiXHJcbiAgKHBhZ2UpPVwic2V0UGFnZSgkZXZlbnQpXCJcclxuICAoYWN0aXZhdGUpPVwidGFibGVBY3RpdmF0ZS5lbWl0KCRldmVudClcIlxyXG4+XHJcbiAgQGlmIChhY3Rpb25zVGVtcGxhdGUgfHwgKGFjdGlvbkxpc3QubGVuZ3RoICYmIGhhc0F0TGVhc3RPbmVQZXJtaXR0ZWRBY3Rpb24pKSB7XHJcbiAgPG5neC1kYXRhdGFibGUtY29sdW1uXHJcbiAgICBbbmFtZV09XCJhY3Rpb25zVGV4dCB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICBbbWF4V2lkdGhdPVwiY29sdW1uV2lkdGhzWzBdXCJcclxuICAgIFt3aWR0aF09XCJjb2x1bW5XaWR0aHNbMF1cIlxyXG4gICAgW3NvcnRhYmxlXT1cImZhbHNlXCJcclxuICA+XHJcbiAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1pPVwicm93SW5kZXhcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbnNUZW1wbGF0ZSB8fCBncmlkQWN0aW9uczsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdywgaW5kZXg6IGkgfVwiXHJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNncmlkQWN0aW9ucz5cclxuICAgICAgICA8YWJwLWdyaWQtYWN0aW9ucyBbaW5kZXhdPVwiaVwiIFtyZWNvcmRdPVwicm93XCIgdGV4dD1cIkFicFVpOjpBY3Rpb25zXCI+PC9hYnAtZ3JpZC1hY3Rpb25zPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxyXG4gIH0gQGZvciAocHJvcCBvZiBwcm9wTGlzdDsgdHJhY2sgcHJvcC5uYW1lOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gIDxuZ3gtZGF0YXRhYmxlLWNvbHVtblxyXG4gICAgKmFicFZpc2libGU9XCJwcm9wLmNvbHVtblZpc2libGUoZ2V0SW5qZWN0ZWQpXCJcclxuICAgIFt3aWR0aF09XCJjb2x1bW5XaWR0aHNbaSArIDFdIHx8IDIwMFwiXHJcbiAgICBbbmFtZV09XCJwcm9wLmRpc3BsYXlOYW1lIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgIFtwcm9wXT1cInByb3AubmFtZVwiXHJcbiAgICBbc29ydGFibGVdPVwicHJvcC5zb3J0YWJsZVwiXHJcbiAgPlxyXG4gICAgPG5nLXRlbXBsYXRlIG5neC1kYXRhdGFibGUtaGVhZGVyLXRlbXBsYXRlIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cclxuICAgICAgQGlmIChwcm9wLnRvb2x0aXApIHtcclxuICAgICAgPHNwYW4gW25nYlRvb2x0aXBdPVwicHJvcC50b29sdGlwLnRleHQgfCBhYnBMb2NhbGl6YXRpb25cIiBbcGxhY2VtZW50XT1cInByb3AudG9vbHRpcC5wbGFjZW1lbnQgfHwgJ2F1dG8nXCJcclxuICAgICAgY29udGFpbmVyPVwiYm9keVwiPlxyXG4gICAgICB7eyBjb2x1bW4ubmFtZSB9fSA8aSBjbGFzcz1cImZhIGZhLWluZm8tY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgICB9QGVsc2V7XHJcbiAgICAgIHt7IGNvbHVtbi5uYW1lIH19XHJcbiAgICAgIH1cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1pPVwiaW5kZXhcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKmFicFBlcm1pc3Npb249XCJwcm9wLnBlcm1pc3Npb247IHJ1bkNoYW5nZURldGVjdGlvbjogZmFsc2VcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICphYnBWaXNpYmxlPVwicm93WydfJyArIHByb3AubmFtZV0/LnZpc2libGVcIj5cclxuICAgICAgICAgIEBpZiAoIXJvd1snXycgKyBwcm9wLm5hbWVdLmNvbXBvbmVudCkge1xyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJvd1snXycgKyBwcm9wLm5hbWVdPy52YWx1ZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgIHByb3AuYWN0aW9uICYmIHByb3AuYWN0aW9uKHsgZ2V0SW5qZWN0ZWQ6IGdldEluamVjdGVkLCByZWNvcmQ6IHJvdywgaW5kZXg6IGkgfSlcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiZW50aXR5UHJvcFR5cGVDbGFzc2VzW3Byb3AudHlwZV1cIlxyXG4gICAgICAgICAgICBbY2xhc3MucG9pbnRlcl09XCJwcm9wLmFjdGlvblwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICB9QGVsc2V7XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cIlxyXG4gICAgICAgICAgICAgIHJvd1snXycgKyBwcm9wLm5hbWVdLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgICBpbmplY3Rvcjogcm93WydfJyArIHByb3AubmFtZV0uaW5qZWN0b3JcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcbiAgfVxyXG48L25neC1kYXRhdGFibGU+XHJcbiJdfQ==
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9jb21wb25lbnRzL2V4dGVuc2libGUtdGFibGUvZXh0ZW5zaWJsZS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9jb21wb25lbnRzL2V4dGVuc2libGUtdGFibGUvZXh0ZW5zaWJsZS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUVULE1BQU0sRUFFTixXQUFXLEdBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc3RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE9BQU8sRUFFTCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsaUJBQWlCLEdBQ2xCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsNEJBQTRCLEVBQzVCLHlCQUF5QixHQUMxQixNQUFNLHNCQUFzQixDQUFDO0FBTTlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLGdCQUFnQixHQUNqQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7O0FBRTlFLE1BQU0sNEJBQTRCLEdBQUcsR0FBRyxDQUFDO0FBc0J6QyxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DLElBQ0ksV0FBVyxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFNRCxJQUFhLGtCQUFrQixDQUFDLEtBQWE7UUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQW1CRCxTQUFTLENBQW9CO0lBRzdCO1FBbEJVLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVVwQyxjQUFTLEdBQW1DLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUU1RSxXQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25CLFdBQU0sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM1QywwQkFBcUIsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN6RCxjQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLGdCQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUdwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQzthQUNwRCxPQUF5QyxDQUFDO1FBRTdDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsNEJBQTRCO1lBQy9CLGlCQUFpQixDQUFDLG1CQUFtQixDQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FDakYsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxlQUFlLENBQUMsYUFBaUM7UUFDdkQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsWUFBb0IsR0FBRyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUVPLE9BQU8sQ0FBQyxLQUF1QixFQUFFLE1BQTBCO1FBQ2pFLE9BQU8sS0FBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkUsQ0FBQztJQUVPLE9BQU8sQ0FBQyxLQUFjO1FBQzVCLE9BQU8sS0FBSztZQUNWLENBQUMsQ0FBQyxnRkFBZ0Y7WUFDbEYsQ0FBQyxDQUFDLCtFQUErRSxDQUFDO0lBQ3RGLENBQUM7SUFFTyxPQUFPLENBQUMsUUFBYSxFQUFFLElBQTRCO1FBQ3pELElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsT0FBTyxRQUFRLENBQUM7UUFDOUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25FLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFtQixFQUFFLElBQWM7UUFDNUMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDbEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1YsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xCO29CQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0I7b0JBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDOUQ7b0JBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDOUQ7b0JBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDdkU7b0JBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRDtvQkFDRSxPQUFPLEtBQUssQ0FBQztnQkFDZiwwQ0FBMEM7WUFDNUMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFpQjtRQUNqQyxJQUFJLENBQUMsSUFBSSxFQUFFLFlBQVk7WUFBRSxPQUFPO1FBRWhDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDM0IsTUFBTSxRQUFRLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFTLENBQUM7Z0JBQ3pFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFFcEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0QyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUc7b0JBQ2hCLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7b0JBQ3JDLEtBQUs7aUJBQ04sQ0FBQztnQkFDRixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQzt3QkFDekMsU0FBUyxFQUFFOzRCQUNUO2dDQUNFLE9BQU8sRUFBRSxnQkFBZ0I7Z0NBQ3pCLFFBQVEsRUFBRSxLQUFLOzZCQUNoQjt5QkFDRjt3QkFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVM7cUJBQ3ZCLENBQUMsQ0FBQztvQkFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUNuRCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBcklVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLG9XQ3pFckMsMGxGQW1FQSw0Q0RUSSxtQkFBbUIsZ0ZBQ25CLGtCQUFrQiwrOENBQ2xCLG9CQUFvQiw4SEFDcEIsVUFBVSwyVEFDViw0QkFBNEIseUhBQzVCLHlCQUF5QixrSEFDekIsbUJBQW1CLHlIQUNuQixrQkFBa0IsZ0dBQ2xCLFNBQVMsOENBQ1QsZ0JBQWdCLG9KQUNoQixpQkFBaUI7OzJGQUtSLHdCQUF3QjtrQkFwQnBDLFNBQVM7K0JBQ0Usb0JBQW9CLFlBQ3BCLHNCQUFzQixjQUNwQixJQUFJLFdBQ1A7d0JBQ1AsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsVUFBVTt3QkFDViw0QkFBNEI7d0JBQzVCLHlCQUF5Qjt3QkFDekIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixpQkFBaUI7cUJBQ2xCLG1CQUVnQix1QkFBdUIsQ0FBQyxNQUFNO3dEQUszQyxXQUFXO3NCQURkLEtBQUs7Z0JBU0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVPLGtCQUFrQjtzQkFBOUIsS0FBSztnQkFJRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0LFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIExPQ0FMRV9JRCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVHJhY2tCeUZ1bmN0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIGZvcm1hdERhdGUsIE5nQ29tcG9uZW50T3V0bGV0LCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgTmdiVG9vbHRpcCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgTmd4RGF0YXRhYmxlTW9kdWxlIH0gZnJvbSAnQHN3aW1sYW5lL25neC1kYXRhdGFibGUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBBQlAsXHJcbiAgQ29uZmlnU3RhdGVTZXJ2aWNlLFxyXG4gIGdldFNob3J0RGF0ZUZvcm1hdCxcclxuICBnZXRTaG9ydERhdGVTaG9ydFRpbWVGb3JtYXQsXHJcbiAgZ2V0U2hvcnRUaW1lRm9ybWF0LFxyXG4gIExpc3RTZXJ2aWNlLFxyXG4gIExvY2FsaXphdGlvbk1vZHVsZSxcclxuICBQZXJtaXNzaW9uRGlyZWN0aXZlLFxyXG4gIFBlcm1pc3Npb25TZXJ2aWNlLFxyXG59IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJwVmlzaWJsZURpcmVjdGl2ZSxcclxuICBOZ3hEYXRhdGFibGVEZWZhdWx0RGlyZWN0aXZlLFxyXG4gIE5neERhdGF0YWJsZUxpc3REaXJlY3RpdmUsXHJcbn0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5cclxuaW1wb3J0IHsgZVByb3BUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvcHJvcHMuZW51bSc7XHJcbmltcG9ydCB7IEVudGl0eUFjdGlvbkxpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5LWFjdGlvbnMnO1xyXG5pbXBvcnQgeyBFbnRpdHlQcm9wLCBFbnRpdHlQcm9wTGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy9lbnRpdHktcHJvcHMnO1xyXG5pbXBvcnQgeyBQcm9wRGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9wcm9wcyc7XHJcbmltcG9ydCB7IEV4dGVuc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBFTlRJVFlfUFJPUF9UWVBFX0NMQVNTRVMsXHJcbiAgRVhURU5TSU9OU19JREVOVElGSUVSLFxyXG4gIFBST1BfREFUQV9TVFJFQU0sXHJcbn0gZnJvbSAnLi4vLi4vdG9rZW5zL2V4dGVuc2lvbnMudG9rZW4nO1xyXG5pbXBvcnQgeyBHcmlkQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtYWN0aW9ucy9ncmlkLWFjdGlvbnMuY29tcG9uZW50JztcclxuXHJcbmNvbnN0IERFRkFVTFRfQUNUSU9OU19DT0xVTU5fV0lEVEggPSAxNTA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBleHBvcnRBczogJ2FicEV4dGVuc2libGVUYWJsZScsXHJcbiAgc2VsZWN0b3I6ICdhYnAtZXh0ZW5zaWJsZS10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBBYnBWaXNpYmxlRGlyZWN0aXZlLFxyXG4gICAgTmd4RGF0YXRhYmxlTW9kdWxlLFxyXG4gICAgR3JpZEFjdGlvbnNDb21wb25lbnQsXHJcbiAgICBOZ2JUb29sdGlwLFxyXG4gICAgTmd4RGF0YXRhYmxlRGVmYXVsdERpcmVjdGl2ZSxcclxuICAgIE5neERhdGF0YWJsZUxpc3REaXJlY3RpdmUsXHJcbiAgICBQZXJtaXNzaW9uRGlyZWN0aXZlLFxyXG4gICAgTG9jYWxpemF0aW9uTW9kdWxlLFxyXG4gICAgQXN5bmNQaXBlLFxyXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcclxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2V4dGVuc2libGUtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXh0ZW5zaWJsZVRhYmxlQ29tcG9uZW50PFIgPSBhbnk+IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBwcm90ZWN0ZWQgX2FjdGlvbnNUZXh0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGFjdGlvbnNUZXh0KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2FjdGlvbnNUZXh0ID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aW9uc1RleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zVGV4dCA/PyAodGhpcy5hY3Rpb25MaXN0Lmxlbmd0aCA+IDEgPyAnQWJwVWk6OkFjdGlvbnMnIDogJycpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZGF0YSE6IFJbXTtcclxuICBASW5wdXQoKSBsaXN0ITogTGlzdFNlcnZpY2U7XHJcbiAgQElucHV0KCkgcmVjb3Jkc1RvdGFsITogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKSBzZXQgYWN0aW9uc0NvbHVtbldpZHRoKHdpZHRoOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2V0Q29sdW1uV2lkdGhzKHdpZHRoID8gTnVtYmVyKHdpZHRoKSA6IHVuZGVmaW5lZCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBhY3Rpb25zVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBAT3V0cHV0KCkgdGFibGVBY3RpdmF0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgaGFzQXRMZWFzdE9uZVBlcm1pdHRlZEFjdGlvbjogYm9vbGVhbjtcclxuXHJcbiAgcmVhZG9ubHkgY29sdW1uV2lkdGhzITogbnVtYmVyW107XHJcblxyXG4gIHJlYWRvbmx5IHByb3BMaXN0OiBFbnRpdHlQcm9wTGlzdDxSPjtcclxuXHJcbiAgcmVhZG9ubHkgYWN0aW9uTGlzdDogRW50aXR5QWN0aW9uTGlzdDxSPjtcclxuXHJcbiAgcmVhZG9ubHkgdHJhY2tCeUZuOiBUcmFja0J5RnVuY3Rpb248RW50aXR5UHJvcDxSPj4gPSAoXywgaXRlbSkgPT4gaXRlbS5uYW1lO1xyXG5cclxuICBsb2NhbGUgPSBpbmplY3QoTE9DQUxFX0lEKTtcclxuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChDb25maWdTdGF0ZVNlcnZpY2UpO1xyXG4gIGVudGl0eVByb3BUeXBlQ2xhc3NlcyA9IGluamVjdChFTlRJVFlfUFJPUF9UWVBFX0NMQVNTRVMpO1xyXG4gICNpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcbiAgZ2V0SW5qZWN0ZWQgPSB0aGlzLiNpbmplY3Rvci5nZXQuYmluZCh0aGlzLiNpbmplY3Rvcik7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9IHRoaXMuI2luamVjdG9yLmdldChFeHRlbnNpb25zU2VydmljZSk7XHJcbiAgICBjb25zdCBuYW1lID0gdGhpcy4jaW5qZWN0b3IuZ2V0KEVYVEVOU0lPTlNfSURFTlRJRklFUik7XHJcbiAgICB0aGlzLnByb3BMaXN0ID0gZXh0ZW5zaW9ucy5lbnRpdHlQcm9wcy5nZXQobmFtZSkucHJvcHM7XHJcbiAgICB0aGlzLmFjdGlvbkxpc3QgPSBleHRlbnNpb25zWydlbnRpdHlBY3Rpb25zJ10uZ2V0KG5hbWUpXHJcbiAgICAgIC5hY3Rpb25zIGFzIHVua25vd24gYXMgRW50aXR5QWN0aW9uTGlzdDxSPjtcclxuXHJcbiAgICBjb25zdCBwZXJtaXNzaW9uU2VydmljZSA9IHRoaXMuI2luamVjdG9yLmdldChQZXJtaXNzaW9uU2VydmljZSk7XHJcbiAgICB0aGlzLmhhc0F0TGVhc3RPbmVQZXJtaXR0ZWRBY3Rpb24gPVxyXG4gICAgICBwZXJtaXNzaW9uU2VydmljZS5maWx0ZXJJdGVtc0J5UG9saWN5KFxyXG4gICAgICAgIHRoaXMuYWN0aW9uTGlzdC50b0FycmF5KCkubWFwKGFjdGlvbiA9PiAoeyByZXF1aXJlZFBvbGljeTogYWN0aW9uLnBlcm1pc3Npb24gfSkpLFxyXG4gICAgICApLmxlbmd0aCA+IDA7XHJcbiAgICB0aGlzLnNldENvbHVtbldpZHRocyhERUZBVUxUX0FDVElPTlNfQ09MVU1OX1dJRFRIKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q29sdW1uV2lkdGhzKGFjdGlvbnNDb2x1bW46IG51bWJlciB8IHVuZGVmaW5lZCkge1xyXG4gICAgY29uc3Qgd2lkdGhzID0gW2FjdGlvbnNDb2x1bW5dO1xyXG4gICAgdGhpcy5wcm9wTGlzdC5mb3JFYWNoKCh7IHZhbHVlOiBwcm9wIH0pID0+IHtcclxuICAgICAgd2lkdGhzLnB1c2gocHJvcC5jb2x1bW5XaWR0aCk7XHJcbiAgICB9KTtcclxuICAgICh0aGlzLmNvbHVtbldpZHRocyBhcyBhbnkpID0gd2lkdGhzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRlKHZhbHVlOiBEYXRlIHwgdW5kZWZpbmVkLCBmb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgcmV0dXJuIHZhbHVlICYmIGZvcm1hdCA/IGZvcm1hdERhdGUodmFsdWUsIGZvcm1hdCwgdGhpcy5sb2NhbGUpIDogJyc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEljb24odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiB2YWx1ZVxyXG4gICAgICA/ICc8ZGl2IGNsYXNzPVwidGV4dC1zdWNjZXNzXCI+PGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2Rpdj4nXHJcbiAgICAgIDogJzxkaXYgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9kaXY+JztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RW51bShyb3dWYWx1ZTogYW55LCBsaXN0OiBBcnJheTxBQlAuT3B0aW9uPGFueT4+KSB7XHJcbiAgICBpZiAoIWxpc3QgfHwgbGlzdC5sZW5ndGggPCAxKSByZXR1cm4gcm93VmFsdWU7XHJcbiAgICBjb25zdCB7IGtleSB9ID0gbGlzdC5maW5kKCh7IHZhbHVlIH0pID0+IHZhbHVlID09PSByb3dWYWx1ZSkgfHwge307XHJcbiAgICByZXR1cm4ga2V5O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGVudChwcm9wOiBFbnRpdHlQcm9wPFI+LCBkYXRhOiBQcm9wRGF0YSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gcHJvcC52YWx1ZVJlc29sdmVyKGRhdGEpLnBpcGUoXHJcbiAgICAgIG1hcCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChwcm9wLnR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgZVByb3BUeXBlLkJvb2xlYW46XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEljb24odmFsdWUpO1xyXG4gICAgICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZTpcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZSh2YWx1ZSwgZ2V0U2hvcnREYXRlRm9ybWF0KHRoaXMuY29uZmlnKSk7XHJcbiAgICAgICAgICBjYXNlIGVQcm9wVHlwZS5UaW1lOlxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlKHZhbHVlLCBnZXRTaG9ydFRpbWVGb3JtYXQodGhpcy5jb25maWcpKTtcclxuICAgICAgICAgIGNhc2UgZVByb3BUeXBlLkRhdGVUaW1lOlxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlKHZhbHVlLCBnZXRTaG9ydERhdGVTaG9ydFRpbWVGb3JtYXQodGhpcy5jb25maWcpKTtcclxuICAgICAgICAgIGNhc2UgZVByb3BUeXBlLkVudW06XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEVudW0odmFsdWUsIHByb3AuZW51bUxpc3QgfHwgW10pO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgLy8gTW9yZSB0eXBlcyBjYW4gYmUgaGFuZGxlZCBpbiB0aGUgZnV0dXJlXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyh7IGRhdGEgfTogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKCFkYXRhPy5jdXJyZW50VmFsdWUpIHJldHVybjtcclxuXHJcbiAgICBpZiAoZGF0YS5jdXJyZW50VmFsdWUubGVuZ3RoIDwgMSkge1xyXG4gICAgICB0aGlzLmxpc3QudG90YWxDb3VudCA9IHRoaXMucmVjb3Jkc1RvdGFsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YSA9IGRhdGEuY3VycmVudFZhbHVlLm1hcCgocmVjb3JkOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgdGhpcy5wcm9wTGlzdC5mb3JFYWNoKHByb3AgPT4ge1xyXG4gICAgICAgIGNvbnN0IHByb3BEYXRhID0geyBnZXRJbmplY3RlZDogdGhpcy5nZXRJbmplY3RlZCwgcmVjb3JkLCBpbmRleCB9IGFzIGFueTtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0Q29udGVudChwcm9wLnZhbHVlLCBwcm9wRGF0YSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHByb3BLZXkgPSBgXyR7cHJvcC52YWx1ZS5uYW1lfWA7XHJcbiAgICAgICAgcmVjb3JkW3Byb3BLZXldID0ge1xyXG4gICAgICAgICAgdmlzaWJsZTogcHJvcC52YWx1ZS52aXNpYmxlKHByb3BEYXRhKSxcclxuICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKHByb3AudmFsdWUuY29tcG9uZW50KSB7XHJcbiAgICAgICAgICByZWNvcmRbcHJvcEtleV0uaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xyXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBQUk9QX0RBVEFfU1RSRUFNLFxyXG4gICAgICAgICAgICAgICAgdXNlVmFsdWU6IHZhbHVlLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy4jaW5qZWN0b3IsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJlY29yZFtwcm9wS2V5XS5jb21wb25lbnQgPSBwcm9wLnZhbHVlLmNvbXBvbmVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIHJlY29yZDtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8bmd4LWRhdGF0YWJsZVxyXG4gIGRlZmF1bHRcclxuICBbcm93c109XCJkYXRhXCJcclxuICBbY291bnRdPVwicmVjb3Jkc1RvdGFsXCJcclxuICBbbGlzdF09XCJsaXN0XCJcclxuICAoYWN0aXZhdGUpPVwidGFibGVBY3RpdmF0ZS5lbWl0KCRldmVudClcIlxyXG4+XHJcbiAgQGlmIChhY3Rpb25zVGVtcGxhdGUgfHwgKGFjdGlvbkxpc3QubGVuZ3RoICYmIGhhc0F0TGVhc3RPbmVQZXJtaXR0ZWRBY3Rpb24pKSB7XHJcbiAgPG5neC1kYXRhdGFibGUtY29sdW1uXHJcbiAgICBbbmFtZV09XCJhY3Rpb25zVGV4dCB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICBbbWF4V2lkdGhdPVwiY29sdW1uV2lkdGhzWzBdXCJcclxuICAgIFt3aWR0aF09XCJjb2x1bW5XaWR0aHNbMF1cIlxyXG4gICAgW3NvcnRhYmxlXT1cImZhbHNlXCJcclxuICA+XHJcbiAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1pPVwicm93SW5kZXhcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbnNUZW1wbGF0ZSB8fCBncmlkQWN0aW9uczsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdywgaW5kZXg6IGkgfVwiXHJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNncmlkQWN0aW9ucz5cclxuICAgICAgICA8YWJwLWdyaWQtYWN0aW9ucyBbaW5kZXhdPVwiaVwiIFtyZWNvcmRdPVwicm93XCIgdGV4dD1cIkFicFVpOjpBY3Rpb25zXCI+PC9hYnAtZ3JpZC1hY3Rpb25zPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxyXG4gIH0gQGZvciAocHJvcCBvZiBwcm9wTGlzdDsgdHJhY2sgcHJvcC5uYW1lOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gIDxuZ3gtZGF0YXRhYmxlLWNvbHVtblxyXG4gICAgKmFicFZpc2libGU9XCJwcm9wLmNvbHVtblZpc2libGUoZ2V0SW5qZWN0ZWQpXCJcclxuICAgIFt3aWR0aF09XCJjb2x1bW5XaWR0aHNbaSArIDFdIHx8IDIwMFwiXHJcbiAgICBbbmFtZV09XCJwcm9wLmRpc3BsYXlOYW1lIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgIFtwcm9wXT1cInByb3AubmFtZVwiXHJcbiAgICBbc29ydGFibGVdPVwicHJvcC5zb3J0YWJsZVwiXHJcbiAgPlxyXG4gICAgPG5nLXRlbXBsYXRlIG5neC1kYXRhdGFibGUtaGVhZGVyLXRlbXBsYXRlIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cclxuICAgICAgQGlmIChwcm9wLnRvb2x0aXApIHtcclxuICAgICAgPHNwYW4gW25nYlRvb2x0aXBdPVwicHJvcC50b29sdGlwLnRleHQgfCBhYnBMb2NhbGl6YXRpb25cIiBbcGxhY2VtZW50XT1cInByb3AudG9vbHRpcC5wbGFjZW1lbnQgfHwgJ2F1dG8nXCJcclxuICAgICAgY29udGFpbmVyPVwiYm9keVwiPlxyXG4gICAgICB7eyBjb2x1bW4ubmFtZSB9fSA8aSBjbGFzcz1cImZhIGZhLWluZm8tY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgICB9QGVsc2V7XHJcbiAgICAgIHt7IGNvbHVtbi5uYW1lIH19XHJcbiAgICAgIH1cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1pPVwiaW5kZXhcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKmFicFBlcm1pc3Npb249XCJwcm9wLnBlcm1pc3Npb247IHJ1bkNoYW5nZURldGVjdGlvbjogZmFsc2VcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICphYnBWaXNpYmxlPVwicm93WydfJyArIHByb3AubmFtZV0/LnZpc2libGVcIj5cclxuICAgICAgICAgIEBpZiAoIXJvd1snXycgKyBwcm9wLm5hbWVdLmNvbXBvbmVudCkge1xyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJvd1snXycgKyBwcm9wLm5hbWVdPy52YWx1ZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgIHByb3AuYWN0aW9uICYmIHByb3AuYWN0aW9uKHsgZ2V0SW5qZWN0ZWQ6IGdldEluamVjdGVkLCByZWNvcmQ6IHJvdywgaW5kZXg6IGkgfSlcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiZW50aXR5UHJvcFR5cGVDbGFzc2VzW3Byb3AudHlwZV1cIlxyXG4gICAgICAgICAgICBbY2xhc3MucG9pbnRlcl09XCJwcm9wLmFjdGlvblwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICB9QGVsc2V7XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cIlxyXG4gICAgICAgICAgICAgIHJvd1snXycgKyBwcm9wLm5hbWVdLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgICBpbmplY3Rvcjogcm93WydfJyArIHByb3AubmFtZV0uaW5qZWN0b3JcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcbiAgfVxyXG48L25neC1kYXRhdGFibGU+XHJcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ListService } from '@abp/ng.core';
|
|
2
1
|
import { EventEmitter, OnChanges, SimpleChanges, TemplateRef, TrackByFunction } from '@angular/core';
|
|
3
2
|
import { Observable } from 'rxjs';
|
|
3
|
+
import { ListService } from '@abp/ng.core';
|
|
4
4
|
import { EntityActionList } from '../../models/entity-actions';
|
|
5
5
|
import { EntityProp, EntityPropList } from '../../models/entity-props';
|
|
6
6
|
import { PropData } from '../../models/props';
|
|
@@ -46,10 +46,7 @@ export declare class ExtensibleTableComponent<R = any> implements OnChanges {
|
|
|
46
46
|
private getIcon;
|
|
47
47
|
private getEnum;
|
|
48
48
|
getContent(prop: EntityProp<R>, data: PropData): Observable<string>;
|
|
49
|
-
|
|
50
|
-
offset: any;
|
|
51
|
-
}): void;
|
|
52
|
-
ngOnChanges({ data, recordsTotal }: SimpleChanges): void;
|
|
49
|
+
ngOnChanges({ data }: SimpleChanges): void;
|
|
53
50
|
static ɵfac: i0.ɵɵFactoryDeclaration<ExtensibleTableComponent<any>, never>;
|
|
54
51
|
static ɵcmp: i0.ɵɵComponentDeclaration<ExtensibleTableComponent<any>, "abp-extensible-table", ["abpExtensibleTable"], { "actionsText": { "alias": "actionsText"; "required": false; }; "data": { "alias": "data"; "required": false; }; "list": { "alias": "list"; "required": false; }; "recordsTotal": { "alias": "recordsTotal"; "required": false; }; "actionsColumnWidth": { "alias": "actionsColumnWidth"; "required": false; }; "actionsTemplate": { "alias": "actionsTemplate"; "required": false; }; }, { "tableActivate": "tableActivate"; }, never, never, true, never>;
|
|
55
52
|
}
|
|
@@ -978,26 +978,7 @@ class ExtensibleTableComponent {
|
|
|
978
978
|
}
|
|
979
979
|
}));
|
|
980
980
|
}
|
|
981
|
-
|
|
982
|
-
this.list.page = offset;
|
|
983
|
-
}
|
|
984
|
-
ngOnChanges({ data, recordsTotal }) {
|
|
985
|
-
if (data?.currentValue.length < 1 && recordsTotal?.currentValue > 0) {
|
|
986
|
-
let maxPage = Math.floor(Number(recordsTotal?.currentValue / this.list.maxResultCount));
|
|
987
|
-
if (recordsTotal?.currentValue < this.list.maxResultCount) {
|
|
988
|
-
this.list.page = 0;
|
|
989
|
-
return;
|
|
990
|
-
}
|
|
991
|
-
if (recordsTotal?.currentValue % this.list.maxResultCount === 0) {
|
|
992
|
-
maxPage -= 1;
|
|
993
|
-
}
|
|
994
|
-
if (this.list.page < maxPage) {
|
|
995
|
-
this.list.page = this.list.page;
|
|
996
|
-
return;
|
|
997
|
-
}
|
|
998
|
-
this.list.page = maxPage;
|
|
999
|
-
return;
|
|
1000
|
-
}
|
|
981
|
+
ngOnChanges({ data }) {
|
|
1001
982
|
if (!data?.currentValue)
|
|
1002
983
|
return;
|
|
1003
984
|
if (data.currentValue.length < 1) {
|
|
@@ -1029,7 +1010,7 @@ class ExtensibleTableComponent {
|
|
|
1029
1010
|
});
|
|
1030
1011
|
}
|
|
1031
1012
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ExtensibleTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1032
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: ExtensibleTableComponent, isStandalone: true, selector: "abp-extensible-table", inputs: { actionsText: "actionsText", data: "data", list: "list", recordsTotal: "recordsTotal", actionsColumnWidth: "actionsColumnWidth", actionsTemplate: "actionsTemplate" }, outputs: { tableActivate: "tableActivate" }, exportAs: ["abpExtensibleTable"], usesOnChanges: true, ngImport: i0, template: "<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n
|
|
1013
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: ExtensibleTableComponent, isStandalone: true, selector: "abp-extensible-table", inputs: { actionsText: "actionsText", data: "data", list: "list", recordsTotal: "recordsTotal", actionsColumnWidth: "actionsColumnWidth", actionsTemplate: "actionsTemplate" }, outputs: { tableActivate: "tableActivate" }, exportAs: ["abpExtensibleTable"], usesOnChanges: true, ngImport: i0, template: "<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n (activate)=\"tableActivate.emit($event)\"\r\n>\r\n @if (actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)) {\r\n <ngx-datatable-column\r\n [name]=\"actionsText | abpLocalization\"\r\n [maxWidth]=\"columnWidths[0]\"\r\n [width]=\"columnWidths[0]\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n </ng-template>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n } @for (prop of propList; track prop.name; let i = $index) {\r\n <ngx-datatable-column\r\n *abpVisible=\"prop.columnVisible(getInjected)\"\r\n [width]=\"columnWidths[i + 1] || 200\"\r\n [name]=\"prop.displayName | abpLocalization\"\r\n [prop]=\"prop.name\"\r\n [sortable]=\"prop.sortable\"\r\n >\r\n <ng-template ngx-datatable-header-template let-column=\"column\">\r\n @if (prop.tooltip) {\r\n <span [ngbTooltip]=\"prop.tooltip.text | abpLocalization\" [placement]=\"prop.tooltip.placement || 'auto'\"\r\n container=\"body\">\r\n {{ column.name }} <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n </span>\r\n }@else{\r\n {{ column.name }}\r\n }\r\n </ng-template>\r\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\r\n <ng-container *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n <ng-container *abpVisible=\"row['_' + prop.name]?.visible\">\r\n @if (!row['_' + prop.name].component) {\r\n <div\r\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n }@else{\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n row['_' + prop.name].component;\r\n injector: row['_' + prop.name].injector\r\n \"\r\n ></ng-container>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n</ngx-datatable>\r\n", dependencies: [{ kind: "directive", type: AbpVisibleDirective, selector: "[abpVisible]", inputs: ["abpVisible"] }, { kind: "ngmodule", type: NgxDatatableModule }, { kind: "component", type: i1$1.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i1$1.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { kind: "directive", type: i1$1.DataTableColumnHeaderDirective, selector: "[ngx-datatable-header-template]" }, { kind: "directive", type: i1$1.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "component", type: GridActionsComponent, selector: "abp-grid-actions", inputs: ["icon", "index", "text"], exportAs: ["abpGridActions"] }, { kind: "directive", type: NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: NgxDatatableDefaultDirective, selector: "ngx-datatable[default]", inputs: ["class"], exportAs: ["ngxDatatableDefault"] }, { kind: "directive", type: NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { kind: "directive", type: PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i2$1.LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1033
1014
|
}
|
|
1034
1015
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ExtensibleTableComponent, decorators: [{
|
|
1035
1016
|
type: Component,
|
|
@@ -1045,7 +1026,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
1045
1026
|
AsyncPipe,
|
|
1046
1027
|
NgTemplateOutlet,
|
|
1047
1028
|
NgComponentOutlet,
|
|
1048
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n
|
|
1029
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n (activate)=\"tableActivate.emit($event)\"\r\n>\r\n @if (actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)) {\r\n <ngx-datatable-column\r\n [name]=\"actionsText | abpLocalization\"\r\n [maxWidth]=\"columnWidths[0]\"\r\n [width]=\"columnWidths[0]\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n </ng-template>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n } @for (prop of propList; track prop.name; let i = $index) {\r\n <ngx-datatable-column\r\n *abpVisible=\"prop.columnVisible(getInjected)\"\r\n [width]=\"columnWidths[i + 1] || 200\"\r\n [name]=\"prop.displayName | abpLocalization\"\r\n [prop]=\"prop.name\"\r\n [sortable]=\"prop.sortable\"\r\n >\r\n <ng-template ngx-datatable-header-template let-column=\"column\">\r\n @if (prop.tooltip) {\r\n <span [ngbTooltip]=\"prop.tooltip.text | abpLocalization\" [placement]=\"prop.tooltip.placement || 'auto'\"\r\n container=\"body\">\r\n {{ column.name }} <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n </span>\r\n }@else{\r\n {{ column.name }}\r\n }\r\n </ng-template>\r\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\r\n <ng-container *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n <ng-container *abpVisible=\"row['_' + prop.name]?.visible\">\r\n @if (!row['_' + prop.name].component) {\r\n <div\r\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n }@else{\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n row['_' + prop.name].component;\r\n injector: row['_' + prop.name].injector\r\n \"\r\n ></ng-container>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n</ngx-datatable>\r\n" }]
|
|
1049
1030
|
}], ctorParameters: () => [], propDecorators: { actionsText: [{
|
|
1050
1031
|
type: Input
|
|
1051
1032
|
}], data: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abp-ng.components-extensible.mjs","sources":["../../../../packages/components/extensible/src/lib/models/props.ts","../../../../packages/components/extensible/src/lib/models/form-props.ts","../../../../packages/components/extensible/src/lib/utils/factory.util.ts","../../../../packages/components/extensible/src/lib/components/date-time-picker/extensible-date-time-picker.component.ts","../../../../packages/components/extensible/src/lib/tokens/extensions.token.ts","../../../../packages/components/extensible/src/lib/constants/extra-properties.ts","../../../../packages/components/extensible/src/lib/utils/typeahead.util.ts","../../../../packages/components/extensible/src/lib/services/extensible-form-prop.service.ts","../../../../packages/components/extensible/src/lib/pipes/create-injector.pipe.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.html","../../../../packages/components/extensible/src/lib/models/actions.ts","../../../../packages/components/extensible/src/lib/models/entity-actions.ts","../../../../packages/components/extensible/src/lib/models/entity-props.ts","../../../../packages/components/extensible/src/lib/models/toolbar-actions.ts","../../../../packages/components/extensible/src/lib/services/extensions.service.ts","../../../../packages/components/extensible/src/lib/directives/prop-data.directive.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.html","../../../../packages/components/extensible/src/lib/components/abstract-actions/abstract-actions.component.ts","../../../../packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.ts","../../../../packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.html","../../../../packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html","../../../../packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.ts","../../../../packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.html","../../../../packages/components/extensible/src/lib/tokens/extensible-form-view-provider.token.ts","../../../../packages/components/extensible/src/lib/utils/actions.util.ts","../../../../packages/components/extensible/src/lib/utils/form-props.util.ts","../../../../packages/components/extensible/src/lib/utils/props.util.ts","../../../../packages/components/extensible/src/lib/utils/enum.util.ts","../../../../packages/components/extensible/src/lib/utils/localization.util.ts","../../../../packages/components/extensible/src/lib/utils/validation.util.ts","../../../../packages/components/extensible/src/lib/utils/state.util.ts","../../../../packages/components/extensible/src/lib/extensible.module.ts","../../../../packages/components/extensible/src/abp-ng.components-extensible.ts"],"sourcesContent":["import { LinkedList } from '@abp/utils';\r\nimport { InjectFlags, InjectionToken, InjectOptions, Type } from '@angular/core';\r\nimport { O } from 'ts-toolbelt';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { FormPropTooltip } from './form-props';\r\n\r\nexport abstract class PropList<R = any, A = Prop<R>> extends LinkedList<A> {}\r\n\r\nexport abstract class PropData<R = any> {\r\n abstract getInjected: <T>(\r\n token: Type<T> | InjectionToken<T>,\r\n notFoundValue?: T,\r\n options?: InjectOptions | InjectFlags,\r\n ) => T;\r\n index?: number;\r\n abstract record: R;\r\n\r\n get data(): ReadonlyPropData<R> {\r\n return {\r\n getInjected: this.getInjected,\r\n index: this.index,\r\n record: this.record,\r\n };\r\n }\r\n}\r\n\r\nexport type ReadonlyPropData<R = any> = O.Readonly<Omit<PropData<R>, 'data'>>;\r\n\r\nexport abstract class Prop<R = any> {\r\n constructor(\r\n public readonly type: ePropType,\r\n public readonly name: string,\r\n public readonly displayName: string,\r\n public readonly permission: string,\r\n public readonly visible: PropPredicate<R> = _ => true,\r\n public readonly isExtra = false,\r\n public readonly template?: Type<any>,\r\n public readonly className?: string,\r\n public readonly formText?: string,\r\n public readonly tooltip?: FormPropTooltip,\r\n public readonly displayTextResolver?: PropDisplayTextResolver<R>,\r\n ) {\r\n this.displayName = this.displayName || this.name;\r\n }\r\n}\r\n\r\nexport type PropCallback<T, R = any> = (data: Omit<PropData<T>, 'data'>, auxData?: any) => R;\r\nexport type PropPredicate<T> = (data?: Omit<PropData<T>, 'data'>, auxData?: any) => boolean;\r\nexport type PropDisplayTextResolver<T> = (data?: Omit<PropData<T>, 'data'>) => string;\r\n\r\nexport abstract class PropsFactory<C extends Props<any>> {\r\n protected abstract _ctor: Type<C>;\r\n private contributorCallbacks: PropContributorCallbacks<InferredPropList<C>> = {};\r\n\r\n get(name: string): C {\r\n this.contributorCallbacks[name] = this.contributorCallbacks[name] || [];\r\n\r\n return new this._ctor(this.contributorCallbacks[name]);\r\n }\r\n}\r\n\r\nexport abstract class Props<L extends PropList<any, InferredProp<L>>> {\r\n protected abstract _ctor: Type<L>;\r\n\r\n get props(): L {\r\n const propList = new this._ctor();\r\n\r\n this.callbackList.forEach(callback => callback(propList));\r\n\r\n return propList;\r\n }\r\n\r\n constructor(private readonly callbackList: PropContributorCallback<L>[]) {}\r\n\r\n addContributor(contributeCallback: PropContributorCallback<L>) {\r\n this.callbackList.push(contributeCallback);\r\n }\r\n\r\n clearContributors() {\r\n while (this.callbackList.length) this.callbackList.pop();\r\n }\r\n}\r\n\r\nexport type PropContributorCallbacks<L extends PropList<any, InferredProp<L>>> = Record<\r\n string,\r\n PropContributorCallback<L>[]\r\n>;\r\n\r\nexport type PropContributorCallback<L extends PropList<any, InferredProp<L>>> = (\r\n propList: L,\r\n) => any;\r\n\r\ntype InferredPropList<C> = C extends Props<infer L> ? L : never;\r\nexport type InferredProp<T> = T extends PropList<any, infer U> ? U : T;\r\n","import { ABP } from '@abp/ng.core';\r\nimport { Injector, Type } from '@angular/core';\r\nimport { AsyncValidatorFn, ValidatorFn } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { O } from 'ts-toolbelt';\r\nimport {\r\n Prop,\r\n PropCallback,\r\n PropContributorCallback,\r\n PropContributorCallbacks,\r\n PropData,\r\n PropDisplayTextResolver,\r\n PropList,\r\n PropPredicate,\r\n Props,\r\n PropsFactory,\r\n} from './props';\r\n\r\nexport class FormPropList<R = any> extends PropList<R, FormProp<R>> {}\r\n\r\nexport class FormProps<R = any> extends Props<PropList<R, FormProp<R>>> {\r\n protected _ctor: Type<FormPropList<R>> = FormPropList;\r\n}\r\n\r\nexport interface FormPropGroup {\r\n name: string;\r\n className?: string;\r\n}\r\n\r\nexport interface FormPropTooltip {\r\n text: string;\r\n placement?: 'top' | 'end' | 'bottom' | 'start';\r\n}\r\n\r\nexport class GroupedFormPropList<R = any> {\r\n public readonly items: GroupedFormPropItem[] = [];\r\n count = 1;\r\n addItem(item: FormProp<R>) {\r\n const groupName = item.group?.name;\r\n let group = this.items.find(i => i.group?.name === groupName);\r\n if (group) {\r\n group.formPropList.addTail(item);\r\n } else {\r\n group = {\r\n formPropList: new FormPropList(),\r\n group: item.group || { name: `default${this.count++}`, className: item.group?.className },\r\n };\r\n group.formPropList.addHead(item);\r\n this.items.push(group);\r\n }\r\n }\r\n}\r\n\r\nexport interface GroupedFormPropItem {\r\n group?: FormPropGroup;\r\n formPropList: FormPropList;\r\n}\r\n\r\nexport class CreateFormPropsFactory<R = any> extends PropsFactory<FormProps<R>> {\r\n protected _ctor: Type<FormProps<R>> = FormProps;\r\n}\r\n\r\nexport class EditFormPropsFactory<R = any> extends PropsFactory<FormProps<R>> {\r\n protected _ctor: Type<FormProps<R>> = FormProps;\r\n}\r\n\r\nexport class FormProp<R = any> extends Prop<R> {\r\n readonly validators: PropCallback<R, ValidatorFn[]>;\r\n readonly asyncValidators: PropCallback<R, AsyncValidatorFn[]>;\r\n readonly disabled: PropPredicate<R>;\r\n readonly readonly: PropPredicate<R>;\r\n readonly autocomplete: string;\r\n readonly defaultValue: boolean | number | string | Date | Array<string>;\r\n readonly options: PropCallback<R, Observable<ABP.Option<any>[]>> | undefined;\r\n readonly id: string | undefined;\r\n readonly template?: Type<any>;\r\n readonly className?: string;\r\n readonly group?: FormPropGroup | undefined;\r\n readonly displayTextResolver?: PropDisplayTextResolver<R>;\r\n readonly formText?: string;\r\n readonly tooltip?: FormPropTooltip;\r\n\r\n constructor(options: FormPropOptions<R>) {\r\n super(\r\n options.type,\r\n options.name,\r\n options.displayName || '',\r\n options.permission || '',\r\n options.visible,\r\n options.isExtra,\r\n options.template,\r\n options.className,\r\n options.formText,\r\n options.tooltip,\r\n );\r\n this.group = options.group;\r\n this.className = options.className;\r\n this.formText = options.formText;\r\n this.tooltip = options.tooltip;\r\n this.asyncValidators = options.asyncValidators || (_ => []);\r\n this.validators = options.validators || (_ => []);\r\n this.disabled = options.disabled || (_ => false);\r\n this.readonly = options.readonly || (_ => false);\r\n this.autocomplete = options.autocomplete || 'off';\r\n this.options = options.options;\r\n this.id = options.id || options.name;\r\n const defaultValue = options.defaultValue;\r\n this.defaultValue = isFalsyValue(defaultValue) ? (defaultValue as number) : defaultValue || '';\r\n this.displayTextResolver = options.displayTextResolver;\r\n }\r\n\r\n static create<R = any>(options: FormPropOptions<R>) {\r\n return new FormProp<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: FormPropOptions<R>[]) {\r\n return arrayOfOptions.map(FormProp.create);\r\n }\r\n}\r\n\r\nexport class FormPropData<R = any> extends PropData<R> {\r\n getInjected: PropData<R>['getInjected'];\r\n\r\n constructor(injector: Injector, public readonly record: R) {\r\n super();\r\n\r\n this.getInjected = injector.get.bind(injector);\r\n }\r\n}\r\n\r\nexport type FormPropOptions<R = any> = O.Optional<\r\n O.Writable<FormProp<R>>,\r\n | 'permission'\r\n | 'visible'\r\n | 'displayName'\r\n | 'isExtra'\r\n | 'validators'\r\n | 'asyncValidators'\r\n | 'disabled'\r\n | 'readonly'\r\n | 'autocomplete'\r\n | 'defaultValue'\r\n | 'options'\r\n | 'id'\r\n | 'displayTextResolver'\r\n | 'formText'\r\n | 'tooltip'\r\n>;\r\n\r\nexport type CreateFormPropDefaults<R = any> = Record<string, FormProp<R>[]>;\r\nexport type CreateFormPropContributorCallback<R = any> = PropContributorCallback<FormPropList<R>>;\r\nexport type CreateFormPropContributorCallbacks<R = any> = PropContributorCallbacks<FormPropList<R>>;\r\nexport type EditFormPropDefaults<R = any> = Record<string, FormProp<R>[]>;\r\nexport type EditFormPropContributorCallback<R = any> = PropContributorCallback<FormPropList<R>>;\r\nexport type EditFormPropContributorCallbacks<R = any> = PropContributorCallbacks<FormPropList<R>>;\r\n\r\nfunction isFalsyValue(defaultValue?: FormProp['defaultValue']): boolean {\r\n return [0, '', false].indexOf(defaultValue as any) > -1;\r\n}\r\n","export function selfFactory(dependency?: any) {\r\n return dependency;\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n Optional,\r\n SkipSelf,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ControlContainer, ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n NgbDateAdapter,\r\n NgbDatepickerModule,\r\n NgbInputDatepicker,\r\n NgbTimeAdapter,\r\n NgbTimepicker,\r\n NgbTimepickerModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { FormProp } from '../../models/form-props';\r\nimport { selfFactory } from '../../utils/factory.util';\r\nimport { DateTimeAdapter } from '@abp/ng.theme.shared';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n exportAs: 'abpExtensibleDateTimePicker',\r\n standalone: true,\r\n imports: [CommonModule, NgbDatepickerModule, ReactiveFormsModule, NgbTimepickerModule],\r\n selector: 'abp-extensible-date-time-picker',\r\n template: `\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (ngModelChange)=\"setTime($event)\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n <ngb-timepicker\r\n #timepicker\r\n [formControlName]=\"prop.name\"\r\n (ngModelChange)=\"setDate($event)\"\r\n [meridian]=\"meridian\"\r\n ></ngb-timepicker>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n {\r\n provide: ControlContainer,\r\n useFactory: selfFactory,\r\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n },\r\n {\r\n provide: NgbDateAdapter,\r\n useClass: DateTimeAdapter,\r\n },\r\n {\r\n provide: NgbTimeAdapter,\r\n useClass: DateTimeAdapter,\r\n },\r\n ],\r\n})\r\nexport class ExtensibleDateTimePickerComponent {\r\n @Input() prop!: FormProp;\r\n @Input() meridian = false;\r\n\r\n @ViewChild(NgbInputDatepicker) date!: NgbInputDatepicker;\r\n @ViewChild(NgbTimepicker) time!: NgbTimepicker;\r\n\r\n constructor(public readonly cdRef: ChangeDetectorRef) {}\r\n\r\n setDate(dateStr: string) {\r\n this.date.writeValue(dateStr);\r\n }\r\n\r\n setTime(dateStr: string) {\r\n this.time.writeValue(dateStr);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { ActionCallback, ReadonlyActionData as ActionData } from '../models/actions';\r\nimport { ExtensionsService } from '../services/extensions.service';\r\nimport { Observable } from 'rxjs';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { FormProp } from '../models/form-props';\r\n\r\nexport const EXTENSIONS_IDENTIFIER = new InjectionToken<string>('EXTENSIONS_IDENTIFIER');\r\nexport type ActionKeys = Extract<'entityActions' | 'toolbarActions', keyof ExtensionsService>;\r\n\r\nexport const EXTENSIONS_ACTION_TYPE = new InjectionToken<ActionKeys>('EXTENSIONS_ACTION_TYPE');\r\n\r\nexport const EXTENSIONS_ACTION_DATA = new InjectionToken<ActionData>('EXTENSIONS_ACTION_DATA');\r\nexport const EXTENSIONS_ACTION_CALLBACK = new InjectionToken<ActionCallback<unknown>>(\r\n 'EXTENSIONS_ACTION_DATA',\r\n);\r\nexport const PROP_DATA_STREAM = new InjectionToken<Observable<any>>('PROP_DATA_STREAM');\r\ntype EntityPropTypeClassMap = {\r\n [key in ePropType]: string;\r\n};\r\nexport type EntityPropTypeClass = Partial<EntityPropTypeClassMap>;\r\nexport const ENTITY_PROP_TYPE_CLASSES = new InjectionToken<EntityPropTypeClass>(\r\n 'ENTITY_PROP_TYPE_CLASSES',\r\n {\r\n factory: () => ({} as EntityPropTypeClass),\r\n },\r\n);\r\n\r\nexport const EXTENSIONS_FORM_PROP = new InjectionToken<FormProp>('EXTENSIONS_FORM_PROP');\r\nexport const EXTENSIONS_FORM_PROP_DATA = new InjectionToken<unknown>('EXTENSIONS_FORM_PROP_DATA');\r\n","export const EXTRA_PROPERTIES_KEY = 'extraProperties';\r\n","import { ABP, ExtensionPropertyUiLookupDto, RestService } from '@abp/ng.core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\nimport { PropCallback } from '../models/props';\r\n\r\nconst TYPEAHEAD_TEXT_SUFFIX = '_Text';\r\nconst TYPEAHEAD_TEXT_SUFFIX_REGEX = /_Text$/;\r\n\r\nexport function createTypeaheadOptions(\r\n lookup: ExtensionPropertyUiLookupDto,\r\n): PropCallback<any, Observable<ABP.Option<any>[]>> {\r\n return (data, searchText) =>\r\n searchText && data\r\n ? data\r\n .getInjected(RestService)\r\n .request(\r\n {\r\n method: 'GET',\r\n url: lookup.url || '',\r\n params: {\r\n [lookup.filterParamName || '']: searchText,\r\n },\r\n },\r\n { apiName: 'Default' },\r\n )\r\n .pipe(\r\n map((response: any) => {\r\n const list = response[lookup.resultListPropertyName || ''];\r\n const mapToOption = (item: any) => ({\r\n key: item[lookup.displayPropertyName || ''],\r\n value: item[lookup.valuePropertyName || ''],\r\n });\r\n return list.map(mapToOption);\r\n }),\r\n )\r\n : of([]);\r\n}\r\n\r\nexport function getTypeaheadType(lookup: ExtensionPropertyUiLookupDto, name: string) {\r\n if (!!lookup.url) {\r\n return ePropType.Typeahead;\r\n } else {\r\n return name.endsWith(TYPEAHEAD_TEXT_SUFFIX) ? ePropType.Hidden : undefined;\r\n }\r\n}\r\n\r\nexport function createTypeaheadDisplayNameGenerator(\r\n displayNameGeneratorFn: ObjectExtensions.DisplayNameGeneratorFn,\r\n properties: ObjectExtensions.EntityExtensionProperties,\r\n): ObjectExtensions.DisplayNameGeneratorFn {\r\n return (displayName, fallback) => {\r\n const name = removeTypeaheadTextSuffix(fallback.name || '');\r\n return displayNameGeneratorFn(displayName || properties[name].displayName, {\r\n name,\r\n resource: fallback.resource,\r\n });\r\n };\r\n}\r\n\r\nexport function addTypeaheadTextSuffix(name: string) {\r\n return name + TYPEAHEAD_TEXT_SUFFIX;\r\n}\r\n\r\nexport function hasTypeaheadTextSuffix(name: string) {\r\n return TYPEAHEAD_TEXT_SUFFIX_REGEX.test(name);\r\n}\r\n\r\nexport function removeTypeaheadTextSuffix(name: string) {\r\n return name.replace(TYPEAHEAD_TEXT_SUFFIX_REGEX, '');\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\n import { ValidatorFn, Validators } from '@angular/forms';\r\nimport { AbpValidators, ConfigStateService } from '@abp/ng.core';\r\nimport { map } from 'rxjs/operators';\r\nimport { FormProp } from '../models/form-props';\r\nimport { ePropType } from '../enums/props.enum';\r\n\r\n@Injectable()\r\nexport class ExtensibleFormPropService {\r\n readonly #configStateService = inject(ConfigStateService);\r\n\r\n meridian$ = this.#configStateService\r\n .getDeep$('localization.currentCulture.dateTimeFormat.shortTimePattern')\r\n .pipe(map((shortTimePattern: string | undefined) => (shortTimePattern || '').includes('tt')));\r\n\r\n isRequired(validator: ValidatorFn) {\r\n return (\r\n validator === Validators.required ||\r\n validator === AbpValidators.required ||\r\n validator.name === 'required'\r\n );\r\n }\r\n\r\n getComponent(prop: FormProp) {\r\n if (prop.template) {\r\n return 'template';\r\n }\r\n switch (prop.type) {\r\n case ePropType.Boolean:\r\n return 'checkbox';\r\n case ePropType.Date:\r\n return 'date';\r\n case ePropType.DateTime:\r\n return 'dateTime';\r\n case ePropType.Hidden:\r\n return 'hidden';\r\n case ePropType.MultiSelect:\r\n return 'multiselect';\r\n case ePropType.Text:\r\n return 'textarea';\r\n case ePropType.Time:\r\n return 'time';\r\n case ePropType.Typeahead:\r\n return 'typeahead';\r\n case ePropType.PasswordInputGroup:\r\n return 'passwordinputgroup';\r\n default:\r\n return prop.options ? 'select' : 'input';\r\n }\r\n }\r\n\r\n getType(prop: FormProp) {\r\n switch (prop.type) {\r\n case ePropType.Date:\r\n case ePropType.String:\r\n return 'text';\r\n case ePropType.Boolean:\r\n return 'checkbox';\r\n case ePropType.Number:\r\n return 'number';\r\n case ePropType.Email:\r\n return 'email';\r\n case ePropType.Password:\r\n return 'password';\r\n case ePropType.PasswordInputGroup:\r\n return 'passwordinputgroup';\r\n default:\r\n return 'hidden';\r\n }\r\n }\r\n\r\n calcAsterisks(validators: ValidatorFn[]) {\r\n if (!validators) return '';\r\n const required = validators.find(v => this.isRequired(v));\r\n return required ? '*' : '';\r\n }\r\n}\r\n","import {\r\n InjectFlags,\r\n InjectionToken,\r\n InjectOptions,\r\n Injector,\r\n Pipe,\r\n PipeTransform,\r\n Type,\r\n} from '@angular/core';\r\nimport { HasCreateInjectorPipe, ToolbarComponent } from '../models/toolbar-actions';\r\nimport { EXTENSIONS_ACTION_CALLBACK, EXTENSIONS_ACTION_DATA } from '../tokens/extensions.token';\r\n\r\n@Pipe({\r\n name: 'createInjector',\r\n standalone: true,\r\n})\r\nexport class CreateInjectorPipe<R> implements PipeTransform {\r\n public transform(\r\n _: any,\r\n action: ToolbarComponent<R>,\r\n context: HasCreateInjectorPipe<R>,\r\n ): Injector {\r\n const get = <T>(\r\n token: Type<T> | InjectionToken<T>,\r\n notFoundValue?: T,\r\n options?: InjectOptions | InjectFlags,\r\n ) => {\r\n const componentData = context.getData();\r\n const componentDataCallback = (data: any) => {\r\n data = data ?? context.getData();\r\n return action.action(data);\r\n };\r\n let extensionData;\r\n switch (token) {\r\n case EXTENSIONS_ACTION_DATA:\r\n extensionData = componentData;\r\n break;\r\n case EXTENSIONS_ACTION_CALLBACK:\r\n extensionData = componentDataCallback;\r\n break;\r\n default:\r\n extensionData = context.getInjected.call(context.injector, token, notFoundValue, options);\r\n }\r\n return extensionData;\r\n };\r\n return { get };\r\n }\r\n}\r\n","import { EXTENSIONS_FORM_PROP, EXTENSIONS_FORM_PROP_DATA } from './../../tokens/extensions.token';\r\nimport {\r\n ABP,\r\n LocalizationModule,\r\n PermissionDirective,\r\n ShowPasswordDirective,\r\n TrackByService,\r\n} from '@abp/ng.core';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Injector,\r\n Input,\r\n OnChanges, Optional,\r\n SimpleChanges,\r\n SkipSelf,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n ControlContainer,\r\n FormGroupDirective,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\nimport {\r\n NgbDateAdapter,\r\n NgbDatepickerModule,\r\n NgbTimeAdapter,\r\n NgbTimepickerModule,\r\n NgbTypeaheadModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { Observable, of } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\r\nimport { DateAdapter, DisabledDirective, TimeAdapter } from '@abp/ng.theme.shared';\r\nimport { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';\r\nimport { FormProp } from '../../models/form-props';\r\nimport { PropData } from '../../models/props';\r\nimport { selfFactory } from '../../utils/factory.util';\r\nimport { addTypeaheadTextSuffix } from '../../utils/typeahead.util';\r\nimport { eExtensibleComponents } from '../../enums/components';\r\nimport { ExtensibleDateTimePickerComponent } from '../date-time-picker/extensible-date-time-picker.component';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { ExtensibleFormPropService } from '../../services/extensible-form-prop.service';\r\nimport { CreateInjectorPipe } from '../../pipes/create-injector.pipe';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'abp-extensible-form-prop',\r\n templateUrl: './extensible-form-prop.component.html',\r\n standalone: true,\r\n imports: [\r\n ExtensibleDateTimePickerComponent,\r\n NgbDatepickerModule,\r\n NgbTimepickerModule,\r\n ReactiveFormsModule,\r\n DisabledDirective,\r\n NgxValidateCoreModule,\r\n NgbTooltip,\r\n NgbTypeaheadModule,\r\n CreateInjectorPipe,\r\n ShowPasswordDirective,\r\n PermissionDirective,\r\n LocalizationModule,\r\n CommonModule,\r\n FormsModule,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [ExtensibleFormPropService],\r\n viewProviders: [\r\n {\r\n provide: ControlContainer,\r\n useFactory: selfFactory,\r\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n },\r\n { provide: NgbDateAdapter, useClass: DateAdapter },\r\n { provide: NgbTimeAdapter, useClass: TimeAdapter },\r\n ],\r\n})\r\nexport class ExtensibleFormPropComponent implements OnChanges, AfterViewInit {\r\n protected service = inject(ExtensibleFormPropService);\r\n public readonly cdRef = inject(ChangeDetectorRef);\r\n public readonly track = inject(TrackByService);\r\n #groupDirective = inject(FormGroupDirective);\r\n private injector = inject(Injector);\r\n private readonly form = this.#groupDirective.form;\r\n\r\n @Input() data!: PropData;\r\n @Input() prop!: FormProp;\r\n @Input() first?: boolean;\r\n @Input() isFirstGroup?: boolean;\r\n @ViewChild('field') private fieldRef!: ElementRef<HTMLElement>;\r\n\r\n injectorForCustomComponent?: Injector;\r\n asterisk = '';\r\n containerClassName = 'mb-2';\r\n showPassword = false;\r\n options$: Observable<ABP.Option<any>[]> = of([]);\r\n validators: ValidatorFn[] = [];\r\n readonly!: boolean;\r\n typeaheadModel: any;\r\n passwordKey = eExtensibleComponents.PasswordComponent;\r\n\r\n disabledFn = (data: PropData) => false;\r\n\r\n get disabled() {\r\n return this.disabledFn(this.data);\r\n }\r\n\r\n setTypeaheadValue(selectedOption: ABP.Option<string>) {\r\n this.typeaheadModel = selectedOption || { key: null, value: null };\r\n const { key, value } = this.typeaheadModel;\r\n const [keyControl, valueControl] = this.getTypeaheadControls();\r\n if (valueControl?.value && !value) valueControl.markAsDirty();\r\n keyControl?.setValue(key);\r\n valueControl?.setValue(value);\r\n }\r\n\r\n search = (text$: Observable<string>) =>\r\n text$\r\n ? text$.pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n switchMap(text => this.prop?.options?.(this.data, text) || of([])),\r\n )\r\n : of([]);\r\n\r\n typeaheadFormatter = (option: ABP.Option<any>) => option.key;\r\n\r\n meridian$ = this.service.meridian$;\r\n\r\n get isInvalid() {\r\n const control = this.form.get(this.prop.name);\r\n return control?.touched && control.invalid;\r\n }\r\n\r\n private getTypeaheadControls() {\r\n const { name } = this.prop;\r\n const extraPropName = `${EXTRA_PROPERTIES_KEY}.${name}`;\r\n const keyControl =\r\n this.form.get(addTypeaheadTextSuffix(extraPropName)) ||\r\n this.form.get(addTypeaheadTextSuffix(name));\r\n const valueControl = this.form.get(extraPropName) || this.form.get(name);\r\n return [keyControl, valueControl];\r\n }\r\n\r\n private setAsterisk() {\r\n this.asterisk = this.service.calcAsterisks(this.validators);\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.isFirstGroup && this.first && this.fieldRef) {\r\n this.fieldRef.nativeElement.focus();\r\n }\r\n }\r\n\r\n getComponent(prop: FormProp): string {\r\n return this.service.getComponent(prop);\r\n }\r\n\r\n getType(prop: FormProp): string {\r\n return this.service.getType(prop);\r\n }\r\n\r\n ngOnChanges({ prop, data }: SimpleChanges) {\r\n const currentProp = prop?.currentValue as FormProp;\r\n const { options, readonly, disabled, validators, className, template } = currentProp || {};\r\n if (template) {\r\n this.injectorForCustomComponent = Injector.create({\r\n providers: [\r\n {\r\n provide: EXTENSIONS_FORM_PROP,\r\n useValue: currentProp,\r\n },\r\n {\r\n provide: EXTENSIONS_FORM_PROP_DATA,\r\n useValue: (data?.currentValue as PropData)?.record,\r\n },\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n parent: this.injector,\r\n });\r\n }\r\n\r\n if (options) this.options$ = options(this.data);\r\n if (readonly) this.readonly = readonly(this.data);\r\n\r\n if (disabled) {\r\n this.disabledFn = disabled;\r\n }\r\n if (validators) {\r\n this.validators = validators(this.data);\r\n this.setAsterisk();\r\n }\r\n if (className !== undefined) {\r\n this.containerClassName = className;\r\n }\r\n\r\n const [keyControl, valueControl] = this.getTypeaheadControls();\r\n if (keyControl && valueControl)\r\n this.typeaheadModel = { key: keyControl.value, value: valueControl.value };\r\n }\r\n}\r\n","<ng-container [ngSwitch]=\"getComponent(prop)\" *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n <ng-template ngSwitchCase=\"template\">\r\n <ng-container *ngComponentOutlet=\"prop.template; injector: injectorForCustomComponent\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <div [ngClass]=\"containerClassName\" class=\"mb-2\">\r\n <ng-template ngSwitchCase=\"input\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [type]=\"getType(prop)\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"hidden\">\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"checkbox\">\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n />\r\n <ng-template\r\n [ngTemplateOutlet]=\"label\"\r\n [ngTemplateOutletContext]=\"{ $implicit: 'form-check-label' }\"\r\n ></ng-template>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"select\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n class=\"form-select form-control\"\r\n >\r\n @for (option of options$ | async; track option.value) {\r\n <option\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n }\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"multiselect\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n multiple=\"multiple\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"typeahead\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <div #typeahead class=\"position-relative\" validationStyle validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [abpDisabled]=\"disabled\"\r\n [ngbTypeahead]=\"search\"\r\n [editable]=\"false\"\r\n [inputFormatter]=\"typeaheadFormatter\"\r\n [resultFormatter]=\"typeaheadFormatter\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [(ngModel)]=\"typeaheadModel\"\r\n (selectItem)=\"setTypeaheadValue($event.item)\"\r\n (blur)=\"setTypeaheadValue(typeaheadModel)\"\r\n [class.is-invalid]=\"typeahead.classList.contains('is-invalid')\"\r\n class=\"form-control\"\r\n />\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"date\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"time\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <ngb-timepicker [formControlName]=\"prop.name\"></ngb-timepicker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"dateTime\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-extensible-date-time-picker [prop]=\"prop\" [meridian]=\"meridian$ | async\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"textarea\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <textarea\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n ></textarea>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"passwordinputgroup\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <div class=\"input-group form-group\" validationTarget>\r\n <input\r\n class=\"form-control\"\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpShowPassword]=\"showPassword\"\r\n />\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"showPassword = !showPassword\">\r\n <i\r\n class=\"fa\"\r\n aria-hidden=\"true\"\r\n [ngClass]=\"{\r\n 'fa-eye-slash': !showPassword,\r\n 'fa-eye': showPassword\r\n }\"\r\n ></i>\r\n </button>\r\n </div>\r\n </ng-template>\r\n\r\n @if (prop.formText) {\r\n <small class=\"text-muted d-block\">{{\r\n prop.formText | abpLocalization\r\n }}</small>\r\n }\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #label let-classes>\r\n <label [htmlFor]=\"prop.id\" [ngClass]=\"classes || 'form-label'\">\r\n @if (prop.displayTextResolver) {\r\n {{ prop.displayTextResolver(data) | abpLocalization }}\r\n }@else{\r\n {{ prop.displayName | abpLocalization }}\r\n }\r\n {{ asterisk }}\r\n @if (prop.tooltip) {\r\n <i [ngbTooltip]=\"prop.tooltip.text | abpLocalization\" [placement]=\"prop.tooltip.placement || 'auto'\" container=\"body\" class=\"bi bi-info-circle\"></i>\r\n }\r\n </label>\r\n</ng-template>\r\n","import { LinkedList } from '@abp/utils';\r\nimport { InjectFlags, InjectionToken, InjectOptions, Type } from '@angular/core';\r\nimport { O } from 'ts-toolbelt';\r\n\r\nexport abstract class ActionList<R = any, A = Action<R>> extends LinkedList<A> {}\r\n\r\nexport abstract class ActionData<R = any> {\r\n abstract getInjected: <T>(\r\n token: Type<T> | InjectionToken<T>,\r\n notFoundValue?: T,\r\n flags?: InjectOptions | InjectFlags,\r\n ) => T;\r\n index?: number;\r\n abstract record: R;\r\n\r\n get data(): ReadonlyActionData<R> {\r\n return {\r\n getInjected: this.getInjected,\r\n index: this.index,\r\n record: this.record,\r\n };\r\n }\r\n}\r\n\r\nexport type ReadonlyActionData<R = any> = O.Readonly<Omit<ActionData<R>, 'data'>>;\r\n\r\nexport abstract class Action<R = any> {\r\n constructor(\r\n public readonly permission: string,\r\n public readonly visible: ActionPredicate<R> = () => true,\r\n public readonly action: ActionCallback<R> = () => {},\r\n public readonly btnClass?: string,\r\n public readonly btnStyle?: string,\r\n ) {}\r\n}\r\n\r\nexport type ActionCallback<T, R = any> = (data: Omit<ActionData<T>, 'data'>) => R;\r\nexport type ActionPredicate<T> = (data?: Omit<ActionData<T>, 'data'>) => boolean;\r\n\r\nexport abstract class ActionsFactory<C extends Actions<any>> {\r\n protected abstract _ctor: Type<C>;\r\n private contributorCallbacks: ActionContributorCallbacks<InferredActionList<C>> = {};\r\n\r\n get(name: string): C {\r\n this.contributorCallbacks[name] = this.contributorCallbacks[name] || [];\r\n\r\n return new this._ctor(this.contributorCallbacks[name]);\r\n }\r\n}\r\n\r\nexport abstract class Actions<L extends ActionList<any, InferredAction<L>>> {\r\n protected abstract _ctor: Type<L>;\r\n\r\n get actions(): L {\r\n const actionList = new this._ctor();\r\n\r\n this.callbackList.forEach(callback => callback(actionList));\r\n\r\n return actionList;\r\n }\r\n\r\n constructor(private readonly callbackList: ActionContributorCallback<L>[]) {}\r\n\r\n addContributor(contributeCallback: ActionContributorCallback<L>) {\r\n this.callbackList.push(contributeCallback);\r\n }\r\n\r\n clearContributors() {\r\n while (this.callbackList.length) this.callbackList.pop();\r\n }\r\n}\r\n\r\nexport type ActionContributorCallbacks<L extends ActionList<any, InferredAction<L>>> = Record<\r\n string,\r\n ActionContributorCallback<L>[]\r\n>;\r\n\r\nexport type ActionContributorCallback<L extends ActionList<any, InferredAction<L>>> = (\r\n actionList: L,\r\n) => any;\r\n\r\ntype InferredActionList<C> = C extends Actions<infer L> ? L : never;\r\nexport type InferredAction<T> = T extends ActionList<any, infer U> ? U : T;\r\n","import { Type } from '@angular/core';\r\nimport { O } from 'ts-toolbelt';\r\nimport {\r\n Action,\r\n ActionContributorCallback,\r\n ActionContributorCallbacks,\r\n ActionList,\r\n Actions,\r\n ActionsFactory,\r\n} from './actions';\r\nimport { FormPropTooltip } from './form-props';\r\n\r\nexport class EntityActionList<R = any> extends ActionList<R, EntityAction<R>> {}\r\n\r\nexport class EntityActions<R = any> extends Actions<EntityActionList<R>> {\r\n protected _ctor: Type<EntityActionList<R>> = EntityActionList;\r\n}\r\n\r\nexport class EntityActionsFactory<R = any> extends ActionsFactory<EntityActions<R>> {\r\n protected _ctor: Type<EntityActions<R>> = EntityActions;\r\n}\r\n\r\nexport class EntityAction<R = any> extends Action<R> {\r\n readonly text: string;\r\n readonly icon: string;\r\n readonly btnClass?: string;\r\n readonly btnStyle?: string;\r\n readonly showOnlyIcon?: boolean;\r\n readonly tooltip?: FormPropTooltip;\r\n\r\n constructor(options: EntityActionOptions<R>) {\r\n super(options.permission || '', options.visible, options.action);\r\n this.text = options.text;\r\n this.icon = options.icon || '';\r\n this.btnClass = options.btnClass || 'btn btn-primary text-center';\r\n this.btnStyle = options.btnStyle;\r\n this.showOnlyIcon = options.showOnlyIcon || false;\r\n this.tooltip = options.tooltip;\r\n }\r\n\r\n static create<R = any>(options: EntityActionOptions<R>) {\r\n return new EntityAction<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: EntityActionOptions<R>[]) {\r\n return arrayOfOptions.map(EntityAction.create);\r\n }\r\n}\r\n\r\nexport type EntityActionOptions<R = any> = O.Optional<\r\n O.Writable<EntityAction<R>>,\r\n 'permission' | 'visible' | 'icon'\r\n>;\r\n\r\nexport type EntityActionDefaults<R = any> = Record<string, EntityAction<R>[]>;\r\nexport type EntityActionContributorCallback<R = any> = ActionContributorCallback<\r\n EntityActionList<R>\r\n>;\r\nexport type EntityActionContributorCallbacks<R = any> = ActionContributorCallbacks<\r\n EntityActionList<R>\r\n>;\r\n","import { ABP, escapeHtmlChars } from '@abp/ng.core';\r\nimport { InjectFlags, InjectOptions, InjectionToken, Type } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { O } from 'ts-toolbelt';\r\nimport { ActionCallback } from './actions';\r\nimport {\r\n Prop,\r\n PropCallback,\r\n PropContributorCallback,\r\n PropContributorCallbacks,\r\n PropList,\r\n Props,\r\n PropsFactory,\r\n} from './props';\r\nimport { FormPropTooltip } from './form-props';\r\n\r\nexport class EntityPropList<R = any> extends PropList<R, EntityProp<R>> {}\r\n\r\nexport class EntityProps<R = any> extends Props<EntityPropList<R>> {\r\n protected _ctor: Type<EntityPropList<R>> = EntityPropList;\r\n}\r\n\r\nexport class EntityPropsFactory<R = any> extends PropsFactory<EntityProps<R>> {\r\n protected _ctor: Type<EntityProps<R>> = EntityProps;\r\n}\r\n\r\nexport class EntityProp<R = any> extends Prop<R> {\r\n readonly columnWidth: number | undefined;\r\n readonly sortable: boolean;\r\n readonly valueResolver: PropCallback<R, Observable<any>>;\r\n readonly action?: ActionCallback<R>;\r\n readonly component?: Type<any>;\r\n readonly enumList?: Array<ABP.Option<any>>;\r\n readonly tooltip?: FormPropTooltip;\r\n readonly columnVisible: ColumnPredicate;\r\n\r\n constructor(options: EntityPropOptions<R>) {\r\n super(\r\n options.type,\r\n options.name,\r\n options.displayName || '',\r\n options.permission || '',\r\n options.visible,\r\n options.isExtra,\r\n );\r\n\r\n this.columnVisible = options.columnVisible || (() => true);\r\n this.columnWidth = options.columnWidth;\r\n this.sortable = options.sortable || false;\r\n this.valueResolver =\r\n options.valueResolver ||\r\n (data => of(escapeHtmlChars((data.record as PropDataObject)[this.name])));\r\n if (options.action) {\r\n this.action = options.action;\r\n }\r\n if (options.component) {\r\n this.component = options.component;\r\n }\r\n if (options.enumList) {\r\n this.enumList = options.enumList;\r\n }\r\n this.tooltip = options.tooltip;\r\n }\r\n\r\n static create<R = any>(options: EntityPropOptions<R>) {\r\n return new EntityProp<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: EntityPropOptions<R>[]) {\r\n return arrayOfOptions.map(EntityProp.create);\r\n }\r\n}\r\n\r\nexport type EntityPropOptions<R = any> = O.Optional<\r\n O.Writable<EntityProp<R>>,\r\n | 'permission'\r\n | 'visible'\r\n | 'columnVisible'\r\n | 'displayName'\r\n | 'isExtra'\r\n | 'columnWidth'\r\n | 'sortable'\r\n | 'valueResolver'\r\n | 'action'\r\n | 'component'\r\n | 'enumList'\r\n>;\r\n\r\nexport type EntityPropDefaults<R = any> = Record<string, EntityProp<R>[]>;\r\nexport type EntityPropContributorCallback<R = any> = PropContributorCallback<EntityPropList<R>>;\r\nexport type EntityPropContributorCallbacks<R = any> = PropContributorCallbacks<EntityPropList<R>>;\r\nexport type ColumnPredicate = (getInjected: GetInjected, auxData?: any) => boolean;\r\nexport type GetInjected = <T>(\r\n token: Type<T> | InjectionToken<T>,\r\n notFoundValue?: T,\r\n options?: InjectOptions | InjectFlags,\r\n) => T;\r\ntype PropDataObject = { [key: string]: any };\r\n","import { Injector, Type } from '@angular/core';\r\nimport { O } from 'ts-toolbelt';\r\nimport {\r\n Action,\r\n ActionContributorCallback,\r\n ActionContributorCallbacks,\r\n ActionData,\r\n ActionList,\r\n Actions,\r\n ActionsFactory,\r\n ReadonlyActionData,\r\n} from './actions';\r\n\r\nexport class ToolbarActionList<R = any> extends ActionList<R, ToolbarActionDefault<R>> {}\r\n\r\nexport class ToolbarActions<R = any> extends Actions<ToolbarActionList<R>> {\r\n protected _ctor: Type<ToolbarActionList<R>> = ToolbarActionList;\r\n}\r\n\r\nexport class ToolbarActionsFactory<R = any> extends ActionsFactory<ToolbarActions<R>> {\r\n protected _ctor: Type<ToolbarActions<R>> = ToolbarActions;\r\n}\r\n\r\nexport class ToolbarAction<R = any> extends Action<R> {\r\n readonly text: string;\r\n readonly icon: string;\r\n readonly btnClass?: string;\r\n\r\n constructor(options: ToolbarActionOptions<R>) {\r\n super(options.permission || '', options.visible, options.action);\r\n this.text = options.text;\r\n this.icon = options.icon || '';\r\n if (options.btnClass) {\r\n this.btnClass = options.btnClass;\r\n }\r\n }\r\n\r\n static create<R = any>(options: ToolbarActionOptions<R>) {\r\n return new ToolbarAction<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: ToolbarActionOptions<R>[]) {\r\n return arrayOfOptions.map(ToolbarAction.create);\r\n }\r\n}\r\n\r\nexport class ToolbarComponent<R = any> extends Action<R> {\r\n readonly component: Type<any>;\r\n\r\n constructor(options: ToolbarComponentOptions<R>) {\r\n super(options.permission || '', options.visible, options.action);\r\n this.component = options.component;\r\n }\r\n\r\n static create<R = any>(options: ToolbarComponentOptions<R>) {\r\n return new ToolbarComponent<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: ToolbarComponentOptions<R>[]) {\r\n return arrayOfOptions.map(ToolbarComponent.create);\r\n }\r\n}\r\n\r\nexport type ToolbarActionOptions<R = any> = O.Optional<\r\n O.Writable<ToolbarAction<R>>,\r\n 'permission' | 'visible' | 'icon' | 'btnClass'\r\n>;\r\n\r\nexport type ToolbarComponentOptions<R = any> = O.Optional<\r\n O.Writable<ToolbarComponent<R>>,\r\n 'permission' | 'visible' | 'action'\r\n>;\r\n\r\nexport type ToolbarActionDefault<R = any> = ToolbarAction<R> | ToolbarComponent<R>;\r\n\r\nexport type ToolbarActionDefaults<R = any> = Record<string, Array<ToolbarActionDefault<R>>>;\r\nexport type ToolbarActionContributorCallback<R = any> = ActionContributorCallback<\r\n ToolbarActionList<R>\r\n>;\r\nexport type ToolbarActionContributorCallbacks<R = any> = ActionContributorCallbacks<\r\n ToolbarActionList<R>\r\n>;\r\nexport type InferredData<L> = ActionData<InferredRecord<L>>;\r\nexport type InferredRecord<L> = L extends ActionList<infer R> ? R : any;\r\n\r\nexport interface HasCreateInjectorPipe<R> {\r\n getData: () => ReadonlyActionData<R>;\r\n injector: Injector;\r\n getInjected: InferredData<ToolbarActionList<R>>['getInjected'];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EntityActionsFactory } from '../models/entity-actions';\r\nimport { EntityPropsFactory } from '../models/entity-props';\r\nimport { CreateFormPropsFactory, EditFormPropsFactory } from '../models/form-props';\r\nimport { ToolbarActionsFactory } from '../models/toolbar-actions';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ExtensionsService<R = any> {\r\n readonly entityActions = new EntityActionsFactory<R>();\r\n readonly toolbarActions = new ToolbarActionsFactory<R[]>();\r\n readonly entityProps = new EntityPropsFactory<R>();\r\n readonly createFormProps = new CreateFormPropsFactory<R>();\r\n readonly editFormProps = new EditFormPropsFactory<R>();\r\n}\r\n","/* eslint-disable @angular-eslint/no-input-rename */\r\nimport {\r\n Directive,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { PropData, PropList } from '../models/props';\r\n\r\n@Directive({\r\n exportAs: 'abpPropData',\r\n selector: '[abpPropData]',\r\n standalone: true,\r\n})\r\nexport class PropDataDirective<L extends PropList<any>>\r\n extends PropData<InferredData<L>>\r\n implements OnChanges, OnDestroy\r\n{\r\n @Input('abpPropDataFromList') propList?: L;\r\n\r\n @Input('abpPropDataWithRecord') record!: InferredData<L>['record'];\r\n\r\n @Input('abpPropDataAtIndex') index?: number;\r\n\r\n readonly getInjected: InferredData<L>['getInjected'];\r\n\r\n constructor(\r\n private tempRef: TemplateRef<any>,\r\n private vcRef: ViewContainerRef,\r\n injector: Injector,\r\n ) {\r\n super();\r\n\r\n this.getInjected = injector.get.bind(injector);\r\n }\r\n\r\n ngOnChanges() {\r\n this.vcRef.clear();\r\n\r\n this.vcRef.createEmbeddedView(this.tempRef, {\r\n $implicit: this.data,\r\n index: 0,\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.vcRef.clear();\r\n }\r\n}\r\n\r\ntype InferredData<L> = PropData<InferredRecord<L>>;\r\ntype InferredRecord<L> = L extends PropList<infer R> ? R : never;\r\n","import { TrackByService } from '@abp/ng.core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n inject,\r\n Input,\r\n Optional,\r\n QueryList,\r\n SkipSelf,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { ControlContainer, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\r\nimport { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';\r\nimport { FormProp, FormPropList, GroupedFormPropList } from '../../models/form-props';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport { EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';\r\nimport { selfFactory } from '../../utils/factory.util';\r\nimport { ExtensibleFormPropComponent } from './extensible-form-prop.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PropDataDirective } from '../../directives/prop-data.directive';\r\n\r\n@Component({\r\n standalone: true,\r\n exportAs: 'abpExtensibleForm',\r\n selector: 'abp-extensible-form',\r\n templateUrl: './extensible-form.component.html',\r\n imports: [CommonModule, PropDataDirective, ReactiveFormsModule, ExtensibleFormPropComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n {\r\n provide: ControlContainer,\r\n useFactory: selfFactory,\r\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n },\r\n ],\r\n})\r\nexport class ExtensibleFormComponent<R = any> {\r\n public readonly cdRef = inject(ChangeDetectorRef);\r\n public readonly track = inject(TrackByService);\r\n private readonly container = inject(ControlContainer);\r\n private readonly extensions = inject(ExtensionsService);\r\n private readonly identifier = inject(EXTENSIONS_IDENTIFIER);\r\n\r\n @ViewChildren(ExtensibleFormPropComponent)\r\n formProps!: QueryList<ExtensibleFormPropComponent>;\r\n\r\n @Input()\r\n set selectedRecord(record: R) {\r\n const type = !record || JSON.stringify(record) === '{}' ? 'create' : 'edit';\r\n const propList = this.extensions[`${type}FormProps`].get(this.identifier).props;\r\n this.groupedPropList = this.createGroupedList(propList);\r\n this.record = record;\r\n }\r\n\r\n extraPropertiesKey = EXTRA_PROPERTIES_KEY;\r\n groupedPropList!: GroupedFormPropList;\r\n groupedPropListOfArray: FormProp<any>[][];\r\n record!: R;\r\n\r\n get form(): UntypedFormGroup {\r\n return (this.container ? this.container.control : { controls: {} }) as UntypedFormGroup;\r\n }\r\n\r\n get extraProperties(): UntypedFormGroup {\r\n return (this.form.controls.extraProperties || { controls: {} }) as UntypedFormGroup;\r\n }\r\n\r\n createGroupedList(propList: FormPropList<R>) {\r\n const groupedFormPropList = new GroupedFormPropList();\r\n propList.forEach(item => {\r\n groupedFormPropList.addItem(item.value);\r\n });\r\n\r\n return groupedFormPropList;\r\n }\r\n\r\n //TODO: Reactor this method\r\n isAnyGroupMemberVisible(index: number, data) {\r\n const { items } = this.groupedPropList;\r\n const formPropList = items[index].formPropList.toArray();\r\n return formPropList.some(prop => prop.visible(data));\r\n }\r\n}\r\n","@if (form) {\r\n @for (groupedProp of groupedPropList.items; track i; let i = $index; let first = $first) {\r\n <ng-container *abpPropData=\"let data; fromList: groupedProp.formPropList; withRecord: record\">\r\n @if (isAnyGroupMemberVisible(i, data) && groupedProp.group?.className) {\r\n <div\r\n [ngClass]=\"groupedProp.group?.className\"\r\n [attr.data-name]=\"groupedProp.group?.name || groupedProp.group?.className\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"propListTemplate\"\r\n [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first}\"\r\n >\r\n </ng-container>\r\n </div>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"propListTemplate\"\r\n [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first }\"\r\n >\r\n </ng-container>\r\n }\r\n </ng-container>\r\n }\r\n}\r\n\r\n<ng-template let-groupedProp=\"groupedProp\" let-data=\"data\" let-isFirstGroup=\"isFirstGroup\" #propListTemplate>\r\n @for (prop of groupedProp.formPropList; let index = $index; let first = $first; track prop.name) {\r\n @if (prop.visible(data)) {\r\n @if (extraProperties.controls[prop.name]) {\r\n <ng-container [formGroupName]=\"extraPropertiesKey\">\r\n <abp-extensible-form-prop [prop]=\"prop\" [data]=\"data\" [class]=\"prop.className\" />\r\n </ng-container>\r\n } @else {\r\n @if (form.get(prop.name)) {\r\n <abp-extensible-form-prop\r\n [class]=\"prop.className\"\r\n [prop]=\"prop\"\r\n [data]=\"data\"\r\n [first]=\"first\"\r\n [isFirstGroup]=\"isFirstGroup\"\r\n />\r\n }\r\n }\r\n }\r\n }\r\n</ng-template>\r\n","import { Directive, Injector, Input } from '@angular/core';\r\nimport { ActionData, ActionList, InferredAction } from '../../models/actions';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport { EXTENSIONS_ACTION_TYPE, EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';\r\nimport { InferredData, InferredRecord } from '../../models/toolbar-actions';\r\n\r\n// Fix for https://github.com/angular/angular/issues/23904\r\n// @dynamic\r\n@Directive()\r\nexport abstract class AbstractActionsComponent<\r\n L extends ActionList<any, InferredAction<L>>,\r\n> extends ActionData<InferredRecord<L>> {\r\n readonly actionList: L;\r\n\r\n readonly getInjected: InferredData<L>['getInjected'];\r\n\r\n @Input() record!: InferredData<L>['record'];\r\n\r\n protected constructor(injector: Injector) {\r\n super();\r\n this.getInjected = injector.get.bind(injector);\r\n const extensions = injector.get(ExtensionsService);\r\n const name = injector.get(EXTENSIONS_IDENTIFIER);\r\n const type = injector.get(EXTENSIONS_ACTION_TYPE);\r\n this.actionList = extensions[type].get(name).actions as unknown as L;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Injector,\r\n Input,\r\n TrackByFunction,\r\n} from '@angular/core';\r\nimport { EntityAction, EntityActionList } from '../../models/entity-actions';\r\nimport { EXTENSIONS_ACTION_TYPE } from '../../tokens/extensions.token';\r\nimport { AbstractActionsComponent } from '../abstract-actions/abstract-actions.component';\r\nimport { NgbDropdownModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { LocalizationModule, PermissionDirective } from '@abp/ng.core';\r\nimport { EllipsisDirective } from '@abp/ng.theme.shared';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n exportAs: 'abpGridActions',\r\n standalone: true,\r\n imports: [\r\n NgbDropdownModule,\r\n EllipsisDirective,\r\n PermissionDirective,\r\n NgClass,\r\n LocalizationModule,\r\n NgTemplateOutlet,\r\n NgbTooltipModule\r\n ],\r\n selector: 'abp-grid-actions',\r\n templateUrl: './grid-actions.component.html',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_ACTION_TYPE,\r\n useValue: 'entityActions',\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class GridActionsComponent<R = any> extends AbstractActionsComponent<EntityActionList<R>> {\r\n @Input() icon = 'fa fa-cog';\r\n\r\n @Input() readonly index?: number;\r\n\r\n @Input() text = '';\r\n\r\n readonly trackByFn: TrackByFunction<EntityAction<R>> = (_, item) => item.text;\r\n\r\n constructor(injector: Injector) {\r\n super(injector);\r\n }\r\n}\r\n","@if (actionList.length > 1) {\r\n<div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button\r\n class=\"btn btn-primary btn-sm dropdown-toggle\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n ngbDropdownToggle\r\n >\r\n <i [ngClass]=\"icon\" [class.me-1]=\"icon\"></i>{{ text | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n @for (action of actionList; track action.text) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"dropDownBtnItemTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: action }\"\r\n >\r\n </ng-container>\r\n }\r\n </div>\r\n</div>\r\n} @if (actionList.length === 1) {\r\n<ng-container\r\n [ngTemplateOutlet]=\"btnTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: actionList.get(0).value }\"\r\n></ng-container>\r\n}\r\n\r\n<ng-template #dropDownBtnItemTmp let-action>\r\n @if (action.visible(data)) {\r\n <button\r\n ngbDropdownItem\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonContentTmp let-action>\r\n <i [ngClass]=\"action.icon\" [class.me-1]=\"action.icon && !action.showOnlyIcon\"></i>\r\n @if (!action.showOnlyIcon) {\r\n @if (action.icon) {\r\n <span>{{ action.text | abpLocalization }}</span>\r\n } @else {\r\n <div abpEllipsis>{{ action.text | abpLocalization }}</div>\r\n }\r\n }\r\n</ng-template>\r\n\r\n<ng-template #btnTmp let-action>\r\n @if (action.visible(data)) {\r\n @if (action.tooltip) {\r\n <button\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [class]=\"action.btnClass\"\r\n [style]=\"action.btnStyle\"\r\n [ngbTooltip]=\"action.tooltip.text | abpLocalization\" [placement]=\"action.tooltip.placement || 'auto'\" container=\"body\" \r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n } @else {\r\n <button\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [class]=\"action.btnClass\"\r\n [style]=\"action.btnStyle\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n }\r\n }\r\n</ng-template>\r\n","import {\r\n ABP,\r\n ConfigStateService, \r\n getShortDateFormat,\r\n getShortDateShortTimeFormat,\r\n getShortTimeFormat,\r\n ListService,\r\n LocalizationModule,\r\n PermissionDirective,\r\n PermissionService,\r\n} from '@abp/ng.core';\r\nimport {\r\n AsyncPipe,\r\n formatDate,\r\n NgComponentOutlet, \r\n NgTemplateOutlet,\r\n} from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n inject,\r\n Injector,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n TemplateRef,\r\n TrackByFunction,\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ePropType } from '../../enums/props.enum';\r\nimport { EntityActionList } from '../../models/entity-actions';\r\nimport { EntityProp, EntityPropList } from '../../models/entity-props';\r\nimport { PropData } from '../../models/props';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport {\r\n ENTITY_PROP_TYPE_CLASSES,\r\n EXTENSIONS_IDENTIFIER,\r\n PROP_DATA_STREAM,\r\n} from '../../tokens/extensions.token';\r\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\r\nimport { GridActionsComponent } from '../grid-actions/grid-actions.component';\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n AbpVisibleDirective,\r\n NgxDatatableDefaultDirective,\r\n NgxDatatableListDirective,\r\n} from '@abp/ng.theme.shared';\r\n\r\nconst DEFAULT_ACTIONS_COLUMN_WIDTH = 150;\r\n\r\n@Component({\r\n exportAs: 'abpExtensibleTable',\r\n selector: 'abp-extensible-table',\r\n standalone: true,\r\n imports: [\r\n AbpVisibleDirective,\r\n NgxDatatableModule,\r\n GridActionsComponent,\r\n NgbTooltip,\r\n NgxDatatableDefaultDirective,\r\n NgxDatatableListDirective,\r\n PermissionDirective,\r\n LocalizationModule,\r\n AsyncPipe,\r\n NgTemplateOutlet,\r\n NgComponentOutlet,\r\n ],\r\n templateUrl: './extensible-table.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ExtensibleTableComponent<R = any> implements OnChanges {\r\n protected _actionsText!: string;\r\n @Input()\r\n set actionsText(value: string) {\r\n this._actionsText = value;\r\n }\r\n\r\n get actionsText(): string {\r\n return this._actionsText ?? (this.actionList.length > 1 ? 'AbpUi::Actions' : '');\r\n }\r\n\r\n @Input() data!: R[];\r\n @Input() list!: ListService;\r\n @Input() recordsTotal!: number;\r\n\r\n @Input() set actionsColumnWidth(width: number) {\r\n this.setColumnWidths(width ? Number(width) : undefined);\r\n }\r\n\r\n @Input() actionsTemplate?: TemplateRef<any>;\r\n\r\n @Output() tableActivate = new EventEmitter();\r\n\r\n hasAtLeastOnePermittedAction: boolean;\r\n\r\n readonly columnWidths!: number[];\r\n\r\n readonly propList: EntityPropList<R>;\r\n\r\n readonly actionList: EntityActionList<R>;\r\n\r\n readonly trackByFn: TrackByFunction<EntityProp<R>> = (_, item) => item.name;\r\n\r\n locale = inject(LOCALE_ID);\r\n private config = inject(ConfigStateService);\r\n entityPropTypeClasses = inject(ENTITY_PROP_TYPE_CLASSES);\r\n #injector = inject(Injector);\r\n getInjected = this.#injector.get.bind(this.#injector);\r\n\r\n constructor() {\r\n const extensions = this.#injector.get(ExtensionsService);\r\n const name = this.#injector.get(EXTENSIONS_IDENTIFIER);\r\n this.propList = extensions.entityProps.get(name).props;\r\n this.actionList = extensions['entityActions'].get(name)\r\n .actions as unknown as EntityActionList<R>;\r\n\r\n const permissionService = this.#injector.get(PermissionService);\r\n this.hasAtLeastOnePermittedAction =\r\n permissionService.filterItemsByPolicy(\r\n this.actionList.toArray().map(action => ({ requiredPolicy: action.permission })),\r\n ).length > 0;\r\n this.setColumnWidths(DEFAULT_ACTIONS_COLUMN_WIDTH);\r\n }\r\n\r\n private setColumnWidths(actionsColumn: number | undefined) {\r\n const widths = [actionsColumn];\r\n this.propList.forEach(({ value: prop }) => {\r\n widths.push(prop.columnWidth);\r\n });\r\n (this.columnWidths as any) = widths;\r\n }\r\n\r\n private getDate(value: Date | undefined, format: string | undefined) {\r\n return value && format ? formatDate(value, format, this.locale) : '';\r\n }\r\n\r\n private getIcon(value: boolean) {\r\n return value\r\n ? '<div class=\"text-success\"><i class=\"fa fa-check\" aria-hidden=\"true\"></i></div>'\r\n : '<div class=\"text-danger\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></div>';\r\n }\r\n\r\n private getEnum(rowValue: any, list: Array<ABP.Option<any>>) {\r\n if (!list || list.length < 1) return rowValue;\r\n const { key } = list.find(({ value }) => value === rowValue) || {};\r\n return key;\r\n }\r\n\r\n getContent(prop: EntityProp<R>, data: PropData): Observable<string> {\r\n return prop.valueResolver(data).pipe(\r\n map(value => {\r\n switch (prop.type) {\r\n case ePropType.Boolean:\r\n return this.getIcon(value);\r\n case ePropType.Date:\r\n return this.getDate(value, getShortDateFormat(this.config));\r\n case ePropType.Time:\r\n return this.getDate(value, getShortTimeFormat(this.config));\r\n case ePropType.DateTime:\r\n return this.getDate(value, getShortDateShortTimeFormat(this.config));\r\n case ePropType.Enum:\r\n return this.getEnum(value, prop.enumList || []);\r\n default:\r\n return value;\r\n // More types can be handled in the future\r\n }\r\n }),\r\n );\r\n }\r\n\r\n setPage({ offset }) {\r\n this.list.page = offset;\r\n }\r\n\r\n ngOnChanges({ data, recordsTotal }: SimpleChanges) {\r\n if (data?.currentValue.length < 1 && recordsTotal?.currentValue > 0) {\r\n let maxPage = Math.floor(Number(recordsTotal?.currentValue / this.list.maxResultCount));\r\n \r\n if(recordsTotal?.currentValue < this.list.maxResultCount) {\r\n this.list.page = 0;\r\n return;\r\n }\r\n\r\n if (recordsTotal?.currentValue % this.list.maxResultCount === 0) {\r\n maxPage -= 1;\r\n }\r\n\r\n if (this.list.page < maxPage) {\r\n this.list.page = this.list.page;\r\n return;\r\n }\r\n\r\n this.list.page = maxPage;\r\n return;\r\n }\r\n\r\n if (!data?.currentValue) return;\r\n\r\n if (data.currentValue.length < 1) {\r\n this.list.totalCount = this.recordsTotal;\r\n }\r\n\r\n this.data = data.currentValue.map((record: any, index: number) => {\r\n this.propList.forEach(prop => {\r\n const propData = { getInjected: this.getInjected, record, index } as any;\r\n const value = this.getContent(prop.value, propData);\r\n\r\n const propKey = `_${prop.value.name}`;\r\n record[propKey] = {\r\n visible: prop.value.visible(propData),\r\n value,\r\n };\r\n if (prop.value.component) {\r\n record[propKey].injector = Injector.create({\r\n providers: [\r\n {\r\n provide: PROP_DATA_STREAM,\r\n useValue: value,\r\n },\r\n ],\r\n parent: this.#injector,\r\n });\r\n record[propKey].component = prop.value.component;\r\n }\r\n });\r\n\r\n return record;\r\n });\r\n }\r\n}\r\n","<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n [offset]=\"list?.page\"\r\n (page)=\"setPage($event)\"\r\n (activate)=\"tableActivate.emit($event)\"\r\n>\r\n @if (actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)) {\r\n <ngx-datatable-column\r\n [name]=\"actionsText | abpLocalization\"\r\n [maxWidth]=\"columnWidths[0]\"\r\n [width]=\"columnWidths[0]\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n </ng-template>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n } @for (prop of propList; track prop.name; let i = $index) {\r\n <ngx-datatable-column\r\n *abpVisible=\"prop.columnVisible(getInjected)\"\r\n [width]=\"columnWidths[i + 1] || 200\"\r\n [name]=\"prop.displayName | abpLocalization\"\r\n [prop]=\"prop.name\"\r\n [sortable]=\"prop.sortable\"\r\n >\r\n <ng-template ngx-datatable-header-template let-column=\"column\">\r\n @if (prop.tooltip) {\r\n <span [ngbTooltip]=\"prop.tooltip.text | abpLocalization\" [placement]=\"prop.tooltip.placement || 'auto'\"\r\n container=\"body\">\r\n {{ column.name }} <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n </span>\r\n }@else{\r\n {{ column.name }}\r\n }\r\n </ng-template>\r\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\r\n <ng-container *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n <ng-container *abpVisible=\"row['_' + prop.name]?.visible\">\r\n @if (!row['_' + prop.name].component) {\r\n <div\r\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n }@else{\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n row['_' + prop.name].component;\r\n injector: row['_' + prop.name].injector\r\n \"\r\n ></ng-container>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n</ngx-datatable>\r\n","import { ChangeDetectionStrategy, Component, Injector, TrackByFunction } from '@angular/core';\r\nimport {\r\n HasCreateInjectorPipe,\r\n ToolbarAction,\r\n ToolbarActionDefault,\r\n ToolbarActionList,\r\n ToolbarComponent,\r\n} from '../../models/toolbar-actions';\r\nimport { EXTENSIONS_ACTION_TYPE } from '../../tokens/extensions.token';\r\nimport { AbstractActionsComponent } from '../abstract-actions/abstract-actions.component';\r\nimport { CreateInjectorPipe } from '../../pipes/create-injector.pipe';\r\nimport { LocalizationModule, PermissionDirective } from '@abp/ng.core';\r\nimport { NgClass, NgComponentOutlet } from '@angular/common';\r\n\r\n@Component({\r\n exportAs: 'abpPageToolbar',\r\n selector: 'abp-page-toolbar',\r\n standalone: true,\r\n imports: [\r\n CreateInjectorPipe,\r\n PermissionDirective,\r\n LocalizationModule,\r\n NgClass,\r\n NgComponentOutlet,\r\n ],\r\n templateUrl: './page-toolbar.component.html',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_ACTION_TYPE,\r\n useValue: 'toolbarActions',\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PageToolbarComponent<R = any>\r\n extends AbstractActionsComponent<ToolbarActionList<R>>\r\n implements HasCreateInjectorPipe<R>\r\n{\r\n defaultBtnClass = 'btn btn-sm btn-primary';\r\n\r\n getData = () => this.data;\r\n\r\n readonly trackByFn: TrackByFunction<ToolbarComponent<R>> = (_, item) =>\r\n item.action || item.component;\r\n\r\n constructor(public readonly injector: Injector) {\r\n super(injector);\r\n }\r\n\r\n asToolbarAction(value: ToolbarActionDefault): { value: ToolbarAction } {\r\n return {\r\n value: value as ToolbarAction,\r\n };\r\n }\r\n}\r\n","<div class=\"row justify-content-end mx-0 gap-2\" id=\"AbpContentToolbar\">\r\n @for (action of actionList; track action.component || action.action; let last = $last) {\r\n <div class=\"col-auto px-0 pt-0\" [class.pe-0]=\"last\">\r\n @if (action.visible(data)) {\r\n <ng-container *abpPermission=\"action.permission; runChangeDetection: false\">\r\n @if (action.component; as component) {\r\n <ng-container\r\n *ngComponentOutlet=\"component; injector: record | createInjector: action:this\"\r\n ></ng-container>\r\n\r\n }@else {\r\n @if (asToolbarAction(action).value; as toolbarAction ) {\r\n <button\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [ngClass]=\"toolbarAction?.btnClass ? toolbarAction?.btnClass : defaultBtnClass\"\r\n class=\"d-inline-flex align-items-center gap-1\"\r\n >\r\n <i [ngClass]=\"toolbarAction?.icon\" [class.me-1]=\"toolbarAction?.icon\"></i>\r\n {{ toolbarAction?.text | abpLocalization }}\r\n </button>\r\n } \r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n","import { ControlContainer, FormGroupDirective } from \"@angular/forms\";\r\n\r\nexport const EXTENSIBLE_FORM_VIEW_PROVIDER = { provide: ControlContainer, useExisting: FormGroupDirective }\r\n","import { ActionContributorCallback, ActionList, ActionsFactory, InferredAction } from \"../models/actions\";\r\nimport {\r\n EntityActionContributorCallbacks,\r\n EntityActionDefaults,\r\n EntityActions,\r\n EntityActionsFactory,\r\n} from '../models/entity-actions';\r\nimport {\r\n ToolbarActionContributorCallbacks,\r\n ToolbarActionDefaults,\r\n ToolbarActions,\r\n ToolbarActionsFactory,\r\n} from '../models/toolbar-actions';\r\n\r\nexport function mergeWithDefaultActions<F extends ActionsFactory<any>>(\r\n extension: F,\r\n defaultActions: InferredActionDefaults<F>,\r\n ...contributors: InferredActionContributorCallbacks<F>[]\r\n) {\r\n Object.keys(defaultActions).forEach((name: string) => {\r\n const actions: InferredActions<F> = extension.get(name);\r\n actions.clearContributors();\r\n actions.addContributor((actionList: ActionList<any, InferredAction<any>>) =>\r\n actionList.addManyTail(defaultActions[name]),\r\n );\r\n contributors.forEach(contributor =>\r\n (contributor[name] || []).forEach((callback: ActionContributorCallback<any>) =>\r\n actions.addContributor(callback),\r\n ),\r\n );\r\n });\r\n}\r\ntype InferredActionDefaults<F> = F extends EntityActionsFactory<infer RE>\r\n ? EntityActionDefaults<RE>\r\n : F extends ToolbarActionsFactory<infer RT>\r\n ? ToolbarActionDefaults<RT>\r\n : never;\r\n\r\ntype InferredActionContributorCallbacks<F> = F extends EntityActionsFactory<infer RE>\r\n ? EntityActionContributorCallbacks<RE>\r\n : F extends ToolbarActionsFactory<infer RT>\r\n ? ToolbarActionContributorCallbacks<RT>\r\n : never;\r\n\r\ntype InferredActions<F> = F extends EntityActionsFactory<infer RE>\r\n ? EntityActions<RE>\r\n : F extends ToolbarActionsFactory<infer RT>\r\n ? ToolbarActions<RT>\r\n : never;\r\n","import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { DateTimeAdapter,DateAdapter,TimeAdapter } from '@abp/ng.theme.shared';\r\n\r\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { FormPropList } from \"../models/form-props\";\r\nimport { PropData } from \"../models/props\";\r\nimport { ExtensionsService } from '../services/extensions.service';\r\nimport { EXTENSIONS_IDENTIFIER } from '../tokens/extensions.token';\r\n\r\nexport function generateFormFromProps<R = any>(data: PropData<R>) {\r\n const extensions = data.getInjected(ExtensionsService<R>);\r\n const identifier = data.getInjected(EXTENSIONS_IDENTIFIER);\r\n\r\n const form = new UntypedFormGroup({});\r\n const extraForm = new UntypedFormGroup({});\r\n form.addControl(EXTRA_PROPERTIES_KEY, extraForm);\r\n\r\n const record = data.record || {};\r\n const type = JSON.stringify(record) === '{}' ? 'create' : 'edit';\r\n const props: FormPropList<R> = extensions[`${type}FormProps`].get(identifier).props;\r\n const extraProperties = record[EXTRA_PROPERTIES_KEY] || {};\r\n\r\n props.forEach(({ value: prop }) => {\r\n const name = prop.name;\r\n const isExtraProperty = prop.isExtra || name in extraProperties;\r\n let value = isExtraProperty ? extraProperties[name] : name in record ? record[name] : undefined;\r\n\r\n if (typeof value === 'undefined') value = prop.defaultValue;\r\n\r\n if (value) {\r\n let adapter: DateAdapter | TimeAdapter | DateTimeAdapter;\r\n switch (prop.type) {\r\n case ePropType.Date:\r\n adapter = new DateAdapter();\r\n value = adapter.toModel(adapter.fromModel(value));\r\n break;\r\n case ePropType.Time:\r\n adapter = new TimeAdapter();\r\n value = adapter.toModel(adapter.fromModel(value));\r\n break;\r\n case ePropType.DateTime:\r\n adapter = new DateTimeAdapter();\r\n value = adapter.toModel(adapter.fromModel(value) as any);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n const formControl = new UntypedFormControl(value, {\r\n asyncValidators: prop.asyncValidators(data),\r\n validators: prop.validators(data),\r\n });\r\n\r\n (isExtraProperty ? extraForm : form).addControl(name, formControl);\r\n });\r\n\r\n return form;\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\r\nimport {\r\n EntityPropContributorCallbacks,\r\n EntityPropDefaults,\r\n EntityProps,\r\n EntityPropsFactory,\r\n} from '../models/entity-props';\r\nimport {\r\n CreateFormPropContributorCallbacks,\r\n CreateFormPropDefaults,\r\n CreateFormPropsFactory,\r\n EditFormPropContributorCallbacks,\r\n EditFormPropDefaults,\r\n EditFormPropsFactory,\r\n FormProps,\r\n} from '../models/form-props';\r\nimport {\r\n InferredProp,\r\n PropCallback,\r\n PropContributorCallback,\r\n PropList,\r\n PropsFactory,\r\n} from '../models/props';\r\n\r\nexport function createExtraPropertyValueResolver<T>(\r\n name: string,\r\n): PropCallback<T, Observable<any>> {\r\n return (data?) => of((data.record as { [key: string]: any })[EXTRA_PROPERTIES_KEY][name]);\r\n}\r\n\r\nexport function mergeWithDefaultProps<F extends PropsFactory<any>>(\r\n extension: F,\r\n defaultProps: InferredPropDefaults<F>,\r\n ...contributors: InferredPropContributorCallbacks<F>[]\r\n) {\r\n Object.keys(defaultProps).forEach((name: string) => {\r\n const props: InferredProps<F> = extension.get(name);\r\n props.clearContributors();\r\n props.addContributor((propList: PropList<any, InferredProp<any>>) =>\r\n propList.addManyTail(defaultProps[name]),\r\n );\r\n contributors.forEach(contributor =>\r\n (contributor[name] || []).forEach((callback: PropContributorCallback<any>) =>\r\n props.addContributor(callback),\r\n ),\r\n );\r\n });\r\n}\r\ntype InferredPropDefaults<F> = F extends EntityPropsFactory<infer RE>\r\n ? EntityPropDefaults<RE>\r\n : F extends CreateFormPropsFactory<infer RCF>\r\n ? CreateFormPropDefaults<RCF>\r\n : F extends EditFormPropsFactory<infer REF>\r\n ? EditFormPropDefaults<REF>\r\n : never;\r\n\r\ntype InferredPropContributorCallbacks<F> = F extends EntityPropsFactory<infer RE>\r\n ? EntityPropContributorCallbacks<RE>\r\n : F extends CreateFormPropsFactory<infer RCF>\r\n ? CreateFormPropContributorCallbacks<RCF>\r\n : F extends EditFormPropsFactory<infer REF>\r\n ? EditFormPropContributorCallbacks<REF>\r\n : never;\r\n\r\ntype InferredProps<F> = F extends EntityPropsFactory<infer RE>\r\n ? EntityProps<RE>\r\n : F extends CreateFormPropsFactory<infer RCF>\r\n ? FormProps<RCF>\r\n : F extends EditFormPropsFactory<infer REF>\r\n ? FormProps<REF>\r\n : never;\r\n","import { ABP, ExtensionEnumFieldDto, LocalizationService } from '@abp/ng.core';\r\nimport { merge, Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\nimport { PropCallback } from '../models/props';\r\n\r\nexport function createEnum(members: ExtensionEnumFieldDto[]) {\r\n const enumObject: any = {};\r\n\r\n members.forEach(({ name = '', value }) => {\r\n enumObject[(enumObject[name] = value as any)] = name;\r\n });\r\n\r\n return enumObject;\r\n}\r\n\r\nexport function createEnumValueResolver<T = any>(\r\n enumType: string,\r\n lookupEnum: ObjectExtensions.ExtensionEnumDto,\r\n propName: string,\r\n): PropCallback<T, Observable<string>> {\r\n return data => {\r\n const value = (data.record as any)[EXTRA_PROPERTIES_KEY][propName];\r\n const key = lookupEnum.transformed[value];\r\n const l10n = data.getInjected(LocalizationService);\r\n const localizeEnum = createEnumLocalizer(l10n, enumType, lookupEnum);\r\n\r\n return createLocalizationStream(l10n, localizeEnum(key));\r\n };\r\n}\r\n\r\nexport function createEnumOptions<T = any>(\r\n enumType: string,\r\n lookupEnum: ObjectExtensions.ExtensionEnumDto,\r\n): PropCallback<T, Observable<ABP.Option<any>[]>> {\r\n return data => {\r\n const l10n = data.getInjected(LocalizationService);\r\n const localizeEnum = createEnumLocalizer(l10n, enumType, lookupEnum);\r\n\r\n return createLocalizationStream(\r\n l10n,\r\n lookupEnum.fields.map(({ name = '', value }) => ({\r\n key: localizeEnum(name),\r\n value,\r\n })),\r\n );\r\n };\r\n}\r\n\r\nfunction createLocalizationStream(l10n: LocalizationService, mapTarget: any) {\r\n return merge(of(null), l10n.languageChange$).pipe(map(() => mapTarget));\r\n}\r\n\r\nfunction createEnumLocalizer(\r\n l10n: LocalizationService,\r\n enumType: string,\r\n lookupEnum: ObjectExtensions.ExtensionEnumDto,\r\n): (key: string) => string {\r\n const resource = lookupEnum.localizationResource;\r\n const shortType = getShortEnumType(enumType);\r\n\r\n return key =>\r\n l10n.localizeWithFallbackSync(\r\n [resource || ''],\r\n ['Enum:' + shortType + '.' + key, shortType + '.' + key, key],\r\n key,\r\n );\r\n}\r\n\r\nfunction getShortEnumType(enumType: string) {\r\n return enumType.split('.').pop();\r\n}\r\n","import {\r\n ApplicationLocalizationConfigurationDto,\r\n createLocalizationPipeKeyGenerator,\r\n} from '@abp/ng.core';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\n\r\nexport function createDisplayNameLocalizationPipeKeyGenerator(\r\n localization: ApplicationLocalizationConfigurationDto,\r\n) {\r\n const generateLocalizationPipeKey = createLocalizationPipeKeyGenerator(localization);\r\n\r\n return (\r\n displayName: ObjectExtensions.LocalizableStringDto,\r\n fallback: ObjectExtensions.LocalizableStringDto,\r\n ) => {\r\n if (displayName && displayName.name)\r\n return generateLocalizationPipeKey(\r\n [displayName.resource || ''],\r\n [displayName.name],\r\n displayName.name,\r\n );\r\n\r\n const key = generateLocalizationPipeKey(\r\n [fallback.resource || ''],\r\n ['DisplayName:' + fallback.name],\r\n undefined,\r\n );\r\n\r\n if (key) return key;\r\n\r\n return generateLocalizationPipeKey(\r\n [fallback.resource || ''],\r\n [fallback.name || ''],\r\n fallback.name,\r\n );\r\n };\r\n}\r\n","import { AbpValidators } from '@abp/ng.core';\r\nimport { ValidatorFn } from '@angular/forms';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\n\r\nexport function getValidatorsFromProperty(\r\n property: ObjectExtensions.ExtensionPropertyDto,\r\n): ValidatorFn[] {\r\n const validators: ValidatorFn[] = [];\r\n\r\n property.attributes.forEach(attr => {\r\n if (attr.typeSimple && attr.typeSimple in AbpValidators) {\r\n validators.push((AbpValidators as any)[attr.typeSimple](attr.config));\r\n }\r\n });\r\n\r\n return validators;\r\n}\r\n","import {\r\n ABP,\r\n ApplicationLocalizationConfigurationDto,\r\n ConfigStateService,\r\n ExtensionEnumDto,\r\n ExtensionPropertyUiLookupDto,\r\n ObjectExtensionsDto,\r\n} from '@abp/ng.core';\r\nimport { Observable, pipe, zip } from 'rxjs';\r\nimport { filter, map, switchMap, take } from 'rxjs/operators';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { EntityProp, EntityPropList } from '../models/entity-props';\r\nimport { FormProp, FormPropList } from '../models/form-props';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\nimport { PropCallback } from '../models/props';\r\nimport { createEnum, createEnumOptions, createEnumValueResolver } from './enum.util';\r\nimport { createDisplayNameLocalizationPipeKeyGenerator } from './localization.util';\r\nimport { createExtraPropertyValueResolver } from './props.util';\r\nimport {\r\n createTypeaheadDisplayNameGenerator,\r\n createTypeaheadOptions,\r\n getTypeaheadType,\r\n hasTypeaheadTextSuffix,\r\n} from './typeahead.util';\r\nimport { getValidatorsFromProperty } from './validation.util';\r\n\r\nfunction selectObjectExtensions(configState: ConfigStateService): Observable<ObjectExtensionsDto> {\r\n return configState.getOne$('objectExtensions');\r\n}\r\n\r\nfunction selectLocalization(\r\n configState: ConfigStateService,\r\n): Observable<ApplicationLocalizationConfigurationDto> {\r\n return configState.getOne$('localization');\r\n}\r\n\r\nfunction selectEnums(\r\n configState: ConfigStateService,\r\n): Observable<Record<string, ExtensionEnumDto>> {\r\n return selectObjectExtensions(configState).pipe(\r\n map((extensions: ObjectExtensionsDto) =>\r\n Object.keys(extensions.enums).reduce((acc, key) => {\r\n const { fields, localizationResource } = extensions.enums[key];\r\n acc[key] = {\r\n fields,\r\n localizationResource,\r\n transformed: createEnum(fields),\r\n };\r\n return acc;\r\n }, {} as Record<string, ObjectExtensions.ExtensionEnumDto>),\r\n ),\r\n );\r\n}\r\n\r\nexport function getObjectExtensionEntitiesFromStore(\r\n configState: ConfigStateService,\r\n moduleKey: string,\r\n) {\r\n return selectObjectExtensions(configState).pipe(\r\n map(extensions => {\r\n if (!extensions) return null;\r\n\r\n return (extensions.modules[moduleKey] || ({} as ObjectExtensions.ModuleExtensionDto))\r\n .entities;\r\n }),\r\n map(entities => (isUndefined(entities) ? ({} as any) : entities)),\r\n filter<ObjectExtensions.EntityExtensions>(Boolean),\r\n take(1),\r\n );\r\n}\r\n\r\nexport function mapEntitiesToContributors<T = any>(\r\n configState: ConfigStateService,\r\n resource: string,\r\n) {\r\n return pipe(\r\n switchMap((entities: any) =>\r\n zip(selectLocalization(configState), selectEnums(configState)).pipe(\r\n map(([localization, enums]) => {\r\n const generateDisplayName = createDisplayNameLocalizationPipeKeyGenerator(localization);\r\n\r\n return Object.keys(entities).reduce(\r\n (acc, key: keyof ObjectExtensions.EntityExtensions) => {\r\n acc.prop[key] = [];\r\n acc.createForm[key] = [];\r\n acc.editForm[key] = [];\r\n\r\n const entity: ObjectExtensions.EntityExtensionDto = entities[key];\r\n if (!entity) return acc;\r\n\r\n const properties = entity.properties;\r\n if (!properties) return acc;\r\n\r\n const mapPropertiesToContributors = createPropertiesToContributorsMapper<T>(\r\n generateDisplayName,\r\n resource,\r\n enums,\r\n );\r\n\r\n return mapPropertiesToContributors(properties, acc, key);\r\n },\r\n {\r\n prop: {},\r\n createForm: {},\r\n editForm: {},\r\n } as ObjectExtensions.PropContributors,\r\n );\r\n }),\r\n ),\r\n ),\r\n take(1),\r\n );\r\n}\r\n\r\nfunction createPropertiesToContributorsMapper<T = any>(\r\n generateDisplayName: ObjectExtensions.DisplayNameGeneratorFn,\r\n resource: string,\r\n enums: Record<string, ObjectExtensions.ExtensionEnumDto>,\r\n) {\r\n return (\r\n properties: ObjectExtensions.EntityExtensionProperties,\r\n contributors: ObjectExtensions.PropContributors<T>,\r\n key: string,\r\n ) => {\r\n const isExtra = true;\r\n const generateTypeaheadDisplayName = createTypeaheadDisplayNameGenerator(\r\n generateDisplayName,\r\n properties,\r\n );\r\n\r\n Object.keys(properties).forEach((name: string) => {\r\n const property = properties[name];\r\n const propName = name;\r\n const lookup = property.ui.lookup || ({} as ExtensionPropertyUiLookupDto);\r\n const type = getTypeaheadType(lookup, name) || getTypeFromProperty(property);\r\n const generateDN = hasTypeaheadTextSuffix(name)\r\n ? generateTypeaheadDisplayName\r\n : generateDisplayName;\r\n const displayName = generateDN(property.displayName, { name, resource });\r\n\r\n if (property.ui.onTable.isVisible) {\r\n const sortable = Boolean(property.ui.onTable.isSortable);\r\n const columnWidth = type === ePropType.Boolean ? 150 : 250;\r\n const valueResolver: PropCallback<T, Observable<any>> = type === ePropType.Enum &&\r\n property.type\r\n ? createEnumValueResolver(property.type, enums[property.type], propName)\r\n : createExtraPropertyValueResolver<T>(propName);\r\n\r\n const entityProp = new EntityProp<T>({\r\n type,\r\n name: propName,\r\n displayName,\r\n sortable,\r\n columnWidth,\r\n valueResolver,\r\n isExtra,\r\n });\r\n\r\n const contributor = (propList: EntityPropList<T>) => propList.addTail(entityProp);\r\n contributors.prop[key].push(contributor);\r\n }\r\n\r\n const isOnCreateForm = property.ui.onCreateForm.isVisible;\r\n const isOnEditForm = property.ui.onEditForm.isVisible;\r\n\r\n if (isOnCreateForm || isOnEditForm) {\r\n const defaultValue = property.defaultValue;\r\n const formText = property.formText;\r\n const validators = () => getValidatorsFromProperty(property);\r\n let options: PropCallback<any, Observable<ABP.Option<any>[]>> | undefined;\r\n if (type === ePropType.Enum)\r\n options = createEnumOptions(propName, enums[property.type || '']);\r\n else if (type === ePropType.Typeahead) options = createTypeaheadOptions(lookup);\r\n\r\n const formProp = new FormProp({\r\n type,\r\n name: propName,\r\n displayName,\r\n options,\r\n defaultValue,\r\n validators,\r\n isExtra,\r\n formText,\r\n });\r\n\r\n const formContributor = (propList: FormPropList<T>) => propList.addTail(formProp);\r\n\r\n if (isOnCreateForm) contributors.createForm[key].push(formContributor);\r\n if (isOnEditForm) contributors.editForm[key].push(formContributor);\r\n }\r\n });\r\n\r\n return contributors;\r\n };\r\n}\r\n\r\nfunction getTypeFromProperty(property: ObjectExtensions.ExtensionPropertyDto): ePropType {\r\n return property?.typeSimple?.replace(/\\?$/, '') as string as ePropType;\r\n}\r\n\r\nfunction isUndefined(obj: any): obj is undefined {\r\n return typeof obj === 'undefined';\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport {\r\n NgbDatepickerModule,\r\n NgbDropdownModule,\r\n NgbTimepickerModule,\r\n NgbTooltipModule,\r\n NgbTypeaheadModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n ExtensibleFormComponent,\r\n ExtensibleFormPropComponent,\r\n ExtensibleTableComponent,\r\n GridActionsComponent,\r\n PageToolbarComponent,\r\n ExtensibleDateTimePickerComponent,\r\n} from './components';\r\nimport { PropDataDirective } from './directives/prop-data.directive';\r\nimport { CreateInjectorPipe } from './pipes/create-injector.pipe';\r\nimport { DisabledDirective } from '@abp/ng.theme.shared';\r\n\r\nconst importWithExport = [\r\n DisabledDirective,\r\n ExtensibleDateTimePickerComponent,\r\n ExtensibleFormPropComponent,\r\n GridActionsComponent,\r\n PropDataDirective,\r\n PageToolbarComponent,\r\n CreateInjectorPipe,\r\n ExtensibleFormComponent,\r\n ExtensibleTableComponent,\r\n];\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CoreModule,\r\n ThemeSharedModule,\r\n NgxValidateCoreModule,\r\n NgbDatepickerModule,\r\n NgbDropdownModule,\r\n NgbTimepickerModule,\r\n NgbTypeaheadModule,\r\n NgbTooltipModule,\r\n ...importWithExport,\r\n ],\r\n exports: [...importWithExport],\r\n})\r\nexport class ExtensibleModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abp-ng.components-extensible.mjs","sources":["../../../../packages/components/extensible/src/lib/models/props.ts","../../../../packages/components/extensible/src/lib/models/form-props.ts","../../../../packages/components/extensible/src/lib/utils/factory.util.ts","../../../../packages/components/extensible/src/lib/components/date-time-picker/extensible-date-time-picker.component.ts","../../../../packages/components/extensible/src/lib/tokens/extensions.token.ts","../../../../packages/components/extensible/src/lib/constants/extra-properties.ts","../../../../packages/components/extensible/src/lib/utils/typeahead.util.ts","../../../../packages/components/extensible/src/lib/services/extensible-form-prop.service.ts","../../../../packages/components/extensible/src/lib/pipes/create-injector.pipe.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.html","../../../../packages/components/extensible/src/lib/models/actions.ts","../../../../packages/components/extensible/src/lib/models/entity-actions.ts","../../../../packages/components/extensible/src/lib/models/entity-props.ts","../../../../packages/components/extensible/src/lib/models/toolbar-actions.ts","../../../../packages/components/extensible/src/lib/services/extensions.service.ts","../../../../packages/components/extensible/src/lib/directives/prop-data.directive.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.html","../../../../packages/components/extensible/src/lib/components/abstract-actions/abstract-actions.component.ts","../../../../packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.ts","../../../../packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.html","../../../../packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html","../../../../packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.ts","../../../../packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.html","../../../../packages/components/extensible/src/lib/tokens/extensible-form-view-provider.token.ts","../../../../packages/components/extensible/src/lib/utils/actions.util.ts","../../../../packages/components/extensible/src/lib/utils/form-props.util.ts","../../../../packages/components/extensible/src/lib/utils/props.util.ts","../../../../packages/components/extensible/src/lib/utils/enum.util.ts","../../../../packages/components/extensible/src/lib/utils/localization.util.ts","../../../../packages/components/extensible/src/lib/utils/validation.util.ts","../../../../packages/components/extensible/src/lib/utils/state.util.ts","../../../../packages/components/extensible/src/lib/extensible.module.ts","../../../../packages/components/extensible/src/abp-ng.components-extensible.ts"],"sourcesContent":["import { LinkedList } from '@abp/utils';\r\nimport { InjectFlags, InjectionToken, InjectOptions, Type } from '@angular/core';\r\nimport { O } from 'ts-toolbelt';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { FormPropTooltip } from './form-props';\r\n\r\nexport abstract class PropList<R = any, A = Prop<R>> extends LinkedList<A> {}\r\n\r\nexport abstract class PropData<R = any> {\r\n abstract getInjected: <T>(\r\n token: Type<T> | InjectionToken<T>,\r\n notFoundValue?: T,\r\n options?: InjectOptions | InjectFlags,\r\n ) => T;\r\n index?: number;\r\n abstract record: R;\r\n\r\n get data(): ReadonlyPropData<R> {\r\n return {\r\n getInjected: this.getInjected,\r\n index: this.index,\r\n record: this.record,\r\n };\r\n }\r\n}\r\n\r\nexport type ReadonlyPropData<R = any> = O.Readonly<Omit<PropData<R>, 'data'>>;\r\n\r\nexport abstract class Prop<R = any> {\r\n constructor(\r\n public readonly type: ePropType,\r\n public readonly name: string,\r\n public readonly displayName: string,\r\n public readonly permission: string,\r\n public readonly visible: PropPredicate<R> = _ => true,\r\n public readonly isExtra = false,\r\n public readonly template?: Type<any>,\r\n public readonly className?: string,\r\n public readonly formText?: string,\r\n public readonly tooltip?: FormPropTooltip,\r\n public readonly displayTextResolver?: PropDisplayTextResolver<R>,\r\n ) {\r\n this.displayName = this.displayName || this.name;\r\n }\r\n}\r\n\r\nexport type PropCallback<T, R = any> = (data: Omit<PropData<T>, 'data'>, auxData?: any) => R;\r\nexport type PropPredicate<T> = (data?: Omit<PropData<T>, 'data'>, auxData?: any) => boolean;\r\nexport type PropDisplayTextResolver<T> = (data?: Omit<PropData<T>, 'data'>) => string;\r\n\r\nexport abstract class PropsFactory<C extends Props<any>> {\r\n protected abstract _ctor: Type<C>;\r\n private contributorCallbacks: PropContributorCallbacks<InferredPropList<C>> = {};\r\n\r\n get(name: string): C {\r\n this.contributorCallbacks[name] = this.contributorCallbacks[name] || [];\r\n\r\n return new this._ctor(this.contributorCallbacks[name]);\r\n }\r\n}\r\n\r\nexport abstract class Props<L extends PropList<any, InferredProp<L>>> {\r\n protected abstract _ctor: Type<L>;\r\n\r\n get props(): L {\r\n const propList = new this._ctor();\r\n\r\n this.callbackList.forEach(callback => callback(propList));\r\n\r\n return propList;\r\n }\r\n\r\n constructor(private readonly callbackList: PropContributorCallback<L>[]) {}\r\n\r\n addContributor(contributeCallback: PropContributorCallback<L>) {\r\n this.callbackList.push(contributeCallback);\r\n }\r\n\r\n clearContributors() {\r\n while (this.callbackList.length) this.callbackList.pop();\r\n }\r\n}\r\n\r\nexport type PropContributorCallbacks<L extends PropList<any, InferredProp<L>>> = Record<\r\n string,\r\n PropContributorCallback<L>[]\r\n>;\r\n\r\nexport type PropContributorCallback<L extends PropList<any, InferredProp<L>>> = (\r\n propList: L,\r\n) => any;\r\n\r\ntype InferredPropList<C> = C extends Props<infer L> ? L : never;\r\nexport type InferredProp<T> = T extends PropList<any, infer U> ? U : T;\r\n","import { ABP } from '@abp/ng.core';\r\nimport { Injector, Type } from '@angular/core';\r\nimport { AsyncValidatorFn, ValidatorFn } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { O } from 'ts-toolbelt';\r\nimport {\r\n Prop,\r\n PropCallback,\r\n PropContributorCallback,\r\n PropContributorCallbacks,\r\n PropData,\r\n PropDisplayTextResolver,\r\n PropList,\r\n PropPredicate,\r\n Props,\r\n PropsFactory,\r\n} from './props';\r\n\r\nexport class FormPropList<R = any> extends PropList<R, FormProp<R>> {}\r\n\r\nexport class FormProps<R = any> extends Props<PropList<R, FormProp<R>>> {\r\n protected _ctor: Type<FormPropList<R>> = FormPropList;\r\n}\r\n\r\nexport interface FormPropGroup {\r\n name: string;\r\n className?: string;\r\n}\r\n\r\nexport interface FormPropTooltip {\r\n text: string;\r\n placement?: 'top' | 'end' | 'bottom' | 'start';\r\n}\r\n\r\nexport class GroupedFormPropList<R = any> {\r\n public readonly items: GroupedFormPropItem[] = [];\r\n count = 1;\r\n addItem(item: FormProp<R>) {\r\n const groupName = item.group?.name;\r\n let group = this.items.find(i => i.group?.name === groupName);\r\n if (group) {\r\n group.formPropList.addTail(item);\r\n } else {\r\n group = {\r\n formPropList: new FormPropList(),\r\n group: item.group || { name: `default${this.count++}`, className: item.group?.className },\r\n };\r\n group.formPropList.addHead(item);\r\n this.items.push(group);\r\n }\r\n }\r\n}\r\n\r\nexport interface GroupedFormPropItem {\r\n group?: FormPropGroup;\r\n formPropList: FormPropList;\r\n}\r\n\r\nexport class CreateFormPropsFactory<R = any> extends PropsFactory<FormProps<R>> {\r\n protected _ctor: Type<FormProps<R>> = FormProps;\r\n}\r\n\r\nexport class EditFormPropsFactory<R = any> extends PropsFactory<FormProps<R>> {\r\n protected _ctor: Type<FormProps<R>> = FormProps;\r\n}\r\n\r\nexport class FormProp<R = any> extends Prop<R> {\r\n readonly validators: PropCallback<R, ValidatorFn[]>;\r\n readonly asyncValidators: PropCallback<R, AsyncValidatorFn[]>;\r\n readonly disabled: PropPredicate<R>;\r\n readonly readonly: PropPredicate<R>;\r\n readonly autocomplete: string;\r\n readonly defaultValue: boolean | number | string | Date | Array<string>;\r\n readonly options: PropCallback<R, Observable<ABP.Option<any>[]>> | undefined;\r\n readonly id: string | undefined;\r\n readonly template?: Type<any>;\r\n readonly className?: string;\r\n readonly group?: FormPropGroup | undefined;\r\n readonly displayTextResolver?: PropDisplayTextResolver<R>;\r\n readonly formText?: string;\r\n readonly tooltip?: FormPropTooltip;\r\n\r\n constructor(options: FormPropOptions<R>) {\r\n super(\r\n options.type,\r\n options.name,\r\n options.displayName || '',\r\n options.permission || '',\r\n options.visible,\r\n options.isExtra,\r\n options.template,\r\n options.className,\r\n options.formText,\r\n options.tooltip,\r\n );\r\n this.group = options.group;\r\n this.className = options.className;\r\n this.formText = options.formText;\r\n this.tooltip = options.tooltip;\r\n this.asyncValidators = options.asyncValidators || (_ => []);\r\n this.validators = options.validators || (_ => []);\r\n this.disabled = options.disabled || (_ => false);\r\n this.readonly = options.readonly || (_ => false);\r\n this.autocomplete = options.autocomplete || 'off';\r\n this.options = options.options;\r\n this.id = options.id || options.name;\r\n const defaultValue = options.defaultValue;\r\n this.defaultValue = isFalsyValue(defaultValue) ? (defaultValue as number) : defaultValue || '';\r\n this.displayTextResolver = options.displayTextResolver;\r\n }\r\n\r\n static create<R = any>(options: FormPropOptions<R>) {\r\n return new FormProp<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: FormPropOptions<R>[]) {\r\n return arrayOfOptions.map(FormProp.create);\r\n }\r\n}\r\n\r\nexport class FormPropData<R = any> extends PropData<R> {\r\n getInjected: PropData<R>['getInjected'];\r\n\r\n constructor(injector: Injector, public readonly record: R) {\r\n super();\r\n\r\n this.getInjected = injector.get.bind(injector);\r\n }\r\n}\r\n\r\nexport type FormPropOptions<R = any> = O.Optional<\r\n O.Writable<FormProp<R>>,\r\n | 'permission'\r\n | 'visible'\r\n | 'displayName'\r\n | 'isExtra'\r\n | 'validators'\r\n | 'asyncValidators'\r\n | 'disabled'\r\n | 'readonly'\r\n | 'autocomplete'\r\n | 'defaultValue'\r\n | 'options'\r\n | 'id'\r\n | 'displayTextResolver'\r\n | 'formText'\r\n | 'tooltip'\r\n>;\r\n\r\nexport type CreateFormPropDefaults<R = any> = Record<string, FormProp<R>[]>;\r\nexport type CreateFormPropContributorCallback<R = any> = PropContributorCallback<FormPropList<R>>;\r\nexport type CreateFormPropContributorCallbacks<R = any> = PropContributorCallbacks<FormPropList<R>>;\r\nexport type EditFormPropDefaults<R = any> = Record<string, FormProp<R>[]>;\r\nexport type EditFormPropContributorCallback<R = any> = PropContributorCallback<FormPropList<R>>;\r\nexport type EditFormPropContributorCallbacks<R = any> = PropContributorCallbacks<FormPropList<R>>;\r\n\r\nfunction isFalsyValue(defaultValue?: FormProp['defaultValue']): boolean {\r\n return [0, '', false].indexOf(defaultValue as any) > -1;\r\n}\r\n","export function selfFactory(dependency?: any) {\r\n return dependency;\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n Optional,\r\n SkipSelf,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ControlContainer, ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n NgbDateAdapter,\r\n NgbDatepickerModule,\r\n NgbInputDatepicker,\r\n NgbTimeAdapter,\r\n NgbTimepicker,\r\n NgbTimepickerModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { FormProp } from '../../models/form-props';\r\nimport { selfFactory } from '../../utils/factory.util';\r\nimport { DateTimeAdapter } from '@abp/ng.theme.shared';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n exportAs: 'abpExtensibleDateTimePicker',\r\n standalone: true,\r\n imports: [CommonModule, NgbDatepickerModule, ReactiveFormsModule, NgbTimepickerModule],\r\n selector: 'abp-extensible-date-time-picker',\r\n template: `\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (ngModelChange)=\"setTime($event)\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n <ngb-timepicker\r\n #timepicker\r\n [formControlName]=\"prop.name\"\r\n (ngModelChange)=\"setDate($event)\"\r\n [meridian]=\"meridian\"\r\n ></ngb-timepicker>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n {\r\n provide: ControlContainer,\r\n useFactory: selfFactory,\r\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n },\r\n {\r\n provide: NgbDateAdapter,\r\n useClass: DateTimeAdapter,\r\n },\r\n {\r\n provide: NgbTimeAdapter,\r\n useClass: DateTimeAdapter,\r\n },\r\n ],\r\n})\r\nexport class ExtensibleDateTimePickerComponent {\r\n @Input() prop!: FormProp;\r\n @Input() meridian = false;\r\n\r\n @ViewChild(NgbInputDatepicker) date!: NgbInputDatepicker;\r\n @ViewChild(NgbTimepicker) time!: NgbTimepicker;\r\n\r\n constructor(public readonly cdRef: ChangeDetectorRef) {}\r\n\r\n setDate(dateStr: string) {\r\n this.date.writeValue(dateStr);\r\n }\r\n\r\n setTime(dateStr: string) {\r\n this.time.writeValue(dateStr);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { ActionCallback, ReadonlyActionData as ActionData } from '../models/actions';\r\nimport { ExtensionsService } from '../services/extensions.service';\r\nimport { Observable } from 'rxjs';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { FormProp } from '../models/form-props';\r\n\r\nexport const EXTENSIONS_IDENTIFIER = new InjectionToken<string>('EXTENSIONS_IDENTIFIER');\r\nexport type ActionKeys = Extract<'entityActions' | 'toolbarActions', keyof ExtensionsService>;\r\n\r\nexport const EXTENSIONS_ACTION_TYPE = new InjectionToken<ActionKeys>('EXTENSIONS_ACTION_TYPE');\r\n\r\nexport const EXTENSIONS_ACTION_DATA = new InjectionToken<ActionData>('EXTENSIONS_ACTION_DATA');\r\nexport const EXTENSIONS_ACTION_CALLBACK = new InjectionToken<ActionCallback<unknown>>(\r\n 'EXTENSIONS_ACTION_DATA',\r\n);\r\nexport const PROP_DATA_STREAM = new InjectionToken<Observable<any>>('PROP_DATA_STREAM');\r\ntype EntityPropTypeClassMap = {\r\n [key in ePropType]: string;\r\n};\r\nexport type EntityPropTypeClass = Partial<EntityPropTypeClassMap>;\r\nexport const ENTITY_PROP_TYPE_CLASSES = new InjectionToken<EntityPropTypeClass>(\r\n 'ENTITY_PROP_TYPE_CLASSES',\r\n {\r\n factory: () => ({} as EntityPropTypeClass),\r\n },\r\n);\r\n\r\nexport const EXTENSIONS_FORM_PROP = new InjectionToken<FormProp>('EXTENSIONS_FORM_PROP');\r\nexport const EXTENSIONS_FORM_PROP_DATA = new InjectionToken<unknown>('EXTENSIONS_FORM_PROP_DATA');\r\n","export const EXTRA_PROPERTIES_KEY = 'extraProperties';\r\n","import { ABP, ExtensionPropertyUiLookupDto, RestService } from '@abp/ng.core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\nimport { PropCallback } from '../models/props';\r\n\r\nconst TYPEAHEAD_TEXT_SUFFIX = '_Text';\r\nconst TYPEAHEAD_TEXT_SUFFIX_REGEX = /_Text$/;\r\n\r\nexport function createTypeaheadOptions(\r\n lookup: ExtensionPropertyUiLookupDto,\r\n): PropCallback<any, Observable<ABP.Option<any>[]>> {\r\n return (data, searchText) =>\r\n searchText && data\r\n ? data\r\n .getInjected(RestService)\r\n .request(\r\n {\r\n method: 'GET',\r\n url: lookup.url || '',\r\n params: {\r\n [lookup.filterParamName || '']: searchText,\r\n },\r\n },\r\n { apiName: 'Default' },\r\n )\r\n .pipe(\r\n map((response: any) => {\r\n const list = response[lookup.resultListPropertyName || ''];\r\n const mapToOption = (item: any) => ({\r\n key: item[lookup.displayPropertyName || ''],\r\n value: item[lookup.valuePropertyName || ''],\r\n });\r\n return list.map(mapToOption);\r\n }),\r\n )\r\n : of([]);\r\n}\r\n\r\nexport function getTypeaheadType(lookup: ExtensionPropertyUiLookupDto, name: string) {\r\n if (!!lookup.url) {\r\n return ePropType.Typeahead;\r\n } else {\r\n return name.endsWith(TYPEAHEAD_TEXT_SUFFIX) ? ePropType.Hidden : undefined;\r\n }\r\n}\r\n\r\nexport function createTypeaheadDisplayNameGenerator(\r\n displayNameGeneratorFn: ObjectExtensions.DisplayNameGeneratorFn,\r\n properties: ObjectExtensions.EntityExtensionProperties,\r\n): ObjectExtensions.DisplayNameGeneratorFn {\r\n return (displayName, fallback) => {\r\n const name = removeTypeaheadTextSuffix(fallback.name || '');\r\n return displayNameGeneratorFn(displayName || properties[name].displayName, {\r\n name,\r\n resource: fallback.resource,\r\n });\r\n };\r\n}\r\n\r\nexport function addTypeaheadTextSuffix(name: string) {\r\n return name + TYPEAHEAD_TEXT_SUFFIX;\r\n}\r\n\r\nexport function hasTypeaheadTextSuffix(name: string) {\r\n return TYPEAHEAD_TEXT_SUFFIX_REGEX.test(name);\r\n}\r\n\r\nexport function removeTypeaheadTextSuffix(name: string) {\r\n return name.replace(TYPEAHEAD_TEXT_SUFFIX_REGEX, '');\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\n import { ValidatorFn, Validators } from '@angular/forms';\r\nimport { AbpValidators, ConfigStateService } from '@abp/ng.core';\r\nimport { map } from 'rxjs/operators';\r\nimport { FormProp } from '../models/form-props';\r\nimport { ePropType } from '../enums/props.enum';\r\n\r\n@Injectable()\r\nexport class ExtensibleFormPropService {\r\n readonly #configStateService = inject(ConfigStateService);\r\n\r\n meridian$ = this.#configStateService\r\n .getDeep$('localization.currentCulture.dateTimeFormat.shortTimePattern')\r\n .pipe(map((shortTimePattern: string | undefined) => (shortTimePattern || '').includes('tt')));\r\n\r\n isRequired(validator: ValidatorFn) {\r\n return (\r\n validator === Validators.required ||\r\n validator === AbpValidators.required ||\r\n validator.name === 'required'\r\n );\r\n }\r\n\r\n getComponent(prop: FormProp) {\r\n if (prop.template) {\r\n return 'template';\r\n }\r\n switch (prop.type) {\r\n case ePropType.Boolean:\r\n return 'checkbox';\r\n case ePropType.Date:\r\n return 'date';\r\n case ePropType.DateTime:\r\n return 'dateTime';\r\n case ePropType.Hidden:\r\n return 'hidden';\r\n case ePropType.MultiSelect:\r\n return 'multiselect';\r\n case ePropType.Text:\r\n return 'textarea';\r\n case ePropType.Time:\r\n return 'time';\r\n case ePropType.Typeahead:\r\n return 'typeahead';\r\n case ePropType.PasswordInputGroup:\r\n return 'passwordinputgroup';\r\n default:\r\n return prop.options ? 'select' : 'input';\r\n }\r\n }\r\n\r\n getType(prop: FormProp) {\r\n switch (prop.type) {\r\n case ePropType.Date:\r\n case ePropType.String:\r\n return 'text';\r\n case ePropType.Boolean:\r\n return 'checkbox';\r\n case ePropType.Number:\r\n return 'number';\r\n case ePropType.Email:\r\n return 'email';\r\n case ePropType.Password:\r\n return 'password';\r\n case ePropType.PasswordInputGroup:\r\n return 'passwordinputgroup';\r\n default:\r\n return 'hidden';\r\n }\r\n }\r\n\r\n calcAsterisks(validators: ValidatorFn[]) {\r\n if (!validators) return '';\r\n const required = validators.find(v => this.isRequired(v));\r\n return required ? '*' : '';\r\n }\r\n}\r\n","import {\r\n InjectFlags,\r\n InjectionToken,\r\n InjectOptions,\r\n Injector,\r\n Pipe,\r\n PipeTransform,\r\n Type,\r\n} from '@angular/core';\r\nimport { HasCreateInjectorPipe, ToolbarComponent } from '../models/toolbar-actions';\r\nimport { EXTENSIONS_ACTION_CALLBACK, EXTENSIONS_ACTION_DATA } from '../tokens/extensions.token';\r\n\r\n@Pipe({\r\n name: 'createInjector',\r\n standalone: true,\r\n})\r\nexport class CreateInjectorPipe<R> implements PipeTransform {\r\n public transform(\r\n _: any,\r\n action: ToolbarComponent<R>,\r\n context: HasCreateInjectorPipe<R>,\r\n ): Injector {\r\n const get = <T>(\r\n token: Type<T> | InjectionToken<T>,\r\n notFoundValue?: T,\r\n options?: InjectOptions | InjectFlags,\r\n ) => {\r\n const componentData = context.getData();\r\n const componentDataCallback = (data: any) => {\r\n data = data ?? context.getData();\r\n return action.action(data);\r\n };\r\n let extensionData;\r\n switch (token) {\r\n case EXTENSIONS_ACTION_DATA:\r\n extensionData = componentData;\r\n break;\r\n case EXTENSIONS_ACTION_CALLBACK:\r\n extensionData = componentDataCallback;\r\n break;\r\n default:\r\n extensionData = context.getInjected.call(context.injector, token, notFoundValue, options);\r\n }\r\n return extensionData;\r\n };\r\n return { get };\r\n }\r\n}\r\n","import { EXTENSIONS_FORM_PROP, EXTENSIONS_FORM_PROP_DATA } from './../../tokens/extensions.token';\r\nimport {\r\n ABP,\r\n LocalizationModule,\r\n PermissionDirective,\r\n ShowPasswordDirective,\r\n TrackByService,\r\n} from '@abp/ng.core';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Injector,\r\n Input,\r\n OnChanges, Optional,\r\n SimpleChanges,\r\n SkipSelf,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n ControlContainer,\r\n FormGroupDirective,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\nimport {\r\n NgbDateAdapter,\r\n NgbDatepickerModule,\r\n NgbTimeAdapter,\r\n NgbTimepickerModule,\r\n NgbTypeaheadModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { Observable, of } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\r\nimport { DateAdapter, DisabledDirective, TimeAdapter } from '@abp/ng.theme.shared';\r\nimport { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';\r\nimport { FormProp } from '../../models/form-props';\r\nimport { PropData } from '../../models/props';\r\nimport { selfFactory } from '../../utils/factory.util';\r\nimport { addTypeaheadTextSuffix } from '../../utils/typeahead.util';\r\nimport { eExtensibleComponents } from '../../enums/components';\r\nimport { ExtensibleDateTimePickerComponent } from '../date-time-picker/extensible-date-time-picker.component';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { ExtensibleFormPropService } from '../../services/extensible-form-prop.service';\r\nimport { CreateInjectorPipe } from '../../pipes/create-injector.pipe';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'abp-extensible-form-prop',\r\n templateUrl: './extensible-form-prop.component.html',\r\n standalone: true,\r\n imports: [\r\n ExtensibleDateTimePickerComponent,\r\n NgbDatepickerModule,\r\n NgbTimepickerModule,\r\n ReactiveFormsModule,\r\n DisabledDirective,\r\n NgxValidateCoreModule,\r\n NgbTooltip,\r\n NgbTypeaheadModule,\r\n CreateInjectorPipe,\r\n ShowPasswordDirective,\r\n PermissionDirective,\r\n LocalizationModule,\r\n CommonModule,\r\n FormsModule,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [ExtensibleFormPropService],\r\n viewProviders: [\r\n {\r\n provide: ControlContainer,\r\n useFactory: selfFactory,\r\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n },\r\n { provide: NgbDateAdapter, useClass: DateAdapter },\r\n { provide: NgbTimeAdapter, useClass: TimeAdapter },\r\n ],\r\n})\r\nexport class ExtensibleFormPropComponent implements OnChanges, AfterViewInit {\r\n protected service = inject(ExtensibleFormPropService);\r\n public readonly cdRef = inject(ChangeDetectorRef);\r\n public readonly track = inject(TrackByService);\r\n #groupDirective = inject(FormGroupDirective);\r\n private injector = inject(Injector);\r\n private readonly form = this.#groupDirective.form;\r\n\r\n @Input() data!: PropData;\r\n @Input() prop!: FormProp;\r\n @Input() first?: boolean;\r\n @Input() isFirstGroup?: boolean;\r\n @ViewChild('field') private fieldRef!: ElementRef<HTMLElement>;\r\n\r\n injectorForCustomComponent?: Injector;\r\n asterisk = '';\r\n containerClassName = 'mb-2';\r\n showPassword = false;\r\n options$: Observable<ABP.Option<any>[]> = of([]);\r\n validators: ValidatorFn[] = [];\r\n readonly!: boolean;\r\n typeaheadModel: any;\r\n passwordKey = eExtensibleComponents.PasswordComponent;\r\n\r\n disabledFn = (data: PropData) => false;\r\n\r\n get disabled() {\r\n return this.disabledFn(this.data);\r\n }\r\n\r\n setTypeaheadValue(selectedOption: ABP.Option<string>) {\r\n this.typeaheadModel = selectedOption || { key: null, value: null };\r\n const { key, value } = this.typeaheadModel;\r\n const [keyControl, valueControl] = this.getTypeaheadControls();\r\n if (valueControl?.value && !value) valueControl.markAsDirty();\r\n keyControl?.setValue(key);\r\n valueControl?.setValue(value);\r\n }\r\n\r\n search = (text$: Observable<string>) =>\r\n text$\r\n ? text$.pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n switchMap(text => this.prop?.options?.(this.data, text) || of([])),\r\n )\r\n : of([]);\r\n\r\n typeaheadFormatter = (option: ABP.Option<any>) => option.key;\r\n\r\n meridian$ = this.service.meridian$;\r\n\r\n get isInvalid() {\r\n const control = this.form.get(this.prop.name);\r\n return control?.touched && control.invalid;\r\n }\r\n\r\n private getTypeaheadControls() {\r\n const { name } = this.prop;\r\n const extraPropName = `${EXTRA_PROPERTIES_KEY}.${name}`;\r\n const keyControl =\r\n this.form.get(addTypeaheadTextSuffix(extraPropName)) ||\r\n this.form.get(addTypeaheadTextSuffix(name));\r\n const valueControl = this.form.get(extraPropName) || this.form.get(name);\r\n return [keyControl, valueControl];\r\n }\r\n\r\n private setAsterisk() {\r\n this.asterisk = this.service.calcAsterisks(this.validators);\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.isFirstGroup && this.first && this.fieldRef) {\r\n this.fieldRef.nativeElement.focus();\r\n }\r\n }\r\n\r\n getComponent(prop: FormProp): string {\r\n return this.service.getComponent(prop);\r\n }\r\n\r\n getType(prop: FormProp): string {\r\n return this.service.getType(prop);\r\n }\r\n\r\n ngOnChanges({ prop, data }: SimpleChanges) {\r\n const currentProp = prop?.currentValue as FormProp;\r\n const { options, readonly, disabled, validators, className, template } = currentProp || {};\r\n if (template) {\r\n this.injectorForCustomComponent = Injector.create({\r\n providers: [\r\n {\r\n provide: EXTENSIONS_FORM_PROP,\r\n useValue: currentProp,\r\n },\r\n {\r\n provide: EXTENSIONS_FORM_PROP_DATA,\r\n useValue: (data?.currentValue as PropData)?.record,\r\n },\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n parent: this.injector,\r\n });\r\n }\r\n\r\n if (options) this.options$ = options(this.data);\r\n if (readonly) this.readonly = readonly(this.data);\r\n\r\n if (disabled) {\r\n this.disabledFn = disabled;\r\n }\r\n if (validators) {\r\n this.validators = validators(this.data);\r\n this.setAsterisk();\r\n }\r\n if (className !== undefined) {\r\n this.containerClassName = className;\r\n }\r\n\r\n const [keyControl, valueControl] = this.getTypeaheadControls();\r\n if (keyControl && valueControl)\r\n this.typeaheadModel = { key: keyControl.value, value: valueControl.value };\r\n }\r\n}\r\n","<ng-container [ngSwitch]=\"getComponent(prop)\" *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n <ng-template ngSwitchCase=\"template\">\r\n <ng-container *ngComponentOutlet=\"prop.template; injector: injectorForCustomComponent\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <div [ngClass]=\"containerClassName\" class=\"mb-2\">\r\n <ng-template ngSwitchCase=\"input\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [type]=\"getType(prop)\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"hidden\">\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"checkbox\">\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n />\r\n <ng-template\r\n [ngTemplateOutlet]=\"label\"\r\n [ngTemplateOutletContext]=\"{ $implicit: 'form-check-label' }\"\r\n ></ng-template>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"select\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n class=\"form-select form-control\"\r\n >\r\n @for (option of options$ | async; track option.value) {\r\n <option\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n }\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"multiselect\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n multiple=\"multiple\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"typeahead\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <div #typeahead class=\"position-relative\" validationStyle validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [abpDisabled]=\"disabled\"\r\n [ngbTypeahead]=\"search\"\r\n [editable]=\"false\"\r\n [inputFormatter]=\"typeaheadFormatter\"\r\n [resultFormatter]=\"typeaheadFormatter\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [(ngModel)]=\"typeaheadModel\"\r\n (selectItem)=\"setTypeaheadValue($event.item)\"\r\n (blur)=\"setTypeaheadValue(typeaheadModel)\"\r\n [class.is-invalid]=\"typeahead.classList.contains('is-invalid')\"\r\n class=\"form-control\"\r\n />\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"date\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"time\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <ngb-timepicker [formControlName]=\"prop.name\"></ngb-timepicker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"dateTime\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-extensible-date-time-picker [prop]=\"prop\" [meridian]=\"meridian$ | async\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"textarea\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <textarea\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n ></textarea>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"passwordinputgroup\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <div class=\"input-group form-group\" validationTarget>\r\n <input\r\n class=\"form-control\"\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpShowPassword]=\"showPassword\"\r\n />\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"showPassword = !showPassword\">\r\n <i\r\n class=\"fa\"\r\n aria-hidden=\"true\"\r\n [ngClass]=\"{\r\n 'fa-eye-slash': !showPassword,\r\n 'fa-eye': showPassword\r\n }\"\r\n ></i>\r\n </button>\r\n </div>\r\n </ng-template>\r\n\r\n @if (prop.formText) {\r\n <small class=\"text-muted d-block\">{{\r\n prop.formText | abpLocalization\r\n }}</small>\r\n }\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #label let-classes>\r\n <label [htmlFor]=\"prop.id\" [ngClass]=\"classes || 'form-label'\">\r\n @if (prop.displayTextResolver) {\r\n {{ prop.displayTextResolver(data) | abpLocalization }}\r\n }@else{\r\n {{ prop.displayName | abpLocalization }}\r\n }\r\n {{ asterisk }}\r\n @if (prop.tooltip) {\r\n <i [ngbTooltip]=\"prop.tooltip.text | abpLocalization\" [placement]=\"prop.tooltip.placement || 'auto'\" container=\"body\" class=\"bi bi-info-circle\"></i>\r\n }\r\n </label>\r\n</ng-template>\r\n","import { LinkedList } from '@abp/utils';\r\nimport { InjectFlags, InjectionToken, InjectOptions, Type } from '@angular/core';\r\nimport { O } from 'ts-toolbelt';\r\n\r\nexport abstract class ActionList<R = any, A = Action<R>> extends LinkedList<A> {}\r\n\r\nexport abstract class ActionData<R = any> {\r\n abstract getInjected: <T>(\r\n token: Type<T> | InjectionToken<T>,\r\n notFoundValue?: T,\r\n flags?: InjectOptions | InjectFlags,\r\n ) => T;\r\n index?: number;\r\n abstract record: R;\r\n\r\n get data(): ReadonlyActionData<R> {\r\n return {\r\n getInjected: this.getInjected,\r\n index: this.index,\r\n record: this.record,\r\n };\r\n }\r\n}\r\n\r\nexport type ReadonlyActionData<R = any> = O.Readonly<Omit<ActionData<R>, 'data'>>;\r\n\r\nexport abstract class Action<R = any> {\r\n constructor(\r\n public readonly permission: string,\r\n public readonly visible: ActionPredicate<R> = () => true,\r\n public readonly action: ActionCallback<R> = () => {},\r\n public readonly btnClass?: string,\r\n public readonly btnStyle?: string,\r\n ) {}\r\n}\r\n\r\nexport type ActionCallback<T, R = any> = (data: Omit<ActionData<T>, 'data'>) => R;\r\nexport type ActionPredicate<T> = (data?: Omit<ActionData<T>, 'data'>) => boolean;\r\n\r\nexport abstract class ActionsFactory<C extends Actions<any>> {\r\n protected abstract _ctor: Type<C>;\r\n private contributorCallbacks: ActionContributorCallbacks<InferredActionList<C>> = {};\r\n\r\n get(name: string): C {\r\n this.contributorCallbacks[name] = this.contributorCallbacks[name] || [];\r\n\r\n return new this._ctor(this.contributorCallbacks[name]);\r\n }\r\n}\r\n\r\nexport abstract class Actions<L extends ActionList<any, InferredAction<L>>> {\r\n protected abstract _ctor: Type<L>;\r\n\r\n get actions(): L {\r\n const actionList = new this._ctor();\r\n\r\n this.callbackList.forEach(callback => callback(actionList));\r\n\r\n return actionList;\r\n }\r\n\r\n constructor(private readonly callbackList: ActionContributorCallback<L>[]) {}\r\n\r\n addContributor(contributeCallback: ActionContributorCallback<L>) {\r\n this.callbackList.push(contributeCallback);\r\n }\r\n\r\n clearContributors() {\r\n while (this.callbackList.length) this.callbackList.pop();\r\n }\r\n}\r\n\r\nexport type ActionContributorCallbacks<L extends ActionList<any, InferredAction<L>>> = Record<\r\n string,\r\n ActionContributorCallback<L>[]\r\n>;\r\n\r\nexport type ActionContributorCallback<L extends ActionList<any, InferredAction<L>>> = (\r\n actionList: L,\r\n) => any;\r\n\r\ntype InferredActionList<C> = C extends Actions<infer L> ? L : never;\r\nexport type InferredAction<T> = T extends ActionList<any, infer U> ? U : T;\r\n","import { Type } from '@angular/core';\r\nimport { O } from 'ts-toolbelt';\r\nimport {\r\n Action,\r\n ActionContributorCallback,\r\n ActionContributorCallbacks,\r\n ActionList,\r\n Actions,\r\n ActionsFactory,\r\n} from './actions';\r\nimport { FormPropTooltip } from './form-props';\r\n\r\nexport class EntityActionList<R = any> extends ActionList<R, EntityAction<R>> {}\r\n\r\nexport class EntityActions<R = any> extends Actions<EntityActionList<R>> {\r\n protected _ctor: Type<EntityActionList<R>> = EntityActionList;\r\n}\r\n\r\nexport class EntityActionsFactory<R = any> extends ActionsFactory<EntityActions<R>> {\r\n protected _ctor: Type<EntityActions<R>> = EntityActions;\r\n}\r\n\r\nexport class EntityAction<R = any> extends Action<R> {\r\n readonly text: string;\r\n readonly icon: string;\r\n readonly btnClass?: string;\r\n readonly btnStyle?: string;\r\n readonly showOnlyIcon?: boolean;\r\n readonly tooltip?: FormPropTooltip;\r\n\r\n constructor(options: EntityActionOptions<R>) {\r\n super(options.permission || '', options.visible, options.action);\r\n this.text = options.text;\r\n this.icon = options.icon || '';\r\n this.btnClass = options.btnClass || 'btn btn-primary text-center';\r\n this.btnStyle = options.btnStyle;\r\n this.showOnlyIcon = options.showOnlyIcon || false;\r\n this.tooltip = options.tooltip;\r\n }\r\n\r\n static create<R = any>(options: EntityActionOptions<R>) {\r\n return new EntityAction<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: EntityActionOptions<R>[]) {\r\n return arrayOfOptions.map(EntityAction.create);\r\n }\r\n}\r\n\r\nexport type EntityActionOptions<R = any> = O.Optional<\r\n O.Writable<EntityAction<R>>,\r\n 'permission' | 'visible' | 'icon'\r\n>;\r\n\r\nexport type EntityActionDefaults<R = any> = Record<string, EntityAction<R>[]>;\r\nexport type EntityActionContributorCallback<R = any> = ActionContributorCallback<\r\n EntityActionList<R>\r\n>;\r\nexport type EntityActionContributorCallbacks<R = any> = ActionContributorCallbacks<\r\n EntityActionList<R>\r\n>;\r\n","import { ABP, escapeHtmlChars } from '@abp/ng.core';\r\nimport { InjectFlags, InjectOptions, InjectionToken, Type } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { O } from 'ts-toolbelt';\r\nimport { ActionCallback } from './actions';\r\nimport {\r\n Prop,\r\n PropCallback,\r\n PropContributorCallback,\r\n PropContributorCallbacks,\r\n PropList,\r\n Props,\r\n PropsFactory,\r\n} from './props';\r\nimport { FormPropTooltip } from './form-props';\r\n\r\nexport class EntityPropList<R = any> extends PropList<R, EntityProp<R>> {}\r\n\r\nexport class EntityProps<R = any> extends Props<EntityPropList<R>> {\r\n protected _ctor: Type<EntityPropList<R>> = EntityPropList;\r\n}\r\n\r\nexport class EntityPropsFactory<R = any> extends PropsFactory<EntityProps<R>> {\r\n protected _ctor: Type<EntityProps<R>> = EntityProps;\r\n}\r\n\r\nexport class EntityProp<R = any> extends Prop<R> {\r\n readonly columnWidth: number | undefined;\r\n readonly sortable: boolean;\r\n readonly valueResolver: PropCallback<R, Observable<any>>;\r\n readonly action?: ActionCallback<R>;\r\n readonly component?: Type<any>;\r\n readonly enumList?: Array<ABP.Option<any>>;\r\n readonly tooltip?: FormPropTooltip;\r\n readonly columnVisible: ColumnPredicate;\r\n\r\n constructor(options: EntityPropOptions<R>) {\r\n super(\r\n options.type,\r\n options.name,\r\n options.displayName || '',\r\n options.permission || '',\r\n options.visible,\r\n options.isExtra,\r\n );\r\n\r\n this.columnVisible = options.columnVisible || (() => true);\r\n this.columnWidth = options.columnWidth;\r\n this.sortable = options.sortable || false;\r\n this.valueResolver =\r\n options.valueResolver ||\r\n (data => of(escapeHtmlChars((data.record as PropDataObject)[this.name])));\r\n if (options.action) {\r\n this.action = options.action;\r\n }\r\n if (options.component) {\r\n this.component = options.component;\r\n }\r\n if (options.enumList) {\r\n this.enumList = options.enumList;\r\n }\r\n this.tooltip = options.tooltip;\r\n }\r\n\r\n static create<R = any>(options: EntityPropOptions<R>) {\r\n return new EntityProp<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: EntityPropOptions<R>[]) {\r\n return arrayOfOptions.map(EntityProp.create);\r\n }\r\n}\r\n\r\nexport type EntityPropOptions<R = any> = O.Optional<\r\n O.Writable<EntityProp<R>>,\r\n | 'permission'\r\n | 'visible'\r\n | 'columnVisible'\r\n | 'displayName'\r\n | 'isExtra'\r\n | 'columnWidth'\r\n | 'sortable'\r\n | 'valueResolver'\r\n | 'action'\r\n | 'component'\r\n | 'enumList'\r\n>;\r\n\r\nexport type EntityPropDefaults<R = any> = Record<string, EntityProp<R>[]>;\r\nexport type EntityPropContributorCallback<R = any> = PropContributorCallback<EntityPropList<R>>;\r\nexport type EntityPropContributorCallbacks<R = any> = PropContributorCallbacks<EntityPropList<R>>;\r\nexport type ColumnPredicate = (getInjected: GetInjected, auxData?: any) => boolean;\r\nexport type GetInjected = <T>(\r\n token: Type<T> | InjectionToken<T>,\r\n notFoundValue?: T,\r\n options?: InjectOptions | InjectFlags,\r\n) => T;\r\ntype PropDataObject = { [key: string]: any };\r\n","import { Injector, Type } from '@angular/core';\r\nimport { O } from 'ts-toolbelt';\r\nimport {\r\n Action,\r\n ActionContributorCallback,\r\n ActionContributorCallbacks,\r\n ActionData,\r\n ActionList,\r\n Actions,\r\n ActionsFactory,\r\n ReadonlyActionData,\r\n} from './actions';\r\n\r\nexport class ToolbarActionList<R = any> extends ActionList<R, ToolbarActionDefault<R>> {}\r\n\r\nexport class ToolbarActions<R = any> extends Actions<ToolbarActionList<R>> {\r\n protected _ctor: Type<ToolbarActionList<R>> = ToolbarActionList;\r\n}\r\n\r\nexport class ToolbarActionsFactory<R = any> extends ActionsFactory<ToolbarActions<R>> {\r\n protected _ctor: Type<ToolbarActions<R>> = ToolbarActions;\r\n}\r\n\r\nexport class ToolbarAction<R = any> extends Action<R> {\r\n readonly text: string;\r\n readonly icon: string;\r\n readonly btnClass?: string;\r\n\r\n constructor(options: ToolbarActionOptions<R>) {\r\n super(options.permission || '', options.visible, options.action);\r\n this.text = options.text;\r\n this.icon = options.icon || '';\r\n if (options.btnClass) {\r\n this.btnClass = options.btnClass;\r\n }\r\n }\r\n\r\n static create<R = any>(options: ToolbarActionOptions<R>) {\r\n return new ToolbarAction<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: ToolbarActionOptions<R>[]) {\r\n return arrayOfOptions.map(ToolbarAction.create);\r\n }\r\n}\r\n\r\nexport class ToolbarComponent<R = any> extends Action<R> {\r\n readonly component: Type<any>;\r\n\r\n constructor(options: ToolbarComponentOptions<R>) {\r\n super(options.permission || '', options.visible, options.action);\r\n this.component = options.component;\r\n }\r\n\r\n static create<R = any>(options: ToolbarComponentOptions<R>) {\r\n return new ToolbarComponent<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: ToolbarComponentOptions<R>[]) {\r\n return arrayOfOptions.map(ToolbarComponent.create);\r\n }\r\n}\r\n\r\nexport type ToolbarActionOptions<R = any> = O.Optional<\r\n O.Writable<ToolbarAction<R>>,\r\n 'permission' | 'visible' | 'icon' | 'btnClass'\r\n>;\r\n\r\nexport type ToolbarComponentOptions<R = any> = O.Optional<\r\n O.Writable<ToolbarComponent<R>>,\r\n 'permission' | 'visible' | 'action'\r\n>;\r\n\r\nexport type ToolbarActionDefault<R = any> = ToolbarAction<R> | ToolbarComponent<R>;\r\n\r\nexport type ToolbarActionDefaults<R = any> = Record<string, Array<ToolbarActionDefault<R>>>;\r\nexport type ToolbarActionContributorCallback<R = any> = ActionContributorCallback<\r\n ToolbarActionList<R>\r\n>;\r\nexport type ToolbarActionContributorCallbacks<R = any> = ActionContributorCallbacks<\r\n ToolbarActionList<R>\r\n>;\r\nexport type InferredData<L> = ActionData<InferredRecord<L>>;\r\nexport type InferredRecord<L> = L extends ActionList<infer R> ? R : any;\r\n\r\nexport interface HasCreateInjectorPipe<R> {\r\n getData: () => ReadonlyActionData<R>;\r\n injector: Injector;\r\n getInjected: InferredData<ToolbarActionList<R>>['getInjected'];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EntityActionsFactory } from '../models/entity-actions';\r\nimport { EntityPropsFactory } from '../models/entity-props';\r\nimport { CreateFormPropsFactory, EditFormPropsFactory } from '../models/form-props';\r\nimport { ToolbarActionsFactory } from '../models/toolbar-actions';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ExtensionsService<R = any> {\r\n readonly entityActions = new EntityActionsFactory<R>();\r\n readonly toolbarActions = new ToolbarActionsFactory<R[]>();\r\n readonly entityProps = new EntityPropsFactory<R>();\r\n readonly createFormProps = new CreateFormPropsFactory<R>();\r\n readonly editFormProps = new EditFormPropsFactory<R>();\r\n}\r\n","/* eslint-disable @angular-eslint/no-input-rename */\r\nimport {\r\n Directive,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { PropData, PropList } from '../models/props';\r\n\r\n@Directive({\r\n exportAs: 'abpPropData',\r\n selector: '[abpPropData]',\r\n standalone: true,\r\n})\r\nexport class PropDataDirective<L extends PropList<any>>\r\n extends PropData<InferredData<L>>\r\n implements OnChanges, OnDestroy\r\n{\r\n @Input('abpPropDataFromList') propList?: L;\r\n\r\n @Input('abpPropDataWithRecord') record!: InferredData<L>['record'];\r\n\r\n @Input('abpPropDataAtIndex') index?: number;\r\n\r\n readonly getInjected: InferredData<L>['getInjected'];\r\n\r\n constructor(\r\n private tempRef: TemplateRef<any>,\r\n private vcRef: ViewContainerRef,\r\n injector: Injector,\r\n ) {\r\n super();\r\n\r\n this.getInjected = injector.get.bind(injector);\r\n }\r\n\r\n ngOnChanges() {\r\n this.vcRef.clear();\r\n\r\n this.vcRef.createEmbeddedView(this.tempRef, {\r\n $implicit: this.data,\r\n index: 0,\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.vcRef.clear();\r\n }\r\n}\r\n\r\ntype InferredData<L> = PropData<InferredRecord<L>>;\r\ntype InferredRecord<L> = L extends PropList<infer R> ? R : never;\r\n","import { TrackByService } from '@abp/ng.core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n inject,\r\n Input,\r\n Optional,\r\n QueryList,\r\n SkipSelf,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { ControlContainer, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\r\nimport { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';\r\nimport { FormProp, FormPropList, GroupedFormPropList } from '../../models/form-props';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport { EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';\r\nimport { selfFactory } from '../../utils/factory.util';\r\nimport { ExtensibleFormPropComponent } from './extensible-form-prop.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PropDataDirective } from '../../directives/prop-data.directive';\r\n\r\n@Component({\r\n standalone: true,\r\n exportAs: 'abpExtensibleForm',\r\n selector: 'abp-extensible-form',\r\n templateUrl: './extensible-form.component.html',\r\n imports: [CommonModule, PropDataDirective, ReactiveFormsModule, ExtensibleFormPropComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n {\r\n provide: ControlContainer,\r\n useFactory: selfFactory,\r\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n },\r\n ],\r\n})\r\nexport class ExtensibleFormComponent<R = any> {\r\n public readonly cdRef = inject(ChangeDetectorRef);\r\n public readonly track = inject(TrackByService);\r\n private readonly container = inject(ControlContainer);\r\n private readonly extensions = inject(ExtensionsService);\r\n private readonly identifier = inject(EXTENSIONS_IDENTIFIER);\r\n\r\n @ViewChildren(ExtensibleFormPropComponent)\r\n formProps!: QueryList<ExtensibleFormPropComponent>;\r\n\r\n @Input()\r\n set selectedRecord(record: R) {\r\n const type = !record || JSON.stringify(record) === '{}' ? 'create' : 'edit';\r\n const propList = this.extensions[`${type}FormProps`].get(this.identifier).props;\r\n this.groupedPropList = this.createGroupedList(propList);\r\n this.record = record;\r\n }\r\n\r\n extraPropertiesKey = EXTRA_PROPERTIES_KEY;\r\n groupedPropList!: GroupedFormPropList;\r\n groupedPropListOfArray: FormProp<any>[][];\r\n record!: R;\r\n\r\n get form(): UntypedFormGroup {\r\n return (this.container ? this.container.control : { controls: {} }) as UntypedFormGroup;\r\n }\r\n\r\n get extraProperties(): UntypedFormGroup {\r\n return (this.form.controls.extraProperties || { controls: {} }) as UntypedFormGroup;\r\n }\r\n\r\n createGroupedList(propList: FormPropList<R>) {\r\n const groupedFormPropList = new GroupedFormPropList();\r\n propList.forEach(item => {\r\n groupedFormPropList.addItem(item.value);\r\n });\r\n\r\n return groupedFormPropList;\r\n }\r\n\r\n //TODO: Reactor this method\r\n isAnyGroupMemberVisible(index: number, data) {\r\n const { items } = this.groupedPropList;\r\n const formPropList = items[index].formPropList.toArray();\r\n return formPropList.some(prop => prop.visible(data));\r\n }\r\n}\r\n","@if (form) {\r\n @for (groupedProp of groupedPropList.items; track i; let i = $index; let first = $first) {\r\n <ng-container *abpPropData=\"let data; fromList: groupedProp.formPropList; withRecord: record\">\r\n @if (isAnyGroupMemberVisible(i, data) && groupedProp.group?.className) {\r\n <div\r\n [ngClass]=\"groupedProp.group?.className\"\r\n [attr.data-name]=\"groupedProp.group?.name || groupedProp.group?.className\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"propListTemplate\"\r\n [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first}\"\r\n >\r\n </ng-container>\r\n </div>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"propListTemplate\"\r\n [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first }\"\r\n >\r\n </ng-container>\r\n }\r\n </ng-container>\r\n }\r\n}\r\n\r\n<ng-template let-groupedProp=\"groupedProp\" let-data=\"data\" let-isFirstGroup=\"isFirstGroup\" #propListTemplate>\r\n @for (prop of groupedProp.formPropList; let index = $index; let first = $first; track prop.name) {\r\n @if (prop.visible(data)) {\r\n @if (extraProperties.controls[prop.name]) {\r\n <ng-container [formGroupName]=\"extraPropertiesKey\">\r\n <abp-extensible-form-prop [prop]=\"prop\" [data]=\"data\" [class]=\"prop.className\" />\r\n </ng-container>\r\n } @else {\r\n @if (form.get(prop.name)) {\r\n <abp-extensible-form-prop\r\n [class]=\"prop.className\"\r\n [prop]=\"prop\"\r\n [data]=\"data\"\r\n [first]=\"first\"\r\n [isFirstGroup]=\"isFirstGroup\"\r\n />\r\n }\r\n }\r\n }\r\n }\r\n</ng-template>\r\n","import { Directive, Injector, Input } from '@angular/core';\r\nimport { ActionData, ActionList, InferredAction } from '../../models/actions';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport { EXTENSIONS_ACTION_TYPE, EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';\r\nimport { InferredData, InferredRecord } from '../../models/toolbar-actions';\r\n\r\n// Fix for https://github.com/angular/angular/issues/23904\r\n// @dynamic\r\n@Directive()\r\nexport abstract class AbstractActionsComponent<\r\n L extends ActionList<any, InferredAction<L>>,\r\n> extends ActionData<InferredRecord<L>> {\r\n readonly actionList: L;\r\n\r\n readonly getInjected: InferredData<L>['getInjected'];\r\n\r\n @Input() record!: InferredData<L>['record'];\r\n\r\n protected constructor(injector: Injector) {\r\n super();\r\n this.getInjected = injector.get.bind(injector);\r\n const extensions = injector.get(ExtensionsService);\r\n const name = injector.get(EXTENSIONS_IDENTIFIER);\r\n const type = injector.get(EXTENSIONS_ACTION_TYPE);\r\n this.actionList = extensions[type].get(name).actions as unknown as L;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Injector,\r\n Input,\r\n TrackByFunction,\r\n} from '@angular/core';\r\nimport { EntityAction, EntityActionList } from '../../models/entity-actions';\r\nimport { EXTENSIONS_ACTION_TYPE } from '../../tokens/extensions.token';\r\nimport { AbstractActionsComponent } from '../abstract-actions/abstract-actions.component';\r\nimport { NgbDropdownModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { LocalizationModule, PermissionDirective } from '@abp/ng.core';\r\nimport { EllipsisDirective } from '@abp/ng.theme.shared';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n exportAs: 'abpGridActions',\r\n standalone: true,\r\n imports: [\r\n NgbDropdownModule,\r\n EllipsisDirective,\r\n PermissionDirective,\r\n NgClass,\r\n LocalizationModule,\r\n NgTemplateOutlet,\r\n NgbTooltipModule\r\n ],\r\n selector: 'abp-grid-actions',\r\n templateUrl: './grid-actions.component.html',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_ACTION_TYPE,\r\n useValue: 'entityActions',\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class GridActionsComponent<R = any> extends AbstractActionsComponent<EntityActionList<R>> {\r\n @Input() icon = 'fa fa-cog';\r\n\r\n @Input() readonly index?: number;\r\n\r\n @Input() text = '';\r\n\r\n readonly trackByFn: TrackByFunction<EntityAction<R>> = (_, item) => item.text;\r\n\r\n constructor(injector: Injector) {\r\n super(injector);\r\n }\r\n}\r\n","@if (actionList.length > 1) {\r\n<div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button\r\n class=\"btn btn-primary btn-sm dropdown-toggle\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n ngbDropdownToggle\r\n >\r\n <i [ngClass]=\"icon\" [class.me-1]=\"icon\"></i>{{ text | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n @for (action of actionList; track action.text) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"dropDownBtnItemTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: action }\"\r\n >\r\n </ng-container>\r\n }\r\n </div>\r\n</div>\r\n} @if (actionList.length === 1) {\r\n<ng-container\r\n [ngTemplateOutlet]=\"btnTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: actionList.get(0).value }\"\r\n></ng-container>\r\n}\r\n\r\n<ng-template #dropDownBtnItemTmp let-action>\r\n @if (action.visible(data)) {\r\n <button\r\n ngbDropdownItem\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonContentTmp let-action>\r\n <i [ngClass]=\"action.icon\" [class.me-1]=\"action.icon && !action.showOnlyIcon\"></i>\r\n @if (!action.showOnlyIcon) {\r\n @if (action.icon) {\r\n <span>{{ action.text | abpLocalization }}</span>\r\n } @else {\r\n <div abpEllipsis>{{ action.text | abpLocalization }}</div>\r\n }\r\n }\r\n</ng-template>\r\n\r\n<ng-template #btnTmp let-action>\r\n @if (action.visible(data)) {\r\n @if (action.tooltip) {\r\n <button\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [class]=\"action.btnClass\"\r\n [style]=\"action.btnStyle\"\r\n [ngbTooltip]=\"action.tooltip.text | abpLocalization\" [placement]=\"action.tooltip.placement || 'auto'\" container=\"body\" \r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n } @else {\r\n <button\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [class]=\"action.btnClass\"\r\n [style]=\"action.btnStyle\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n }\r\n }\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n inject,\r\n Injector,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n TemplateRef,\r\n TrackByFunction,\r\n} from '@angular/core';\r\nimport { AsyncPipe, formatDate, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\r\n\r\nimport {\r\n ABP,\r\n ConfigStateService,\r\n getShortDateFormat,\r\n getShortDateShortTimeFormat,\r\n getShortTimeFormat,\r\n ListService,\r\n LocalizationModule,\r\n PermissionDirective,\r\n PermissionService,\r\n} from '@abp/ng.core';\r\nimport {\r\n AbpVisibleDirective,\r\n NgxDatatableDefaultDirective,\r\n NgxDatatableListDirective,\r\n} from '@abp/ng.theme.shared';\r\n\r\nimport { ePropType } from '../../enums/props.enum';\r\nimport { EntityActionList } from '../../models/entity-actions';\r\nimport { EntityProp, EntityPropList } from '../../models/entity-props';\r\nimport { PropData } from '../../models/props';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport {\r\n ENTITY_PROP_TYPE_CLASSES,\r\n EXTENSIONS_IDENTIFIER,\r\n PROP_DATA_STREAM,\r\n} from '../../tokens/extensions.token';\r\nimport { GridActionsComponent } from '../grid-actions/grid-actions.component';\r\n\r\nconst DEFAULT_ACTIONS_COLUMN_WIDTH = 150;\r\n\r\n@Component({\r\n exportAs: 'abpExtensibleTable',\r\n selector: 'abp-extensible-table',\r\n standalone: true,\r\n imports: [\r\n AbpVisibleDirective,\r\n NgxDatatableModule,\r\n GridActionsComponent,\r\n NgbTooltip,\r\n NgxDatatableDefaultDirective,\r\n NgxDatatableListDirective,\r\n PermissionDirective,\r\n LocalizationModule,\r\n AsyncPipe,\r\n NgTemplateOutlet,\r\n NgComponentOutlet,\r\n ],\r\n templateUrl: './extensible-table.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ExtensibleTableComponent<R = any> implements OnChanges {\r\n protected _actionsText!: string;\r\n @Input()\r\n set actionsText(value: string) {\r\n this._actionsText = value;\r\n }\r\n\r\n get actionsText(): string {\r\n return this._actionsText ?? (this.actionList.length > 1 ? 'AbpUi::Actions' : '');\r\n }\r\n\r\n @Input() data!: R[];\r\n @Input() list!: ListService;\r\n @Input() recordsTotal!: number;\r\n\r\n @Input() set actionsColumnWidth(width: number) {\r\n this.setColumnWidths(width ? Number(width) : undefined);\r\n }\r\n\r\n @Input() actionsTemplate?: TemplateRef<any>;\r\n\r\n @Output() tableActivate = new EventEmitter();\r\n\r\n hasAtLeastOnePermittedAction: boolean;\r\n\r\n readonly columnWidths!: number[];\r\n\r\n readonly propList: EntityPropList<R>;\r\n\r\n readonly actionList: EntityActionList<R>;\r\n\r\n readonly trackByFn: TrackByFunction<EntityProp<R>> = (_, item) => item.name;\r\n\r\n locale = inject(LOCALE_ID);\r\n private config = inject(ConfigStateService);\r\n entityPropTypeClasses = inject(ENTITY_PROP_TYPE_CLASSES);\r\n #injector = inject(Injector);\r\n getInjected = this.#injector.get.bind(this.#injector);\r\n\r\n constructor() {\r\n const extensions = this.#injector.get(ExtensionsService);\r\n const name = this.#injector.get(EXTENSIONS_IDENTIFIER);\r\n this.propList = extensions.entityProps.get(name).props;\r\n this.actionList = extensions['entityActions'].get(name)\r\n .actions as unknown as EntityActionList<R>;\r\n\r\n const permissionService = this.#injector.get(PermissionService);\r\n this.hasAtLeastOnePermittedAction =\r\n permissionService.filterItemsByPolicy(\r\n this.actionList.toArray().map(action => ({ requiredPolicy: action.permission })),\r\n ).length > 0;\r\n this.setColumnWidths(DEFAULT_ACTIONS_COLUMN_WIDTH);\r\n }\r\n\r\n private setColumnWidths(actionsColumn: number | undefined) {\r\n const widths = [actionsColumn];\r\n this.propList.forEach(({ value: prop }) => {\r\n widths.push(prop.columnWidth);\r\n });\r\n (this.columnWidths as any) = widths;\r\n }\r\n\r\n private getDate(value: Date | undefined, format: string | undefined) {\r\n return value && format ? formatDate(value, format, this.locale) : '';\r\n }\r\n\r\n private getIcon(value: boolean) {\r\n return value\r\n ? '<div class=\"text-success\"><i class=\"fa fa-check\" aria-hidden=\"true\"></i></div>'\r\n : '<div class=\"text-danger\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></div>';\r\n }\r\n\r\n private getEnum(rowValue: any, list: Array<ABP.Option<any>>) {\r\n if (!list || list.length < 1) return rowValue;\r\n const { key } = list.find(({ value }) => value === rowValue) || {};\r\n return key;\r\n }\r\n\r\n getContent(prop: EntityProp<R>, data: PropData): Observable<string> {\r\n return prop.valueResolver(data).pipe(\r\n map(value => {\r\n switch (prop.type) {\r\n case ePropType.Boolean:\r\n return this.getIcon(value);\r\n case ePropType.Date:\r\n return this.getDate(value, getShortDateFormat(this.config));\r\n case ePropType.Time:\r\n return this.getDate(value, getShortTimeFormat(this.config));\r\n case ePropType.DateTime:\r\n return this.getDate(value, getShortDateShortTimeFormat(this.config));\r\n case ePropType.Enum:\r\n return this.getEnum(value, prop.enumList || []);\r\n default:\r\n return value;\r\n // More types can be handled in the future\r\n }\r\n }),\r\n );\r\n }\r\n\r\n ngOnChanges({ data }: SimpleChanges) {\r\n if (!data?.currentValue) return;\r\n\r\n if (data.currentValue.length < 1) {\r\n this.list.totalCount = this.recordsTotal;\r\n }\r\n\r\n this.data = data.currentValue.map((record: any, index: number) => {\r\n this.propList.forEach(prop => {\r\n const propData = { getInjected: this.getInjected, record, index } as any;\r\n const value = this.getContent(prop.value, propData);\r\n\r\n const propKey = `_${prop.value.name}`;\r\n record[propKey] = {\r\n visible: prop.value.visible(propData),\r\n value,\r\n };\r\n if (prop.value.component) {\r\n record[propKey].injector = Injector.create({\r\n providers: [\r\n {\r\n provide: PROP_DATA_STREAM,\r\n useValue: value,\r\n },\r\n ],\r\n parent: this.#injector,\r\n });\r\n record[propKey].component = prop.value.component;\r\n }\r\n });\r\n\r\n return record;\r\n });\r\n }\r\n}\r\n","<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n (activate)=\"tableActivate.emit($event)\"\r\n>\r\n @if (actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)) {\r\n <ngx-datatable-column\r\n [name]=\"actionsText | abpLocalization\"\r\n [maxWidth]=\"columnWidths[0]\"\r\n [width]=\"columnWidths[0]\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n </ng-template>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n } @for (prop of propList; track prop.name; let i = $index) {\r\n <ngx-datatable-column\r\n *abpVisible=\"prop.columnVisible(getInjected)\"\r\n [width]=\"columnWidths[i + 1] || 200\"\r\n [name]=\"prop.displayName | abpLocalization\"\r\n [prop]=\"prop.name\"\r\n [sortable]=\"prop.sortable\"\r\n >\r\n <ng-template ngx-datatable-header-template let-column=\"column\">\r\n @if (prop.tooltip) {\r\n <span [ngbTooltip]=\"prop.tooltip.text | abpLocalization\" [placement]=\"prop.tooltip.placement || 'auto'\"\r\n container=\"body\">\r\n {{ column.name }} <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n </span>\r\n }@else{\r\n {{ column.name }}\r\n }\r\n </ng-template>\r\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\r\n <ng-container *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n <ng-container *abpVisible=\"row['_' + prop.name]?.visible\">\r\n @if (!row['_' + prop.name].component) {\r\n <div\r\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n }@else{\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n row['_' + prop.name].component;\r\n injector: row['_' + prop.name].injector\r\n \"\r\n ></ng-container>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n</ngx-datatable>\r\n","import { ChangeDetectionStrategy, Component, Injector, TrackByFunction } from '@angular/core';\r\nimport {\r\n HasCreateInjectorPipe,\r\n ToolbarAction,\r\n ToolbarActionDefault,\r\n ToolbarActionList,\r\n ToolbarComponent,\r\n} from '../../models/toolbar-actions';\r\nimport { EXTENSIONS_ACTION_TYPE } from '../../tokens/extensions.token';\r\nimport { AbstractActionsComponent } from '../abstract-actions/abstract-actions.component';\r\nimport { CreateInjectorPipe } from '../../pipes/create-injector.pipe';\r\nimport { LocalizationModule, PermissionDirective } from '@abp/ng.core';\r\nimport { NgClass, NgComponentOutlet } from '@angular/common';\r\n\r\n@Component({\r\n exportAs: 'abpPageToolbar',\r\n selector: 'abp-page-toolbar',\r\n standalone: true,\r\n imports: [\r\n CreateInjectorPipe,\r\n PermissionDirective,\r\n LocalizationModule,\r\n NgClass,\r\n NgComponentOutlet,\r\n ],\r\n templateUrl: './page-toolbar.component.html',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_ACTION_TYPE,\r\n useValue: 'toolbarActions',\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PageToolbarComponent<R = any>\r\n extends AbstractActionsComponent<ToolbarActionList<R>>\r\n implements HasCreateInjectorPipe<R>\r\n{\r\n defaultBtnClass = 'btn btn-sm btn-primary';\r\n\r\n getData = () => this.data;\r\n\r\n readonly trackByFn: TrackByFunction<ToolbarComponent<R>> = (_, item) =>\r\n item.action || item.component;\r\n\r\n constructor(public readonly injector: Injector) {\r\n super(injector);\r\n }\r\n\r\n asToolbarAction(value: ToolbarActionDefault): { value: ToolbarAction } {\r\n return {\r\n value: value as ToolbarAction,\r\n };\r\n }\r\n}\r\n","<div class=\"row justify-content-end mx-0 gap-2\" id=\"AbpContentToolbar\">\r\n @for (action of actionList; track action.component || action.action; let last = $last) {\r\n <div class=\"col-auto px-0 pt-0\" [class.pe-0]=\"last\">\r\n @if (action.visible(data)) {\r\n <ng-container *abpPermission=\"action.permission; runChangeDetection: false\">\r\n @if (action.component; as component) {\r\n <ng-container\r\n *ngComponentOutlet=\"component; injector: record | createInjector: action:this\"\r\n ></ng-container>\r\n\r\n }@else {\r\n @if (asToolbarAction(action).value; as toolbarAction ) {\r\n <button\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [ngClass]=\"toolbarAction?.btnClass ? toolbarAction?.btnClass : defaultBtnClass\"\r\n class=\"d-inline-flex align-items-center gap-1\"\r\n >\r\n <i [ngClass]=\"toolbarAction?.icon\" [class.me-1]=\"toolbarAction?.icon\"></i>\r\n {{ toolbarAction?.text | abpLocalization }}\r\n </button>\r\n } \r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n","import { ControlContainer, FormGroupDirective } from \"@angular/forms\";\r\n\r\nexport const EXTENSIBLE_FORM_VIEW_PROVIDER = { provide: ControlContainer, useExisting: FormGroupDirective }\r\n","import { ActionContributorCallback, ActionList, ActionsFactory, InferredAction } from \"../models/actions\";\r\nimport {\r\n EntityActionContributorCallbacks,\r\n EntityActionDefaults,\r\n EntityActions,\r\n EntityActionsFactory,\r\n} from '../models/entity-actions';\r\nimport {\r\n ToolbarActionContributorCallbacks,\r\n ToolbarActionDefaults,\r\n ToolbarActions,\r\n ToolbarActionsFactory,\r\n} from '../models/toolbar-actions';\r\n\r\nexport function mergeWithDefaultActions<F extends ActionsFactory<any>>(\r\n extension: F,\r\n defaultActions: InferredActionDefaults<F>,\r\n ...contributors: InferredActionContributorCallbacks<F>[]\r\n) {\r\n Object.keys(defaultActions).forEach((name: string) => {\r\n const actions: InferredActions<F> = extension.get(name);\r\n actions.clearContributors();\r\n actions.addContributor((actionList: ActionList<any, InferredAction<any>>) =>\r\n actionList.addManyTail(defaultActions[name]),\r\n );\r\n contributors.forEach(contributor =>\r\n (contributor[name] || []).forEach((callback: ActionContributorCallback<any>) =>\r\n actions.addContributor(callback),\r\n ),\r\n );\r\n });\r\n}\r\ntype InferredActionDefaults<F> = F extends EntityActionsFactory<infer RE>\r\n ? EntityActionDefaults<RE>\r\n : F extends ToolbarActionsFactory<infer RT>\r\n ? ToolbarActionDefaults<RT>\r\n : never;\r\n\r\ntype InferredActionContributorCallbacks<F> = F extends EntityActionsFactory<infer RE>\r\n ? EntityActionContributorCallbacks<RE>\r\n : F extends ToolbarActionsFactory<infer RT>\r\n ? ToolbarActionContributorCallbacks<RT>\r\n : never;\r\n\r\ntype InferredActions<F> = F extends EntityActionsFactory<infer RE>\r\n ? EntityActions<RE>\r\n : F extends ToolbarActionsFactory<infer RT>\r\n ? ToolbarActions<RT>\r\n : never;\r\n","import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { DateTimeAdapter,DateAdapter,TimeAdapter } from '@abp/ng.theme.shared';\r\n\r\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { FormPropList } from \"../models/form-props\";\r\nimport { PropData } from \"../models/props\";\r\nimport { ExtensionsService } from '../services/extensions.service';\r\nimport { EXTENSIONS_IDENTIFIER } from '../tokens/extensions.token';\r\n\r\nexport function generateFormFromProps<R = any>(data: PropData<R>) {\r\n const extensions = data.getInjected(ExtensionsService<R>);\r\n const identifier = data.getInjected(EXTENSIONS_IDENTIFIER);\r\n\r\n const form = new UntypedFormGroup({});\r\n const extraForm = new UntypedFormGroup({});\r\n form.addControl(EXTRA_PROPERTIES_KEY, extraForm);\r\n\r\n const record = data.record || {};\r\n const type = JSON.stringify(record) === '{}' ? 'create' : 'edit';\r\n const props: FormPropList<R> = extensions[`${type}FormProps`].get(identifier).props;\r\n const extraProperties = record[EXTRA_PROPERTIES_KEY] || {};\r\n\r\n props.forEach(({ value: prop }) => {\r\n const name = prop.name;\r\n const isExtraProperty = prop.isExtra || name in extraProperties;\r\n let value = isExtraProperty ? extraProperties[name] : name in record ? record[name] : undefined;\r\n\r\n if (typeof value === 'undefined') value = prop.defaultValue;\r\n\r\n if (value) {\r\n let adapter: DateAdapter | TimeAdapter | DateTimeAdapter;\r\n switch (prop.type) {\r\n case ePropType.Date:\r\n adapter = new DateAdapter();\r\n value = adapter.toModel(adapter.fromModel(value));\r\n break;\r\n case ePropType.Time:\r\n adapter = new TimeAdapter();\r\n value = adapter.toModel(adapter.fromModel(value));\r\n break;\r\n case ePropType.DateTime:\r\n adapter = new DateTimeAdapter();\r\n value = adapter.toModel(adapter.fromModel(value) as any);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n const formControl = new UntypedFormControl(value, {\r\n asyncValidators: prop.asyncValidators(data),\r\n validators: prop.validators(data),\r\n });\r\n\r\n (isExtraProperty ? extraForm : form).addControl(name, formControl);\r\n });\r\n\r\n return form;\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\r\nimport {\r\n EntityPropContributorCallbacks,\r\n EntityPropDefaults,\r\n EntityProps,\r\n EntityPropsFactory,\r\n} from '../models/entity-props';\r\nimport {\r\n CreateFormPropContributorCallbacks,\r\n CreateFormPropDefaults,\r\n CreateFormPropsFactory,\r\n EditFormPropContributorCallbacks,\r\n EditFormPropDefaults,\r\n EditFormPropsFactory,\r\n FormProps,\r\n} from '../models/form-props';\r\nimport {\r\n InferredProp,\r\n PropCallback,\r\n PropContributorCallback,\r\n PropList,\r\n PropsFactory,\r\n} from '../models/props';\r\n\r\nexport function createExtraPropertyValueResolver<T>(\r\n name: string,\r\n): PropCallback<T, Observable<any>> {\r\n return (data?) => of((data.record as { [key: string]: any })[EXTRA_PROPERTIES_KEY][name]);\r\n}\r\n\r\nexport function mergeWithDefaultProps<F extends PropsFactory<any>>(\r\n extension: F,\r\n defaultProps: InferredPropDefaults<F>,\r\n ...contributors: InferredPropContributorCallbacks<F>[]\r\n) {\r\n Object.keys(defaultProps).forEach((name: string) => {\r\n const props: InferredProps<F> = extension.get(name);\r\n props.clearContributors();\r\n props.addContributor((propList: PropList<any, InferredProp<any>>) =>\r\n propList.addManyTail(defaultProps[name]),\r\n );\r\n contributors.forEach(contributor =>\r\n (contributor[name] || []).forEach((callback: PropContributorCallback<any>) =>\r\n props.addContributor(callback),\r\n ),\r\n );\r\n });\r\n}\r\ntype InferredPropDefaults<F> = F extends EntityPropsFactory<infer RE>\r\n ? EntityPropDefaults<RE>\r\n : F extends CreateFormPropsFactory<infer RCF>\r\n ? CreateFormPropDefaults<RCF>\r\n : F extends EditFormPropsFactory<infer REF>\r\n ? EditFormPropDefaults<REF>\r\n : never;\r\n\r\ntype InferredPropContributorCallbacks<F> = F extends EntityPropsFactory<infer RE>\r\n ? EntityPropContributorCallbacks<RE>\r\n : F extends CreateFormPropsFactory<infer RCF>\r\n ? CreateFormPropContributorCallbacks<RCF>\r\n : F extends EditFormPropsFactory<infer REF>\r\n ? EditFormPropContributorCallbacks<REF>\r\n : never;\r\n\r\ntype InferredProps<F> = F extends EntityPropsFactory<infer RE>\r\n ? EntityProps<RE>\r\n : F extends CreateFormPropsFactory<infer RCF>\r\n ? FormProps<RCF>\r\n : F extends EditFormPropsFactory<infer REF>\r\n ? FormProps<REF>\r\n : never;\r\n","import { ABP, ExtensionEnumFieldDto, LocalizationService } from '@abp/ng.core';\r\nimport { merge, Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\nimport { PropCallback } from '../models/props';\r\n\r\nexport function createEnum(members: ExtensionEnumFieldDto[]) {\r\n const enumObject: any = {};\r\n\r\n members.forEach(({ name = '', value }) => {\r\n enumObject[(enumObject[name] = value as any)] = name;\r\n });\r\n\r\n return enumObject;\r\n}\r\n\r\nexport function createEnumValueResolver<T = any>(\r\n enumType: string,\r\n lookupEnum: ObjectExtensions.ExtensionEnumDto,\r\n propName: string,\r\n): PropCallback<T, Observable<string>> {\r\n return data => {\r\n const value = (data.record as any)[EXTRA_PROPERTIES_KEY][propName];\r\n const key = lookupEnum.transformed[value];\r\n const l10n = data.getInjected(LocalizationService);\r\n const localizeEnum = createEnumLocalizer(l10n, enumType, lookupEnum);\r\n\r\n return createLocalizationStream(l10n, localizeEnum(key));\r\n };\r\n}\r\n\r\nexport function createEnumOptions<T = any>(\r\n enumType: string,\r\n lookupEnum: ObjectExtensions.ExtensionEnumDto,\r\n): PropCallback<T, Observable<ABP.Option<any>[]>> {\r\n return data => {\r\n const l10n = data.getInjected(LocalizationService);\r\n const localizeEnum = createEnumLocalizer(l10n, enumType, lookupEnum);\r\n\r\n return createLocalizationStream(\r\n l10n,\r\n lookupEnum.fields.map(({ name = '', value }) => ({\r\n key: localizeEnum(name),\r\n value,\r\n })),\r\n );\r\n };\r\n}\r\n\r\nfunction createLocalizationStream(l10n: LocalizationService, mapTarget: any) {\r\n return merge(of(null), l10n.languageChange$).pipe(map(() => mapTarget));\r\n}\r\n\r\nfunction createEnumLocalizer(\r\n l10n: LocalizationService,\r\n enumType: string,\r\n lookupEnum: ObjectExtensions.ExtensionEnumDto,\r\n): (key: string) => string {\r\n const resource = lookupEnum.localizationResource;\r\n const shortType = getShortEnumType(enumType);\r\n\r\n return key =>\r\n l10n.localizeWithFallbackSync(\r\n [resource || ''],\r\n ['Enum:' + shortType + '.' + key, shortType + '.' + key, key],\r\n key,\r\n );\r\n}\r\n\r\nfunction getShortEnumType(enumType: string) {\r\n return enumType.split('.').pop();\r\n}\r\n","import {\r\n ApplicationLocalizationConfigurationDto,\r\n createLocalizationPipeKeyGenerator,\r\n} from '@abp/ng.core';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\n\r\nexport function createDisplayNameLocalizationPipeKeyGenerator(\r\n localization: ApplicationLocalizationConfigurationDto,\r\n) {\r\n const generateLocalizationPipeKey = createLocalizationPipeKeyGenerator(localization);\r\n\r\n return (\r\n displayName: ObjectExtensions.LocalizableStringDto,\r\n fallback: ObjectExtensions.LocalizableStringDto,\r\n ) => {\r\n if (displayName && displayName.name)\r\n return generateLocalizationPipeKey(\r\n [displayName.resource || ''],\r\n [displayName.name],\r\n displayName.name,\r\n );\r\n\r\n const key = generateLocalizationPipeKey(\r\n [fallback.resource || ''],\r\n ['DisplayName:' + fallback.name],\r\n undefined,\r\n );\r\n\r\n if (key) return key;\r\n\r\n return generateLocalizationPipeKey(\r\n [fallback.resource || ''],\r\n [fallback.name || ''],\r\n fallback.name,\r\n );\r\n };\r\n}\r\n","import { AbpValidators } from '@abp/ng.core';\r\nimport { ValidatorFn } from '@angular/forms';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\n\r\nexport function getValidatorsFromProperty(\r\n property: ObjectExtensions.ExtensionPropertyDto,\r\n): ValidatorFn[] {\r\n const validators: ValidatorFn[] = [];\r\n\r\n property.attributes.forEach(attr => {\r\n if (attr.typeSimple && attr.typeSimple in AbpValidators) {\r\n validators.push((AbpValidators as any)[attr.typeSimple](attr.config));\r\n }\r\n });\r\n\r\n return validators;\r\n}\r\n","import {\r\n ABP,\r\n ApplicationLocalizationConfigurationDto,\r\n ConfigStateService,\r\n ExtensionEnumDto,\r\n ExtensionPropertyUiLookupDto,\r\n ObjectExtensionsDto,\r\n} from '@abp/ng.core';\r\nimport { Observable, pipe, zip } from 'rxjs';\r\nimport { filter, map, switchMap, take } from 'rxjs/operators';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { EntityProp, EntityPropList } from '../models/entity-props';\r\nimport { FormProp, FormPropList } from '../models/form-props';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\nimport { PropCallback } from '../models/props';\r\nimport { createEnum, createEnumOptions, createEnumValueResolver } from './enum.util';\r\nimport { createDisplayNameLocalizationPipeKeyGenerator } from './localization.util';\r\nimport { createExtraPropertyValueResolver } from './props.util';\r\nimport {\r\n createTypeaheadDisplayNameGenerator,\r\n createTypeaheadOptions,\r\n getTypeaheadType,\r\n hasTypeaheadTextSuffix,\r\n} from './typeahead.util';\r\nimport { getValidatorsFromProperty } from './validation.util';\r\n\r\nfunction selectObjectExtensions(configState: ConfigStateService): Observable<ObjectExtensionsDto> {\r\n return configState.getOne$('objectExtensions');\r\n}\r\n\r\nfunction selectLocalization(\r\n configState: ConfigStateService,\r\n): Observable<ApplicationLocalizationConfigurationDto> {\r\n return configState.getOne$('localization');\r\n}\r\n\r\nfunction selectEnums(\r\n configState: ConfigStateService,\r\n): Observable<Record<string, ExtensionEnumDto>> {\r\n return selectObjectExtensions(configState).pipe(\r\n map((extensions: ObjectExtensionsDto) =>\r\n Object.keys(extensions.enums).reduce((acc, key) => {\r\n const { fields, localizationResource } = extensions.enums[key];\r\n acc[key] = {\r\n fields,\r\n localizationResource,\r\n transformed: createEnum(fields),\r\n };\r\n return acc;\r\n }, {} as Record<string, ObjectExtensions.ExtensionEnumDto>),\r\n ),\r\n );\r\n}\r\n\r\nexport function getObjectExtensionEntitiesFromStore(\r\n configState: ConfigStateService,\r\n moduleKey: string,\r\n) {\r\n return selectObjectExtensions(configState).pipe(\r\n map(extensions => {\r\n if (!extensions) return null;\r\n\r\n return (extensions.modules[moduleKey] || ({} as ObjectExtensions.ModuleExtensionDto))\r\n .entities;\r\n }),\r\n map(entities => (isUndefined(entities) ? ({} as any) : entities)),\r\n filter<ObjectExtensions.EntityExtensions>(Boolean),\r\n take(1),\r\n );\r\n}\r\n\r\nexport function mapEntitiesToContributors<T = any>(\r\n configState: ConfigStateService,\r\n resource: string,\r\n) {\r\n return pipe(\r\n switchMap((entities: any) =>\r\n zip(selectLocalization(configState), selectEnums(configState)).pipe(\r\n map(([localization, enums]) => {\r\n const generateDisplayName = createDisplayNameLocalizationPipeKeyGenerator(localization);\r\n\r\n return Object.keys(entities).reduce(\r\n (acc, key: keyof ObjectExtensions.EntityExtensions) => {\r\n acc.prop[key] = [];\r\n acc.createForm[key] = [];\r\n acc.editForm[key] = [];\r\n\r\n const entity: ObjectExtensions.EntityExtensionDto = entities[key];\r\n if (!entity) return acc;\r\n\r\n const properties = entity.properties;\r\n if (!properties) return acc;\r\n\r\n const mapPropertiesToContributors = createPropertiesToContributorsMapper<T>(\r\n generateDisplayName,\r\n resource,\r\n enums,\r\n );\r\n\r\n return mapPropertiesToContributors(properties, acc, key);\r\n },\r\n {\r\n prop: {},\r\n createForm: {},\r\n editForm: {},\r\n } as ObjectExtensions.PropContributors,\r\n );\r\n }),\r\n ),\r\n ),\r\n take(1),\r\n );\r\n}\r\n\r\nfunction createPropertiesToContributorsMapper<T = any>(\r\n generateDisplayName: ObjectExtensions.DisplayNameGeneratorFn,\r\n resource: string,\r\n enums: Record<string, ObjectExtensions.ExtensionEnumDto>,\r\n) {\r\n return (\r\n properties: ObjectExtensions.EntityExtensionProperties,\r\n contributors: ObjectExtensions.PropContributors<T>,\r\n key: string,\r\n ) => {\r\n const isExtra = true;\r\n const generateTypeaheadDisplayName = createTypeaheadDisplayNameGenerator(\r\n generateDisplayName,\r\n properties,\r\n );\r\n\r\n Object.keys(properties).forEach((name: string) => {\r\n const property = properties[name];\r\n const propName = name;\r\n const lookup = property.ui.lookup || ({} as ExtensionPropertyUiLookupDto);\r\n const type = getTypeaheadType(lookup, name) || getTypeFromProperty(property);\r\n const generateDN = hasTypeaheadTextSuffix(name)\r\n ? generateTypeaheadDisplayName\r\n : generateDisplayName;\r\n const displayName = generateDN(property.displayName, { name, resource });\r\n\r\n if (property.ui.onTable.isVisible) {\r\n const sortable = Boolean(property.ui.onTable.isSortable);\r\n const columnWidth = type === ePropType.Boolean ? 150 : 250;\r\n const valueResolver: PropCallback<T, Observable<any>> = type === ePropType.Enum &&\r\n property.type\r\n ? createEnumValueResolver(property.type, enums[property.type], propName)\r\n : createExtraPropertyValueResolver<T>(propName);\r\n\r\n const entityProp = new EntityProp<T>({\r\n type,\r\n name: propName,\r\n displayName,\r\n sortable,\r\n columnWidth,\r\n valueResolver,\r\n isExtra,\r\n });\r\n\r\n const contributor = (propList: EntityPropList<T>) => propList.addTail(entityProp);\r\n contributors.prop[key].push(contributor);\r\n }\r\n\r\n const isOnCreateForm = property.ui.onCreateForm.isVisible;\r\n const isOnEditForm = property.ui.onEditForm.isVisible;\r\n\r\n if (isOnCreateForm || isOnEditForm) {\r\n const defaultValue = property.defaultValue;\r\n const formText = property.formText;\r\n const validators = () => getValidatorsFromProperty(property);\r\n let options: PropCallback<any, Observable<ABP.Option<any>[]>> | undefined;\r\n if (type === ePropType.Enum)\r\n options = createEnumOptions(propName, enums[property.type || '']);\r\n else if (type === ePropType.Typeahead) options = createTypeaheadOptions(lookup);\r\n\r\n const formProp = new FormProp({\r\n type,\r\n name: propName,\r\n displayName,\r\n options,\r\n defaultValue,\r\n validators,\r\n isExtra,\r\n formText,\r\n });\r\n\r\n const formContributor = (propList: FormPropList<T>) => propList.addTail(formProp);\r\n\r\n if (isOnCreateForm) contributors.createForm[key].push(formContributor);\r\n if (isOnEditForm) contributors.editForm[key].push(formContributor);\r\n }\r\n });\r\n\r\n return contributors;\r\n };\r\n}\r\n\r\nfunction getTypeFromProperty(property: ObjectExtensions.ExtensionPropertyDto): ePropType {\r\n return property?.typeSimple?.replace(/\\?$/, '') as string as ePropType;\r\n}\r\n\r\nfunction isUndefined(obj: any): obj is undefined {\r\n return typeof obj === 'undefined';\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport {\r\n NgbDatepickerModule,\r\n NgbDropdownModule,\r\n NgbTimepickerModule,\r\n NgbTooltipModule,\r\n NgbTypeaheadModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n ExtensibleFormComponent,\r\n ExtensibleFormPropComponent,\r\n ExtensibleTableComponent,\r\n GridActionsComponent,\r\n PageToolbarComponent,\r\n ExtensibleDateTimePickerComponent,\r\n} from './components';\r\nimport { PropDataDirective } from './directives/prop-data.directive';\r\nimport { CreateInjectorPipe } from './pipes/create-injector.pipe';\r\nimport { DisabledDirective } from '@abp/ng.theme.shared';\r\n\r\nconst importWithExport = [\r\n DisabledDirective,\r\n ExtensibleDateTimePickerComponent,\r\n ExtensibleFormPropComponent,\r\n GridActionsComponent,\r\n PropDataDirective,\r\n PageToolbarComponent,\r\n CreateInjectorPipe,\r\n ExtensibleFormComponent,\r\n ExtensibleTableComponent,\r\n];\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CoreModule,\r\n ThemeSharedModule,\r\n NgxValidateCoreModule,\r\n NgbDatepickerModule,\r\n NgbDropdownModule,\r\n NgbTimepickerModule,\r\n NgbTypeaheadModule,\r\n NgbTooltipModule,\r\n ...importWithExport,\r\n ],\r\n exports: [...importWithExport],\r\n})\r\nexport class ExtensibleModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i1","i2"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abp/ng.components",
|
|
3
|
-
"version": "8.1.0-rc.
|
|
3
|
+
"version": "8.1.0-rc.4",
|
|
4
4
|
"homepage": "https://abp.io",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/abpframework/abp.git"
|
|
8
8
|
},
|
|
9
9
|
"peerDependencies": {
|
|
10
|
-
"@abp/ng.core": ">=8.1.0-rc.
|
|
11
|
-
"@abp/ng.theme.shared": ">=8.1.0-rc.
|
|
10
|
+
"@abp/ng.core": ">=8.1.0-rc.4",
|
|
11
|
+
"@abp/ng.theme.shared": ">=8.1.0-rc.4"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"chart.js": "^3.5.1",
|