brainloper-ui 1.0.16 → 1.0.18
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/esm2020/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.mjs +22 -12
- package/fesm2015/brainloper-ui.mjs +21 -11
- package/fesm2015/brainloper-ui.mjs.map +1 -1
- package/fesm2020/brainloper-ui.mjs +21 -11
- package/fesm2020/brainloper-ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -32,7 +32,7 @@ export class TableModalComponent {
|
|
|
32
32
|
this.data.columns.map((element) => {
|
|
33
33
|
if (!element.disregardForAdd) {
|
|
34
34
|
if (element.type === 'combo') {
|
|
35
|
-
this.dataCombo[element.ID] = '';
|
|
35
|
+
this.dataCombo[element.paramsCombo.selectionField !== element.ID ? element.paramsCombo.selectionField : element.ID] = '';
|
|
36
36
|
}
|
|
37
37
|
let initialValue = this.data.action === 'edit' ? element.value : '';
|
|
38
38
|
if (element.type === 'date' && element.value) {
|
|
@@ -45,9 +45,13 @@ export class TableModalComponent {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
|
-
this.modalForm = new FormGroup(group);
|
|
49
48
|
if (httpRequests.length > 0) {
|
|
50
|
-
forkJoin(httpRequests).subscribe()
|
|
49
|
+
forkJoin(httpRequests).subscribe(() => {
|
|
50
|
+
this.modalForm = new FormGroup(group);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.modalForm = new FormGroup(group);
|
|
51
55
|
}
|
|
52
56
|
}
|
|
53
57
|
// Extraemos la creación de la solicitud HTTP a su propia función para mejorar la legibilidad
|
|
@@ -58,13 +62,19 @@ export class TableModalComponent {
|
|
|
58
62
|
if (res['code'] === 0) {
|
|
59
63
|
element.identifierCombo = element.paramsCombo.selectionField !== element.ID ? element.paramsCombo.selectionField : element.ID;
|
|
60
64
|
this.dataCombo[element.identifierCombo] = res['body'];
|
|
61
|
-
if (this.data.action
|
|
62
|
-
|
|
63
|
-
if (data[element.paramsCombo.selectionField] === element.value) {
|
|
64
|
-
group[element.ID].setValue(data[element.paramsCombo.selectionField]);
|
|
65
|
-
}
|
|
66
|
-
});
|
|
65
|
+
if (this.data.action !== 'edit') {
|
|
66
|
+
return;
|
|
67
67
|
}
|
|
68
|
+
this.dataCombo[element.identifierCombo].some((data) => {
|
|
69
|
+
if (data[element.paramsCombo.selectionField] === element.value ||
|
|
70
|
+
data[element.paramsCombo.visibleField] === element.value) {
|
|
71
|
+
var value = data[element.paramsCombo.selectionField];
|
|
72
|
+
element.value = value;
|
|
73
|
+
group[element.ID].setValue(value);
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
});
|
|
68
78
|
}
|
|
69
79
|
}));
|
|
70
80
|
}
|
|
@@ -85,12 +95,12 @@ export class TableModalComponent {
|
|
|
85
95
|
}
|
|
86
96
|
}
|
|
87
97
|
TableModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TableModalComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.FormBuilder }, { token: i3.HttpService }], target: i0.ɵɵFactoryTarget.Component });
|
|
88
|
-
TableModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TableModalComponent, selector: "app-table-modal", ngImport: i0, template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"modalForm\">\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]=\"input.value\" (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.identifierCombo]'\r\n [value]='data[input.paramsCombo.selectionField]'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.
|
|
98
|
+
TableModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TableModalComponent, selector: "app-table-modal", ngImport: i0, template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"modalForm\">\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]=\"input.value\" (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.identifierCombo]'\r\n [value]='data[input.paramsCombo.selectionField]'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.identifierCombo]'\r\n [value]='data[input.paramsCombo.selectionField]'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"'\r\n (click)='onSubmit()'\r\n color='primary'\r\n mat-raised-button\r\n [disabled]=\"!modalForm.valid\">Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"], components: [{ type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i4.MatError, selector: "mat-error", inputs: ["id"] }] });
|
|
89
99
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TableModalComponent, decorators: [{
|
|
90
100
|
type: Component,
|
|
91
|
-
args: [{ selector: 'app-table-modal', template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"modalForm\">\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]=\"input.value\" (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.identifierCombo]'\r\n [value]='data[input.paramsCombo.selectionField]'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.
|
|
101
|
+
args: [{ selector: 'app-table-modal', template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"modalForm\">\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]=\"input.value\" (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.identifierCombo]'\r\n [value]='data[input.paramsCombo.selectionField]'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.identifierCombo]'\r\n [value]='data[input.paramsCombo.selectionField]'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"'\r\n (click)='onSubmit()'\r\n color='primary'\r\n mat-raised-button\r\n [disabled]=\"!modalForm.valid\">Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"] }]
|
|
92
102
|
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
93
103
|
type: Inject,
|
|
94
104
|
args: [MAT_DIALOG_DATA]
|
|
95
105
|
}] }, { type: i2.FormBuilder }, { type: i3.HttpService }]; } });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9kYXRhLXRhYmxlL3RhYmxlLW1vZGFsL3RhYmxlLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9icmFpbmxvcGVyLXVpL2NvbXBvbmVudHMvZGF0YS10YWJsZS90YWJsZS1tb2RhbC90YWJsZS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBZSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQU9yQyxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQ1MsU0FBNEMsRUFDbkIsSUFBSSxFQUM1QixXQUF3QixFQUN4QixJQUFpQjtRQUhsQixjQUFTLEdBQVQsU0FBUyxDQUFtQztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFBO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQWE7UUFSM0IsY0FBUyxHQUFjLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLGNBQVMsR0FBRyxFQUFFLENBQUM7SUFRWixDQUFDO0lBRUosU0FBUztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7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SyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQzt5QkFDdEU7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBR0QsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsRUFBTyxFQUFFLE1BQU0sRUFBRSxJQUFZO1FBQ3BDLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlDLE1BQU07WUFFUjtnQkFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckQsTUFBTTtTQUNUO0lBQ0gsQ0FBQzs7Z0hBdEZVLG1CQUFtQiw4Q0FPcEIsZUFBZTtvR0FQZCxtQkFBbUIsdURDWmhDLCtzR0E0RUE7MkZEaEVhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7OzBCQVd4QixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdGFibGUtbW9kYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIG1vZGFsRm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZGF0YUNvbWJvID0ge307XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxUYWJsZU1vZGFsQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YSxcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgb25Ob0NsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgbGV0IGdyb3VwID0ge307XHJcbiAgICBsZXQgaHR0cFJlcXVlc3RzID0gW107XHJcblxyXG4gICAgLy8gVXNhbW9zIG1hcCBlbiBsdWdhciBkZSBmb3JFYWNoIHBhcmEgZXZpdGFyIGVmZWN0b3Mgc2VjdW5kYXJpb3NcclxuICAgIHRoaXMuZGF0YS5jb2x1bW5zLm1hcCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICBpZiAoIWVsZW1lbnQuZGlzcmVnYXJkRm9yQWRkKSB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2NvbWJvJykge1xyXG4gICAgICAgICAgdGhpcy5kYXRhQ29tYm9bZWxlbWVudC5JRF0gPSAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSB0aGlzLmRhdGEuYWN0aW9uID09PSAnZWRpdCcgPyBlbGVtZW50LnZhbHVlIDogJyc7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2RhdGUnICYmIGVsZW1lbnQudmFsdWUpIHtcclxuICAgICAgICAgIGxldCBzID0gZWxlbWVudC52YWx1ZS5zcGxpdCgnLycpO1xyXG4gICAgICAgICAgaW5pdGlhbFZhbHVlID0gYCR7c1syXX0tJHtzWzFdfS0ke3NbMF19YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGdyb3VwW2VsZW1lbnQuSURdID0gZWxlbWVudC5yZXF1aXJlZCA/IG5ldyBGb3JtQ29udHJvbChpbml0aWFsVmFsdWUsIFZhbGlkYXRvcnMucmVxdWlyZWQpIDogbmV3IEZvcm1Db250cm9sKGluaXRpYWxWYWx1ZSk7XHJcblxyXG4gICAgICAgIGlmIChlbGVtZW50LnBhcmFtc0NvbWJvKSB7XHJcbiAgICAgICAgICBodHRwUmVxdWVzdHMucHVzaCh0aGlzLmNyZWF0ZUh0dHBSZXF1ZXN0KGVsZW1lbnQsIGdyb3VwKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm1vZGFsRm9ybSA9IG5ldyBGb3JtR3JvdXAoZ3JvdXApO1xyXG4gICAgaWYgKGh0dHBSZXF1ZXN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvcmtKb2luKGh0dHBSZXF1ZXN0cykuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBFeHRyYWVtb3MgbGEgY3JlYWNpw7NuIGRlIGxhIHNvbGljaXR1ZCBIVFRQIGEgc3UgcHJvcGlhIGZ1bmNpw7NuIHBhcmEgbWVqb3JhciBsYSBsZWdpYmlsaWRhZFxyXG4gIGNyZWF0ZUh0dHBSZXF1ZXN0KGVsZW1lbnQsIGdyb3VwKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXREYXRhKGVsZW1lbnQucGFyYW1zQ29tYm8udXJsLCBlbGVtZW50LnBhcmFtc0NvbWJvLnVybFBhcmFtcylcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNbJ2NvZGUnXSA9PT0gMCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LmlkZW50aWZpZXJDb21ibyA9IGVsZW1lbnQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGQgIT09IGVsZW1lbnQuSUQgPyBlbGVtZW50LnBhcmFtc0NvbWJvLnNlbGVjdGlvbkZpZWxkIDogZWxlbWVudC5JRDtcclxuICAgICAgICAgICAgdGhpcy5kYXRhQ29tYm9bZWxlbWVudC5pZGVudGlmaWVyQ29tYm9dID0gcmVzWydib2R5J107XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmFjdGlvbiA9PT0gJ2VkaXQnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRhQ29tYm9bZWxlbWVudC5pZGVudGlmaWVyQ29tYm9dLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhW2VsZW1lbnQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdID09PSBlbGVtZW50LnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGdyb3VwW2VsZW1lbnQuSURdLnNldFZhbHVlKGRhdGFbZWxlbWVudC5wYXJhbXNDb21iby5zZWxlY3Rpb25GaWVsZF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGlmICh0aGlzLm1vZGFsRm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLm1vZGFsRm9ybS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShpZDogYW55LCAkZXZlbnQsIHR5cGU6IHN0cmluZykge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2NvbWJvJzpcclxuICAgICAgICB0aGlzLm1vZGFsRm9ybS5nZXQoaWQpLnNldFZhbHVlKCRldmVudC52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMubW9kYWxGb3JtLmdldChpZCkuc2V0VmFsdWUoJGV2ZW50LnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgICA8ZGl2IHN0eWxlPSdkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsnPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+XHJcbiAgICAgICAgICAgICAgICA8aDMgKm5nSWY9J2RhdGEuYWN0aW9uPT1cImVkaXRcIic+IEVkaXRhciA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGgzICpuZ0lmPSdkYXRhLmFjdGlvbj09XCJhZGRcIic+IEFncmVnYXIgPC9oMz5cclxuICAgICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBtYXQtZGlhbG9nLWNsb3NlPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzLWNpcmNsZVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNTAlOyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJtb2RhbEZvcm1cIj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdGb3I9J2xldCBpbnB1dCBvZiBkYXRhLmNvbHVtbnMnPlxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj0nZGF0YS5hY3Rpb249PVwiZWRpdFwiOyBlbHNlIEFncmVnYXInPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCIhaW5wdXQuZGlzcmVnYXJkRm9yRWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9J2lucHV0LnR5cGU9PVwiY29tYm9cIjsgZWxzZSBvdGhlcklucHV0RWRpdCc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwiaW5wdXQudmFsdWVcIiAoc2VsZWN0aW9uQ2hhbmdlKT0nb25DaGFuZ2UoaW5wdXQuSUQsJGV2ZW50LCBpbnB1dC50eXBlKSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSd7e2lucHV0LmxhYmVsfX0nIFtyZXF1aXJlZF09XCJpbnB1dC5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPSdsZXQgZGF0YSBvZiBkYXRhQ29tYm9baW5wdXQuaWRlbnRpZmllckNvbWJvXSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPSdkYXRhW2lucHV0LnBhcmFtc0NvbWJvLnNlbGVjdGlvbkZpZWxkXSc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhW2lucHV0LnBhcmFtc0NvbWJvLnZpc2libGVGaWVsZF19fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI290aGVySW5wdXRFZGl0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3R5cGVdPSdpbnB1dC50eXBlJyBbbmFtZV09J2lucHV0LklEJyBbdmFsdWVdPSdpbnB1dC52YWx1ZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9J29uQ2hhbmdlKGlucHV0LklELCRldmVudCwgaW5wdXQudHlwZSknIG1hdElucHV0IFtwbGFjZWhvbGRlcl09J2lucHV0LmxhYmVsJyBbcmVxdWlyZWRdPVwiaW5wdXQucmVxdWlyZWRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+Q2FtcG8gT2JsaWdhdG9yaW88L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI0FncmVnYXI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIiFpbnB1dC5kaXNyZWdhcmRGb3JBZGRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPSdpbnB1dC50eXBlPT1cImNvbWJvXCI7IGVsc2Ugb3RoZXJJbnB1dCc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCAoc2VsZWN0aW9uQ2hhbmdlKT0nb25DaGFuZ2UoaW5wdXQuSUQsJGV2ZW50LCBpbnB1dC50eXBlKScgcGxhY2Vob2xkZXI9J3t7aW5wdXQubGFiZWx9fScgW3JlcXVpcmVkXT1cImlucHV0LnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9J2xldCBkYXRhIG9mIGRhdGFDb21ib1tpbnB1dC5JRF0nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT0nZGF0YVtpbnB1dC5wYXJhbXNDb21iby5zZWxlY3Rpb25GaWVsZF0nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YVtpbnB1dC5wYXJhbXNDb21iby52aXNpYmxlRmllbGRdfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3RoZXJJbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFt0eXBlXT0naW5wdXQudHlwZScgW25hbWVdPSdpbnB1dC5JRCcgKGlucHV0KT0nb25DaGFuZ2UoaW5wdXQuSUQsICRldmVudCwgaW5wdXQudHlwZSknXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPSdpbnB1dC5sYWJlbCcgW3JlcXVpcmVkXT1cImlucHV0LnJlcXVpcmVkXCIgIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5DYW1wbyBPYmxpZ2F0b3JpbzwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9J2RhdGEuYWN0aW9uPT1cImFkZFwiIHx8IGRhdGEuYWN0aW9uPT1cImVkaXRcIidcclxuICAgICAgICAgICAgKGNsaWNrKT0nb25TdWJtaXQoKSdcclxuICAgICAgICAgICAgY29sb3I9J3ByaW1hcnknXHJcbiAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhbW9kYWxGb3JtLnZhbGlkXCI+R3VhcmRhcjwvYnV0dG9uPlxyXG5cclxuICAgIDwvZm9ybT5cclxuPC9kaXY+XHJcblxyXG4iXX0=
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9kYXRhLXRhYmxlL3RhYmxlLW1vZGFsL3RhYmxlLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9icmFpbmxvcGVyLXVpL2NvbXBvbmVudHMvZGF0YS10YWJsZS90YWJsZS1tb2RhbC90YWJsZS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBZSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQU9yQyxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQ1MsU0FBNEMsRUFDbkIsSUFBSSxFQUM1QixXQUF3QixFQUN4QixJQUFpQjtRQUhsQixjQUFTLEdBQVQsU0FBUyxDQUFtQztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFBO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQWE7UUFSM0IsY0FBUyxHQUFjLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLGNBQVMsR0FBRyxFQUFFLENBQUM7SUFRWixDQUFDO0lBRUosU0FBUztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7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QUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckQsTUFBTTtTQUNUO0lBQ0gsQ0FBQzs7Z0hBbkdVLG1CQUFtQiw4Q0FPcEIsZUFBZTtvR0FQZCxtQkFBbUIsdURDWmhDLDR0R0E0RUE7MkZEaEVhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7OzBCQVd4QixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdGFibGUtbW9kYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIG1vZGFsRm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZGF0YUNvbWJvID0ge307XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxUYWJsZU1vZGFsQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YSxcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgb25Ob0NsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgbGV0IGdyb3VwID0ge307XHJcbiAgICBsZXQgaHR0cFJlcXVlc3RzID0gW107XHJcblxyXG4gICAgLy8gVXNhbW9zIG1hcCBlbiBsdWdhciBkZSBmb3JFYWNoIHBhcmEgZXZpdGFyIGVmZWN0b3Mgc2VjdW5kYXJpb3NcclxuICAgIHRoaXMuZGF0YS5jb2x1bW5zLm1hcCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICBpZiAoIWVsZW1lbnQuZGlzcmVnYXJkRm9yQWRkKSB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2NvbWJvJykge1xyXG4gICAgICAgICAgdGhpcy5kYXRhQ29tYm9bZWxlbWVudC5wYXJhbXNDb21iby5zZWxlY3Rpb25GaWVsZCAhPT0gZWxlbWVudC5JRCA/IGVsZW1lbnQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGQgOiBlbGVtZW50LklEXSA9ICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGluaXRpYWxWYWx1ZSA9IHRoaXMuZGF0YS5hY3Rpb24gPT09ICdlZGl0JyA/IGVsZW1lbnQudmFsdWUgOiAnJztcclxuICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnZGF0ZScgJiYgZWxlbWVudC52YWx1ZSkge1xyXG4gICAgICAgICAgbGV0IHMgPSBlbGVtZW50LnZhbHVlLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgICBpbml0aWFsVmFsdWUgPSBgJHtzWzJdfS0ke3NbMV19LSR7c1swXX1gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ3JvdXBbZWxlbWVudC5JRF0gPSBlbGVtZW50LnJlcXVpcmVkID8gbmV3IEZvcm1Db250cm9sKGluaXRpYWxWYWx1ZSwgVmFsaWRhdG9ycy5yZXF1aXJlZCkgOiBuZXcgRm9ybUNvbnRyb2woaW5pdGlhbFZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKGVsZW1lbnQucGFyYW1zQ29tYm8pIHtcclxuICAgICAgICAgIGh0dHBSZXF1ZXN0cy5wdXNoKHRoaXMuY3JlYXRlSHR0cFJlcXVlc3QoZWxlbWVudCwgZ3JvdXApKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChodHRwUmVxdWVzdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3JrSm9pbihodHRwUmVxdWVzdHMpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tb2RhbEZvcm0gPSBuZXcgRm9ybUdyb3VwKGdyb3VwKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm1vZGFsRm9ybSA9IG5ldyBGb3JtR3JvdXAoZ3JvdXApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRXh0cmFlbW9zIGxhIGNyZWFjacOzbiBkZSBsYSBzb2xpY2l0dWQgSFRUUCBhIHN1IHByb3BpYSBmdW5jacOzbiBwYXJhIG1lam9yYXIgbGEgbGVnaWJpbGlkYWRcclxuICBjcmVhdGVIdHRwUmVxdWVzdChlbGVtZW50LCBncm91cCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0RGF0YShlbGVtZW50LnBhcmFtc0NvbWJvLnVybCwgZWxlbWVudC5wYXJhbXNDb21iby51cmxQYXJhbXMpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzWydjb2RlJ10gPT09IDApIHtcclxuICAgICAgICAgICAgZWxlbWVudC5pZGVudGlmaWVyQ29tYm8gPSBlbGVtZW50LnBhcmFtc0NvbWJvLnNlbGVjdGlvbkZpZWxkICE9PSBlbGVtZW50LklEID8gZWxlbWVudC5wYXJhbXNDb21iby5zZWxlY3Rpb25GaWVsZCA6IGVsZW1lbnQuSUQ7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YUNvbWJvW2VsZW1lbnQuaWRlbnRpZmllckNvbWJvXSA9IHJlc1snYm9keSddO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5hY3Rpb24gIT09ICdlZGl0Jykge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5kYXRhQ29tYm9bZWxlbWVudC5pZGVudGlmaWVyQ29tYm9dLnNvbWUoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBkYXRhW2VsZW1lbnQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdID09PSBlbGVtZW50LnZhbHVlIHx8XHJcbiAgICAgICAgICAgICAgICBkYXRhW2VsZW1lbnQucGFyYW1zQ29tYm8udmlzaWJsZUZpZWxkXSA9PT0gZWxlbWVudC52YWx1ZVxyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZGF0YVtlbGVtZW50LnBhcmFtc0NvbWJvLnNlbGVjdGlvbkZpZWxkXVxyXG4gICAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICBncm91cFtlbGVtZW50LklEXS5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGlmICh0aGlzLm1vZGFsRm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLm1vZGFsRm9ybS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShpZDogYW55LCAkZXZlbnQsIHR5cGU6IHN0cmluZykge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2NvbWJvJzpcclxuICAgICAgICB0aGlzLm1vZGFsRm9ybS5nZXQoaWQpLnNldFZhbHVlKCRldmVudC52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMubW9kYWxGb3JtLmdldChpZCkuc2V0VmFsdWUoJGV2ZW50LnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgICA8ZGl2IHN0eWxlPSdkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsnPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+XHJcbiAgICAgICAgICAgICAgICA8aDMgKm5nSWY9J2RhdGEuYWN0aW9uPT1cImVkaXRcIic+IEVkaXRhciA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGgzICpuZ0lmPSdkYXRhLmFjdGlvbj09XCJhZGRcIic+IEFncmVnYXIgPC9oMz5cclxuICAgICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBtYXQtZGlhbG9nLWNsb3NlPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzLWNpcmNsZVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNTAlOyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJtb2RhbEZvcm1cIj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdGb3I9J2xldCBpbnB1dCBvZiBkYXRhLmNvbHVtbnMnPlxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj0nZGF0YS5hY3Rpb249PVwiZWRpdFwiOyBlbHNlIEFncmVnYXInPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCIhaW5wdXQuZGlzcmVnYXJkRm9yRWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9J2lucHV0LnR5cGU9PVwiY29tYm9cIjsgZWxzZSBvdGhlcklucHV0RWRpdCc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwiaW5wdXQudmFsdWVcIiAoc2VsZWN0aW9uQ2hhbmdlKT0nb25DaGFuZ2UoaW5wdXQuSUQsJGV2ZW50LCBpbnB1dC50eXBlKSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSd7e2lucHV0LmxhYmVsfX0nIFtyZXF1aXJlZF09XCJpbnB1dC5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPSdsZXQgZGF0YSBvZiBkYXRhQ29tYm9baW5wdXQuaWRlbnRpZmllckNvbWJvXSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPSdkYXRhW2lucHV0LnBhcmFtc0NvbWJvLnNlbGVjdGlvbkZpZWxkXSc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhW2lucHV0LnBhcmFtc0NvbWJvLnZpc2libGVGaWVsZF19fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI290aGVySW5wdXRFZGl0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3R5cGVdPSdpbnB1dC50eXBlJyBbbmFtZV09J2lucHV0LklEJyBbdmFsdWVdPSdpbnB1dC52YWx1ZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9J29uQ2hhbmdlKGlucHV0LklELCRldmVudCwgaW5wdXQudHlwZSknIG1hdElucHV0IFtwbGFjZWhvbGRlcl09J2lucHV0LmxhYmVsJyBbcmVxdWlyZWRdPVwiaW5wdXQucmVxdWlyZWRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+Q2FtcG8gT2JsaWdhdG9yaW88L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI0FncmVnYXI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIiFpbnB1dC5kaXNyZWdhcmRGb3JBZGRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPSdpbnB1dC50eXBlPT1cImNvbWJvXCI7IGVsc2Ugb3RoZXJJbnB1dCc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCAoc2VsZWN0aW9uQ2hhbmdlKT0nb25DaGFuZ2UoaW5wdXQuSUQsJGV2ZW50LCBpbnB1dC50eXBlKScgcGxhY2Vob2xkZXI9J3t7aW5wdXQubGFiZWx9fScgW3JlcXVpcmVkXT1cImlucHV0LnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9J2xldCBkYXRhIG9mIGRhdGFDb21ib1tpbnB1dC5pZGVudGlmaWVyQ29tYm9dJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09J2RhdGFbaW5wdXQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdJz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGFbaW5wdXQucGFyYW1zQ29tYm8udmlzaWJsZUZpZWxkXX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI290aGVySW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbdHlwZV09J2lucHV0LnR5cGUnIFtuYW1lXT0naW5wdXQuSUQnIChpbnB1dCk9J29uQ2hhbmdlKGlucHV0LklELCAkZXZlbnQsIGlucHV0LnR5cGUpJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT0naW5wdXQubGFiZWwnIFtyZXF1aXJlZF09XCJpbnB1dC5yZXF1aXJlZFwiICAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+Q2FtcG8gT2JsaWdhdG9yaW88L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPSdkYXRhLmFjdGlvbj09XCJhZGRcIiB8fCBkYXRhLmFjdGlvbj09XCJlZGl0XCInXHJcbiAgICAgICAgICAgIChjbGljayk9J29uU3VibWl0KCknXHJcbiAgICAgICAgICAgIGNvbG9yPSdwcmltYXJ5J1xyXG4gICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIW1vZGFsRm9ybS52YWxpZFwiPkd1YXJkYXI8L2J1dHRvbj5cclxuXHJcbiAgICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG5cclxuIl19
|
|
@@ -459,7 +459,7 @@ class TableModalComponent {
|
|
|
459
459
|
this.data.columns.map((element) => {
|
|
460
460
|
if (!element.disregardForAdd) {
|
|
461
461
|
if (element.type === 'combo') {
|
|
462
|
-
this.dataCombo[element.ID] = '';
|
|
462
|
+
this.dataCombo[element.paramsCombo.selectionField !== element.ID ? element.paramsCombo.selectionField : element.ID] = '';
|
|
463
463
|
}
|
|
464
464
|
let initialValue = this.data.action === 'edit' ? element.value : '';
|
|
465
465
|
if (element.type === 'date' && element.value) {
|
|
@@ -472,9 +472,13 @@ class TableModalComponent {
|
|
|
472
472
|
}
|
|
473
473
|
}
|
|
474
474
|
});
|
|
475
|
-
this.modalForm = new FormGroup(group);
|
|
476
475
|
if (httpRequests.length > 0) {
|
|
477
|
-
forkJoin(httpRequests).subscribe()
|
|
476
|
+
forkJoin(httpRequests).subscribe(() => {
|
|
477
|
+
this.modalForm = new FormGroup(group);
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
this.modalForm = new FormGroup(group);
|
|
478
482
|
}
|
|
479
483
|
}
|
|
480
484
|
// Extraemos la creación de la solicitud HTTP a su propia función para mejorar la legibilidad
|
|
@@ -485,13 +489,19 @@ class TableModalComponent {
|
|
|
485
489
|
if (res['code'] === 0) {
|
|
486
490
|
element.identifierCombo = element.paramsCombo.selectionField !== element.ID ? element.paramsCombo.selectionField : element.ID;
|
|
487
491
|
this.dataCombo[element.identifierCombo] = res['body'];
|
|
488
|
-
if (this.data.action
|
|
489
|
-
|
|
490
|
-
if (data[element.paramsCombo.selectionField] === element.value) {
|
|
491
|
-
group[element.ID].setValue(data[element.paramsCombo.selectionField]);
|
|
492
|
-
}
|
|
493
|
-
});
|
|
492
|
+
if (this.data.action !== 'edit') {
|
|
493
|
+
return;
|
|
494
494
|
}
|
|
495
|
+
this.dataCombo[element.identifierCombo].some((data) => {
|
|
496
|
+
if (data[element.paramsCombo.selectionField] === element.value ||
|
|
497
|
+
data[element.paramsCombo.visibleField] === element.value) {
|
|
498
|
+
var value = data[element.paramsCombo.selectionField];
|
|
499
|
+
element.value = value;
|
|
500
|
+
group[element.ID].setValue(value);
|
|
501
|
+
return true;
|
|
502
|
+
}
|
|
503
|
+
return false;
|
|
504
|
+
});
|
|
495
505
|
}
|
|
496
506
|
}));
|
|
497
507
|
}
|
|
@@ -512,10 +522,10 @@ class TableModalComponent {
|
|
|
512
522
|
}
|
|
513
523
|
}
|
|
514
524
|
TableModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TableModalComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i10.FormBuilder }, { token: HttpService }], target: i0.ɵɵFactoryTarget.Component });
|
|
515
|
-
TableModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TableModalComponent, selector: "app-table-modal", ngImport: i0, template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"modalForm\">\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]=\"input.value\" (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.identifierCombo]'\r\n [value]='data[input.paramsCombo.selectionField]'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.
|
|
525
|
+
TableModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TableModalComponent, selector: "app-table-modal", ngImport: i0, template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"modalForm\">\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]=\"input.value\" (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.identifierCombo]'\r\n [value]='data[input.paramsCombo.selectionField]'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.identifierCombo]'\r\n [value]='data[input.paramsCombo.selectionField]'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"'\r\n (click)='onSubmit()'\r\n color='primary'\r\n mat-raised-button\r\n [disabled]=\"!modalForm.valid\">Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"], components: [{ type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.MatError, selector: "mat-error", inputs: ["id"] }] });
|
|
516
526
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TableModalComponent, decorators: [{
|
|
517
527
|
type: Component,
|
|
518
|
-
args: [{ selector: 'app-table-modal', template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"modalForm\">\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]=\"input.value\" (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.identifierCombo]'\r\n [value]='data[input.paramsCombo.selectionField]'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.
|
|
528
|
+
args: [{ selector: 'app-table-modal', template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"modalForm\">\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]=\"input.value\" (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.identifierCombo]'\r\n [value]='data[input.paramsCombo.selectionField]'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}' [required]=\"input.required\">\r\n <mat-option *ngFor='let data of dataCombo[input.identifierCombo]'\r\n [value]='data[input.paramsCombo.selectionField]'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"'\r\n (click)='onSubmit()'\r\n color='primary'\r\n mat-raised-button\r\n [disabled]=\"!modalForm.valid\">Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"] }]
|
|
519
529
|
}], ctorParameters: function () {
|
|
520
530
|
return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
521
531
|
type: Inject,
|