@dignite-ng/expand.dynamic-form 3.0.0-rc.30 → 3.0.0-rc.31
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/lib/components/form/select/select-config.component.mjs +11 -10
- package/esm2022/lib/dynamic-form.module.mjs +11 -3
- package/fesm2022/dignite-ng-expand.dynamic-form.mjs +19 -11
- package/fesm2022/dignite-ng-expand.dynamic-form.mjs.map +1 -1
- package/lib/components/form/select/select-config.component.d.ts +1 -1
- package/lib/dynamic-form.module.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,13 +1,16 @@
|
|
|
1
|
+
/* eslint-disable @angular-eslint/component-selector */
|
|
1
2
|
import { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';
|
|
2
3
|
import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
|
|
3
4
|
import { SelectConfig } from './select-config';
|
|
4
5
|
import { DfApiService } from '../../../services';
|
|
6
|
+
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
import * as i1 from "@angular/forms";
|
|
7
9
|
import * as i2 from "../../../services";
|
|
8
10
|
import * as i3 from "@angular/common";
|
|
9
11
|
import * as i4 from "@abp/ng.core";
|
|
10
12
|
import * as i5 from "@ngx-validate/core";
|
|
13
|
+
import * as i6 from "@angular/cdk/drag-drop";
|
|
11
14
|
export class SelectConfigComponent {
|
|
12
15
|
constructor(fb, _DfApiService) {
|
|
13
16
|
this.fb = fb;
|
|
@@ -72,8 +75,8 @@ export class SelectConfigComponent {
|
|
|
72
75
|
});
|
|
73
76
|
}
|
|
74
77
|
textChange(event, index) {
|
|
75
|
-
|
|
76
|
-
|
|
78
|
+
const SelectOptionsItem = this.SelectOptions.at(index);
|
|
79
|
+
const value = event.target.value;
|
|
77
80
|
if (SelectOptionsItem.get('Value')?.value)
|
|
78
81
|
return;
|
|
79
82
|
SelectOptionsItem.patchValue({
|
|
@@ -81,18 +84,16 @@ export class SelectConfigComponent {
|
|
|
81
84
|
});
|
|
82
85
|
}
|
|
83
86
|
/**调整表格位置 */
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
this.SelectOptions.
|
|
87
|
-
let lastindex = type == 'up' ? index - 1 : index + 1;
|
|
88
|
-
this.SelectOptions.insert(lastindex, controlAt);
|
|
87
|
+
drop(event) {
|
|
88
|
+
moveItemInArray(this.SelectOptions.controls, event.previousIndex, event.currentIndex);
|
|
89
|
+
this.SelectOptions.updateValueAndValidity();
|
|
89
90
|
}
|
|
90
91
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: SelectConfigComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DfApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
91
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: SelectConfigComponent, selector: "df-select-config", inputs: { type: "type", selected: "selected", Entity: "Entity" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::SelectListItem' | abpLocalization}}</label>\n <table class=\"table\">\n <thead>\n <tr>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemText' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemValue' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::Selected' | abpLocalization}}</th>\n <th scope=\"col\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addSelectOptions()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"Select.Options\">\n <ng-container *ngFor=\"let item of SelectOptions.controls;let i=index\">\n <tr [formGroupName]=\"i\">\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Text\"\n (change)=\"textChange($event,i)\"></td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Value\"></td>\n <td>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Selected\"\n id=\"selected\">\n </div>\n </td>\n <td scope=\"row\" style=\"width: 1%;\">\n <
|
|
92
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: SelectConfigComponent, selector: "df-select-config", inputs: { type: "type", selected: "selected", Entity: "Entity" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::SelectListItem' | abpLocalization}}</label>\n <table class=\"table drag-table\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemText' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemValue' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::Selected' | abpLocalization}}</th>\n <th scope=\"col\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addSelectOptions()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"Select.Options\">\n <ng-container *ngFor=\"let item of SelectOptions.controls;let i=index\">\n <tr [formGroupName]=\"i\" cdkDrag cdkDragLockAxis=\"y\" [cdkDragData]=\"item\">\n <td>\n <div class=\"drag-handle\" cdkDragHandle>\n <span class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Text\"\n (change)=\"textChange($event,i)\"></td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Value\"></td>\n <td>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Selected\"\n id=\"selected\">\n </div>\n </td>\n <td scope=\"row\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"deleteSelectOptions(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::NullText' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"Select.NullText\">\n </div>\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Select.Multiple\" id=\"Multiple\">\n <label class=\"form-check-label\" for=\"Multiple\">\n {{'AbpDynamicForm::Multiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i4.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i4.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i5.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i5.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] }); }
|
|
92
93
|
}
|
|
93
94
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: SelectConfigComponent, decorators: [{
|
|
94
95
|
type: Component,
|
|
95
|
-
args: [{ selector: 'df-select-config', template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::SelectListItem' | abpLocalization}}</label>\n <table class=\"table\">\n <thead>\n <tr>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemText' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemValue' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::Selected' | abpLocalization}}</th>\n <th scope=\"col\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addSelectOptions()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"Select.Options\">\n <ng-container *ngFor=\"let item of SelectOptions.controls;let i=index\">\n <tr [formGroupName]=\"i\">\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Text\"\n (change)=\"textChange($event,i)\"></td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Value\"></td>\n <td>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Selected\"\n id=\"selected\">\n </div>\n </td>\n <td scope=\"row\" style=\"width: 1%;\">\n <
|
|
96
|
+
args: [{ selector: 'df-select-config', template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::SelectListItem' | abpLocalization}}</label>\n <table class=\"table drag-table\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemText' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemValue' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::Selected' | abpLocalization}}</th>\n <th scope=\"col\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addSelectOptions()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"Select.Options\">\n <ng-container *ngFor=\"let item of SelectOptions.controls;let i=index\">\n <tr [formGroupName]=\"i\" cdkDrag cdkDragLockAxis=\"y\" [cdkDragData]=\"item\">\n <td>\n <div class=\"drag-handle\" cdkDragHandle>\n <span class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Text\"\n (change)=\"textChange($event,i)\"></td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Value\"></td>\n <td>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Selected\"\n id=\"selected\">\n </div>\n </td>\n <td scope=\"row\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"deleteSelectOptions(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::NullText' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"Select.NullText\">\n </div>\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Select.Multiple\" id=\"Multiple\">\n <label class=\"form-check-label\" for=\"Multiple\">\n {{'AbpDynamicForm::Multiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>" }]
|
|
96
97
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.DfApiService }], propDecorators: { type: [{
|
|
97
98
|
type: Input
|
|
98
99
|
}], selected: [{
|
|
@@ -103,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
103
104
|
type: ViewChild,
|
|
104
105
|
args: ['submitclick', { static: true }]
|
|
105
106
|
}] } });
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vc2VsZWN0L3NlbGVjdC1jb25maWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHluYW1pYy1mb3JtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3NlbGVjdC9zZWxlY3QtY29uZmlnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBYSxXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBUWpELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFBb0IsRUFBZSxFQUFVLGFBQTJCO1FBQXBELE9BQUUsR0FBRixFQUFFLENBQWE7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQTZCaEUsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBN0JtQyxDQUFDO0lBRzVFLElBQ1csSUFBSSxDQUFDLENBQU07UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUlELElBQ1csUUFBUSxDQUFDLENBQU07UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUlELElBQ1csTUFBTSxDQUFDLENBQVk7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RCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLO1lBQUUsT0FBTztRQUNsRCxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7WUFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztTQUNqRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtJQUNaLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLO1FBQzVCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2xDLElBQUksU0FBUyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUE7UUFDcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ2pELENBQUM7OEdBMUZVLHFCQUFxQjtrR0FBckIscUJBQXFCLG9QQ1hsQyw2MkhBc0VPOzsyRkQzRE0scUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLGtCQUFrQjsyR0FVakIsSUFBSTtzQkFEZCxLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBUUssTUFBTTtzQkFEaEIsS0FBSztnQkFXc0MsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2VsZWN0Q29uZmlnIH0gZnJvbSAnLi9zZWxlY3QtY29uZmlnJztcbmltcG9ydCB7IERmQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGYtc2VsZWN0LWNvbmZpZycsXG5cbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1jb25maWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtY29uZmlnLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbmZpZ0NvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIF9EZkFwaVNlcnZpY2U6IERmQXBpU2VydmljZSkge31cbiAgLyoq6KGo5Y2V5o6n5Lu257G75Z6LICovXG4gIF90eXBlOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdHlwZSh2OiBhbnkpIHtcbiAgICB0aGlzLl90eXBlID0gdjtcbiAgfVxuXG4gIC8qKumAieaLqeeahOihqOWNleS/oeaBryAqL1xuICBfc2VsZWN0ZWQ6IGFueTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RlZCh2OiBhbnkpIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHY7XG4gIH1cblxuICAvKirooajljZXlrp7kvZMgKi9cbiAgX0VudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IEVudGl0eSh2OiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLl9FbnRpdHkgPSB2O1xuICAgIHRoaXMuZGF0YUxvYWRlZCgpO1xuICB9XG4gIGdldCBmb3JtQ29uZmlndXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fRW50aXR5Py5nZXQoJ2Zvcm1Db25maWd1cmF0aW9uJykgYXMgRm9ybUdyb3VwO1xuICB9XG4gIGdldCBTZWxlY3RPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db25maWd1cmF0aW9uLmNvbnRyb2xzWydTZWxlY3QuT3B0aW9ucyddIGFzIEZvcm1BcnJheTtcbiAgfVxuICBAVmlld0NoaWxkKCdzdWJtaXRjbGljaycsIHsgc3RhdGljOiB0cnVlIH0pIHN1Ym1pdGNsaWNrOiBFbGVtZW50UmVmO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIGFzeW5jIGRhdGFMb2FkZWQoKSB7XG4gICAgaWYgKHRoaXMuX0VudGl0eSAmJiB0aGlzLl90eXBlKSB7XG4gICAgICBhd2FpdCB0aGlzLkFmdGVySW5pdCgpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyAvLyDmiYvliqjop6blj5Hlj5jmm7Tmo4DmtYtcbiAgICAgIHRoaXMuc3VibWl0Y2xpY2s/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKCk7XG4gICAgfVxuICB9XG4gIC8qKuWinuWKoOmAiemhuSAqL1xuICBhZGRTZWxlY3RPcHRpb25zKCkge1xuICAgIHRoaXMuU2VsZWN0T3B0aW9ucy5wdXNoKFxuICAgICAgbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIFRleHQ6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIFZhbHVlOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBTZWxlY3RlZDogbmV3IEZvcm1Db250cm9sKGZhbHNlKSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuICAvKirliKDpmaTmn5DkuKrpgInpobkgKi9cbiAgZGVsZXRlU2VsZWN0T3B0aW9ucyhpbmRleCkge1xuICAgIHRoaXMuU2VsZWN0T3B0aW9ucy5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBBZnRlckluaXQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9FbnRpdHk/LnNldENvbnRyb2woJ2Zvcm1Db25maWd1cmF0aW9uJywgdGhpcy5mYi5ncm91cChuZXcgU2VsZWN0Q29uZmlnKCkpKTtcbiAgICAgIGlmICh0aGlzLl9zZWxlY3RlZCAmJiB0aGlzLl9zZWxlY3RlZC5mb3JtQ29udHJvbE5hbWUgPT0gdGhpcy5fdHlwZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGhpcy5fc2VsZWN0ZWQuZm9ybUNvbmZpZ3VyYXRpb25bJ1NlbGVjdC5PcHRpb25zJ10pIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBlbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gZWxlbWVudFtrZXldO1xuICAgICAgICAgICAgY29uc3QgY2FwaXRhbGl6ZWRLZXkgPSBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSk7XG4gICAgICAgICAgICBlbGVtZW50W2NhcGl0YWxpemVkS2V5XSA9IGl0ZW07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWRkU2VsZWN0T3B0aW9ucygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgLi4udGhpcy5fc2VsZWN0ZWQuZm9ybUNvbmZpZ3VyYXRpb24sXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGRTZWxlY3RPcHRpb25zKCk7XG4gICAgICB9XG4gICAgICByZXNvbHZlKHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgdGV4dENoYW5nZShldmVudCwgaW5kZXgpIHtcbiAgICBsZXQgU2VsZWN0T3B0aW9uc0l0ZW0gPSB0aGlzLlNlbGVjdE9wdGlvbnMuYXQoaW5kZXgpO1xuICAgIGxldCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBpZiAoU2VsZWN0T3B0aW9uc0l0ZW0uZ2V0KCdWYWx1ZScpPy52YWx1ZSkgcmV0dXJuO1xuICAgIFNlbGVjdE9wdGlvbnNJdGVtLnBhdGNoVmFsdWUoe1xuICAgICAgVmFsdWU6IHRoaXMuX0RmQXBpU2VydmljZS5jaGluZXNlVG9QaW55aW4odmFsdWUpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoq6LCD5pW06KGo5qC85L2N572uICovXG4gIFRhYmxlQXJyb3dVcE9yRG93bih0eXBlLCBpbmRleCkge1xuICAgIGxldCBjb250cm9sQXQgPSB0aGlzLlNlbGVjdE9wdGlvbnMuYXQoaW5kZXgpXG4gICAgdGhpcy5TZWxlY3RPcHRpb25zLnJlbW92ZUF0KGluZGV4KVxuICAgIGxldCBsYXN0aW5kZXggPSB0eXBlID09ICd1cCcgPyBpbmRleCAtIDEgOiBpbmRleCArIDFcbiAgICB0aGlzLlNlbGVjdE9wdGlvbnMuaW5zZXJ0KGxhc3RpbmRleCwgY29udHJvbEF0KVxuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cIl9FbnRpdHlcIj5cbiAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9XCJmb3JtQ29uZmlndXJhdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0FicER5bmFtaWNGb3JtOjpTZWxlY3RMaXN0SXRlbScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+e3snQWJwRHluYW1pY0Zvcm06OlNlbGVjdExpc3RJdGVtVGV4dCcgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj57eydBYnBEeW5hbWljRm9ybTo6U2VsZWN0TGlzdEl0ZW1WYWx1ZScgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj57eydBYnBEeW5hbWljRm9ybTo6U2VsZWN0ZWQnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgc3R5bGU9XCJ3aWR0aDogMSU7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtXCIgKGNsaWNrLnN0b3ApPVwiYWRkU2VsZWN0T3B0aW9ucygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgIDx0Ym9keSBmb3JtQXJyYXlOYW1lPVwiU2VsZWN0Lk9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBTZWxlY3RPcHRpb25zLmNvbnRyb2xzO2xldCBpPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cIlRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0ZXh0Q2hhbmdlKCRldmVudCxpKVwiPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiVmFsdWVcIj48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiBmb3JtQ29udHJvbE5hbWU9XCJTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzZWxlY3RlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzY29wZT1cInJvd1wiIHN0eWxlPVwid2lkdGg6IDElO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbVwiIChjbGljay5zdG9wKT1cImRlbGV0ZVNlbGVjdE9wdGlvbnMoaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1taW51c1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIG1zLTFcIiAqbmdJZj1cImkhPT0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJUYWJsZUFycm93VXBPckRvd24oJ3VwJyxpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFycm93LXVwXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gbXMtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpIT09U2VsZWN0T3B0aW9ucy5jb250cm9scy5sZW5ndGgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrLnN0b3ApPVwiVGFibGVBcnJvd1VwT3JEb3duKCdkb3duJyxpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFycm93LWRvd25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9kaXY+XG5cblxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQWJwRHluYW1pY0Zvcm06Ok51bGxUZXh0JyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiU2VsZWN0Lk51bGxUZXh0XCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgZm9ybUNvbnRyb2xOYW1lPVwiU2VsZWN0Lk11bHRpcGxlXCIgaWQ9XCJNdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJNdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eydBYnBEeW5hbWljRm9ybTo6TXVsdGlwbGUnIHwgYWJwTG9jYWxpemF0aW9ufX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoYWJwSW5pdCk9XCJzdWJtaXRjbGljaz8ubmF0aXZlRWxlbWVudD8uY2xpY2soKVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIlxuICAgICAgICAgICAgI3N1Ym1pdGNsaWNrPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9mb3JtPiJdfQ==
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vc2VsZWN0L3NlbGVjdC1jb25maWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHluYW1pYy1mb3JtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3NlbGVjdC9zZWxlY3QtY29uZmlnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQWEsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUcsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7O0FBUTFELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFBb0IsRUFBZSxFQUFVLGFBQTJCO1FBQXBELE9BQUUsR0FBRixFQUFFLENBQWE7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQTZCaEUsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBN0JtQyxDQUFDO0lBRzVFLElBQ1csSUFBSSxDQUFDLENBQU07UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUlELElBQ1csUUFBUSxDQUFDLENBQU07UUFDeEIsSUFBSSxDQUFD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aUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqQyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLO1lBQUUsT0FBTztRQUNsRCxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7WUFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztTQUNqRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtJQUNaLElBQUksQ0FBQyxLQUFVO1FBQ2IsZUFBZSxDQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUMzQixLQUFLLENBQUMsYUFBYSxFQUNuQixLQUFLLENBQUMsWUFBWSxDQUNuQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO0lBQzdDLENBQUM7OEdBNUZVLHFCQUFxQjtrR0FBckIscUJBQXFCLG9QQ2JsQyxnOUdBNERPOzsyRkQvQ00scUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLGtCQUFrQjsyR0FVakIsSUFBSTtzQkFEZCxLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBUUssTUFBTTtzQkFEaEIsS0FBSztnQkFXc0MsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2VsZWN0Q29uZmlnIH0gZnJvbSAnLi9zZWxlY3QtY29uZmlnJztcbmltcG9ydCB7IERmQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7ICBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGYtc2VsZWN0LWNvbmZpZycsXG5cbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1jb25maWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtY29uZmlnLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbmZpZ0NvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIF9EZkFwaVNlcnZpY2U6IERmQXBpU2VydmljZSkge31cbiAgLyoq6KGo5Y2V5o6n5Lu257G75Z6LICovXG4gIF90eXBlOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdHlwZSh2OiBhbnkpIHtcbiAgICB0aGlzLl90eXBlID0gdjtcbiAgfVxuXG4gIC8qKumAieaLqeeahOihqOWNleS/oeaBryAqL1xuICBfc2VsZWN0ZWQ6IGFueTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RlZCh2OiBhbnkpIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHY7XG4gIH1cblxuICAvKirooajljZXlrp7kvZMgKi9cbiAgX0VudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IEVudGl0eSh2OiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLl9FbnRpdHkgPSB2O1xuICAgIHRoaXMuZGF0YUxvYWRlZCgpO1xuICB9XG4gIGdldCBmb3JtQ29uZmlndXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fRW50aXR5Py5nZXQoJ2Zvcm1Db25maWd1cmF0aW9uJykgYXMgRm9ybUdyb3VwO1xuICB9XG4gIGdldCBTZWxlY3RPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db25maWd1cmF0aW9uLmNvbnRyb2xzWydTZWxlY3QuT3B0aW9ucyddIGFzIEZvcm1BcnJheTtcbiAgfVxuICBAVmlld0NoaWxkKCdzdWJtaXRjbGljaycsIHsgc3RhdGljOiB0cnVlIH0pIHN1Ym1pdGNsaWNrOiBFbGVtZW50UmVmO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIGFzeW5jIGRhdGFMb2FkZWQoKSB7XG4gICAgaWYgKHRoaXMuX0VudGl0eSAmJiB0aGlzLl90eXBlKSB7XG4gICAgICBhd2FpdCB0aGlzLkFmdGVySW5pdCgpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyAvLyDmiYvliqjop6blj5Hlj5jmm7Tmo4DmtYtcbiAgICAgIHRoaXMuc3VibWl0Y2xpY2s/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKCk7XG4gICAgfVxuICB9XG4gIC8qKuWinuWKoOmAiemhuSAqL1xuICBhZGRTZWxlY3RPcHRpb25zKCkge1xuICAgIHRoaXMuU2VsZWN0T3B0aW9ucy5wdXNoKFxuICAgICAgbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIFRleHQ6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIFZhbHVlOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBTZWxlY3RlZDogbmV3IEZvcm1Db250cm9sKGZhbHNlKSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuICAvKirliKDpmaTmn5DkuKrpgInpobkgKi9cbiAgZGVsZXRlU2VsZWN0T3B0aW9ucyhpbmRleCkge1xuICAgIHRoaXMuU2VsZWN0T3B0aW9ucy5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBBZnRlckluaXQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9FbnRpdHk/LnNldENvbnRyb2woJ2Zvcm1Db25maWd1cmF0aW9uJywgdGhpcy5mYi5ncm91cChuZXcgU2VsZWN0Q29uZmlnKCkpKTtcbiAgICAgIGlmICh0aGlzLl9zZWxlY3RlZCAmJiB0aGlzLl9zZWxlY3RlZC5mb3JtQ29udHJvbE5hbWUgPT0gdGhpcy5fdHlwZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGhpcy5fc2VsZWN0ZWQuZm9ybUNvbmZpZ3VyYXRpb25bJ1NlbGVjdC5PcHRpb25zJ10pIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBlbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gZWxlbWVudFtrZXldO1xuICAgICAgICAgICAgY29uc3QgY2FwaXRhbGl6ZWRLZXkgPSBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSk7XG4gICAgICAgICAgICBlbGVtZW50W2NhcGl0YWxpemVkS2V5XSA9IGl0ZW07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWRkU2VsZWN0T3B0aW9ucygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgLi4udGhpcy5fc2VsZWN0ZWQuZm9ybUNvbmZpZ3VyYXRpb24sXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGRTZWxlY3RPcHRpb25zKCk7XG4gICAgICB9XG4gICAgICByZXNvbHZlKHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgdGV4dENoYW5nZShldmVudCwgaW5kZXgpIHtcbiAgICBjb25zdCBTZWxlY3RPcHRpb25zSXRlbSA9IHRoaXMuU2VsZWN0T3B0aW9ucy5hdChpbmRleCk7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgaWYgKFNlbGVjdE9wdGlvbnNJdGVtLmdldCgnVmFsdWUnKT8udmFsdWUpIHJldHVybjtcbiAgICBTZWxlY3RPcHRpb25zSXRlbS5wYXRjaFZhbHVlKHtcbiAgICAgIFZhbHVlOiB0aGlzLl9EZkFwaVNlcnZpY2UuY2hpbmVzZVRvUGlueWluKHZhbHVlKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKuiwg+aVtOihqOagvOS9jee9riAqL1xuICBkcm9wKGV2ZW50OiBhbnkpIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICB0aGlzLlNlbGVjdE9wdGlvbnMuY29udHJvbHMsXG4gICAgICBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgZXZlbnQuY3VycmVudEluZGV4XG4gICAgKTtcbiAgICB0aGlzLlNlbGVjdE9wdGlvbnMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiX0VudGl0eVwiPlxuICAgIDxkaXYgZm9ybUdyb3VwTmFtZT1cImZvcm1Db25maWd1cmF0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQWJwRHluYW1pY0Zvcm06OlNlbGVjdExpc3RJdGVtJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGRyYWctdGFibGVcIiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPnt7J0FicER5bmFtaWNGb3JtOjpTZWxlY3RMaXN0SXRlbVRleHQnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+e3snQWJwRHluYW1pY0Zvcm06OlNlbGVjdExpc3RJdGVtVmFsdWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+e3snQWJwRHluYW1pY0Zvcm06OlNlbGVjdGVkJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIHN0eWxlPVwid2lkdGg6IDElO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbVwiIChjbGljay5zdG9wKT1cImFkZFNlbGVjdE9wdGlvbnMoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHkgZm9ybUFycmF5TmFtZT1cIlNlbGVjdC5PcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgU2VsZWN0T3B0aW9ucy5jb250cm9scztsZXQgaT1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFtmb3JtR3JvdXBOYW1lXT1cImlcIiBjZGtEcmFnIGNka0RyYWdMb2NrQXhpcz1cInlcIiBbY2RrRHJhZ0RhdGFdPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyYWctaGFuZGxlXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmkgYmktYXJyb3dzLW1vdmUgZnMtNVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidGV4dENoYW5nZSgkZXZlbnQsaSlcIj48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cIlZhbHVlXCI+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgZm9ybUNvbnRyb2xOYW1lPVwiU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc2NvcGU9XCJyb3dcIiBzdHlsZT1cIndpZHRoOiAxJTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtXCIgKGNsaWNrLnN0b3ApPVwiZGVsZXRlU2VsZWN0T3B0aW9ucyhpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbWludXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQWJwRHluYW1pY0Zvcm06Ok51bGxUZXh0JyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiU2VsZWN0Lk51bGxUZXh0XCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgZm9ybUNvbnRyb2xOYW1lPVwiU2VsZWN0Lk11bHRpcGxlXCIgaWQ9XCJNdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJNdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eydBYnBEeW5hbWljRm9ybTo6TXVsdGlwbGUnIHwgYWJwTG9jYWxpemF0aW9ufX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoYWJwSW5pdCk9XCJzdWJtaXRjbGljaz8ubmF0aXZlRWxlbWVudD8uY2xpY2soKVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIlxuICAgICAgICAgICAgI3N1Ym1pdGNsaWNrPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9mb3JtPiJdfQ==
|
|
@@ -19,6 +19,7 @@ import { SelectSearchComponent } from './components/form/select/select-search.co
|
|
|
19
19
|
import { TextEditSearchComponent } from './components/form/text-edit/text-edit-search.component';
|
|
20
20
|
import { SwitchSearchComponent } from './components/form/switch/switch-search.component';
|
|
21
21
|
import { NumericEditSearchComponent } from './components/form/numeric-edit/numeric-edit-search.component';
|
|
22
|
+
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
22
23
|
import * as i0 from "@angular/core";
|
|
23
24
|
export class DynamicFormModule {
|
|
24
25
|
static forRoot(config) {
|
|
@@ -56,7 +57,10 @@ export class DynamicFormModule {
|
|
|
56
57
|
ThemeSharedModule,
|
|
57
58
|
ReactiveFormsModule,
|
|
58
59
|
NgbDropdownModule,
|
|
59
|
-
NzSelectModule
|
|
60
|
+
NzSelectModule,
|
|
61
|
+
DragDropModule
|
|
62
|
+
// NzTreeModule,
|
|
63
|
+
], exports: [TextEditConfigComponent,
|
|
60
64
|
TextEditComponent,
|
|
61
65
|
TextEditViewComponent,
|
|
62
66
|
SwitchConfigComponent,
|
|
@@ -81,7 +85,10 @@ export class DynamicFormModule {
|
|
|
81
85
|
ThemeSharedModule,
|
|
82
86
|
ReactiveFormsModule,
|
|
83
87
|
NgbDropdownModule,
|
|
84
|
-
NzSelectModule
|
|
88
|
+
NzSelectModule,
|
|
89
|
+
DragDropModule
|
|
90
|
+
// NzTreeModule,
|
|
91
|
+
] }); }
|
|
85
92
|
}
|
|
86
93
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: DynamicFormModule, decorators: [{
|
|
87
94
|
type: NgModule,
|
|
@@ -119,6 +126,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
119
126
|
ReactiveFormsModule,
|
|
120
127
|
NgbDropdownModule,
|
|
121
128
|
NzSelectModule,
|
|
129
|
+
DragDropModule
|
|
122
130
|
// NzTreeModule,
|
|
123
131
|
],
|
|
124
132
|
exports: [
|
|
@@ -146,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
146
154
|
providers: [],
|
|
147
155
|
}]
|
|
148
156
|
}] });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2R5bmFtaWMtZm9ybS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QscURBQXFEO0FBQ3JELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEdBQ2pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM3RixP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RCxPQUFPLEVBQUU7d0JBQ1AsdUJBQXVCO3dCQUN2QixpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsMkJBQTJCO3dCQUMzQiw0QkFBNEI7d0JBQzVCLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsZ0JBQWdCO3dCQUNoQixzQkFBc0I7d0JBQ3RCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QixzQkFBc0I7cUJBQ3ZCO29CQUNELFNBQVMsRUFBRSxFQUNWO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBUaGVtZVNoYXJlZE1vZHVsZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuLy8gaW1wb3J0IHsgTnpUcmVlTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC90cmVlJztcbmltcG9ydCB7XG4gIFRleHRFZGl0Q29uZmlnQ29tcG9uZW50LFxuICBUZXh0RWRpdENvbXBvbmVudCxcbiAgU3dpdGNoQ29uZmlnQ29tcG9uZW50LFxuICBTd2l0Y2hDb250cm9sQ29tcG9uZW50LFxuICBOdW1iZXJpY0VkaXRDb25maWdDb21wb25lbnQsXG4gIE51bWJlcmljRWRpdENvbnRyb2xDb21wb25lbnQsXG4gIERhdGVFZGl0Q29uZmlnQ29tcG9uZW50LFxuICBEYXRlRWRpdENvbnRyb2xDb21wb25lbnQsXG4gIFNlbGVjdENvbmZpZ0NvbXBvbmVudCxcbiAgU2VsZWN0Q29udHJvbENvbXBvbmVudCxcbiAgRHluYW1pY0NvbXBvbmVudCxcbn0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IE56U2VsZWN0TW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9zZWxlY3QnO1xuaW1wb3J0IHsgRHluYW1pY0NvbmZpZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9keW5hbWljL2R5bmFtaWMtY29uZmlnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9keW5hbWljL2R5bmFtaWMtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0NvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZHluYW1pYy9keW5hbWljLWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdFZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS9zZWxlY3Qvc2VsZWN0LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFN3aXRjaFZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS9zd2l0Y2gvc3dpdGNoLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRFZGl0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtL3RleHQtZWRpdC90ZXh0LWVkaXQtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUVkaXRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0vZGF0ZS1lZGl0L2RhdGUtZWRpdC12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOdW1lcmljRWRpdFZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS9udW1lcmljLWVkaXQvbnVtZXJpYy1lZGl0LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZHluYW1pYy9keW5hbWljLXNlYXJjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0vc2VsZWN0L3NlbGVjdC1zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRFZGl0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0vdGV4dC1lZGl0L3RleHQtZWRpdC1zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IFN3aXRjaFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtL3N3aXRjaC9zd2l0Y2gtc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOdW1lcmljRWRpdFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtL251bWVyaWMtZWRpdC9udW1lcmljLWVkaXQtc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQge0RyYWdEcm9wTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBUZXh0RWRpdENvbmZpZ0NvbXBvbmVudCxcbiAgICBUZXh0RWRpdENvbXBvbmVudCxcbiAgICBTd2l0Y2hDb25maWdDb21wb25lbnQsXG4gICAgU3dpdGNoQ29udHJvbENvbXBvbmVudCxcbiAgICBOdW1iZXJpY0VkaXRDb25maWdDb21wb25lbnQsXG4gICAgTnVtYmVyaWNFZGl0Q29udHJvbENvbXBvbmVudCxcbiAgICBEYXRlRWRpdENvbmZpZ0NvbXBvbmVudCxcbiAgICBEYXRlRWRpdENvbnRyb2xDb21wb25lbnQsXG4gICAgU2VsZWN0Q29uZmlnQ29tcG9uZW50LFxuICAgIFNlbGVjdENvbnRyb2xDb21wb25lbnQsXG4gICAgRHluYW1pY0NvbXBvbmVudCxcbiAgICBEeW5hbWljQ29uZmlnQ29tcG9uZW50LFxuICAgIER5bmFtaWNWaWV3Q29tcG9uZW50LFxuICAgIER5bmFtaWNDb250cm9sQ29tcG9uZW50LFxuICAgIFNlbGVjdFZpZXdDb21wb25lbnQsXG4gICAgU3dpdGNoVmlld0NvbXBvbmVudCxcbiAgICBUZXh0RWRpdFZpZXdDb21wb25lbnQsXG4gICAgRGF0ZUVkaXRWaWV3Q29tcG9uZW50LFxuICAgIE51bWVyaWNFZGl0Vmlld0NvbXBvbmVudCxcbiAgICBEeW5hbWljU2VhcmNoQ29tcG9uZW50LFxuICAgIFNlbGVjdFNlYXJjaENvbXBvbmVudCxcbiAgICBUZXh0RWRpdFNlYXJjaENvbXBvbmVudCxcbiAgICBTd2l0Y2hTZWFyY2hDb21wb25lbnQsXG4gICAgTnVtZXJpY0VkaXRTZWFyY2hDb21wb25lbnQsXG5cbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvcmVNb2R1bGUsXG4gICAgVGhlbWVTaGFyZWRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcbiAgICAgIE56U2VsZWN0TW9kdWxlLFxuICAgICAgRHJhZ0Ryb3BNb2R1bGVcbiAgICAvLyBOelRyZWVNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBUZXh0RWRpdENvbmZpZ0NvbXBvbmVudCxcbiAgICBUZXh0RWRpdENvbXBvbmVudCxcbiAgICBUZXh0RWRpdFZpZXdDb21wb25lbnQsXG4gICAgU3dpdGNoQ29uZmlnQ29tcG9uZW50LFxuICAgIFN3aXRjaENvbnRyb2xDb21wb25lbnQsXG4gICAgU3dpdGNoVmlld0NvbXBvbmVudCxcbiAgICBOdW1iZXJpY0VkaXRDb25maWdDb21wb25lbnQsXG4gICAgTnVtYmVyaWNFZGl0Q29udHJvbENvbXBvbmVudCxcbiAgICBEYXRlRWRpdENvbmZpZ0NvbXBvbmVudCxcbiAgICBEYXRlRWRpdENvbnRyb2xDb21wb25lbnQsXG4gICAgRGF0ZUVkaXRWaWV3Q29tcG9uZW50LFxuICAgIFNlbGVjdENvbmZpZ0NvbXBvbmVudCxcbiAgICBTZWxlY3RDb250cm9sQ29tcG9uZW50LFxuICAgIFNlbGVjdFZpZXdDb21wb25lbnQsXG4gICAgU2VsZWN0U2VhcmNoQ29tcG9uZW50LFxuICAgIER5bmFtaWNDb21wb25lbnQsXG4gICAgRHluYW1pY0NvbmZpZ0NvbXBvbmVudCxcbiAgICBEeW5hbWljVmlld0NvbXBvbmVudCxcbiAgICBEeW5hbWljQ29udHJvbENvbXBvbmVudCxcbiAgICBEeW5hbWljU2VhcmNoQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybU1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IGFueSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RHluYW1pY0Zvcm1Nb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IER5bmFtaWNGb3JtTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -10,6 +10,8 @@ import * as i3 from '@ngx-validate/core';
|
|
|
10
10
|
import * as i2$1 from '@angular/common';
|
|
11
11
|
import { DatePipe } from '@angular/common';
|
|
12
12
|
import { pinyin } from 'pinyin-pro';
|
|
13
|
+
import * as i6 from '@angular/cdk/drag-drop';
|
|
14
|
+
import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
|
|
13
15
|
import * as i4 from 'ng-zorro-antd/select';
|
|
14
16
|
import { NzSelectModule } from 'ng-zorro-antd/select';
|
|
15
17
|
|
|
@@ -1186,6 +1188,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
1186
1188
|
}]
|
|
1187
1189
|
}], ctorParameters: () => [] });
|
|
1188
1190
|
|
|
1191
|
+
/* eslint-disable @angular-eslint/component-selector */
|
|
1189
1192
|
class SelectConfigComponent {
|
|
1190
1193
|
constructor(fb, _DfApiService) {
|
|
1191
1194
|
this.fb = fb;
|
|
@@ -1250,8 +1253,8 @@ class SelectConfigComponent {
|
|
|
1250
1253
|
});
|
|
1251
1254
|
}
|
|
1252
1255
|
textChange(event, index) {
|
|
1253
|
-
|
|
1254
|
-
|
|
1256
|
+
const SelectOptionsItem = this.SelectOptions.at(index);
|
|
1257
|
+
const value = event.target.value;
|
|
1255
1258
|
if (SelectOptionsItem.get('Value')?.value)
|
|
1256
1259
|
return;
|
|
1257
1260
|
SelectOptionsItem.patchValue({
|
|
@@ -1259,18 +1262,16 @@ class SelectConfigComponent {
|
|
|
1259
1262
|
});
|
|
1260
1263
|
}
|
|
1261
1264
|
/**调整表格位置 */
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
this.SelectOptions.
|
|
1265
|
-
let lastindex = type == 'up' ? index - 1 : index + 1;
|
|
1266
|
-
this.SelectOptions.insert(lastindex, controlAt);
|
|
1265
|
+
drop(event) {
|
|
1266
|
+
moveItemInArray(this.SelectOptions.controls, event.previousIndex, event.currentIndex);
|
|
1267
|
+
this.SelectOptions.updateValueAndValidity();
|
|
1267
1268
|
}
|
|
1268
1269
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: SelectConfigComponent, deps: [{ token: i1.FormBuilder }, { token: DfApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1269
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: SelectConfigComponent, selector: "df-select-config", inputs: { type: "type", selected: "selected", Entity: "Entity" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::SelectListItem' | abpLocalization}}</label>\n <table class=\"table\">\n <thead>\n <tr>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemText' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemValue' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::Selected' | abpLocalization}}</th>\n <th scope=\"col\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addSelectOptions()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"Select.Options\">\n <ng-container *ngFor=\"let item of SelectOptions.controls;let i=index\">\n <tr [formGroupName]=\"i\">\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Text\"\n (change)=\"textChange($event,i)\"></td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Value\"></td>\n <td>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Selected\"\n id=\"selected\">\n </div>\n </td>\n <td scope=\"row\" style=\"width: 1%;\">\n <
|
|
1270
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: SelectConfigComponent, selector: "df-select-config", inputs: { type: "type", selected: "selected", Entity: "Entity" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::SelectListItem' | abpLocalization}}</label>\n <table class=\"table drag-table\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemText' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemValue' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::Selected' | abpLocalization}}</th>\n <th scope=\"col\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addSelectOptions()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"Select.Options\">\n <ng-container *ngFor=\"let item of SelectOptions.controls;let i=index\">\n <tr [formGroupName]=\"i\" cdkDrag cdkDragLockAxis=\"y\" [cdkDragData]=\"item\">\n <td>\n <div class=\"drag-handle\" cdkDragHandle>\n <span class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Text\"\n (change)=\"textChange($event,i)\"></td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Value\"></td>\n <td>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Selected\"\n id=\"selected\">\n </div>\n </td>\n <td scope=\"row\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"deleteSelectOptions(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::NullText' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"Select.NullText\">\n </div>\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Select.Multiple\" id=\"Multiple\">\n <label class=\"form-check-label\" for=\"Multiple\">\n {{'AbpDynamicForm::Multiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i2.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i2.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i3.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i3.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] }); }
|
|
1270
1271
|
}
|
|
1271
1272
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: SelectConfigComponent, decorators: [{
|
|
1272
1273
|
type: Component,
|
|
1273
|
-
args: [{ selector: 'df-select-config', template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::SelectListItem' | abpLocalization}}</label>\n <table class=\"table\">\n <thead>\n <tr>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemText' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemValue' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::Selected' | abpLocalization}}</th>\n <th scope=\"col\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addSelectOptions()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"Select.Options\">\n <ng-container *ngFor=\"let item of SelectOptions.controls;let i=index\">\n <tr [formGroupName]=\"i\">\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Text\"\n (change)=\"textChange($event,i)\"></td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Value\"></td>\n <td>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Selected\"\n id=\"selected\">\n </div>\n </td>\n <td scope=\"row\" style=\"width: 1%;\">\n <
|
|
1274
|
+
args: [{ selector: 'df-select-config', template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::SelectListItem' | abpLocalization}}</label>\n <table class=\"table drag-table\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemText' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemValue' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::Selected' | abpLocalization}}</th>\n <th scope=\"col\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addSelectOptions()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"Select.Options\">\n <ng-container *ngFor=\"let item of SelectOptions.controls;let i=index\">\n <tr [formGroupName]=\"i\" cdkDrag cdkDragLockAxis=\"y\" [cdkDragData]=\"item\">\n <td>\n <div class=\"drag-handle\" cdkDragHandle>\n <span class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Text\"\n (change)=\"textChange($event,i)\"></td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Value\"></td>\n <td>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Selected\"\n id=\"selected\">\n </div>\n </td>\n <td scope=\"row\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"deleteSelectOptions(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::NullText' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"Select.NullText\">\n </div>\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Select.Multiple\" id=\"Multiple\">\n <label class=\"form-check-label\" for=\"Multiple\">\n {{'AbpDynamicForm::Multiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>" }]
|
|
1274
1275
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: DfApiService }], propDecorators: { type: [{
|
|
1275
1276
|
type: Input
|
|
1276
1277
|
}], selected: [{
|
|
@@ -1858,7 +1859,10 @@ class DynamicFormModule {
|
|
|
1858
1859
|
ThemeSharedModule,
|
|
1859
1860
|
ReactiveFormsModule,
|
|
1860
1861
|
NgbDropdownModule,
|
|
1861
|
-
NzSelectModule
|
|
1862
|
+
NzSelectModule,
|
|
1863
|
+
DragDropModule
|
|
1864
|
+
// NzTreeModule,
|
|
1865
|
+
], exports: [TextEditConfigComponent,
|
|
1862
1866
|
TextEditComponent,
|
|
1863
1867
|
TextEditViewComponent,
|
|
1864
1868
|
SwitchConfigComponent,
|
|
@@ -1883,7 +1887,10 @@ class DynamicFormModule {
|
|
|
1883
1887
|
ThemeSharedModule,
|
|
1884
1888
|
ReactiveFormsModule,
|
|
1885
1889
|
NgbDropdownModule,
|
|
1886
|
-
NzSelectModule
|
|
1890
|
+
NzSelectModule,
|
|
1891
|
+
DragDropModule
|
|
1892
|
+
// NzTreeModule,
|
|
1893
|
+
] }); }
|
|
1887
1894
|
}
|
|
1888
1895
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: DynamicFormModule, decorators: [{
|
|
1889
1896
|
type: NgModule,
|
|
@@ -1921,6 +1928,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
1921
1928
|
ReactiveFormsModule,
|
|
1922
1929
|
NgbDropdownModule,
|
|
1923
1930
|
NzSelectModule,
|
|
1931
|
+
DragDropModule
|
|
1924
1932
|
// NzTreeModule,
|
|
1925
1933
|
],
|
|
1926
1934
|
exports: [
|