@abp/ng.components 10.6.0-rc.3 → 10.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/abp-ng.components-chart.js.mjs +7 -7
- package/fesm2022/abp-ng.components-chart.js.mjs.map +1 -1
- package/fesm2022/abp-ng.components-dynamic-form.mjs +18 -18
- package/fesm2022/abp-ng.components-dynamic-form.mjs.map +1 -1
- package/fesm2022/abp-ng.components-extensible.mjs +95 -50
- package/fesm2022/abp-ng.components-extensible.mjs.map +1 -1
- package/fesm2022/abp-ng.components-lookup.mjs +3 -3
- package/fesm2022/abp-ng.components-lookup.mjs.map +1 -1
- package/fesm2022/abp-ng.components-page.mjs +19 -19
- package/fesm2022/abp-ng.components-page.mjs.map +1 -1
- package/fesm2022/abp-ng.components-tree.mjs +13 -13
- package/fesm2022/abp-ng.components-tree.mjs.map +1 -1
- package/package.json +3 -3
- package/types/abp-ng.components-extensible.d.ts +5 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ChangeDetectorRef, input, viewChild, Optional, SkipSelf, ChangeDetectionStrategy, Component, InjectionToken, Injectable, forwardRef, Injector, signal, computed, effect, isSignal, TemplateRef, ViewContainerRef, Directive, viewChildren, contentChild, LOCALE_ID, PLATFORM_ID, output, Pipe, NgModule } from '@angular/core';
|
|
2
|
+
import { inject, ChangeDetectorRef, input, viewChild, Optional, SkipSelf, ChangeDetectionStrategy, Component, InjectionToken, Injectable, forwardRef, Injector, signal, computed, effect, isSignal, TemplateRef, ViewContainerRef, Directive, viewChildren, contentChild, DestroyRef, LOCALE_ID, PLATFORM_ID, output, afterNextRender, Pipe, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2 from '@angular/forms';
|
|
4
4
|
import { ControlContainer, ReactiveFormsModule, Validators, NG_VALUE_ACCESSOR, FormGroupDirective, FormsModule, UntypedFormGroup, UntypedFormControl } from '@angular/forms';
|
|
5
5
|
import * as i1 from '@ng-bootstrap/ng-bootstrap';
|
|
@@ -8,10 +8,11 @@ import * as i3 from '@ngx-validate/core';
|
|
|
8
8
|
import { NgxValidateCoreModule } from '@ngx-validate/core';
|
|
9
9
|
import { DateTimeAdapter, DateAdapter, TimeAdapter, DisabledDirective, EllipsisDirective, AbpVisibleDirective, NgxDatatableDefaultDirective, NgxDatatableListDirective, ThemeSharedModule } from '@abp/ng.theme.shared';
|
|
10
10
|
import { RestService, ConfigStateService, AbpValidators, LocalizationPipe, TrackByService, ShowPasswordDirective, PermissionDirective, escapeHtmlChars, TimezoneService, PermissionService, UtcToLocalPipe, LocalizationService, createLocalizationPipeKeyGenerator, CoreModule } from '@abp/ng.core';
|
|
11
|
-
import { of, Subject, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1, map as map$1,
|
|
12
|
-
import { map, debounceTime, distinctUntilChanged, switchMap, filter
|
|
11
|
+
import { of, Subject, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1, map as map$1, merge, pipe, zip } from 'rxjs';
|
|
12
|
+
import { map, debounceTime, distinctUntilChanged, switchMap, filter, take } from 'rxjs/operators';
|
|
13
13
|
import { NgComponentOutlet, NgTemplateOutlet, AsyncPipe, isPlatformBrowser } from '@angular/common';
|
|
14
14
|
import { LinkedList } from '@abp/utils';
|
|
15
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
15
16
|
import * as i1$1 from '@swimlane/ngx-datatable';
|
|
16
17
|
import { SelectionType, NgxDatatableModule } from '@swimlane/ngx-datatable';
|
|
17
18
|
|
|
@@ -39,8 +40,8 @@ class ExtensibleDateTimePickerComponent {
|
|
|
39
40
|
setTime(dateStr) {
|
|
40
41
|
this.time().writeValue(dateStr);
|
|
41
42
|
}
|
|
42
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
43
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleDateTimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.8", type: ExtensibleDateTimePickerComponent, isStandalone: true, selector: "abp-extensible-date-time-picker", inputs: { prop: { classPropertyName: "prop", publicName: "prop", isSignal: true, isRequired: false, transformFunction: null }, meridian: { classPropertyName: "meridian", publicName: "meridian", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "date", first: true, predicate: NgbInputDatepicker, descendants: true, isSignal: true }, { propertyName: "time", first: true, predicate: NgbTimepicker, descendants: true, isSignal: true }], exportAs: ["abpExtensibleDateTimePicker"], ngImport: i0, template: `
|
|
44
45
|
<input
|
|
45
46
|
[id]="prop().id"
|
|
46
47
|
[formControlName]="prop().name"
|
|
@@ -75,7 +76,7 @@ class ExtensibleDateTimePickerComponent {
|
|
|
75
76
|
},
|
|
76
77
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
77
78
|
}
|
|
78
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleDateTimePickerComponent, decorators: [{
|
|
79
80
|
type: Component,
|
|
80
81
|
args: [{
|
|
81
82
|
exportAs: 'abpExtensibleDateTimePicker',
|
|
@@ -254,10 +255,10 @@ class ExtensibleFormPropService {
|
|
|
254
255
|
const required = validators.find(v => this.isRequired(v));
|
|
255
256
|
return required ? '*' : '';
|
|
256
257
|
}
|
|
257
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
258
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
258
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleFormPropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
259
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleFormPropService }); }
|
|
259
260
|
}
|
|
260
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
261
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleFormPropService, decorators: [{
|
|
261
262
|
type: Injectable
|
|
262
263
|
}] });
|
|
263
264
|
|
|
@@ -299,8 +300,8 @@ class ExtensibleFormMultiselectComponent {
|
|
|
299
300
|
registerOnTouched(fn) {
|
|
300
301
|
this.onTouched = fn;
|
|
301
302
|
}
|
|
302
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
303
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.
|
|
303
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleFormMultiselectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
304
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: ExtensibleFormMultiselectComponent, isStandalone: true, selector: "abp-extensible-form-multi-select", inputs: { prop: { classPropertyName: "prop", publicName: "prop", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, providers: [EXTENSIBLE_FORM_MULTI_SELECT_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: `
|
|
304
305
|
<div [id]="prop().id">
|
|
305
306
|
@for (option of options(); track option.value) {
|
|
306
307
|
<div class="form-check" validationTarget>
|
|
@@ -324,7 +325,7 @@ class ExtensibleFormMultiselectComponent {
|
|
|
324
325
|
</div>
|
|
325
326
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: NgxValidateCoreModule }, { kind: "directive", type: i3.ValidationTargetDirective, selector: "[validationTarget]", exportAs: ["validationTarget"] }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
326
327
|
}
|
|
327
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
328
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleFormMultiselectComponent, decorators: [{
|
|
328
329
|
type: Component,
|
|
329
330
|
args: [{
|
|
330
331
|
selector: 'abp-extensible-form-multi-select',
|
|
@@ -496,8 +497,8 @@ class ExtensibleFormPropComponent {
|
|
|
496
497
|
getType(prop) {
|
|
497
498
|
return this.service.getType(prop);
|
|
498
499
|
}
|
|
499
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
500
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: ExtensibleFormPropComponent, isStandalone: true, selector: "abp-extensible-form-prop", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, prop: { classPropertyName: "prop", publicName: "prop", isSignal: true, isRequired: true, transformFunction: null }, first: { classPropertyName: "first", publicName: "first", isSignal: true, isRequired: false, transformFunction: null }, isFirstGroup: { classPropertyName: "isFirstGroup", publicName: "isFirstGroup", isSignal: true, isRequired: false, transformFunction: null } }, providers: [ExtensibleFormPropService], viewQueries: [{ propertyName: "fieldRef", first: true, predicate: ["field"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *abpPermission=\"prop().permission; runChangeDetection: false\">\r\n @switch (getComponent(prop())) {\r\n @case ('template') {\r\n <ng-container *ngComponentOutlet=\"prop().template; injector: injectorForCustomComponent()\" />\r\n }\r\n }\r\n\r\n <div [class]=\"containerClassName()\" class=\"mb-2\">\r\n @switch (getComponent(prop())) {\r\n @case ('input') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\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]=\"isReadonly()\"\r\n class=\"form-control\"\r\n />\r\n }\r\n @case ('hidden') {\r\n <input [formControlName]=\"prop().name\" type=\"hidden\" />\r\n }\r\n @case ('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 />\r\n </div>\r\n }\r\n @case ('select') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\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 [ngValue]=\"option.value\">\r\n @if (prop().isExtra) {\r\n {{ '::' + option.key | abpLocalization }}\r\n } @else {\r\n {{ option.key }}\r\n }\r\n </option>\r\n }\r\n </select>\r\n }\r\n @case ('multiselect') {\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-extensible-form-multi-select\r\n [prop]=\"prop()\"\r\n [options]=\"options$() | async\"\r\n [formControlName]=\"prop().name\"\r\n [abpDisabled]=\"disabled()\"\r\n />\r\n }\r\n @case ('typeahead') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\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 (ngModelChange)=\"typeaheadModel.set($event)\"\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 }\r\n @case ('date') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\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 }\r\n @case ('time') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <ngb-timepicker [formControlName]=\"prop().name\" />\r\n }\r\n @case ('dateTime') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <abp-extensible-date-time-picker [prop]=\"prop()\" [meridian]=\"meridian$ | async\" />\r\n }\r\n @case ('textarea') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <textarea\r\n #field\r\n [id]=\"prop().id\"\r\n [formControlName]=\"prop().name\"\r\n [abpDisabled]=\"disabled()\"\r\n [readonly]=\"isReadonly()\"\r\n class=\"form-control\"\r\n ></textarea>\r\n }\r\n @case ('passwordinputgroup') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\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\r\n class=\"btn btn-secondary\"\r\n type=\"button\"\r\n (click)=\"showPassword.update(value => !value)\"\r\n >\r\n <i\r\n class=\"fa\"\r\n aria-hidden=\"true\"\r\n [class]=\"{\r\n 'fa-eye-slash': !showPassword(),\r\n 'fa-eye': showPassword(),\r\n }\"\r\n ></i>\r\n </button>\r\n </div>\r\n }\r\n }\r\n\r\n @if (prop().formText) {\r\n <small class=\"text-muted d-block\">{{ prop().formText | abpLocalization }}</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\" [class]=\"classes || 'form-label d-inline-block'\">\r\n <span class=\"d-inline-flex align-items-center gap-1 text-nowrap\">\r\n @if (prop().displayTextResolver) {\r\n {{ prop().displayTextResolver(data()) | abpLocalization }}\r\n } @else {\r\n @if (prop().isExtra) {\r\n {{ '::' + prop().displayName | abpLocalization }}\r\n } @else {\r\n {{ prop().displayName | abpLocalization }}\r\n }\r\n }\r\n {{ asterisk() }}\r\n @if (prop().tooltip) {\r\n <i\r\n [ngbTooltip]=\"prop().tooltip.text | abpLocalization\"\r\n [placement]=\"prop().tooltip.placement || 'auto'\"\r\n container=\"body\"\r\n class=\"bi bi-info-circle\"\r\n ></i>\r\n }\r\n </span>\r\n </label>\r\n</ng-template>\r\n", dependencies: [{ kind: "component", type: ExtensibleDateTimePickerComponent, selector: "abp-extensible-date-time-picker", inputs: ["prop", "meridian", "placement"], exportAs: ["abpExtensibleDateTimePicker"] }, { kind: "component", type: ExtensibleFormMultiselectComponent, selector: "abp-extensible-form-multi-select", inputs: ["prop", "options"] }, { kind: "ngmodule", type: NgbDatepickerModule }, { kind: "directive", type: i1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "ngmodule", type: NgbTimepickerModule }, { kind: "component", type: i1.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox]:not([ngNoCva])[formControlName],input[type=checkbox]:not([ngNoCva])[formControl],input[type=checkbox]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple]):not([ngNoCva])[formControlName],select:not([multiple]):not([ngNoCva])[formControl],select:not([multiple]):not([ngNoCva])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: DisabledDirective, selector: "[abpDisabled]", inputs: ["abpDisabled"] }, { kind: "ngmodule", type: NgxValidateCoreModule }, { kind: "directive", type: i3.ValidationStyleDirective, selector: "[validationStyle]", exportAs: ["validationStyle"] }, { kind: "directive", type: i3.ValidationTargetDirective, selector: "[validationTarget]", exportAs: ["validationTarget"] }, { kind: "directive", type: i3.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { 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: "ngmodule", type: NgbTypeaheadModule }, { kind: "directive", type: i1.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "selectOnExact", "showHint", "placement", "popperOptions", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { kind: "directive", type: ShowPasswordDirective, selector: "[abpShowPassword]", inputs: ["abpShowPassword"] }, { kind: "directive", type: PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: AsyncPipe, name: "async" }], viewProviders: [
|
|
500
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleFormPropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
501
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: ExtensibleFormPropComponent, isStandalone: true, selector: "abp-extensible-form-prop", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, prop: { classPropertyName: "prop", publicName: "prop", isSignal: true, isRequired: true, transformFunction: null }, first: { classPropertyName: "first", publicName: "first", isSignal: true, isRequired: false, transformFunction: null }, isFirstGroup: { classPropertyName: "isFirstGroup", publicName: "isFirstGroup", isSignal: true, isRequired: false, transformFunction: null } }, providers: [ExtensibleFormPropService], viewQueries: [{ propertyName: "fieldRef", first: true, predicate: ["field"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *abpPermission=\"prop().permission; runChangeDetection: false\">\r\n @switch (getComponent(prop())) {\r\n @case ('template') {\r\n <ng-container *ngComponentOutlet=\"prop().template; injector: injectorForCustomComponent()\" />\r\n }\r\n }\r\n\r\n <div [class]=\"containerClassName()\" class=\"mb-2\">\r\n @switch (getComponent(prop())) {\r\n @case ('input') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\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]=\"isReadonly()\"\r\n class=\"form-control\"\r\n />\r\n }\r\n @case ('hidden') {\r\n <input [formControlName]=\"prop().name\" type=\"hidden\" />\r\n }\r\n @case ('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 />\r\n </div>\r\n }\r\n @case ('select') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\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 [ngValue]=\"option.value\">\r\n @if (prop().isExtra) {\r\n {{ '::' + option.key | abpLocalization }}\r\n } @else {\r\n {{ option.key }}\r\n }\r\n </option>\r\n }\r\n </select>\r\n }\r\n @case ('multiselect') {\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-extensible-form-multi-select\r\n [prop]=\"prop()\"\r\n [options]=\"options$() | async\"\r\n [formControlName]=\"prop().name\"\r\n [abpDisabled]=\"disabled()\"\r\n />\r\n }\r\n @case ('typeahead') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\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 (ngModelChange)=\"typeaheadModel.set($event)\"\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 }\r\n @case ('date') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\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 }\r\n @case ('time') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <ngb-timepicker [formControlName]=\"prop().name\" />\r\n }\r\n @case ('dateTime') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <abp-extensible-date-time-picker [prop]=\"prop()\" [meridian]=\"meridian$ | async\" />\r\n }\r\n @case ('textarea') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <textarea\r\n #field\r\n [id]=\"prop().id\"\r\n [formControlName]=\"prop().name\"\r\n [abpDisabled]=\"disabled()\"\r\n [readonly]=\"isReadonly()\"\r\n class=\"form-control\"\r\n ></textarea>\r\n }\r\n @case ('passwordinputgroup') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\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\r\n class=\"btn btn-secondary\"\r\n type=\"button\"\r\n (click)=\"showPassword.update(value => !value)\"\r\n >\r\n <i\r\n class=\"fa\"\r\n aria-hidden=\"true\"\r\n [class]=\"{\r\n 'fa-eye-slash': !showPassword(),\r\n 'fa-eye': showPassword(),\r\n }\"\r\n ></i>\r\n </button>\r\n </div>\r\n }\r\n }\r\n\r\n @if (prop().formText) {\r\n <small class=\"text-muted d-block\">{{ prop().formText | abpLocalization }}</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\" [class]=\"classes || 'form-label d-inline-block'\">\r\n <span class=\"d-inline-flex align-items-center gap-1 text-nowrap\">\r\n @if (prop().displayTextResolver) {\r\n {{ prop().displayTextResolver(data()) | abpLocalization }}\r\n } @else {\r\n @if (prop().isExtra) {\r\n {{ '::' + prop().displayName | abpLocalization }}\r\n } @else {\r\n {{ prop().displayName | abpLocalization }}\r\n }\r\n }\r\n {{ asterisk() }}\r\n @if (prop().tooltip) {\r\n <i\r\n [ngbTooltip]=\"prop().tooltip.text | abpLocalization\"\r\n [placement]=\"prop().tooltip.placement || 'auto'\"\r\n container=\"body\"\r\n class=\"bi bi-info-circle\"\r\n ></i>\r\n }\r\n </span>\r\n </label>\r\n</ng-template>\r\n", dependencies: [{ kind: "component", type: ExtensibleDateTimePickerComponent, selector: "abp-extensible-date-time-picker", inputs: ["prop", "meridian", "placement"], exportAs: ["abpExtensibleDateTimePicker"] }, { kind: "component", type: ExtensibleFormMultiselectComponent, selector: "abp-extensible-form-multi-select", inputs: ["prop", "options"] }, { kind: "ngmodule", type: NgbDatepickerModule }, { kind: "directive", type: i1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "ngmodule", type: NgbTimepickerModule }, { kind: "component", type: i1.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox]:not([ngNoCva])[formControlName],input[type=checkbox]:not([ngNoCva])[formControl],input[type=checkbox]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple]):not([ngNoCva])[formControlName],select:not([multiple]):not([ngNoCva])[formControl],select:not([multiple]):not([ngNoCva])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: DisabledDirective, selector: "[abpDisabled]", inputs: ["abpDisabled"] }, { kind: "ngmodule", type: NgxValidateCoreModule }, { kind: "directive", type: i3.ValidationStyleDirective, selector: "[validationStyle]", exportAs: ["validationStyle"] }, { kind: "directive", type: i3.ValidationTargetDirective, selector: "[validationTarget]", exportAs: ["validationTarget"] }, { kind: "directive", type: i3.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { 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: "ngmodule", type: NgbTypeaheadModule }, { kind: "directive", type: i1.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "selectOnExact", "showHint", "placement", "popperOptions", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { kind: "directive", type: ShowPasswordDirective, selector: "[abpShowPassword]", inputs: ["abpShowPassword"] }, { kind: "directive", type: PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: AsyncPipe, name: "async" }], viewProviders: [
|
|
501
502
|
{
|
|
502
503
|
provide: ControlContainer,
|
|
503
504
|
useFactory: selfFactory,
|
|
@@ -507,7 +508,7 @@ class ExtensibleFormPropComponent {
|
|
|
507
508
|
{ provide: NgbTimeAdapter, useClass: TimeAdapter },
|
|
508
509
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
509
510
|
}
|
|
510
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
511
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleFormPropComponent, decorators: [{
|
|
511
512
|
type: Component,
|
|
512
513
|
args: [{ selector: 'abp-extensible-form-prop', imports: [
|
|
513
514
|
ExtensibleDateTimePickerComponent,
|
|
@@ -842,10 +843,10 @@ class ExtensionsService {
|
|
|
842
843
|
this.createFormProps = new CreateFormPropsFactory();
|
|
843
844
|
this.editFormProps = new EditFormPropsFactory();
|
|
844
845
|
}
|
|
845
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
846
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
846
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
847
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensionsService, providedIn: 'root' }); }
|
|
847
848
|
}
|
|
848
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
849
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensionsService, decorators: [{
|
|
849
850
|
type: Injectable,
|
|
850
851
|
args: [{
|
|
851
852
|
providedIn: 'root',
|
|
@@ -879,10 +880,10 @@ class PropDataDirective extends PropData {
|
|
|
879
880
|
ngOnDestroy() {
|
|
880
881
|
this.vcRef.clear();
|
|
881
882
|
}
|
|
882
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
883
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.
|
|
883
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: PropDataDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
884
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.8", type: PropDataDirective, isStandalone: true, selector: "[abpPropData]", inputs: { propList: { classPropertyName: "propList", publicName: "abpPropDataFromList", isSignal: true, isRequired: false, transformFunction: null }, record: { classPropertyName: "record", publicName: "abpPropDataWithRecord", isSignal: true, isRequired: true, transformFunction: null }, index: { classPropertyName: "index", publicName: "abpPropDataAtIndex", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["abpPropData"], usesInheritance: true, ngImport: i0 }); }
|
|
884
885
|
}
|
|
885
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
886
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: PropDataDirective, decorators: [{
|
|
886
887
|
type: Directive,
|
|
887
888
|
args: [{
|
|
888
889
|
exportAs: 'abpPropData',
|
|
@@ -935,8 +936,8 @@ class ExtensibleFormComponent {
|
|
|
935
936
|
const formPropList = items[index].formPropList.toArray();
|
|
936
937
|
return formPropList.some(prop => prop.visible(data));
|
|
937
938
|
}
|
|
938
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
939
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.
|
|
939
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
940
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: ExtensibleFormComponent, isStandalone: true, selector: "abp-extensible-form", inputs: { selectedRecord: { classPropertyName: "selectedRecord", publicName: "selectedRecord", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "formProps", predicate: ExtensibleFormPropComponent, descendants: true, isSignal: true }], exportAs: ["abpExtensibleForm"], ngImport: i0, template: "@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 [class]=\"groupedProp.group?.className\"\r\n [attr.data-name]=\"groupedProp.group?.name || groupedProp.group?.className\">\r\n <ng-container [ngTemplateOutlet]=\"propListTemplate\"\r\n [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first}\">\r\n </ng-container>\r\n </div>\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"propListTemplate\"\r\n [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first }\">\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 [class]=\"prop.className\" [prop]=\"prop\" [data]=\"data\" [first]=\"first\"\r\n [isFirstGroup]=\"isFirstGroup\" />\r\n }\r\n }\r\n }\r\n }\r\n</ng-template>", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: PropDataDirective, selector: "[abpPropData]", inputs: ["abpPropDataFromList", "abpPropDataWithRecord", "abpPropDataAtIndex"], exportAs: ["abpPropData"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: ["data", "prop", "first", "isFirstGroup"] }], viewProviders: [
|
|
940
941
|
{
|
|
941
942
|
provide: ControlContainer,
|
|
942
943
|
useFactory: selfFactory,
|
|
@@ -944,7 +945,7 @@ class ExtensibleFormComponent {
|
|
|
944
945
|
},
|
|
945
946
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
946
947
|
}
|
|
947
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
948
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleFormComponent, decorators: [{
|
|
948
949
|
type: Component,
|
|
949
950
|
args: [{ exportAs: 'abpExtensibleForm', selector: 'abp-extensible-form', imports: [NgTemplateOutlet, PropDataDirective, ReactiveFormsModule, ExtensibleFormPropComponent], changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [
|
|
950
951
|
{
|
|
@@ -969,10 +970,10 @@ class AbstractActionsComponent extends ActionData {
|
|
|
969
970
|
const type = injector.get(EXTENSIONS_ACTION_TYPE);
|
|
970
971
|
this.actionList = extensions[type].get(name).actions;
|
|
971
972
|
}
|
|
972
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
973
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.
|
|
973
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AbstractActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
974
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.8", type: AbstractActionsComponent, isStandalone: true, inputs: { record: { classPropertyName: "record", publicName: "record", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
|
|
974
975
|
}
|
|
975
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
976
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AbstractActionsComponent, decorators: [{
|
|
976
977
|
type: Directive
|
|
977
978
|
}], ctorParameters: () => [], propDecorators: { record: [{ type: i0.Input, args: [{ isSignal: true, alias: "record", required: true }] }] } });
|
|
978
979
|
|
|
@@ -987,15 +988,15 @@ class GridActionsComponent extends AbstractActionsComponent {
|
|
|
987
988
|
...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
|
|
988
989
|
this.trackByFn = (_, item) => item.text;
|
|
989
990
|
}
|
|
990
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
991
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.
|
|
991
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: GridActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
992
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: GridActionsComponent, isStandalone: true, selector: "abp-grid-actions", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
992
993
|
{
|
|
993
994
|
provide: EXTENSIONS_ACTION_TYPE,
|
|
994
995
|
useValue: 'entityActions',
|
|
995
996
|
},
|
|
996
997
|
], exportAs: ["abpGridActions"], usesInheritance: true, ngImport: i0, template: "@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 [class]=\"icon()\" [class.me-1]=\"icon()\"></i>{{ text() | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n @for (action of actionList; track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"dropDownBtnItemTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: action }\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n}\r\n\r\n@if (actionList.length === 1) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"btnTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: actionList.get(0).value }\"\r\n />\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 *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\" />\r\n </button>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonContentTmp let-action>\r\n <i [class]=\"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\"\r\n [placement]=\"action.tooltip.placement || 'auto'\"\r\n triggers=\"hover\"\r\n container=\"body\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\" />\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 *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\" />\r\n </button>\r\n }\r\n }\r\n</ng-template>\r\n", dependencies: [{ kind: "ngmodule", type: NgbDropdownModule }, { kind: "directive", type: i1.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i1.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i1.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i1.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i1.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }, { kind: "directive", type: EllipsisDirective, selector: "[abpEllipsis]", inputs: ["abpEllipsis", "title", "abpEllipsisEnabled"] }, { kind: "directive", type: PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
997
998
|
}
|
|
998
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
999
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: GridActionsComponent, decorators: [{
|
|
999
1000
|
type: Component,
|
|
1000
1001
|
args: [{ exportAs: 'abpGridActions', imports: [
|
|
1001
1002
|
NgbDropdownModule,
|
|
@@ -1019,10 +1020,10 @@ class ExtensibleTableRowDetailComponent {
|
|
|
1019
1020
|
this.template = contentChild((TemplateRef), /* @ts-ignore */
|
|
1020
1021
|
...(ngDevMode ? [{ debugName: "template" }] : /* istanbul ignore next */ []));
|
|
1021
1022
|
}
|
|
1022
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
1023
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.
|
|
1023
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleTableRowDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1024
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.8", type: ExtensibleTableRowDetailComponent, isStandalone: true, selector: "abp-extensible-table-row-detail", inputs: { rowHeight: { classPropertyName: "rowHeight", publicName: "rowHeight", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1024
1025
|
}
|
|
1025
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1026
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleTableRowDetailComponent, decorators: [{
|
|
1026
1027
|
type: Component,
|
|
1027
1028
|
args: [{
|
|
1028
1029
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -1034,6 +1035,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
1034
1035
|
const DEFAULT_ACTIONS_COLUMN_WIDTH = 150;
|
|
1035
1036
|
class ExtensibleTableComponent {
|
|
1036
1037
|
#injector;
|
|
1038
|
+
#destroyRef;
|
|
1037
1039
|
get data() {
|
|
1038
1040
|
return this._data();
|
|
1039
1041
|
}
|
|
@@ -1048,6 +1050,7 @@ class ExtensibleTableComponent {
|
|
|
1048
1050
|
}
|
|
1049
1051
|
constructor() {
|
|
1050
1052
|
this.#injector = inject(Injector);
|
|
1053
|
+
this.#destroyRef = inject(DestroyRef);
|
|
1051
1054
|
this.getInjected = this.#injector.get.bind(this.#injector);
|
|
1052
1055
|
this.locale = inject(LOCALE_ID);
|
|
1053
1056
|
this.config = inject(ConfigStateService);
|
|
@@ -1122,6 +1125,8 @@ class ExtensibleTableComponent {
|
|
|
1122
1125
|
return undefined;
|
|
1123
1126
|
}, /* @ts-ignore */
|
|
1124
1127
|
...(ngDevMode ? [{ debugName: "effectiveRowDetailRowHeight" }] : /* istanbul ignore next */ []));
|
|
1128
|
+
this.horizontalScrollOffset = 0;
|
|
1129
|
+
this.hasPendingHorizontalScrollOffset = false;
|
|
1125
1130
|
this.trackByFn = (_, item) => item.name;
|
|
1126
1131
|
// Infinite scroll: debounced load more subject
|
|
1127
1132
|
this.loadMoreSubject = new Subject();
|
|
@@ -1153,6 +1158,7 @@ class ExtensibleTableComponent {
|
|
|
1153
1158
|
this.list().totalCount = this.recordsTotal();
|
|
1154
1159
|
}
|
|
1155
1160
|
this._data.set(dataValue.map((record, index) => this.prepareRecord(record, index)));
|
|
1161
|
+
this.restoreHorizontalScrollOffset();
|
|
1156
1162
|
});
|
|
1157
1163
|
}
|
|
1158
1164
|
prepareRecord(record, index) {
|
|
@@ -1262,19 +1268,58 @@ class ExtensibleTableComponent {
|
|
|
1262
1268
|
ngAfterViewInit() {
|
|
1263
1269
|
if (!this.infiniteScroll()) {
|
|
1264
1270
|
this.list()
|
|
1265
|
-
?.requestStatus$?.pipe(
|
|
1266
|
-
.subscribe(
|
|
1267
|
-
|
|
1271
|
+
?.requestStatus$?.pipe(takeUntilDestroyed(this.#destroyRef))
|
|
1272
|
+
.subscribe(status => {
|
|
1273
|
+
if (status === 'loading') {
|
|
1274
|
+
this.rememberHorizontalScrollOffset();
|
|
1275
|
+
this._data.set([]);
|
|
1276
|
+
return;
|
|
1277
|
+
}
|
|
1278
|
+
// A failed request never reaches the data input, restore from here instead
|
|
1279
|
+
if (status === 'error') {
|
|
1280
|
+
this.restoreHorizontalScrollOffset();
|
|
1281
|
+
}
|
|
1268
1282
|
});
|
|
1269
1283
|
}
|
|
1270
1284
|
}
|
|
1285
|
+
getBodyElement() {
|
|
1286
|
+
if (!this.isBrowser) {
|
|
1287
|
+
return null;
|
|
1288
|
+
}
|
|
1289
|
+
return this.table()?.element?.querySelector('datatable-body') ?? null;
|
|
1290
|
+
}
|
|
1291
|
+
// The element carrying the column width is gone while loading without rows, so the browser
|
|
1292
|
+
// resets the horizontal scroll position and the header keeps the offset it had before
|
|
1293
|
+
rememberHorizontalScrollOffset() {
|
|
1294
|
+
const body = this.getBodyElement();
|
|
1295
|
+
this.hasPendingHorizontalScrollOffset = true;
|
|
1296
|
+
// Not scrollable while a previous request is still in flight, keep the offset taken back then
|
|
1297
|
+
if (body && body.scrollWidth > body.clientWidth) {
|
|
1298
|
+
this.horizontalScrollOffset = body.scrollLeft;
|
|
1299
|
+
}
|
|
1300
|
+
}
|
|
1301
|
+
restoreHorizontalScrollOffset() {
|
|
1302
|
+
if (!this.hasPendingHorizontalScrollOffset) {
|
|
1303
|
+
return;
|
|
1304
|
+
}
|
|
1305
|
+
this.hasPendingHorizontalScrollOffset = false;
|
|
1306
|
+
afterNextRender(() => {
|
|
1307
|
+
const body = this.getBodyElement();
|
|
1308
|
+
if (!body) {
|
|
1309
|
+
return;
|
|
1310
|
+
}
|
|
1311
|
+
body.scrollLeft = this.horizontalScrollOffset;
|
|
1312
|
+
// The header only follows a scroll event, scrolling to the same position does not raise one
|
|
1313
|
+
body.dispatchEvent(new Event('scroll'));
|
|
1314
|
+
}, { injector: this.#injector });
|
|
1315
|
+
}
|
|
1271
1316
|
ngOnDestroy() {
|
|
1272
1317
|
this.loadMoreSubscription.unsubscribe();
|
|
1273
1318
|
}
|
|
1274
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
1275
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: ExtensibleTableComponent, isStandalone: true, selector: "abp-extensible-table", inputs: { actionsTextInput: { classPropertyName: "actionsTextInput", publicName: "actionsText", isSignal: true, isRequired: false, transformFunction: null }, dataInput: { classPropertyName: "dataInput", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, list: { classPropertyName: "list", publicName: "list", isSignal: true, isRequired: true, transformFunction: null }, recordsTotal: { classPropertyName: "recordsTotal", publicName: "recordsTotal", isSignal: true, isRequired: true, transformFunction: null }, actionsColumnWidthInput: { classPropertyName: "actionsColumnWidthInput", publicName: "actionsColumnWidth", isSignal: true, isRequired: false, transformFunction: null }, actionsTemplate: { classPropertyName: "actionsTemplate", publicName: "actionsTemplate", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, selectionTypeInput: { classPropertyName: "selectionTypeInput", publicName: "selectionType", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, infiniteScroll: { classPropertyName: "infiniteScroll", publicName: "infiniteScroll", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, scrollThreshold: { classPropertyName: "scrollThreshold", publicName: "scrollThreshold", isSignal: true, isRequired: false, transformFunction: null }, tableHeight: { classPropertyName: "tableHeight", publicName: "tableHeight", isSignal: true, isRequired: false, transformFunction: null }, rowDetailTemplate: { classPropertyName: "rowDetailTemplate", publicName: "rowDetailTemplate", isSignal: true, isRequired: false, transformFunction: null }, rowDetailHeight: { classPropertyName: "rowDetailHeight", publicName: "rowDetailHeight", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tableActivate: "tableActivate", selectionChange: "selectionChange", loadMore: "loadMore", rowDetailToggle: "rowDetailToggle" }, queries: [{ propertyName: "rowDetailComponent", first: true, predicate: ExtensibleTableRowDetailComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, isSignal: true }], exportAs: ["abpExtensibleTable"], ngImport: i0, template: "@if (isBrowser) {\r\n <ngx-datatable\r\n #table\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal()\"\r\n [list]=\"list()\"\r\n [selectionType]=\"selectable() ? selectionType() : undefined\"\r\n (activate)=\"tableActivate.emit($event)\"\r\n (select)=\"onSelect($event)\"\r\n [selected]=\"selected()\"\r\n (scroll)=\"onScroll($event)\"\r\n [scrollbarV]=\"infiniteScroll()\"\r\n [style.height]=\"getTableHeight()\"\r\n [loadingIndicator]=\"infiniteScroll() && isLoading()\"\r\n [footerHeight]=\"infiniteScroll() ? false : 50\"\r\n >\r\n @if (effectiveRowDetailTemplate) {\r\n @let detailRowHeight = effectiveRowDetailRowHeight();\r\n @if (detailRowHeight !== undefined) {\r\n <ngx-datatable-row-detail [rowHeight]=\"detailRowHeight\">\r\n <ng-template let-row=\"row\" let-expanded=\"expanded\" ngx-datatable-row-detail-template>\r\n <ng-container\r\n [ngTemplateOutlet]=\"effectiveRowDetailTemplate\"\r\n [ngTemplateOutletContext]=\"{ row: row, expanded: expanded }\"\r\n />\r\n </ng-template>\r\n </ngx-datatable-row-detail>\r\n } @else {\r\n <ngx-datatable-row-detail>\r\n <ng-template let-row=\"row\" let-expanded=\"expanded\" ngx-datatable-row-detail-template>\r\n <ng-container\r\n [ngTemplateOutlet]=\"effectiveRowDetailTemplate\"\r\n [ngTemplateOutletContext]=\"{ row: row, expanded: expanded }\"\r\n />\r\n </ng-template>\r\n </ngx-datatable-row-detail>\r\n }\r\n\r\n <ngx-datatable-column\r\n [width]=\"50\"\r\n [resizeable]=\"false\"\r\n [sortable]=\"false\"\r\n [draggable]=\"false\"\r\n [canAutoResize]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-expanded=\"expanded\" ngx-datatable-cell-template>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-link text-decoration-none text-muted p-0\"\r\n [attr.aria-label]=\"expanded ? 'Collapse' : 'Expand'\"\r\n (click)=\"toggleExpandRow(row)\"\r\n >\r\n <i class=\"fa\" [class.fa-chevron-down]=\"!expanded\" [class.fa-chevron-up]=\"expanded\"></i>\r\n </button>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n @if (selectable()) {\r\n <ngx-datatable-column\r\n [width]=\"50\"\r\n [sortable]=\"false\"\r\n [canAutoResize]=\"false\"\r\n [draggable]=\"false\"\r\n [resizeable]=\"false\"\r\n >\r\n <ng-template\r\n ngx-datatable-header-template\r\n let-allRowsSelected=\"allRowsSelected\"\r\n let-selectFn=\"selectFn\"\r\n >\r\n @if (selectionType() !== 'single') {\r\n <div class=\"form-check\">\r\n <input\r\n class=\"form-check-input table-check\"\r\n type=\"checkbox\"\r\n [checked]=\"allRowsSelected\"\r\n (change)=\"selectFn()\"\r\n />\r\n </div>\r\n }\r\n </ng-template>\r\n\r\n <ng-template\r\n ngx-datatable-cell-template\r\n let-value=\"value\"\r\n let-row=\"row\"\r\n let-isSelected=\"isSelected\"\r\n let-onCheckboxChangeFn=\"onCheckboxChangeFn\"\r\n >\r\n @if (selectionType() === 'single') {\r\n <div class=\"h-100 form-check form-check-sm form-check-custom form-check-solid\">\r\n <input\r\n class=\"form-check-input\"\r\n type=\"radio\"\r\n [checked]=\"isSelected\"\r\n (change)=\"onCheckboxChangeFn($event)\"\r\n />\r\n </div>\r\n }\r\n @if (selectionType() !== 'single') {\r\n <div class=\"h-100 form-check form-check-sm form-check-custom form-check-solid\">\r\n <input\r\n class=\"form-check-input\"\r\n type=\"checkbox\"\r\n [checked]=\"isSelected\"\r\n (change)=\"onCheckboxChangeFn($event)\"\r\n />\r\n </div>\r\n }\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n @if (actionsTemplate() || (actionList.length && hasAtLeastOnePermittedAction)) {\r\n <ngx-datatable-column\r\n [name]=\"actionsText() | abpLocalization\"\r\n [maxWidth]=\"_actionsColumnWidth()\"\r\n [width]=\"_actionsColumnWidth() || 200\"\r\n [canAutoResize]=\"!_actionsColumnWidth()\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n @if (actionsTemplate(); as template) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i }\"\r\n ></ng-container>\r\n } @else if (isVisibleActions(row)) {\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n }\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\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] || 200\"\r\n [canAutoResize]=\"!columnWidths()[i]\"\r\n [name]=\"(prop.isExtra ? '::' + prop.displayName : 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\" let-sortFn=\"sortFn\">\r\n @if (prop.tooltip) {\r\n <span\r\n [ngbTooltip]=\"prop.tooltip.text | abpLocalization\"\r\n [placement]=\"prop.tooltip.placement || 'auto'\"\r\n container=\"body\"\r\n [class.pointer]=\"prop.sortable\"\r\n (click)=\"prop.sortable && sortFn()\"\r\n >\r\n {{ column.name }} <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n </span>\r\n } @else {\r\n <span [class.pointer]=\"prop.sortable\" (click)=\"prop.sortable && sortFn()\">\r\n {{ column.name }}\r\n </span>\r\n }\r\n </ng-template>\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" 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 @if (prop.type === 'datetime' || prop.type === 'date' || prop.type === 'time') {\r\n <div\r\n [innerHTML]=\"\r\n !prop.isExtra\r\n ? (row['_' + prop.name]?.value | async | abpUtcToLocal: prop.type)\r\n : ('::' + (row['_' + prop.name]?.value | async | abpUtcToLocal: prop.type)\r\n | abpLocalization)\r\n \"\r\n (click)=\"\r\n prop.action &&\r\n prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [class]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n } @else {\r\n <div\r\n [innerHTML]=\"\r\n !prop.isExtra\r\n ? (row['_' + prop.name]?.value | async)\r\n : ('::' + (row['_' + prop.name]?.value | async) | abpLocalization)\r\n \"\r\n (click)=\"\r\n prop.action &&\r\n prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [class]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n }\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 />\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}\r\n", styles: [":host ::ng-deep .ngx-datatable.material .datatable-body .datatable-row-detail{background:none;padding:0}\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", "scrollbarVDynamic", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "ghostLoadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "disableRowCheck", "rowDraggable", "enableClearingSortState", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction", "rowDragEvents"] }, { kind: "directive", type: i1$1.DatatableRowDetailDirective, selector: "ngx-datatable-row-detail", inputs: ["rowHeight", "template"], outputs: ["toggle"] }, { kind: "directive", type: i1$1.DatatableRowDetailTemplateDirective, selector: "[ngx-datatable-row-detail-template]" }, { kind: "directive", type: i1$1.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "bindAsUnsafeHtml", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate", "ghostCellTemplate"] }, { 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: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: UtcToLocalPipe, name: "abpUtcToLocal" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1319
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1320
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: ExtensibleTableComponent, isStandalone: true, selector: "abp-extensible-table", inputs: { actionsTextInput: { classPropertyName: "actionsTextInput", publicName: "actionsText", isSignal: true, isRequired: false, transformFunction: null }, dataInput: { classPropertyName: "dataInput", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, list: { classPropertyName: "list", publicName: "list", isSignal: true, isRequired: true, transformFunction: null }, recordsTotal: { classPropertyName: "recordsTotal", publicName: "recordsTotal", isSignal: true, isRequired: true, transformFunction: null }, actionsColumnWidthInput: { classPropertyName: "actionsColumnWidthInput", publicName: "actionsColumnWidth", isSignal: true, isRequired: false, transformFunction: null }, actionsTemplate: { classPropertyName: "actionsTemplate", publicName: "actionsTemplate", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, selectionTypeInput: { classPropertyName: "selectionTypeInput", publicName: "selectionType", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, infiniteScroll: { classPropertyName: "infiniteScroll", publicName: "infiniteScroll", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, scrollThreshold: { classPropertyName: "scrollThreshold", publicName: "scrollThreshold", isSignal: true, isRequired: false, transformFunction: null }, tableHeight: { classPropertyName: "tableHeight", publicName: "tableHeight", isSignal: true, isRequired: false, transformFunction: null }, rowDetailTemplate: { classPropertyName: "rowDetailTemplate", publicName: "rowDetailTemplate", isSignal: true, isRequired: false, transformFunction: null }, rowDetailHeight: { classPropertyName: "rowDetailHeight", publicName: "rowDetailHeight", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tableActivate: "tableActivate", selectionChange: "selectionChange", loadMore: "loadMore", rowDetailToggle: "rowDetailToggle" }, queries: [{ propertyName: "rowDetailComponent", first: true, predicate: ExtensibleTableRowDetailComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, isSignal: true }], exportAs: ["abpExtensibleTable"], ngImport: i0, template: "@if (isBrowser) {\r\n <ngx-datatable\r\n #table\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal()\"\r\n [list]=\"list()\"\r\n [selectionType]=\"selectable() ? selectionType() : undefined\"\r\n (activate)=\"tableActivate.emit($event)\"\r\n (select)=\"onSelect($event)\"\r\n [selected]=\"selected()\"\r\n (scroll)=\"onScroll($event)\"\r\n [scrollbarV]=\"infiniteScroll()\"\r\n [style.height]=\"getTableHeight()\"\r\n [loadingIndicator]=\"infiniteScroll() && isLoading()\"\r\n [footerHeight]=\"infiniteScroll() ? false : 50\"\r\n >\r\n @if (effectiveRowDetailTemplate) {\r\n @let detailRowHeight = effectiveRowDetailRowHeight();\r\n @if (detailRowHeight !== undefined) {\r\n <ngx-datatable-row-detail [rowHeight]=\"detailRowHeight\">\r\n <ng-template let-row=\"row\" let-expanded=\"expanded\" ngx-datatable-row-detail-template>\r\n <ng-container\r\n [ngTemplateOutlet]=\"effectiveRowDetailTemplate\"\r\n [ngTemplateOutletContext]=\"{ row: row, expanded: expanded }\"\r\n />\r\n </ng-template>\r\n </ngx-datatable-row-detail>\r\n } @else {\r\n <ngx-datatable-row-detail>\r\n <ng-template let-row=\"row\" let-expanded=\"expanded\" ngx-datatable-row-detail-template>\r\n <ng-container\r\n [ngTemplateOutlet]=\"effectiveRowDetailTemplate\"\r\n [ngTemplateOutletContext]=\"{ row: row, expanded: expanded }\"\r\n />\r\n </ng-template>\r\n </ngx-datatable-row-detail>\r\n }\r\n\r\n <ngx-datatable-column\r\n [width]=\"50\"\r\n [resizeable]=\"false\"\r\n [sortable]=\"false\"\r\n [draggable]=\"false\"\r\n [canAutoResize]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-expanded=\"expanded\" ngx-datatable-cell-template>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-link text-decoration-none text-muted p-0\"\r\n [attr.aria-label]=\"expanded ? 'Collapse' : 'Expand'\"\r\n (click)=\"toggleExpandRow(row)\"\r\n >\r\n <i class=\"fa\" [class.fa-chevron-down]=\"!expanded\" [class.fa-chevron-up]=\"expanded\"></i>\r\n </button>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n @if (selectable()) {\r\n <ngx-datatable-column\r\n [width]=\"50\"\r\n [sortable]=\"false\"\r\n [canAutoResize]=\"false\"\r\n [draggable]=\"false\"\r\n [resizeable]=\"false\"\r\n >\r\n <ng-template\r\n ngx-datatable-header-template\r\n let-allRowsSelected=\"allRowsSelected\"\r\n let-selectFn=\"selectFn\"\r\n >\r\n @if (selectionType() !== 'single') {\r\n <div class=\"form-check\">\r\n <input\r\n class=\"form-check-input table-check\"\r\n type=\"checkbox\"\r\n [checked]=\"allRowsSelected\"\r\n (change)=\"selectFn()\"\r\n />\r\n </div>\r\n }\r\n </ng-template>\r\n\r\n <ng-template\r\n ngx-datatable-cell-template\r\n let-value=\"value\"\r\n let-row=\"row\"\r\n let-isSelected=\"isSelected\"\r\n let-onCheckboxChangeFn=\"onCheckboxChangeFn\"\r\n >\r\n @if (selectionType() === 'single') {\r\n <div class=\"h-100 form-check form-check-sm form-check-custom form-check-solid\">\r\n <input\r\n class=\"form-check-input\"\r\n type=\"radio\"\r\n [checked]=\"isSelected\"\r\n (change)=\"onCheckboxChangeFn($event)\"\r\n />\r\n </div>\r\n }\r\n @if (selectionType() !== 'single') {\r\n <div class=\"h-100 form-check form-check-sm form-check-custom form-check-solid\">\r\n <input\r\n class=\"form-check-input\"\r\n type=\"checkbox\"\r\n [checked]=\"isSelected\"\r\n (change)=\"onCheckboxChangeFn($event)\"\r\n />\r\n </div>\r\n }\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n @if (actionsTemplate() || (actionList.length && hasAtLeastOnePermittedAction)) {\r\n <ngx-datatable-column\r\n [name]=\"actionsText() | abpLocalization\"\r\n [maxWidth]=\"_actionsColumnWidth()\"\r\n [width]=\"_actionsColumnWidth() || 200\"\r\n [canAutoResize]=\"!_actionsColumnWidth()\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n @if (actionsTemplate(); as template) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i }\"\r\n ></ng-container>\r\n } @else if (isVisibleActions(row)) {\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n }\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\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] || 200\"\r\n [canAutoResize]=\"!columnWidths()[i]\"\r\n [name]=\"(prop.isExtra ? '::' + prop.displayName : 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\" let-sortFn=\"sortFn\">\r\n @if (prop.tooltip) {\r\n <span\r\n [ngbTooltip]=\"prop.tooltip.text | abpLocalization\"\r\n [placement]=\"prop.tooltip.placement || 'auto'\"\r\n container=\"body\"\r\n [class.pointer]=\"prop.sortable\"\r\n (click)=\"prop.sortable && sortFn()\"\r\n >\r\n {{ column.name }} <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n </span>\r\n } @else {\r\n <span [class.pointer]=\"prop.sortable\" (click)=\"prop.sortable && sortFn()\">\r\n {{ column.name }}\r\n </span>\r\n }\r\n </ng-template>\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" 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 @if (prop.type === 'datetime' || prop.type === 'date' || prop.type === 'time') {\r\n <div\r\n [innerHTML]=\"\r\n !prop.isExtra\r\n ? (row['_' + prop.name]?.value | async | abpUtcToLocal: prop.type)\r\n : ('::' + (row['_' + prop.name]?.value | async | abpUtcToLocal: prop.type)\r\n | abpLocalization)\r\n \"\r\n (click)=\"\r\n prop.action &&\r\n prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [class]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n } @else {\r\n <div\r\n [innerHTML]=\"\r\n !prop.isExtra\r\n ? (row['_' + prop.name]?.value | async)\r\n : ('::' + (row['_' + prop.name]?.value | async) | abpLocalization)\r\n \"\r\n (click)=\"\r\n prop.action &&\r\n prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [class]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n }\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 />\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}\r\n", styles: [":host ::ng-deep .ngx-datatable.material .datatable-body .datatable-row-detail{background:none;padding:0}\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", "scrollbarVDynamic", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "ghostLoadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "disableRowCheck", "rowDraggable", "enableClearingSortState", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction", "rowDragEvents"] }, { kind: "directive", type: i1$1.DatatableRowDetailDirective, selector: "ngx-datatable-row-detail", inputs: ["rowHeight", "template"], outputs: ["toggle"] }, { kind: "directive", type: i1$1.DatatableRowDetailTemplateDirective, selector: "[ngx-datatable-row-detail-template]" }, { kind: "directive", type: i1$1.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "bindAsUnsafeHtml", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate", "ghostCellTemplate"] }, { 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: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: UtcToLocalPipe, name: "abpUtcToLocal" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1276
1321
|
}
|
|
1277
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1322
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleTableComponent, decorators: [{
|
|
1278
1323
|
type: Component,
|
|
1279
1324
|
args: [{ exportAs: 'abpExtensibleTable', selector: 'abp-extensible-table', imports: [
|
|
1280
1325
|
AbpVisibleDirective,
|
|
@@ -1315,10 +1360,10 @@ class CreateInjectorPipe {
|
|
|
1315
1360
|
};
|
|
1316
1361
|
return { get };
|
|
1317
1362
|
}
|
|
1318
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
1319
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.
|
|
1363
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: CreateInjectorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1364
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: CreateInjectorPipe, isStandalone: true, name: "createInjector" }); }
|
|
1320
1365
|
}
|
|
1321
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1366
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: CreateInjectorPipe, decorators: [{
|
|
1322
1367
|
type: Pipe,
|
|
1323
1368
|
args: [{
|
|
1324
1369
|
name: 'createInjector',
|
|
@@ -1339,15 +1384,15 @@ class PageToolbarComponent extends AbstractActionsComponent {
|
|
|
1339
1384
|
value: value,
|
|
1340
1385
|
};
|
|
1341
1386
|
}
|
|
1342
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
1343
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.
|
|
1387
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: PageToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1388
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: PageToolbarComponent, isStandalone: true, selector: "abp-page-toolbar", providers: [
|
|
1344
1389
|
{
|
|
1345
1390
|
provide: EXTENSIONS_ACTION_TYPE,
|
|
1346
1391
|
useValue: 'toolbarActions',
|
|
1347
1392
|
},
|
|
1348
1393
|
], exportAs: ["abpPageToolbar"], usesInheritance: true, ngImport: i0, template: "<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 *ngComponentOutlet=\"component; injector: record | createInjector: action:this\"></ng-container>\r\n\r\n }@else {\r\n @if (asToolbarAction(action).value; as toolbarAction ) {\r\n <button (click)=\"action.action(data)\" type=\"button\"\r\n [class]=\"toolbarAction?.btnClass ? toolbarAction?.btnClass : defaultBtnClass\"\r\n class=\"d-inline-flex align-items-center gap-1\">\r\n <i [class]=\"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>", dependencies: [{ kind: "directive", type: PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: CreateInjectorPipe, name: "createInjector" }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1349
1394
|
}
|
|
1350
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1395
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: PageToolbarComponent, decorators: [{
|
|
1351
1396
|
type: Component,
|
|
1352
1397
|
args: [{ exportAs: 'abpPageToolbar', selector: 'abp-page-toolbar', imports: [
|
|
1353
1398
|
CreateInjectorPipe,
|
|
@@ -1560,7 +1605,7 @@ function getObjectExtensionEntitiesFromStore(injector, moduleKey) {
|
|
|
1560
1605
|
return null;
|
|
1561
1606
|
return (extensions.modules[moduleKey] || {})
|
|
1562
1607
|
.entities;
|
|
1563
|
-
}), map(entities => (isUndefined(entities) ? {} : entities)), filter
|
|
1608
|
+
}), map(entities => (isUndefined(entities) ? {} : entities)), filter(Boolean), take(1));
|
|
1564
1609
|
}
|
|
1565
1610
|
function mapEntitiesToContributors(injector, resource) {
|
|
1566
1611
|
const configState = injector.get(ConfigStateService);
|
|
@@ -1672,8 +1717,8 @@ const importWithExport = [
|
|
|
1672
1717
|
ExtensibleFormMultiselectComponent,
|
|
1673
1718
|
];
|
|
1674
1719
|
class ExtensibleModule {
|
|
1675
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
1676
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.
|
|
1720
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1721
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleModule, imports: [CoreModule,
|
|
1677
1722
|
ThemeSharedModule,
|
|
1678
1723
|
NgxValidateCoreModule,
|
|
1679
1724
|
NgbDatepickerModule,
|
|
@@ -1701,7 +1746,7 @@ class ExtensibleModule {
|
|
|
1701
1746
|
ExtensibleTableComponent,
|
|
1702
1747
|
ExtensibleTableRowDetailComponent,
|
|
1703
1748
|
ExtensibleFormMultiselectComponent] }); }
|
|
1704
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.
|
|
1749
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleModule, imports: [CoreModule,
|
|
1705
1750
|
ThemeSharedModule,
|
|
1706
1751
|
NgxValidateCoreModule,
|
|
1707
1752
|
NgbDatepickerModule,
|
|
@@ -1715,7 +1760,7 @@ class ExtensibleModule {
|
|
|
1715
1760
|
ExtensibleTableComponent,
|
|
1716
1761
|
ExtensibleFormMultiselectComponent] }); }
|
|
1717
1762
|
}
|
|
1718
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1763
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExtensibleModule, decorators: [{
|
|
1719
1764
|
type: NgModule,
|
|
1720
1765
|
args: [{
|
|
1721
1766
|
declarations: [],
|